@nmshd/runtime 1.2.20 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/Runtime.js +3 -0
  2. package/dist/Runtime.js.map +1 -1
  3. package/dist/buildInformation.js +5 -5
  4. package/dist/extensibility/TransportServices.d.ts +3 -2
  5. package/dist/extensibility/TransportServices.js +5 -2
  6. package/dist/extensibility/TransportServices.js.map +1 -1
  7. package/dist/extensibility/facades/transport/ChallengesFacade.d.ts +10 -0
  8. package/dist/extensibility/facades/transport/ChallengesFacade.js +36 -0
  9. package/dist/extensibility/facades/transport/ChallengesFacade.js.map +1 -0
  10. package/dist/extensibility/facades/transport/index.d.ts +1 -0
  11. package/dist/extensibility/facades/transport/index.js +1 -0
  12. package/dist/extensibility/facades/transport/index.js.map +1 -1
  13. package/dist/types/transport/ChallengeDTO.d.ts +9 -0
  14. package/dist/types/transport/ChallengeDTO.js +3 -0
  15. package/dist/types/transport/ChallengeDTO.js.map +1 -0
  16. package/dist/types/transport/index.d.ts +1 -0
  17. package/dist/types/transport/index.js +1 -0
  18. package/dist/types/transport/index.js.map +1 -1
  19. package/dist/useCases/common/RuntimeErrors.d.ts +6 -0
  20. package/dist/useCases/common/RuntimeErrors.js +12 -0
  21. package/dist/useCases/common/RuntimeErrors.js.map +1 -1
  22. package/dist/useCases/common/SchemaRepository.js +2 -1
  23. package/dist/useCases/common/SchemaRepository.js.map +1 -1
  24. package/dist/useCases/common/Schemas.d.ts +5 -0
  25. package/dist/useCases/common/Schemas.js +149 -2
  26. package/dist/useCases/common/Schemas.js.map +1 -1
  27. package/dist/useCases/common/UseCase.js +1 -1
  28. package/dist/useCases/common/UseCase.js.map +1 -1
  29. package/dist/useCases/common/validation/IValidator.d.ts +1 -1
  30. package/dist/useCases/common/validation/SchemaValidator.d.ts +1 -1
  31. package/dist/useCases/transport/challenges/ChallengeMapper.d.ts +5 -0
  32. package/dist/useCases/transport/challenges/ChallengeMapper.js +19 -0
  33. package/dist/useCases/transport/challenges/ChallengeMapper.js.map +1 -0
  34. package/dist/useCases/transport/challenges/CreateChallenge.d.ts +34 -0
  35. package/dist/useCases/transport/challenges/CreateChallenge.js +104 -0
  36. package/dist/useCases/transport/challenges/CreateChallenge.js.map +1 -0
  37. package/dist/useCases/transport/challenges/ValidateChallange.d.ts +24 -0
  38. package/dist/useCases/transport/challenges/ValidateChallange.js +95 -0
  39. package/dist/useCases/transport/challenges/ValidateChallange.js.map +1 -0
  40. package/dist/useCases/transport/challenges/index.d.ts +2 -0
  41. package/dist/useCases/transport/challenges/index.js +15 -0
  42. package/dist/useCases/transport/challenges/index.js.map +1 -0
  43. package/dist/useCases/transport/index.d.ts +1 -0
  44. package/dist/useCases/transport/index.js +1 -0
  45. package/dist/useCases/transport/index.js.map +1 -1
  46. package/lib-web/nmshd.runtime.js +574 -53
  47. package/lib-web/nmshd.runtime.js.map +1 -1
  48. package/lib-web/nmshd.runtime.min.js +5 -5
  49. package/lib-web/nmshd.runtime.min.js.map +1 -1
  50. package/package.json +5 -5
@@ -145,6 +145,9 @@ class Runtime {
145
145
  typescript_ioc_1.Container.bind(transport_1.TokenController)
146
146
  .factory(() => this.getAccountController().tokens)
147
147
  .scope(typescript_ioc_1.Scope.Request);
148
+ typescript_ioc_1.Container.bind(transport_1.ChallengeController)
149
+ .factory(() => this.getAccountController().challenges)
150
+ .scope(typescript_ioc_1.Scope.Request);
148
151
  typescript_ioc_1.Container.bind(consumption_1.ConsumptionController)
149
152
  .factory(() => this.getConsumptionController())
150
153
  .scope(typescript_ioc_1.Scope.Request);
@@ -326,11 +329,11 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
326
329
  const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
327
330
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
328
331
  exports.buildInformation = {
329
- version: "1.2.20",
330
- build: "35",
331
- date: "2022-02-02T14:06:50+00:00",
332
- commit: "5c3b3a26e826804830cf798195022083a9135191",
333
- dependencies: {"@js-soft/docdb-querytranslator":"1.0.1","@js-soft/logging-abstractions":"1.0.0","@js-soft/ts-serval":"1.0.2","@js-soft/ts-utils":"^1.1.1","@nmshd/consumption":"1.0.13","@nmshd/content":"1.1.4","@nmshd/crypto":"1.0.8","@nmshd/transport":"1.1.8","ajv":"^8.9.0","ajv-errors":"^3.0.0","ajv-formats":"^2.1.1","fluent-ts-validator":"3.0.3","json-stringify-safe":"^5.0.1","luxon":"^2.3.0","qrcode":"1.5.0","reflect-metadata":"0.1.13","ts-simple-nameof":"1.3.1","typescript-ioc":"3.2.2"},
332
+ version: "1.3.0",
333
+ build: "37",
334
+ date: "2022-02-09T14:46:40+00:00",
335
+ commit: "6b009ce3a3f401a9faaa3e63211ee6d44c13a821",
336
+ dependencies: {"@js-soft/docdb-querytranslator":"1.0.1","@js-soft/logging-abstractions":"1.0.0","@js-soft/ts-serval":"1.0.2","@js-soft/ts-utils":"^1.1.1","@nmshd/consumption":"1.0.13","@nmshd/content":"1.1.4","@nmshd/crypto":"1.0.8","@nmshd/transport":"1.1.9","ajv":"^8.10.0","ajv-errors":"^3.0.0","ajv-formats":"^2.1.1","fluent-ts-validator":"3.0.3","json-stringify-safe":"^5.0.1","luxon":"^2.3.0","qrcode":"1.5.0","reflect-metadata":"0.1.13","ts-simple-nameof":"1.3.1","typescript-ioc":"3.2.2"},
334
337
  libraries: {
335
338
  serval: ts_serval_1.buildInformation,
336
339
  consumption: consumption_1.buildInformation,
@@ -1871,7 +1874,7 @@ exports.TransportServices = void 0;
1871
1874
  const typescript_ioc_1 = __webpack_require__(/*! typescript-ioc */ "./node_modules/typescript-ioc/dist/typescript-ioc.js");
1872
1875
  const transport_1 = __webpack_require__(/*! ./facades/transport */ "./dist/extensibility/facades/transport/index.js");
1873
1876
  let TransportServices = class TransportServices {
1874
- constructor(files, messages, relationships, relationshipTemplates, tokens, account, devices) {
1877
+ constructor(files, messages, relationships, relationshipTemplates, tokens, account, devices, challenges) {
1875
1878
  this.files = files;
1876
1879
  this.messages = messages;
1877
1880
  this.relationships = relationships;
@@ -1879,6 +1882,7 @@ let TransportServices = class TransportServices {
1879
1882
  this.tokens = tokens;
1880
1883
  this.account = account;
1881
1884
  this.devices = devices;
1885
+ this.challenges = challenges;
1882
1886
  }
1883
1887
  };
1884
1888
  TransportServices = __decorate([
@@ -1889,13 +1893,15 @@ TransportServices = __decorate([
1889
1893
  __param(4, typescript_ioc_1.Inject),
1890
1894
  __param(5, typescript_ioc_1.Inject),
1891
1895
  __param(6, typescript_ioc_1.Inject),
1896
+ __param(7, typescript_ioc_1.Inject),
1892
1897
  __metadata("design:paramtypes", [transport_1.FilesFacade,
1893
1898
  transport_1.MessagesFacade,
1894
1899
  transport_1.RelationshipsFacade,
1895
1900
  transport_1.RelationshipTemplatesFacade,
1896
1901
  transport_1.TokensFacade,
1897
1902
  transport_1.AccountFacade,
1898
- transport_1.DevicesFacade])
1903
+ transport_1.DevicesFacade,
1904
+ transport_1.ChallengesFacade])
1899
1905
  ], TransportServices);
1900
1906
  exports.TransportServices = TransportServices;
1901
1907
  //# sourceMappingURL=TransportServices.js.map
@@ -2481,6 +2487,52 @@ exports.AccountFacade = AccountFacade;
2481
2487
 
2482
2488
  /***/ }),
2483
2489
 
2490
+ /***/ "./dist/extensibility/facades/transport/ChallengesFacade.js":
2491
+ /*!******************************************************************!*\
2492
+ !*** ./dist/extensibility/facades/transport/ChallengesFacade.js ***!
2493
+ \******************************************************************/
2494
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2495
+
2496
+ "use strict";
2497
+
2498
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2499
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2500
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2501
+ 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;
2502
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2503
+ };
2504
+ var __metadata = (this && this.__metadata) || function (k, v) {
2505
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2506
+ };
2507
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
2508
+ return function (target, key) { decorator(target, key, paramIndex); }
2509
+ };
2510
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2511
+ exports.ChallengesFacade = void 0;
2512
+ const typescript_ioc_1 = __webpack_require__(/*! typescript-ioc */ "./node_modules/typescript-ioc/dist/typescript-ioc.js");
2513
+ const useCases_1 = __webpack_require__(/*! ../../../useCases */ "./dist/useCases/index.js");
2514
+ let ChallengesFacade = class ChallengesFacade {
2515
+ constructor(createChallengeUseCase, validateChallengeUseCase) {
2516
+ this.createChallengeUseCase = createChallengeUseCase;
2517
+ this.validateChallengeUseCase = validateChallengeUseCase;
2518
+ }
2519
+ async createChallenge(request) {
2520
+ return await this.createChallengeUseCase.execute(request);
2521
+ }
2522
+ async validateChallenge(request) {
2523
+ return await this.validateChallengeUseCase.execute(request);
2524
+ }
2525
+ };
2526
+ ChallengesFacade = __decorate([
2527
+ __param(0, typescript_ioc_1.Inject),
2528
+ __param(1, typescript_ioc_1.Inject),
2529
+ __metadata("design:paramtypes", [useCases_1.CreateChallengeUseCase, useCases_1.ValidateChallengeUseCase])
2530
+ ], ChallengesFacade);
2531
+ exports.ChallengesFacade = ChallengesFacade;
2532
+ //# sourceMappingURL=ChallengesFacade.js.map
2533
+
2534
+ /***/ }),
2535
+
2484
2536
  /***/ "./dist/extensibility/facades/transport/DevicesFacade.js":
2485
2537
  /*!***************************************************************!*\
2486
2538
  !*** ./dist/extensibility/facades/transport/DevicesFacade.js ***!
@@ -2980,6 +3032,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
2980
3032
  };
2981
3033
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2982
3034
  __exportStar(__webpack_require__(/*! ./AccountFacade */ "./dist/extensibility/facades/transport/AccountFacade.js"), exports);
3035
+ __exportStar(__webpack_require__(/*! ./ChallengesFacade */ "./dist/extensibility/facades/transport/ChallengesFacade.js"), exports);
2983
3036
  __exportStar(__webpack_require__(/*! ./DevicesFacade */ "./dist/extensibility/facades/transport/DevicesFacade.js"), exports);
2984
3037
  __exportStar(__webpack_require__(/*! ./FilesFacade */ "./dist/extensibility/facades/transport/FilesFacade.js"), exports);
2985
3038
  __exportStar(__webpack_require__(/*! ./IdentityFacade */ "./dist/extensibility/facades/transport/IdentityFacade.js"), exports);
@@ -3374,6 +3427,19 @@ __exportStar(__webpack_require__(/*! ./transport */ "./dist/types/transport/inde
3374
3427
 
3375
3428
  /***/ }),
3376
3429
 
3430
+ /***/ "./dist/types/transport/ChallengeDTO.js":
3431
+ /*!**********************************************!*\
3432
+ !*** ./dist/types/transport/ChallengeDTO.js ***!
3433
+ \**********************************************/
3434
+ /***/ ((__unused_webpack_module, exports) => {
3435
+
3436
+ "use strict";
3437
+
3438
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
3439
+ //# sourceMappingURL=ChallengeDTO.js.map
3440
+
3441
+ /***/ }),
3442
+
3377
3443
  /***/ "./dist/types/transport/DeviceDTO.js":
3378
3444
  /*!*******************************************!*\
3379
3445
  !*** ./dist/types/transport/DeviceDTO.js ***!
@@ -3560,6 +3626,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
3560
3626
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
3561
3627
  };
3562
3628
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3629
+ __exportStar(__webpack_require__(/*! ./ChallengeDTO */ "./dist/types/transport/ChallengeDTO.js"), exports);
3563
3630
  __exportStar(__webpack_require__(/*! ./DeviceDTO */ "./dist/types/transport/DeviceDTO.js"), exports);
3564
3631
  __exportStar(__webpack_require__(/*! ./DeviceOnboardingInfoDTO */ "./dist/types/transport/DeviceOnboardingInfoDTO.js"), exports);
3565
3632
  __exportStar(__webpack_require__(/*! ./FileDTO */ "./dist/types/transport/FileDTO.js"), exports);
@@ -3879,6 +3946,9 @@ class General {
3879
3946
  notImplemented() {
3880
3947
  return new ts_utils_1.ApplicationError("error.runtime.methodNotImplemented", "The requested method is not yet implemented.");
3881
3948
  }
3949
+ featureNotImplemented(message) {
3950
+ return new ts_utils_1.ApplicationError("error.runtime.featureNotImplemented", message);
3951
+ }
3882
3952
  invalidTokenContent() {
3883
3953
  return new ts_utils_1.ApplicationError("error.runtime.invalidTokenContent", "The given token has an invalid content for this route.");
3884
3954
  }
@@ -3946,6 +4016,14 @@ class Database {
3946
4016
  return new ts_utils_1.ApplicationError("error.runtime.database.quotaExceeded", "It seems that the database quota exceeded. Please increase the database size.");
3947
4017
  }
3948
4018
  }
4019
+ class Challenges {
4020
+ invalidSignature() {
4021
+ return new ts_utils_1.ApplicationError("error.runtime.challenges.invalidSignature", "The signature is invalid.");
4022
+ }
4023
+ invalidChallenge() {
4024
+ return new ts_utils_1.ApplicationError("error.runtime.challenges.invalidChallenge", "The challenge is invalid.");
4025
+ }
4026
+ }
3949
4027
  class RuntimeErrors {
3950
4028
  }
3951
4029
  exports.RuntimeErrors = RuntimeErrors;
@@ -3956,6 +4034,7 @@ RuntimeErrors.database = new Database();
3956
4034
  RuntimeErrors.relationshipTemplates = new RelationshipTemplates();
3957
4035
  RuntimeErrors.messages = new Messages();
3958
4036
  RuntimeErrors.relationshipInfo = new RelationshipInfo();
4037
+ RuntimeErrors.challenges = new Challenges();
3959
4038
  //# sourceMappingURL=RuntimeErrors.js.map
3960
4039
 
3961
4040
  /***/ }),
@@ -4026,7 +4105,8 @@ const customFormats = {
4026
4105
  relationshipTemplateId: "RLT[A-z0-9]{17}",
4027
4106
  tokenId: "TOK[A-z0-9]{17}",
4028
4107
  relationshipChangeId: "RCH[A-z0-9]{17}",
4029
- deviceId: "DVC[A-z0-9]{17}"
4108
+ deviceId: "DVC[A-z0-9]{17}",
4109
+ challengeId: "CHL[A-z0-9]{17}"
4030
4110
  };
4031
4111
  class SchemaRepository {
4032
4112
  constructor() {
@@ -4083,8 +4163,8 @@ exports.JsonSchema = JsonSchema;
4083
4163
  "use strict";
4084
4164
 
4085
4165
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4086
- exports.GetFilesRequest = exports.GetFileRequest = exports.CreateTokenQrCodeForFileRequest = exports.CreateTokenForFileRequest = exports.UpdateDeviceRequest = exports.GetDeviceOnboardingInfoRequest = exports.GetDeviceRequest = exports.DeleteDeviceRequest = exports.CreateDeviceOnboardingTokenRequest = exports.CreateDeviceRequest = exports.DownloadAttachmentRequest = exports.DownloadFileRequest = exports.RegisterPushNotificationTokenRequest = exports.UpdateSharedItemRequest = exports.GetSharedItemsSharedWithAddressRequest = exports.GetSharedItemsSharedByAddressRequest = exports.GetSharedItemsByReferenceRequest = exports.GetSharedItemsByAddressRequest = exports.GetSharedItemsRequest = exports.GetSharedItemRequest = exports.DeleteSharedItemRequest = exports.CreateSharedItemRequest = exports.UpdateSettingRequest = exports.GetSettingsRequest = exports.GetSettingRequest = exports.DeleteSettingRequest = exports.CreateSettingRequest = exports.UpdateRelationshipInfoRequest = exports.GetRelationshipInfoByRelationshipRequest = exports.GetRelationshipInfoRequest = exports.DeleteRelationshipInfoByRelationshipRequest = exports.DeleteRelationshipInfoRequest = exports.CreateRelationshipInfoRequest = exports.UpdateDraftRequest = exports.GetDraftsRequest = exports.GetDraftRequest = exports.DeleteDraftRequest = exports.CreateDraftRequest = exports.UpdateAttributeRequest = exports.SucceedAttributeRequest = exports.GetHistoryByNameRequest = exports.GetAttributesRequest = exports.GetAttributeByNameRequest = exports.GetAttributeRequest = exports.DeleteAttributeByNameRequest = exports.DeleteAttributeRequest = exports.CreateAttributeRequest = exports.GetAttributesByNamesRequest = exports.LoadPeerTokenAnonymousByTruncatedReferenceRequest = exports.LoadPeerTokenAnonymousByIdAndKeyRequest = void 0;
4087
- exports.LoadPeerTokenRequest = exports.GetTokensRequest = exports.GetTokenRequest = exports.GetQRCodeForTokenRequest = exports.CreateOwnTokenRequest = exports.LoadPeerRelationshipTemplateRequest = exports.GetRelationshipTemplatesRequest = exports.GetRelationshipTemplateRequest = exports.CreateTokenQrCodeForOwnTemplateRequest = exports.CreateTokenForOwnTemplateRequest = exports.CreateOwnRelationshipTemplateRequest = exports.RevokeRelationshipChangeRequest = exports.RejectRelationshipChangeRequest = exports.GetRelationshipsRequest = exports.GetRelationshipByAddressRequest = exports.GetRelationshipRequest = exports.CreateRelationshipChangeRequest = exports.CreateRelationshipRequest = exports.AcceptRelationshipChangeRequest = exports.SendMessageRequest = exports.GetMessagesRequest = exports.GetMessageRequest = exports.GetAttachmentMetadataRequest = exports.CheckIdentityRequest = exports.UploadOwnFileRequest = exports.LoadPeerFileRequest = exports.LoadPeerFileViaReferenceRequest = exports.LoadPeerFileViaSecretRequest = void 0;
4166
+ exports.GetDeviceOnboardingInfoRequest = exports.GetDeviceRequest = exports.DeleteDeviceRequest = exports.CreateDeviceOnboardingTokenRequest = exports.CreateDeviceRequest = exports.ValidateChallengeRequest = exports.CreateChallengeRequest = exports.CreateDeviceChallengeRequest = exports.CreateIdentityChallengeRequest = exports.CreateRelationshipChallengeRequest = exports.DownloadAttachmentRequest = exports.DownloadFileRequest = exports.RegisterPushNotificationTokenRequest = exports.UpdateSharedItemRequest = exports.GetSharedItemsSharedWithAddressRequest = exports.GetSharedItemsSharedByAddressRequest = exports.GetSharedItemsByReferenceRequest = exports.GetSharedItemsByAddressRequest = exports.GetSharedItemsRequest = exports.GetSharedItemRequest = exports.DeleteSharedItemRequest = exports.CreateSharedItemRequest = exports.UpdateSettingRequest = exports.GetSettingsRequest = exports.GetSettingRequest = exports.DeleteSettingRequest = exports.CreateSettingRequest = exports.UpdateRelationshipInfoRequest = exports.GetRelationshipInfoByRelationshipRequest = exports.GetRelationshipInfoRequest = exports.DeleteRelationshipInfoByRelationshipRequest = exports.DeleteRelationshipInfoRequest = exports.CreateRelationshipInfoRequest = exports.UpdateDraftRequest = exports.GetDraftsRequest = exports.GetDraftRequest = exports.DeleteDraftRequest = exports.CreateDraftRequest = exports.UpdateAttributeRequest = exports.SucceedAttributeRequest = exports.GetHistoryByNameRequest = exports.GetAttributesRequest = exports.GetAttributeByNameRequest = exports.GetAttributeRequest = exports.DeleteAttributeByNameRequest = exports.DeleteAttributeRequest = exports.CreateAttributeRequest = exports.GetAttributesByNamesRequest = exports.LoadPeerTokenAnonymousByTruncatedReferenceRequest = exports.LoadPeerTokenAnonymousByIdAndKeyRequest = void 0;
4167
+ exports.LoadPeerTokenRequest = exports.GetTokensRequest = exports.GetTokenRequest = exports.GetQRCodeForTokenRequest = exports.CreateOwnTokenRequest = exports.LoadPeerRelationshipTemplateRequest = exports.GetRelationshipTemplatesRequest = exports.GetRelationshipTemplateRequest = exports.CreateTokenQrCodeForOwnTemplateRequest = exports.CreateTokenForOwnTemplateRequest = exports.CreateOwnRelationshipTemplateRequest = exports.RevokeRelationshipChangeRequest = exports.RejectRelationshipChangeRequest = exports.GetRelationshipsRequest = exports.GetRelationshipByAddressRequest = exports.GetRelationshipRequest = exports.CreateRelationshipChangeRequest = exports.CreateRelationshipRequest = exports.AcceptRelationshipChangeRequest = exports.SendMessageRequest = exports.GetMessagesRequest = exports.GetMessageRequest = exports.GetAttachmentMetadataRequest = exports.CheckIdentityRequest = exports.UploadOwnFileRequest = exports.LoadPeerFileRequest = exports.LoadPeerFileViaReferenceRequest = exports.LoadPeerFileViaSecretRequest = exports.GetFilesRequest = exports.GetFileRequest = exports.CreateTokenQrCodeForFileRequest = exports.CreateTokenForFileRequest = exports.UpdateDeviceRequest = void 0;
4088
4168
  exports.LoadPeerTokenAnonymousByIdAndKeyRequest = {
4089
4169
  "$schema": "http://json-schema.org/draft-07/schema#",
4090
4170
  "$ref": "#/definitions/LoadPeerTokenAnonymousByIdAndKeyRequest",
@@ -5137,6 +5217,153 @@ exports.DownloadAttachmentRequest = {
5137
5217
  }
5138
5218
  }
5139
5219
  };
5220
+ exports.CreateRelationshipChallengeRequest = {
5221
+ "$schema": "http://json-schema.org/draft-07/schema#",
5222
+ "$ref": "#/definitions/CreateRelationshipChallengeRequest",
5223
+ "definitions": {
5224
+ "CreateRelationshipChallengeRequest": {
5225
+ "type": "object",
5226
+ "properties": {
5227
+ "challengeType": {
5228
+ "type": "string",
5229
+ "const": "Relationship"
5230
+ },
5231
+ "relationship": {
5232
+ "type": "string",
5233
+ "format": "relationshipId"
5234
+ }
5235
+ },
5236
+ "required": [
5237
+ "challengeType",
5238
+ "relationship"
5239
+ ],
5240
+ "additionalProperties": false
5241
+ }
5242
+ }
5243
+ };
5244
+ exports.CreateIdentityChallengeRequest = {
5245
+ "$schema": "http://json-schema.org/draft-07/schema#",
5246
+ "$ref": "#/definitions/CreateIdentityChallengeRequest",
5247
+ "definitions": {
5248
+ "CreateIdentityChallengeRequest": {
5249
+ "type": "object",
5250
+ "properties": {
5251
+ "challengeType": {
5252
+ "type": "string",
5253
+ "const": "Identity"
5254
+ }
5255
+ },
5256
+ "required": [
5257
+ "challengeType"
5258
+ ],
5259
+ "additionalProperties": false
5260
+ }
5261
+ }
5262
+ };
5263
+ exports.CreateDeviceChallengeRequest = {
5264
+ "$schema": "http://json-schema.org/draft-07/schema#",
5265
+ "$ref": "#/definitions/CreateDeviceChallengeRequest",
5266
+ "definitions": {
5267
+ "CreateDeviceChallengeRequest": {
5268
+ "type": "object",
5269
+ "properties": {
5270
+ "challengeType": {
5271
+ "type": "string",
5272
+ "const": "Device"
5273
+ }
5274
+ },
5275
+ "required": [
5276
+ "challengeType"
5277
+ ],
5278
+ "additionalProperties": false
5279
+ }
5280
+ }
5281
+ };
5282
+ exports.CreateChallengeRequest = {
5283
+ "$schema": "http://json-schema.org/draft-07/schema#",
5284
+ "$ref": "#/definitions/CreateChallengeRequest",
5285
+ "definitions": {
5286
+ "CreateChallengeRequest": {
5287
+ "anyOf": [
5288
+ {
5289
+ "$ref": "#/definitions/CreateRelationshipChallengeRequest"
5290
+ },
5291
+ {
5292
+ "$ref": "#/definitions/CreateIdentityChallengeRequest"
5293
+ },
5294
+ {
5295
+ "$ref": "#/definitions/CreateDeviceChallengeRequest"
5296
+ }
5297
+ ]
5298
+ },
5299
+ "CreateRelationshipChallengeRequest": {
5300
+ "type": "object",
5301
+ "properties": {
5302
+ "challengeType": {
5303
+ "type": "string",
5304
+ "const": "Relationship"
5305
+ },
5306
+ "relationship": {
5307
+ "type": "string",
5308
+ "format": "relationshipId"
5309
+ }
5310
+ },
5311
+ "required": [
5312
+ "challengeType",
5313
+ "relationship"
5314
+ ],
5315
+ "additionalProperties": false
5316
+ },
5317
+ "CreateIdentityChallengeRequest": {
5318
+ "type": "object",
5319
+ "properties": {
5320
+ "challengeType": {
5321
+ "type": "string",
5322
+ "const": "Identity"
5323
+ }
5324
+ },
5325
+ "required": [
5326
+ "challengeType"
5327
+ ],
5328
+ "additionalProperties": false
5329
+ },
5330
+ "CreateDeviceChallengeRequest": {
5331
+ "type": "object",
5332
+ "properties": {
5333
+ "challengeType": {
5334
+ "type": "string",
5335
+ "const": "Device"
5336
+ }
5337
+ },
5338
+ "required": [
5339
+ "challengeType"
5340
+ ],
5341
+ "additionalProperties": false
5342
+ }
5343
+ }
5344
+ };
5345
+ exports.ValidateChallengeRequest = {
5346
+ "$schema": "http://json-schema.org/draft-07/schema#",
5347
+ "$ref": "#/definitions/ValidateChallengeRequest",
5348
+ "definitions": {
5349
+ "ValidateChallengeRequest": {
5350
+ "type": "object",
5351
+ "properties": {
5352
+ "challenge": {
5353
+ "type": "string"
5354
+ },
5355
+ "signature": {
5356
+ "type": "string"
5357
+ }
5358
+ },
5359
+ "required": [
5360
+ "challenge",
5361
+ "signature"
5362
+ ],
5363
+ "additionalProperties": false
5364
+ }
5365
+ }
5366
+ };
5140
5367
  exports.CreateDeviceRequest = {
5141
5368
  "$schema": "http://json-schema.org/draft-07/schema#",
5142
5369
  "$ref": "#/definitions/CreateDeviceRequest",
@@ -6042,7 +6269,7 @@ class UseCase {
6042
6269
  }
6043
6270
  async execute(request) {
6044
6271
  if (this.requestValidator) {
6045
- const validationResult = this.requestValidator.validate(request);
6272
+ const validationResult = await this.requestValidator.validate(request);
6046
6273
  if (validationResult.isInvalid()) {
6047
6274
  return this.validationFailed(validationResult);
6048
6275
  }
@@ -9446,6 +9673,279 @@ __exportStar(__webpack_require__(/*! ./SyncEverything */ "./dist/useCases/transp
9446
9673
 
9447
9674
  /***/ }),
9448
9675
 
9676
+ /***/ "./dist/useCases/transport/challenges/ChallengeMapper.js":
9677
+ /*!***************************************************************!*\
9678
+ !*** ./dist/useCases/transport/challenges/ChallengeMapper.js ***!
9679
+ \***************************************************************/
9680
+ /***/ ((__unused_webpack_module, exports) => {
9681
+
9682
+ "use strict";
9683
+
9684
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
9685
+ exports.ChallengeMapper = void 0;
9686
+ class ChallengeMapper {
9687
+ static toChallengeDTO(signedChallenge) {
9688
+ const challenge = JSON.parse(signedChallenge.challenge);
9689
+ return {
9690
+ id: challenge.id,
9691
+ expiresAt: challenge.expiresAt,
9692
+ createdBy: challenge.createdBy,
9693
+ createdByDevice: challenge.createdByDevice,
9694
+ type: challenge.type,
9695
+ signature: signedChallenge.signature.toBase64(),
9696
+ challengeString: signedChallenge.challenge
9697
+ };
9698
+ }
9699
+ }
9700
+ exports.ChallengeMapper = ChallengeMapper;
9701
+ //# sourceMappingURL=ChallengeMapper.js.map
9702
+
9703
+ /***/ }),
9704
+
9705
+ /***/ "./dist/useCases/transport/challenges/CreateChallenge.js":
9706
+ /*!***************************************************************!*\
9707
+ !*** ./dist/useCases/transport/challenges/CreateChallenge.js ***!
9708
+ \***************************************************************/
9709
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9710
+
9711
+ "use strict";
9712
+
9713
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9714
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9715
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9716
+ 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;
9717
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9718
+ };
9719
+ var __metadata = (this && this.__metadata) || function (k, v) {
9720
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9721
+ };
9722
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
9723
+ return function (target, key) { decorator(target, key, paramIndex); }
9724
+ };
9725
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
9726
+ exports.CreateChallengeUseCase = void 0;
9727
+ const ts_utils_1 = __webpack_require__(/*! @js-soft/ts-utils */ "./node_modules/@js-soft/ts-utils/dist/index.js");
9728
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
9729
+ const fluent_ts_validator_1 = __webpack_require__(/*! fluent-ts-validator */ "./node_modules/fluent-ts-validator/dist/index.js");
9730
+ const typescript_ioc_1 = __webpack_require__(/*! typescript-ioc */ "./node_modules/typescript-ioc/dist/typescript-ioc.js");
9731
+ const common_1 = __webpack_require__(/*! ../../common */ "./dist/useCases/common/index.js");
9732
+ const ChallengeMapper_1 = __webpack_require__(/*! ./ChallengeMapper */ "./dist/useCases/transport/challenges/ChallengeMapper.js");
9733
+ function isCreateRelationshipChallengeRequest(value) {
9734
+ return value.challengeType === "Relationship" && typeof value.relationship === "string";
9735
+ }
9736
+ function isCreateIdentityChallengeRequest(value) {
9737
+ return value.challengeType === "Identity";
9738
+ }
9739
+ function isCreateDeviceChallengeRequest(value) {
9740
+ return value.challengeType === "Device";
9741
+ }
9742
+ let Validator = class Validator extends common_1.SchemaValidator {
9743
+ constructor(schemaRepository) {
9744
+ super(schemaRepository.getSchema("CreateChallengeRequest"));
9745
+ this.relationshipSchema = schemaRepository.getSchema("CreateRelationshipChallengeRequest");
9746
+ this.identitySchema = schemaRepository.getSchema("CreateIdentityChallengeRequest");
9747
+ this.deviceSchema = schemaRepository.getSchema("CreateDeviceChallengeRequest");
9748
+ }
9749
+ validate(input) {
9750
+ if (this.schema.validate(input).isValid)
9751
+ return new fluent_ts_validator_1.ValidationResult();
9752
+ if (isCreateRelationshipChallengeRequest(input)) {
9753
+ return this.convertValidationResult(this.relationshipSchema.validate(input));
9754
+ }
9755
+ else if (isCreateIdentityChallengeRequest(input)) {
9756
+ return this.convertValidationResult(this.identitySchema.validate(input));
9757
+ }
9758
+ else if (isCreateDeviceChallengeRequest(input)) {
9759
+ return this.convertValidationResult(this.deviceSchema.validate(input));
9760
+ }
9761
+ const result = new fluent_ts_validator_1.ValidationResult();
9762
+ result.addFailures([new fluent_ts_validator_1.ValidationFailure(undefined, "", undefined, common_1.RuntimeErrors.general.invalidPayload().code, common_1.RuntimeErrors.general.invalidPayload().message)]);
9763
+ return result;
9764
+ }
9765
+ };
9766
+ Validator = __decorate([
9767
+ __param(0, typescript_ioc_1.Inject),
9768
+ __metadata("design:paramtypes", [common_1.SchemaRepository])
9769
+ ], Validator);
9770
+ let CreateChallengeUseCase = class CreateChallengeUseCase extends common_1.UseCase {
9771
+ constructor(challengeController, relationshipsController, validator) {
9772
+ super(validator);
9773
+ this.challengeController = challengeController;
9774
+ this.relationshipsController = relationshipsController;
9775
+ }
9776
+ async executeInternal(request) {
9777
+ const relationshipResult = await this.getRelationship(request);
9778
+ if (relationshipResult.isError)
9779
+ return ts_utils_1.Result.fail(relationshipResult.error);
9780
+ let challengeType;
9781
+ switch (request.challengeType) {
9782
+ case "Relationship":
9783
+ challengeType = transport_1.ChallengeType.Relationship;
9784
+ break;
9785
+ case "Identity":
9786
+ challengeType = transport_1.ChallengeType.Identity;
9787
+ break;
9788
+ case "Device":
9789
+ challengeType = transport_1.ChallengeType.Device;
9790
+ break;
9791
+ default:
9792
+ throw new Error("Unknown challenge type.");
9793
+ }
9794
+ const signedChallenge = await this.challengeController.createChallenge(challengeType, relationshipResult.value);
9795
+ return ts_utils_1.Result.ok(ChallengeMapper_1.ChallengeMapper.toChallengeDTO(signedChallenge));
9796
+ }
9797
+ async getRelationship(request) {
9798
+ if (!isCreateRelationshipChallengeRequest(request))
9799
+ return ts_utils_1.Result.ok(undefined);
9800
+ const relationship = await this.relationshipsController.getRelationship(transport_1.CoreId.from(request.relationship));
9801
+ if (!relationship)
9802
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(transport_1.Relationship));
9803
+ return ts_utils_1.Result.ok(relationship);
9804
+ }
9805
+ };
9806
+ CreateChallengeUseCase = __decorate([
9807
+ __param(0, typescript_ioc_1.Inject),
9808
+ __param(1, typescript_ioc_1.Inject),
9809
+ __param(2, typescript_ioc_1.Inject),
9810
+ __metadata("design:paramtypes", [transport_1.ChallengeController,
9811
+ transport_1.RelationshipsController,
9812
+ Validator])
9813
+ ], CreateChallengeUseCase);
9814
+ exports.CreateChallengeUseCase = CreateChallengeUseCase;
9815
+ //# sourceMappingURL=CreateChallenge.js.map
9816
+
9817
+ /***/ }),
9818
+
9819
+ /***/ "./dist/useCases/transport/challenges/ValidateChallange.js":
9820
+ /*!*****************************************************************!*\
9821
+ !*** ./dist/useCases/transport/challenges/ValidateChallange.js ***!
9822
+ \*****************************************************************/
9823
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9824
+
9825
+ "use strict";
9826
+
9827
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9828
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9829
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9830
+ 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;
9831
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9832
+ };
9833
+ var __metadata = (this && this.__metadata) || function (k, v) {
9834
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9835
+ };
9836
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
9837
+ return function (target, key) { decorator(target, key, paramIndex); }
9838
+ };
9839
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
9840
+ exports.ValidateChallengeUseCase = void 0;
9841
+ const ts_utils_1 = __webpack_require__(/*! @js-soft/ts-utils */ "./node_modules/@js-soft/ts-utils/dist/index.js");
9842
+ const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
9843
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
9844
+ const fluent_ts_validator_1 = __webpack_require__(/*! fluent-ts-validator */ "./node_modules/fluent-ts-validator/dist/index.js");
9845
+ const typescript_ioc_1 = __webpack_require__(/*! typescript-ioc */ "./node_modules/typescript-ioc/dist/typescript-ioc.js");
9846
+ const common_1 = __webpack_require__(/*! ../../common */ "./dist/useCases/common/index.js");
9847
+ let Validator = class Validator extends common_1.SchemaValidator {
9848
+ constructor(schemaRepository) {
9849
+ super(schemaRepository.getSchema("ValidateChallengeRequest"));
9850
+ }
9851
+ async validate(value) {
9852
+ const validationResult = await super.validate(value);
9853
+ if (validationResult.isInvalid())
9854
+ return validationResult;
9855
+ const signatureValidationResult = await this.validateSignature(value.signature);
9856
+ if (signatureValidationResult.isError) {
9857
+ validationResult.addFailures([new fluent_ts_validator_1.ValidationFailure(undefined, "signature", undefined, undefined, signatureValidationResult.error.message)]);
9858
+ }
9859
+ const challengeValidationResult = await this.validateChallenge(value.challenge);
9860
+ if (challengeValidationResult.isError) {
9861
+ validationResult.addFailures([new fluent_ts_validator_1.ValidationFailure(undefined, "challenge", undefined, undefined, challengeValidationResult.error.message)]);
9862
+ }
9863
+ return validationResult;
9864
+ }
9865
+ async validateSignature(signature) {
9866
+ try {
9867
+ await crypto_1.CryptoSignature.fromBase64(signature);
9868
+ return ts_utils_1.Result.ok(undefined);
9869
+ }
9870
+ catch {
9871
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.challenges.invalidSignature());
9872
+ }
9873
+ }
9874
+ async validateChallenge(challenge) {
9875
+ try {
9876
+ await transport_1.Challenge.deserialize(challenge);
9877
+ return ts_utils_1.Result.ok(undefined);
9878
+ }
9879
+ catch {
9880
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.challenges.invalidChallenge());
9881
+ }
9882
+ }
9883
+ };
9884
+ Validator = __decorate([
9885
+ __param(0, typescript_ioc_1.Inject),
9886
+ __metadata("design:paramtypes", [common_1.SchemaRepository])
9887
+ ], Validator);
9888
+ let ValidateChallengeUseCase = class ValidateChallengeUseCase extends common_1.UseCase {
9889
+ constructor(challengeController, validator) {
9890
+ super(validator);
9891
+ this.challengeController = challengeController;
9892
+ }
9893
+ async executeInternal(request) {
9894
+ const signature = await crypto_1.CryptoSignature.fromBase64(request.signature);
9895
+ const signedChallenge = await transport_1.ChallengeSigned.from({
9896
+ challenge: request.challenge,
9897
+ signature: signature
9898
+ });
9899
+ try {
9900
+ const success = await this.challengeController.checkChallenge(signedChallenge);
9901
+ const response = {
9902
+ isValid: !!success,
9903
+ challengeCreatedBy: success === null || success === void 0 ? void 0 : success.peer.address.toString()
9904
+ };
9905
+ return ts_utils_1.Result.ok(response);
9906
+ }
9907
+ catch (e) {
9908
+ if (!(e instanceof transport_1.CoreError) || e.code !== "error.transport.notImplemented")
9909
+ throw e;
9910
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.featureNotImplemented("Validating challenges of the type 'Device' is not yet implemented."));
9911
+ }
9912
+ }
9913
+ };
9914
+ ValidateChallengeUseCase = __decorate([
9915
+ __param(0, typescript_ioc_1.Inject),
9916
+ __param(1, typescript_ioc_1.Inject),
9917
+ __metadata("design:paramtypes", [transport_1.ChallengeController, Validator])
9918
+ ], ValidateChallengeUseCase);
9919
+ exports.ValidateChallengeUseCase = ValidateChallengeUseCase;
9920
+ //# sourceMappingURL=ValidateChallange.js.map
9921
+
9922
+ /***/ }),
9923
+
9924
+ /***/ "./dist/useCases/transport/challenges/index.js":
9925
+ /*!*****************************************************!*\
9926
+ !*** ./dist/useCases/transport/challenges/index.js ***!
9927
+ \*****************************************************/
9928
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9929
+
9930
+ "use strict";
9931
+
9932
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9933
+ if (k2 === undefined) k2 = k;
9934
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9935
+ }) : (function(o, m, k, k2) {
9936
+ if (k2 === undefined) k2 = k;
9937
+ o[k2] = m[k];
9938
+ }));
9939
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
9940
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
9941
+ };
9942
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
9943
+ __exportStar(__webpack_require__(/*! ./CreateChallenge */ "./dist/useCases/transport/challenges/CreateChallenge.js"), exports);
9944
+ __exportStar(__webpack_require__(/*! ./ValidateChallange */ "./dist/useCases/transport/challenges/ValidateChallange.js"), exports);
9945
+ //# sourceMappingURL=index.js.map
9946
+
9947
+ /***/ }),
9948
+
9449
9949
  /***/ "./dist/useCases/transport/devices/CreateDevice.js":
9450
9950
  /*!*********************************************************!*\
9451
9951
  !*** ./dist/useCases/transport/devices/CreateDevice.js ***!
@@ -10740,6 +11240,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10740
11240
  };
10741
11241
  Object.defineProperty(exports, "__esModule", ({ value: true }));
10742
11242
  __exportStar(__webpack_require__(/*! ./account */ "./dist/useCases/transport/account/index.js"), exports);
11243
+ __exportStar(__webpack_require__(/*! ./challenges */ "./dist/useCases/transport/challenges/index.js"), exports);
10743
11244
  __exportStar(__webpack_require__(/*! ./devices */ "./dist/useCases/transport/devices/index.js"), exports);
10744
11245
  __exportStar(__webpack_require__(/*! ./files */ "./dist/useCases/transport/files/index.js"), exports);
10745
11246
  __exportStar(__webpack_require__(/*! ./identity */ "./dist/useCases/transport/identity/index.js"), exports);
@@ -15423,7 +15924,6 @@ const names_1 = __webpack_require__(/*! ./names */ "./node_modules/ajv/dist/comp
15423
15924
  const resolve_1 = __webpack_require__(/*! ./resolve */ "./node_modules/ajv/dist/compile/resolve.js");
15424
15925
  const util_1 = __webpack_require__(/*! ./util */ "./node_modules/ajv/dist/compile/util.js");
15425
15926
  const validate_1 = __webpack_require__(/*! ./validate */ "./node_modules/ajv/dist/compile/validate/index.js");
15426
- const URI = __webpack_require__(/*! uri-js */ "./node_modules/uri-js/dist/es5/uri.all.js");
15427
15927
  class SchemaEnv {
15428
15928
  constructor(env) {
15429
15929
  var _a;
@@ -15452,7 +15952,7 @@ function compileSchema(sch) {
15452
15952
  const _sch = getCompilingSchema.call(this, sch);
15453
15953
  if (_sch)
15454
15954
  return _sch;
15455
- const rootId = (0, resolve_1.getFullPath)(sch.root.baseId); // TODO if getFullPath removed 1 tests fails
15955
+ const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); // TODO if getFullPath removed 1 tests fails
15456
15956
  const { es5, lines } = this.opts.code;
15457
15957
  const { ownProperties } = this.opts;
15458
15958
  const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });
@@ -15543,7 +16043,7 @@ function compileSchema(sch) {
15543
16043
  exports.compileSchema = compileSchema;
15544
16044
  function resolveRef(root, baseId, ref) {
15545
16045
  var _a;
15546
- ref = (0, resolve_1.resolveUrl)(baseId, ref);
16046
+ ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);
15547
16047
  const schOrFunc = root.refs[ref];
15548
16048
  if (schOrFunc)
15549
16049
  return schOrFunc;
@@ -15589,9 +16089,9 @@ ref // reference to resolve
15589
16089
  function resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it
15590
16090
  ref // reference to resolve
15591
16091
  ) {
15592
- const p = URI.parse(ref);
15593
- const refPath = (0, resolve_1._getFullPath)(p);
15594
- let baseId = (0, resolve_1.getFullPath)(root.baseId);
16092
+ const p = this.opts.uriResolver.parse(ref);
16093
+ const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);
16094
+ let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, undefined);
15595
16095
  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests
15596
16096
  if (Object.keys(root.schema).length > 0 && refPath === baseId) {
15597
16097
  return getJsonPointer.call(this, p, root);
@@ -15613,7 +16113,7 @@ ref // reference to resolve
15613
16113
  const { schemaId } = this.opts;
15614
16114
  const schId = schema[schemaId];
15615
16115
  if (schId)
15616
- baseId = (0, resolve_1.resolveUrl)(baseId, schId);
16116
+ baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);
15617
16117
  return new SchemaEnv({ schema, schemaId, root, baseId });
15618
16118
  }
15619
16119
  return getJsonPointer.call(this, p, schOrRef);
@@ -15640,12 +16140,12 @@ function getJsonPointer(parsedRef, { baseId, schema, root }) {
15640
16140
  // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?
15641
16141
  const schId = typeof schema === "object" && schema[this.opts.schemaId];
15642
16142
  if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {
15643
- baseId = (0, resolve_1.resolveUrl)(baseId, schId);
16143
+ baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);
15644
16144
  }
15645
16145
  }
15646
16146
  let env;
15647
16147
  if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {
15648
- const $ref = (0, resolve_1.resolveUrl)(baseId, schema.$ref);
16148
+ const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);
15649
16149
  env = resolveSchema.call(this, root, $ref);
15650
16150
  }
15651
16151
  // even though resolution failed we need to return SchemaEnv to throw exception
@@ -15709,10 +16209,10 @@ exports["default"] = names;
15709
16209
  Object.defineProperty(exports, "__esModule", ({ value: true }));
15710
16210
  const resolve_1 = __webpack_require__(/*! ./resolve */ "./node_modules/ajv/dist/compile/resolve.js");
15711
16211
  class MissingRefError extends Error {
15712
- constructor(baseId, ref, msg) {
16212
+ constructor(resolver, baseId, ref, msg) {
15713
16213
  super(msg || `can't resolve reference ${ref} from id ${baseId}`);
15714
- this.missingRef = (0, resolve_1.resolveUrl)(baseId, ref);
15715
- this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(this.missingRef));
16214
+ this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);
16215
+ this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));
15716
16216
  }
15717
16217
  }
15718
16218
  exports["default"] = MissingRefError;
@@ -15733,7 +16233,6 @@ exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getF
15733
16233
  const util_1 = __webpack_require__(/*! ./util */ "./node_modules/ajv/dist/compile/util.js");
15734
16234
  const equal = __webpack_require__(/*! fast-deep-equal */ "./node_modules/fast-deep-equal/index.js");
15735
16235
  const traverse = __webpack_require__(/*! json-schema-traverse */ "./node_modules/json-schema-traverse/index.js");
15736
- const URI = __webpack_require__(/*! uri-js */ "./node_modules/uri-js/dist/es5/uri.all.js");
15737
16236
  // TODO refactor to use keyword definitions
15738
16237
  const SIMPLE_INLINED = new Set([
15739
16238
  "type",
@@ -15798,15 +16297,16 @@ function countKeys(schema) {
15798
16297
  }
15799
16298
  return count;
15800
16299
  }
15801
- function getFullPath(id = "", normalize) {
16300
+ function getFullPath(resolver, id = "", normalize) {
15802
16301
  if (normalize !== false)
15803
16302
  id = normalizeId(id);
15804
- const p = URI.parse(id);
15805
- return _getFullPath(p);
16303
+ const p = resolver.parse(id);
16304
+ return _getFullPath(resolver, p);
15806
16305
  }
15807
16306
  exports.getFullPath = getFullPath;
15808
- function _getFullPath(p) {
15809
- return URI.serialize(p).split("#")[0] + "#";
16307
+ function _getFullPath(resolver, p) {
16308
+ const serialized = resolver.serialize(p);
16309
+ return serialized.split("#")[0] + "#";
15810
16310
  }
15811
16311
  exports._getFullPath = _getFullPath;
15812
16312
  const TRAILING_SLASH_HASH = /#\/?$/;
@@ -15814,19 +16314,19 @@ function normalizeId(id) {
15814
16314
  return id ? id.replace(TRAILING_SLASH_HASH, "") : "";
15815
16315
  }
15816
16316
  exports.normalizeId = normalizeId;
15817
- function resolveUrl(baseId, id) {
16317
+ function resolveUrl(resolver, baseId, id) {
15818
16318
  id = normalizeId(id);
15819
- return URI.resolve(baseId, id);
16319
+ return resolver.resolve(baseId, id);
15820
16320
  }
15821
16321
  exports.resolveUrl = resolveUrl;
15822
16322
  const ANCHOR = /^[a-z_][-a-z0-9._]*$/i;
15823
16323
  function getSchemaRefs(schema, baseId) {
15824
16324
  if (typeof schema == "boolean")
15825
16325
  return {};
15826
- const { schemaId } = this.opts;
16326
+ const { schemaId, uriResolver } = this.opts;
15827
16327
  const schId = normalizeId(schema[schemaId] || baseId);
15828
16328
  const baseIds = { "": schId };
15829
- const pathPrefix = getFullPath(schId, false);
16329
+ const pathPrefix = getFullPath(uriResolver, schId, false);
15830
16330
  const localRefs = {};
15831
16331
  const schemaRefs = new Set();
15832
16332
  traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {
@@ -15840,7 +16340,9 @@ function getSchemaRefs(schema, baseId) {
15840
16340
  addAnchor.call(this, sch.$dynamicAnchor);
15841
16341
  baseIds[jsonPtr] = baseId;
15842
16342
  function addRef(ref) {
15843
- ref = normalizeId(baseId ? URI.resolve(baseId, ref) : ref);
16343
+ // eslint-disable-next-line @typescript-eslint/unbound-method
16344
+ const _resolve = this.opts.uriResolver.resolve;
16345
+ ref = normalizeId(baseId ? _resolve(baseId, ref) : ref);
15844
16346
  if (schemaRefs.has(ref))
15845
16347
  throw ambiguos(ref);
15846
16348
  schemaRefs.add(ref);
@@ -16604,7 +17106,7 @@ function checkNoDefault(it) {
16604
17106
  function updateContext(it) {
16605
17107
  const schId = it.schema[it.opts.schemaId];
16606
17108
  if (schId)
16607
- it.baseId = (0, resolve_1.resolveUrl)(it.baseId, schId);
17109
+ it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);
16608
17110
  }
16609
17111
  function checkAsyncSchema(it) {
16610
17112
  if (it.schema.$async && !it.schemaEnv.$async)
@@ -17226,6 +17728,7 @@ const resolve_1 = __webpack_require__(/*! ./compile/resolve */ "./node_modules/a
17226
17728
  const dataType_1 = __webpack_require__(/*! ./compile/validate/dataType */ "./node_modules/ajv/dist/compile/validate/dataType.js");
17227
17729
  const util_1 = __webpack_require__(/*! ./compile/util */ "./node_modules/ajv/dist/compile/util.js");
17228
17730
  const $dataRefSchema = __webpack_require__(/*! ./refs/data.json */ "./node_modules/ajv/dist/refs/data.json");
17731
+ const uri_1 = __webpack_require__(/*! ./runtime/uri */ "./node_modules/ajv/dist/runtime/uri.js");
17229
17732
  const defaultRegExp = (str, flags) => new RegExp(str, flags);
17230
17733
  defaultRegExp.code = "new RegExp";
17231
17734
  const META_IGNORE_OPTIONS = ["removeAdditional", "useDefaults", "coerceTypes"];
@@ -17269,29 +17772,31 @@ const deprecatedOptions = {
17269
17772
  const MAX_EXPRESSION = 200;
17270
17773
  // eslint-disable-next-line complexity
17271
17774
  function requiredOptions(o) {
17272
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
17775
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
17273
17776
  const s = o.strict;
17274
17777
  const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;
17275
17778
  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;
17276
17779
  const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;
17780
+ const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;
17277
17781
  return {
17278
- strictSchema: (_e = (_d = o.strictSchema) !== null && _d !== void 0 ? _d : s) !== null && _e !== void 0 ? _e : true,
17279
- strictNumbers: (_g = (_f = o.strictNumbers) !== null && _f !== void 0 ? _f : s) !== null && _g !== void 0 ? _g : true,
17280
- strictTypes: (_j = (_h = o.strictTypes) !== null && _h !== void 0 ? _h : s) !== null && _j !== void 0 ? _j : "log",
17281
- strictTuples: (_l = (_k = o.strictTuples) !== null && _k !== void 0 ? _k : s) !== null && _l !== void 0 ? _l : "log",
17282
- strictRequired: (_o = (_m = o.strictRequired) !== null && _m !== void 0 ? _m : s) !== null && _o !== void 0 ? _o : false,
17782
+ strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,
17783
+ strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,
17784
+ strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : "log",
17785
+ strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : "log",
17786
+ strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,
17283
17787
  code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },
17284
- loopRequired: (_p = o.loopRequired) !== null && _p !== void 0 ? _p : MAX_EXPRESSION,
17285
- loopEnum: (_q = o.loopEnum) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,
17286
- meta: (_r = o.meta) !== null && _r !== void 0 ? _r : true,
17287
- messages: (_s = o.messages) !== null && _s !== void 0 ? _s : true,
17288
- inlineRefs: (_t = o.inlineRefs) !== null && _t !== void 0 ? _t : true,
17289
- schemaId: (_u = o.schemaId) !== null && _u !== void 0 ? _u : "$id",
17290
- addUsedSchema: (_v = o.addUsedSchema) !== null && _v !== void 0 ? _v : true,
17291
- validateSchema: (_w = o.validateSchema) !== null && _w !== void 0 ? _w : true,
17292
- validateFormats: (_x = o.validateFormats) !== null && _x !== void 0 ? _x : true,
17293
- unicodeRegExp: (_y = o.unicodeRegExp) !== null && _y !== void 0 ? _y : true,
17294
- int32range: (_z = o.int32range) !== null && _z !== void 0 ? _z : true,
17788
+ loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,
17789
+ loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,
17790
+ meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,
17791
+ messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,
17792
+ inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,
17793
+ schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : "$id",
17794
+ addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,
17795
+ validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,
17796
+ validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,
17797
+ unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,
17798
+ int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,
17799
+ uriResolver: uriResolver,
17295
17800
  };
17296
17801
  }
17297
17802
  class Ajv {
@@ -17873,6 +18378,22 @@ ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default';
17873
18378
 
17874
18379
  /***/ }),
17875
18380
 
18381
+ /***/ "./node_modules/ajv/dist/runtime/uri.js":
18382
+ /*!**********************************************!*\
18383
+ !*** ./node_modules/ajv/dist/runtime/uri.js ***!
18384
+ \**********************************************/
18385
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
18386
+
18387
+ "use strict";
18388
+
18389
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
18390
+ const uri = __webpack_require__(/*! uri-js */ "./node_modules/uri-js/dist/es5/uri.all.js");
18391
+ uri.code = 'require("ajv/dist/runtime/uri").default';
18392
+ exports["default"] = uri;
18393
+ //# sourceMappingURL=uri.js.map
18394
+
18395
+ /***/ }),
18396
+
17876
18397
  /***/ "./node_modules/ajv/dist/runtime/validation_error.js":
17877
18398
  /*!***********************************************************!*\
17878
18399
  !*** ./node_modules/ajv/dist/runtime/validation_error.js ***!
@@ -19118,7 +19639,7 @@ const def = {
19118
19639
  return callRootRef();
19119
19640
  const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);
19120
19641
  if (schOrEnv === undefined)
19121
- throw new ref_error_1.default(baseId, $ref);
19642
+ throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);
19122
19643
  if (schOrEnv instanceof compile_1.SchemaEnv)
19123
19644
  return callValidate(schOrEnv);
19124
19645
  return inlineRefSchema(schOrEnv);