@icure/api 8.2.2 → 8.2.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.
Files changed (337) hide show
  1. package/icc-api/api/IccAuthApi.js +1 -1
  2. package/icc-api/api/IccAuthApi.js.map +1 -1
  3. package/icc-api/api/IccDocumentApi.js.map +1 -1
  4. package/icc-api/api/IccFormApi.js.map +1 -1
  5. package/icc-api/api/IccReceiptApi.js.map +1 -1
  6. package/icc-api/api/IccRestApiPath.js +1 -2
  7. package/icc-api/api/IccRestApiPath.js.map +1 -1
  8. package/icc-api/api/XHR.js +17 -8
  9. package/icc-api/api/XHR.js.map +1 -1
  10. package/icc-api/model/Address.js +1 -1
  11. package/icc-api/model/Address.js.map +1 -1
  12. package/icc-api/model/Amp.js +1 -1
  13. package/icc-api/model/Amp.js.map +1 -1
  14. package/icc-api/model/AmpComponent.js +1 -1
  15. package/icc-api/model/AmpComponent.js.map +1 -1
  16. package/icc-api/model/Ampp.js +1 -1
  17. package/icc-api/model/Ampp.js.map +1 -1
  18. package/icc-api/model/AmppComponent.js +1 -1
  19. package/icc-api/model/AmppComponent.js.map +1 -1
  20. package/icc-api/model/CareTeamMember.js +1 -1
  21. package/icc-api/model/CareTeamMember.js.map +1 -1
  22. package/icc-api/model/CareTeamMembership.js +1 -1
  23. package/icc-api/model/CareTeamMembership.js.map +1 -1
  24. package/icc-api/model/Code.js +1 -1
  25. package/icc-api/model/Code.js.map +1 -1
  26. package/icc-api/model/Contact.js.map +1 -1
  27. package/icc-api/model/Content.js.map +1 -1
  28. package/icc-api/model/DataOwnerTypeEnum.js +1 -1
  29. package/icc-api/model/DataOwnerTypeEnum.js.map +1 -1
  30. package/icc-api/model/DataOwnerWithType.js +1 -1
  31. package/icc-api/model/DataOwnerWithType.js.map +1 -1
  32. package/icc-api/model/DatabaseSynchronization.js +1 -1
  33. package/icc-api/model/DatabaseSynchronization.js.map +1 -1
  34. package/icc-api/model/Dmpp.js +1 -1
  35. package/icc-api/model/Dmpp.js.map +1 -1
  36. package/icc-api/model/Document.js +1 -1
  37. package/icc-api/model/Document.js.map +1 -1
  38. package/icc-api/model/DocumentTemplate.d.ts +1 -1
  39. package/icc-api/model/DocumentTemplate.js +1 -1
  40. package/icc-api/model/DocumentTemplate.js.map +1 -1
  41. package/icc-api/model/Editor.js +1 -1
  42. package/icc-api/model/Editor.js.map +1 -1
  43. package/icc-api/model/EfactInvoice.js +1 -1
  44. package/icc-api/model/EfactInvoice.js.map +1 -1
  45. package/icc-api/model/EmailOrSmsMessage.js +1 -1
  46. package/icc-api/model/EmailOrSmsMessage.js.map +1 -1
  47. package/icc-api/model/FlatRateTarification.js +1 -1
  48. package/icc-api/model/FlatRateTarification.js.map +1 -1
  49. package/icc-api/model/Formula.js +1 -1
  50. package/icc-api/model/Formula.js.map +1 -1
  51. package/icc-api/model/FrontEndMigration.js +1 -1
  52. package/icc-api/model/FrontEndMigration.js.map +1 -1
  53. package/icc-api/model/HealthElement.js +1 -1
  54. package/icc-api/model/HealthElement.js.map +1 -1
  55. package/icc-api/model/HealthcareParty.js +1 -1
  56. package/icc-api/model/HealthcareParty.js.map +1 -1
  57. package/icc-api/model/HealthcarePartyHistoryStatus.js +1 -1
  58. package/icc-api/model/HealthcarePartyHistoryStatus.js.map +1 -1
  59. package/icc-api/model/Ingredient.js +1 -1
  60. package/icc-api/model/Ingredient.js.map +1 -1
  61. package/icc-api/model/Invoice.js +1 -1
  62. package/icc-api/model/Invoice.js.map +1 -1
  63. package/icc-api/model/InvoiceItem.js +1 -1
  64. package/icc-api/model/InvoiceItem.js.map +1 -1
  65. package/icc-api/model/InvoicingCode.js +1 -1
  66. package/icc-api/model/InvoicingCode.js.map +1 -1
  67. package/icc-api/model/MaintenanceTask.js +1 -1
  68. package/icc-api/model/MaintenanceTask.js.map +1 -1
  69. package/icc-api/model/Measure.js.map +1 -1
  70. package/icc-api/model/MedicalHouseContract.js +1 -1
  71. package/icc-api/model/MedicalHouseContract.js.map +1 -1
  72. package/icc-api/model/ModelHelper.js +9 -10
  73. package/icc-api/model/ModelHelper.js.map +1 -1
  74. package/icc-api/model/Partnership.js +1 -1
  75. package/icc-api/model/Partnership.js.map +1 -1
  76. package/icc-api/model/Patient.js +1 -1
  77. package/icc-api/model/Patient.js.map +1 -1
  78. package/icc-api/model/PatientByHcPartyGenderEducationProfession.js +1 -1
  79. package/icc-api/model/PatientByHcPartyGenderEducationProfession.js.map +1 -1
  80. package/icc-api/model/PatientHealthCareParty.js +1 -1
  81. package/icc-api/model/PatientHealthCareParty.js.map +1 -1
  82. package/icc-api/model/Payment.js +1 -1
  83. package/icc-api/model/Payment.js.map +1 -1
  84. package/icc-api/model/PermissionCriterion.js +1 -1
  85. package/icc-api/model/PermissionCriterion.js.map +1 -1
  86. package/icc-api/model/PermissionItem.js +1 -1
  87. package/icc-api/model/PermissionItem.js.map +1 -1
  88. package/icc-api/model/PersonName.js +1 -1
  89. package/icc-api/model/PersonName.js.map +1 -1
  90. package/icc-api/model/PropertyTypeStub.js +1 -1
  91. package/icc-api/model/PropertyTypeStub.js.map +1 -1
  92. package/icc-api/model/Reimbursement.js +1 -1
  93. package/icc-api/model/Reimbursement.js.map +1 -1
  94. package/icc-api/model/RoleSourceEnum.js +1 -1
  95. package/icc-api/model/RoleSourceEnum.js.map +1 -1
  96. package/icc-api/model/SecureDelegation.js +1 -1
  97. package/icc-api/model/SecureDelegation.js.map +1 -1
  98. package/icc-api/model/Service.js.map +1 -1
  99. package/icc-api/model/StandardSubstance.js +1 -1
  100. package/icc-api/model/StandardSubstance.js.map +1 -1
  101. package/icc-api/model/SumehrValidity.js +1 -1
  102. package/icc-api/model/SumehrValidity.js.map +1 -1
  103. package/icc-api/model/Tarification.js +1 -1
  104. package/icc-api/model/Tarification.js.map +1 -1
  105. package/icc-api/model/Telecom.js +1 -1
  106. package/icc-api/model/Telecom.js.map +1 -1
  107. package/icc-api/model/Topic.js +1 -1
  108. package/icc-api/model/Topic.js.map +1 -1
  109. package/icc-api/model/TypedValueObject.js +1 -1
  110. package/icc-api/model/TypedValueObject.js.map +1 -1
  111. package/icc-api/model/User.js +1 -1
  112. package/icc-api/model/User.js.map +1 -1
  113. package/icc-api/model/UserTypeEnum.js +1 -1
  114. package/icc-api/model/UserTypeEnum.js.map +1 -1
  115. package/icc-api/model/VirtualIngredient.js +1 -1
  116. package/icc-api/model/VirtualIngredient.js.map +1 -1
  117. package/icc-api/model/internal/RecoveryData.js +1 -1
  118. package/icc-api/model/internal/RecoveryData.js.map +1 -1
  119. package/icc-api/model/requests/EntityBulkShareResult.js.map +1 -1
  120. package/icc-api/model/requests/EntityShareOrMetadataUpdateRequest.js.map +1 -1
  121. package/icc-api/model/requests/EntityShareRequest.js +1 -1
  122. package/icc-api/model/requests/EntityShareRequest.js.map +1 -1
  123. package/icc-api/model/requests/EntitySharedMetadataUpdateRequest.js +1 -1
  124. package/icc-api/model/requests/EntitySharedMetadataUpdateRequest.js.map +1 -1
  125. package/icc-x-api/auth/AuthenticationProvider.js.map +1 -1
  126. package/icc-x-api/auth/BasicAuthService.js.map +1 -1
  127. package/icc-x-api/auth/EnsembleAuthService.js.map +1 -1
  128. package/icc-x-api/auth/JwtAuthService.js.map +1 -1
  129. package/icc-x-api/auth/JwtBridgedAuthService.d.ts +1 -1
  130. package/icc-x-api/auth/JwtBridgedAuthService.js +1 -1
  131. package/icc-x-api/auth/JwtBridgedAuthService.js.map +1 -1
  132. package/icc-x-api/auth/JwtUtils.js +3 -4
  133. package/icc-x-api/auth/JwtUtils.js.map +1 -1
  134. package/icc-x-api/auth/NoAuthService.js.map +1 -1
  135. package/icc-x-api/auth/SmartAuthProvider.d.ts +1 -1
  136. package/icc-x-api/auth/SmartAuthProvider.js +1 -1
  137. package/icc-x-api/auth/SmartAuthProvider.js.map +1 -1
  138. package/icc-x-api/crypto/AES.js.map +1 -1
  139. package/icc-x-api/crypto/AccessControlKeysHeadersProvider.js.map +1 -1
  140. package/icc-x-api/crypto/AccessControlSecretUtils.js.map +1 -1
  141. package/icc-x-api/crypto/BaseExchangeDataManager.js +10 -10
  142. package/icc-x-api/crypto/BaseExchangeDataManager.js.map +1 -1
  143. package/icc-x-api/crypto/BaseExchangeKeysManager.js +4 -4
  144. package/icc-x-api/crypto/BaseExchangeKeysManager.js.map +1 -1
  145. package/icc-x-api/crypto/CryptoStrategies.d.ts +5 -7
  146. package/icc-x-api/crypto/CryptoStrategies.js.map +1 -1
  147. package/icc-x-api/crypto/DelegationsDeAnonymization.js +1 -1
  148. package/icc-x-api/crypto/DelegationsDeAnonymization.js.map +1 -1
  149. package/icc-x-api/crypto/ExchangeDataManager.js +7 -9
  150. package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
  151. package/icc-x-api/crypto/ExchangeDataMapManager.js.map +1 -1
  152. package/icc-x-api/crypto/ExchangeKeysManager.js +1 -1
  153. package/icc-x-api/crypto/ExchangeKeysManager.js.map +1 -1
  154. package/icc-x-api/crypto/ExtendedApisUtilsImpl.js +11 -10
  155. package/icc-x-api/crypto/ExtendedApisUtilsImpl.js.map +1 -1
  156. package/icc-x-api/crypto/HMACUtils.js.map +1 -1
  157. package/icc-x-api/crypto/KeyRecovery.js +5 -5
  158. package/icc-x-api/crypto/KeyRecovery.js.map +1 -1
  159. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js +3 -3
  160. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js.map +1 -1
  161. package/icc-x-api/crypto/RSA.js +4 -4
  162. package/icc-x-api/crypto/RSA.js.map +1 -1
  163. package/icc-x-api/crypto/RecoveryDataEncryption.js +1 -1
  164. package/icc-x-api/crypto/RecoveryDataEncryption.js.map +1 -1
  165. package/icc-x-api/crypto/SecretIdUseOption.js +1 -1
  166. package/icc-x-api/crypto/SecretIdUseOption.js.map +1 -1
  167. package/icc-x-api/crypto/SecureDelegationsEncryption.js +4 -4
  168. package/icc-x-api/crypto/SecureDelegationsEncryption.js.map +1 -1
  169. package/icc-x-api/crypto/SecureDelegationsManager.js +1 -1
  170. package/icc-x-api/crypto/SecureDelegationsManager.js.map +1 -1
  171. package/icc-x-api/crypto/SecurityMetadataDecryptor.d.ts +1 -1
  172. package/icc-x-api/crypto/SecurityMetadataDecryptor.js +9 -9
  173. package/icc-x-api/crypto/SecurityMetadataDecryptor.js.map +1 -1
  174. package/icc-x-api/crypto/ShamirKeysManager.js.map +1 -1
  175. package/icc-x-api/crypto/ShareMetadataBehaviour.js +1 -1
  176. package/icc-x-api/crypto/ShareMetadataBehaviour.js.map +1 -1
  177. package/icc-x-api/crypto/TransferKeysManager.js +1 -1
  178. package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
  179. package/icc-x-api/crypto/UserEncryptionKeysManager.js +2 -2
  180. package/icc-x-api/crypto/UserEncryptionKeysManager.js.map +1 -1
  181. package/icc-x-api/crypto/shamir.d.ts +2 -2
  182. package/icc-x-api/crypto/shamir.js +4 -4
  183. package/icc-x-api/crypto/shamir.js.map +1 -1
  184. package/icc-x-api/crypto/utils.js +14 -15
  185. package/icc-x-api/crypto/utils.js.map +1 -1
  186. package/icc-x-api/icc-accesslog-x-api.js +10 -10
  187. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  188. package/icc-x-api/icc-bekmehr-x-api.js.map +1 -1
  189. package/icc-x-api/icc-calendar-item-x-api.js +7 -7
  190. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  191. package/icc-x-api/icc-classification-x-api.js +5 -5
  192. package/icc-x-api/icc-classification-x-api.js.map +1 -1
  193. package/icc-x-api/icc-code-x-api.js.map +1 -1
  194. package/icc-x-api/icc-contact-x-api.js +12 -12
  195. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  196. package/icc-x-api/icc-data-owner-x-api.js.map +1 -1
  197. package/icc-x-api/icc-device-x-api.js +2 -2
  198. package/icc-x-api/icc-device-x-api.js.map +1 -1
  199. package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
  200. package/icc-x-api/icc-document-x-api.js +15 -15
  201. package/icc-x-api/icc-document-x-api.js.map +1 -1
  202. package/icc-x-api/icc-form-x-api.js +7 -7
  203. package/icc-x-api/icc-form-x-api.js.map +1 -1
  204. package/icc-x-api/icc-hcparty-x-api.js +4 -4
  205. package/icc-x-api/icc-hcparty-x-api.js.map +1 -1
  206. package/icc-x-api/icc-helement-x-api.js +10 -10
  207. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  208. package/icc-x-api/icc-icure-maintenance-x-api.js.map +1 -1
  209. package/icc-x-api/icc-invoice-x-api.js +7 -7
  210. package/icc-x-api/icc-invoice-x-api.js.map +1 -1
  211. package/icc-x-api/icc-maintenance-task-x-api.js +7 -7
  212. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
  213. package/icc-x-api/icc-message-x-api.js +8 -8
  214. package/icc-x-api/icc-message-x-api.js.map +1 -1
  215. package/icc-x-api/icc-patient-x-api.js +11 -11
  216. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  217. package/icc-x-api/icc-receipt-x-api.js +10 -10
  218. package/icc-x-api/icc-receipt-x-api.js.map +1 -1
  219. package/icc-x-api/icc-recovery-x-api.js +4 -4
  220. package/icc-x-api/icc-recovery-x-api.js.map +1 -1
  221. package/icc-x-api/icc-time-table-x-api.js +5 -5
  222. package/icc-x-api/icc-time-table-x-api.js.map +1 -1
  223. package/icc-x-api/icc-topic-x-api.js +9 -9
  224. package/icc-x-api/icc-topic-x-api.js.map +1 -1
  225. package/icc-x-api/icc-user-x-api.js +4 -4
  226. package/icc-x-api/icc-user-x-api.js.map +1 -1
  227. package/icc-x-api/index.js +22 -22
  228. package/icc-x-api/index.js.map +1 -1
  229. package/icc-x-api/maintenance/KeyPairUpdateRequest.js +2 -2
  230. package/icc-x-api/maintenance/KeyPairUpdateRequest.js.map +1 -1
  231. package/icc-x-api/storage/IcureStorageFacade.js +1 -1
  232. package/icc-x-api/storage/IcureStorageFacade.js.map +1 -1
  233. package/icc-x-api/storage/LocalStorageImpl.js +1 -1
  234. package/icc-x-api/storage/LocalStorageImpl.js.map +1 -1
  235. package/icc-x-api/utils/EntityWithDelegationTypeName.js +4 -4
  236. package/icc-x-api/utils/EntityWithDelegationTypeName.js.map +1 -1
  237. package/icc-x-api/utils/asn1-packer.js +2 -3
  238. package/icc-x-api/utils/asn1-packer.js.map +1 -1
  239. package/icc-x-api/utils/asn1-parser.js +1 -2
  240. package/icc-x-api/utils/asn1-parser.js.map +1 -1
  241. package/icc-x-api/utils/binary-utils.js +11 -11
  242. package/icc-x-api/utils/binary-utils.js.map +1 -1
  243. package/icc-x-api/utils/code-util.js +1 -2
  244. package/icc-x-api/utils/code-util.js.map +1 -1
  245. package/icc-x-api/utils/collection-utils.js +5 -6
  246. package/icc-x-api/utils/collection-utils.js.map +1 -1
  247. package/icc-x-api/utils/crypto-utils.d.ts +1 -1
  248. package/icc-x-api/utils/crypto-utils.js +17 -18
  249. package/icc-x-api/utils/crypto-utils.js.map +1 -1
  250. package/icc-x-api/utils/formatting-util.js +21 -21
  251. package/icc-x-api/utils/formatting-util.js.map +1 -1
  252. package/icc-x-api/utils/functional-util.js +3 -4
  253. package/icc-x-api/utils/functional-util.js.map +1 -1
  254. package/icc-x-api/utils/graph-utils.js +3 -4
  255. package/icc-x-api/utils/graph-utils.js.map +1 -1
  256. package/icc-x-api/utils/hcp-util.js +4 -4
  257. package/icc-x-api/utils/hcp-util.js.map +1 -1
  258. package/icc-x-api/utils/insurability-util.js +6 -7
  259. package/icc-x-api/utils/insurability-util.js.map +1 -1
  260. package/icc-x-api/utils/lru-temporised-async-cache.js.map +1 -1
  261. package/icc-x-api/utils/net-utils.js +3 -4
  262. package/icc-x-api/utils/net-utils.js.map +1 -1
  263. package/icc-x-api/utils/person-util.js +3 -4
  264. package/icc-x-api/utils/person-util.js.map +1 -1
  265. package/icc-x-api/utils/proxy-utils.js.map +1 -1
  266. package/icc-x-api/utils/simple-lru-cache.js.map +1 -1
  267. package/icc-x-api/utils/uuid-encoder.js +2 -2
  268. package/icc-x-api/utils/uuid-encoder.js.map +1 -1
  269. package/icc-x-api/utils/websocket.d.ts +0 -1
  270. package/icc-x-api/utils/websocket.js +3 -3
  271. package/icc-x-api/utils/websocket.js.map +1 -1
  272. package/package.json +3 -3
  273. package/test/icc-api/api/IccAgendaApi.js.map +1 -1
  274. package/test/icc-api/api/IccCalendarItemApi.js.map +1 -1
  275. package/test/icc-api/api/IccCalendarItemTypeApi.js +2 -2
  276. package/test/icc-api/api/IccCalendarItemTypeApi.js.map +1 -1
  277. package/test/icc-api/api/IccDocumentApi.js.map +1 -1
  278. package/test/icc-api/api/IccKeywordApi.js.map +1 -1
  279. package/test/icc-api/api/IccMedicalLocationApi.js.map +1 -1
  280. package/test/icc-api/api/IccPlaceApi.js.map +1 -1
  281. package/test/icc-api/api/IccUserApi.js +6 -6
  282. package/test/icc-x-api/auth/group-switch-test.js.map +1 -1
  283. package/test/icc-x-api/auth/jwt-concurrency-test.js +1 -2
  284. package/test/icc-x-api/auth/jwt-concurrency-test.js.map +1 -1
  285. package/test/icc-x-api/auth/jwt-provider-test.js.map +1 -1
  286. package/test/icc-x-api/auth/smart-auth-provider-test.js.map +1 -1
  287. package/test/icc-x-api/autofix-anonymity-test.js.map +1 -1
  288. package/test/icc-x-api/confidential-entities-test.js +1 -1
  289. package/test/icc-x-api/confidential-entities-test.js.map +1 -1
  290. package/test/icc-x-api/crud/comprehensive-crud-test.js.map +1 -1
  291. package/test/icc-x-api/crud/entities-crud-test-interface.js +24 -24
  292. package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -1
  293. package/test/icc-x-api/crypto/anonymous-delegations-test.js +2 -2
  294. package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +1 -1
  295. package/test/icc-x-api/crypto/cryptoTest.js.map +1 -1
  296. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +1 -1
  297. package/test/icc-x-api/crypto/exchange-data-manager-test.js +4 -4
  298. package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -1
  299. package/test/icc-x-api/crypto/full-crypto-test.js +5 -5
  300. package/test/icc-x-api/crypto/full-crypto-test.js.map +1 -1
  301. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js +7 -7
  302. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +1 -1
  303. package/test/icc-x-api/crypto/secure-delegations-manager-test.js +2 -2
  304. package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -1
  305. package/test/icc-x-api/crypto/shamir.js.map +1 -1
  306. package/test/icc-x-api/crypto/soft-deleted-data-owners.js +3 -3
  307. package/test/icc-x-api/crypto/soft-deleted-data-owners.js.map +1 -1
  308. package/test/icc-x-api/entity-with-attachments-api-test.js +2 -2
  309. package/test/icc-x-api/entity-with-attachments-api-test.js.map +1 -1
  310. package/test/icc-x-api/icc-maintenance-task-x-api-test.js +4 -4
  311. package/test/icc-x-api/icc-message-x-api.js +1 -1
  312. package/test/icc-x-api/icc-message-x-api.js.map +1 -1
  313. package/test/icc-x-api/icc-patient-x-api-test.js.map +1 -1
  314. package/test/icc-x-api/icc-recovery-x-api.js.map +1 -1
  315. package/test/icc-x-api/icc-topic-x-api.js.map +1 -1
  316. package/test/icc-x-api/icc-user-x-api-test.js.map +1 -1
  317. package/test/icc-x-api/patient-user.js.map +1 -1
  318. package/test/icc-x-api/test-legacy-data-support.js.map +1 -1
  319. package/test/icc-x-api/utils/graph-test.js.map +1 -1
  320. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +1 -1
  321. package/test/support/CSM-243.js +2 -2
  322. package/test/support/CSM-243.js.map +1 -1
  323. package/test/support/CSM-93.js +1 -1
  324. package/test/support/CSM-93.js.map +1 -1
  325. package/test/utils/FakeDataOwnerApi.js.map +1 -1
  326. package/test/utils/FakeEncryptionKeysManager.js +2 -2
  327. package/test/utils/FakeEncryptionKeysManager.js.map +1 -1
  328. package/test/utils/FakeExchangeDataApi.js.map +1 -1
  329. package/test/utils/FakeExchangeDataManager.js.map +1 -1
  330. package/test/utils/FakeGenericApi.js.map +1 -1
  331. package/test/utils/TestApi.js +2 -2
  332. package/test/utils/TestApi.js.map +1 -1
  333. package/test/utils/TestCryptoStrategies.js.map +1 -1
  334. package/test/utils/TestStorage.js +2 -2
  335. package/test/utils/TestStorage.js.map +1 -1
  336. package/test/utils/test_utils.js +22 -22
  337. package/test/utils/test_utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FakeDataOwnerApi.js","sourceRoot":"","sources":["../../../test/utils/FakeDataOwnerApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataOwner, DataOwnerOrStub, IccDataOwnerXApi } from '../../icc-x-api/icc-data-owner-x-api'\nimport { FakeGenericApi } from './FakeGenericApi'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { Device } from '../../icc-api/model/Device'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { KeyPair } from '../../icc-x-api/crypto/RSA'\nimport { CryptoPrimitives, WebCryptoPrimitives } from '../../icc-x-api/crypto/CryptoPrimitives'\nimport { webcrypto } from 'crypto'\nimport { ua2hex } from '../../icc-x-api'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { User } from '../../icc-api/model/User'\n\nexport class FakeDataOwnerApi extends IccDataOwnerXApi {\n private readonly selfId: string\n private readonly data = new FakeGenericApi<DataOwner & { type: DataOwnerTypeEnum }>()\n private readonly primitives = new WebCryptoPrimitives(webcrypto as any)\n\n constructor(self: DataOwner & { type: DataOwnerTypeEnum }, others: (DataOwner & { type: DataOwnerTypeEnum })[] = []) {\n super('fake', {}, null as any, null as any)\n this.selfId = self.id!\n this.data.createObject(self)\n others.forEach((x) => this.data.createObject(x))\n }\n\n async getCurrentDataOwnerId(): Promise<string> {\n return this.selfId\n }\n\n async getCurrentDataOwnerHierarchyIds(): Promise<string[]> {\n let res = [this.selfId]\n let latestCheck = this.data.getById(this.selfId)\n while (latestCheck && (latestCheck as any).parentId) {\n const currId: string = (latestCheck as any).parentId\n latestCheck = this.data.getById(currId)!\n res = [currId, ...res]\n }\n return res\n }\n\n async getCurrentDataOwnerHierarchyIdsFrom(parentId: string): Promise<string[]> {\n const res = []\n for (const dataOwnerId of await this.getCurrentDataOwnerHierarchyIds()) {\n res.push(dataOwnerId)\n if (dataOwnerId === parentId) return res\n }\n throw new Error(`${parentId} is not part of the data owner hierarchy for the current user`)\n }\n\n async getCurrentDataOwner(): Promise<DataOwnerWithType> {\n return this.mapObject(this.data.getById(this.selfId)!)\n }\n\n async getCurrentDataOwnerHierarchy(): Promise<DataOwnerWithType[]> {\n return (await this.getCurrentDataOwnerHierarchyIds()).map((id) => this.mapObject(this.data.getById(id)!))\n }\n\n async getCurrentDataOwnerType(): Promise<DataOwnerTypeEnum> {\n return this.data.getById(this.selfId)!.type\n }\n\n getHexPublicKeysWithSha1Of(dataOwner: DataOwnerOrStub): Set<string> {\n return super.getHexPublicKeysWithSha1Of(dataOwner)\n }\n\n getHexPublicKeysWithSha256Of(dataOwner: DataOwnerOrStub): Set<string> {\n return super.getHexPublicKeysWithSha256Of(dataOwner)\n }\n\n async getCurrentDataOwnerStub(): Promise<CryptoActorStubWithType> {\n return CryptoActorStubWithType.fromDataOwner(await this.getCurrentDataOwner())\n }\n\n getDataOwnerIdOf(user: User): string {\n return super.getDataOwnerIdOf(user)\n }\n\n async getDataOwner(ownerId: string): Promise<DataOwnerWithType> {\n return this.mapObject(this.data.getById(ownerId)!)\n }\n\n clearCurrentDataOwnerIdsCache() {\n super.clearCurrentDataOwnerIdsCache()\n }\n\n async modifyCryptoActorStub(stub: CryptoActorStubWithType): Promise<CryptoActorStubWithType> {\n const existing = this.data.getById(stub.stub.id!)\n if (!existing) throw new Error('Data owner not found.')\n if (existing.type !== stub.type) throw new Error('Unexpected type for data owner.')\n return CryptoActorStubWithType.fromDataOwner(this.mapObject(this.data.modifyObject({ ...existing, ...stub.stub })))\n }\n\n async getCryptoActorStub(ownerId: string): Promise<CryptoActorStubWithType> {\n return CryptoActorStubWithType.fromDataOwner(await this.getDataOwner(ownerId))\n }\n\n async addPublicKeyForOwner(dataOwnerId: string, keyPair: KeyPair<CryptoKey>) {\n const retrieved = await this.getCryptoActorStub(dataOwnerId)\n const publicHex = ua2hex(await this.primitives.RSA.exportKey(keyPair.publicKey, 'spki'))\n await this.modifyCryptoActorStub({\n type: retrieved.type,\n stub: {\n ...retrieved.stub,\n publicKeysForOaepWithSha256: [...(retrieved.stub.publicKeysForOaepWithSha256 || []), publicHex],\n },\n })\n }\n\n private mapObject(x: DataOwner & { type: DataOwnerTypeEnum }): DataOwnerWithType {\n const type = x.type\n delete (x as any).type\n if (type === DataOwnerTypeEnum.Patient) {\n return { type, dataOwner: x as Patient }\n } else if (type === DataOwnerTypeEnum.Device) {\n return { type, dataOwner: x as Device }\n } else if (type === DataOwnerTypeEnum.Hcp) {\n return { type, dataOwner: x as HealthcareParty }\n } else throw new Error('Unexpected type for data owner.')\n }\n}\n"]}
1
+ {"version":3,"file":"FakeDataOwnerApi.js","sourceRoot":"","sources":["../../../test/utils/FakeDataOwnerApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataOwner, DataOwnerOrStub, IccDataOwnerXApi } from '../../icc-x-api/icc-data-owner-x-api'\nimport { FakeGenericApi } from './FakeGenericApi'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { Device } from '../../icc-api/model/Device'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { KeyPair } from '../../icc-x-api/crypto/RSA'\nimport { CryptoPrimitives, WebCryptoPrimitives } from '../../icc-x-api/crypto/CryptoPrimitives'\nimport { webcrypto } from 'crypto'\nimport { ua2hex } from '../../icc-x-api'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { User } from '../../icc-api/model/User'\n\nexport class FakeDataOwnerApi extends IccDataOwnerXApi {\n private readonly selfId: string\n private readonly data = new FakeGenericApi<DataOwner & { type: DataOwnerTypeEnum }>()\n private readonly primitives = new WebCryptoPrimitives(webcrypto as any)\n\n constructor(self: DataOwner & { type: DataOwnerTypeEnum }, others: (DataOwner & { type: DataOwnerTypeEnum })[] = []) {\n super('fake', {}, null as any, null as any)\n this.selfId = self.id!\n this.data.createObject(self)\n others.forEach((x) => this.data.createObject(x))\n }\n\n async getCurrentDataOwnerId(): Promise<string> {\n return this.selfId\n }\n\n async getCurrentDataOwnerHierarchyIds(): Promise<string[]> {\n let res = [this.selfId]\n let latestCheck = this.data.getById(this.selfId)\n while (latestCheck && (latestCheck as any).parentId) {\n const currId: string = (latestCheck as any).parentId\n latestCheck = this.data.getById(currId)!\n res = [currId, ...res]\n }\n return res\n }\n\n async getCurrentDataOwnerHierarchyIdsFrom(parentId: string): Promise<string[]> {\n const res = []\n for (const dataOwnerId of await this.getCurrentDataOwnerHierarchyIds()) {\n res.push(dataOwnerId)\n if (dataOwnerId === parentId) return res\n }\n throw new Error(`${parentId} is not part of the data owner hierarchy for the current user`)\n }\n\n async getCurrentDataOwner(): Promise<DataOwnerWithType> {\n return this.mapObject(this.data.getById(this.selfId)!)\n }\n\n async getCurrentDataOwnerHierarchy(): Promise<DataOwnerWithType[]> {\n return (await this.getCurrentDataOwnerHierarchyIds()).map((id) => this.mapObject(this.data.getById(id)!))\n }\n\n async getCurrentDataOwnerType(): Promise<DataOwnerTypeEnum> {\n return this.data.getById(this.selfId)!.type\n }\n\n getHexPublicKeysWithSha1Of(dataOwner: DataOwnerOrStub): Set<string> {\n return super.getHexPublicKeysWithSha1Of(dataOwner)\n }\n\n getHexPublicKeysWithSha256Of(dataOwner: DataOwnerOrStub): Set<string> {\n return super.getHexPublicKeysWithSha256Of(dataOwner)\n }\n\n async getCurrentDataOwnerStub(): Promise<CryptoActorStubWithType> {\n return CryptoActorStubWithType.fromDataOwner(await this.getCurrentDataOwner())\n }\n\n getDataOwnerIdOf(user: User): string {\n return super.getDataOwnerIdOf(user)\n }\n\n async getDataOwner(ownerId: string): Promise<DataOwnerWithType> {\n return this.mapObject(this.data.getById(ownerId)!)\n }\n\n clearCurrentDataOwnerIdsCache() {\n super.clearCurrentDataOwnerIdsCache()\n }\n\n async modifyCryptoActorStub(stub: CryptoActorStubWithType): Promise<CryptoActorStubWithType> {\n const existing = this.data.getById(stub.stub.id!)\n if (!existing) throw new Error('Data owner not found.')\n if (existing.type !== stub.type) throw new Error('Unexpected type for data owner.')\n return CryptoActorStubWithType.fromDataOwner(this.mapObject(this.data.modifyObject({ ...existing, ...stub.stub })))\n }\n\n async getCryptoActorStub(ownerId: string): Promise<CryptoActorStubWithType> {\n return CryptoActorStubWithType.fromDataOwner(await this.getDataOwner(ownerId))\n }\n\n async addPublicKeyForOwner(dataOwnerId: string, keyPair: KeyPair<CryptoKey>) {\n const retrieved = await this.getCryptoActorStub(dataOwnerId)\n const publicHex = ua2hex(await this.primitives.RSA.exportKey(keyPair.publicKey, 'spki'))\n await this.modifyCryptoActorStub({\n type: retrieved.type,\n stub: {\n ...retrieved.stub,\n publicKeysForOaepWithSha256: [...(retrieved.stub.publicKeysForOaepWithSha256 || []), publicHex],\n },\n })\n }\n\n private mapObject(x: DataOwner & { type: DataOwnerTypeEnum }): DataOwnerWithType {\n const type = x.type\n delete (x as any).type\n if (type === DataOwnerTypeEnum.Patient) {\n return { type, dataOwner: x as Patient }\n } else if (type === DataOwnerTypeEnum.Device) {\n return { type, dataOwner: x as Device }\n } else if (type === DataOwnerTypeEnum.Hcp) {\n return { type, dataOwner: x as HealthcareParty }\n } else throw new Error('Unexpected type for data owner.')\n }\n}\n"]}
@@ -20,8 +20,8 @@ class FakeEncryptionKeysManager extends UserEncryptionKeysManager_1.UserEncrypti
20
20
  super(null, null, null, null, null, null, null, null);
21
21
  this.keys = keys;
22
22
  }
23
- static create(primitives, verifiedKeys, unverifiedKeys = []) {
24
- return __awaiter(this, void 0, void 0, function* () {
23
+ static create(primitives_1, verifiedKeys_1) {
24
+ return __awaiter(this, arguments, void 0, function* (primitives, verifiedKeys, unverifiedKeys = []) {
25
25
  const keysByFingerprint = {};
26
26
  for (const key of verifiedKeys) {
27
27
  const fingerprint = (0, utils_1.fingerprintV1)((0, icc_x_api_1.ua2hex)(yield primitives.RSA.exportKey(key.publicKey, 'spki')));
@@ -1 +1 @@
1
- {"version":3,"file":"FakeEncryptionKeysManager.js","sourceRoot":"","sources":["../../../test/utils/FakeEncryptionKeysManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { UserEncryptionKeysManager } from '../../icc-x-api/crypto/UserEncryptionKeysManager'\nimport { DataOwner } from '../../icc-x-api/icc-data-owner-x-api'\nimport { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { CryptoPrimitives } from '../../icc-x-api/crypto/CryptoPrimitives'\nimport { ua2hex } from '../../icc-x-api'\nimport * as _ from 'lodash'\nimport { fingerprintV1 } from '../../icc-x-api/crypto/utils'\n\nexport class FakeEncryptionKeysManager extends UserEncryptionKeysManager {\n constructor(private readonly keys: { [fingerprint: string]: { pair: KeyPair<CryptoKey>; verified: boolean } }) {\n super(null as any, null as any, null as any, null as any, null as any, null as any, null as any, null as any)\n }\n\n static async create(\n primitives: CryptoPrimitives,\n verifiedKeys: KeyPair<CryptoKey>[],\n unverifiedKeys: KeyPair<CryptoKey>[] = []\n ): Promise<FakeEncryptionKeysManager> {\n const keysByFingerprint = {} as { [fingerprint: string]: { pair: KeyPair<CryptoKey>; verified: boolean } }\n for (const key of verifiedKeys) {\n const fingerprint = fingerprintV1(ua2hex(await primitives.RSA.exportKey(key.publicKey, 'spki')))\n keysByFingerprint[fingerprint] = { pair: key, verified: true }\n }\n for (const key of unverifiedKeys) {\n const fingerprint = fingerprintV1(ua2hex(await primitives.RSA.exportKey(key.publicKey, 'spki')))\n keysByFingerprint[fingerprint] = { pair: key, verified: false }\n }\n return new FakeEncryptionKeysManager(keysByFingerprint)\n }\n\n async getCurrentUserAvailablePublicKeysHex(verifiedOnly: boolean): Promise<string[]> {\n throw new Error('Not implemented')\n }\n\n async getCurrentUserHierarchyAvailablePublicKeysHex(): Promise<string[]> {\n throw new Error('Not implemented')\n }\n\n getKeyPairForFingerprint(fingerprint: string): { pair: KeyPair<CryptoKey>; verified: boolean } | undefined {\n const key = this.keys[fingerprint]\n if (key) return _.cloneDeep(key)\n return undefined\n }\n\n async initialiseKeys(): Promise<{ newKeyPair: KeyPair<CryptoKey>; newKeyFingerprint: string } | undefined> {\n return Promise.resolve(undefined)\n }\n\n async reloadKeys(): Promise<void> {}\n\n getSelfVerifiedKeys(): { fingerprint: string; pair: KeyPair<CryptoKey> }[] {\n const res = []\n for (const [fingerprint, { pair, verified }] of Object.entries(this.keys)) {\n if (verified) res.push({ fingerprint, pair })\n }\n return res\n }\n\n async getVerifiedPublicKeysFor(dataOwner: DataOwner): Promise<string[]> {\n throw new Error('Not implemented')\n }\n\n getDecryptionKeys(): { [p: string]: KeyPair<CryptoKey> } {\n return Object.fromEntries(Object.entries(this.keys).map(([fp, { pair }]) => [fp, pair]))\n }\n\n deleteKey(fp: string) {\n delete this.keys[fp]\n }\n\n async addOrUpdateKey(primitives: CryptoPrimitives, pair: KeyPair<CryptoKey>, verified: boolean) {\n const fp = fingerprintV1(ua2hex(await primitives.RSA.exportKey(pair.publicKey, 'spki')))\n this.keys[fp] = { pair, verified }\n }\n\n async unverifyExistingKeysAndCreateNewVerified(primitives: CryptoPrimitives) {\n Object.values(this.keys).map((x) => {\n x.verified = false\n })\n const newKey = await primitives.RSA.generateKeyPair(ShaVersion.Sha256)\n const newKeyFp = fingerprintV1(ua2hex(await primitives.RSA.exportKey(newKey.publicKey, 'spki')))\n this.keys[newKeyFp] = { pair: newKey, verified: true }\n }\n}\n"]}
1
+ {"version":3,"file":"FakeEncryptionKeysManager.js","sourceRoot":"","sources":["../../../test/utils/FakeEncryptionKeysManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { UserEncryptionKeysManager } from '../../icc-x-api/crypto/UserEncryptionKeysManager'\nimport { DataOwner } from '../../icc-x-api/icc-data-owner-x-api'\nimport { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { CryptoPrimitives } from '../../icc-x-api/crypto/CryptoPrimitives'\nimport { ua2hex } from '../../icc-x-api'\nimport * as _ from 'lodash'\nimport { fingerprintV1 } from '../../icc-x-api/crypto/utils'\n\nexport class FakeEncryptionKeysManager extends UserEncryptionKeysManager {\n constructor(private readonly keys: { [fingerprint: string]: { pair: KeyPair<CryptoKey>; verified: boolean } }) {\n super(null as any, null as any, null as any, null as any, null as any, null as any, null as any, null as any)\n }\n\n static async create(\n primitives: CryptoPrimitives,\n verifiedKeys: KeyPair<CryptoKey>[],\n unverifiedKeys: KeyPair<CryptoKey>[] = []\n ): Promise<FakeEncryptionKeysManager> {\n const keysByFingerprint = {} as { [fingerprint: string]: { pair: KeyPair<CryptoKey>; verified: boolean } }\n for (const key of verifiedKeys) {\n const fingerprint = fingerprintV1(ua2hex(await primitives.RSA.exportKey(key.publicKey, 'spki')))\n keysByFingerprint[fingerprint] = { pair: key, verified: true }\n }\n for (const key of unverifiedKeys) {\n const fingerprint = fingerprintV1(ua2hex(await primitives.RSA.exportKey(key.publicKey, 'spki')))\n keysByFingerprint[fingerprint] = { pair: key, verified: false }\n }\n return new FakeEncryptionKeysManager(keysByFingerprint)\n }\n\n async getCurrentUserAvailablePublicKeysHex(verifiedOnly: boolean): Promise<string[]> {\n throw new Error('Not implemented')\n }\n\n async getCurrentUserHierarchyAvailablePublicKeysHex(): Promise<string[]> {\n throw new Error('Not implemented')\n }\n\n getKeyPairForFingerprint(fingerprint: string): { pair: KeyPair<CryptoKey>; verified: boolean } | undefined {\n const key = this.keys[fingerprint]\n if (key) return _.cloneDeep(key)\n return undefined\n }\n\n async initialiseKeys(): Promise<{ newKeyPair: KeyPair<CryptoKey>; newKeyFingerprint: string } | undefined> {\n return Promise.resolve(undefined)\n }\n\n async reloadKeys(): Promise<void> {}\n\n getSelfVerifiedKeys(): { fingerprint: string; pair: KeyPair<CryptoKey> }[] {\n const res = []\n for (const [fingerprint, { pair, verified }] of Object.entries(this.keys)) {\n if (verified) res.push({ fingerprint, pair })\n }\n return res\n }\n\n async getVerifiedPublicKeysFor(dataOwner: DataOwner): Promise<string[]> {\n throw new Error('Not implemented')\n }\n\n getDecryptionKeys(): { [p: string]: KeyPair<CryptoKey> } {\n return Object.fromEntries(Object.entries(this.keys).map(([fp, { pair }]) => [fp, pair]))\n }\n\n deleteKey(fp: string) {\n delete this.keys[fp]\n }\n\n async addOrUpdateKey(primitives: CryptoPrimitives, pair: KeyPair<CryptoKey>, verified: boolean) {\n const fp = fingerprintV1(ua2hex(await primitives.RSA.exportKey(pair.publicKey, 'spki')))\n this.keys[fp] = { pair, verified }\n }\n\n async unverifyExistingKeysAndCreateNewVerified(primitives: CryptoPrimitives) {\n Object.values(this.keys).map((x) => {\n x.verified = false\n })\n const newKey = await primitives.RSA.generateKeyPair(ShaVersion.Sha256)\n const newKeyFp = fingerprintV1(ua2hex(await primitives.RSA.exportKey(newKey.publicKey, 'spki')))\n this.keys[newKeyFp] = { pair: newKey, verified: true }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FakeExchangeDataApi.js","sourceRoot":"","sources":["../../../test/utils/FakeExchangeDataApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccExchangeDataApi } from '../../icc-api/api/internal/IccExchangeDataApi'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { PaginatedListExchangeData } from '../../icc-api/model/PaginatedListExchangeData'\nimport { FakeGenericApi } from './FakeGenericApi'\nimport { PaginatedDocumentKeyIdPairObject } from '../../icc-api/model/PaginatedDocumentKeyIdPairObject'\nimport * as _ from 'lodash'\nimport { expect } from 'chai'\nimport base = Mocha.reporters.base\nimport { ListOfIds } from '../../icc-api/model/ListOfIds'\n\nexport type CallCount = {\n createExchangeData: number\n modifyExchangeData: number\n getExchangeDataByParticipant: number\n getExchangeDataByDelegatorDelegate: number\n getExchangeDataByIds: number\n}\n\nexport type ExpectedCallCount = {\n createExchangeData?: number\n modifyExchangeData?: number\n getExchangeDataByParticipant?: number\n getExchangeDataByDelegatorDelegate?: number\n getExchangeDataByIds?: number\n}\n\nexport class FakeExchangeDataApi extends IccExchangeDataApi {\n private readonly data = new FakeGenericApi<ExchangeData>()\n private _callCount: CallCount = {\n createExchangeData: 0,\n modifyExchangeData: 0,\n getExchangeDataByDelegatorDelegate: 0,\n getExchangeDataByParticipant: 0,\n getExchangeDataByIds: 0,\n }\n\n public get callCount(): CallCount {\n return _.cloneDeep(this._callCount)\n }\n\n compareCallCountFromBaseline(baseline: CallCount, expected: ExpectedCallCount) {\n for (const [key, v] of Object.entries(expected)) {\n const curr = (this._callCount as any)[key] as number\n const currBaseline = (baseline as any)[key] as number\n expect(curr).to.equal(\n currBaseline + v,\n `Actual call count for ${key} does not match expected\n Current: ${JSON.stringify(this._callCount)}\n Baseline: ${JSON.stringify(baseline)}\n ExpectedDifference: ${JSON.stringify(expected)}\n `\n )\n }\n }\n\n constructor() {\n super('fake', {}, null as any, null as any)\n }\n\n createExchangeData(body: ExchangeData): Promise<ExchangeData> {\n this._callCount.createExchangeData += 1\n return Promise.resolve(new ExchangeData(this.data.createObject(body)))\n }\n\n modifyExchangeData(body: ExchangeData): Promise<ExchangeData> {\n this._callCount.modifyExchangeData += 1\n return Promise.resolve(new ExchangeData(this.data.modifyObject(body)))\n }\n\n getExchangeDataById(exchangeDataId: string): Promise<ExchangeData> {\n throw new Error('Individual retrieve should not be used anymore')\n }\n\n async getExchangeDataByIds(body: ListOfIds): Promise<ExchangeData[]> {\n this._callCount.getExchangeDataByIds += 1\n const allRetrieved: ExchangeData[] = []\n for (const id of body.ids!) {\n const retrieved = this.data.getById(id)\n if (retrieved) {\n allRetrieved.push(new ExchangeData(retrieved))\n }\n }\n return Promise.resolve(allRetrieved)\n }\n\n getExchangeDataByDelegatorDelegate(delegatorId: string, delegateId: string): Promise<ExchangeData[]> {\n this._callCount.getExchangeDataByDelegatorDelegate += 1\n return Promise.resolve(\n this.data\n .getAll()\n .filter((x) => x.delegate === delegateId && x.delegator === delegatorId)\n .map((x) => new ExchangeData(x))\n )\n }\n\n getExchangeDataByParticipant(dataOwnerId: string, startDocumentId?: string, limit?: number): Promise<PaginatedListExchangeData> {\n this._callCount.getExchangeDataByParticipant += 1\n const retrieved = this.data.getPaged(startDocumentId, limit ?? 1000)\n return Promise.resolve(\n new PaginatedListExchangeData({\n pageSize: retrieved.rows.length,\n totalSize: retrieved.rows.length,\n rows: retrieved.rows.filter((x) => x.delegator === dataOwnerId || x.delegate === dataOwnerId).map((x) => new ExchangeData(x)),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({ startKeyDocId: retrieved.nextId }),\n })\n )\n }\n\n getAll(): ExchangeData[] {\n return this.data.getAll().map((x) => new ExchangeData(x))\n }\n}\n"]}
1
+ {"version":3,"file":"FakeExchangeDataApi.js","sourceRoot":"","sources":["../../../test/utils/FakeExchangeDataApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccExchangeDataApi } from '../../icc-api/api/internal/IccExchangeDataApi'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { PaginatedListExchangeData } from '../../icc-api/model/PaginatedListExchangeData'\nimport { FakeGenericApi } from './FakeGenericApi'\nimport { PaginatedDocumentKeyIdPairObject } from '../../icc-api/model/PaginatedDocumentKeyIdPairObject'\nimport * as _ from 'lodash'\nimport { expect } from 'chai'\nimport base = Mocha.reporters.base\nimport { ListOfIds } from '../../icc-api/model/ListOfIds'\n\nexport type CallCount = {\n createExchangeData: number\n modifyExchangeData: number\n getExchangeDataByParticipant: number\n getExchangeDataByDelegatorDelegate: number\n getExchangeDataByIds: number\n}\n\nexport type ExpectedCallCount = {\n createExchangeData?: number\n modifyExchangeData?: number\n getExchangeDataByParticipant?: number\n getExchangeDataByDelegatorDelegate?: number\n getExchangeDataByIds?: number\n}\n\nexport class FakeExchangeDataApi extends IccExchangeDataApi {\n private readonly data = new FakeGenericApi<ExchangeData>()\n private _callCount: CallCount = {\n createExchangeData: 0,\n modifyExchangeData: 0,\n getExchangeDataByDelegatorDelegate: 0,\n getExchangeDataByParticipant: 0,\n getExchangeDataByIds: 0,\n }\n\n public get callCount(): CallCount {\n return _.cloneDeep(this._callCount)\n }\n\n compareCallCountFromBaseline(baseline: CallCount, expected: ExpectedCallCount) {\n for (const [key, v] of Object.entries(expected)) {\n const curr = (this._callCount as any)[key] as number\n const currBaseline = (baseline as any)[key] as number\n expect(curr).to.equal(\n currBaseline + v,\n `Actual call count for ${key} does not match expected\n Current: ${JSON.stringify(this._callCount)}\n Baseline: ${JSON.stringify(baseline)}\n ExpectedDifference: ${JSON.stringify(expected)}\n `\n )\n }\n }\n\n constructor() {\n super('fake', {}, null as any, null as any)\n }\n\n createExchangeData(body: ExchangeData): Promise<ExchangeData> {\n this._callCount.createExchangeData += 1\n return Promise.resolve(new ExchangeData(this.data.createObject(body)))\n }\n\n modifyExchangeData(body: ExchangeData): Promise<ExchangeData> {\n this._callCount.modifyExchangeData += 1\n return Promise.resolve(new ExchangeData(this.data.modifyObject(body)))\n }\n\n getExchangeDataById(exchangeDataId: string): Promise<ExchangeData> {\n throw new Error('Individual retrieve should not be used anymore')\n }\n\n async getExchangeDataByIds(body: ListOfIds): Promise<ExchangeData[]> {\n this._callCount.getExchangeDataByIds += 1\n const allRetrieved: ExchangeData[] = []\n for (const id of body.ids!) {\n const retrieved = this.data.getById(id)\n if (retrieved) {\n allRetrieved.push(new ExchangeData(retrieved))\n }\n }\n return Promise.resolve(allRetrieved)\n }\n\n getExchangeDataByDelegatorDelegate(delegatorId: string, delegateId: string): Promise<ExchangeData[]> {\n this._callCount.getExchangeDataByDelegatorDelegate += 1\n return Promise.resolve(\n this.data\n .getAll()\n .filter((x) => x.delegate === delegateId && x.delegator === delegatorId)\n .map((x) => new ExchangeData(x))\n )\n }\n\n getExchangeDataByParticipant(dataOwnerId: string, startDocumentId?: string, limit?: number): Promise<PaginatedListExchangeData> {\n this._callCount.getExchangeDataByParticipant += 1\n const retrieved = this.data.getPaged(startDocumentId, limit ?? 1000)\n return Promise.resolve(\n new PaginatedListExchangeData({\n pageSize: retrieved.rows.length,\n totalSize: retrieved.rows.length,\n rows: retrieved.rows.filter((x) => x.delegator === dataOwnerId || x.delegate === dataOwnerId).map((x) => new ExchangeData(x)),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({ startKeyDocId: retrieved.nextId }),\n })\n )\n }\n\n getAll(): ExchangeData[] {\n return this.data.getAll().map((x) => new ExchangeData(x))\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FakeExchangeDataManager.js","sourceRoot":"","sources":["../../../test/utils/FakeExchangeDataManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAQA,MAAa,iCAAiC;IAC5C,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAE9C,eAAU,GAA4G,EAAE,CAAA;QACxH,aAAQ,GAErB,EAAE,CAAA;IAL4D,CAAC;IAOnE,sBAAsB;QACpB,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IAED,yBAAyB,CAAC,UAAwC;QAChE,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IAEK,6CAA6C,CACjD,MAAgB;;YAEhB,MAAM,GAAG,GAAyG,EAAE,CAAA;YACpH,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;gBACzB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACvC,IAAI,SAAS;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;aACrC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;KAAA;IAEK,yBAAyB,CAC7B,GAAa,EACb,mBAA4B;;YAE5B,MAAM,GAAG,GAAkI,EAAE,CAAA;YAC7I,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;gBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBACnC,IAAI,SAAS,EAAE;oBACb,IAAI,mBAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;wBACnD,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAA;qBACpB;iBACF;aACF;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;KAAA;IAED,2BAA2B,CACzB,UAAkB;QAElB,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,aAAa,CACX,YAA0B,EAC1B,sBAMa,EACb,aAAuB;;QAEvB,MAAM,QAAQ,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAA,sBAAsB,CAAC,mBAAmB,mCAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACxI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG,CAAC,GAAG;YAChC,YAAY;YACZ,WAAW,EAAE,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,WAAW;YAChD,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,KAAK;YACrC,mBAAmB,EAAE,QAAQ;SAC9B,CAAA;QACD,IAAI,sBAAsB,EAAE;YAC1B,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,MAAM,EAAE;gBAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,EAAE,QAAS,EAAE,CAAA;aAC1H;SACF;IACH,CAAC;IAED,gBAAgB,CAAC,cAAsB,EAAE,qBAA6B;QACpE,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,oBAAoB,CAAC,UAAwC;QAC3D,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,IAAI,IAAI;QACN,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,2BAA2B,CACzB,mBAMG,EACH,oBAA6B;QAE7B,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;CACF;AAlGD,8EAkGC","sourcesContent":["import { ExchangeDataManager } from '../../icc-x-api/crypto/ExchangeDataManager'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { expect } from 'chai'\nimport { BaseExchangeDataManager } from '../../icc-x-api/crypto/BaseExchangeDataManager'\nimport { CryptoPrimitives } from '../../icc-x-api'\nimport { id } from 'date-fns/locale'\n\nexport class FakeDecryptionExchangeDataManager implements ExchangeDataManager {\n constructor(private readonly cryptoPrimitives: CryptoPrimitives) {}\n\n private readonly dataByHash: { [hash: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } } = {}\n private readonly dataById: {\n [id: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; fakeNonCached: boolean }\n } = {}\n\n clearOrRepopulateCache(): Promise<void> {\n throw new Error('This method is not supported by fake exchange data manager and should not be used.')\n }\n\n getAccessControlKeysValue(entityType: EntityWithDelegationTypeName): Promise<string | undefined> {\n throw new Error('This method is not supported by fake exchange data manager and should not be used.')\n }\n\n async getCachedDecryptionDataKeyByAccessControlHash(\n hashes: string[]\n ): Promise<{ [p: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } }> {\n const res: { [p: string]: { exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey } } = {}\n for (const hash of hashes) {\n const retrieved = this.dataByHash[hash]\n if (retrieved) res[hash] = retrieved\n }\n return res\n }\n\n async getDecryptionDataKeyByIds(\n ids: string[],\n retrieveIfNotCached: boolean\n ): Promise<{ [id: string]: { exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; exchangeData: ExchangeData } }> {\n const res: { [id: string]: { exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; exchangeData: ExchangeData } } = {}\n for (const id of ids) {\n const retrieved = this.dataById[id]\n if (retrieved) {\n if (retrieveIfNotCached || !retrieved.fakeNonCached) {\n res[id] = retrieved\n }\n }\n }\n return res\n }\n\n getOrCreateEncryptionDataTo(\n delegateId: string\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey; sharedSignatureKey: CryptoKey }> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n cacheFakeData(\n exchangeData: ExchangeData,\n keyAndHashesFromSecret:\n | {\n exchangeKey: CryptoKey\n accessControlSecret?: string\n hashes: string[]\n }\n | undefined,\n fakeNonCached?: boolean\n ) {\n const acSecret = !!keyAndHashesFromSecret ? keyAndHashesFromSecret.accessControlSecret ?? this.cryptoPrimitives.randomUuid() : undefined\n this.dataById[exchangeData.id!] = {\n exchangeData,\n exchangeKey: keyAndHashesFromSecret?.exchangeKey,\n fakeNonCached: fakeNonCached ?? false,\n accessControlSecret: acSecret,\n }\n if (keyAndHashesFromSecret) {\n for (const hash of keyAndHashesFromSecret.hashes) {\n this.dataByHash[hash] = { exchangeData, exchangeKey: keyAndHashesFromSecret.exchangeKey, accessControlSecret: acSecret! }\n }\n }\n }\n\n giveAccessBackTo(otherDataOwner: string, newDataOwnerPublicKey: string): Promise<void> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n getAllDelegationKeys(entityType: EntityWithDelegationTypeName): Promise<string[] | undefined> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n get base(): BaseExchangeDataManager {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n injectDecryptedExchangeData(\n exchangeDataDetails: {\n exchangeDataId: string\n accessControlSecret: ArrayBuffer\n exchangeKey: ArrayBuffer\n sharedSignatureKey: ArrayBuffer\n verified: boolean\n }[],\n reEncryptWithOwnKeys: boolean\n ): Promise<void> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n}\n"]}
1
+ {"version":3,"file":"FakeExchangeDataManager.js","sourceRoot":"","sources":["../../../test/utils/FakeExchangeDataManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAQA,MAAa,iCAAiC;IAC5C,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAE9C,eAAU,GAA4G,EAAE,CAAA;QACxH,aAAQ,GAErB,EAAE,CAAA;IAL4D,CAAC;IAOnE,sBAAsB;QACpB,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IAED,yBAAyB,CAAC,UAAwC;QAChE,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IAEK,6CAA6C,CACjD,MAAgB;;YAEhB,MAAM,GAAG,GAAyG,EAAE,CAAA;YACpH,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACvC,IAAI,SAAS;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;YACtC,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;KAAA;IAEK,yBAAyB,CAC7B,GAAa,EACb,mBAA4B;;YAE5B,MAAM,GAAG,GAAkI,EAAE,CAAA;YAC7I,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBACnC,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,mBAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;wBACpD,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAA;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;KAAA;IAED,2BAA2B,CACzB,UAAkB;QAElB,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,aAAa,CACX,YAA0B,EAC1B,sBAMa,EACb,aAAuB;;QAEvB,MAAM,QAAQ,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAA,sBAAsB,CAAC,mBAAmB,mCAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACxI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG,CAAC,GAAG;YAChC,YAAY;YACZ,WAAW,EAAE,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,WAAW;YAChD,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,KAAK;YACrC,mBAAmB,EAAE,QAAQ;SAC9B,CAAA;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,MAAM,EAAE,CAAC;gBACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,EAAE,QAAS,EAAE,CAAA;YAC3H,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,cAAsB,EAAE,qBAA6B;QACpE,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,oBAAoB,CAAC,UAAwC;QAC3D,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,IAAI,IAAI;QACN,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;IAED,2BAA2B,CACzB,mBAMG,EACH,oBAA6B;QAE7B,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAA;IACrI,CAAC;CACF;AAlGD,8EAkGC","sourcesContent":["import { ExchangeDataManager } from '../../icc-x-api/crypto/ExchangeDataManager'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { expect } from 'chai'\nimport { BaseExchangeDataManager } from '../../icc-x-api/crypto/BaseExchangeDataManager'\nimport { CryptoPrimitives } from '../../icc-x-api'\nimport { id } from 'date-fns/locale'\n\nexport class FakeDecryptionExchangeDataManager implements ExchangeDataManager {\n constructor(private readonly cryptoPrimitives: CryptoPrimitives) {}\n\n private readonly dataByHash: { [hash: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } } = {}\n private readonly dataById: {\n [id: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; fakeNonCached: boolean }\n } = {}\n\n clearOrRepopulateCache(): Promise<void> {\n throw new Error('This method is not supported by fake exchange data manager and should not be used.')\n }\n\n getAccessControlKeysValue(entityType: EntityWithDelegationTypeName): Promise<string | undefined> {\n throw new Error('This method is not supported by fake exchange data manager and should not be used.')\n }\n\n async getCachedDecryptionDataKeyByAccessControlHash(\n hashes: string[]\n ): Promise<{ [p: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } }> {\n const res: { [p: string]: { exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey } } = {}\n for (const hash of hashes) {\n const retrieved = this.dataByHash[hash]\n if (retrieved) res[hash] = retrieved\n }\n return res\n }\n\n async getDecryptionDataKeyByIds(\n ids: string[],\n retrieveIfNotCached: boolean\n ): Promise<{ [id: string]: { exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; exchangeData: ExchangeData } }> {\n const res: { [id: string]: { exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; exchangeData: ExchangeData } } = {}\n for (const id of ids) {\n const retrieved = this.dataById[id]\n if (retrieved) {\n if (retrieveIfNotCached || !retrieved.fakeNonCached) {\n res[id] = retrieved\n }\n }\n }\n return res\n }\n\n getOrCreateEncryptionDataTo(\n delegateId: string\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey; sharedSignatureKey: CryptoKey }> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n cacheFakeData(\n exchangeData: ExchangeData,\n keyAndHashesFromSecret:\n | {\n exchangeKey: CryptoKey\n accessControlSecret?: string\n hashes: string[]\n }\n | undefined,\n fakeNonCached?: boolean\n ) {\n const acSecret = !!keyAndHashesFromSecret ? keyAndHashesFromSecret.accessControlSecret ?? this.cryptoPrimitives.randomUuid() : undefined\n this.dataById[exchangeData.id!] = {\n exchangeData,\n exchangeKey: keyAndHashesFromSecret?.exchangeKey,\n fakeNonCached: fakeNonCached ?? false,\n accessControlSecret: acSecret,\n }\n if (keyAndHashesFromSecret) {\n for (const hash of keyAndHashesFromSecret.hashes) {\n this.dataByHash[hash] = { exchangeData, exchangeKey: keyAndHashesFromSecret.exchangeKey, accessControlSecret: acSecret! }\n }\n }\n }\n\n giveAccessBackTo(otherDataOwner: string, newDataOwnerPublicKey: string): Promise<void> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n getAllDelegationKeys(entityType: EntityWithDelegationTypeName): Promise<string[] | undefined> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n get base(): BaseExchangeDataManager {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n\n injectDecryptedExchangeData(\n exchangeDataDetails: {\n exchangeDataId: string\n accessControlSecret: ArrayBuffer\n exchangeKey: ArrayBuffer\n sharedSignatureKey: ArrayBuffer\n verified: boolean\n }[],\n reEncryptWithOwnKeys: boolean\n ): Promise<void> {\n throw new Error('This method should not be used with this fake exchange data manager: only retrieval decryption data is supported')\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FakeGenericApi.js","sourceRoot":"","sources":["../../../test/utils/FakeGenericApi.ts"],"names":[],"mappings":"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","sourcesContent":["import * as _ from 'lodash'\nimport { CryptoPrimitives, WebCryptoPrimitives } from '../../icc-x-api/crypto/CryptoPrimitives'\nimport { webcrypto } from 'crypto'\n\nexport class FakeGenericApi<T extends { id?: string; rev?: string }> {\n private readonly data: Map<string, T> = new Map()\n private readonly primitives: CryptoPrimitives = new WebCryptoPrimitives(webcrypto as any)\n\n createObject(obj: T): T {\n if (!obj.id) throw new Error(`New object should have id`)\n if (obj.rev) throw new Error(`New object should not have rev`)\n if (this.data.get(obj.id!)) throw new Error(`Object with id ${obj.id} already exists.`)\n const withRev = _.cloneDeep(obj)\n withRev.rev = this.nextRev(withRev.rev)\n this.data.set(obj.id, withRev)\n return _.cloneDeep(withRev)\n }\n\n modifyObject(obj: T): T {\n if (!obj.id) throw new Error(`Modified object should have id`)\n const existing = this.data.get(obj.id!)\n if (!existing) throw new Error(`No object with id ${obj.id}`)\n if (existing.rev !== obj.rev) throw new Error(`Object with id ${obj.id} has wrong rev: ${obj.rev} but expected ${existing.rev}.`)\n const withNewRev = _.cloneDeep(obj)\n withNewRev.rev = this.nextRev(withNewRev.rev)\n this.data.set(obj.id, withNewRev)\n return _.cloneDeep(withNewRev)\n }\n\n getAll(): T[] {\n return [...this.data.values()].map((x) => _.cloneDeep(x))\n }\n\n getPaged(\n startId: string | undefined,\n limit: number\n ): {\n rows: T[]\n nextId: string | undefined\n } {\n let rows = [...this.data.values()]\n let nextId = undefined\n if (startId) {\n const startIndex = rows.findIndex((x) => x.id === startId)\n rows = rows.slice(startIndex)\n }\n if (rows.length > limit) {\n nextId = rows[limit].id\n rows = rows.slice(0, limit)\n }\n return { rows: rows.map((x) => _.cloneDeep(x)), nextId }\n }\n\n getById(id: string): T | undefined {\n const retrieved = this.data.get(id)\n return retrieved ? _.cloneDeep(retrieved) : undefined\n }\n\n private nextRev(rev: string | undefined): string {\n if (!rev) return `1-${this.primitives.randomUuid()}`\n const prevRevNumber = parseInt(rev.split('-')[0])\n return `${prevRevNumber + 1}-${this.primitives.randomUuid()}`\n }\n}\n"]}
1
+ {"version":3,"file":"FakeGenericApi.js","sourceRoot":"","sources":["../../../test/utils/FakeGenericApi.ts"],"names":[],"mappings":";;;AAAA,4BAA2B;AAC3B,8EAA+F;AAC/F,mCAAkC;AAElC,MAAa,cAAc;IAA3B;QACmB,SAAI,GAAmB,IAAI,GAAG,EAAE,CAAA;QAChC,eAAU,GAAqB,IAAI,sCAAmB,CAAC,kBAAgB,CAAC,CAAA;IAyD3F,CAAC;IAvDC,YAAY,CAAC,GAAM;QACjB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QACzD,IAAI,GAAG,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC9D,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACvF,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAChC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAC9B,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAED,YAAY,CAAC,GAAM;QACjB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAG,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QAC7D,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,mBAAmB,GAAG,CAAC,GAAG,iBAAiB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAA;QACjI,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACnC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QACjC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,QAAQ,CACN,OAA2B,EAC3B,KAAa;QAKb,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAClC,IAAI,MAAM,GAAG,SAAS,CAAA;QACtB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;YAC1D,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA;YACvB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1D,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACnC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvD,CAAC;IAEO,OAAO,CAAC,GAAuB;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAA;QACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,OAAO,GAAG,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAA;IAC/D,CAAC;CACF;AA3DD,wCA2DC","sourcesContent":["import * as _ from 'lodash'\nimport { CryptoPrimitives, WebCryptoPrimitives } from '../../icc-x-api/crypto/CryptoPrimitives'\nimport { webcrypto } from 'crypto'\n\nexport class FakeGenericApi<T extends { id?: string; rev?: string }> {\n private readonly data: Map<string, T> = new Map()\n private readonly primitives: CryptoPrimitives = new WebCryptoPrimitives(webcrypto as any)\n\n createObject(obj: T): T {\n if (!obj.id) throw new Error(`New object should have id`)\n if (obj.rev) throw new Error(`New object should not have rev`)\n if (this.data.get(obj.id!)) throw new Error(`Object with id ${obj.id} already exists.`)\n const withRev = _.cloneDeep(obj)\n withRev.rev = this.nextRev(withRev.rev)\n this.data.set(obj.id, withRev)\n return _.cloneDeep(withRev)\n }\n\n modifyObject(obj: T): T {\n if (!obj.id) throw new Error(`Modified object should have id`)\n const existing = this.data.get(obj.id!)\n if (!existing) throw new Error(`No object with id ${obj.id}`)\n if (existing.rev !== obj.rev) throw new Error(`Object with id ${obj.id} has wrong rev: ${obj.rev} but expected ${existing.rev}.`)\n const withNewRev = _.cloneDeep(obj)\n withNewRev.rev = this.nextRev(withNewRev.rev)\n this.data.set(obj.id, withNewRev)\n return _.cloneDeep(withNewRev)\n }\n\n getAll(): T[] {\n return [...this.data.values()].map((x) => _.cloneDeep(x))\n }\n\n getPaged(\n startId: string | undefined,\n limit: number\n ): {\n rows: T[]\n nextId: string | undefined\n } {\n let rows = [...this.data.values()]\n let nextId = undefined\n if (startId) {\n const startIndex = rows.findIndex((x) => x.id === startId)\n rows = rows.slice(startIndex)\n }\n if (rows.length > limit) {\n nextId = rows[limit].id\n rows = rows.slice(0, limit)\n }\n return { rows: rows.map((x) => _.cloneDeep(x)), nextId }\n }\n\n getById(id: string): T | undefined {\n const retrieved = this.data.get(id)\n return retrieved ? _.cloneDeep(retrieved) : undefined\n }\n\n private nextRev(rev: string | undefined): string {\n if (!rev) return `1-${this.primitives.randomUuid()}`\n const prevRevNumber = parseInt(rev.split('-')[0])\n return `${prevRevNumber + 1}-${this.primitives.randomUuid()}`\n }\n}\n"]}
@@ -14,8 +14,8 @@ const icc_x_api_1 = require("../../icc-x-api");
14
14
  const TestStorage_1 = require("./TestStorage");
15
15
  const TestCryptoStrategies_1 = require("./TestCryptoStrategies");
16
16
  require("isomorphic-fetch");
17
- const TestApi = function (host, username, password, crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : {}, keyPair, options = {}) {
18
- return __awaiter(this, void 0, void 0, function* () {
17
+ const TestApi = function (host_1, username_1, password_1) {
18
+ return __awaiter(this, arguments, void 0, function* (host, username, password, crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : {}, keyPair, options = {}) {
19
19
  const initialisedKeys = keyPair !== null && keyPair !== void 0 ? keyPair : (yield new icc_x_api_1.RSAUtilsImpl(crypto).generateKeyPair(icc_x_api_1.ShaVersion.Sha256));
20
20
  return icc_x_api_1.IcureApi.initialise(host, {
21
21
  username,
@@ -1 +1 @@
1
- {"version":3,"file":"TestApi.js","sourceRoot":"","sources":["../../../test/utils/TestApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAwG;AACxG,+CAA2D;AAC3D,iEAA6D;AAC7D,4BAAyB;AAElB,MAAM,OAAO,GAAG,UACrB,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,SAAiB,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,EAAa,EAC3H,OAA4B,EAC5B,UAA2B,EAAE;;QAE7B,MAAM,eAAe,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,MAAM,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,sBAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACtG,OAAO,oBAAQ,CAAC,UAAU,CACxB,IAAI,EACJ;YACE,QAAQ;YACR,QAAQ;SACT,EACD,IAAI,2CAAoB,CAAC,eAAe,CAAC,EACzC,MAAM,EACN,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,gBAE1F;YACD,OAAO,EAAE,IAAI,yBAAW,EAAE;YAC1B,UAAU,EAAE,IAAI,4BAAc,EAAE;SACjC,EACE,OAAO,EAEb,CAAA;IACH,CAAC;CAAA,CAAA;AA1BY,QAAA,OAAO,WA0BnB","sourcesContent":["import { IcureApi, IcureApiOptions, KeyPair, RSAUtils, RSAUtilsImpl, ShaVersion } from '../../icc-x-api'\nimport { TestKeyStorage, TestStorage } from './TestStorage'\nimport { TestCryptoStrategies } from './TestCryptoStrategies'\nimport 'isomorphic-fetch'\n\nexport const TestApi = async function (\n host: string,\n username: string,\n password: string,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n keyPair?: KeyPair<CryptoKey>,\n options: IcureApiOptions = {}\n): Promise<IcureApi> {\n const initialisedKeys = keyPair ?? (await new RSAUtilsImpl(crypto).generateKeyPair(ShaVersion.Sha256))\n return IcureApi.initialise(\n host,\n {\n username,\n password,\n },\n new TestCryptoStrategies(initialisedKeys),\n crypto,\n typeof window !== 'undefined' ? window.fetch : typeof self !== 'undefined' ? self.fetch : fetch,\n {\n ...{\n storage: new TestStorage(),\n keyStorage: new TestKeyStorage(),\n },\n ...options,\n }\n )\n}\n"]}
1
+ {"version":3,"file":"TestApi.js","sourceRoot":"","sources":["../../../test/utils/TestApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAwG;AACxG,+CAA2D;AAC3D,iEAA6D;AAC7D,4BAAyB;AAElB,MAAM,OAAO,GAAG;yDACrB,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,SAAiB,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,EAAa,EAC3H,OAA4B,EAC5B,UAA2B,EAAE;QAE7B,MAAM,eAAe,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,MAAM,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,sBAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACtG,OAAO,oBAAQ,CAAC,UAAU,CACxB,IAAI,EACJ;YACE,QAAQ;YACR,QAAQ;SACT,EACD,IAAI,2CAAoB,CAAC,eAAe,CAAC,EACzC,MAAM,EACN,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,gBAE1F;YACD,OAAO,EAAE,IAAI,yBAAW,EAAE;YAC1B,UAAU,EAAE,IAAI,4BAAc,EAAE;SACjC,EACE,OAAO,EAEb,CAAA;IACH,CAAC;CAAA,CAAA;AA1BY,QAAA,OAAO,WA0BnB","sourcesContent":["import { IcureApi, IcureApiOptions, KeyPair, RSAUtils, RSAUtilsImpl, ShaVersion } from '../../icc-x-api'\nimport { TestKeyStorage, TestStorage } from './TestStorage'\nimport { TestCryptoStrategies } from './TestCryptoStrategies'\nimport 'isomorphic-fetch'\n\nexport const TestApi = async function (\n host: string,\n username: string,\n password: string,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n keyPair?: KeyPair<CryptoKey>,\n options: IcureApiOptions = {}\n): Promise<IcureApi> {\n const initialisedKeys = keyPair ?? (await new RSAUtilsImpl(crypto).generateKeyPair(ShaVersion.Sha256))\n return IcureApi.initialise(\n host,\n {\n username,\n password,\n },\n new TestCryptoStrategies(initialisedKeys),\n crypto,\n typeof window !== 'undefined' ? window.fetch : typeof self !== 'undefined' ? self.fetch : fetch,\n {\n ...{\n storage: new TestStorage(),\n keyStorage: new TestKeyStorage(),\n },\n ...options,\n }\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestCryptoStrategies.js","sourceRoot":"","sources":["../../../test/utils/TestCryptoStrategies.ts"],"names":[],"mappings":"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","sourcesContent":["import { CryptoStrategies } from '../../icc-x-api/crypto/CryptoStrategies'\nimport { KeyPair, RSAUtils, RSAUtilsImpl, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of } from '../../icc-x-api/crypto/utils'\nimport { webcrypto } from 'crypto'\nimport { CryptoPrimitives, hex2ua, ua2hex } from '../../icc-x-api'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\n\nexport class TestCryptoStrategies implements CryptoStrategies {\n private readonly RSA = new RSAUtilsImpl(webcrypto as any)\n recoverAndVerifyCallsParams: Array<{ dataOwner: DataOwnerWithType; unknownKeys: string[]; unavailableKeys: string[] }[]> = []\n\n constructor(\n private readonly keyPair?: KeyPair<CryptoKey>,\n private readonly verifiedSelfKeys: { [p: string]: boolean } = {},\n private readonly limitVerifiedDelegatesKeys?: Set<string>,\n private readonly recoveredParentKeys: { [parentId: string]: { pair: KeyPair<string>; shaVersion: ShaVersion } } = {}\n ) {}\n\n async generateNewKeyForDataOwner(self: DataOwnerWithType): Promise<KeyPair<CryptoKey> | boolean> {\n if (!this.keyPair) return false\n const knownKeys = new Set([...hexPublicKeysWithSha1Of(self), ...hexPublicKeysWithSha256Of(self)])\n const publicKey = ua2hex(await this.RSA.exportKey(this.keyPair.publicKey, 'spki'))\n return knownKeys.has(publicKey) ? false : this.keyPair\n }\n\n async recoverAndVerifySelfHierarchyKeys(\n keysData: { dataOwner: DataOwnerWithType; unknownKeys: string[]; unavailableKeys: string[] }[],\n cryptoPrimitives: CryptoPrimitives\n ): Promise<{ [p: string]: { recoveredKeys: { [p: string]: KeyPair<CryptoKey> }; keyAuthenticity: { [p: string]: boolean } } }> {\n this.recoverAndVerifyCallsParams.push(keysData)\n const self = keysData[keysData.length - 1].dataOwner\n const knownKeys = new Set([...hexPublicKeysWithSha1Of(self.dataOwner), ...hexPublicKeysWithSha256Of(self.dataOwner)])\n const publicKey = this.keyPair ? ua2hex(await this.RSA.exportKey(this.keyPair.publicKey, 'spki')) : undefined\n return Object.fromEntries(\n await Promise.all(\n keysData.map(async (currData) => {\n if (currData.dataOwner.dataOwner.id! !== self.dataOwner.id!) {\n const recoveredKey = this.recoveredParentKeys[currData.dataOwner.dataOwner.id!]\n return [\n currData.dataOwner.dataOwner.id!,\n {\n recoveredKeys: recoveredKey\n ? {\n [recoveredKey.pair.publicKey.slice(-32)]: await cryptoPrimitives.RSA.importKeyPair(\n 'pkcs8',\n hex2ua(recoveredKey.pair.privateKey),\n 'spki',\n hex2ua(recoveredKey.pair.publicKey),\n recoveredKey.shaVersion\n ),\n }\n : {},\n keyAuthenticity: {},\n },\n ]\n } else if (publicKey === undefined || !knownKeys.has(publicKey)) {\n return [currData.dataOwner.dataOwner.id!, { recoveredKeys: {}, keyAuthenticity: this.verifiedSelfKeys }]\n } else {\n return [\n currData.dataOwner.dataOwner.id!,\n { recoveredKeys: { [publicKey.slice(-32)]: this.keyPair }, keyAuthenticity: this.verifiedSelfKeys },\n ]\n }\n })\n )\n )\n }\n\n verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[]): Promise<string[]> {\n if (this.limitVerifiedDelegatesKeys) {\n return Promise.resolve(publicKeys.filter((x) => this.limitVerifiedDelegatesKeys!.has(x)))\n } else return Promise.resolve(publicKeys)\n }\n\n dataOwnerRequiresAnonymousDelegation(dataOwner: CryptoActorStubWithType): boolean {\n return dataOwner.type !== 'hcp'\n }\n}\n"]}
1
+ {"version":3,"file":"TestCryptoStrategies.js","sourceRoot":"","sources":["../../../test/utils/TestCryptoStrategies.ts"],"names":[],"mappings":"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","sourcesContent":["import { CryptoStrategies } from '../../icc-x-api/crypto/CryptoStrategies'\nimport { KeyPair, RSAUtils, RSAUtilsImpl, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of } from '../../icc-x-api/crypto/utils'\nimport { webcrypto } from 'crypto'\nimport { CryptoPrimitives, hex2ua, ua2hex } from '../../icc-x-api'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\n\nexport class TestCryptoStrategies implements CryptoStrategies {\n private readonly RSA = new RSAUtilsImpl(webcrypto as any)\n recoverAndVerifyCallsParams: Array<{ dataOwner: DataOwnerWithType; unknownKeys: string[]; unavailableKeys: string[] }[]> = []\n\n constructor(\n private readonly keyPair?: KeyPair<CryptoKey>,\n private readonly verifiedSelfKeys: { [p: string]: boolean } = {},\n private readonly limitVerifiedDelegatesKeys?: Set<string>,\n private readonly recoveredParentKeys: { [parentId: string]: { pair: KeyPair<string>; shaVersion: ShaVersion } } = {}\n ) {}\n\n async generateNewKeyForDataOwner(self: DataOwnerWithType): Promise<KeyPair<CryptoKey> | boolean> {\n if (!this.keyPair) return false\n const knownKeys = new Set([...hexPublicKeysWithSha1Of(self), ...hexPublicKeysWithSha256Of(self)])\n const publicKey = ua2hex(await this.RSA.exportKey(this.keyPair.publicKey, 'spki'))\n return knownKeys.has(publicKey) ? false : this.keyPair\n }\n\n async recoverAndVerifySelfHierarchyKeys(\n keysData: { dataOwner: DataOwnerWithType; unknownKeys: string[]; unavailableKeys: string[] }[],\n cryptoPrimitives: CryptoPrimitives\n ): Promise<{ [p: string]: { recoveredKeys: { [p: string]: KeyPair<CryptoKey> }; keyAuthenticity: { [p: string]: boolean } } }> {\n this.recoverAndVerifyCallsParams.push(keysData)\n const self = keysData[keysData.length - 1].dataOwner\n const knownKeys = new Set([...hexPublicKeysWithSha1Of(self.dataOwner), ...hexPublicKeysWithSha256Of(self.dataOwner)])\n const publicKey = this.keyPair ? ua2hex(await this.RSA.exportKey(this.keyPair.publicKey, 'spki')) : undefined\n return Object.fromEntries(\n await Promise.all(\n keysData.map(async (currData) => {\n if (currData.dataOwner.dataOwner.id! !== self.dataOwner.id!) {\n const recoveredKey = this.recoveredParentKeys[currData.dataOwner.dataOwner.id!]\n return [\n currData.dataOwner.dataOwner.id!,\n {\n recoveredKeys: recoveredKey\n ? {\n [recoveredKey.pair.publicKey.slice(-32)]: await cryptoPrimitives.RSA.importKeyPair(\n 'pkcs8',\n hex2ua(recoveredKey.pair.privateKey),\n 'spki',\n hex2ua(recoveredKey.pair.publicKey),\n recoveredKey.shaVersion\n ),\n }\n : {},\n keyAuthenticity: {},\n },\n ]\n } else if (publicKey === undefined || !knownKeys.has(publicKey)) {\n return [currData.dataOwner.dataOwner.id!, { recoveredKeys: {}, keyAuthenticity: this.verifiedSelfKeys }]\n } else {\n return [\n currData.dataOwner.dataOwner.id!,\n { recoveredKeys: { [publicKey.slice(-32)]: this.keyPair }, keyAuthenticity: this.verifiedSelfKeys },\n ]\n }\n })\n )\n )\n }\n\n verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[]): Promise<string[]> {\n if (this.limitVerifiedDelegatesKeys) {\n return Promise.resolve(publicKeys.filter((x) => this.limitVerifiedDelegatesKeys!.has(x)))\n } else return Promise.resolve(publicKeys)\n }\n\n dataOwnerRequiresAnonymousDelegation(dataOwner: CryptoActorStubWithType): boolean {\n return dataOwner.type !== 'hcp'\n }\n}\n"]}
@@ -9,7 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.testStorageWithKeys = exports.TestKeyStorage = exports.TestStorage = void 0;
12
+ exports.TestKeyStorage = exports.TestStorage = void 0;
13
+ exports.testStorageWithKeys = testStorageWithKeys;
13
14
  const icc_x_api_1 = require("../../icc-x-api");
14
15
  const DefaultStorageEntryKeysFactory_1 = require("../../icc-x-api/storage/DefaultStorageEntryKeysFactory");
15
16
  const IcureStorageFacade_1 = require("../../icc-x-api/storage/IcureStorageFacade");
@@ -57,5 +58,4 @@ function testStorageWithKeys(data) {
57
58
  return { keyFactory, keyStorage, storage };
58
59
  });
59
60
  }
60
- exports.testStorageWithKeys = testStorageWithKeys;
61
61
  //# sourceMappingURL=TestStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TestStorage.js","sourceRoot":"","sources":["../../../test/utils/TestStorage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAgH;AAGhH,2GAAuG;AACvG,mFAA+E;AAE/E,MAAa,WAAW;IAAxB;QACmB,SAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IAanD,CAAC;IAXO,OAAO,CAAC,GAAW;;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;KAAA;IAEK,UAAU,CAAC,GAAW;;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KAAA;IAEK,OAAO,CAAC,GAAW,EAAE,YAAoB;;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAClC,CAAC;KAAA;CACF;AAdD,kCAcC;AAED,MAAa,cAAe,SAAQ,0BAAc;IAChD;QACE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;IAC1B,CAAC;CACF;AAJD,wCAIC;AAED,SAAsB,mBAAmB,CACvC,IAA8F;;QAE9F,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAA;QACvC,MAAM,UAAU,GAAG,IAAI,+DAA8B,EAAE,CAAA;QACvD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,YAAY,GAAG,IAAI,uCAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAC5E,KAAK,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,YAAY,CAAC,OAAO,CACxB,WAAW,EACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EACjC;oBACE,UAAU,EAAE,IAAA,sBAAU,EAAC,IAAA,kBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACvD,SAAS,EAAE,IAAA,qBAAS,EAAC,IAAA,kBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;iBACtE,EACD,IAAI,CACL,CAAA;aACF;SACF;QACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;IAC5C,CAAC;CAAA;AArBD,kDAqBC","sourcesContent":["import { hex2ua, KeyStorageFacade, KeyStorageImpl, pkcs8ToJwk, spkiToJwk, StorageFacade } from '../../icc-x-api'\nimport { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { StorageEntryKeysFactory } from '../../icc-x-api/storage/StorageEntryKeysFactory'\nimport { DefaultStorageEntryKeysFactory } from '../../icc-x-api/storage/DefaultStorageEntryKeysFactory'\nimport { IcureStorageFacade } from '../../icc-x-api/storage/IcureStorageFacade'\n\nexport class TestStorage implements StorageFacade<string> {\n private readonly data = new Map<string, string>()\n\n async getItem(key: string): Promise<string | undefined> {\n return this.data.get(key)\n }\n\n async removeItem(key: string): Promise<void> {\n this.data.delete(key)\n }\n\n async setItem(key: string, valueToStore: string): Promise<void> {\n this.data.set(key, valueToStore)\n }\n}\n\nexport class TestKeyStorage extends KeyStorageImpl {\n constructor() {\n super(new TestStorage())\n }\n}\n\nexport async function testStorageWithKeys(\n data: { dataOwnerId: string; pairs: { keyPair: KeyPair<string>; shaVersion: ShaVersion }[] }[]\n): Promise<{ keyStorage: KeyStorageFacade; storage: StorageFacade<string>; keyFactory: StorageEntryKeysFactory }> {\n const keyStorage = new TestKeyStorage()\n const keyFactory = new DefaultStorageEntryKeysFactory()\n const storage = new TestStorage()\n const icureStorage = new IcureStorageFacade(keyStorage, storage, keyFactory)\n for (const { dataOwnerId, pairs } of data) {\n for (const pair of pairs) {\n await icureStorage.saveKey(\n dataOwnerId,\n pair.keyPair.publicKey.slice(-32),\n {\n privateKey: pkcs8ToJwk(hex2ua(pair.keyPair.privateKey)),\n publicKey: spkiToJwk(hex2ua(pair.keyPair.publicKey), pair.shaVersion),\n },\n true\n )\n }\n }\n return { keyFactory, keyStorage, storage }\n}\n"]}
1
+ {"version":3,"file":"TestStorage.js","sourceRoot":"","sources":["../../../test/utils/TestStorage.ts"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,kDAqBC;AAjDD,+CAAgH;AAGhH,2GAAuG;AACvG,mFAA+E;AAE/E,MAAa,WAAW;IAAxB;QACmB,SAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IAanD,CAAC;IAXO,OAAO,CAAC,GAAW;;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;KAAA;IAEK,UAAU,CAAC,GAAW;;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KAAA;IAEK,OAAO,CAAC,GAAW,EAAE,YAAoB;;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAClC,CAAC;KAAA;CACF;AAdD,kCAcC;AAED,MAAa,cAAe,SAAQ,0BAAc;IAChD;QACE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;IAC1B,CAAC;CACF;AAJD,wCAIC;AAED,SAAsB,mBAAmB,CACvC,IAA8F;;QAE9F,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAA;QACvC,MAAM,UAAU,GAAG,IAAI,+DAA8B,EAAE,CAAA;QACvD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,YAAY,GAAG,IAAI,uCAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAC5E,KAAK,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,YAAY,CAAC,OAAO,CACxB,WAAW,EACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EACjC;oBACE,UAAU,EAAE,IAAA,sBAAU,EAAC,IAAA,kBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACvD,SAAS,EAAE,IAAA,qBAAS,EAAC,IAAA,kBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;iBACtE,EACD,IAAI,CACL,CAAA;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;IAC5C,CAAC;CAAA","sourcesContent":["import { hex2ua, KeyStorageFacade, KeyStorageImpl, pkcs8ToJwk, spkiToJwk, StorageFacade } from '../../icc-x-api'\nimport { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { StorageEntryKeysFactory } from '../../icc-x-api/storage/StorageEntryKeysFactory'\nimport { DefaultStorageEntryKeysFactory } from '../../icc-x-api/storage/DefaultStorageEntryKeysFactory'\nimport { IcureStorageFacade } from '../../icc-x-api/storage/IcureStorageFacade'\n\nexport class TestStorage implements StorageFacade<string> {\n private readonly data = new Map<string, string>()\n\n async getItem(key: string): Promise<string | undefined> {\n return this.data.get(key)\n }\n\n async removeItem(key: string): Promise<void> {\n this.data.delete(key)\n }\n\n async setItem(key: string, valueToStore: string): Promise<void> {\n this.data.set(key, valueToStore)\n }\n}\n\nexport class TestKeyStorage extends KeyStorageImpl {\n constructor() {\n super(new TestStorage())\n }\n}\n\nexport async function testStorageWithKeys(\n data: { dataOwnerId: string; pairs: { keyPair: KeyPair<string>; shaVersion: ShaVersion }[] }[]\n): Promise<{ keyStorage: KeyStorageFacade; storage: StorageFacade<string>; keyFactory: StorageEntryKeysFactory }> {\n const keyStorage = new TestKeyStorage()\n const keyFactory = new DefaultStorageEntryKeysFactory()\n const storage = new TestStorage()\n const icureStorage = new IcureStorageFacade(keyStorage, storage, keyFactory)\n for (const { dataOwnerId, pairs } of data) {\n for (const pair of pairs) {\n await icureStorage.saveKey(\n dataOwnerId,\n pair.keyPair.publicKey.slice(-32),\n {\n privateKey: pkcs8ToJwk(hex2ua(pair.keyPair.privateKey)),\n publicKey: spkiToJwk(hex2ua(pair.keyPair.publicKey), pair.shaVersion),\n },\n true\n )\n }\n }\n return { keyFactory, keyStorage, storage }\n}\n"]}
@@ -10,7 +10,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  var _a, _b, _c, _d;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.itNoLite = exports.describeNoLite = exports.isLiteTest = exports.createUserInMultipleGroups = exports.testSetupMasterApi = exports.createNewHcpWithoutKeyAndParentWithKey = exports.createHcpHierarchyApis = exports.createNewKeylessApi = exports.createNewPatientApi = exports.createNewHcpApi = exports.getApiAndAddPrivateKeysForUser = exports.TestUtils = exports.getEnvironmentInitializer = exports.deviceUsername = exports.patUsername = exports.hcp3Username = exports.hcp2Username = exports.hcp1Username = exports.setLocalStorage = exports.getTempEmail = void 0;
13
+ exports.TestUtils = exports.deviceUsername = exports.patUsername = exports.hcp3Username = exports.hcp2Username = exports.hcp1Username = void 0;
14
+ exports.getTempEmail = getTempEmail;
15
+ exports.setLocalStorage = setLocalStorage;
16
+ exports.getEnvironmentInitializer = getEnvironmentInitializer;
17
+ exports.getApiAndAddPrivateKeysForUser = getApiAndAddPrivateKeysForUser;
18
+ exports.createNewHcpApi = createNewHcpApi;
19
+ exports.createNewPatientApi = createNewPatientApi;
20
+ exports.createNewKeylessApi = createNewKeylessApi;
21
+ exports.createHcpHierarchyApis = createHcpHierarchyApis;
22
+ exports.createNewHcpWithoutKeyAndParentWithKey = createNewHcpWithoutKeyAndParentWithKey;
23
+ exports.testSetupMasterApi = testSetupMasterApi;
24
+ exports.createUserInMultipleGroups = createUserInMultipleGroups;
25
+ exports.isLiteTest = isLiteTest;
26
+ exports.describeNoLite = describeNoLite;
27
+ exports.itNoLite = itNoLite;
14
28
  const icc_x_api_1 = require("../../icc-x-api");
15
29
  const os_1 = require("os");
16
30
  const util_1 = require("util");
@@ -32,7 +46,6 @@ const KeylessCryptoStrategies_1 = require("./KeylessCryptoStrategies");
32
46
  function getTempEmail() {
33
47
  return `${(0, uuid_1.v4)().substring(0, 8)}@icure.com`;
34
48
  }
35
- exports.getTempEmail = getTempEmail;
36
49
  function setLocalStorage(fetch) {
37
50
  ;
38
51
  global.localStorage = new (require('node-localstorage').LocalStorage)((0, os_1.tmpdir)(), 5 * Math.pow(1024, 3));
@@ -42,7 +55,6 @@ function setLocalStorage(fetch) {
42
55
  global.TextEncoder = util_1.TextEncoder;
43
56
  global.headers = Headers;
44
57
  }
45
- exports.setLocalStorage = setLocalStorage;
46
58
  exports.hcp1Username = (_a = process.env.ICURE_TS_TEST_HCP_USER) !== null && _a !== void 0 ? _a : getTempEmail();
47
59
  exports.hcp2Username = (_b = process.env.ICURE_TS_TEST_HCP_2_USER) !== null && _b !== void 0 ? _b : getTempEmail();
48
60
  exports.hcp3Username = (_c = process.env.ICURE_TS_TEST_HCP_3_USER) !== null && _c !== void 0 ? _c : getTempEmail();
@@ -85,11 +97,10 @@ function getEnvironmentInitializer() {
85
97
  return cachedInitializer;
86
98
  });
87
99
  }
88
- exports.getEnvironmentInitializer = getEnvironmentInitializer;
89
100
  var TestUtils;
90
101
  (function (TestUtils) {
91
- function initApi(envVars, userName = exports.hcp1Username, options) {
92
- return __awaiter(this, void 0, void 0, function* () {
102
+ function initApi(envVars_1) {
103
+ return __awaiter(this, arguments, void 0, function* (envVars, userName = exports.hcp1Username, options) {
93
104
  return yield getApiAndAddPrivateKeysForUser(envVars.iCureUrl, envVars.dataOwnerDetails[userName], options);
94
105
  });
95
106
  }
@@ -100,7 +111,7 @@ var TestUtils;
100
111
  });
101
112
  }
102
113
  TestUtils.initMasterApi = initMasterApi;
103
- })(TestUtils = exports.TestUtils || (exports.TestUtils = {}));
114
+ })(TestUtils || (exports.TestUtils = TestUtils = {}));
104
115
  function getApiAndAddPrivateKeysForUser(iCureUrl, details, options) {
105
116
  return __awaiter(this, void 0, void 0, function* () {
106
117
  const RSA = new icc_x_api_1.RSAUtilsImpl(crypto_1.webcrypto);
@@ -111,7 +122,6 @@ function getApiAndAddPrivateKeysForUser(iCureUrl, details, options) {
111
122
  return yield (0, TestApi_1.TestApi)(iCureUrl, details.user, details.password, crypto_1.webcrypto, keys, options);
112
123
  });
113
124
  }
114
- exports.getApiAndAddPrivateKeysForUser = getApiAndAddPrivateKeysForUser;
115
125
  function createHealthcarePartyUser(api, userLogin, userToken, publicKey, privateKey) {
116
126
  return __awaiter(this, void 0, void 0, function* () {
117
127
  const { publicKey: newPublicKey, privateKey: newPrivateKey } = yield api.cryptoApi.RSA.generateKeyPair();
@@ -159,7 +169,6 @@ function createNewHcpApi(env) {
159
169
  return { api, credentials, user: yield api.userApi.getCurrentUser() };
160
170
  });
161
171
  }
162
- exports.createNewHcpApi = createNewHcpApi;
163
172
  function createNewPatientApi(env) {
164
173
  return __awaiter(this, void 0, void 0, function* () {
165
174
  const initialisationApi = yield testSetupMasterApi(env);
@@ -179,7 +188,6 @@ function createNewPatientApi(env) {
179
188
  return { api, credentials, user: yield api.userApi.getCurrentUser() };
180
189
  });
181
190
  }
182
- exports.createNewPatientApi = createNewPatientApi;
183
191
  function createNewKeylessApi(env) {
184
192
  return __awaiter(this, void 0, void 0, function* () {
185
193
  const initialisationApi = yield icc_x_api_1.IcureBasicApi.initialise(env.iCureUrl, { username: env.masterHcp.user, password: env.masterHcp.password }, fetch);
@@ -206,15 +214,14 @@ function createNewKeylessApi(env) {
206
214
  return { api, credentials };
207
215
  });
208
216
  }
209
- exports.createNewKeylessApi = createNewKeylessApi;
210
217
  /**
211
218
  * Creates a hierarchy of HCPs with the following structure:
212
219
  * grand HCP -+-> parent HCP ---> child HCP
213
220
  * |
214
221
  * +-> child2 HCP
215
222
  */
216
- function createHcpHierarchyApis(env, setupAutodelegations = true, disableParentKeysInitialisation = false) {
217
- return __awaiter(this, void 0, void 0, function* () {
223
+ function createHcpHierarchyApis(env_1) {
224
+ return __awaiter(this, arguments, void 0, function* (env, setupAutodelegations = true, disableParentKeysInitialisation = false) {
218
225
  const shaVersion = icc_x_api_1.ShaVersion.Sha1;
219
226
  const initialisationApi = yield testSetupMasterApi(env);
220
227
  const primitives = new icc_x_api_1.WebCryptoPrimitives(crypto_1.webcrypto);
@@ -314,12 +321,11 @@ function createHcpHierarchyApis(env, setupAutodelegations = true, disableParentK
314
321
  };
315
322
  });
316
323
  }
317
- exports.createHcpHierarchyApis = createHcpHierarchyApis;
318
324
  /**
319
325
  * Create a parent HCP with a key and a child HCP without any initialised key
320
326
  */
321
- function createNewHcpWithoutKeyAndParentWithKey(env, props = {}) {
322
- return __awaiter(this, void 0, void 0, function* () {
327
+ function createNewHcpWithoutKeyAndParentWithKey(env_1) {
328
+ return __awaiter(this, arguments, void 0, function* (env, props = {}) {
323
329
  const initialisationApi = yield testSetupMasterApi(env);
324
330
  const primitives = new icc_x_api_1.WebCryptoPrimitives(crypto_1.webcrypto);
325
331
  const parentCredentials = yield createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}`, primitives.randomUuid());
@@ -352,7 +358,6 @@ function createNewHcpWithoutKeyAndParentWithKey(env, props = {}) {
352
358
  };
353
359
  });
354
360
  }
355
- exports.createNewHcpWithoutKeyAndParentWithKey = createNewHcpWithoutKeyAndParentWithKey;
356
361
  function testSetupMasterApi(env) {
357
362
  return apiV7_1.IcureApi.initialise(env.iCureUrl, { username: env.masterHcp.user, password: env.masterHcp.password }, {
358
363
  generateNewKeyForDataOwner() {
@@ -366,7 +371,6 @@ function testSetupMasterApi(env) {
366
371
  },
367
372
  }, crypto_1.webcrypto, fetch);
368
373
  }
369
- exports.testSetupMasterApi = testSetupMasterApi;
370
374
  function createUserInMultipleGroups(env) {
371
375
  return __awaiter(this, void 0, void 0, function* () {
372
376
  const primitives = new icc_x_api_1.WebCryptoPrimitives(crypto_1.webcrypto);
@@ -423,11 +427,9 @@ function createUserInMultipleGroups(env) {
423
427
  };
424
428
  });
425
429
  }
426
- exports.createUserInMultipleGroups = createUserInMultipleGroups;
427
430
  function isLiteTest() {
428
431
  return (0, types_1.getEnvVariables)().testEnvironment == 'oss';
429
432
  }
430
- exports.isLiteTest = isLiteTest;
431
433
  function describeNoLite(title, fn) {
432
434
  if (isLiteTest()) {
433
435
  return mocha_1.describe.skip(title, fn);
@@ -436,7 +438,6 @@ function describeNoLite(title, fn) {
436
438
  return (0, mocha_1.describe)(title, fn);
437
439
  }
438
440
  }
439
- exports.describeNoLite = describeNoLite;
440
441
  function itNoLite(title, fn) {
441
442
  if (isLiteTest()) {
442
443
  return it.skip(title, fn);
@@ -445,5 +446,4 @@ function itNoLite(title, fn) {
445
446
  return it(title, fn);
446
447
  }
447
448
  }
448
- exports.itNoLite = itNoLite;
449
449
  //# sourceMappingURL=test_utils.js.map