@nmshd/consumption 2.0.0-alpha.1 → 2.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buildInformation.js +4 -4
- package/dist/consumption/ConsumptionBaseController.d.ts +2 -3
- package/dist/consumption/ConsumptionBaseController.js +3 -23
- package/dist/consumption/ConsumptionBaseController.js.map +1 -1
- package/dist/consumption/ConsumptionController.d.ts +5 -2
- package/dist/consumption/ConsumptionController.js +2 -2
- package/dist/consumption/ConsumptionController.js.map +1 -1
- package/dist/modules/attributes/local/ConsumptionAttribute.d.ts +1 -1
- package/dist/modules/attributes/local/ConsumptionAttribute.js +5 -6
- package/dist/modules/attributes/local/ConsumptionAttribute.js.map +1 -1
- package/dist/modules/drafts/DraftsController.d.ts +2 -2
- package/dist/modules/drafts/DraftsController.js +2 -2
- package/dist/modules/drafts/DraftsController.js.map +1 -1
- package/dist/modules/drafts/local/Draft.d.ts +4 -4
- package/dist/modules/drafts/local/Draft.js +5 -6
- package/dist/modules/drafts/local/Draft.js.map +1 -1
- package/dist/modules/index.d.ts +2 -2
- package/dist/modules/index.js +1 -2
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/relationships/RelationshipInfoController.js +1 -1
- package/dist/modules/relationships/RelationshipInfoController.js.map +1 -1
- package/dist/modules/relationships/RelationshipInfoUtil.js +6 -6
- package/dist/modules/relationships/RelationshipInfoUtil.js.map +1 -1
- package/dist/modules/relationships/local/RelationshipAttribute.d.ts +4 -4
- package/dist/modules/relationships/local/RelationshipAttribute.js +4 -5
- package/dist/modules/relationships/local/RelationshipAttribute.js.map +1 -1
- package/dist/modules/relationships/local/RelationshipInfo.d.ts +1 -1
- package/dist/modules/relationships/local/RelationshipInfo.js +4 -4
- package/dist/modules/relationships/local/RelationshipInfo.js.map +1 -1
- package/dist/modules/relationships/local/RelationshipTheme.d.ts +4 -4
- package/dist/modules/relationships/local/RelationshipTheme.js +4 -5
- package/dist/modules/relationships/local/RelationshipTheme.js.map +1 -1
- package/dist/modules/requests/incoming/DecideRequestParametersValidator.d.ts +2 -2
- package/dist/modules/requests/incoming/DecideRequestParametersValidator.js.map +1 -1
- package/dist/modules/requests/incoming/IncomingRequestsController.d.ts +5 -6
- package/dist/modules/requests/incoming/IncomingRequestsController.js +43 -46
- package/dist/modules/requests/incoming/IncomingRequestsController.js.map +1 -1
- package/dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js +4 -5
- package/dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js.map +1 -1
- package/dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js +3 -3
- package/dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js.map +1 -1
- package/dist/modules/requests/incoming/decide/AcceptRequestItemParameters.d.ts +3 -6
- package/dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js +0 -19
- package/dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js.map +1 -1
- package/dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.d.ts +3 -8
- package/dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js +0 -26
- package/dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js.map +1 -1
- package/dist/modules/requests/incoming/decide/DecideRequestItemParameters.d.ts +3 -5
- package/dist/modules/requests/incoming/decide/DecideRequestItemParameters.js +0 -5
- package/dist/modules/requests/incoming/decide/DecideRequestItemParameters.js.map +1 -1
- package/dist/modules/requests/incoming/decide/DecideRequestParameters.d.ts +5 -11
- package/dist/modules/requests/incoming/decide/DecideRequestParameters.js +0 -27
- package/dist/modules/requests/incoming/decide/DecideRequestParameters.js.map +1 -1
- package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.d.ts +19 -0
- package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js +44 -0
- package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js.map +1 -0
- package/dist/modules/requests/incoming/decide/RejectRequestItemParameters.d.ts +3 -8
- package/dist/modules/requests/incoming/decide/RejectRequestItemParameters.js +0 -32
- package/dist/modules/requests/incoming/decide/RejectRequestItemParameters.js.map +1 -1
- package/dist/modules/requests/incoming/decide/RequestItemDecision.d.ts +4 -0
- package/dist/modules/requests/incoming/decide/RequestItemDecision.js +9 -0
- package/dist/modules/requests/incoming/decide/RequestItemDecision.js.map +1 -0
- package/dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js +4 -5
- package/dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js.map +1 -1
- package/dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js +3 -3
- package/dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js.map +1 -1
- package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.d.ts +5 -5
- package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js +4 -4
- package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js.map +1 -1
- package/dist/modules/requests/itemProcessors/IRequestItemProcessor.d.ts +5 -5
- package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.d.ts +6 -3
- package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js +4 -1
- package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js.map +1 -1
- package/dist/modules/requests/local/ConsumptionRequest.d.ts +5 -5
- package/dist/modules/requests/local/ConsumptionRequest.js +7 -8
- package/dist/modules/requests/local/ConsumptionRequest.js.map +1 -1
- package/dist/modules/requests/local/ConsumptionRequestStatusLogEntry.js +3 -4
- package/dist/modules/requests/local/ConsumptionRequestStatusLogEntry.js.map +1 -1
- package/dist/modules/requests/local/ConsumptionResponse.d.ts +7 -7
- package/dist/modules/requests/local/ConsumptionResponse.js +8 -9
- package/dist/modules/requests/local/ConsumptionResponse.js.map +1 -1
- package/dist/modules/requests/outgoing/OutgoingRequestsController.js +9 -9
- package/dist/modules/requests/outgoing/OutgoingRequestsController.js.map +1 -1
- package/dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js +4 -5
- package/dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js.map +1 -1
- package/dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.d.ts +4 -4
- package/dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js +4 -5
- package/dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js.map +1 -1
- package/dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js +4 -5
- package/dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js.map +1 -1
- package/dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.d.ts +4 -4
- package/dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js +4 -5
- package/dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js.map +1 -1
- package/dist/modules/settings/SettingsController.js +2 -2
- package/dist/modules/settings/SettingsController.js.map +1 -1
- package/dist/modules/settings/local/CreateSettingParameter.d.ts +2 -2
- package/dist/modules/settings/local/Setting.d.ts +4 -4
- package/dist/modules/settings/local/Setting.js +5 -6
- package/dist/modules/settings/local/Setting.js.map +1 -1
- package/dist/modules/sharedItems/SharedItemsController.js +1 -1
- package/dist/modules/sharedItems/SharedItemsController.js.map +1 -1
- package/dist/modules/sharedItems/local/SharedItem.d.ts +1 -1
- package/dist/modules/sharedItems/local/SharedItem.js +4 -5
- package/dist/modules/sharedItems/local/SharedItem.js.map +1 -1
- package/dist/modules/signatures/Signature.d.ts +5 -5
- package/dist/modules/signatures/Signature.js +9 -8
- package/dist/modules/signatures/Signature.js.map +1 -1
- package/dist/modules/signatures/SignatureContent.d.ts +0 -1
- package/dist/modules/signatures/SignatureContent.js +3 -7
- package/dist/modules/signatures/SignatureContent.js.map +1 -1
- package/lib-web/nmshd.consumption.js +226 -365
- package/lib-web/nmshd.consumption.js.map +1 -1
- package/lib-web/nmshd.consumption.min.js +1 -1
- package/lib-web/nmshd.consumption.min.js.map +1 -1
- package/package.json +9 -9
- package/dist/modules/requests/incoming/decide/AcceptRequestParameters.d.ts +0 -6
- package/dist/modules/requests/incoming/decide/AcceptRequestParameters.js +0 -22
- package/dist/modules/requests/incoming/decide/AcceptRequestParameters.js.map +0 -1
- package/dist/modules/requests/incoming/decide/RejectRequestParameters.d.ts +0 -6
- package/dist/modules/requests/incoming/decide/RejectRequestParameters.js +0 -22
- package/dist/modules/requests/incoming/decide/RejectRequestParameters.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nmshd.consumption.min.js","mappings":"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","sources":["webpack://NMSHDConsumption/./dist/buildInformation.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionBaseController.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionController.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionControllerName.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionErrors.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionIds.js","webpack://NMSHDConsumption/./dist/consumption/index.js","webpack://NMSHDConsumption/./dist/index.js","webpack://NMSHDConsumption/./dist/modules/attributes/ConsumptionAttributesController.js","webpack://NMSHDConsumption/./dist/modules/attributes/local/ConsumptionAttribute.js","webpack://NMSHDConsumption/./dist/modules/drafts/DraftsController.js","webpack://NMSHDConsumption/./dist/modules/drafts/local/Draft.js","webpack://NMSHDConsumption/./dist/modules/index.js","webpack://NMSHDConsumption/./dist/modules/relationships/RelationshipInfoController.js","webpack://NMSHDConsumption/./dist/modules/relationships/RelationshipInfoUtil.js","webpack://NMSHDConsumption/./dist/modules/relationships/local/RelationshipAttribute.js","webpack://NMSHDConsumption/./dist/modules/relationships/local/RelationshipInfo.js","webpack://NMSHDConsumption/./dist/modules/relationships/local/RelationshipTheme.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/DecideRequestParametersValidator.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/IncomingRequestsController.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/AcceptRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/DecideRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/RejectRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js","webpack://NMSHDConsumption/./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js","webpack://NMSHDConsumption/./dist/modules/requests/itemProcessors/ValidationResult.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionRequest.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionRequestStatus.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionRequestStatusLogEntry.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionResponse.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/OutgoingRequestsController.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/settings/SettingsController.js","webpack://NMSHDConsumption/./dist/modules/settings/local/Setting.js","webpack://NMSHDConsumption/./dist/modules/sharedItems/SharedItemsController.js","webpack://NMSHDConsumption/./dist/modules/sharedItems/local/SharedItem.js","webpack://NMSHDConsumption/./dist/modules/signatures/Signature.js","webpack://NMSHDConsumption/./dist/modules/signatures/SignatureContent.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/Range.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/EventBus.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/SubscriptionTargetInfo.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/eventEmitter2/EventEmitter2EventBus.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/events/DataEvent.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/events/Event.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/events/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/logDecorator.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/measureExcecutionTime.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/randomString.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/result/ApplicationError.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/result/Result.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/result/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/sleep.js","webpack://NMSHDConsumption/./node_modules/eventemitter2/lib/eventemitter2.js","webpack://NMSHDConsumption/./node_modules/reflect-metadata/Reflect.js","webpack://NMSHDConsumption/./node_modules/ts-simple-nameof/index.js","webpack://NMSHDConsumption/./node_modules/ts-simple-nameof/src/nameof.js","webpack://NMSHDConsumption/external var \"NMSHDContent\"","webpack://NMSHDConsumption/external var \"NMSHDCrypto\"","webpack://NMSHDConsumption/external var \"NMSHDTransport\"","webpack://NMSHDConsumption/external var \"TSServal\"","webpack://NMSHDConsumption/webpack/bootstrap","webpack://NMSHDConsumption/webpack/startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildInformation = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst crypto_1 = require(\"@nmshd/crypto\");\nconst transport_1 = require(\"@nmshd/transport\");\nexports.buildInformation = {\n version: \"2.0.0-alpha.1\",\n build: \"19\",\n date: \"2022-04-22T11:52:27+00:00\",\n commit: \"012b8a9a2b885dd7d176deb14a13034e1202c045\",\n dependencies: {},\n libraries: {\n transport: transport_1.buildInformation,\n crypto: crypto_1.buildInformation,\n serval: ts_serval_1.buildInformation,\n content: content_1.buildInformation\n }\n};\n//# sourceMappingURL=buildInformation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionBaseController = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nclass ConsumptionBaseController {\n constructor(controllerName, _parent) {\n this._parent = _parent;\n this._log = transport_1.TransportLoggerFactory.getLogger(controllerName);\n }\n get log() {\n return this._log;\n }\n get parent() {\n return this._parent;\n }\n init() {\n return Promise.resolve(this);\n }\n async parseObject(value, type) {\n return await ts_serval_1.SerializableAsync.fromT(value, type);\n }\n async parseArray(value, type, contentProperty) {\n const parsingPromises = [];\n for (let i = 0, l = value.length; i < l; i++) {\n if (contentProperty) {\n const item = value[i];\n if (item[contentProperty]) {\n parsingPromises.push(this.parseObject(item[contentProperty], type));\n }\n else {\n const error = transport_1.TransportErrors.controller.contentPropertyUndefined(contentProperty);\n this._log.error(error);\n throw error;\n }\n }\n else {\n parsingPromises.push(this.parseObject(value[i], type));\n }\n }\n return await Promise.all(parsingPromises);\n }\n}\nexports.ConsumptionBaseController = ConsumptionBaseController;\n//# sourceMappingURL=ConsumptionBaseController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionController = void 0;\nconst modules_1 = require(\"../modules\");\nconst IncomingRequestsController_1 = require(\"../modules/requests/incoming/IncomingRequestsController\");\nclass ConsumptionController {\n constructor(transport, accountController) {\n this.transport = transport;\n this.accountController = accountController;\n }\n get attributes() {\n return this._attributes;\n }\n get drafts() {\n return this._drafts;\n }\n get outgoingRequests() {\n return this._outgoingRequests;\n }\n get incomingRequests() {\n return this._incomingRequests;\n }\n get settings() {\n return this._settings;\n }\n get sharedItems() {\n return this._sharedItems;\n }\n get relationshipInfo() {\n return this._relationshipInfo;\n }\n async init() {\n this._attributes = await new modules_1.ConsumptionAttributesController(this).init();\n this._drafts = await new modules_1.DraftsController(this).init();\n const processorRegistry = new modules_1.RequestItemProcessorRegistry();\n this._outgoingRequests = await new modules_1.OutgoingRequestsController(this, processorRegistry).init();\n this._incomingRequests = await new IncomingRequestsController_1.IncomingRequestsController(this, processorRegistry).init();\n this._settings = await new modules_1.SettingsController(this).init();\n this._sharedItems = await new modules_1.SharedItemsController(this).init();\n this._relationshipInfo = await new modules_1.RelationshipInfoController(this).init();\n return this;\n }\n}\nexports.ConsumptionController = ConsumptionController;\n//# sourceMappingURL=ConsumptionController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionControllerName = void 0;\nvar ConsumptionControllerName;\n(function (ConsumptionControllerName) {\n ConsumptionControllerName[\"ConsumptionAttributesController\"] = \"ConsumptionAttributesController\";\n ConsumptionControllerName[\"DraftsController\"] = \"DraftsController\";\n ConsumptionControllerName[\"RelationshipInfoController\"] = \"RelationshipInfoController\";\n ConsumptionControllerName[\"SingleRelationshipController\"] = \"SingleRelationshipController\";\n ConsumptionControllerName[\"OnboardingFlowController\"] = \"OnboardingFlowController\";\n ConsumptionControllerName[\"OffboardingFlowController\"] = \"OffboardingFlowController\";\n ConsumptionControllerName[\"RequestsController\"] = \"Requestsontroller\";\n ConsumptionControllerName[\"SettingsController\"] = \"SettingsController\";\n ConsumptionControllerName[\"SharedItemsController\"] = \"SharedItemsController\";\n})(ConsumptionControllerName = exports.ConsumptionControllerName || (exports.ConsumptionControllerName = {}));\n//# sourceMappingURL=ConsumptionControllerName.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionErrors = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nclass Attributes {\n attributeExists(name) {\n return new transport_1.CoreError(\"error.consumption.attributes.attributeExists\", `Attribute with name ${name} already exists. Please use succeed instead.`);\n }\n}\nclass Requests {\n requestsExists(id) {\n return new transport_1.CoreError(\"error.consumption.requests.requestExists\", `Request with id ${id} already exists and can't be created.`);\n }\n}\nclass RelationshipInfo {\n relationshipInfoExists(relationshipId) {\n return new transport_1.CoreError(\"error.consumption.relationshipInfos.relationshipInfoExists\", `RelationshipInfo for Relationship ${relationshipId} already exists.`);\n }\n}\nclass Onboarding {\n attributeNotSet(attributeName) {\n return new transport_1.CoreError(\"error.consumption.onboarding.attributeNotSet\", `No attribute with name ${attributeName} set but was required to be shared.`);\n }\n wrongTemplate() {\n return new transport_1.CoreError(\"error.consumption.onboarding.wrongTemplate\", \"The given template is in the wrong format.\");\n }\n}\nclass ConsumptionErrors {\n}\nexports.ConsumptionErrors = ConsumptionErrors;\nConsumptionErrors.attributes = new Attributes();\nConsumptionErrors.requests = new Requests();\nConsumptionErrors.relationshipInfo = new RelationshipInfo();\nConsumptionErrors.onboarding = new Onboarding();\n//# sourceMappingURL=ConsumptionErrors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionIds = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nclass ConsumptionIds {\n}\nexports.ConsumptionIds = ConsumptionIds;\nConsumptionIds.attribute = new transport_1.CoreIdHelper(\"CNSATT\");\nConsumptionIds.draft = new transport_1.CoreIdHelper(\"CNSDRF\");\nConsumptionIds.relationshipInfo = new transport_1.CoreIdHelper(\"CNSRIN\");\nConsumptionIds.sharedItem = new transport_1.CoreIdHelper(\"CNSSIT\");\nConsumptionIds.response = new transport_1.CoreIdHelper(\"CNSRES\");\nConsumptionIds.request = new transport_1.CoreIdHelper(\"CNSREQ\");\nConsumptionIds.setting = new transport_1.CoreIdHelper(\"CNSSET\");\n//# sourceMappingURL=ConsumptionIds.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ConsumptionBaseController\"), exports);\n__exportStar(require(\"./ConsumptionControllerName\"), exports);\n__exportStar(require(\"./ConsumptionErrors\"), exports);\n__exportStar(require(\"./ConsumptionIds\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./buildInformation\"), exports);\n__exportStar(require(\"./consumption/ConsumptionController\"), exports);\n__exportStar(require(\"./consumption/ConsumptionIds\"), exports);\n__exportStar(require(\"./modules\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionAttributesController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nconst consumption_1 = require(\"../../consumption\");\nconst ConsumptionAttribute_1 = require(\"./local/ConsumptionAttribute\");\nclass ConsumptionAttributesController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.ConsumptionAttributesController, parent);\n }\n async init() {\n await super.init();\n this.attributes = await this.parent.accountController.getSynchronizedCollection(\"Attributes\");\n return this;\n }\n checkValid(attribute) {\n const now = transport_1.CoreDate.utc();\n if (!attribute.content.validFrom && !attribute.content.validTo) {\n return true;\n }\n else if (attribute.content.validFrom &&\n !attribute.content.validTo &&\n attribute.content.validFrom.isSameOrBefore(now)) {\n return true;\n }\n else if (!attribute.content.validFrom &&\n attribute.content.validTo &&\n attribute.content.validTo.isAfter(now)) {\n return true;\n }\n else if (attribute.content.validFrom &&\n attribute.content.validTo &&\n attribute.content.validFrom.isSameOrBefore(now) &&\n attribute.content.validTo.isAfter(now)) {\n return true;\n }\n return false;\n }\n findCurrent(attributes) {\n const sorted = attributes.sort((a, b) => {\n return a.createdAt.compare(b.createdAt);\n });\n let current;\n for (const attribute of sorted) {\n if (this.checkValid(attribute)) {\n current = attribute;\n }\n }\n return current;\n }\n filterCurrent(attributes) {\n const sorted = attributes.sort((a, b) => {\n return a.createdAt.compare(b.createdAt);\n });\n const items = [];\n for (const attribute of sorted) {\n if (this.checkValid(attribute)) {\n items.push(attribute);\n }\n }\n return items;\n }\n async getAttribute(id) {\n const result = await this.attributes.find({\n [(0, ts_simple_nameof_1.nameof)((c) => c.id)]: id.toString()\n });\n const attributes = await this.parseArray(result, ConsumptionAttribute_1.ConsumptionAttribute);\n return this.findCurrent(attributes);\n }\n async getAttributeByName(name) {\n const result = await this.attributes.find({\n [`${(0, ts_simple_nameof_1.nameof)((c) => c.content)}.${(0, ts_simple_nameof_1.nameof)((a) => a.name)}`]: name\n });\n const attributes = await this.parseArray(result, ConsumptionAttribute_1.ConsumptionAttribute);\n return this.findCurrent(attributes);\n }\n async getAttributeHistoryByName(name) {\n const result = await this.attributes.find({\n [`${(0, ts_simple_nameof_1.nameof)((c) => c.content)}.${(0, ts_simple_nameof_1.nameof)((a) => a.name)}`]: name\n });\n const attributes = await this.parseArray(result, ConsumptionAttribute_1.ConsumptionAttribute);\n const sorted = attributes.sort((a, b) => {\n return a.createdAt.compare(b.createdAt);\n });\n return sorted;\n }\n async getAttributes(query) {\n const items = await this.attributes.find(query);\n return await this.parseArray(items, ConsumptionAttribute_1.ConsumptionAttribute);\n }\n async getValidAttributes(query) {\n const docs = await this.attributes.find(query);\n const items = await this.parseArray(docs, ConsumptionAttribute_1.ConsumptionAttribute);\n return this.filterCurrent(items);\n }\n async getAttributesByName(query) {\n const attributes = await this.getValidAttributes(query);\n const mapper = (result, attribute) => {\n result[attribute.content.name] = attribute;\n return result;\n };\n return attributes.reduce(mapper, {});\n }\n async createAttribute(attribute) {\n const current = await this.getAttributeByName(attribute.content.name);\n if (current) {\n throw consumption_1.ConsumptionErrors.attributes.attributeExists(attribute.content.name);\n }\n await this.attributes.create(attribute);\n return attribute;\n }\n async succeedAttribute(attribute, validFrom) {\n const current = await this.getAttributeByName(attribute.content.name);\n if (current && !validFrom) {\n validFrom = transport_1.CoreDate.utc();\n }\n if (current) {\n attribute.content.validFrom = validFrom;\n current.content.validTo = validFrom;\n await this.updateAttribute(current);\n }\n await this.attributes.create(attribute);\n return attribute;\n }\n async updateAttribute(attribute) {\n const current = await this.attributes.findOne({\n [(0, ts_simple_nameof_1.nameof)((c) => c.id)]: attribute.id.toString()\n });\n if (!current) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionAttribute_1.ConsumptionAttribute, attribute.id.toString());\n }\n await this.attributes.update(current, attribute);\n return attribute;\n }\n async deleteAttribute(attribute) {\n await this.attributes.delete(attribute);\n }\n}\nexports.ConsumptionAttributesController = ConsumptionAttributesController;\n//# sourceMappingURL=ConsumptionAttributesController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ConsumptionAttribute_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionAttribute = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nconst consumption_1 = require(\"../../../consumption\");\nlet ConsumptionAttribute = ConsumptionAttribute_1 = class ConsumptionAttribute extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.createdAt)\n ];\n this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.content)];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static async from(value) {\n return (await super.from(value, ConsumptionAttribute_1));\n }\n static async fromAttribute(attribute) {\n return await this.from({\n content: content_1.Attribute.from(attribute),\n id: await consumption_1.ConsumptionIds.attribute.generate(),\n createdAt: transport_1.CoreDate.utc()\n });\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)({ type: content_1.Attribute }),\n __metadata(\"design:type\", content_1.Attribute)\n], ConsumptionAttribute.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionAttribute.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], ConsumptionAttribute.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionAttribute.prototype, \"metadataModifiedAt\", void 0);\nConsumptionAttribute = ConsumptionAttribute_1 = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionAttribute\")\n], ConsumptionAttribute);\nexports.ConsumptionAttribute = ConsumptionAttribute;\n//# sourceMappingURL=ConsumptionAttribute.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DraftsController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst Draft_1 = require(\"./local/Draft\");\nclass DraftsController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.DraftsController, parent);\n }\n async init() {\n await super.init();\n this.drafts = await this.parent.accountController.getSynchronizedCollection(\"Drafts\");\n return this;\n }\n async getDraft(id) {\n const result = await this.drafts.read(id.toString());\n return result ? await Draft_1.Draft.from(result) : undefined;\n }\n async getDrafts(query) {\n const items = await this.drafts.find(query);\n return await this.parseArray(items, Draft_1.Draft);\n }\n async createDraft(content, type = \"\") {\n const draft = await Draft_1.Draft.from({\n id: await consumption_1.ConsumptionIds.draft.generate(),\n content: content,\n createdAt: new transport_1.CoreDate(),\n lastModifiedAt: new transport_1.CoreDate(),\n type: type\n });\n await this.drafts.create(draft);\n return draft;\n }\n async updateDraft(draft) {\n const oldDraft = await this.drafts.read(draft.id.toString());\n if (!oldDraft) {\n throw new Error(\"Draft Not Found\");\n }\n await this.drafts.update(oldDraft, draft);\n }\n async deleteDraft(draft) {\n await this.drafts.delete(draft);\n }\n}\nexports.DraftsController = DraftsController;\n//# sourceMappingURL=DraftsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar Draft_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Draft = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nlet Draft = Draft_1 = class Draft extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.type),\n (0, ts_simple_nameof_1.nameof)((r) => r.createdAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.lastModifiedAt)\n ];\n this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.content)];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static async from(value) {\n return (await super.from(value, Draft_1));\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], Draft.prototype, \"type\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Draft.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Draft.prototype, \"lastModifiedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", ts_serval_1.SerializableAsync)\n], Draft.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], Draft.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Draft.prototype, \"metadataModifiedAt\", void 0);\nDraft = Draft_1 = __decorate([\n (0, ts_serval_1.type)(\"Draft\")\n], Draft);\nexports.Draft = Draft;\n//# sourceMappingURL=Draft.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./attributes/ConsumptionAttributesController\"), exports);\n__exportStar(require(\"./attributes/local/ConsumptionAttribute\"), exports);\n__exportStar(require(\"./drafts/DraftsController\"), exports);\n__exportStar(require(\"./drafts/local/Draft\"), exports);\n__exportStar(require(\"./relationships/local/RelationshipAttribute\"), exports);\n__exportStar(require(\"./relationships/local/RelationshipInfo\"), exports);\n__exportStar(require(\"./relationships/local/RelationshipTheme\"), exports);\n__exportStar(require(\"./relationships/RelationshipInfoController\"), exports);\n__exportStar(require(\"./requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/complete/CompleteIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/AcceptRequestItemParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/AcceptRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/DecideRequestItemGroupParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/DecideRequestItemParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/DecideRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/RejectRequestItemParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/RejectRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/DecideRequestParametersValidator\"), exports);\n__exportStar(require(\"./requests/incoming/IncomingRequestsController\"), exports);\n__exportStar(require(\"./requests/incoming/received/ReceivedIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/itemProcessors/GenericRequestItemProcessor\"), exports);\n__exportStar(require(\"./requests/itemProcessors/RequestItemProcessorRegistry\"), exports);\n__exportStar(require(\"./requests/itemProcessors/ValidationResult\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionRequest\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionRequestStatus\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionRequestStatusLogEntry\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionResponse\"), exports);\n__exportStar(require(\"./requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters\"), exports);\n__exportStar(require(\"./requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters\"), exports);\n__exportStar(require(\"./requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters\"), exports);\n__exportStar(require(\"./requests/outgoing/OutgoingRequestsController\"), exports);\n__exportStar(require(\"./requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters\"), exports);\n__exportStar(require(\"./settings/local/Setting\"), exports);\n__exportStar(require(\"./settings/SettingsController\"), exports);\n__exportStar(require(\"./sharedItems/local/SharedItem\"), exports);\n__exportStar(require(\"./sharedItems/SharedItemsController\"), exports);\n__exportStar(require(\"./signatures/Signature\"), exports);\n__exportStar(require(\"./signatures/SignatureContent\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipInfoController = void 0;\nconst consumption_1 = require(\"../../consumption\");\nconst RelationshipInfo_1 = require(\"./local/RelationshipInfo\");\nconst RelationshipInfoUtil_1 = require(\"./RelationshipInfoUtil\");\nclass RelationshipInfoController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.RelationshipInfoController, parent);\n }\n async init() {\n await super.init();\n this.relationshipInfo = await this.parent.accountController.getSynchronizedCollection(\"RelationshipInfo\");\n return this;\n }\n async getRelationshipInfo(id) {\n const result = await this.relationshipInfo.read(id.toString());\n return result ? await RelationshipInfo_1.RelationshipInfo.from(result) : undefined;\n }\n async getRelationshipInfoByRelationship(relationshipId) {\n const info = await new RelationshipInfoUtil_1.RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId);\n return info;\n /*\n // So far, do not store the relationshipInfo, as they wouldn't be updated correctly\n\n const result = await this.relationshipInfo.findOne({ relationshipId: relationshipId.toString() })\n\n if (result) {\n return await RelationshipInfo.from(result)\n }\n\n const info = await new RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId)\n await this.relationshipInfo.create(info)\n return info\n */\n }\n async getRelationshipInfos(query) {\n const items = await this.relationshipInfo.find(query);\n return await this.parseArray(items, RelationshipInfo_1.RelationshipInfo);\n }\n async createRelationshipInfo(relationshipInfo) {\n const exists = await this.relationshipInfo.exists({ relationshipId: relationshipInfo.relationshipId });\n if (exists) {\n throw consumption_1.ConsumptionErrors.relationshipInfo.relationshipInfoExists(relationshipInfo.relationshipId.toString());\n }\n await this.relationshipInfo.create(relationshipInfo);\n return relationshipInfo;\n }\n async updateRelationshipInfo(relationshipInfo) {\n const oldRelationshipInfo = await this.relationshipInfo.read(relationshipInfo.id.toString());\n if (!oldRelationshipInfo) {\n throw new Error(\"RelationshipInfo Not Found\");\n }\n await this.relationshipInfo.update(oldRelationshipInfo, relationshipInfo);\n }\n async deleteRelationshipInfo(relationshipInfo) {\n await this.relationshipInfo.delete(relationshipInfo);\n }\n}\nexports.RelationshipInfoController = RelationshipInfoController;\n//# sourceMappingURL=RelationshipInfoController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipInfoUtil = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst SharedItem_1 = require(\"../sharedItems/local/SharedItem\");\nconst RelationshipAttribute_1 = require(\"./local/RelationshipAttribute\");\nconst RelationshipInfo_1 = require(\"./local/RelationshipInfo\");\nclass RelationshipInfoUtil {\n constructor(parent) {\n this.parent = parent;\n this._log = transport_1.TransportLoggerFactory.getLogger(RelationshipInfoUtil);\n }\n get log() {\n return this._log;\n }\n async createInitialRelationshipInfo(id) {\n const relationship = await this.parent.accountController.relationships.getRelationship(id);\n if (!relationship) {\n throw transport_1.TransportErrors.general.recordNotFound(transport_1.Relationship, id.toString()).logWith(this._log);\n }\n await this.parseTemplateBody(relationship);\n await this.parseCreationRequest(relationship);\n return await this.createRelationshipInfo(relationship);\n }\n getTitle(relationship, attributeMap) {\n let title = relationship.peer.address.toString().substring(3, 9);\n const thingName = attributeMap.get(\"Thing.name\")?.content.value;\n const givenName = attributeMap.get(\"Person.givenName\")?.content.value;\n const familyName = attributeMap.get(\"Person.familyName\")?.content.value;\n const gender = attributeMap.get(\"Person.gender\")?.content.value;\n const orgname = attributeMap.get(\"Organization.name\")?.content.value;\n const legalName = attributeMap.get(\"Organization.legalname\")?.content.value;\n if (thingName) {\n title = thingName;\n }\n else if (givenName && familyName) {\n title = `${givenName} ${familyName}`;\n }\n else if (givenName) {\n title = givenName;\n }\n else if (familyName && gender) {\n title = `i18n://salutation.gender.${gender} ${familyName}`;\n }\n else if (orgname) {\n title = orgname;\n }\n else if (legalName) {\n title = legalName;\n }\n return title;\n }\n async createRelationshipInfo(relationship) {\n const peerAddress = relationship.peer.address;\n const truncatedAddress = peerAddress.address.substring(3, 9);\n const info = await RelationshipInfo_1.RelationshipInfo.from({\n attributes: [],\n id: await consumption_1.ConsumptionIds.relationshipInfo.generate(),\n isPinned: false,\n relationshipId: relationship.id,\n title: truncatedAddress\n });\n // info = await this.parent.relationshipInfo.createRelationshipInfo(info)\n const items = await this.parent.sharedItems.getSharedItems({\n sharedBy: relationship.peer.address.toString()\n });\n const attributes = [];\n const attributeMap = new Map();\n for (const item of items) {\n if (item.content instanceof content_1.Attribute) {\n const relAttr = await RelationshipAttribute_1.RelationshipAttribute.from({\n name: item.content.name,\n sharedItem: item.id,\n content: item.content\n });\n attributes.push(relAttr);\n attributeMap.set(relAttr.name, relAttr);\n }\n }\n info.attributes = attributes;\n const title = this.getTitle(relationship, attributeMap);\n info.title = title;\n // await this.parent.relationshipInfo.updateRelationshipInfo(info)\n return info;\n }\n async parseTemplateBody(relationship) {\n const template = relationship.cache.template;\n if (!template.cache) {\n throw transport_1.TransportErrors.general.cacheEmpty(transport_1.RelationshipTemplate, template.id.toString()).logWith(this._log);\n }\n const body = template.cache.content;\n const isTemplator = this.parent.accountController.identity.isMe(template.cache.createdBy);\n const sharedAt = template.cache.createdAt;\n const sharedBy = isTemplator ? this.parent.accountController.identity.address : relationship.peer.address;\n const sharedWith = isTemplator ? relationship.peer.address : this.parent.accountController.identity.address;\n const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({\n reference: template.id.toString()\n });\n const missingItems = [];\n if (body instanceof content_1.RelationshipTemplateBody) {\n const attributes = body.sharedAttributes;\n if (attributes) {\n if (sharedItemsWithSameReference.length !== attributes.length) {\n attributes.forEach((attribute) => {\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(attribute);\n }\n });\n }\n }\n }\n else {\n // Try to parse the old template format (without types)\n let oldTemplateBody = body;\n if (body instanceof ts_serval_1.JSONWrapper || body instanceof ts_serval_1.JSONWrapperAsync) {\n oldTemplateBody = oldTemplateBody.value;\n }\n if (oldTemplateBody?.attributes && Array.isArray(oldTemplateBody.attributes)) {\n if (sharedItemsWithSameReference.length !== oldTemplateBody.attributes.length) {\n oldTemplateBody.attributes.forEach((attribute) => {\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(content_1.Attribute.from({\n name: attribute.name,\n value: attribute.value\n }));\n }\n });\n }\n }\n }\n for (const attribute of missingItems) {\n const sharedItem = await SharedItem_1.SharedItem.from({\n id: await consumption_1.ConsumptionIds.sharedItem.generate(),\n content: attribute,\n sharedAt: sharedAt,\n sharedBy: sharedBy,\n sharedWith: sharedWith,\n reference: template.id,\n expiresAt: attribute.validTo\n });\n await this.parent.sharedItems.createSharedItem(sharedItem);\n }\n }\n async parseCreationRequest(relationship) {\n const change = relationship.cache.creationChange;\n const request = change.request;\n const body = request.content;\n const isRequestor = this.parent.accountController.identity.isMe(request.createdBy);\n const sharedAt = request.createdAt;\n const sharedBy = isRequestor ? this.parent.accountController.identity.address : relationship.peer.address;\n const sharedWith = isRequestor ? relationship.peer.address : this.parent.accountController.identity.address;\n const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({\n reference: change.id.toString()\n });\n const missingItems = [];\n if (body instanceof content_1.RelationshipCreationChangeRequestBody) {\n const attributes = body.sharedAttributes;\n if (attributes && attributes.length > 0) {\n if (sharedItemsWithSameReference.length !== attributes.length) {\n attributes.forEach((attribute) => {\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(attribute);\n }\n });\n }\n }\n }\n else {\n // Try to parse the old request format (without types)\n let oldRequestBody = body;\n if (body instanceof ts_serval_1.JSONWrapper || body instanceof ts_serval_1.JSONWrapperAsync) {\n oldRequestBody = oldRequestBody.value;\n }\n if (oldRequestBody?.attributes) {\n const keys = Object.keys(oldRequestBody.attributes);\n if (sharedItemsWithSameReference.length !== keys.length) {\n keys.forEach((key) => {\n const attribute = oldRequestBody.attributes[key];\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(content_1.Attribute.from({\n name: attribute.name,\n value: attribute.value\n }));\n }\n });\n }\n }\n }\n for (const attribute of missingItems) {\n const sharedItem = await SharedItem_1.SharedItem.from({\n id: await consumption_1.ConsumptionIds.sharedItem.generate(),\n content: attribute,\n sharedAt: sharedAt,\n sharedBy: sharedBy,\n sharedWith: sharedWith,\n reference: change.id,\n expiresAt: attribute.validTo\n });\n await this.parent.sharedItems.createSharedItem(sharedItem);\n }\n }\n}\nexports.RelationshipInfoUtil = RelationshipInfoUtil;\n//# sourceMappingURL=RelationshipInfoUtil.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar RelationshipAttribute_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipAttribute = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet RelationshipAttribute = RelationshipAttribute_1 = class RelationshipAttribute extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, RelationshipAttribute_1);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipAttribute.prototype, \"name\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", content_1.Attribute)\n], RelationshipAttribute.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], RelationshipAttribute.prototype, \"sharedItem\", void 0);\nRelationshipAttribute = RelationshipAttribute_1 = __decorate([\n (0, ts_serval_1.type)(\"RelationshipAttribute\")\n], RelationshipAttribute);\nexports.RelationshipAttribute = RelationshipAttribute;\n//# sourceMappingURL=RelationshipAttribute.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar RelationshipInfo_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipInfo = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nconst consumption_1 = require(\"../../../consumption\");\nconst RelationshipAttribute_1 = require(\"./RelationshipAttribute\");\nconst RelationshipTheme_1 = require(\"./RelationshipTheme\");\nlet RelationshipInfo = RelationshipInfo_1 = class RelationshipInfo extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.relationshipId),\n (0, ts_simple_nameof_1.nameof)((r) => r.title),\n (0, ts_simple_nameof_1.nameof)((r) => r.description),\n (0, ts_simple_nameof_1.nameof)((r) => r.theme)\n ];\n this.userdataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.isPinned),\n (0, ts_simple_nameof_1.nameof)((r) => r.userTitle),\n (0, ts_simple_nameof_1.nameof)((r) => r.userDescription)\n ];\n }\n static async fromRelationship(relationship) {\n if (typeof relationship.metadata === \"undefined\") {\n return await RelationshipInfo_1.from({\n id: await consumption_1.ConsumptionIds.relationshipInfo.generate(),\n relationshipId: relationship.id,\n attributes: [],\n isPinned: false,\n title: relationship.peer.address.address.substring(3, 9)\n });\n }\n return await RelationshipInfo_1.from(relationship.metadata);\n }\n static async from(value) {\n return await super.fromT(value, RelationshipInfo_1);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], RelationshipInfo.prototype, \"relationshipId\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)({ type: RelationshipAttribute_1.RelationshipAttribute }),\n __metadata(\"design:type\", Array)\n], RelationshipInfo.prototype, \"attributes\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Boolean)\n], RelationshipInfo.prototype, \"isPinned\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"userTitle\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"title\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"userDescription\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"description\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", RelationshipTheme_1.RelationshipTheme)\n], RelationshipInfo.prototype, \"theme\", void 0);\nRelationshipInfo = RelationshipInfo_1 = __decorate([\n (0, ts_serval_1.type)(\"RelationshipInfo\")\n], RelationshipInfo);\nexports.RelationshipInfo = RelationshipInfo;\n//# sourceMappingURL=RelationshipInfo.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar RelationshipTheme_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipTheme = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nlet RelationshipTheme = RelationshipTheme_1 = class RelationshipTheme extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, RelationshipTheme_1);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"image\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"imageBar\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"backgroundColor\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"foregroundColor\", void 0);\nRelationshipTheme = RelationshipTheme_1 = __decorate([\n (0, ts_serval_1.type)(\"RelationshipTheme\")\n], RelationshipTheme);\nexports.RelationshipTheme = RelationshipTheme;\n//# sourceMappingURL=RelationshipTheme.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecideRequestParametersValidator = void 0;\nconst ts_utils_1 = require(\"@js-soft/ts-utils\");\nclass DecideRequestParametersValidator {\n validate(params, request) {\n if (params.items.length !== request.content.items.length) {\n return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError(\"invalidNumberOfItems\", \"Number of items in Request and Response do not match\"));\n }\n return ts_utils_1.Result.ok(undefined);\n }\n}\nexports.DecideRequestParametersValidator = DecideRequestParametersValidator;\n//# sourceMappingURL=DecideRequestParametersValidator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IncomingRequestsController = void 0;\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../../consumption\");\nconst ValidationResult_1 = require(\"../itemProcessors/ValidationResult\");\nconst ConsumptionRequest_1 = require(\"../local/ConsumptionRequest\");\nconst ConsumptionRequestStatus_1 = require(\"../local/ConsumptionRequestStatus\");\nconst ConsumptionResponse_1 = require(\"../local/ConsumptionResponse\");\nconst CheckPrerequisitesOfIncomingRequestParameters_1 = require(\"./checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters\");\nconst CompleteIncomingRequestParameters_1 = require(\"./complete/CompleteIncomingRequestParameters\");\nconst AcceptRequestItemParameters_1 = require(\"./decide/AcceptRequestItemParameters\");\nconst AcceptRequestParameters_1 = require(\"./decide/AcceptRequestParameters\");\nconst DecideRequestItemGroupParameters_1 = require(\"./decide/DecideRequestItemGroupParameters\");\nconst DecideRequestItemParameters_1 = require(\"./decide/DecideRequestItemParameters\");\nconst RejectRequestItemParameters_1 = require(\"./decide/RejectRequestItemParameters\");\nconst RejectRequestParameters_1 = require(\"./decide/RejectRequestParameters\");\nconst DecideRequestParametersValidator_1 = require(\"./DecideRequestParametersValidator\");\nconst ReceivedIncomingRequestParameters_1 = require(\"./received/ReceivedIncomingRequestParameters\");\nconst RequireManualDecisionOfIncomingRequestParameters_1 = require(\"./requireManualDecision/RequireManualDecisionOfIncomingRequestParameters\");\nclass IncomingRequestsController extends consumption_1.ConsumptionBaseController {\n constructor(parent, processorRegistry) {\n super(consumption_1.ConsumptionControllerName.RequestsController, parent);\n this.processorRegistry = processorRegistry;\n this.decideRequestParamsValidator = new DecideRequestParametersValidator_1.DecideRequestParametersValidator();\n }\n async init() {\n await super.init();\n this.consumptionRequests = await this.parent.accountController.getSynchronizedCollection(\"Requests\");\n return this;\n }\n async received(params) {\n const parsedParams = await ReceivedIncomingRequestParameters_1.ReceivedIncomingRequestParameters.from(params);\n const infoFromSource = this.extractInfoFromSource(parsedParams.requestSourceObject);\n const consumptionRequest = await ConsumptionRequest_1.ConsumptionRequest.from({\n id: parsedParams.receivedRequest.id ?? (await transport_1.CoreId.generate()),\n createdAt: transport_1.CoreDate.utc(),\n status: ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open,\n content: parsedParams.receivedRequest,\n isOwn: false,\n peer: infoFromSource.peer,\n source: infoFromSource.source,\n statusLog: []\n });\n await this.consumptionRequests.create(consumptionRequest);\n return consumptionRequest;\n }\n extractInfoFromSource(source) {\n if (source instanceof transport_1.Message) {\n return this.extractInfoFromMessage(source);\n }\n return this.extractInfoFromRelationshipTemplate(source);\n }\n extractInfoFromMessage(message) {\n if (message.isOwn)\n throw new Error(\"Cannot create incoming Request from own Message\");\n return {\n peer: message.cache.createdBy,\n source: {\n reference: message.id,\n type: \"Message\"\n }\n };\n }\n extractInfoFromRelationshipTemplate(template) {\n if (template.isOwn)\n throw new Error(\"Cannot create incoming Request from own Relationship Template\");\n return {\n peer: template.cache.createdBy,\n source: {\n reference: template.id,\n type: \"RelationshipTemplate\"\n }\n };\n }\n async checkPrerequisites(params) {\n const parsedParams = await CheckPrerequisitesOfIncomingRequestParameters_1.CheckPrerequisitesOfIncomingRequestParameters.from(params);\n const request = await this.getOrThrow(parsedParams.requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n for (const item of request.content.items) {\n if (item instanceof content_1.RequestItem) {\n const processor = this.processorRegistry.getProcessorForItem(item);\n const prerequisitesFulfilled = await processor.checkPrerequisitesOfIncomingRequestItem(item);\n if (!prerequisitesFulfilled) {\n return request;\n }\n }\n else {\n for (const childItem of item.items) {\n const processor = this.processorRegistry.getProcessorForItem(childItem);\n const prerequisitesFulfilled = await processor.checkPrerequisitesOfIncomingRequestItem(childItem);\n if (!prerequisitesFulfilled) {\n return request;\n }\n }\n }\n }\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired);\n await this.update(request);\n return request;\n }\n async requireManualDecision(params) {\n const parsedParams = await RequireManualDecisionOfIncomingRequestParameters_1.RequireManualDecisionOfIncomingRequestParameters.from(params);\n const request = await this.getOrThrow(parsedParams.requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired);\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);\n await this.update(request);\n return request;\n }\n async canAccept(params) {\n const parsedParams = await AcceptRequestParameters_1.AcceptRequestParameters.from(params);\n return await this.canDecide(parsedParams, \"Accept\");\n }\n async canReject(params) {\n const parsedParams = await RejectRequestParameters_1.RejectRequestParameters.from(params);\n return await this.canDecide(parsedParams, \"Reject\");\n }\n async canDecide(params, action) {\n const request = await this.getOrThrow(params.requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired, ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);\n const itemResults = await this.canDecideItems(params.items, request.content.items, action);\n return ValidationResult_1.ValidationResult.fromItems(itemResults);\n }\n async canDecideGroup(params, requestItemGroup, action) {\n const itemResults = await this.canDecideItems(params.items, requestItemGroup.items, action);\n return ValidationResult_1.ValidationResult.fromItems(itemResults);\n }\n async canDecideItems(params, items, action) {\n const validationResults = [];\n for (let i = 0; i < params.length; i++) {\n const decideItemParams = params[i];\n const requestItem = items[i];\n if (requestItem instanceof content_1.RequestItemGroup) {\n const groupResult = await this.canDecideGroup(decideItemParams, requestItem, action);\n validationResults.push(groupResult);\n }\n else {\n const itemResult = await this.canDecideItem(decideItemParams, requestItem, action);\n validationResults.push(itemResult);\n }\n }\n return validationResults;\n }\n canDecideItem(params, requestItem, action) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n return processor[`can${action}`](requestItem, params);\n }\n async accept(params) {\n const canAccept = await this.canAccept(params);\n if (!canAccept.isSuccess()) {\n throw new Error(\"Cannot accept the Request with the given parameters. Call 'canAccept' to get more information.\");\n }\n return await this.decide(await AcceptRequestParameters_1.AcceptRequestParameters.from(params));\n }\n async reject(params) {\n const canReject = await this.canReject(params);\n if (!canReject.isSuccess()) {\n throw new Error(\"Cannot reject the Request with the given parameters. Call 'canReject' to get more information.\");\n }\n return await this.decide(await RejectRequestParameters_1.RejectRequestParameters.from(params));\n }\n async decide(params) {\n const consumptionRequest = await this.getOrThrow(params.requestId);\n this.assertRequestStatus(consumptionRequest, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired, ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);\n const validationResult = this.decideRequestParamsValidator.validate(params, consumptionRequest);\n if (!validationResult.isSuccess) {\n throw new Error(validationResult.error.message);\n }\n const consumptionResponse = await this.createConsumptionResponse(params, consumptionRequest);\n consumptionRequest.response = consumptionResponse;\n consumptionRequest.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Decided);\n await this.update(consumptionRequest);\n return consumptionRequest;\n }\n async createConsumptionResponse(params, request) {\n const requestItems = request.content.items;\n const responseItems = await this.decideItems(params.items, requestItems);\n const response = await content_1.Response.from({\n result: params instanceof AcceptRequestParameters_1.AcceptRequestParameters ? content_1.ResponseResult.Accepted : content_1.ResponseResult.Rejected,\n requestId: request.id,\n items: responseItems\n });\n const consumptionResponse = await ConsumptionResponse_1.ConsumptionResponse.from({\n content: response,\n createdAt: transport_1.CoreDate.utc()\n });\n return consumptionResponse;\n }\n async decideGroup(groupItemParam, requestItemGroup) {\n const items = (await this.decideItems(groupItemParam.items, requestItemGroup.items));\n const group = await content_1.ResponseItemGroup.from({\n items: items,\n metadata: requestItemGroup.responseMetadata\n });\n return group;\n }\n async decideItems(params, requestItems) {\n const responseItems = [];\n for (let i = 0; i < params.length; i++) {\n const itemParam = params[i];\n if (itemParam instanceof DecideRequestItemParameters_1.DecideRequestItemParameters) {\n responseItems.push(await this.decideItem(itemParam, requestItems[i]));\n }\n else if (itemParam instanceof DecideRequestItemGroupParameters_1.DecideRequestItemGroupParameters) {\n responseItems.push(await this.decideGroup(itemParam, requestItems[i]));\n }\n }\n return responseItems;\n }\n async decideItem(params, requestItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n try {\n if (params instanceof AcceptRequestItemParameters_1.AcceptRequestItemParameters) {\n return await processor.accept(requestItem, params);\n }\n else if (params instanceof RejectRequestItemParameters_1.RejectRequestItemParameters) {\n return await processor.reject(requestItem, params);\n }\n }\n catch (e) {\n let details = \"\";\n if (e instanceof Error) {\n details = ` Details: ${e.message}`;\n }\n throw new Error(`An error occurred while processing a '${requestItem.constructor.name}'. You should contact the developer of this RequestItem.${details}}`);\n }\n throw new Error(\"Unknown params type\");\n }\n async complete(params) {\n const parsedParams = await CompleteIncomingRequestParameters_1.CompleteIncomingRequestParameters.from(params);\n const request = await this.getOrThrow(parsedParams.requestId);\n if (request.isOwn) {\n throw new Error(\"Cannot decide own Request\");\n }\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Decided);\n let responseSource;\n if (parsedParams.responseSourceObject instanceof transport_1.Message) {\n responseSource = \"Message\";\n }\n else if (parsedParams.responseSourceObject instanceof transport_1.RelationshipChange) {\n responseSource = \"RelationshipChange\";\n }\n else {\n throw new Error(\"Unknown response source\");\n }\n request.response.source = await ConsumptionResponse_1.ConsumptionResponseSource.from({\n type: responseSource,\n reference: parsedParams.responseSourceObject.id\n });\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Completed);\n await this.update(request);\n return request;\n }\n async get(id) {\n const requestDoc = await this.consumptionRequests.findOne({ id: id.toString(), isOwn: false });\n const request = requestDoc ? await ConsumptionRequest_1.ConsumptionRequest.from(requestDoc) : undefined;\n return request;\n }\n async getOrThrow(id) {\n const request = await this.get(id);\n if (!request) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, id.toString());\n }\n return request;\n }\n async update(request) {\n const requestDoc = await this.consumptionRequests.findOne({ id: request.id.toString(), isOwn: false });\n if (!requestDoc) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, request.id.toString());\n }\n await this.consumptionRequests.update(requestDoc, request);\n }\n assertRequestStatus(request, ...status) {\n if (!status.includes(request.status)) {\n throw new Error(`Consumption Request has to be in status '${status.join(\"/\")}'.`);\n }\n }\n}\nexports.IncomingRequestsController = IncomingRequestsController;\n//# sourceMappingURL=IncomingRequestsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CheckPrerequisitesOfIncomingRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckPrerequisitesOfIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CheckPrerequisitesOfIncomingRequestParameters = CheckPrerequisitesOfIncomingRequestParameters_1 = class CheckPrerequisitesOfIncomingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, CheckPrerequisitesOfIncomingRequestParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], CheckPrerequisitesOfIncomingRequestParameters.prototype, \"requestId\", void 0);\nCheckPrerequisitesOfIncomingRequestParameters = CheckPrerequisitesOfIncomingRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"CheckPrerequisitesOfIncomingRequestParameters\")\n], CheckPrerequisitesOfIncomingRequestParameters);\nexports.CheckPrerequisitesOfIncomingRequestParameters = CheckPrerequisitesOfIncomingRequestParameters;\n//# sourceMappingURL=CheckPrerequisitesOfIncomingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompleteIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nclass CompleteIncomingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, CompleteIncomingRequestParameters);\n }\n}\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], CompleteIncomingRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)({ unionTypes: [transport_1.Message, transport_1.RelationshipChange] }),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Object)\n], CompleteIncomingRequestParameters.prototype, \"responseSourceObject\", void 0);\nexports.CompleteIncomingRequestParameters = CompleteIncomingRequestParameters;\n//# sourceMappingURL=CompleteIncomingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AcceptRequestItemParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AcceptRequestItemParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst DecideRequestItemParameters_1 = require(\"./DecideRequestItemParameters\");\nlet AcceptRequestItemParameters = AcceptRequestItemParameters_1 = class AcceptRequestItemParameters extends DecideRequestItemParameters_1.DecideRequestItemParameters {\n static async from(params) {\n return await super.fromT(params, AcceptRequestItemParameters_1);\n }\n};\nAcceptRequestItemParameters = AcceptRequestItemParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"AcceptRequestItemParameters\")\n], AcceptRequestItemParameters);\nexports.AcceptRequestItemParameters = AcceptRequestItemParameters;\n//# sourceMappingURL=AcceptRequestItemParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AcceptRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AcceptRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst DecideRequestParameters_1 = require(\"./DecideRequestParameters\");\nlet AcceptRequestParameters = AcceptRequestParameters_1 = class AcceptRequestParameters extends DecideRequestParameters_1.DecideRequestParameters {\n static async from(params) {\n return await super.fromT(params, AcceptRequestParameters_1);\n }\n};\nAcceptRequestParameters = AcceptRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"AcceptRequestParameters\")\n], AcceptRequestParameters);\nexports.AcceptRequestParameters = AcceptRequestParameters;\n//# sourceMappingURL=AcceptRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar DecideRequestItemGroupParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecideRequestItemGroupParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nlet DecideRequestItemGroupParameters = DecideRequestItemGroupParameters_1 = class DecideRequestItemGroupParameters extends ts_serval_1.SerializableAsync {\n static async from(params) {\n return await super.fromT(params, DecideRequestItemGroupParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Array)\n], DecideRequestItemGroupParameters.prototype, \"items\", void 0);\nDecideRequestItemGroupParameters = DecideRequestItemGroupParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"DecideRequestItemGroupParameters\")\n], DecideRequestItemGroupParameters);\nexports.DecideRequestItemGroupParameters = DecideRequestItemGroupParameters;\n//# sourceMappingURL=DecideRequestItemGroupParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecideRequestItemParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nclass DecideRequestItemParameters extends ts_serval_1.SerializableAsync {\n}\nexports.DecideRequestItemParameters = DecideRequestItemParameters;\n//# sourceMappingURL=DecideRequestItemParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecideRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nclass DecideRequestParameters extends ts_serval_1.SerializableAsync {\n}\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], DecideRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({\n customValidator: (items) => items.length === 0 ? \"may not be empty\" : undefined\n }),\n __metadata(\"design:type\", Array)\n], DecideRequestParameters.prototype, \"items\", void 0);\nexports.DecideRequestParameters = DecideRequestParameters;\n//# sourceMappingURL=DecideRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar RejectRequestItemParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RejectRequestItemParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst DecideRequestItemParameters_1 = require(\"./DecideRequestItemParameters\");\nlet RejectRequestItemParameters = RejectRequestItemParameters_1 = class RejectRequestItemParameters extends DecideRequestItemParameters_1.DecideRequestItemParameters {\n static async from(params) {\n return await super.fromT(params, RejectRequestItemParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", String)\n], RejectRequestItemParameters.prototype, \"code\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", String)\n], RejectRequestItemParameters.prototype, \"message\", void 0);\nRejectRequestItemParameters = RejectRequestItemParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"RejectRequestItemParameters\")\n], RejectRequestItemParameters);\nexports.RejectRequestItemParameters = RejectRequestItemParameters;\n//# sourceMappingURL=RejectRequestItemParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RejectRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RejectRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst DecideRequestParameters_1 = require(\"./DecideRequestParameters\");\nlet RejectRequestParameters = RejectRequestParameters_1 = class RejectRequestParameters extends DecideRequestParameters_1.DecideRequestParameters {\n static async from(params) {\n return await super.fromT(params, RejectRequestParameters_1);\n }\n};\nRejectRequestParameters = RejectRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"RejectRequestParameters\")\n], RejectRequestParameters);\nexports.RejectRequestParameters = RejectRequestParameters;\n//# sourceMappingURL=RejectRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ReceivedIncomingRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReceivedIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet ReceivedIncomingRequestParameters = ReceivedIncomingRequestParameters_1 = class ReceivedIncomingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(params) {\n return await super.fromT(params, ReceivedIncomingRequestParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Request)\n], ReceivedIncomingRequestParameters.prototype, \"receivedRequest\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)({ unionTypes: [transport_1.Message, transport_1.RelationshipTemplate] }),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Object)\n], ReceivedIncomingRequestParameters.prototype, \"requestSourceObject\", void 0);\nReceivedIncomingRequestParameters = ReceivedIncomingRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"ReceivedIncomingRequestParameters\")\n], ReceivedIncomingRequestParameters);\nexports.ReceivedIncomingRequestParameters = ReceivedIncomingRequestParameters;\n//# sourceMappingURL=ReceivedIncomingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireManualDecisionOfIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nclass RequireManualDecisionOfIncomingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, RequireManualDecisionOfIncomingRequestParameters);\n }\n}\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], RequireManualDecisionOfIncomingRequestParameters.prototype, \"requestId\", void 0);\nexports.RequireManualDecisionOfIncomingRequestParameters = RequireManualDecisionOfIncomingRequestParameters;\n//# sourceMappingURL=RequireManualDecisionOfIncomingRequestParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericRequestItemProcessor = void 0;\nconst content_1 = require(\"@nmshd/content\");\nconst ValidationResult_1 = require(\"./ValidationResult\");\nclass GenericRequestItemProcessor {\n checkPrerequisitesOfIncomingRequestItem(_requestItem) {\n return true;\n }\n canAccept(_requestItem, _params) {\n return ValidationResult_1.ValidationResult.success();\n }\n canReject(_requestItem, _params) {\n return ValidationResult_1.ValidationResult.success();\n }\n async accept(requestItem, _params) {\n return await content_1.AcceptResponseItem.from({\n result: content_1.ResponseItemResult.Accepted,\n metadata: requestItem.responseMetadata\n });\n }\n async reject(requestItem, _params) {\n return await content_1.RejectResponseItem.from({\n result: content_1.ResponseItemResult.Rejected,\n metadata: requestItem.responseMetadata\n });\n }\n canApplyIncomingResponseItem(_responseItem, _requestItem) {\n return ValidationResult_1.ValidationResult.success();\n }\n canCreateOutgoingRequestItem(_requestItem) {\n return ValidationResult_1.ValidationResult.success();\n }\n applyIncomingResponseItem(_responseItem, _requestItem) {\n // do nothing\n }\n}\nexports.GenericRequestItemProcessor = GenericRequestItemProcessor;\n//# sourceMappingURL=GenericRequestItemProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestItemProcessorRegistry = void 0;\nclass RequestItemProcessorRegistry {\n constructor() {\n this.registry = {};\n }\n registerProcessor(processorConstructor, itemConstructor) {\n if (this.registry.hasOwnProperty(itemConstructor.name)) {\n throw new Error(`There is already a processor registered for '${itemConstructor.name}''. Use 'replaceProcessorForType' if you want to replace it.`);\n }\n this.registry[itemConstructor.name] = processorConstructor;\n }\n replaceProcessor(processorConstructor, itemConstructor) {\n this.registry[itemConstructor.name] = processorConstructor;\n }\n getProcessorForItem(item) {\n const constructor = this.registry[item.constructor.name];\n if (!constructor) {\n throw new Error(`There was no processor registered for '${item.constructor.name}'.`);\n }\n return new constructor();\n }\n}\nexports.RequestItemProcessorRegistry = RequestItemProcessorRegistry;\n//# sourceMappingURL=RequestItemProcessorRegistry.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorValidationResult = exports.SuccessfulValidatonResult = exports.ValidationResult = void 0;\nclass ValidationResult {\n constructor(items) {\n this.items = items;\n }\n isSuccess() {\n return this instanceof SuccessfulValidatonResult;\n }\n isError() {\n return this instanceof ErrorValidationResult;\n }\n static success(items = []) {\n return new SuccessfulValidatonResult(items);\n }\n static error(code, message, items = []) {\n return new ErrorValidationResult(code, message, items);\n }\n static fromItems(items) {\n return items.some((r) => r.isError())\n ? ValidationResult.error(\"inheritedFromItem\", \"Some child items have errors.\", items)\n : ValidationResult.success(items);\n }\n}\nexports.ValidationResult = ValidationResult;\nclass SuccessfulValidatonResult extends ValidationResult {\n constructor(items) {\n super(items);\n }\n}\nexports.SuccessfulValidatonResult = SuccessfulValidatonResult;\nclass ErrorValidationResult extends ValidationResult {\n constructor(code, message, items) {\n super(items);\n this.code = code;\n this.message = message;\n }\n}\nexports.ErrorValidationResult = ErrorValidationResult;\n//# sourceMappingURL=ValidationResult.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ConsumptionRequestSource_1, ConsumptionRequest_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionRequest = exports.ConsumptionRequestSource = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ConsumptionRequestStatus_1 = require(\"./ConsumptionRequestStatus\");\nconst ConsumptionRequestStatusLogEntry_1 = require(\"./ConsumptionRequestStatusLogEntry\");\nconst ConsumptionResponse_1 = require(\"./ConsumptionResponse\");\nlet ConsumptionRequestSource = ConsumptionRequestSource_1 = class ConsumptionRequestSource extends transport_1.CoreSerializableAsync {\n static from(value) {\n return super.fromT(value, ConsumptionRequestSource_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequestSource.prototype, \"type\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], ConsumptionRequestSource.prototype, \"reference\", void 0);\nConsumptionRequestSource = ConsumptionRequestSource_1 = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionRequestSource\")\n], ConsumptionRequestSource);\nexports.ConsumptionRequestSource = ConsumptionRequestSource;\nlet ConsumptionRequest = ConsumptionRequest_1 = class ConsumptionRequest extends transport_1.CoreSynchronizable {\n changeStatus(newStatus) {\n const logEntry = ConsumptionRequestStatusLogEntry_1.ConsumptionRequestStatusLogEntry.from({\n createdAt: transport_1.CoreDate.utc(),\n oldStatus: this.status,\n newStatus\n });\n this.statusLog.push(logEntry);\n this.status = newStatus;\n }\n sent(source) {\n if (this.status !== ConsumptionRequestStatus_1.ConsumptionRequestStatus.Draft) {\n throw new Error(\"Consumption Request has to be in status 'Draft'.\");\n }\n this.source = source;\n this.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n }\n static async from(value) {\n return await super.fromT(value, ConsumptionRequest_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Boolean)\n], ConsumptionRequest.prototype, \"isOwn\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], ConsumptionRequest.prototype, \"peer\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionRequest.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Request)\n], ConsumptionRequest.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", ConsumptionRequestSource)\n], ConsumptionRequest.prototype, \"source\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", ConsumptionResponse_1.ConsumptionResponse)\n], ConsumptionRequest.prototype, \"response\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequest.prototype, \"status\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)({ type: ConsumptionRequestStatusLogEntry_1.ConsumptionRequestStatusLogEntry }),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Array)\n], ConsumptionRequest.prototype, \"statusLog\", void 0);\nConsumptionRequest = ConsumptionRequest_1 = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionRequest\")\n], ConsumptionRequest);\nexports.ConsumptionRequest = ConsumptionRequest;\n//# sourceMappingURL=ConsumptionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionRequestStatus = void 0;\nvar ConsumptionRequestStatus;\n(function (ConsumptionRequestStatus) {\n ConsumptionRequestStatus[\"Draft\"] = \"Draft\";\n ConsumptionRequestStatus[\"Open\"] = \"Open\";\n ConsumptionRequestStatus[\"DecisionRequired\"] = \"DecisionRequired\";\n ConsumptionRequestStatus[\"ManualDecisionRequired\"] = \"ManualDecisionRequired\";\n ConsumptionRequestStatus[\"Decided\"] = \"Decided\";\n ConsumptionRequestStatus[\"Completed\"] = \"Completed\";\n})(ConsumptionRequestStatus = exports.ConsumptionRequestStatus || (exports.ConsumptionRequestStatus = {}));\n//# sourceMappingURL=ConsumptionRequestStatus.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ConsumptionRequestStatusLogEntry_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionRequestStatusLogEntry = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ConsumptionRequestStatus_1 = require(\"./ConsumptionRequestStatus\");\nlet ConsumptionRequestStatusLogEntry = ConsumptionRequestStatusLogEntry_1 = class ConsumptionRequestStatusLogEntry extends transport_1.CoreSerializable {\n static from(value) {\n return super.fromT(value, ConsumptionRequestStatusLogEntry_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionRequestStatusLogEntry.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequestStatusLogEntry.prototype, \"oldStatus\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequestStatusLogEntry.prototype, \"newStatus\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", Object)\n], ConsumptionRequestStatusLogEntry.prototype, \"data\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", String)\n], ConsumptionRequestStatusLogEntry.prototype, \"code\", void 0);\nConsumptionRequestStatusLogEntry = ConsumptionRequestStatusLogEntry_1 = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionRequestStatusLogEntry\")\n], ConsumptionRequestStatusLogEntry);\nexports.ConsumptionRequestStatusLogEntry = ConsumptionRequestStatusLogEntry;\n//# sourceMappingURL=ConsumptionRequestStatusLogEntry.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ConsumptionResponseSource_1, ConsumptionResponse_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionResponse = exports.ConsumptionResponseSource = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet ConsumptionResponseSource = ConsumptionResponseSource_1 = class ConsumptionResponseSource extends transport_1.CoreSerializableAsync {\n static async from(value) {\n return await super.fromT(value, ConsumptionResponseSource_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionResponseSource.prototype, \"type\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], ConsumptionResponseSource.prototype, \"reference\", void 0);\nConsumptionResponseSource = ConsumptionResponseSource_1 = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionResponseSource\")\n], ConsumptionResponseSource);\nexports.ConsumptionResponseSource = ConsumptionResponseSource;\nlet ConsumptionResponse = ConsumptionResponse_1 = class ConsumptionResponse extends transport_1.CoreSerializableAsync {\n static async from(value) {\n return await super.fromT(value, ConsumptionResponse_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionResponse.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Response)\n], ConsumptionResponse.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", ConsumptionResponseSource)\n], ConsumptionResponse.prototype, \"source\", void 0);\nConsumptionResponse = ConsumptionResponse_1 = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionResponse\")\n], ConsumptionResponse);\nexports.ConsumptionResponse = ConsumptionResponse;\n//# sourceMappingURL=ConsumptionResponse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OutgoingRequestsController = void 0;\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../../consumption\");\nconst ValidationResult_1 = require(\"../itemProcessors/ValidationResult\");\nconst ConsumptionRequest_1 = require(\"../local/ConsumptionRequest\");\nconst ConsumptionRequestStatus_1 = require(\"../local/ConsumptionRequestStatus\");\nconst ConsumptionResponse_1 = require(\"../local/ConsumptionResponse\");\nconst CompleteOutgoingRequestParameters_1 = require(\"./completeOutgoingRequest/CompleteOutgoingRequestParameters\");\nconst CreateOutgoingRequestFromRelationshipCreationChangeParameters_1 = require(\"./createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters\");\nconst CreateOutgoingRequestParameters_1 = require(\"./createOutgoingRequest/CreateOutgoingRequestParameters\");\nconst SentOutgoingRequestParameters_1 = require(\"./sentOutgoingRequest/SentOutgoingRequestParameters\");\nclass OutgoingRequestsController extends consumption_1.ConsumptionBaseController {\n constructor(parent, processorRegistry) {\n super(consumption_1.ConsumptionControllerName.RequestsController, parent);\n this.processorRegistry = processorRegistry;\n }\n async init() {\n await super.init();\n this.consumptionRequests = await this.parent.accountController.getSynchronizedCollection(\"Requests\");\n return this;\n }\n async canCreate(params) {\n const parsedParams = await CreateOutgoingRequestParameters_1.CreateOutgoingRequestParameters.from(params);\n const innerResults = await this.canCreateItems(parsedParams.content.items);\n const result = ValidationResult_1.ValidationResult.fromItems(innerResults);\n return result;\n }\n async canCreateItems(items) {\n const results = [];\n for (const requestItem of items) {\n if (requestItem instanceof content_1.RequestItem) {\n const canCreateItem = await this.canCreateItem(requestItem);\n results.push(canCreateItem);\n }\n else {\n const result = await this.canCreateItemGroup(requestItem);\n results.push(result);\n }\n }\n return results;\n }\n async canCreateItem(requestItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n return await processor.canCreateOutgoingRequestItem(requestItem);\n }\n async canCreateItemGroup(requestItem) {\n const innerResults = [];\n for (const innerRequestItem of requestItem.items) {\n const canCreateItem = await this.canCreateItem(innerRequestItem);\n innerResults.push(canCreateItem);\n }\n const result = ValidationResult_1.ValidationResult.fromItems(innerResults);\n return result;\n }\n async create(params) {\n const parsedParams = await CreateOutgoingRequestParameters_1.CreateOutgoingRequestParameters.from(params);\n const id = await consumption_1.ConsumptionIds.request.generate();\n parsedParams.content.id = id;\n const consumptionRequest = await this._create(id, parsedParams.content, parsedParams.peer);\n return consumptionRequest;\n }\n async _create(id, content, peer) {\n const canCreateResult = await this.canCreate({\n content,\n peer\n });\n if (canCreateResult.isError()) {\n throw new Error(canCreateResult.message);\n }\n const consumptionRequest = await ConsumptionRequest_1.ConsumptionRequest.from({\n id: id,\n content: content,\n createdAt: transport_1.CoreDate.utc(),\n isOwn: true,\n peer: peer,\n status: ConsumptionRequestStatus_1.ConsumptionRequestStatus.Draft,\n statusLog: []\n });\n await this.consumptionRequests.create(consumptionRequest);\n return consumptionRequest;\n }\n async createFromRelationshipCreationChange(params) {\n const parsedParams = await CreateOutgoingRequestFromRelationshipCreationChangeParameters_1.CreateOutgoingRequestFromRelationshipCreationChangeParameters.from(params);\n const peer = parsedParams.creationChange.request.createdBy;\n const id = parsedParams.creationChange.request.content.requestId;\n await this._create(id, parsedParams.template.cache.content, peer);\n await this._sent(id, parsedParams.template);\n const consumptionRequest = await this._complete(id, parsedParams.creationChange, parsedParams.creationChange.request.content);\n return consumptionRequest;\n }\n async sent(params) {\n const parsedParams = await SentOutgoingRequestParameters_1.SentOutgoingRequestParameters.from(params);\n return await this._sent(parsedParams.requestId, parsedParams.requestSourceObject);\n }\n async _sent(requestId, requestSourceObject) {\n const request = await this.getOrThrow(requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Draft);\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n request.source = await ConsumptionRequest_1.ConsumptionRequestSource.from({\n reference: requestSourceObject.id,\n type: this.getSourceType(requestSourceObject)\n });\n await this.update(request);\n return request;\n }\n getSourceType(sourceObject) {\n if (sourceObject instanceof transport_1.Message) {\n if (!sourceObject.isOwn) {\n throw new Error(\"Cannot create outgoing Request from a peer Message\");\n }\n return \"Message\";\n }\n else if (sourceObject instanceof transport_1.RelationshipTemplate) {\n if (!sourceObject.isOwn) {\n throw new Error(\"Cannot create outgoing Request from a peer Relationship Template\");\n }\n return \"RelationshipTemplate\";\n }\n throw new Error(\"The given sourceObject is not of a valid type. Valid types are 'Message' and 'RelationshipTemplate'.\");\n }\n async complete(params) {\n const parsedParams = await CompleteOutgoingRequestParameters_1.CompleteOugoingRequestParameters.from(params);\n return await this._complete(parsedParams.requestId, parsedParams.responseSourceObject, parsedParams.receivedResponse);\n }\n async _complete(requestId, responseSourceObject, receivedResponse) {\n const request = await this.getOrThrow(requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n const canComplete = await this.canComplete(request, receivedResponse);\n if (canComplete.isError()) {\n throw new Error(canComplete.message);\n }\n await this.applyItems(request.content.items, receivedResponse.items);\n let responseSource;\n if (responseSourceObject instanceof transport_1.Message) {\n responseSource = \"Message\";\n }\n else if (responseSourceObject instanceof transport_1.RelationshipChange) {\n responseSource = \"RelationshipChange\";\n }\n else {\n throw new Error(\"Invalid responseSourceObject\");\n }\n const consumptionResponse = await ConsumptionResponse_1.ConsumptionResponse.from({\n content: receivedResponse,\n createdAt: transport_1.CoreDate.utc(),\n source: { reference: responseSourceObject.id, type: responseSource }\n });\n request.response = consumptionResponse;\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Completed);\n await this.update(request);\n return request;\n }\n async canComplete(request, receivedResponse) {\n for (let i = 0; i < receivedResponse.items.length; i++) {\n const requestItem = request.content.items[i];\n if (requestItem instanceof content_1.RequestItem) {\n const responseItem = receivedResponse.items[i];\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n const canApplyItem = await processor.canApplyIncomingResponseItem(responseItem, requestItem);\n if (canApplyItem.isError()) {\n return canApplyItem;\n }\n }\n else if (requestItem instanceof content_1.RequestItemGroup) {\n const responseGroup = receivedResponse.items[i];\n for (let j = 0; j < requestItem.items.length; j++) {\n const groupRequestItem = requestItem.items[j];\n const groupResponseItem = responseGroup.items[j];\n const processor = this.processorRegistry.getProcessorForItem(groupRequestItem);\n const canApplyItem = await processor.canApplyIncomingResponseItem(groupResponseItem, groupRequestItem);\n if (canApplyItem.isError()) {\n return canApplyItem;\n }\n }\n }\n }\n return ValidationResult_1.ValidationResult.success();\n }\n async applyItems(requestItems, responseItems) {\n for (let i = 0; i < responseItems.length; i++) {\n const requestItem = requestItems[i];\n if (requestItem instanceof content_1.RequestItem) {\n const responseItem = responseItems[i];\n await this.applyItem(requestItem, responseItem);\n }\n else {\n const responseItemGroup = responseItems[i];\n await this.applyItems(requestItem.items, responseItemGroup.items);\n }\n }\n }\n async applyItem(requestItem, responseItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n await processor.applyIncomingResponseItem(responseItem, requestItem);\n }\n async get(id) {\n const requestDoc = await this.consumptionRequests.findOne({ id: id.toString(), isOwn: true });\n const request = requestDoc ? await ConsumptionRequest_1.ConsumptionRequest.from(requestDoc) : undefined;\n return request;\n }\n async getOrThrow(id) {\n const request = await this.get(id);\n if (!request) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, id.toString());\n }\n return request;\n }\n async update(request) {\n const requestDoc = await this.consumptionRequests.findOne({ id: request.id.toString(), isOwn: true });\n if (!requestDoc) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, request.id.toString());\n }\n await this.consumptionRequests.update(requestDoc, request);\n }\n assertRequestStatus(request, ...status) {\n if (!status.includes(request.status)) {\n throw new Error(`Consumption Request has to be in status '${status.join(\"/\")}'.`);\n }\n }\n}\nexports.OutgoingRequestsController = OutgoingRequestsController;\n//# sourceMappingURL=OutgoingRequestsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CompleteOugoingRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompleteOugoingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CompleteOugoingRequestParameters = CompleteOugoingRequestParameters_1 = class CompleteOugoingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, CompleteOugoingRequestParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], CompleteOugoingRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.Message)\n], CompleteOugoingRequestParameters.prototype, \"responseSourceObject\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Response)\n], CompleteOugoingRequestParameters.prototype, \"receivedResponse\", void 0);\nCompleteOugoingRequestParameters = CompleteOugoingRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"CompleteOugoingRequestParameters\")\n], CompleteOugoingRequestParameters);\nexports.CompleteOugoingRequestParameters = CompleteOugoingRequestParameters;\n//# sourceMappingURL=CompleteOutgoingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CreateOutgoingRequestFromRelationshipCreationChangeParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateOutgoingRequestFromRelationshipCreationChangeParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CreateOutgoingRequestFromRelationshipCreationChangeParameters = CreateOutgoingRequestFromRelationshipCreationChangeParameters_1 = class CreateOutgoingRequestFromRelationshipCreationChangeParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, CreateOutgoingRequestFromRelationshipCreationChangeParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.RelationshipTemplate)\n], CreateOutgoingRequestFromRelationshipCreationChangeParameters.prototype, \"template\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.RelationshipChange)\n], CreateOutgoingRequestFromRelationshipCreationChangeParameters.prototype, \"creationChange\", void 0);\nCreateOutgoingRequestFromRelationshipCreationChangeParameters = CreateOutgoingRequestFromRelationshipCreationChangeParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"CreateOutgoingRequestFromRelationshipCreationChangeParameters\")\n], CreateOutgoingRequestFromRelationshipCreationChangeParameters);\nexports.CreateOutgoingRequestFromRelationshipCreationChangeParameters = CreateOutgoingRequestFromRelationshipCreationChangeParameters;\n//# sourceMappingURL=CreateOutgoingRequestFromRelationshipCreationChangeParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CreateOutgoingRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateOutgoingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CreateOutgoingRequestParameters = CreateOutgoingRequestParameters_1 = class CreateOutgoingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, CreateOutgoingRequestParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Request)\n], CreateOutgoingRequestParameters.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], CreateOutgoingRequestParameters.prototype, \"peer\", void 0);\nCreateOutgoingRequestParameters = CreateOutgoingRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"CreateOutgoingRequestParameters\")\n], CreateOutgoingRequestParameters);\nexports.CreateOutgoingRequestParameters = CreateOutgoingRequestParameters;\n//# sourceMappingURL=CreateOutgoingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar SentOutgoingRequestParameters_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SentOutgoingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet SentOutgoingRequestParameters = SentOutgoingRequestParameters_1 = class SentOutgoingRequestParameters extends ts_serval_1.SerializableAsync {\n static async from(value) {\n return await super.fromT(value, SentOutgoingRequestParameters_1);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SentOutgoingRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.Message)\n], SentOutgoingRequestParameters.prototype, \"requestSourceObject\", void 0);\nSentOutgoingRequestParameters = SentOutgoingRequestParameters_1 = __decorate([\n (0, ts_serval_1.type)(\"SentOutgoingRequestParameters\")\n], SentOutgoingRequestParameters);\nexports.SentOutgoingRequestParameters = SentOutgoingRequestParameters;\n//# sourceMappingURL=SentOutgoingRequestParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SettingsController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst Setting_1 = require(\"./local/Setting\");\nclass SettingsController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.SettingsController, parent);\n }\n async init() {\n await super.init();\n this.settings = await this.parent.accountController.getSynchronizedCollection(\"Settings\");\n return this;\n }\n async getSetting(id) {\n const result = await this.settings.read(id.toString());\n return result ? await Setting_1.Setting.from(result) : undefined;\n }\n async getSettings(query) {\n const items = await this.settings.find(query);\n return await this.parseArray(items, Setting_1.Setting);\n }\n async createSetting(parameters) {\n const setting = await Setting_1.Setting.from({\n id: await consumption_1.ConsumptionIds.setting.generate(),\n createdAt: transport_1.CoreDate.utc(),\n key: parameters.key,\n scope: parameters.scope ?? Setting_1.SettingScope.Identity,\n value: parameters.value,\n reference: parameters.reference,\n succeedsAt: parameters.succeedsAt,\n succeedsItem: parameters.succeedsItem\n });\n await this.settings.create(setting);\n return setting;\n }\n async updateSetting(setting) {\n const oldSetting = await this.settings.read(setting.id.toString());\n if (!oldSetting) {\n throw transport_1.TransportErrors.general.recordNotFound(Setting_1.Setting, setting.id.toString()).logWith(this._log);\n }\n await this.settings.update(oldSetting, setting);\n }\n async deleteSetting(setting) {\n await this.settings.delete(setting);\n }\n}\nexports.SettingsController = SettingsController;\n//# sourceMappingURL=SettingsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar Setting_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Setting = exports.SettingScope = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nvar SettingScope;\n(function (SettingScope) {\n SettingScope[\"Identity\"] = \"Identity\";\n SettingScope[\"Device\"] = \"Device\";\n SettingScope[\"Relationship\"] = \"Relationship\";\n})(SettingScope = exports.SettingScope || (exports.SettingScope = {}));\nlet Setting = Setting_1 = class Setting extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.key),\n (0, ts_simple_nameof_1.nameof)((r) => r.scope),\n (0, ts_simple_nameof_1.nameof)((r) => r.reference),\n (0, ts_simple_nameof_1.nameof)((r) => r.createdAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.deletedAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsItem),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsAt)\n ];\n this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.value)];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static async from(value) {\n return await super.fromT(value, Setting_1);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], Setting.prototype, \"key\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], Setting.prototype, \"scope\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], Setting.prototype, \"reference\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", ts_serval_1.SerializableAsync)\n], Setting.prototype, \"value\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"deletedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], Setting.prototype, \"succeedsItem\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"succeedsAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], Setting.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"metadataModifiedAt\", void 0);\nSetting = Setting_1 = __decorate([\n (0, ts_serval_1.type)(\"Setting\")\n], Setting);\nexports.Setting = Setting;\n//# sourceMappingURL=Setting.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedItemsController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst SharedItem_1 = require(\"./local/SharedItem\");\nclass SharedItemsController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.SharedItemsController, parent);\n }\n async init() {\n await super.init();\n this.sharedItems = await this.parent.accountController.getSynchronizedCollection(\"SharedItems\");\n return this;\n }\n async getSharedItem(id) {\n const result = await this.sharedItems.read(id.toString());\n return result ? await SharedItem_1.SharedItem.from(result) : undefined;\n }\n async getSharedItems(query) {\n const items = await this.sharedItems.find(query);\n return await this.parseArray(items, SharedItem_1.SharedItem);\n }\n async createSharedItem(sharedItem) {\n await this.sharedItems.create(sharedItem);\n return sharedItem;\n }\n async updateSharedItem(sharedItem) {\n const oldSharedItem = await this.sharedItems.read(sharedItem.id.toString());\n if (!oldSharedItem) {\n throw transport_1.TransportErrors.general.recordNotFound(SharedItem_1.SharedItem, sharedItem.id.toString());\n }\n return await this.sharedItems.update(oldSharedItem, sharedItem);\n }\n async deleteSharedItem(sharedItem) {\n await this.sharedItems.delete(sharedItem);\n }\n}\nexports.SharedItemsController = SharedItemsController;\n//# sourceMappingURL=SharedItemsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar SharedItem_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedItem = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nlet SharedItem = SharedItem_1 = class SharedItem extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.tags),\n (0, ts_simple_nameof_1.nameof)((r) => r.sharedBy),\n (0, ts_simple_nameof_1.nameof)((r) => r.sharedWith),\n (0, ts_simple_nameof_1.nameof)((r) => r.sharedAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.reference),\n (0, ts_simple_nameof_1.nameof)((r) => r.content),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsItem),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.expiresAt)\n ];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static async from(value) {\n return await super.fromT(value, SharedItem_1);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ type: String }),\n __metadata(\"design:type\", Array)\n], SharedItem.prototype, \"tags\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], SharedItem.prototype, \"sharedBy\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], SharedItem.prototype, \"sharedWith\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"sharedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SharedItem.prototype, \"reference\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", ts_serval_1.Serializable)\n], SharedItem.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SharedItem.prototype, \"succeedsItem\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"succeedsAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"expiresAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], SharedItem.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"metadataModifiedAt\", void 0);\nSharedItem = SharedItem_1 = __decorate([\n (0, ts_serval_1.type)(\"SharedItem\")\n], SharedItem);\nexports.SharedItem = SharedItem;\n//# sourceMappingURL=SharedItem.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar Signature_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Signature = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst crypto_1 = require(\"@nmshd/crypto\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst SignatureContent_1 = require(\"./SignatureContent\");\nlet Signature = Signature_1 = class Signature extends transport_1.CoreSerializableAsync {\n static async from(value) {\n const signature = await crypto_1.CryptoSignature.fromBase64(value.signature);\n return await super.fromT({ content: value.content, signature: signature }, Signature_1);\n }\n static async deserialize(value) {\n return await super.deserializeT(value, Signature_1);\n }\n async verify(content, publicKey) {\n const hash = await crypto_1.CryptoHash.hash(crypto_1.CoreBuffer.fromUtf8(content), this.content.hashAlgorithm);\n if (hash.toBase64() !== this.content.hash.hash)\n return false;\n const str = this.content.serialize();\n const correct = await transport_1.CoreCrypto.verify(crypto_1.CoreBuffer.fromUtf8(str), this.signature, publicKey);\n return correct;\n }\n toJSON() {\n return { content: this.content.toJSON(), signature: this.signature.toBase64() };\n }\n serialize() {\n return JSON.stringify(this.toJSON());\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", SignatureContent_1.SignatureContent)\n], Signature.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", crypto_1.CryptoSignature)\n], Signature.prototype, \"signature\", void 0);\nSignature = Signature_1 = __decorate([\n (0, ts_serval_1.type)(\"Signature\")\n], Signature);\nexports.Signature = Signature;\n//# sourceMappingURL=Signature.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar SignatureContent_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignatureContent = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet SignatureContent = SignatureContent_1 = class SignatureContent extends transport_1.CoreSerializable {\n static from(value) {\n return super.from(value, SignatureContent_1);\n }\n static deserialize(value) {\n return super.deserializeT(value, SignatureContent_1);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Number)\n], SignatureContent.prototype, \"version\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Number)\n], SignatureContent.prototype, \"signatureAlgorithm\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Number)\n], SignatureContent.prototype, \"hashAlgorithm\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SignatureContent.prototype, \"signedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], SignatureContent.prototype, \"signer\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SignatureContent.prototype, \"keyId\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreHash)\n], SignatureContent.prototype, \"hash\", void 0);\nSignatureContent = SignatureContent_1 = __decorate([\n (0, ts_serval_1.type)(\"SignatureContent\")\n], SignatureContent);\nexports.SignatureContent = SignatureContent;\n//# sourceMappingURL=SignatureContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEventNamespaceFromObject = exports.EventBus = void 0;\nclass EventBus {\n}\nexports.EventBus = EventBus;\nfunction getEventNamespaceFromObject(targetObject) {\n return targetObject.namespace;\n}\nexports.getEventNamespaceFromObject = getEventNamespaceFromObject;\n//# sourceMappingURL=EventBus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionTargetInfo = void 0;\nclass SubscriptionTargetInfo {\n namespace;\n constructor(namespace) {\n this.namespace = namespace;\n }\n static from(target) {\n if (target instanceof Function) {\n return new ConstructorSubscriptionTargetInfo(target);\n }\n return new NamespaceSubscriptionTargetInfo(target);\n }\n}\nexports.SubscriptionTargetInfo = SubscriptionTargetInfo;\nclass ConstructorSubscriptionTargetInfo extends SubscriptionTargetInfo {\n constructorFunction;\n constructor(constructorFunction) {\n super(getEventNamespaceFromClass(constructorFunction));\n this.constructorFunction = constructorFunction;\n }\n isCompatibleWith(event) {\n return event instanceof this.constructorFunction;\n }\n}\nclass NamespaceSubscriptionTargetInfo extends SubscriptionTargetInfo {\n constructor(namespace) {\n super(namespace);\n }\n isCompatibleWith(_event) {\n return true;\n }\n}\nfunction getEventNamespaceFromClass(targetClass) {\n return targetClass.namespace;\n}\n//# sourceMappingURL=SubscriptionTargetInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventEmitter2EventBus = void 0;\nconst eventemitter2_1 = require(\"eventemitter2\");\nrequire(\"reflect-metadata\");\nconst EventBus_1 = require(\"../EventBus\");\nconst SubscriptionTargetInfo_1 = require(\"../SubscriptionTargetInfo\");\nclass EventEmitter2EventBus {\n emitter;\n wrappers = new Map();\n nextId = 0;\n constructor() {\n this.emitter = new eventemitter2_1.EventEmitter2({ wildcard: true, maxListeners: 50, verboseMemoryLeak: true });\n }\n subscribe(subscriptionTarget, handler) {\n return this.registerHandler(subscriptionTarget, handler);\n }\n subscribeOnce(subscriptionTarget, handler) {\n return this.registerHandler(subscriptionTarget, handler, true);\n }\n unsubscribe(subscriptionTarget, subscriptionId) {\n return this.unregisterHandler(subscriptionTarget, subscriptionId);\n }\n registerHandler(subscriptionTarget, handler, isOneTimeHandler = false) {\n const subscriptionTargetInfo = SubscriptionTargetInfo_1.SubscriptionTargetInfo.from(subscriptionTarget);\n const handlerId = this.nextId++;\n const handlerWrapper = (event) => {\n if (!subscriptionTargetInfo.isCompatibleWith(event)) {\n return;\n }\n handler(event);\n if (isOneTimeHandler) {\n this.unsubscribe(subscriptionTarget, handlerId);\n }\n };\n this.wrappers.set(handlerId, handlerWrapper);\n this.emitter.on(subscriptionTargetInfo.namespace, handlerWrapper);\n return handlerId;\n }\n unregisterHandler(subscriptionTarget, handlerId) {\n const subscriptionTargetInfo = SubscriptionTargetInfo_1.SubscriptionTargetInfo.from(subscriptionTarget);\n const handlerWrapper = this.wrappers.get(handlerId);\n if (!handlerWrapper) {\n return false;\n }\n this.emitter.off(subscriptionTargetInfo.namespace, handlerWrapper);\n this.wrappers.delete(handlerId);\n return true;\n }\n publish(event) {\n const namespace = (0, EventBus_1.getEventNamespaceFromObject)(event);\n if (!namespace) {\n throw Error(\"The event needs a namespace. Use the EventNamespace-decorator in order to define a namespace for a event.\");\n }\n this.emitter.emit(namespace, event);\n }\n}\nexports.EventEmitter2EventBus = EventEmitter2EventBus;\n//# sourceMappingURL=EventEmitter2EventBus.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./EventBus\"), exports);\n__exportStar(require(\"./eventEmitter2/EventEmitter2EventBus\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataEvent = void 0;\nconst Event_1 = require(\"./Event\");\nclass DataEvent extends Event_1.Event {\n data;\n constructor(namespace, data) {\n super(namespace);\n this.data = data;\n }\n}\nexports.DataEvent = DataEvent;\n//# sourceMappingURL=DataEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Event = void 0;\nclass Event {\n namespace;\n constructor(namespace) {\n this.namespace = namespace;\n }\n}\nexports.Event = Event;\n//# sourceMappingURL=Event.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./DataEvent\"), exports);\n__exportStar(require(\"./Event\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./eventBus\"), exports);\n__exportStar(require(\"./events\"), exports);\n__exportStar(require(\"./logDecorator\"), exports);\n__exportStar(require(\"./measureExcecutionTime\"), exports);\n__exportStar(require(\"./randomString\"), exports);\n__exportStar(require(\"./Range\"), exports);\n__exportStar(require(\"./result\"), exports);\n__exportStar(require(\"./sleep\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.log = void 0;\n/* eslint-disable no-console */\nfunction log(_target, propertyName, propertyDesciptor) {\n const method = propertyDesciptor.value;\n propertyDesciptor.value = function (...args) {\n const params = args.map((a) => JSON.stringify(a)).join();\n try {\n const result = method.apply(this, args);\n const r = JSON.stringify(result);\n console.log(`Call: ${propertyName}(${params}) => ${r}`);\n return result;\n }\n catch (error) {\n console.log(error);\n throw error;\n }\n };\n return propertyDesciptor;\n}\nexports.log = log;\n//# sourceMappingURL=logDecorator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.measureExcecutionTime = void 0;\n/* eslint-disable no-console */\nfunction measureExcecutionTime(_target, _propertyName, propertyDesciptor) {\n const method = propertyDesciptor.value;\n propertyDesciptor.value = async function (...args) {\n const t0 = Date.now();\n const result = await method.apply(this, args);\n const t1 = Date.now();\n console.info(`Execution time: ${t1 - t0}ms`);\n return result;\n };\n return propertyDesciptor;\n}\nexports.measureExcecutionTime = measureExcecutionTime;\n//# sourceMappingURL=measureExcecutionTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomString = void 0;\nfunction randomString(length, characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\") {\n let result = \"\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nexports.randomString = randomString;\n//# sourceMappingURL=randomString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ApplicationError = void 0;\nclass ApplicationError extends Error {\n code;\n data;\n constructor(code, message, data) {\n super(message);\n this.code = code;\n this.data = data;\n }\n equals(error) {\n return this.code === error.code;\n }\n}\nexports.ApplicationError = ApplicationError;\n//# sourceMappingURL=ApplicationError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Result = void 0;\nclass Result {\n _isSuccess;\n _error;\n _value;\n constructor(isSuccess, value, error) {\n if (isSuccess && error) {\n throw new Error(\"InvalidOperation: A result cannot be successful and contain an error\");\n }\n if (!isSuccess && !error) {\n throw new Error(\"InvalidOperation: A failing result needs to contain an error\");\n }\n if (value !== undefined && !isSuccess) {\n throw new Error(\"InvalidOperation: A value is only useful in case of a success.\");\n }\n this._value = value;\n this._isSuccess = isSuccess;\n this._error = error;\n }\n get isSuccess() {\n return this._isSuccess;\n }\n get isError() {\n return !this._isSuccess;\n }\n get error() {\n return this._error;\n }\n get value() {\n if (!this.isSuccess) {\n throw new Error(\"Can't get the value of an error result. Use 'error' instead.\");\n }\n return this._value;\n }\n static ok(value) {\n return new Result(true, value);\n }\n static fail(error) {\n return new Result(false, undefined, error);\n }\n}\nexports.Result = Result;\n//# sourceMappingURL=Result.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ApplicationError\"), exports);\n__exportStar(require(\"./Result\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sleep = void 0;\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\nexports.sleep = sleep;\n//# sourceMappingURL=sleep.js.map","/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? value.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nameof = void 0;\nvar nameof_1 = require(\"./src/nameof\");\nObject.defineProperty(exports, \"nameof\", { enumerable: true, get: function () { return nameof_1.nameof; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nameof = void 0;\nfunction cleanseAssertionOperators(parsedName) {\n return parsedName.replace(/[?!]/g, \"\");\n}\nfunction nameof(nameFunction, options) {\n var fnStr = nameFunction.toString();\n // ES6 class name:\n // \"class ClassName { ...\"\n if (fnStr.startsWith(\"class \")\n // Theoretically could, for some ill-advised reason, be \"class => class.prop\".\n && !fnStr.startsWith(\"class =>\")) {\n return cleanseAssertionOperators(fnStr.substring(\"class \".length, fnStr.indexOf(\" {\")));\n }\n // ES6 prop selector:\n // \"x => x.prop\"\n if (fnStr.includes(\"=>\")) {\n return cleanseAssertionOperators(fnStr.substring(fnStr.indexOf(\".\") + 1));\n }\n // ES5 prop selector:\n // \"function (x) { return x.prop; }\"\n // webpack production build excludes the spaces and optional trailing semicolon:\n // \"function(x){return x.prop}\"\n // FYI - during local dev testing i observed carriage returns after the curly brackets as well\n // Note by maintainer: See https://github.com/IRCraziestTaxi/ts-simple-nameof/pull/13#issuecomment-567171802 for explanation of this regex.\n var matchRegex = /function\\s*\\(\\w+\\)\\s*\\{[\\r\\n\\s]*return\\s+\\w+\\.((\\w+\\.)*(\\w+))/i;\n var es5Match = fnStr.match(matchRegex);\n if (es5Match) {\n return (options && options.lastProp)\n ? es5Match[3]\n : es5Match[1];\n }\n // ES5 class name:\n // \"function ClassName() { ...\"\n if (fnStr.startsWith(\"function \")) {\n return cleanseAssertionOperators(fnStr.substring(\"function \".length, fnStr.indexOf(\"(\")));\n }\n // Invalid function.\n throw new Error(\"ts-simple-nameof: Invalid function.\");\n}\nexports.nameof = nameof;\n","module.exports = NMSHDContent;","module.exports = NMSHDCrypto;","module.exports = NMSHDTransport;","module.exports = TSServal;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(5590);\n"],"names":["Object","defineProperty","exports","value","buildInformation","ts_serval_1","content_1","crypto_1","transport_1","version","build","date","commit","dependencies","libraries","transport","crypto","serval","content","ConsumptionBaseController","constructor","controllerName","_parent","this","_log","TransportLoggerFactory","getLogger","log","parent","init","Promise","resolve","async","type","SerializableAsync","fromT","contentProperty","parsingPromises","i","l","length","item","error","TransportErrors","controller","contentPropertyUndefined","push","parseObject","all","ConsumptionController","modules_1","IncomingRequestsController_1","accountController","attributes","_attributes","drafts","_drafts","outgoingRequests","_outgoingRequests","incomingRequests","_incomingRequests","settings","_settings","sharedItems","_sharedItems","relationshipInfo","_relationshipInfo","ConsumptionAttributesController","DraftsController","processorRegistry","RequestItemProcessorRegistry","OutgoingRequestsController","IncomingRequestsController","SettingsController","SharedItemsController","RelationshipInfoController","ConsumptionControllerName","ConsumptionErrors","Attributes","attributeExists","name","CoreError","requests","Requests","requestsExists","id","RelationshipInfo","relationshipInfoExists","relationshipId","onboarding","Onboarding","attributeNotSet","attributeName","wrongTemplate","ConsumptionIds","attribute","CoreIdHelper","draft","sharedItem","response","request","setting","__createBinding","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","ts_simple_nameof_1","consumption_1","ConsumptionAttribute_1","super","getSynchronizedCollection","checkValid","now","CoreDate","utc","validFrom","validTo","isSameOrBefore","isAfter","findCurrent","sorted","sort","a","b","createdAt","compare","current","filterCurrent","items","result","find","nameof","c","toString","parseArray","ConsumptionAttribute","query","docs","getValidAttributes","reduce","getAttributeByName","updateAttribute","findOne","general","recordNotFound","update","delete","__decorate","decorators","target","key","d","arguments","r","Reflect","decorate","__metadata","v","metadata","CoreSynchronizable","technicalProperties","userdataProperties","metadataProperties","metadataModifiedAt","static","from","Attribute","generate","validate","serialize","nullable","any","Draft_1","read","Draft","lastModifiedAt","oldDraft","Error","String","RelationshipInfo_1","RelationshipInfoUtil_1","RelationshipInfoUtil","createInitialRelationshipInfo","exists","oldRelationshipInfo","SharedItem_1","RelationshipAttribute_1","relationship","relationships","getRelationship","Relationship","logWith","parseTemplateBody","parseCreationRequest","createRelationshipInfo","getTitle","attributeMap","title","peer","address","substring","thingName","givenName","familyName","gender","orgname","legalName","truncatedAddress","info","isPinned","getSharedItems","sharedBy","Map","relAttr","RelationshipAttribute","set","template","cache","cacheEmpty","RelationshipTemplate","body","isTemplator","identity","isMe","createdBy","sharedAt","sharedWith","sharedItemsWithSameReference","reference","missingItems","RelationshipTemplateBody","sharedAttributes","forEach","oldTemplateBody","JSONWrapper","JSONWrapperAsync","Array","isArray","SharedItem","expiresAt","createSharedItem","change","creationChange","isRequestor","RelationshipCreationChangeRequestBody","oldRequestBody","keys","CoreId","RelationshipTheme_1","description","theme","userTitle","userDescription","Boolean","RelationshipTheme","DecideRequestParametersValidator","ts_utils_1","params","Result","fail","ApplicationError","ok","ValidationResult_1","ConsumptionRequest_1","ConsumptionRequestStatus_1","ConsumptionResponse_1","CheckPrerequisitesOfIncomingRequestParameters_1","CompleteIncomingRequestParameters_1","AcceptRequestItemParameters_1","AcceptRequestParameters_1","DecideRequestItemGroupParameters_1","DecideRequestItemParameters_1","RejectRequestItemParameters_1","RejectRequestParameters_1","DecideRequestParametersValidator_1","ReceivedIncomingRequestParameters_1","RequireManualDecisionOfIncomingRequestParameters_1","RequestsController","decideRequestParamsValidator","consumptionRequests","parsedParams","ReceivedIncomingRequestParameters","infoFromSource","extractInfoFromSource","requestSourceObject","consumptionRequest","ConsumptionRequest","receivedRequest","status","ConsumptionRequestStatus","Open","isOwn","source","statusLog","Message","extractInfoFromMessage","extractInfoFromRelationshipTemplate","message","CheckPrerequisitesOfIncomingRequestParameters","getOrThrow","requestId","assertRequestStatus","RequestItem","processor","getProcessorForItem","checkPrerequisitesOfIncomingRequestItem","childItem","changeStatus","DecisionRequired","RequireManualDecisionOfIncomingRequestParameters","ManualDecisionRequired","AcceptRequestParameters","canDecide","RejectRequestParameters","action","itemResults","canDecideItems","ValidationResult","fromItems","requestItemGroup","validationResults","decideItemParams","requestItem","RequestItemGroup","groupResult","canDecideGroup","itemResult","canDecideItem","canAccept","isSuccess","decide","canReject","validationResult","consumptionResponse","createConsumptionResponse","Decided","requestItems","responseItems","decideItems","Response","ResponseResult","Accepted","Rejected","ConsumptionResponse","groupItemParam","ResponseItemGroup","responseMetadata","itemParam","DecideRequestItemParameters","decideItem","DecideRequestItemGroupParameters","decideGroup","AcceptRequestItemParameters","accept","RejectRequestItemParameters","reject","e","details","CompleteIncomingRequestParameters","responseSource","responseSourceObject","RelationshipChange","ConsumptionResponseSource","Completed","requestDoc","includes","join","unionTypes","DecideRequestParameters_1","DecideRequestParameters","customValidator","Request","GenericRequestItemProcessor","_requestItem","_params","success","AcceptResponseItem","ResponseItemResult","RejectResponseItem","canApplyIncomingResponseItem","_responseItem","canCreateOutgoingRequestItem","applyIncomingResponseItem","registry","registerProcessor","processorConstructor","itemConstructor","replaceProcessor","ErrorValidationResult","SuccessfulValidatonResult","isError","code","some","ConsumptionRequestSource_1","ConsumptionRequestSource","ConsumptionRequestStatusLogEntry_1","CoreSerializableAsync","newStatus","logEntry","ConsumptionRequestStatusLogEntry","oldStatus","sent","CoreAddress","CoreSerializable","ConsumptionResponseSource_1","CompleteOutgoingRequestParameters_1","CreateOutgoingRequestFromRelationshipCreationChangeParameters_1","CreateOutgoingRequestParameters_1","SentOutgoingRequestParameters_1","CreateOutgoingRequestParameters","innerResults","canCreateItems","results","canCreateItem","canCreateItemGroup","innerRequestItem","_create","canCreateResult","canCreate","CreateOutgoingRequestFromRelationshipCreationChangeParameters","_sent","_complete","SentOutgoingRequestParameters","getSourceType","sourceObject","CompleteOugoingRequestParameters","receivedResponse","canComplete","applyItems","responseItem","canApplyItem","responseGroup","j","groupRequestItem","groupResponseItem","applyItem","responseItemGroup","CompleteOugoingRequestParameters_1","Setting_1","Setting","parameters","scope","SettingScope","Identity","succeedsAt","succeedsItem","oldSetting","deletedAt","oldSharedItem","tags","Serializable","Signature_1","Signature","SignatureContent_1","signature","CryptoSignature","fromBase64","deserializeT","publicKey","CryptoHash","hash","CoreBuffer","fromUtf8","hashAlgorithm","toBase64","str","CoreCrypto","verify","toJSON","JSON","stringify","SignatureContent","Number","CoreHash","getEventNamespaceFromObject","EventBus","targetObject","namespace","SubscriptionTargetInfo","Function","ConstructorSubscriptionTargetInfo","NamespaceSubscriptionTargetInfo","constructorFunction","getEventNamespaceFromClass","targetClass","isCompatibleWith","event","_event","EventEmitter2EventBus","eventemitter2_1","EventBus_1","SubscriptionTargetInfo_1","emitter","wrappers","nextId","EventEmitter2","wildcard","maxListeners","verboseMemoryLeak","subscribe","subscriptionTarget","handler","registerHandler","subscribeOnce","unsubscribe","subscriptionId","unregisterHandler","isOneTimeHandler","subscriptionTargetInfo","handlerId","handlerWrapper","on","off","publish","emit","DataEvent","Event_1","Event","data","_target","propertyName","propertyDesciptor","method","args","map","apply","console","measureExcecutionTime","_propertyName","t0","Date","t1","randomString","characters","charactersLength","charAt","Math","floor","random","equals","_isSuccess","_error","_value","sleep","ms","setTimeout","_isArray","obj","nextTickSupported","process","nextTick","symbolsSupported","Symbol","reflectSupported","_setImmediate","setImmediate","ownKeys","arr","getOwnPropertyNames","getOwnPropertySymbols","_events","_conf","configure","conf","delimiter","_maxListeners","newListener","_newListener","removeListener","_removeListener","ignoreErrors","listenerTree","logPossibleMemoryLeak","count","eventName","errorMsg","emitWarning","trace","toArray","n","toObject","values","len","valuesCount","TargetObserver","options","_emitter","_listeners","_listenersCount","addEventListener","removeEventListener","addListener","TypeError","_on","_off","_observers","resolveOptions","schema","reducers","allowUnknown","computedOptions","assign","option","reducer","reason","constructorReducer","makeTypeReducer","types","firstType","secondType","kind","localEvent","observer","listeners","eventObj","original","concat","_onNewListener","_onRemoveListener","hasListeners","events","clearRefs","index","findTargetIndex","splice","functionReducer","objectFunctionReducer","makeCancelablePromise","executor","isCancelable","callbacks","subscriptionClosed","timer","promise","onCancel","cleanup","clearTimeout","timeout","overload","isFinite","cancel","_resolve","_reject","err","cb","observers","searchListenerTree","handlers","tree","typeLength","ns","dl","indexOf","slice","branch","xTree","xxTree","isolatedBranch","endReached","branches","currentType","nextType","growListenerTree","listener","prepend","unshift","warned","collectTreeEvents","root","asArray","branchName","path","isArrayPath","recursivelyGarbageCollect","flag","Listener","setupListener","promisify","objectify","_listener","_origin","context","then","_async","EventEmitter","listenTo","listen","isSingleReducer","split","stopListeningTo","matched","setMaxListeners","getMaxListeners","once","fn","_once","prependOnceListener","_many","many","ttl","prependMany","self","_all","containsSymbol","al","emitAsync","promises","prependListener","onAny","_onAny","prependAny","temp","returnValue","leafs","iLeaf","leaf","position","offAny","fns","removeAllListeners","allListeners","eventNames","nsAsArray","listenerCount","listenersAny","waitFor","filter","handleError","defineProperties","defaultMaxListeners","isNaN","errorListener","eventListener","factory","global","exporter","makeExporter","previous","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","supportsProto","__proto__","downLevel","HashMap","MakeDictionary","has","functionPrototype","getPrototypeOf","usePolyfill","env","_Map","entries","CreateMapPolyfill","_Set","Set","CreateSetPolyfill","Metadata","WeakMap","CreateWeakMapPolyfill","propertyKey","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","metadataKey","metadataValue","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","size","targetMetadata","decorated","descriptor","O","P","Create","MetadataKey","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","parentKeys","_i","ownKeys_1","add","_a","parentKeys_1","GetIterator","next","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","x","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","OrdinaryToPrimitive","toString_1","IsCallable","valueOf","toString_2","argument","ToString","V","func","iterResult","done","f","proto","prototypeProto","cacheSentinel","arraySentinel","MapIterator","selector","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","_find","clear","getKey","getValue","getEntry","insert","_","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","GenRandomBytes","Uint8Array","getRandomValues","msCrypto","offset","byte","toLowerCase","__","nameof_1","cleanseAssertionOperators","parsedName","replace","nameFunction","fnStr","startsWith","es5Match","match","lastProp","module","NMSHDContent","NMSHDCrypto","NMSHDTransport","TSServal","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"nmshd.consumption.min.js","mappings":"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","sources":["webpack://NMSHDConsumption/./dist/buildInformation.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionBaseController.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionController.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionControllerName.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionErrors.js","webpack://NMSHDConsumption/./dist/consumption/ConsumptionIds.js","webpack://NMSHDConsumption/./dist/consumption/index.js","webpack://NMSHDConsumption/./dist/index.js","webpack://NMSHDConsumption/./dist/modules/attributes/ConsumptionAttributesController.js","webpack://NMSHDConsumption/./dist/modules/attributes/local/ConsumptionAttribute.js","webpack://NMSHDConsumption/./dist/modules/drafts/DraftsController.js","webpack://NMSHDConsumption/./dist/modules/drafts/local/Draft.js","webpack://NMSHDConsumption/./dist/modules/index.js","webpack://NMSHDConsumption/./dist/modules/relationships/RelationshipInfoController.js","webpack://NMSHDConsumption/./dist/modules/relationships/RelationshipInfoUtil.js","webpack://NMSHDConsumption/./dist/modules/relationships/local/RelationshipAttribute.js","webpack://NMSHDConsumption/./dist/modules/relationships/local/RelationshipInfo.js","webpack://NMSHDConsumption/./dist/modules/relationships/local/RelationshipTheme.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/DecideRequestParametersValidator.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/IncomingRequestsController.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/DecideRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/decide/RequestItemDecision.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js","webpack://NMSHDConsumption/./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js","webpack://NMSHDConsumption/./dist/modules/requests/itemProcessors/ValidationResult.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionRequest.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionRequestStatus.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionRequestStatusLogEntry.js","webpack://NMSHDConsumption/./dist/modules/requests/local/ConsumptionResponse.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/OutgoingRequestsController.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js","webpack://NMSHDConsumption/./dist/modules/settings/SettingsController.js","webpack://NMSHDConsumption/./dist/modules/settings/local/Setting.js","webpack://NMSHDConsumption/./dist/modules/sharedItems/SharedItemsController.js","webpack://NMSHDConsumption/./dist/modules/sharedItems/local/SharedItem.js","webpack://NMSHDConsumption/./dist/modules/signatures/Signature.js","webpack://NMSHDConsumption/./dist/modules/signatures/SignatureContent.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/Range.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/EventBus.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/SubscriptionTargetInfo.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/eventEmitter2/EventEmitter2EventBus.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/eventBus/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/events/DataEvent.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/events/Event.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/events/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/logDecorator.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/measureExcecutionTime.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/randomString.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/result/ApplicationError.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/result/Result.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/result/index.js","webpack://NMSHDConsumption/./node_modules/@js-soft/ts-utils/dist/sleep.js","webpack://NMSHDConsumption/./node_modules/eventemitter2/lib/eventemitter2.js","webpack://NMSHDConsumption/./node_modules/reflect-metadata/Reflect.js","webpack://NMSHDConsumption/./node_modules/ts-simple-nameof/index.js","webpack://NMSHDConsumption/./node_modules/ts-simple-nameof/src/nameof.js","webpack://NMSHDConsumption/external var \"NMSHDContent\"","webpack://NMSHDConsumption/external var \"NMSHDCrypto\"","webpack://NMSHDConsumption/external var \"NMSHDTransport\"","webpack://NMSHDConsumption/external var \"TSServal\"","webpack://NMSHDConsumption/webpack/bootstrap","webpack://NMSHDConsumption/webpack/startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildInformation = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst crypto_1 = require(\"@nmshd/crypto\");\nconst transport_1 = require(\"@nmshd/transport\");\nexports.buildInformation = {\n version: \"2.0.0-alpha.4\",\n build: \"22\",\n date: \"2022-04-28T10:14:47+00:00\",\n commit: \"f393644bb4ed077b45543c3a281c5c53052704f2\",\n dependencies: {},\n libraries: {\n transport: transport_1.buildInformation,\n crypto: crypto_1.buildInformation,\n serval: ts_serval_1.buildInformation,\n content: content_1.buildInformation\n }\n};\n//# sourceMappingURL=buildInformation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionBaseController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nclass ConsumptionBaseController {\n constructor(controllerName, _parent) {\n this._parent = _parent;\n this._log = transport_1.TransportLoggerFactory.getLogger(controllerName);\n }\n get log() {\n return this._log;\n }\n get parent() {\n return this._parent;\n }\n init() {\n return Promise.resolve(this);\n }\n async parseArray(values, type) {\n const parsePromises = values.map((v) => type.from(v));\n return await Promise.all(parsePromises);\n }\n}\nexports.ConsumptionBaseController = ConsumptionBaseController;\n//# sourceMappingURL=ConsumptionBaseController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionController = void 0;\nconst modules_1 = require(\"../modules\");\nconst IncomingRequestsController_1 = require(\"../modules/requests/incoming/IncomingRequestsController\");\nclass ConsumptionController {\n constructor(transport, accountController) {\n this.transport = transport;\n this.accountController = accountController;\n }\n get attributes() {\n return this._attributes;\n }\n get drafts() {\n return this._drafts;\n }\n get outgoingRequests() {\n return this._outgoingRequests;\n }\n get incomingRequests() {\n return this._incomingRequests;\n }\n get settings() {\n return this._settings;\n }\n get sharedItems() {\n return this._sharedItems;\n }\n get relationshipInfo() {\n return this._relationshipInfo;\n }\n async init(requestItemProcessors = []) {\n this._attributes = await new modules_1.ConsumptionAttributesController(this).init();\n this._drafts = await new modules_1.DraftsController(this).init();\n const processorRegistry = new modules_1.RequestItemProcessorRegistry(requestItemProcessors);\n this._outgoingRequests = await new modules_1.OutgoingRequestsController(this, processorRegistry).init();\n this._incomingRequests = await new IncomingRequestsController_1.IncomingRequestsController(this, processorRegistry).init();\n this._settings = await new modules_1.SettingsController(this).init();\n this._sharedItems = await new modules_1.SharedItemsController(this).init();\n this._relationshipInfo = await new modules_1.RelationshipInfoController(this).init();\n return this;\n }\n}\nexports.ConsumptionController = ConsumptionController;\n//# sourceMappingURL=ConsumptionController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionControllerName = void 0;\nvar ConsumptionControllerName;\n(function (ConsumptionControllerName) {\n ConsumptionControllerName[\"ConsumptionAttributesController\"] = \"ConsumptionAttributesController\";\n ConsumptionControllerName[\"DraftsController\"] = \"DraftsController\";\n ConsumptionControllerName[\"RelationshipInfoController\"] = \"RelationshipInfoController\";\n ConsumptionControllerName[\"SingleRelationshipController\"] = \"SingleRelationshipController\";\n ConsumptionControllerName[\"OnboardingFlowController\"] = \"OnboardingFlowController\";\n ConsumptionControllerName[\"OffboardingFlowController\"] = \"OffboardingFlowController\";\n ConsumptionControllerName[\"RequestsController\"] = \"Requestsontroller\";\n ConsumptionControllerName[\"SettingsController\"] = \"SettingsController\";\n ConsumptionControllerName[\"SharedItemsController\"] = \"SharedItemsController\";\n})(ConsumptionControllerName = exports.ConsumptionControllerName || (exports.ConsumptionControllerName = {}));\n//# sourceMappingURL=ConsumptionControllerName.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionErrors = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nclass Attributes {\n attributeExists(name) {\n return new transport_1.CoreError(\"error.consumption.attributes.attributeExists\", `Attribute with name ${name} already exists. Please use succeed instead.`);\n }\n}\nclass Requests {\n requestsExists(id) {\n return new transport_1.CoreError(\"error.consumption.requests.requestExists\", `Request with id ${id} already exists and can't be created.`);\n }\n}\nclass RelationshipInfo {\n relationshipInfoExists(relationshipId) {\n return new transport_1.CoreError(\"error.consumption.relationshipInfos.relationshipInfoExists\", `RelationshipInfo for Relationship ${relationshipId} already exists.`);\n }\n}\nclass Onboarding {\n attributeNotSet(attributeName) {\n return new transport_1.CoreError(\"error.consumption.onboarding.attributeNotSet\", `No attribute with name ${attributeName} set but was required to be shared.`);\n }\n wrongTemplate() {\n return new transport_1.CoreError(\"error.consumption.onboarding.wrongTemplate\", \"The given template is in the wrong format.\");\n }\n}\nclass ConsumptionErrors {\n}\nexports.ConsumptionErrors = ConsumptionErrors;\nConsumptionErrors.attributes = new Attributes();\nConsumptionErrors.requests = new Requests();\nConsumptionErrors.relationshipInfo = new RelationshipInfo();\nConsumptionErrors.onboarding = new Onboarding();\n//# sourceMappingURL=ConsumptionErrors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionIds = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nclass ConsumptionIds {\n}\nexports.ConsumptionIds = ConsumptionIds;\nConsumptionIds.attribute = new transport_1.CoreIdHelper(\"CNSATT\");\nConsumptionIds.draft = new transport_1.CoreIdHelper(\"CNSDRF\");\nConsumptionIds.relationshipInfo = new transport_1.CoreIdHelper(\"CNSRIN\");\nConsumptionIds.sharedItem = new transport_1.CoreIdHelper(\"CNSSIT\");\nConsumptionIds.response = new transport_1.CoreIdHelper(\"CNSRES\");\nConsumptionIds.request = new transport_1.CoreIdHelper(\"CNSREQ\");\nConsumptionIds.setting = new transport_1.CoreIdHelper(\"CNSSET\");\n//# sourceMappingURL=ConsumptionIds.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ConsumptionBaseController\"), exports);\n__exportStar(require(\"./ConsumptionControllerName\"), exports);\n__exportStar(require(\"./ConsumptionErrors\"), exports);\n__exportStar(require(\"./ConsumptionIds\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./buildInformation\"), exports);\n__exportStar(require(\"./consumption/ConsumptionController\"), exports);\n__exportStar(require(\"./consumption/ConsumptionIds\"), exports);\n__exportStar(require(\"./modules\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionAttributesController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nconst consumption_1 = require(\"../../consumption\");\nconst ConsumptionAttribute_1 = require(\"./local/ConsumptionAttribute\");\nclass ConsumptionAttributesController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.ConsumptionAttributesController, parent);\n }\n async init() {\n await super.init();\n this.attributes = await this.parent.accountController.getSynchronizedCollection(\"Attributes\");\n return this;\n }\n checkValid(attribute) {\n const now = transport_1.CoreDate.utc();\n if (!attribute.content.validFrom && !attribute.content.validTo) {\n return true;\n }\n else if (attribute.content.validFrom &&\n !attribute.content.validTo &&\n attribute.content.validFrom.isSameOrBefore(now)) {\n return true;\n }\n else if (!attribute.content.validFrom &&\n attribute.content.validTo &&\n attribute.content.validTo.isAfter(now)) {\n return true;\n }\n else if (attribute.content.validFrom &&\n attribute.content.validTo &&\n attribute.content.validFrom.isSameOrBefore(now) &&\n attribute.content.validTo.isAfter(now)) {\n return true;\n }\n return false;\n }\n findCurrent(attributes) {\n const sorted = attributes.sort((a, b) => {\n return a.createdAt.compare(b.createdAt);\n });\n let current;\n for (const attribute of sorted) {\n if (this.checkValid(attribute)) {\n current = attribute;\n }\n }\n return current;\n }\n filterCurrent(attributes) {\n const sorted = attributes.sort((a, b) => {\n return a.createdAt.compare(b.createdAt);\n });\n const items = [];\n for (const attribute of sorted) {\n if (this.checkValid(attribute)) {\n items.push(attribute);\n }\n }\n return items;\n }\n async getAttribute(id) {\n const result = await this.attributes.find({\n [(0, ts_simple_nameof_1.nameof)((c) => c.id)]: id.toString()\n });\n const attributes = await this.parseArray(result, ConsumptionAttribute_1.ConsumptionAttribute);\n return this.findCurrent(attributes);\n }\n async getAttributeByName(name) {\n const result = await this.attributes.find({\n [`${(0, ts_simple_nameof_1.nameof)((c) => c.content)}.${(0, ts_simple_nameof_1.nameof)((a) => a.name)}`]: name\n });\n const attributes = await this.parseArray(result, ConsumptionAttribute_1.ConsumptionAttribute);\n return this.findCurrent(attributes);\n }\n async getAttributeHistoryByName(name) {\n const result = await this.attributes.find({\n [`${(0, ts_simple_nameof_1.nameof)((c) => c.content)}.${(0, ts_simple_nameof_1.nameof)((a) => a.name)}`]: name\n });\n const attributes = await this.parseArray(result, ConsumptionAttribute_1.ConsumptionAttribute);\n const sorted = attributes.sort((a, b) => {\n return a.createdAt.compare(b.createdAt);\n });\n return sorted;\n }\n async getAttributes(query) {\n const items = await this.attributes.find(query);\n return await this.parseArray(items, ConsumptionAttribute_1.ConsumptionAttribute);\n }\n async getValidAttributes(query) {\n const docs = await this.attributes.find(query);\n const items = await this.parseArray(docs, ConsumptionAttribute_1.ConsumptionAttribute);\n return this.filterCurrent(items);\n }\n async getAttributesByName(query) {\n const attributes = await this.getValidAttributes(query);\n const mapper = (result, attribute) => {\n result[attribute.content.name] = attribute;\n return result;\n };\n return attributes.reduce(mapper, {});\n }\n async createAttribute(attribute) {\n const current = await this.getAttributeByName(attribute.content.name);\n if (current) {\n throw consumption_1.ConsumptionErrors.attributes.attributeExists(attribute.content.name);\n }\n await this.attributes.create(attribute);\n return attribute;\n }\n async succeedAttribute(attribute, validFrom) {\n const current = await this.getAttributeByName(attribute.content.name);\n if (current && !validFrom) {\n validFrom = transport_1.CoreDate.utc();\n }\n if (current) {\n attribute.content.validFrom = validFrom;\n current.content.validTo = validFrom;\n await this.updateAttribute(current);\n }\n await this.attributes.create(attribute);\n return attribute;\n }\n async updateAttribute(attribute) {\n const current = await this.attributes.findOne({\n [(0, ts_simple_nameof_1.nameof)((c) => c.id)]: attribute.id.toString()\n });\n if (!current) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionAttribute_1.ConsumptionAttribute, attribute.id.toString());\n }\n await this.attributes.update(current, attribute);\n return attribute;\n }\n async deleteAttribute(attribute) {\n await this.attributes.delete(attribute);\n }\n}\nexports.ConsumptionAttributesController = ConsumptionAttributesController;\n//# sourceMappingURL=ConsumptionAttributesController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionAttribute = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nconst consumption_1 = require(\"../../../consumption\");\nlet ConsumptionAttribute = class ConsumptionAttribute extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.createdAt)\n ];\n this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.content)];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static from(value) {\n return this.fromAny(value);\n }\n static async fromAttribute(attribute) {\n return this.from({\n content: content_1.Attribute.from(attribute),\n id: await consumption_1.ConsumptionIds.attribute.generate(),\n createdAt: transport_1.CoreDate.utc()\n });\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)({ type: content_1.Attribute }),\n __metadata(\"design:type\", content_1.Attribute)\n], ConsumptionAttribute.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionAttribute.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], ConsumptionAttribute.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionAttribute.prototype, \"metadataModifiedAt\", void 0);\nConsumptionAttribute = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionAttribute\")\n], ConsumptionAttribute);\nexports.ConsumptionAttribute = ConsumptionAttribute;\n//# sourceMappingURL=ConsumptionAttribute.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DraftsController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst Draft_1 = require(\"./local/Draft\");\nclass DraftsController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.DraftsController, parent);\n }\n async init() {\n await super.init();\n this.drafts = await this.parent.accountController.getSynchronizedCollection(\"Drafts\");\n return this;\n }\n async getDraft(id) {\n const result = await this.drafts.read(id.toString());\n return result ? Draft_1.Draft.from(result) : undefined;\n }\n async getDrafts(query) {\n const items = await this.drafts.find(query);\n return await this.parseArray(items, Draft_1.Draft);\n }\n async createDraft(content, type = \"\") {\n const draft = Draft_1.Draft.from({\n id: await consumption_1.ConsumptionIds.draft.generate(),\n content: content,\n createdAt: new transport_1.CoreDate(),\n lastModifiedAt: new transport_1.CoreDate(),\n type: type\n });\n await this.drafts.create(draft);\n return draft;\n }\n async updateDraft(draft) {\n const oldDraft = await this.drafts.read(draft.id.toString());\n if (!oldDraft) {\n throw new Error(\"Draft Not Found\");\n }\n await this.drafts.update(oldDraft, draft);\n }\n async deleteDraft(draft) {\n await this.drafts.delete(draft);\n }\n}\nexports.DraftsController = DraftsController;\n//# sourceMappingURL=DraftsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Draft = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nlet Draft = class Draft extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.type),\n (0, ts_simple_nameof_1.nameof)((r) => r.createdAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.lastModifiedAt)\n ];\n this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.content)];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], Draft.prototype, \"type\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Draft.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Draft.prototype, \"lastModifiedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", ts_serval_1.Serializable)\n], Draft.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], Draft.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Draft.prototype, \"metadataModifiedAt\", void 0);\nDraft = __decorate([\n (0, ts_serval_1.type)(\"Draft\")\n], Draft);\nexports.Draft = Draft;\n//# sourceMappingURL=Draft.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./attributes/ConsumptionAttributesController\"), exports);\n__exportStar(require(\"./attributes/local/ConsumptionAttribute\"), exports);\n__exportStar(require(\"./drafts/DraftsController\"), exports);\n__exportStar(require(\"./drafts/local/Draft\"), exports);\n__exportStar(require(\"./relationships/local/RelationshipAttribute\"), exports);\n__exportStar(require(\"./relationships/local/RelationshipInfo\"), exports);\n__exportStar(require(\"./relationships/local/RelationshipTheme\"), exports);\n__exportStar(require(\"./relationships/RelationshipInfoController\"), exports);\n__exportStar(require(\"./requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/complete/CompleteIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/AcceptRequestItemParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/DecideRequestItemGroupParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/DecideRequestItemParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/DecideRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/RejectRequestItemParameters\"), exports);\n__exportStar(require(\"./requests/incoming/decide/RequestItemDecision\"), exports);\n__exportStar(require(\"./requests/incoming/DecideRequestParametersValidator\"), exports);\n__exportStar(require(\"./requests/incoming/IncomingRequestsController\"), exports);\n__exportStar(require(\"./requests/incoming/received/ReceivedIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters\"), exports);\n__exportStar(require(\"./requests/itemProcessors/GenericRequestItemProcessor\"), exports);\n__exportStar(require(\"./requests/itemProcessors/RequestItemProcessorRegistry\"), exports);\n__exportStar(require(\"./requests/itemProcessors/ValidationResult\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionRequest\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionRequestStatus\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionRequestStatusLogEntry\"), exports);\n__exportStar(require(\"./requests/local/ConsumptionResponse\"), exports);\n__exportStar(require(\"./requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters\"), exports);\n__exportStar(require(\"./requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters\"), exports);\n__exportStar(require(\"./requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters\"), exports);\n__exportStar(require(\"./requests/outgoing/OutgoingRequestsController\"), exports);\n__exportStar(require(\"./requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters\"), exports);\n__exportStar(require(\"./settings/local/Setting\"), exports);\n__exportStar(require(\"./settings/SettingsController\"), exports);\n__exportStar(require(\"./sharedItems/local/SharedItem\"), exports);\n__exportStar(require(\"./sharedItems/SharedItemsController\"), exports);\n__exportStar(require(\"./signatures/Signature\"), exports);\n__exportStar(require(\"./signatures/SignatureContent\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipInfoController = void 0;\nconst consumption_1 = require(\"../../consumption\");\nconst RelationshipInfo_1 = require(\"./local/RelationshipInfo\");\nconst RelationshipInfoUtil_1 = require(\"./RelationshipInfoUtil\");\nclass RelationshipInfoController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.RelationshipInfoController, parent);\n }\n async init() {\n await super.init();\n this.relationshipInfo = await this.parent.accountController.getSynchronizedCollection(\"RelationshipInfo\");\n return this;\n }\n async getRelationshipInfo(id) {\n const result = await this.relationshipInfo.read(id.toString());\n return result ? RelationshipInfo_1.RelationshipInfo.from(result) : undefined;\n }\n async getRelationshipInfoByRelationship(relationshipId) {\n const info = await new RelationshipInfoUtil_1.RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId);\n return info;\n /*\n // So far, do not store the relationshipInfo, as they wouldn't be updated correctly\n\n const result = await this.relationshipInfo.findOne({ relationshipId: relationshipId.toString() })\n\n if (result) {\n return await RelationshipInfo.from(result)\n }\n\n const info = await new RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId)\n await this.relationshipInfo.create(info)\n return info\n */\n }\n async getRelationshipInfos(query) {\n const items = await this.relationshipInfo.find(query);\n return await this.parseArray(items, RelationshipInfo_1.RelationshipInfo);\n }\n async createRelationshipInfo(relationshipInfo) {\n const exists = await this.relationshipInfo.exists({ relationshipId: relationshipInfo.relationshipId });\n if (exists) {\n throw consumption_1.ConsumptionErrors.relationshipInfo.relationshipInfoExists(relationshipInfo.relationshipId.toString());\n }\n await this.relationshipInfo.create(relationshipInfo);\n return relationshipInfo;\n }\n async updateRelationshipInfo(relationshipInfo) {\n const oldRelationshipInfo = await this.relationshipInfo.read(relationshipInfo.id.toString());\n if (!oldRelationshipInfo) {\n throw new Error(\"RelationshipInfo Not Found\");\n }\n await this.relationshipInfo.update(oldRelationshipInfo, relationshipInfo);\n }\n async deleteRelationshipInfo(relationshipInfo) {\n await this.relationshipInfo.delete(relationshipInfo);\n }\n}\nexports.RelationshipInfoController = RelationshipInfoController;\n//# sourceMappingURL=RelationshipInfoController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipInfoUtil = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst SharedItem_1 = require(\"../sharedItems/local/SharedItem\");\nconst RelationshipAttribute_1 = require(\"./local/RelationshipAttribute\");\nconst RelationshipInfo_1 = require(\"./local/RelationshipInfo\");\nclass RelationshipInfoUtil {\n constructor(parent) {\n this.parent = parent;\n this._log = transport_1.TransportLoggerFactory.getLogger(RelationshipInfoUtil);\n }\n get log() {\n return this._log;\n }\n async createInitialRelationshipInfo(id) {\n const relationship = await this.parent.accountController.relationships.getRelationship(id);\n if (!relationship) {\n throw transport_1.TransportErrors.general.recordNotFound(transport_1.Relationship, id.toString()).logWith(this._log);\n }\n await this.parseTemplateBody(relationship);\n await this.parseCreationRequest(relationship);\n return await this.createRelationshipInfo(relationship);\n }\n getTitle(relationship, attributeMap) {\n let title = relationship.peer.address.toString().substring(3, 9);\n const thingName = attributeMap.get(\"Thing.name\")?.content.value;\n const givenName = attributeMap.get(\"Person.givenName\")?.content.value;\n const familyName = attributeMap.get(\"Person.familyName\")?.content.value;\n const gender = attributeMap.get(\"Person.gender\")?.content.value;\n const orgname = attributeMap.get(\"Organization.name\")?.content.value;\n const legalName = attributeMap.get(\"Organization.legalname\")?.content.value;\n if (thingName) {\n title = thingName;\n }\n else if (givenName && familyName) {\n title = `${givenName} ${familyName}`;\n }\n else if (givenName) {\n title = givenName;\n }\n else if (familyName && gender) {\n title = `i18n://salutation.gender.${gender} ${familyName}`;\n }\n else if (orgname) {\n title = orgname;\n }\n else if (legalName) {\n title = legalName;\n }\n return title;\n }\n async createRelationshipInfo(relationship) {\n const peerAddress = relationship.peer.address;\n const truncatedAddress = peerAddress.address.substring(3, 9);\n const info = RelationshipInfo_1.RelationshipInfo.from({\n attributes: [],\n id: await consumption_1.ConsumptionIds.relationshipInfo.generate(),\n isPinned: false,\n relationshipId: relationship.id,\n title: truncatedAddress\n });\n // info = await this.parent.relationshipInfo.createRelationshipInfo(info)\n const items = await this.parent.sharedItems.getSharedItems({\n sharedBy: relationship.peer.address.toString()\n });\n const attributes = [];\n const attributeMap = new Map();\n for (const item of items) {\n if (item.content instanceof content_1.Attribute) {\n const relAttr = RelationshipAttribute_1.RelationshipAttribute.from({\n name: item.content.name,\n sharedItem: item.id,\n content: item.content\n });\n attributes.push(relAttr);\n attributeMap.set(relAttr.name, relAttr);\n }\n }\n info.attributes = attributes;\n const title = this.getTitle(relationship, attributeMap);\n info.title = title;\n // await this.parent.relationshipInfo.updateRelationshipInfo(info)\n return info;\n }\n async parseTemplateBody(relationship) {\n const template = relationship.cache.template;\n if (!template.cache) {\n throw transport_1.TransportErrors.general.cacheEmpty(transport_1.RelationshipTemplate, template.id.toString()).logWith(this._log);\n }\n const body = template.cache.content;\n const isTemplator = this.parent.accountController.identity.isMe(template.cache.createdBy);\n const sharedAt = template.cache.createdAt;\n const sharedBy = isTemplator ? this.parent.accountController.identity.address : relationship.peer.address;\n const sharedWith = isTemplator ? relationship.peer.address : this.parent.accountController.identity.address;\n const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({\n reference: template.id.toString()\n });\n const missingItems = [];\n if (body instanceof content_1.RelationshipTemplateBody) {\n const attributes = body.sharedAttributes;\n if (attributes) {\n if (sharedItemsWithSameReference.length !== attributes.length) {\n attributes.forEach((attribute) => {\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(attribute);\n }\n });\n }\n }\n }\n else {\n // Try to parse the old template format (without types)\n let oldTemplateBody = body;\n if (body instanceof ts_serval_1.JSONWrapper) {\n oldTemplateBody = oldTemplateBody.value;\n }\n if (oldTemplateBody?.attributes && Array.isArray(oldTemplateBody.attributes)) {\n if (sharedItemsWithSameReference.length !== oldTemplateBody.attributes.length) {\n oldTemplateBody.attributes.forEach((attribute) => {\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(content_1.Attribute.from({\n name: attribute.name,\n value: attribute.value\n }));\n }\n });\n }\n }\n }\n for (const attribute of missingItems) {\n const sharedItem = SharedItem_1.SharedItem.from({\n id: await consumption_1.ConsumptionIds.sharedItem.generate(),\n content: attribute,\n sharedAt: sharedAt,\n sharedBy: sharedBy,\n sharedWith: sharedWith,\n reference: template.id,\n expiresAt: attribute.validTo\n });\n await this.parent.sharedItems.createSharedItem(sharedItem);\n }\n }\n async parseCreationRequest(relationship) {\n const change = relationship.cache.creationChange;\n const request = change.request;\n const body = request.content;\n const isRequestor = this.parent.accountController.identity.isMe(request.createdBy);\n const sharedAt = request.createdAt;\n const sharedBy = isRequestor ? this.parent.accountController.identity.address : relationship.peer.address;\n const sharedWith = isRequestor ? relationship.peer.address : this.parent.accountController.identity.address;\n const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({\n reference: change.id.toString()\n });\n const missingItems = [];\n if (body instanceof content_1.RelationshipCreationChangeRequestBody) {\n const attributes = body.sharedAttributes;\n if (attributes && attributes.length > 0) {\n if (sharedItemsWithSameReference.length !== attributes.length) {\n attributes.forEach((attribute) => {\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(attribute);\n }\n });\n }\n }\n }\n else {\n // Try to parse the old request format (without types)\n let oldRequestBody = body;\n if (body instanceof ts_serval_1.JSONWrapper) {\n oldRequestBody = oldRequestBody.value;\n }\n if (oldRequestBody?.attributes) {\n const keys = Object.keys(oldRequestBody.attributes);\n if (sharedItemsWithSameReference.length !== keys.length) {\n keys.forEach((key) => {\n const attribute = oldRequestBody.attributes[key];\n if (!sharedItemsWithSameReference.find(function (item) {\n const content = item.content;\n return content.name === attribute.name;\n })) {\n missingItems.push(content_1.Attribute.from({\n name: attribute.name,\n value: attribute.value\n }));\n }\n });\n }\n }\n }\n for (const attribute of missingItems) {\n const sharedItem = SharedItem_1.SharedItem.from({\n id: await consumption_1.ConsumptionIds.sharedItem.generate(),\n content: attribute,\n sharedAt: sharedAt,\n sharedBy: sharedBy,\n sharedWith: sharedWith,\n reference: change.id,\n expiresAt: attribute.validTo\n });\n await this.parent.sharedItems.createSharedItem(sharedItem);\n }\n }\n}\nexports.RelationshipInfoUtil = RelationshipInfoUtil;\n//# sourceMappingURL=RelationshipInfoUtil.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipAttribute = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet RelationshipAttribute = class RelationshipAttribute extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipAttribute.prototype, \"name\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", content_1.Attribute)\n], RelationshipAttribute.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], RelationshipAttribute.prototype, \"sharedItem\", void 0);\nRelationshipAttribute = __decorate([\n (0, ts_serval_1.type)(\"RelationshipAttribute\")\n], RelationshipAttribute);\nexports.RelationshipAttribute = RelationshipAttribute;\n//# sourceMappingURL=RelationshipAttribute.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar RelationshipInfo_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipInfo = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nconst consumption_1 = require(\"../../../consumption\");\nconst RelationshipAttribute_1 = require(\"./RelationshipAttribute\");\nconst RelationshipTheme_1 = require(\"./RelationshipTheme\");\nlet RelationshipInfo = RelationshipInfo_1 = class RelationshipInfo extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.relationshipId),\n (0, ts_simple_nameof_1.nameof)((r) => r.title),\n (0, ts_simple_nameof_1.nameof)((r) => r.description),\n (0, ts_simple_nameof_1.nameof)((r) => r.theme)\n ];\n this.userdataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.isPinned),\n (0, ts_simple_nameof_1.nameof)((r) => r.userTitle),\n (0, ts_simple_nameof_1.nameof)((r) => r.userDescription)\n ];\n }\n static async fromRelationship(relationship) {\n if (typeof relationship.metadata === \"undefined\") {\n return RelationshipInfo_1.from({\n id: await consumption_1.ConsumptionIds.relationshipInfo.generate(),\n relationshipId: relationship.id,\n attributes: [],\n isPinned: false,\n title: relationship.peer.address.address.substring(3, 9)\n });\n }\n return RelationshipInfo_1.from(relationship.metadata);\n }\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], RelationshipInfo.prototype, \"relationshipId\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)({ type: RelationshipAttribute_1.RelationshipAttribute }),\n __metadata(\"design:type\", Array)\n], RelationshipInfo.prototype, \"attributes\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Boolean)\n], RelationshipInfo.prototype, \"isPinned\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"userTitle\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"title\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"userDescription\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipInfo.prototype, \"description\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", RelationshipTheme_1.RelationshipTheme)\n], RelationshipInfo.prototype, \"theme\", void 0);\nRelationshipInfo = RelationshipInfo_1 = __decorate([\n (0, ts_serval_1.type)(\"RelationshipInfo\")\n], RelationshipInfo);\nexports.RelationshipInfo = RelationshipInfo;\n//# sourceMappingURL=RelationshipInfo.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelationshipTheme = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nlet RelationshipTheme = class RelationshipTheme extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"image\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"imageBar\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"backgroundColor\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], RelationshipTheme.prototype, \"foregroundColor\", void 0);\nRelationshipTheme = __decorate([\n (0, ts_serval_1.type)(\"RelationshipTheme\")\n], RelationshipTheme);\nexports.RelationshipTheme = RelationshipTheme;\n//# sourceMappingURL=RelationshipTheme.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecideRequestParametersValidator = void 0;\nconst ts_utils_1 = require(\"@js-soft/ts-utils\");\nclass DecideRequestParametersValidator {\n validate(params, request) {\n if (params.items.length !== request.content.items.length) {\n return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError(\"invalidNumberOfItems\", \"Number of items in Request and Response do not match\"));\n }\n return ts_utils_1.Result.ok(undefined);\n }\n}\nexports.DecideRequestParametersValidator = DecideRequestParametersValidator;\n//# sourceMappingURL=DecideRequestParametersValidator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IncomingRequestsController = void 0;\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../../consumption\");\nconst ValidationResult_1 = require(\"../itemProcessors/ValidationResult\");\nconst ConsumptionRequest_1 = require(\"../local/ConsumptionRequest\");\nconst ConsumptionRequestStatus_1 = require(\"../local/ConsumptionRequestStatus\");\nconst ConsumptionResponse_1 = require(\"../local/ConsumptionResponse\");\nconst CheckPrerequisitesOfIncomingRequestParameters_1 = require(\"./checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters\");\nconst CompleteIncomingRequestParameters_1 = require(\"./complete/CompleteIncomingRequestParameters\");\nconst InternalDecideRequestParameters_1 = require(\"./decide/InternalDecideRequestParameters\");\nconst RequestItemDecision_1 = require(\"./decide/RequestItemDecision\");\nconst DecideRequestParametersValidator_1 = require(\"./DecideRequestParametersValidator\");\nconst ReceivedIncomingRequestParameters_1 = require(\"./received/ReceivedIncomingRequestParameters\");\nconst RequireManualDecisionOfIncomingRequestParameters_1 = require(\"./requireManualDecision/RequireManualDecisionOfIncomingRequestParameters\");\nclass IncomingRequestsController extends consumption_1.ConsumptionBaseController {\n constructor(parent, processorRegistry) {\n super(consumption_1.ConsumptionControllerName.RequestsController, parent);\n this.processorRegistry = processorRegistry;\n this.decideRequestParamsValidator = new DecideRequestParametersValidator_1.DecideRequestParametersValidator();\n }\n async init() {\n await super.init();\n this.consumptionRequests = await this.parent.accountController.getSynchronizedCollection(\"Requests\");\n return this;\n }\n async received(params) {\n const parsedParams = ReceivedIncomingRequestParameters_1.ReceivedIncomingRequestParameters.from(params);\n const infoFromSource = this.extractInfoFromSource(parsedParams.requestSourceObject);\n const consumptionRequest = ConsumptionRequest_1.ConsumptionRequest.from({\n id: parsedParams.receivedRequest.id ?? (await transport_1.CoreId.generate()),\n createdAt: transport_1.CoreDate.utc(),\n status: ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open,\n content: parsedParams.receivedRequest,\n isOwn: false,\n peer: infoFromSource.peer,\n source: infoFromSource.source,\n statusLog: []\n });\n await this.consumptionRequests.create(consumptionRequest);\n return consumptionRequest;\n }\n extractInfoFromSource(source) {\n if (source instanceof transport_1.Message) {\n return this.extractInfoFromMessage(source);\n }\n return this.extractInfoFromRelationshipTemplate(source);\n }\n extractInfoFromMessage(message) {\n if (message.isOwn)\n throw new Error(\"Cannot create incoming Request from own Message\");\n return {\n peer: message.cache.createdBy,\n source: {\n reference: message.id,\n type: \"Message\"\n }\n };\n }\n extractInfoFromRelationshipTemplate(template) {\n if (template.isOwn)\n throw new Error(\"Cannot create incoming Request from own Relationship Template\");\n return {\n peer: template.cache.createdBy,\n source: {\n reference: template.id,\n type: \"RelationshipTemplate\"\n }\n };\n }\n async checkPrerequisites(params) {\n const parsedParams = CheckPrerequisitesOfIncomingRequestParameters_1.CheckPrerequisitesOfIncomingRequestParameters.from(params);\n const request = await this.getOrThrow(parsedParams.requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n for (const item of request.content.items) {\n if (item instanceof content_1.RequestItem) {\n const processor = this.processorRegistry.getProcessorForItem(item);\n const prerequisitesFulfilled = await processor.checkPrerequisitesOfIncomingRequestItem(item);\n if (!prerequisitesFulfilled) {\n return request;\n }\n }\n else {\n for (const childItem of item.items) {\n const processor = this.processorRegistry.getProcessorForItem(childItem);\n const prerequisitesFulfilled = await processor.checkPrerequisitesOfIncomingRequestItem(childItem);\n if (!prerequisitesFulfilled) {\n return request;\n }\n }\n }\n }\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired);\n await this.update(request);\n return request;\n }\n async requireManualDecision(params) {\n const parsedParams = RequireManualDecisionOfIncomingRequestParameters_1.RequireManualDecisionOfIncomingRequestParameters.from(params);\n const request = await this.getOrThrow(parsedParams.requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired);\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);\n await this.update(request);\n return request;\n }\n async canAccept(params) {\n return await this.canDecide({ ...params, decision: InternalDecideRequestParameters_1.RequestDecision.Accept });\n }\n async canReject(params) {\n return await this.canDecide({ ...params, decision: InternalDecideRequestParameters_1.RequestDecision.Reject });\n }\n async canDecide(params) {\n // syntactic validation\n InternalDecideRequestParameters_1.InternalDecideRequestParameters.from(params);\n const request = await this.getOrThrow(params.requestId);\n const validationResult = this.decideRequestParamsValidator.validate(params, request);\n if (!validationResult.isSuccess) {\n throw new Error(validationResult.error.message);\n }\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired, ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);\n const itemResults = await this.canDecideItems(params.items, request.content.items);\n return ValidationResult_1.ValidationResult.fromItems(itemResults);\n }\n async canDecideGroup(params, requestItemGroup) {\n const itemResults = await this.canDecideItems(params.items, requestItemGroup.items);\n return ValidationResult_1.ValidationResult.fromItems(itemResults);\n }\n async canDecideItems(params, items) {\n const validationResults = [];\n for (let i = 0; i < params.length; i++) {\n const decideItemParams = params[i];\n const requestItem = items[i];\n if (requestItem instanceof content_1.RequestItemGroup) {\n const groupResult = await this.canDecideGroup(decideItemParams, requestItem);\n validationResults.push(groupResult);\n }\n else {\n const itemResult = await this.canDecideItem(decideItemParams, requestItem);\n validationResults.push(itemResult);\n }\n }\n return validationResults;\n }\n async canDecideItem(params, requestItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n if (params.decision === RequestItemDecision_1.RequestItemDecision.Accept) {\n return await processor.canAccept(requestItem, params);\n }\n return await processor.canReject(requestItem, params);\n }\n async accept(params) {\n const canAccept = await this.canAccept(params);\n if (!canAccept.isSuccess()) {\n throw new Error(\"Cannot accept the Request with the given parameters. Call 'canAccept' to get more information.\");\n }\n return await this.decide({ ...params, decision: InternalDecideRequestParameters_1.RequestDecision.Accept });\n }\n async reject(params) {\n const canReject = await this.canReject(params);\n if (!canReject.isSuccess()) {\n throw new Error(\"Cannot reject the Request with the given parameters. Call 'canReject' to get more information.\");\n }\n return await this.decide({ ...params, decision: InternalDecideRequestParameters_1.RequestDecision.Reject });\n }\n async decide(params) {\n const consumptionRequest = await this.getOrThrow(params.requestId);\n this.assertRequestStatus(consumptionRequest, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired, ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);\n const consumptionResponse = await this.createConsumptionResponse(params, consumptionRequest);\n consumptionRequest.response = consumptionResponse;\n consumptionRequest.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Decided);\n await this.update(consumptionRequest);\n return consumptionRequest;\n }\n async createConsumptionResponse(params, request) {\n const requestItems = request.content.items;\n const responseItems = await this.decideItems(params.items, requestItems);\n const response = content_1.Response.from({\n result: params.decision === InternalDecideRequestParameters_1.RequestDecision.Accept ? content_1.ResponseResult.Accepted : content_1.ResponseResult.Rejected,\n requestId: request.id,\n items: responseItems\n });\n const consumptionResponse = ConsumptionResponse_1.ConsumptionResponse.from({\n content: response,\n createdAt: transport_1.CoreDate.utc()\n });\n return consumptionResponse;\n }\n async decideGroup(groupItemParam, requestItemGroup) {\n const items = (await this.decideItems(groupItemParam.items, requestItemGroup.items));\n const group = content_1.ResponseItemGroup.from({\n items: items,\n metadata: requestItemGroup.responseMetadata\n });\n return group;\n }\n async decideItems(params, requestItems) {\n const responseItems = [];\n for (let i = 0; i < params.length; i++) {\n const itemParam = params[i];\n const item = requestItems[i];\n if (item instanceof content_1.RequestItemGroup) {\n responseItems.push(await this.decideGroup(itemParam, item));\n }\n else {\n responseItems.push(await this.decideItem(itemParam, requestItems[i]));\n }\n }\n return responseItems;\n }\n async decideItem(params, requestItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n try {\n if (params.decision === RequestItemDecision_1.RequestItemDecision.Accept) {\n return await processor.accept(requestItem, params);\n }\n return await processor.reject(requestItem, params);\n }\n catch (e) {\n let details = \"\";\n if (e instanceof Error) {\n details = ` Details: ${e.message}`;\n }\n throw new Error(`An error occurred while processing a '${requestItem.constructor.name}'. You should contact the developer of this RequestItem.${details}}`);\n }\n }\n async complete(params) {\n const parsedParams = CompleteIncomingRequestParameters_1.CompleteIncomingRequestParameters.from(params);\n const request = await this.getOrThrow(parsedParams.requestId);\n if (request.isOwn) {\n throw new Error(\"Cannot decide own Request\");\n }\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Decided);\n let responseSource;\n if (parsedParams.responseSourceObject instanceof transport_1.Message) {\n responseSource = \"Message\";\n }\n else if (parsedParams.responseSourceObject instanceof transport_1.RelationshipChange) {\n responseSource = \"RelationshipChange\";\n }\n else {\n throw new Error(\"Unknown response source\");\n }\n request.response.source = ConsumptionResponse_1.ConsumptionResponseSource.from({\n type: responseSource,\n reference: parsedParams.responseSourceObject.id\n });\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Completed);\n await this.update(request);\n return request;\n }\n async get(id) {\n const requestDoc = await this.consumptionRequests.findOne({ id: id.toString(), isOwn: false });\n const request = requestDoc ? ConsumptionRequest_1.ConsumptionRequest.from(requestDoc) : undefined;\n return request;\n }\n async getOrThrow(id) {\n const request = await this.get(transport_1.CoreId.from(id));\n if (!request) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, id.toString());\n }\n return request;\n }\n async update(request) {\n const requestDoc = await this.consumptionRequests.findOne({ id: request.id.toString(), isOwn: false });\n if (!requestDoc) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, request.id.toString());\n }\n await this.consumptionRequests.update(requestDoc, request);\n }\n assertRequestStatus(request, ...status) {\n if (!status.includes(request.status)) {\n throw new Error(`Consumption Request has to be in status '${status.join(\"/\")}'.`);\n }\n }\n}\nexports.IncomingRequestsController = IncomingRequestsController;\n//# sourceMappingURL=IncomingRequestsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckPrerequisitesOfIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CheckPrerequisitesOfIncomingRequestParameters = class CheckPrerequisitesOfIncomingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], CheckPrerequisitesOfIncomingRequestParameters.prototype, \"requestId\", void 0);\nCheckPrerequisitesOfIncomingRequestParameters = __decorate([\n (0, ts_serval_1.type)(\"CheckPrerequisitesOfIncomingRequestParameters\")\n], CheckPrerequisitesOfIncomingRequestParameters);\nexports.CheckPrerequisitesOfIncomingRequestParameters = CheckPrerequisitesOfIncomingRequestParameters;\n//# sourceMappingURL=CheckPrerequisitesOfIncomingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompleteIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nclass CompleteIncomingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n}\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], CompleteIncomingRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)({ unionTypes: [transport_1.Message, transport_1.RelationshipChange] }),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Object)\n], CompleteIncomingRequestParameters.prototype, \"responseSourceObject\", void 0);\nexports.CompleteIncomingRequestParameters = CompleteIncomingRequestParameters;\n//# sourceMappingURL=CompleteIncomingRequestParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=AcceptRequestItemParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DecideRequestItemGroupParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DecideRequestItemParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DecideRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestDecision = exports.InternalDecideRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet InternalDecideRequestParameters = class InternalDecideRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], InternalDecideRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Array)\n], InternalDecideRequestParameters.prototype, \"items\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], InternalDecideRequestParameters.prototype, \"decision\", void 0);\nInternalDecideRequestParameters = __decorate([\n (0, ts_serval_1.type)(\"InternalDecideRequestParameters\")\n], InternalDecideRequestParameters);\nexports.InternalDecideRequestParameters = InternalDecideRequestParameters;\nvar RequestDecision;\n(function (RequestDecision) {\n RequestDecision[\"Accept\"] = \"Accept\";\n RequestDecision[\"Reject\"] = \"Reject\";\n})(RequestDecision = exports.RequestDecision || (exports.RequestDecision = {}));\n//# sourceMappingURL=InternalDecideRequestParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=RejectRequestItemParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestItemDecision = void 0;\nvar RequestItemDecision;\n(function (RequestItemDecision) {\n RequestItemDecision[\"Accept\"] = \"Accept\";\n RequestItemDecision[\"Reject\"] = \"Reject\";\n})(RequestItemDecision = exports.RequestItemDecision || (exports.RequestItemDecision = {}));\n//# sourceMappingURL=RequestItemDecision.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReceivedIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet ReceivedIncomingRequestParameters = class ReceivedIncomingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Request)\n], ReceivedIncomingRequestParameters.prototype, \"receivedRequest\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)({ unionTypes: [transport_1.Message, transport_1.RelationshipTemplate] }),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Object)\n], ReceivedIncomingRequestParameters.prototype, \"requestSourceObject\", void 0);\nReceivedIncomingRequestParameters = __decorate([\n (0, ts_serval_1.type)(\"ReceivedIncomingRequestParameters\")\n], ReceivedIncomingRequestParameters);\nexports.ReceivedIncomingRequestParameters = ReceivedIncomingRequestParameters;\n//# sourceMappingURL=ReceivedIncomingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireManualDecisionOfIncomingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nclass RequireManualDecisionOfIncomingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n}\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], RequireManualDecisionOfIncomingRequestParameters.prototype, \"requestId\", void 0);\nexports.RequireManualDecisionOfIncomingRequestParameters = RequireManualDecisionOfIncomingRequestParameters;\n//# sourceMappingURL=RequireManualDecisionOfIncomingRequestParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericRequestItemProcessor = void 0;\nconst content_1 = require(\"@nmshd/content\");\nconst ValidationResult_1 = require(\"./ValidationResult\");\nclass GenericRequestItemProcessor {\n checkPrerequisitesOfIncomingRequestItem(_requestItem) {\n return true;\n }\n canAccept(_requestItem, _params) {\n return ValidationResult_1.ValidationResult.success();\n }\n canReject(_requestItem, _params) {\n return ValidationResult_1.ValidationResult.success();\n }\n accept(requestItem, _params) {\n return content_1.AcceptResponseItem.from({\n result: content_1.ResponseItemResult.Accepted,\n metadata: requestItem.responseMetadata\n });\n }\n reject(requestItem, _params) {\n return content_1.RejectResponseItem.from({\n result: content_1.ResponseItemResult.Rejected,\n metadata: requestItem.responseMetadata\n });\n }\n canApplyIncomingResponseItem(_responseItem, _requestItem) {\n return ValidationResult_1.ValidationResult.success();\n }\n canCreateOutgoingRequestItem(_requestItem) {\n return ValidationResult_1.ValidationResult.success();\n }\n applyIncomingResponseItem(_responseItem, _requestItem) {\n // do nothing\n }\n}\nexports.GenericRequestItemProcessor = GenericRequestItemProcessor;\n//# sourceMappingURL=GenericRequestItemProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestItemProcessorRegistry = void 0;\nclass RequestItemProcessorRegistry {\n constructor(processors = []) {\n this.registry = {};\n for (const { itemConstructor, processorConstructor } of processors) {\n this.registerProcessor(processorConstructor, itemConstructor);\n }\n }\n registerProcessor(processorConstructor, itemConstructor) {\n if (this.registry.hasOwnProperty(itemConstructor.name)) {\n throw new Error(`There is already a processor registered for '${itemConstructor.name}''. Use 'replaceProcessorForType' if you want to replace it.`);\n }\n this.registry[itemConstructor.name] = processorConstructor;\n }\n replaceProcessor(processorConstructor, itemConstructor) {\n this.registry[itemConstructor.name] = processorConstructor;\n }\n getProcessorForItem(item) {\n const constructor = this.registry[item.constructor.name];\n if (!constructor) {\n throw new Error(`There was no processor registered for '${item.constructor.name}'.`);\n }\n return new constructor();\n }\n}\nexports.RequestItemProcessorRegistry = RequestItemProcessorRegistry;\n//# sourceMappingURL=RequestItemProcessorRegistry.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorValidationResult = exports.SuccessfulValidatonResult = exports.ValidationResult = void 0;\nclass ValidationResult {\n constructor(items) {\n this.items = items;\n }\n isSuccess() {\n return this instanceof SuccessfulValidatonResult;\n }\n isError() {\n return this instanceof ErrorValidationResult;\n }\n static success(items = []) {\n return new SuccessfulValidatonResult(items);\n }\n static error(code, message, items = []) {\n return new ErrorValidationResult(code, message, items);\n }\n static fromItems(items) {\n return items.some((r) => r.isError())\n ? ValidationResult.error(\"inheritedFromItem\", \"Some child items have errors.\", items)\n : ValidationResult.success(items);\n }\n}\nexports.ValidationResult = ValidationResult;\nclass SuccessfulValidatonResult extends ValidationResult {\n constructor(items) {\n super(items);\n }\n}\nexports.SuccessfulValidatonResult = SuccessfulValidatonResult;\nclass ErrorValidationResult extends ValidationResult {\n constructor(code, message, items) {\n super(items);\n this.code = code;\n this.message = message;\n }\n}\nexports.ErrorValidationResult = ErrorValidationResult;\n//# sourceMappingURL=ValidationResult.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionRequest = exports.ConsumptionRequestSource = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ConsumptionRequestStatus_1 = require(\"./ConsumptionRequestStatus\");\nconst ConsumptionRequestStatusLogEntry_1 = require(\"./ConsumptionRequestStatusLogEntry\");\nconst ConsumptionResponse_1 = require(\"./ConsumptionResponse\");\nlet ConsumptionRequestSource = class ConsumptionRequestSource extends transport_1.CoreSerializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequestSource.prototype, \"type\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], ConsumptionRequestSource.prototype, \"reference\", void 0);\nConsumptionRequestSource = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionRequestSource\")\n], ConsumptionRequestSource);\nexports.ConsumptionRequestSource = ConsumptionRequestSource;\nlet ConsumptionRequest = class ConsumptionRequest extends transport_1.CoreSynchronizable {\n changeStatus(newStatus) {\n const logEntry = ConsumptionRequestStatusLogEntry_1.ConsumptionRequestStatusLogEntry.from({\n createdAt: transport_1.CoreDate.utc(),\n oldStatus: this.status,\n newStatus\n });\n this.statusLog.push(logEntry);\n this.status = newStatus;\n }\n sent(source) {\n if (this.status !== ConsumptionRequestStatus_1.ConsumptionRequestStatus.Draft) {\n throw new Error(\"Consumption Request has to be in status 'Draft'.\");\n }\n this.source = source;\n this.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n }\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Boolean)\n], ConsumptionRequest.prototype, \"isOwn\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], ConsumptionRequest.prototype, \"peer\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionRequest.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Request)\n], ConsumptionRequest.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", ConsumptionRequestSource)\n], ConsumptionRequest.prototype, \"source\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", ConsumptionResponse_1.ConsumptionResponse)\n], ConsumptionRequest.prototype, \"response\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequest.prototype, \"status\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)({ type: ConsumptionRequestStatusLogEntry_1.ConsumptionRequestStatusLogEntry }),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", Array)\n], ConsumptionRequest.prototype, \"statusLog\", void 0);\nConsumptionRequest = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionRequest\")\n], ConsumptionRequest);\nexports.ConsumptionRequest = ConsumptionRequest;\n//# sourceMappingURL=ConsumptionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionRequestStatus = void 0;\nvar ConsumptionRequestStatus;\n(function (ConsumptionRequestStatus) {\n ConsumptionRequestStatus[\"Draft\"] = \"Draft\";\n ConsumptionRequestStatus[\"Open\"] = \"Open\";\n ConsumptionRequestStatus[\"DecisionRequired\"] = \"DecisionRequired\";\n ConsumptionRequestStatus[\"ManualDecisionRequired\"] = \"ManualDecisionRequired\";\n ConsumptionRequestStatus[\"Decided\"] = \"Decided\";\n ConsumptionRequestStatus[\"Completed\"] = \"Completed\";\n})(ConsumptionRequestStatus = exports.ConsumptionRequestStatus || (exports.ConsumptionRequestStatus = {}));\n//# sourceMappingURL=ConsumptionRequestStatus.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionRequestStatusLogEntry = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ConsumptionRequestStatus_1 = require(\"./ConsumptionRequestStatus\");\nlet ConsumptionRequestStatusLogEntry = class ConsumptionRequestStatusLogEntry extends transport_1.CoreSerializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionRequestStatusLogEntry.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequestStatusLogEntry.prototype, \"oldStatus\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionRequestStatusLogEntry.prototype, \"newStatus\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", Object)\n], ConsumptionRequestStatusLogEntry.prototype, \"data\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", String)\n], ConsumptionRequestStatusLogEntry.prototype, \"code\", void 0);\nConsumptionRequestStatusLogEntry = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionRequestStatusLogEntry\")\n], ConsumptionRequestStatusLogEntry);\nexports.ConsumptionRequestStatusLogEntry = ConsumptionRequestStatusLogEntry;\n//# sourceMappingURL=ConsumptionRequestStatusLogEntry.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsumptionResponse = exports.ConsumptionResponseSource = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet ConsumptionResponseSource = class ConsumptionResponseSource extends transport_1.CoreSerializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", String)\n], ConsumptionResponseSource.prototype, \"type\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], ConsumptionResponseSource.prototype, \"reference\", void 0);\nConsumptionResponseSource = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionResponseSource\")\n], ConsumptionResponseSource);\nexports.ConsumptionResponseSource = ConsumptionResponseSource;\nlet ConsumptionResponse = class ConsumptionResponse extends transport_1.CoreSerializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], ConsumptionResponse.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Response)\n], ConsumptionResponse.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)({ nullable: true }),\n __metadata(\"design:type\", ConsumptionResponseSource)\n], ConsumptionResponse.prototype, \"source\", void 0);\nConsumptionResponse = __decorate([\n (0, ts_serval_1.type)(\"ConsumptionResponse\")\n], ConsumptionResponse);\nexports.ConsumptionResponse = ConsumptionResponse;\n//# sourceMappingURL=ConsumptionResponse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OutgoingRequestsController = void 0;\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../../consumption\");\nconst ValidationResult_1 = require(\"../itemProcessors/ValidationResult\");\nconst ConsumptionRequest_1 = require(\"../local/ConsumptionRequest\");\nconst ConsumptionRequestStatus_1 = require(\"../local/ConsumptionRequestStatus\");\nconst ConsumptionResponse_1 = require(\"../local/ConsumptionResponse\");\nconst CompleteOutgoingRequestParameters_1 = require(\"./completeOutgoingRequest/CompleteOutgoingRequestParameters\");\nconst CreateOutgoingRequestFromRelationshipCreationChangeParameters_1 = require(\"./createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters\");\nconst CreateOutgoingRequestParameters_1 = require(\"./createOutgoingRequest/CreateOutgoingRequestParameters\");\nconst SentOutgoingRequestParameters_1 = require(\"./sentOutgoingRequest/SentOutgoingRequestParameters\");\nclass OutgoingRequestsController extends consumption_1.ConsumptionBaseController {\n constructor(parent, processorRegistry) {\n super(consumption_1.ConsumptionControllerName.RequestsController, parent);\n this.processorRegistry = processorRegistry;\n }\n async init() {\n await super.init();\n this.consumptionRequests = await this.parent.accountController.getSynchronizedCollection(\"Requests\");\n return this;\n }\n async canCreate(params) {\n const parsedParams = CreateOutgoingRequestParameters_1.CreateOutgoingRequestParameters.from(params);\n const innerResults = await this.canCreateItems(parsedParams.content.items);\n const result = ValidationResult_1.ValidationResult.fromItems(innerResults);\n return result;\n }\n async canCreateItems(items) {\n const results = [];\n for (const requestItem of items) {\n if (requestItem instanceof content_1.RequestItem) {\n const canCreateItem = await this.canCreateItem(requestItem);\n results.push(canCreateItem);\n }\n else {\n const result = await this.canCreateItemGroup(requestItem);\n results.push(result);\n }\n }\n return results;\n }\n async canCreateItem(requestItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n return await processor.canCreateOutgoingRequestItem(requestItem);\n }\n async canCreateItemGroup(requestItem) {\n const innerResults = [];\n for (const innerRequestItem of requestItem.items) {\n const canCreateItem = await this.canCreateItem(innerRequestItem);\n innerResults.push(canCreateItem);\n }\n const result = ValidationResult_1.ValidationResult.fromItems(innerResults);\n return result;\n }\n async create(params) {\n const parsedParams = CreateOutgoingRequestParameters_1.CreateOutgoingRequestParameters.from(params);\n const id = await consumption_1.ConsumptionIds.request.generate();\n parsedParams.content.id = id;\n const consumptionRequest = await this._create(id, parsedParams.content, parsedParams.peer);\n return consumptionRequest;\n }\n async _create(id, content, peer) {\n const canCreateResult = await this.canCreate({\n content,\n peer\n });\n if (canCreateResult.isError()) {\n throw new Error(canCreateResult.message);\n }\n const consumptionRequest = ConsumptionRequest_1.ConsumptionRequest.from({\n id: id,\n content: content,\n createdAt: transport_1.CoreDate.utc(),\n isOwn: true,\n peer: peer,\n status: ConsumptionRequestStatus_1.ConsumptionRequestStatus.Draft,\n statusLog: []\n });\n await this.consumptionRequests.create(consumptionRequest);\n return consumptionRequest;\n }\n async createFromRelationshipCreationChange(params) {\n const parsedParams = CreateOutgoingRequestFromRelationshipCreationChangeParameters_1.CreateOutgoingRequestFromRelationshipCreationChangeParameters.from(params);\n const peer = parsedParams.creationChange.request.createdBy;\n const id = parsedParams.creationChange.request.content.requestId;\n await this._create(id, parsedParams.template.cache.content, peer);\n await this._sent(id, parsedParams.template);\n const consumptionRequest = await this._complete(id, parsedParams.creationChange, parsedParams.creationChange.request.content);\n return consumptionRequest;\n }\n async sent(params) {\n const parsedParams = SentOutgoingRequestParameters_1.SentOutgoingRequestParameters.from(params);\n return await this._sent(parsedParams.requestId, parsedParams.requestSourceObject);\n }\n async _sent(requestId, requestSourceObject) {\n const request = await this.getOrThrow(requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Draft);\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n request.source = ConsumptionRequest_1.ConsumptionRequestSource.from({\n reference: requestSourceObject.id,\n type: this.getSourceType(requestSourceObject)\n });\n await this.update(request);\n return request;\n }\n getSourceType(sourceObject) {\n if (sourceObject instanceof transport_1.Message) {\n if (!sourceObject.isOwn) {\n throw new Error(\"Cannot create outgoing Request from a peer Message\");\n }\n return \"Message\";\n }\n else if (sourceObject instanceof transport_1.RelationshipTemplate) {\n if (!sourceObject.isOwn) {\n throw new Error(\"Cannot create outgoing Request from a peer Relationship Template\");\n }\n return \"RelationshipTemplate\";\n }\n throw new Error(\"The given sourceObject is not of a valid type. Valid types are 'Message' and 'RelationshipTemplate'.\");\n }\n async complete(params) {\n const parsedParams = CompleteOutgoingRequestParameters_1.CompleteOugoingRequestParameters.from(params);\n return await this._complete(parsedParams.requestId, parsedParams.responseSourceObject, parsedParams.receivedResponse);\n }\n async _complete(requestId, responseSourceObject, receivedResponse) {\n const request = await this.getOrThrow(requestId);\n this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.Open);\n const canComplete = await this.canComplete(request, receivedResponse);\n if (canComplete.isError()) {\n throw new Error(canComplete.message);\n }\n await this.applyItems(request.content.items, receivedResponse.items);\n let responseSource;\n if (responseSourceObject instanceof transport_1.Message) {\n responseSource = \"Message\";\n }\n else if (responseSourceObject instanceof transport_1.RelationshipChange) {\n responseSource = \"RelationshipChange\";\n }\n else {\n throw new Error(\"Invalid responseSourceObject\");\n }\n const consumptionResponse = ConsumptionResponse_1.ConsumptionResponse.from({\n content: receivedResponse,\n createdAt: transport_1.CoreDate.utc(),\n source: { reference: responseSourceObject.id, type: responseSource }\n });\n request.response = consumptionResponse;\n request.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Completed);\n await this.update(request);\n return request;\n }\n async canComplete(request, receivedResponse) {\n for (let i = 0; i < receivedResponse.items.length; i++) {\n const requestItem = request.content.items[i];\n if (requestItem instanceof content_1.RequestItem) {\n const responseItem = receivedResponse.items[i];\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n const canApplyItem = await processor.canApplyIncomingResponseItem(responseItem, requestItem);\n if (canApplyItem.isError()) {\n return canApplyItem;\n }\n }\n else if (requestItem instanceof content_1.RequestItemGroup) {\n const responseGroup = receivedResponse.items[i];\n for (let j = 0; j < requestItem.items.length; j++) {\n const groupRequestItem = requestItem.items[j];\n const groupResponseItem = responseGroup.items[j];\n const processor = this.processorRegistry.getProcessorForItem(groupRequestItem);\n const canApplyItem = await processor.canApplyIncomingResponseItem(groupResponseItem, groupRequestItem);\n if (canApplyItem.isError()) {\n return canApplyItem;\n }\n }\n }\n }\n return ValidationResult_1.ValidationResult.success();\n }\n async applyItems(requestItems, responseItems) {\n for (let i = 0; i < responseItems.length; i++) {\n const requestItem = requestItems[i];\n if (requestItem instanceof content_1.RequestItem) {\n const responseItem = responseItems[i];\n await this.applyItem(requestItem, responseItem);\n }\n else {\n const responseItemGroup = responseItems[i];\n await this.applyItems(requestItem.items, responseItemGroup.items);\n }\n }\n }\n async applyItem(requestItem, responseItem) {\n const processor = this.processorRegistry.getProcessorForItem(requestItem);\n await processor.applyIncomingResponseItem(responseItem, requestItem);\n }\n async get(id) {\n const requestDoc = await this.consumptionRequests.findOne({ id: id.toString(), isOwn: true });\n const request = requestDoc ? ConsumptionRequest_1.ConsumptionRequest.from(requestDoc) : undefined;\n return request;\n }\n async getOrThrow(id) {\n const request = await this.get(id);\n if (!request) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, id.toString());\n }\n return request;\n }\n async update(request) {\n const requestDoc = await this.consumptionRequests.findOne({ id: request.id.toString(), isOwn: true });\n if (!requestDoc) {\n throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, request.id.toString());\n }\n await this.consumptionRequests.update(requestDoc, request);\n }\n assertRequestStatus(request, ...status) {\n if (!status.includes(request.status)) {\n throw new Error(`Consumption Request has to be in status '${status.join(\"/\")}'.`);\n }\n }\n}\nexports.OutgoingRequestsController = OutgoingRequestsController;\n//# sourceMappingURL=OutgoingRequestsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompleteOugoingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CompleteOugoingRequestParameters = class CompleteOugoingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], CompleteOugoingRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.Message)\n], CompleteOugoingRequestParameters.prototype, \"responseSourceObject\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Response)\n], CompleteOugoingRequestParameters.prototype, \"receivedResponse\", void 0);\nCompleteOugoingRequestParameters = __decorate([\n (0, ts_serval_1.type)(\"CompleteOugoingRequestParameters\")\n], CompleteOugoingRequestParameters);\nexports.CompleteOugoingRequestParameters = CompleteOugoingRequestParameters;\n//# sourceMappingURL=CompleteOutgoingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateOutgoingRequestFromRelationshipCreationChangeParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CreateOutgoingRequestFromRelationshipCreationChangeParameters = class CreateOutgoingRequestFromRelationshipCreationChangeParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.RelationshipTemplate)\n], CreateOutgoingRequestFromRelationshipCreationChangeParameters.prototype, \"template\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.RelationshipChange)\n], CreateOutgoingRequestFromRelationshipCreationChangeParameters.prototype, \"creationChange\", void 0);\nCreateOutgoingRequestFromRelationshipCreationChangeParameters = __decorate([\n (0, ts_serval_1.type)(\"CreateOutgoingRequestFromRelationshipCreationChangeParameters\")\n], CreateOutgoingRequestFromRelationshipCreationChangeParameters);\nexports.CreateOutgoingRequestFromRelationshipCreationChangeParameters = CreateOutgoingRequestFromRelationshipCreationChangeParameters;\n//# sourceMappingURL=CreateOutgoingRequestFromRelationshipCreationChangeParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateOutgoingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst content_1 = require(\"@nmshd/content\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet CreateOutgoingRequestParameters = class CreateOutgoingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", content_1.Request)\n], CreateOutgoingRequestParameters.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], CreateOutgoingRequestParameters.prototype, \"peer\", void 0);\nCreateOutgoingRequestParameters = __decorate([\n (0, ts_serval_1.type)(\"CreateOutgoingRequestParameters\")\n], CreateOutgoingRequestParameters);\nexports.CreateOutgoingRequestParameters = CreateOutgoingRequestParameters;\n//# sourceMappingURL=CreateOutgoingRequestParameters.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SentOutgoingRequestParameters = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet SentOutgoingRequestParameters = class SentOutgoingRequestParameters extends ts_serval_1.Serializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SentOutgoingRequestParameters.prototype, \"requestId\", void 0);\n__decorate([\n (0, ts_serval_1.serialize)(),\n (0, ts_serval_1.validate)(),\n __metadata(\"design:type\", transport_1.Message)\n], SentOutgoingRequestParameters.prototype, \"requestSourceObject\", void 0);\nSentOutgoingRequestParameters = __decorate([\n (0, ts_serval_1.type)(\"SentOutgoingRequestParameters\")\n], SentOutgoingRequestParameters);\nexports.SentOutgoingRequestParameters = SentOutgoingRequestParameters;\n//# sourceMappingURL=SentOutgoingRequestParameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SettingsController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst Setting_1 = require(\"./local/Setting\");\nclass SettingsController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.SettingsController, parent);\n }\n async init() {\n await super.init();\n this.settings = await this.parent.accountController.getSynchronizedCollection(\"Settings\");\n return this;\n }\n async getSetting(id) {\n const result = await this.settings.read(id.toString());\n return result ? Setting_1.Setting.from(result) : undefined;\n }\n async getSettings(query) {\n const items = await this.settings.find(query);\n return await this.parseArray(items, Setting_1.Setting);\n }\n async createSetting(parameters) {\n const setting = Setting_1.Setting.from({\n id: await consumption_1.ConsumptionIds.setting.generate(),\n createdAt: transport_1.CoreDate.utc(),\n key: parameters.key,\n scope: parameters.scope ?? Setting_1.SettingScope.Identity,\n value: parameters.value,\n reference: parameters.reference,\n succeedsAt: parameters.succeedsAt,\n succeedsItem: parameters.succeedsItem\n });\n await this.settings.create(setting);\n return setting;\n }\n async updateSetting(setting) {\n const oldSetting = await this.settings.read(setting.id.toString());\n if (!oldSetting) {\n throw transport_1.TransportErrors.general.recordNotFound(Setting_1.Setting, setting.id.toString()).logWith(this._log);\n }\n await this.settings.update(oldSetting, setting);\n }\n async deleteSetting(setting) {\n await this.settings.delete(setting);\n }\n}\nexports.SettingsController = SettingsController;\n//# sourceMappingURL=SettingsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Setting = exports.SettingScope = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nvar SettingScope;\n(function (SettingScope) {\n SettingScope[\"Identity\"] = \"Identity\";\n SettingScope[\"Device\"] = \"Device\";\n SettingScope[\"Relationship\"] = \"Relationship\";\n})(SettingScope = exports.SettingScope || (exports.SettingScope = {}));\nlet Setting = class Setting extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.key),\n (0, ts_simple_nameof_1.nameof)((r) => r.scope),\n (0, ts_simple_nameof_1.nameof)((r) => r.reference),\n (0, ts_simple_nameof_1.nameof)((r) => r.createdAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.deletedAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsItem),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsAt)\n ];\n this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.value)];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], Setting.prototype, \"key\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", String)\n], Setting.prototype, \"scope\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], Setting.prototype, \"reference\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", ts_serval_1.Serializable)\n], Setting.prototype, \"value\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"createdAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"deletedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], Setting.prototype, \"succeedsItem\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"succeedsAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], Setting.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], Setting.prototype, \"metadataModifiedAt\", void 0);\nSetting = __decorate([\n (0, ts_serval_1.type)(\"Setting\")\n], Setting);\nexports.Setting = Setting;\n//# sourceMappingURL=Setting.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedItemsController = void 0;\nconst transport_1 = require(\"@nmshd/transport\");\nconst consumption_1 = require(\"../../consumption\");\nconst SharedItem_1 = require(\"./local/SharedItem\");\nclass SharedItemsController extends consumption_1.ConsumptionBaseController {\n constructor(parent) {\n super(consumption_1.ConsumptionControllerName.SharedItemsController, parent);\n }\n async init() {\n await super.init();\n this.sharedItems = await this.parent.accountController.getSynchronizedCollection(\"SharedItems\");\n return this;\n }\n async getSharedItem(id) {\n const result = await this.sharedItems.read(id.toString());\n return result ? SharedItem_1.SharedItem.from(result) : undefined;\n }\n async getSharedItems(query) {\n const items = await this.sharedItems.find(query);\n return await this.parseArray(items, SharedItem_1.SharedItem);\n }\n async createSharedItem(sharedItem) {\n await this.sharedItems.create(sharedItem);\n return sharedItem;\n }\n async updateSharedItem(sharedItem) {\n const oldSharedItem = await this.sharedItems.read(sharedItem.id.toString());\n if (!oldSharedItem) {\n throw transport_1.TransportErrors.general.recordNotFound(SharedItem_1.SharedItem, sharedItem.id.toString());\n }\n return await this.sharedItems.update(oldSharedItem, sharedItem);\n }\n async deleteSharedItem(sharedItem) {\n await this.sharedItems.delete(sharedItem);\n }\n}\nexports.SharedItemsController = SharedItemsController;\n//# sourceMappingURL=SharedItemsController.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedItem = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst ts_simple_nameof_1 = require(\"ts-simple-nameof\");\nlet SharedItem = class SharedItem extends transport_1.CoreSynchronizable {\n constructor() {\n super(...arguments);\n this.technicalProperties = [\n \"@type\",\n \"@context\",\n (0, ts_simple_nameof_1.nameof)((r) => r.tags),\n (0, ts_simple_nameof_1.nameof)((r) => r.sharedBy),\n (0, ts_simple_nameof_1.nameof)((r) => r.sharedWith),\n (0, ts_simple_nameof_1.nameof)((r) => r.sharedAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.reference),\n (0, ts_simple_nameof_1.nameof)((r) => r.content),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsItem),\n (0, ts_simple_nameof_1.nameof)((r) => r.succeedsAt),\n (0, ts_simple_nameof_1.nameof)((r) => r.expiresAt)\n ];\n this.metadataProperties = [\n (0, ts_simple_nameof_1.nameof)((r) => r.metadata),\n (0, ts_simple_nameof_1.nameof)((r) => r.metadataModifiedAt)\n ];\n }\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ type: String }),\n __metadata(\"design:type\", Array)\n], SharedItem.prototype, \"tags\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], SharedItem.prototype, \"sharedBy\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], SharedItem.prototype, \"sharedWith\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"sharedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SharedItem.prototype, \"reference\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", ts_serval_1.Serializable)\n], SharedItem.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SharedItem.prototype, \"succeedsItem\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"succeedsAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"expiresAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)({ any: true }),\n __metadata(\"design:type\", Object)\n], SharedItem.prototype, \"metadata\", void 0);\n__decorate([\n (0, ts_serval_1.validate)({ nullable: true }),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SharedItem.prototype, \"metadataModifiedAt\", void 0);\nSharedItem = __decorate([\n (0, ts_serval_1.type)(\"SharedItem\")\n], SharedItem);\nexports.SharedItem = SharedItem;\n//# sourceMappingURL=SharedItem.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Signature = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst crypto_1 = require(\"@nmshd/crypto\");\nconst transport_1 = require(\"@nmshd/transport\");\nconst SignatureContent_1 = require(\"./SignatureContent\");\nlet Signature = class Signature extends transport_1.CoreSerializable {\n static preFrom(value) {\n if (value.signature instanceof crypto_1.CryptoSignature) {\n value.signature = crypto_1.CryptoSignature.fromBase64(value.signature);\n }\n return value;\n }\n static from(value) {\n return this.fromAny(value);\n }\n async verify(content, publicKey) {\n const hash = await crypto_1.CryptoHash.hash(crypto_1.CoreBuffer.fromUtf8(content), this.content.hashAlgorithm);\n if (hash.toBase64() !== this.content.hash.hash)\n return false;\n const str = this.content.serialize();\n const correct = await transport_1.CoreCrypto.verify(crypto_1.CoreBuffer.fromUtf8(str), this.signature, publicKey);\n return correct;\n }\n toJSON() {\n return { content: this.content.toJSON(), signature: this.signature.toBase64() };\n }\n serialize() {\n return JSON.stringify(this.toJSON());\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", SignatureContent_1.SignatureContent)\n], Signature.prototype, \"content\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", crypto_1.CryptoSignature)\n], Signature.prototype, \"signature\", void 0);\nSignature = __decorate([\n (0, ts_serval_1.type)(\"Signature\")\n], Signature);\nexports.Signature = Signature;\n//# sourceMappingURL=Signature.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignatureContent = void 0;\nconst ts_serval_1 = require(\"@js-soft/ts-serval\");\nconst transport_1 = require(\"@nmshd/transport\");\nlet SignatureContent = class SignatureContent extends transport_1.CoreSerializable {\n static from(value) {\n return this.fromAny(value);\n }\n};\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Number)\n], SignatureContent.prototype, \"version\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Number)\n], SignatureContent.prototype, \"signatureAlgorithm\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", Number)\n], SignatureContent.prototype, \"hashAlgorithm\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreDate)\n], SignatureContent.prototype, \"signedAt\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreAddress)\n], SignatureContent.prototype, \"signer\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreId)\n], SignatureContent.prototype, \"keyId\", void 0);\n__decorate([\n (0, ts_serval_1.validate)(),\n (0, ts_serval_1.serialize)(),\n __metadata(\"design:type\", transport_1.CoreHash)\n], SignatureContent.prototype, \"hash\", void 0);\nSignatureContent = __decorate([\n (0, ts_serval_1.type)(\"SignatureContent\")\n], SignatureContent);\nexports.SignatureContent = SignatureContent;\n//# sourceMappingURL=SignatureContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEventNamespaceFromObject = exports.EventBus = void 0;\nclass EventBus {\n}\nexports.EventBus = EventBus;\nfunction getEventNamespaceFromObject(targetObject) {\n return targetObject.namespace;\n}\nexports.getEventNamespaceFromObject = getEventNamespaceFromObject;\n//# sourceMappingURL=EventBus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionTargetInfo = void 0;\nclass SubscriptionTargetInfo {\n namespace;\n constructor(namespace) {\n this.namespace = namespace;\n }\n static from(target) {\n if (target instanceof Function) {\n return new ConstructorSubscriptionTargetInfo(target);\n }\n return new NamespaceSubscriptionTargetInfo(target);\n }\n}\nexports.SubscriptionTargetInfo = SubscriptionTargetInfo;\nclass ConstructorSubscriptionTargetInfo extends SubscriptionTargetInfo {\n constructorFunction;\n constructor(constructorFunction) {\n super(getEventNamespaceFromClass(constructorFunction));\n this.constructorFunction = constructorFunction;\n }\n isCompatibleWith(event) {\n return event instanceof this.constructorFunction;\n }\n}\nclass NamespaceSubscriptionTargetInfo extends SubscriptionTargetInfo {\n constructor(namespace) {\n super(namespace);\n }\n isCompatibleWith(_event) {\n return true;\n }\n}\nfunction getEventNamespaceFromClass(targetClass) {\n return targetClass.namespace;\n}\n//# sourceMappingURL=SubscriptionTargetInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventEmitter2EventBus = void 0;\nconst eventemitter2_1 = require(\"eventemitter2\");\nrequire(\"reflect-metadata\");\nconst EventBus_1 = require(\"../EventBus\");\nconst SubscriptionTargetInfo_1 = require(\"../SubscriptionTargetInfo\");\nclass EventEmitter2EventBus {\n emitter;\n wrappers = new Map();\n nextId = 0;\n constructor() {\n this.emitter = new eventemitter2_1.EventEmitter2({ wildcard: true, maxListeners: 50, verboseMemoryLeak: true });\n }\n subscribe(subscriptionTarget, handler) {\n return this.registerHandler(subscriptionTarget, handler);\n }\n subscribeOnce(subscriptionTarget, handler) {\n return this.registerHandler(subscriptionTarget, handler, true);\n }\n unsubscribe(subscriptionTarget, subscriptionId) {\n return this.unregisterHandler(subscriptionTarget, subscriptionId);\n }\n registerHandler(subscriptionTarget, handler, isOneTimeHandler = false) {\n const subscriptionTargetInfo = SubscriptionTargetInfo_1.SubscriptionTargetInfo.from(subscriptionTarget);\n const handlerId = this.nextId++;\n const handlerWrapper = (event) => {\n if (!subscriptionTargetInfo.isCompatibleWith(event)) {\n return;\n }\n handler(event);\n if (isOneTimeHandler) {\n this.unsubscribe(subscriptionTarget, handlerId);\n }\n };\n this.wrappers.set(handlerId, handlerWrapper);\n this.emitter.on(subscriptionTargetInfo.namespace, handlerWrapper);\n return handlerId;\n }\n unregisterHandler(subscriptionTarget, handlerId) {\n const subscriptionTargetInfo = SubscriptionTargetInfo_1.SubscriptionTargetInfo.from(subscriptionTarget);\n const handlerWrapper = this.wrappers.get(handlerId);\n if (!handlerWrapper) {\n return false;\n }\n this.emitter.off(subscriptionTargetInfo.namespace, handlerWrapper);\n this.wrappers.delete(handlerId);\n return true;\n }\n publish(event) {\n const namespace = (0, EventBus_1.getEventNamespaceFromObject)(event);\n if (!namespace) {\n throw Error(\"The event needs a namespace. Use the EventNamespace-decorator in order to define a namespace for a event.\");\n }\n this.emitter.emit(namespace, event);\n }\n}\nexports.EventEmitter2EventBus = EventEmitter2EventBus;\n//# sourceMappingURL=EventEmitter2EventBus.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./EventBus\"), exports);\n__exportStar(require(\"./eventEmitter2/EventEmitter2EventBus\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataEvent = void 0;\nconst Event_1 = require(\"./Event\");\nclass DataEvent extends Event_1.Event {\n data;\n constructor(namespace, data) {\n super(namespace);\n this.data = data;\n }\n}\nexports.DataEvent = DataEvent;\n//# sourceMappingURL=DataEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Event = void 0;\nclass Event {\n namespace;\n constructor(namespace) {\n this.namespace = namespace;\n }\n}\nexports.Event = Event;\n//# sourceMappingURL=Event.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./DataEvent\"), exports);\n__exportStar(require(\"./Event\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./eventBus\"), exports);\n__exportStar(require(\"./events\"), exports);\n__exportStar(require(\"./logDecorator\"), exports);\n__exportStar(require(\"./measureExcecutionTime\"), exports);\n__exportStar(require(\"./randomString\"), exports);\n__exportStar(require(\"./Range\"), exports);\n__exportStar(require(\"./result\"), exports);\n__exportStar(require(\"./sleep\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.log = void 0;\n/* eslint-disable no-console */\nfunction log(_target, propertyName, propertyDesciptor) {\n const method = propertyDesciptor.value;\n propertyDesciptor.value = function (...args) {\n const params = args.map((a) => JSON.stringify(a)).join();\n try {\n const result = method.apply(this, args);\n const r = JSON.stringify(result);\n console.log(`Call: ${propertyName}(${params}) => ${r}`);\n return result;\n }\n catch (error) {\n console.log(error);\n throw error;\n }\n };\n return propertyDesciptor;\n}\nexports.log = log;\n//# sourceMappingURL=logDecorator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.measureExcecutionTime = void 0;\n/* eslint-disable no-console */\nfunction measureExcecutionTime(_target, _propertyName, propertyDesciptor) {\n const method = propertyDesciptor.value;\n propertyDesciptor.value = async function (...args) {\n const t0 = Date.now();\n const result = await method.apply(this, args);\n const t1 = Date.now();\n console.info(`Execution time: ${t1 - t0}ms`);\n return result;\n };\n return propertyDesciptor;\n}\nexports.measureExcecutionTime = measureExcecutionTime;\n//# sourceMappingURL=measureExcecutionTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomString = void 0;\nfunction randomString(length, characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\") {\n let result = \"\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nexports.randomString = randomString;\n//# sourceMappingURL=randomString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ApplicationError = void 0;\nclass ApplicationError extends Error {\n code;\n data;\n constructor(code, message, data) {\n super(message);\n this.code = code;\n this.data = data;\n }\n equals(error) {\n return this.code === error.code;\n }\n}\nexports.ApplicationError = ApplicationError;\n//# sourceMappingURL=ApplicationError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Result = void 0;\nclass Result {\n _isSuccess;\n _error;\n _value;\n constructor(isSuccess, value, error) {\n if (isSuccess && error) {\n throw new Error(\"InvalidOperation: A result cannot be successful and contain an error\");\n }\n if (!isSuccess && !error) {\n throw new Error(\"InvalidOperation: A failing result needs to contain an error\");\n }\n if (value !== undefined && !isSuccess) {\n throw new Error(\"InvalidOperation: A value is only useful in case of a success.\");\n }\n this._value = value;\n this._isSuccess = isSuccess;\n this._error = error;\n }\n get isSuccess() {\n return this._isSuccess;\n }\n get isError() {\n return !this._isSuccess;\n }\n get error() {\n return this._error;\n }\n get value() {\n if (!this.isSuccess) {\n throw new Error(\"Can't get the value of an error result. Use 'error' instead.\");\n }\n return this._value;\n }\n static ok(value) {\n return new Result(true, value);\n }\n static fail(error) {\n return new Result(false, undefined, error);\n }\n}\nexports.Result = Result;\n//# sourceMappingURL=Result.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ApplicationError\"), exports);\n__exportStar(require(\"./Result\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sleep = void 0;\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\nexports.sleep = sleep;\n//# sourceMappingURL=sleep.js.map","/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? value.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nameof = void 0;\nvar nameof_1 = require(\"./src/nameof\");\nObject.defineProperty(exports, \"nameof\", { enumerable: true, get: function () { return nameof_1.nameof; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nameof = void 0;\nfunction cleanseAssertionOperators(parsedName) {\n return parsedName.replace(/[?!]/g, \"\");\n}\nfunction nameof(nameFunction, options) {\n var fnStr = nameFunction.toString();\n // ES6 class name:\n // \"class ClassName { ...\"\n if (fnStr.startsWith(\"class \")\n // Theoretically could, for some ill-advised reason, be \"class => class.prop\".\n && !fnStr.startsWith(\"class =>\")) {\n return cleanseAssertionOperators(fnStr.substring(\"class \".length, fnStr.indexOf(\" {\")));\n }\n // ES6 prop selector:\n // \"x => x.prop\"\n if (fnStr.includes(\"=>\")) {\n return cleanseAssertionOperators(fnStr.substring(fnStr.indexOf(\".\") + 1));\n }\n // ES5 prop selector:\n // \"function (x) { return x.prop; }\"\n // webpack production build excludes the spaces and optional trailing semicolon:\n // \"function(x){return x.prop}\"\n // FYI - during local dev testing i observed carriage returns after the curly brackets as well\n // Note by maintainer: See https://github.com/IRCraziestTaxi/ts-simple-nameof/pull/13#issuecomment-567171802 for explanation of this regex.\n var matchRegex = /function\\s*\\(\\w+\\)\\s*\\{[\\r\\n\\s]*return\\s+\\w+\\.((\\w+\\.)*(\\w+))/i;\n var es5Match = fnStr.match(matchRegex);\n if (es5Match) {\n return (options && options.lastProp)\n ? es5Match[3]\n : es5Match[1];\n }\n // ES5 class name:\n // \"function ClassName() { ...\"\n if (fnStr.startsWith(\"function \")) {\n return cleanseAssertionOperators(fnStr.substring(\"function \".length, fnStr.indexOf(\"(\")));\n }\n // Invalid function.\n throw new Error(\"ts-simple-nameof: Invalid function.\");\n}\nexports.nameof = nameof;\n","module.exports = NMSHDContent;","module.exports = NMSHDCrypto;","module.exports = NMSHDTransport;","module.exports = TSServal;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(5590);\n"],"names":["Object","defineProperty","exports","value","buildInformation","ts_serval_1","content_1","crypto_1","transport_1","version","build","date","commit","dependencies","libraries","transport","crypto","serval","content","ConsumptionBaseController","constructor","controllerName","_parent","this","_log","TransportLoggerFactory","getLogger","log","parent","init","Promise","resolve","async","values","type","parsePromises","map","v","from","all","ConsumptionController","modules_1","IncomingRequestsController_1","accountController","attributes","_attributes","drafts","_drafts","outgoingRequests","_outgoingRequests","incomingRequests","_incomingRequests","settings","_settings","sharedItems","_sharedItems","relationshipInfo","_relationshipInfo","requestItemProcessors","ConsumptionAttributesController","DraftsController","processorRegistry","RequestItemProcessorRegistry","OutgoingRequestsController","IncomingRequestsController","SettingsController","SharedItemsController","RelationshipInfoController","ConsumptionControllerName","ConsumptionErrors","Attributes","attributeExists","name","CoreError","requests","Requests","requestsExists","id","RelationshipInfo","relationshipInfoExists","relationshipId","onboarding","Onboarding","attributeNotSet","attributeName","wrongTemplate","ConsumptionIds","attribute","CoreIdHelper","draft","sharedItem","response","request","setting","__createBinding","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","ts_simple_nameof_1","consumption_1","ConsumptionAttribute_1","super","getSynchronizedCollection","checkValid","now","CoreDate","utc","validFrom","validTo","isSameOrBefore","isAfter","findCurrent","sorted","sort","a","b","createdAt","compare","current","filterCurrent","items","push","result","find","nameof","c","toString","parseArray","ConsumptionAttribute","query","docs","getValidAttributes","reduce","getAttributeByName","updateAttribute","findOne","TransportErrors","general","recordNotFound","update","delete","__decorate","decorators","target","key","d","arguments","length","r","Reflect","decorate","i","__metadata","metadata","CoreSynchronizable","technicalProperties","userdataProperties","metadataProperties","metadataModifiedAt","static","fromAny","Attribute","generate","validate","serialize","nullable","any","Draft_1","read","Draft","lastModifiedAt","oldDraft","Error","String","Serializable","RelationshipInfo_1","RelationshipInfoUtil_1","RelationshipInfoUtil","createInitialRelationshipInfo","exists","oldRelationshipInfo","SharedItem_1","RelationshipAttribute_1","relationship","relationships","getRelationship","Relationship","logWith","parseTemplateBody","parseCreationRequest","createRelationshipInfo","getTitle","attributeMap","title","peer","address","substring","thingName","givenName","familyName","gender","orgname","legalName","truncatedAddress","info","isPinned","getSharedItems","sharedBy","Map","item","relAttr","RelationshipAttribute","set","template","cache","cacheEmpty","RelationshipTemplate","body","isTemplator","identity","isMe","createdBy","sharedAt","sharedWith","sharedItemsWithSameReference","reference","missingItems","RelationshipTemplateBody","sharedAttributes","forEach","oldTemplateBody","JSONWrapper","Array","isArray","SharedItem","expiresAt","createSharedItem","change","creationChange","isRequestor","RelationshipCreationChangeRequestBody","oldRequestBody","keys","CoreId","RelationshipTheme_1","description","theme","userTitle","userDescription","Boolean","RelationshipTheme","DecideRequestParametersValidator","ts_utils_1","params","Result","fail","ApplicationError","ok","ValidationResult_1","ConsumptionRequest_1","ConsumptionRequestStatus_1","ConsumptionResponse_1","CheckPrerequisitesOfIncomingRequestParameters_1","CompleteIncomingRequestParameters_1","InternalDecideRequestParameters_1","RequestItemDecision_1","DecideRequestParametersValidator_1","ReceivedIncomingRequestParameters_1","RequireManualDecisionOfIncomingRequestParameters_1","RequestsController","decideRequestParamsValidator","consumptionRequests","parsedParams","ReceivedIncomingRequestParameters","infoFromSource","extractInfoFromSource","requestSourceObject","consumptionRequest","ConsumptionRequest","receivedRequest","status","ConsumptionRequestStatus","Open","isOwn","source","statusLog","Message","extractInfoFromMessage","extractInfoFromRelationshipTemplate","message","CheckPrerequisitesOfIncomingRequestParameters","getOrThrow","requestId","assertRequestStatus","RequestItem","processor","getProcessorForItem","checkPrerequisitesOfIncomingRequestItem","childItem","changeStatus","DecisionRequired","RequireManualDecisionOfIncomingRequestParameters","ManualDecisionRequired","canDecide","decision","RequestDecision","Accept","Reject","InternalDecideRequestParameters","validationResult","isSuccess","error","itemResults","canDecideItems","ValidationResult","fromItems","requestItemGroup","validationResults","decideItemParams","requestItem","RequestItemGroup","groupResult","canDecideGroup","itemResult","canDecideItem","RequestItemDecision","canAccept","canReject","decide","consumptionResponse","createConsumptionResponse","Decided","requestItems","responseItems","decideItems","Response","ResponseResult","Accepted","Rejected","ConsumptionResponse","groupItemParam","ResponseItemGroup","responseMetadata","itemParam","decideGroup","decideItem","accept","reject","e","details","CompleteIncomingRequestParameters","responseSource","responseSourceObject","RelationshipChange","ConsumptionResponseSource","Completed","requestDoc","includes","join","unionTypes","Request","GenericRequestItemProcessor","_requestItem","_params","success","AcceptResponseItem","ResponseItemResult","RejectResponseItem","canApplyIncomingResponseItem","_responseItem","canCreateOutgoingRequestItem","applyIncomingResponseItem","processors","registry","itemConstructor","processorConstructor","registerProcessor","replaceProcessor","ErrorValidationResult","SuccessfulValidatonResult","isError","code","some","ConsumptionRequestSource","ConsumptionRequestStatusLogEntry_1","CoreSerializable","newStatus","logEntry","ConsumptionRequestStatusLogEntry","oldStatus","sent","CoreAddress","CompleteOutgoingRequestParameters_1","CreateOutgoingRequestFromRelationshipCreationChangeParameters_1","CreateOutgoingRequestParameters_1","SentOutgoingRequestParameters_1","CreateOutgoingRequestParameters","innerResults","canCreateItems","results","canCreateItem","canCreateItemGroup","innerRequestItem","_create","canCreateResult","canCreate","CreateOutgoingRequestFromRelationshipCreationChangeParameters","_sent","_complete","SentOutgoingRequestParameters","getSourceType","sourceObject","CompleteOugoingRequestParameters","receivedResponse","canComplete","applyItems","responseItem","canApplyItem","responseGroup","j","groupRequestItem","groupResponseItem","applyItem","responseItemGroup","Setting_1","Setting","parameters","scope","SettingScope","Identity","succeedsAt","succeedsItem","oldSetting","deletedAt","oldSharedItem","tags","Signature","SignatureContent_1","signature","CryptoSignature","fromBase64","publicKey","CryptoHash","hash","CoreBuffer","fromUtf8","hashAlgorithm","toBase64","str","CoreCrypto","verify","toJSON","JSON","stringify","SignatureContent","Number","CoreHash","getEventNamespaceFromObject","EventBus","targetObject","namespace","SubscriptionTargetInfo","Function","ConstructorSubscriptionTargetInfo","NamespaceSubscriptionTargetInfo","constructorFunction","getEventNamespaceFromClass","targetClass","isCompatibleWith","event","_event","EventEmitter2EventBus","eventemitter2_1","EventBus_1","SubscriptionTargetInfo_1","emitter","wrappers","nextId","EventEmitter2","wildcard","maxListeners","verboseMemoryLeak","subscribe","subscriptionTarget","handler","registerHandler","subscribeOnce","unsubscribe","subscriptionId","unregisterHandler","isOneTimeHandler","subscriptionTargetInfo","handlerId","handlerWrapper","on","off","publish","emit","DataEvent","Event_1","Event","data","_target","propertyName","propertyDesciptor","method","args","apply","console","measureExcecutionTime","_propertyName","t0","Date","t1","randomString","characters","charactersLength","charAt","Math","floor","random","equals","_isSuccess","_error","_value","sleep","ms","setTimeout","_isArray","obj","nextTickSupported","process","nextTick","symbolsSupported","Symbol","reflectSupported","_setImmediate","setImmediate","ownKeys","arr","getOwnPropertyNames","getOwnPropertySymbols","_events","_conf","configure","conf","delimiter","_maxListeners","newListener","_newListener","removeListener","_removeListener","ignoreErrors","listenerTree","logPossibleMemoryLeak","count","eventName","errorMsg","emitWarning","trace","toArray","n","toObject","len","valuesCount","TargetObserver","options","_emitter","_listeners","_listenersCount","addEventListener","removeEventListener","addListener","TypeError","_on","_off","_observers","resolveOptions","schema","reducers","allowUnknown","computedOptions","assign","option","reducer","reason","constructorReducer","makeTypeReducer","types","firstType","secondType","kind","localEvent","observer","listeners","eventObj","original","concat","_onNewListener","_onRemoveListener","hasListeners","events","clearRefs","index","findTargetIndex","splice","functionReducer","objectFunctionReducer","makeCancelablePromise","executor","isCancelable","callbacks","subscriptionClosed","timer","promise","onCancel","cleanup","clearTimeout","timeout","overload","isFinite","cancel","_resolve","_reject","err","cb","observers","searchListenerTree","handlers","tree","typeLength","ns","l","dl","indexOf","slice","branch","xTree","xxTree","isolatedBranch","endReached","branches","currentType","nextType","growListenerTree","listener","prepend","unshift","warned","collectTreeEvents","root","asArray","branchName","path","isArrayPath","recursivelyGarbageCollect","flag","Listener","setupListener","promisify","objectify","_listener","_origin","context","then","_async","EventEmitter","listenTo","listen","isSingleReducer","split","stopListeningTo","matched","setMaxListeners","getMaxListeners","once","fn","_once","prependOnceListener","_many","many","ttl","prependMany","self","_all","containsSymbol","al","emitAsync","promises","prependListener","onAny","_onAny","prependAny","temp","returnValue","leafs","iLeaf","leaf","position","offAny","fns","removeAllListeners","allListeners","eventNames","nsAsArray","listenerCount","listenersAny","waitFor","filter","handleError","defineProperties","defaultMaxListeners","isNaN","errorListener","eventListener","factory","global","exporter","makeExporter","previous","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","supportsProto","__proto__","downLevel","HashMap","MakeDictionary","has","functionPrototype","getPrototypeOf","usePolyfill","env","_Map","entries","CreateMapPolyfill","_Set","Set","CreateSetPolyfill","Metadata","WeakMap","CreateWeakMapPolyfill","propertyKey","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","metadataKey","metadataValue","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","size","targetMetadata","decorated","descriptor","O","P","Create","MetadataKey","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","parentKeys","_i","ownKeys_1","add","_a","parentKeys_1","GetIterator","next","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","x","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","OrdinaryToPrimitive","toString_1","IsCallable","valueOf","toString_2","argument","ToString","V","func","iterResult","done","f","proto","prototypeProto","cacheSentinel","arraySentinel","MapIterator","selector","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","_find","clear","getKey","getValue","getEntry","insert","_","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","GenRandomBytes","Uint8Array","getRandomValues","msCrypto","offset","byte","toLowerCase","__","nameof_1","cleanseAssertionOperators","parsedName","replace","nameFunction","fnStr","startsWith","es5Match","match","lastProp","module","NMSHDContent","NMSHDCrypto","NMSHDTransport","TSServal","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|