@icure/api 7.0.0-beta.1 → 7.0.0-beta.3

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 (103) hide show
  1. package/icc-api/api/IccDataownerApi.d.ts +13 -2
  2. package/icc-api/api/IccDataownerApi.js +30 -4
  3. package/icc-api/api/IccDataownerApi.js.map +1 -1
  4. package/icc-api/api/IccPatientApi.d.ts +4 -0
  5. package/icc-api/api/IccPatientApi.js +17 -0
  6. package/icc-api/api/IccPatientApi.js.map +1 -1
  7. package/icc-api/model/CryptoActorStub.d.ts +55 -0
  8. package/icc-api/model/CryptoActorStub.js +35 -0
  9. package/icc-api/model/CryptoActorStub.js.map +1 -0
  10. package/icc-api/model/DataOwnerTypeEnum.d.ts +8 -0
  11. package/icc-api/model/DataOwnerTypeEnum.js +13 -0
  12. package/icc-api/model/DataOwnerTypeEnum.js.map +1 -0
  13. package/icc-api/model/DataOwnerWithType.d.ts +16 -3
  14. package/icc-api/model/DataOwnerWithType.js +22 -7
  15. package/icc-api/model/DataOwnerWithType.js.map +1 -1
  16. package/icc-api/model/Device.d.ts +4 -0
  17. package/icc-api/model/Device.js.map +1 -1
  18. package/icc-api/model/HealthcareParty.d.ts +4 -0
  19. package/icc-api/model/HealthcareParty.js.map +1 -1
  20. package/icc-api/model/Patient.d.ts +4 -0
  21. package/icc-api/model/Patient.js.map +1 -1
  22. package/icc-x-api/basexapi/EncryptedEntityXApi.d.ts +48 -0
  23. package/icc-x-api/basexapi/EncryptedEntityXApi.js +3 -0
  24. package/icc-x-api/basexapi/EncryptedEntityXApi.js.map +1 -0
  25. package/icc-x-api/crypto/AES.js +9 -1
  26. package/icc-x-api/crypto/AES.js.map +1 -1
  27. package/icc-x-api/crypto/BaseExchangeKeysManager.d.ts +4 -2
  28. package/icc-x-api/crypto/BaseExchangeKeysManager.js +32 -31
  29. package/icc-x-api/crypto/BaseExchangeKeysManager.js.map +1 -1
  30. package/icc-x-api/crypto/CryptoStrategies.d.ts +5 -4
  31. package/icc-x-api/crypto/CryptoStrategies.js.map +1 -1
  32. package/icc-x-api/crypto/EntitiesEncryption.d.ts +23 -4
  33. package/icc-x-api/crypto/EntitiesEncryption.js +48 -24
  34. package/icc-x-api/crypto/EntitiesEncryption.js.map +1 -1
  35. package/icc-x-api/crypto/ExchangeKeysManager.d.ts +3 -2
  36. package/icc-x-api/crypto/ExchangeKeysManager.js +3 -3
  37. package/icc-x-api/crypto/ExchangeKeysManager.js.map +1 -1
  38. package/icc-x-api/crypto/KeyManager.js +4 -4
  39. package/icc-x-api/crypto/KeyManager.js.map +1 -1
  40. package/icc-x-api/crypto/KeyRecovery.d.ts +2 -1
  41. package/icc-x-api/crypto/KeyRecovery.js.map +1 -1
  42. package/icc-x-api/crypto/LegacyCryptoStrategies.d.ts +5 -4
  43. package/icc-x-api/crypto/LegacyCryptoStrategies.js +1 -1
  44. package/icc-x-api/crypto/LegacyCryptoStrategies.js.map +1 -1
  45. package/icc-x-api/crypto/ShamirKeysManager.d.ts +4 -3
  46. package/icc-x-api/crypto/ShamirKeysManager.js +8 -7
  47. package/icc-x-api/crypto/ShamirKeysManager.js.map +1 -1
  48. package/icc-x-api/crypto/TransferKeysManager.d.ts +3 -2
  49. package/icc-x-api/crypto/TransferKeysManager.js +6 -6
  50. package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
  51. package/icc-x-api/crypto/utils.d.ts +7 -6
  52. package/icc-x-api/crypto/utils.js +4 -7
  53. package/icc-x-api/crypto/utils.js.map +1 -1
  54. package/icc-x-api/icc-accesslog-x-api.d.ts +27 -1
  55. package/icc-x-api/icc-accesslog-x-api.js +34 -1
  56. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  57. package/icc-x-api/icc-calendar-item-x-api.d.ts +36 -1
  58. package/icc-x-api/icc-calendar-item-x-api.js +61 -1
  59. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  60. package/icc-x-api/icc-classification-x-api.d.ts +27 -1
  61. package/icc-x-api/icc-classification-x-api.js +34 -1
  62. package/icc-x-api/icc-classification-x-api.js.map +1 -1
  63. package/icc-x-api/icc-contact-x-api.d.ts +27 -1
  64. package/icc-x-api/icc-contact-x-api.js +34 -1
  65. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  66. package/icc-x-api/icc-crypto-x-api.d.ts +6 -6
  67. package/icc-x-api/icc-crypto-x-api.js +4 -4
  68. package/icc-x-api/icc-crypto-x-api.js.map +1 -1
  69. package/icc-x-api/icc-data-owner-x-api.d.ts +21 -52
  70. package/icc-x-api/icc-data-owner-x-api.js +36 -68
  71. package/icc-x-api/icc-data-owner-x-api.js.map +1 -1
  72. package/icc-x-api/icc-document-x-api.d.ts +71 -4
  73. package/icc-x-api/icc-document-x-api.js +96 -6
  74. package/icc-x-api/icc-document-x-api.js.map +1 -1
  75. package/icc-x-api/icc-form-x-api.d.ts +27 -1
  76. package/icc-x-api/icc-form-x-api.js +34 -1
  77. package/icc-x-api/icc-form-x-api.js.map +1 -1
  78. package/icc-x-api/icc-helement-x-api.d.ts +27 -1
  79. package/icc-x-api/icc-helement-x-api.js +34 -1
  80. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  81. package/icc-x-api/icc-icure-maintenance-x-api.js +4 -4
  82. package/icc-x-api/icc-icure-maintenance-x-api.js.map +1 -1
  83. package/icc-x-api/icc-invoice-x-api.d.ts +27 -1
  84. package/icc-x-api/icc-invoice-x-api.js +34 -1
  85. package/icc-x-api/icc-invoice-x-api.js.map +1 -1
  86. package/icc-x-api/icc-maintenance-task-x-api.d.ts +25 -2
  87. package/icc-x-api/icc-maintenance-task-x-api.js +26 -2
  88. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
  89. package/icc-x-api/icc-message-x-api.d.ts +30 -1
  90. package/icc-x-api/icc-message-x-api.js +37 -1
  91. package/icc-x-api/icc-message-x-api.js.map +1 -1
  92. package/icc-x-api/icc-patient-x-api.d.ts +67 -1
  93. package/icc-x-api/icc-patient-x-api.js +80 -6
  94. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  95. package/icc-x-api/icc-receipt-x-api.d.ts +47 -2
  96. package/icc-x-api/icc-receipt-x-api.js +58 -4
  97. package/icc-x-api/icc-receipt-x-api.js.map +1 -1
  98. package/icc-x-api/icc-time-table-x-api.d.ts +25 -1
  99. package/icc-x-api/icc-time-table-x-api.js +27 -2
  100. package/icc-x-api/icc-time-table-x-api.js.map +1 -1
  101. package/icc-x-api/index.js +4 -3
  102. package/icc-x-api/index.js.map +1 -1
  103. package/package.json +1 -1
@@ -14,7 +14,6 @@ const icc_api_1 = require("../icc-api");
14
14
  const _ = require("lodash");
15
15
  const models = require("../icc-api/model/models");
16
16
  const AuthenticationProvider_1 = require("./auth/AuthenticationProvider");
17
- const ShareMetadataBehaviour_1 = require("./crypto/ShareMetadataBehaviour");
18
17
  class IccReceiptXApi extends icc_api_1.IccReceiptApi {
19
18
  constructor(host, headers, crypto, dataOwnerApi, authenticationProvider = new AuthenticationProvider_1.NoAuthenticationProvider(), fetchImpl = typeof window !== 'undefined'
20
19
  ? window.fetch
@@ -79,7 +78,19 @@ class IccReceiptXApi extends icc_api_1.IccReceiptApi {
79
78
  });
80
79
  }
81
80
  /**
82
- * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.
81
+ * Adds an unencrypted attachment to a receipt.
82
+ * @param receipt a receipt.
83
+ * @param blobType the type of the attachment.
84
+ * @param attachment a attachment for the receipt.
85
+ * @return the updated receipt.
86
+ */
87
+ setClearReceiptAttachment(receipt, blobType, attachment) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ return yield this.setReceiptAttachment(receipt.id, blobType, undefined, attachment);
90
+ });
91
+ }
92
+ /**
93
+ * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt, throwing an error if the operation fails.
83
94
  * @param receipt a receipt.
84
95
  * @param attachmentId id of the attachment of this receipt to retrieve.
85
96
  * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption
@@ -88,7 +99,25 @@ class IccReceiptXApi extends icc_api_1.IccReceiptApi {
88
99
  */
89
100
  getAndDecryptReceiptAttachment(receipt, attachmentId, validator = () => Promise.resolve(true)) {
90
101
  return __awaiter(this, void 0, void 0, function* () {
91
- return yield this.crypto.entities.decryptDataOf(receipt, yield this.getReceiptAttachment(receipt.id, attachmentId, ''), (x) => validator(x));
102
+ const { data, wasDecrypted } = yield this.crypto.entities.tryDecryptDataOf(receipt, yield this.getReceiptAttachment(receipt.id, attachmentId, ''), (x) => validator(x));
103
+ if (!wasDecrypted)
104
+ throw new Error(`No valid key found to decrypt data of receipt ${receipt.id}.`);
105
+ return data;
106
+ });
107
+ }
108
+ /**
109
+ * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.
110
+ * @param receipt a receipt.
111
+ * @param attachmentId id of the attachment of this receipt to retrieve.
112
+ * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption
113
+ * keys and it is unclear which one should be used this function can help to detect bad decryptions.
114
+ * @return an object containing:
115
+ * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.
116
+ * - wasDecrypted: if the data was successfully decrypted or not
117
+ */
118
+ getAndTryDecryptReceiptAttachment(receipt, attachmentId, validator = () => Promise.resolve(true)) {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ return yield this.crypto.entities.tryDecryptDataOf(receipt, yield this.getReceiptAttachment(receipt.id, attachmentId, ''), (x) => validator(x));
92
121
  });
93
122
  }
94
123
  /**
@@ -104,7 +133,32 @@ class IccReceiptXApi extends icc_api_1.IccReceiptApi {
104
133
  */
105
134
  shareWith(delegateId, receipt, options = {}) {
106
135
  return __awaiter(this, void 0, void 0, function* () {
107
- return yield this.modifyReceipt(yield this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(receipt, delegateId, undefined, options.shareEncryptionKey, ShareMetadataBehaviour_1.ShareMetadataBehaviour.IF_AVAILABLE));
136
+ return this.shareWithMany(receipt, { [delegateId]: options });
137
+ });
138
+ }
139
+ /**
140
+ * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also
141
+ * the encrypted content.
142
+ * @param receipt the receipt to share.
143
+ * @param delegates sharing options for each delegate which will gain access to the entity:
144
+ * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted
145
+ * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a
146
+ * receipt does not have encrypted content.
147
+ * @return a promise which will contain the updated receipt.
148
+ */
149
+ shareWithMany(receipt, delegates) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ return yield this.modifyReceipt(yield this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(receipt, true, delegates));
152
+ });
153
+ }
154
+ getDataOwnersWithAccessTo(entity) {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ return yield this.crypto.entities.getDataOwnersWithAccessTo(entity);
157
+ });
158
+ }
159
+ getEncryptionKeysOf(entity) {
160
+ return __awaiter(this, void 0, void 0, function* () {
161
+ return yield this.crypto.entities.encryptionKeysOf(entity);
108
162
  });
109
163
  }
110
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icc-receipt-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-receipt-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccReceiptApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\n\nexport class IccReceiptXApi extends IccReceiptApi {\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of receipt with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param r initialised data for the receipt. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of receipt.\n */\n async newInstance(\n user: models.User,\n r: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ): Promise<models.Receipt> {\n const receipt = new models.Receipt(\n _.extend(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.Receipt',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n r || {}\n )\n )\n\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Receipt(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(receipt, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n logReceipt(user: models.User, docId: string, refs: Array<string>, blobType: string, blob: ArrayBuffer) {\n return this.newInstance(user, { documentId: docId, references: refs })\n .then((rcpt) => this.createReceipt(rcpt))\n .then((rcpt) => (blob.byteLength != 0 ? this.setReceiptAttachment(rcpt.id!, blobType, '', <any>blob) : Promise.resolve(rcpt)))\n }\n\n /**\n * Adds an attachment to a receipt, encrypting it on client side using the encryption keys of the provided receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async encryptAndSetReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise<models.Receipt> {\n const encryptedData = await this.crypto.entities.encryptDataOf(receipt, attachment)\n return await this.setReceiptAttachment(receipt.id!, blobType, undefined, encryptedData)\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n */\n async getAndDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise<boolean> = () => Promise.resolve(true)\n ): Promise<ArrayBuffer> {\n return await this.crypto.entities.decryptDataOf(receipt, await this.getReceiptAttachment(receipt.id!, attachmentId, ''), (x) => validator(x))\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the receipt.\n * @param receipt the receipt to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * @return a promise which will contain the updated receipt.\n */\n async shareWith(\n delegateId: string,\n receipt: models.Receipt,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise<models.Receipt> {\n return await this.modifyReceipt(\n await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n receipt,\n delegateId,\n undefined,\n options.shareEncryptionKey,\n ShareMetadataBehaviour.IF_AVAILABLE\n )\n )\n }\n}\n"]}
1
+ {"version":3,"file":"icc-receipt-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-receipt-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccReceiptApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccReceiptXApi extends IccReceiptApi implements EncryptedEntityXApi<models.Receipt> {\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of receipt with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param r initialised data for the receipt. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of receipt.\n */\n async newInstance(\n user: models.User,\n r: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ): Promise<models.Receipt> {\n const receipt = new models.Receipt(\n _.extend(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.Receipt',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n r || {}\n )\n )\n\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Receipt(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(receipt, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n logReceipt(user: models.User, docId: string, refs: Array<string>, blobType: string, blob: ArrayBuffer) {\n return this.newInstance(user, { documentId: docId, references: refs })\n .then((rcpt) => this.createReceipt(rcpt))\n .then((rcpt) => (blob.byteLength != 0 ? this.setReceiptAttachment(rcpt.id!, blobType, '', <any>blob) : Promise.resolve(rcpt)))\n }\n\n /**\n * Adds an attachment to a receipt, encrypting it on client side using the encryption keys of the provided receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async encryptAndSetReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise<models.Receipt> {\n const encryptedData = await this.crypto.entities.encryptDataOf(receipt, attachment)\n return await this.setReceiptAttachment(receipt.id!, blobType, undefined, encryptedData)\n }\n\n /**\n * Adds an unencrypted attachment to a receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async setClearReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise<models.Receipt> {\n return await this.setReceiptAttachment(receipt.id!, blobType, undefined, attachment)\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt, throwing an error if the operation fails.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n */\n async getAndDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise<boolean> = () => Promise.resolve(true)\n ): Promise<ArrayBuffer> {\n const { data, wasDecrypted } = await this.crypto.entities.tryDecryptDataOf(\n receipt,\n await this.getReceiptAttachment(receipt.id!, attachmentId, ''),\n (x) => validator(x)\n )\n if (!wasDecrypted) throw new Error(`No valid key found to decrypt data of receipt ${receipt.id}.`)\n return data\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise<boolean> = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.entities.tryDecryptDataOf(receipt, await this.getReceiptAttachment(receipt.id!, attachmentId, ''), (x) => validator(x))\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the receipt.\n * @param receipt the receipt to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * @return a promise which will contain the updated receipt.\n */\n async shareWith(\n delegateId: string,\n receipt: models.Receipt,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise<models.Receipt> {\n return this.shareWithMany(receipt, { [delegateId]: options })\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content.\n * @param receipt the receipt to share.\n * @param delegates sharing options for each delegate which will gain access to the entity:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * @return a promise which will contain the updated receipt.\n */\n async shareWithMany(\n receipt: models.Receipt,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise<models.Receipt> {\n return await this.modifyReceipt(await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(receipt, true, delegates))\n }\n\n async getDataOwnersWithAccessTo(entity: models.Receipt): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: 'WRITE' }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.Receipt): Promise<string[]> {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n"]}
@@ -6,7 +6,8 @@ import { IccDataOwnerXApi } from './icc-data-owner-x-api';
6
6
  import * as models from '../icc-api/model/models';
7
7
  import { AuthenticationProvider } from './auth/AuthenticationProvider';
8
8
  import { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour';
9
- export declare class IccTimeTableXApi extends IccTimeTableApi {
9
+ import { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi';
10
+ export declare class IccTimeTableXApi extends IccTimeTableApi implements EncryptedEntityXApi<TimeTable> {
10
11
  i18n: any;
11
12
  crypto: IccCryptoXApi;
12
13
  dataOwnerApi: IccDataOwnerXApi;
@@ -45,4 +46,27 @@ export declare class IccTimeTableXApi extends IccTimeTableApi {
45
46
  shareWith(delegateId: string, timeTable: models.TimeTable, options?: {
46
47
  shareEncryptionKey?: ShareMetadataBehaviour;
47
48
  }): Promise<models.TimeTable>;
49
+ /**
50
+ * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also
51
+ * the encrypted content, with read-only or read-write permissions.
52
+ * @param timeTable the time table to share.
53
+ * @param delegates sharing options for each delegate.
54
+ * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted
55
+ * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a
56
+ * time table does not have encrypted content.
57
+ * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if
58
+ * the operation failed.
59
+ */
60
+ shareWithMany(timeTable: models.TimeTable, delegates: {
61
+ [delegateId: string]: {
62
+ shareEncryptionKey?: ShareMetadataBehaviour;
63
+ };
64
+ }): Promise<models.TimeTable>;
65
+ getDataOwnersWithAccessTo(entity: models.TimeTable): Promise<{
66
+ permissionsByDataOwnerId: {
67
+ [p: string]: 'WRITE';
68
+ };
69
+ hasUnknownAnonymousDataOwners: boolean;
70
+ }>;
71
+ getEncryptionKeysOf(entity: models.TimeTable): Promise<string[]>;
48
72
  }
@@ -15,7 +15,6 @@ const _ = require("lodash");
15
15
  const icc_api_1 = require("../icc-api");
16
16
  const models = require("../icc-api/model/models");
17
17
  const AuthenticationProvider_1 = require("./auth/AuthenticationProvider");
18
- const ShareMetadataBehaviour_1 = require("./crypto/ShareMetadataBehaviour");
19
18
  class IccTimeTableXApi extends icc_api_1.IccTimeTableApi {
20
19
  constructor(host, headers, crypto, dataOwnerApi, authenticationProvider = new AuthenticationProvider_1.NoAuthenticationProvider(), fetchImpl = typeof window !== 'undefined'
21
20
  ? window.fetch
@@ -76,7 +75,33 @@ class IccTimeTableXApi extends icc_api_1.IccTimeTableApi {
76
75
  */
77
76
  shareWith(delegateId, timeTable, options = {}) {
78
77
  return __awaiter(this, void 0, void 0, function* () {
79
- return yield this.modifyTimeTable(yield this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(timeTable, delegateId, undefined, options.shareEncryptionKey, ShareMetadataBehaviour_1.ShareMetadataBehaviour.IF_AVAILABLE));
78
+ return this.shareWithMany(timeTable, { [delegateId]: options });
79
+ });
80
+ }
81
+ /**
82
+ * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also
83
+ * the encrypted content, with read-only or read-write permissions.
84
+ * @param timeTable the time table to share.
85
+ * @param delegates sharing options for each delegate.
86
+ * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted
87
+ * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a
88
+ * time table does not have encrypted content.
89
+ * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if
90
+ * the operation failed.
91
+ */
92
+ shareWithMany(timeTable, delegates) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ return yield this.modifyTimeTable(yield this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(timeTable, true, delegates));
95
+ });
96
+ }
97
+ getDataOwnersWithAccessTo(entity) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ return yield this.crypto.entities.getDataOwnersWithAccessTo(entity);
100
+ });
101
+ }
102
+ getEncryptionKeysOf(entity) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ return yield this.crypto.entities.encryptionKeysOf(entity);
80
105
  });
81
106
  }
82
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icc-time-table-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-time-table-x-api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA2C;AAE3C,4BAA2B;AAC3B,wCAA4C;AAK5C,kDAAiD;AACjD,0EAAgG;AAChG,4EAAwE;AAExE,MAAa,gBAAiB,SAAQ,yBAAe;IAKnD,YACE,IAAY,EACZ,OAAkC,EAClC,MAAqB,EACrB,YAA8B,EAC9B,yBAAiD,IAAI,iDAAwB,EAAE,EAC/E,YAA2E,OAAO,MAAM,KAAK,WAAW;QACtG,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,KAAK;QAET,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAA;QAhBzD,SAAI,GAAQ,IAAI,CAAA;QAiBd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED;;;;;;;;;;;OAWG;IACG,WAAW,CACf,IAAU,EACV,EAAa,EACb,UAEI,EAAE;;;YAEN,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CACxB;gBACE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE;gBACvC,KAAK,EAAE,qCAAqC;gBAC5C,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;gBAC7B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;gBAC9B,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACrD,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,EAAE;aACT,EACD,EAAE,IAAI,EAAE,CACT,CAAA;YAED,MAAM,gBAAgB,GAAG;gBACvB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,OAAO,CAAC,mBAAmB,mCAAI,EAAE,CAAC;gBACjD,GAAG,CAAC,MAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,GAAG,mCAAI,EAAE,CAAC;gBACpC,GAAG,CAAC,MAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,kBAAkB,mCAAI,EAAE,CAAC;aACpD,CAAA;YACD,OAAO,IAAI,MAAM,CAAC,SAAS,CACzB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ;iBACvB,sCAAsC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC;iBAC/F,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAChC,CAAA;;KACF;IAED;;;;;;;;;;;OAWG;IACG,SAAS,CACb,UAAkB,EAClB,SAA2B,EAC3B,UAEI,EAAE;;YAEN,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,uCAAuC,CAChE,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,CAAC,kBAAkB,EAC1B,+CAAsB,CAAC,YAAY,CACpC,CACF,CAAA;QACH,CAAC;KAAA;CACF;AAhGD,4CAgGC","sourcesContent":["import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport { IccTimeTableApi } from '../icc-api'\nimport { User } from '../icc-api/model/User'\nimport { TimeTable } from '../icc-api/model/TimeTable'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport * as models from '../icc-api/model/models'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\n\nexport class IccTimeTableXApi extends IccTimeTableApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of timetable with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param tt initialised data for the timetable. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of timetable.\n */\n async newInstance(\n user: User,\n tt: TimeTable,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ) {\n const timeTable = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.TimeTable',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n tt || {}\n )\n\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.administrativeData ?? []),\n ]\n return new models.TimeTable(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(timeTable, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the time table.\n * @param timeTable the time table to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async shareWith(\n delegateId: string,\n timeTable: models.TimeTable,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise<models.TimeTable> {\n return await this.modifyTimeTable(\n await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n timeTable,\n delegateId,\n undefined,\n options.shareEncryptionKey,\n ShareMetadataBehaviour.IF_AVAILABLE\n )\n )\n }\n}\n"]}
1
+ {"version":3,"file":"icc-time-table-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-time-table-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport { IccTimeTableApi } from '../icc-api'\nimport { User } from '../icc-api/model/User'\nimport { TimeTable } from '../icc-api/model/TimeTable'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport * as models from '../icc-api/model/models'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccTimeTableXApi extends IccTimeTableApi implements EncryptedEntityXApi<TimeTable> {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of timetable with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param tt initialised data for the timetable. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of timetable.\n */\n async newInstance(\n user: User,\n tt: TimeTable,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ) {\n const timeTable = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.TimeTable',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n tt || {}\n )\n\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.administrativeData ?? []),\n ]\n return new models.TimeTable(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(timeTable, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the time table.\n * @param timeTable the time table to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async shareWith(\n delegateId: string,\n timeTable: models.TimeTable,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise<models.TimeTable> {\n return this.shareWithMany(timeTable, { [delegateId]: options })\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param timeTable the time table to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async shareWithMany(\n timeTable: models.TimeTable,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise<models.TimeTable> {\n return await this.modifyTimeTable(await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(timeTable, true, delegates))\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.TimeTable\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.TimeTable): Promise<string[]> {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n"]}
@@ -60,6 +60,7 @@ const icc_icure_maintenance_x_api_1 = require("./icc-icure-maintenance-x-api");
60
60
  const EntitiesEncryption_1 = require("./crypto/EntitiesEncryption");
61
61
  const ConfidentialEntities_1 = require("./crypto/ConfidentialEntities");
62
62
  const utils_1 = require("./crypto/utils");
63
+ const CryptoActorStub_1 = require("../icc-api/model/CryptoActorStub");
63
64
  __exportStar(require("./icc-accesslog-x-api"), exports);
64
65
  __exportStar(require("./icc-bekmehr-x-api"), exports);
65
66
  __exportStar(require("./icc-calendar-item-x-api"), exports);
@@ -118,7 +119,7 @@ const Api = function (host, authenticationOptions, cryptoStrategies, crypto = ty
118
119
  const healthcarePartyApi = new icc_hcparty_x_api_1.IccHcpartyXApi(host, params.headers, authenticationProvider, fetchImpl);
119
120
  const deviceApi = new IccDeviceApi_1.IccDeviceApi(host, params.headers, authenticationProvider, fetchImpl);
120
121
  const basePatientApi = new icc_api_1.IccPatientApi(host, params.headers, authenticationProvider, fetchImpl);
121
- const dataOwnerApi = new icc_data_owner_x_api_1.IccDataOwnerXApi(userApi, healthcarePartyApi, basePatientApi, deviceApi);
122
+ const dataOwnerApi = new icc_data_owner_x_api_1.IccDataOwnerXApi(host, params.headers, authenticationProvider, fetchImpl);
122
123
  // Crypto initialisation
123
124
  const icureStorage = new IcureStorageFacade_1.IcureStorageFacade(params.keyStorage, params.storage, params.entryKeysFactory);
124
125
  const cryptoPrimitives = new CryptoPrimitives_1.CryptoPrimitives(crypto);
@@ -126,13 +127,13 @@ const Api = function (host, authenticationOptions, cryptoStrategies, crypto = ty
126
127
  const keyRecovery = new KeyRecovery_1.KeyRecovery(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi);
127
128
  const keyManager = new KeyManager_1.KeyManager(cryptoPrimitives, dataOwnerApi, icureStorage, keyRecovery, baseExchangeKeysManager, cryptoStrategies);
128
129
  const newKey = yield keyManager.initialiseKeys();
129
- yield new TransferKeysManager_1.TransferKeysManager(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi, keyManager, icureStorage).updateTransferKeys(yield dataOwnerApi.getCurrentDataOwner());
130
+ yield new TransferKeysManager_1.TransferKeysManager(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi, keyManager, icureStorage).updateTransferKeys(CryptoActorStub_1.CryptoActorStubWithType.fromDataOwner(yield dataOwnerApi.getCurrentDataOwner()));
130
131
  // TODO customise cache size?
131
132
  const exchangeKeysManager = new ExchangeKeysManager_1.ExchangeKeysManager(100, 500, 60000, 600000, cryptoStrategies, cryptoPrimitives, keyManager, baseExchangeKeysManager, dataOwnerApi, icureStorage);
132
133
  const entitiesEncryption = new EntitiesEncryption_1.EntitiesEncryption(cryptoPrimitives, dataOwnerApi, exchangeKeysManager);
133
134
  const shamirManager = new ShamirKeysManager_1.ShamirKeysManager(cryptoPrimitives, dataOwnerApi, keyManager, exchangeKeysManager);
134
135
  const confidentialEntitites = new ConfidentialEntities_1.ConfidentialEntities(entitiesEncryption, cryptoPrimitives, dataOwnerApi);
135
- yield (0, utils_1.ensureDelegationForSelf)(dataOwnerApi, entitiesEncryption, cryptoPrimitives);
136
+ yield (0, utils_1.ensureDelegationForSelf)(dataOwnerApi, entitiesEncryption, cryptoPrimitives, basePatientApi);
136
137
  const cryptoApi = new icc_crypto_x_api_1.IccCryptoXApi(exchangeKeysManager, cryptoPrimitives, keyManager, dataOwnerApi, entitiesEncryption, shamirManager, params.storage, params.keyStorage, icureStorage, healthcarePartyApi, confidentialEntitites);
137
138
  const accessLogApi = new icc_accesslog_x_api_1.IccAccesslogXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl);
138
139
  const agendaApi = new icc_api_1.IccAgendaApi(host, params.headers, authenticationProvider, fetchImpl);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../icc-x-api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n IccAgendaApi,\n IccAuthApi,\n IccCalendarItemTypeApi,\n IccEntityrefApi,\n IccGroupApi,\n IccInsuranceApi,\n IccMedicallocationApi,\n IccPatientApi,\n IccPermissionApi,\n} from '../icc-api'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccInvoiceXApi } from './icc-invoice-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccFormXApi } from './icc-form-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { IccClassificationXApi } from './icc-classification-x-api'\nimport { IccCalendarItemXApi } from './icc-calendar-item-x-api'\nimport { IccPatientXApi } from './icc-patient-x-api'\nimport { IccMessageXApi } from './icc-message-x-api'\nimport { IccReceiptXApi } from './icc-receipt-x-api'\nimport { IccAccesslogXApi } from './icc-accesslog-x-api'\nimport { IccTimeTableXApi } from './icc-time-table-x-api'\nimport { IccDeviceApi } from '../icc-api/api/IccDeviceApi'\nimport { IccCodeXApi } from './icc-code-x-api'\nimport { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { StorageFacade } from './storage/StorageFacade'\nimport { KeyStorageFacade } from './storage/KeyStorageFacade'\nimport { LocalStorageImpl } from './storage/LocalStorageImpl'\nimport { KeyStorageImpl } from './storage/KeyStorageImpl'\nimport {\n AuthenticationProvider,\n BasicAuthenticationProvider,\n EnsembleAuthenticationProvider,\n NoAuthenticationProvider,\n} from './auth/AuthenticationProvider'\nimport { CryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { KeyManager } from './crypto/KeyManager'\nimport { IcureStorageFacade } from './storage/IcureStorageFacade'\nimport { DefaultStorageEntryKeysFactory } from './storage/DefaultStorageEntryKeysFactory'\nimport { KeyRecovery } from './crypto/KeyRecovery'\nimport { BaseExchangeKeysManager } from './crypto/BaseExchangeKeysManager'\nimport { StorageEntryKeysFactory } from './storage/StorageEntryKeysFactory'\nimport { CryptoStrategies } from './crypto/CryptoStrategies'\nimport { ExchangeKeysManager } from './crypto/ExchangeKeysManager'\nimport { ShamirKeysManager } from './crypto/ShamirKeysManager'\nimport { TransferKeysManager } from './crypto/TransferKeysManager'\nimport { IccIcureMaintenanceXApi } from './icc-icure-maintenance-x-api'\nimport { EntitiesEncryption } from './crypto/EntitiesEncryption'\nimport { ConfidentialEntities } from './crypto/ConfidentialEntities'\nimport { ensureDelegationForSelf } from './crypto/utils'\n\nexport * from './icc-accesslog-x-api'\nexport * from './icc-bekmehr-x-api'\nexport * from './icc-calendar-item-x-api'\nexport * from './icc-classification-x-api'\nexport * from './icc-code-x-api'\nexport * from './icc-contact-x-api'\nexport * from './icc-crypto-x-api'\nexport * from './icc-doctemplate-x-api'\nexport * from './icc-document-x-api'\nexport * from './icc-form-x-api'\nexport * from './icc-hcparty-x-api'\nexport * from './icc-helement-x-api'\nexport * from './icc-invoice-x-api'\nexport * from './icc-message-x-api'\nexport * from './icc-patient-x-api'\nexport * from './icc-user-x-api'\nexport * from './icc-time-table-x-api'\nexport * from './icc-receipt-x-api'\nexport * from './utils'\nexport { KeyStorageFacade } from './storage/KeyStorageFacade'\nexport { LocalStorageImpl } from './storage/LocalStorageImpl'\nexport { StorageFacade } from './storage/StorageFacade'\nexport { KeyStorageImpl } from './storage/KeyStorageImpl'\n\nexport interface Apis {\n authApi: IccAuthApi\n codeApi: IccCodeXApi\n calendarItemTypeApi: IccCalendarItemTypeApi\n medicalLocationApi: IccMedicallocationApi\n entityReferenceApi: IccEntityrefApi\n userApi: IccUserXApi\n permissionApi: IccPermissionApi\n healthcarePartyApi: IccHcpartyXApi\n deviceApi: IccDeviceApi\n cryptoApi: IccCryptoXApi\n accessLogApi: IccAccesslogXApi\n agendaApi: IccAgendaApi\n contactApi: IccContactXApi\n formApi: IccFormXApi\n groupApi: IccGroupApi\n invoiceApi: IccInvoiceXApi\n insuranceApi: IccInsuranceApi\n documentApi: IccDocumentXApi\n healthcareElementApi: IccHelementXApi\n classificationApi: IccClassificationXApi\n calendarItemApi: IccCalendarItemXApi\n receiptApi: IccReceiptXApi\n timetableApi: IccTimeTableXApi\n patientApi: IccPatientXApi\n messageApi: IccMessageXApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n dataOwnerApi: IccDataOwnerXApi\n icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n}\n\nexport type ApiOptions = {\n readonly entryKeysFactory?: StorageEntryKeysFactory\n readonly createMaintenanceTasksOnNewKey?: boolean\n readonly storage?: StorageFacade<string>\n readonly keyStorage?: KeyStorageFacade\n readonly headers?: { [headerName: string]: string }\n}\n\nclass NamedApiParametersWithDefault implements ApiOptions {\n constructor(custom: ApiOptions) {\n this.entryKeysFactory = custom.entryKeysFactory ?? new DefaultStorageEntryKeysFactory()\n this.createMaintenanceTasksOnNewKey = custom.createMaintenanceTasksOnNewKey ?? false\n this.storage = custom.storage ?? new LocalStorageImpl()\n this.keyStorage = custom.keyStorage ?? new KeyStorageImpl(this.storage)\n this.headers = custom.headers ?? {}\n }\n\n readonly entryKeysFactory: StorageEntryKeysFactory\n readonly createMaintenanceTasksOnNewKey: boolean\n readonly storage: StorageFacade<string>\n readonly keyStorage: KeyStorageFacade\n readonly headers: { [headerName: string]: string }\n}\n\nexport type AuthenticationDetails = {\n username: string\n password: string\n forceBasic?: boolean // default false\n}\n\nexport const Api = async function (\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n cryptoStrategies: CryptoStrategies,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n options: ApiOptions = {}\n): Promise<Apis> {\n const params = new NamedApiParametersWithDefault(options)\n let authenticationProvider: AuthenticationProvider\n if ('username' in authenticationOptions && 'password' in authenticationOptions) {\n authenticationProvider = authenticationOptions.forceBasic\n ? new BasicAuthenticationProvider(authenticationOptions.username, authenticationOptions.password)\n : new EnsembleAuthenticationProvider(\n new IccAuthApi(host, params.headers, new NoAuthenticationProvider(), fetchImpl),\n authenticationOptions.username,\n authenticationOptions.password\n )\n } else {\n authenticationProvider = authenticationOptions\n }\n\n // Here I instantiate a separate instance of the AuthApi that can call also login-protected methods (logout)\n const authApi = new IccAuthApi(host, params.headers, authenticationProvider, fetchImpl)\n const codeApi = new IccCodeXApi(host, params.headers, authenticationProvider, fetchImpl)\n const entityReferenceApi = new IccEntityrefApi(host, params.headers, authenticationProvider, fetchImpl)\n const userApi = new IccUserXApi(host, params.headers, authenticationProvider, fetchImpl)\n const permissionApi = new IccPermissionApi(host, params.headers, authenticationProvider, fetchImpl)\n const healthcarePartyApi = new IccHcpartyXApi(host, params.headers, authenticationProvider, fetchImpl)\n const deviceApi = new IccDeviceApi(host, params.headers, authenticationProvider, fetchImpl)\n const basePatientApi = new IccPatientApi(host, params.headers, authenticationProvider, fetchImpl)\n const dataOwnerApi = new IccDataOwnerXApi(userApi, healthcarePartyApi, basePatientApi, deviceApi)\n // Crypto initialisation\n const icureStorage = new IcureStorageFacade(params.keyStorage, params.storage, params.entryKeysFactory)\n const cryptoPrimitives = new CryptoPrimitives(crypto)\n const baseExchangeKeysManager = new BaseExchangeKeysManager(cryptoPrimitives, dataOwnerApi, healthcarePartyApi, basePatientApi, deviceApi)\n const keyRecovery = new KeyRecovery(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi)\n const keyManager = new KeyManager(cryptoPrimitives, dataOwnerApi, icureStorage, keyRecovery, baseExchangeKeysManager, cryptoStrategies)\n const newKey = await keyManager.initialiseKeys()\n await new TransferKeysManager(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi, keyManager, icureStorage).updateTransferKeys(\n await dataOwnerApi.getCurrentDataOwner()\n )\n // TODO customise cache size?\n const exchangeKeysManager = new ExchangeKeysManager(\n 100,\n 500,\n 60000,\n 600000,\n cryptoStrategies,\n cryptoPrimitives,\n keyManager,\n baseExchangeKeysManager,\n dataOwnerApi,\n icureStorage\n )\n const entitiesEncryption = new EntitiesEncryption(cryptoPrimitives, dataOwnerApi, exchangeKeysManager)\n const shamirManager = new ShamirKeysManager(cryptoPrimitives, dataOwnerApi, keyManager, exchangeKeysManager)\n const confidentialEntitites = new ConfidentialEntities(entitiesEncryption, cryptoPrimitives, dataOwnerApi)\n await ensureDelegationForSelf(dataOwnerApi, entitiesEncryption, cryptoPrimitives)\n const cryptoApi = new IccCryptoXApi(\n exchangeKeysManager,\n cryptoPrimitives,\n keyManager,\n dataOwnerApi,\n entitiesEncryption,\n shamirManager,\n params.storage,\n params.keyStorage,\n icureStorage,\n healthcarePartyApi,\n confidentialEntitites\n )\n const accessLogApi = new IccAccesslogXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const agendaApi = new IccAgendaApi(host, params.headers, authenticationProvider, fetchImpl)\n const contactApi = new IccContactXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const formApi = new IccFormXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const groupApi = new IccGroupApi(host, params.headers, authenticationProvider)\n const medicalLocationApi = new IccMedicallocationApi(host, params.headers, authenticationProvider)\n const calendarItemTypeApi = new IccCalendarItemTypeApi(host, params.headers, authenticationProvider)\n const invoiceApi = new IccInvoiceXApi(host, params.headers, cryptoApi, entityReferenceApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const insuranceApi = new IccInsuranceApi(host, params.headers, authenticationProvider, fetchImpl)\n const documentApi = new IccDocumentXApi(host, params.headers, cryptoApi, authApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const healthcareElementApi = new IccHelementXApi(\n host,\n params.headers,\n cryptoApi,\n dataOwnerApi,\n ['descr', 'note'],\n authenticationProvider,\n fetchImpl\n )\n const classificationApi = new IccClassificationXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const calendarItemApi = new IccCalendarItemXApi(\n host,\n params.headers,\n cryptoApi,\n dataOwnerApi,\n ['details', 'title', 'patientId'],\n authenticationProvider,\n fetchImpl\n )\n const receiptApi = new IccReceiptXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const timetableApi = new IccTimeTableXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const patientApi = new IccPatientXApi(\n host,\n params.headers,\n cryptoApi,\n contactApi,\n formApi,\n healthcareElementApi,\n invoiceApi,\n documentApi,\n healthcarePartyApi,\n classificationApi,\n dataOwnerApi,\n calendarItemApi,\n ['note'],\n authenticationProvider,\n fetchImpl\n )\n const messageApi = new IccMessageXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const maintenanceTaskApi = new IccMaintenanceTaskXApi(\n host,\n params.headers,\n cryptoApi,\n healthcarePartyApi,\n dataOwnerApi,\n ['properties'],\n authenticationProvider,\n fetchImpl\n )\n const icureMaintenanceTaskApi = new IccIcureMaintenanceXApi(cryptoApi, maintenanceTaskApi, dataOwnerApi)\n\n if (newKey && params.createMaintenanceTasksOnNewKey) {\n await icureMaintenanceTaskApi.createMaintenanceTasksForNewKeypair(await userApi.getCurrentUser(), newKey.newKeyPair)\n }\n return {\n cryptoApi,\n authApi,\n codeApi,\n calendarItemTypeApi,\n medicalLocationApi,\n userApi,\n permissionApi,\n patientApi,\n healthcarePartyApi,\n deviceApi,\n accessLogApi,\n contactApi,\n healthcareElementApi,\n documentApi,\n formApi,\n invoiceApi,\n insuranceApi,\n messageApi,\n entityReferenceApi,\n receiptApi,\n agendaApi,\n calendarItemApi,\n classificationApi,\n timetableApi,\n groupApi,\n maintenanceTaskApi,\n dataOwnerApi,\n icureMaintenanceTaskApi,\n }\n}\n\nexport const BasicApis = 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 fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n forceBasic: boolean = false\n) {\n const headers = {}\n const authenticationProvider = forceBasic\n ? new BasicAuthenticationProvider(username, password)\n : new EnsembleAuthenticationProvider(new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl), username, password)\n const authApi = new IccAuthApi(host, headers, authenticationProvider, fetchImpl)\n\n const codeApi = new IccCodeXApi(host, headers, authenticationProvider, fetchImpl)\n const entityReferenceApi = new IccEntityrefApi(host, headers, authenticationProvider, fetchImpl)\n const userApi = new IccUserXApi(host, headers, authenticationProvider, fetchImpl)\n const permissionApi = new IccPermissionApi(host, headers, authenticationProvider, fetchImpl)\n const agendaApi = new IccAgendaApi(host, headers, authenticationProvider, fetchImpl)\n const groupApi = new IccGroupApi(host, headers, authenticationProvider)\n const insuranceApi = new IccInsuranceApi(host, headers, authenticationProvider, fetchImpl)\n\n return {\n authApi,\n codeApi,\n userApi,\n permissionApi,\n insuranceApi,\n entityReferenceApi,\n agendaApi,\n groupApi,\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../icc-x-api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n IccAgendaApi,\n IccAuthApi,\n IccCalendarItemTypeApi,\n IccEntityrefApi,\n IccGroupApi,\n IccInsuranceApi,\n IccMedicallocationApi,\n IccPatientApi,\n IccPermissionApi,\n} from '../icc-api'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccInvoiceXApi } from './icc-invoice-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccFormXApi } from './icc-form-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { IccClassificationXApi } from './icc-classification-x-api'\nimport { IccCalendarItemXApi } from './icc-calendar-item-x-api'\nimport { IccPatientXApi } from './icc-patient-x-api'\nimport { IccMessageXApi } from './icc-message-x-api'\nimport { IccReceiptXApi } from './icc-receipt-x-api'\nimport { IccAccesslogXApi } from './icc-accesslog-x-api'\nimport { IccTimeTableXApi } from './icc-time-table-x-api'\nimport { IccDeviceApi } from '../icc-api/api/IccDeviceApi'\nimport { IccCodeXApi } from './icc-code-x-api'\nimport { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { StorageFacade } from './storage/StorageFacade'\nimport { KeyStorageFacade } from './storage/KeyStorageFacade'\nimport { LocalStorageImpl } from './storage/LocalStorageImpl'\nimport { KeyStorageImpl } from './storage/KeyStorageImpl'\nimport {\n AuthenticationProvider,\n BasicAuthenticationProvider,\n EnsembleAuthenticationProvider,\n NoAuthenticationProvider,\n} from './auth/AuthenticationProvider'\nimport { CryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { KeyManager } from './crypto/KeyManager'\nimport { IcureStorageFacade } from './storage/IcureStorageFacade'\nimport { DefaultStorageEntryKeysFactory } from './storage/DefaultStorageEntryKeysFactory'\nimport { KeyRecovery } from './crypto/KeyRecovery'\nimport { BaseExchangeKeysManager } from './crypto/BaseExchangeKeysManager'\nimport { StorageEntryKeysFactory } from './storage/StorageEntryKeysFactory'\nimport { CryptoStrategies } from './crypto/CryptoStrategies'\nimport { ExchangeKeysManager } from './crypto/ExchangeKeysManager'\nimport { ShamirKeysManager } from './crypto/ShamirKeysManager'\nimport { TransferKeysManager } from './crypto/TransferKeysManager'\nimport { IccIcureMaintenanceXApi } from './icc-icure-maintenance-x-api'\nimport { EntitiesEncryption } from './crypto/EntitiesEncryption'\nimport { ConfidentialEntities } from './crypto/ConfidentialEntities'\nimport { ensureDelegationForSelf } from './crypto/utils'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../icc-api/model/CryptoActorStub'\n\nexport * from './icc-accesslog-x-api'\nexport * from './icc-bekmehr-x-api'\nexport * from './icc-calendar-item-x-api'\nexport * from './icc-classification-x-api'\nexport * from './icc-code-x-api'\nexport * from './icc-contact-x-api'\nexport * from './icc-crypto-x-api'\nexport * from './icc-doctemplate-x-api'\nexport * from './icc-document-x-api'\nexport * from './icc-form-x-api'\nexport * from './icc-hcparty-x-api'\nexport * from './icc-helement-x-api'\nexport * from './icc-invoice-x-api'\nexport * from './icc-message-x-api'\nexport * from './icc-patient-x-api'\nexport * from './icc-user-x-api'\nexport * from './icc-time-table-x-api'\nexport * from './icc-receipt-x-api'\nexport * from './utils'\nexport { KeyStorageFacade } from './storage/KeyStorageFacade'\nexport { LocalStorageImpl } from './storage/LocalStorageImpl'\nexport { StorageFacade } from './storage/StorageFacade'\nexport { KeyStorageImpl } from './storage/KeyStorageImpl'\n\nexport interface Apis {\n authApi: IccAuthApi\n codeApi: IccCodeXApi\n calendarItemTypeApi: IccCalendarItemTypeApi\n medicalLocationApi: IccMedicallocationApi\n entityReferenceApi: IccEntityrefApi\n userApi: IccUserXApi\n permissionApi: IccPermissionApi\n healthcarePartyApi: IccHcpartyXApi\n deviceApi: IccDeviceApi\n cryptoApi: IccCryptoXApi\n accessLogApi: IccAccesslogXApi\n agendaApi: IccAgendaApi\n contactApi: IccContactXApi\n formApi: IccFormXApi\n groupApi: IccGroupApi\n invoiceApi: IccInvoiceXApi\n insuranceApi: IccInsuranceApi\n documentApi: IccDocumentXApi\n healthcareElementApi: IccHelementXApi\n classificationApi: IccClassificationXApi\n calendarItemApi: IccCalendarItemXApi\n receiptApi: IccReceiptXApi\n timetableApi: IccTimeTableXApi\n patientApi: IccPatientXApi\n messageApi: IccMessageXApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n dataOwnerApi: IccDataOwnerXApi\n icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n}\n\nexport type ApiOptions = {\n readonly entryKeysFactory?: StorageEntryKeysFactory\n readonly createMaintenanceTasksOnNewKey?: boolean\n readonly storage?: StorageFacade<string>\n readonly keyStorage?: KeyStorageFacade\n readonly headers?: { [headerName: string]: string }\n}\n\nclass NamedApiParametersWithDefault implements ApiOptions {\n constructor(custom: ApiOptions) {\n this.entryKeysFactory = custom.entryKeysFactory ?? new DefaultStorageEntryKeysFactory()\n this.createMaintenanceTasksOnNewKey = custom.createMaintenanceTasksOnNewKey ?? false\n this.storage = custom.storage ?? new LocalStorageImpl()\n this.keyStorage = custom.keyStorage ?? new KeyStorageImpl(this.storage)\n this.headers = custom.headers ?? {}\n }\n\n readonly entryKeysFactory: StorageEntryKeysFactory\n readonly createMaintenanceTasksOnNewKey: boolean\n readonly storage: StorageFacade<string>\n readonly keyStorage: KeyStorageFacade\n readonly headers: { [headerName: string]: string }\n}\n\nexport type AuthenticationDetails = {\n username: string\n password: string\n forceBasic?: boolean // default false\n}\n\nexport const Api = async function (\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n cryptoStrategies: CryptoStrategies,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n options: ApiOptions = {}\n): Promise<Apis> {\n const params = new NamedApiParametersWithDefault(options)\n let authenticationProvider: AuthenticationProvider\n if ('username' in authenticationOptions && 'password' in authenticationOptions) {\n authenticationProvider = authenticationOptions.forceBasic\n ? new BasicAuthenticationProvider(authenticationOptions.username, authenticationOptions.password)\n : new EnsembleAuthenticationProvider(\n new IccAuthApi(host, params.headers, new NoAuthenticationProvider(), fetchImpl),\n authenticationOptions.username,\n authenticationOptions.password\n )\n } else {\n authenticationProvider = authenticationOptions\n }\n\n // Here I instantiate a separate instance of the AuthApi that can call also login-protected methods (logout)\n const authApi = new IccAuthApi(host, params.headers, authenticationProvider, fetchImpl)\n const codeApi = new IccCodeXApi(host, params.headers, authenticationProvider, fetchImpl)\n const entityReferenceApi = new IccEntityrefApi(host, params.headers, authenticationProvider, fetchImpl)\n const userApi = new IccUserXApi(host, params.headers, authenticationProvider, fetchImpl)\n const permissionApi = new IccPermissionApi(host, params.headers, authenticationProvider, fetchImpl)\n const healthcarePartyApi = new IccHcpartyXApi(host, params.headers, authenticationProvider, fetchImpl)\n const deviceApi = new IccDeviceApi(host, params.headers, authenticationProvider, fetchImpl)\n const basePatientApi = new IccPatientApi(host, params.headers, authenticationProvider, fetchImpl)\n const dataOwnerApi = new IccDataOwnerXApi(host, params.headers, authenticationProvider, fetchImpl)\n // Crypto initialisation\n const icureStorage = new IcureStorageFacade(params.keyStorage, params.storage, params.entryKeysFactory)\n const cryptoPrimitives = new CryptoPrimitives(crypto)\n const baseExchangeKeysManager = new BaseExchangeKeysManager(cryptoPrimitives, dataOwnerApi, healthcarePartyApi, basePatientApi, deviceApi)\n const keyRecovery = new KeyRecovery(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi)\n const keyManager = new KeyManager(cryptoPrimitives, dataOwnerApi, icureStorage, keyRecovery, baseExchangeKeysManager, cryptoStrategies)\n const newKey = await keyManager.initialiseKeys()\n await new TransferKeysManager(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi, keyManager, icureStorage).updateTransferKeys(\n CryptoActorStubWithType.fromDataOwner(await dataOwnerApi.getCurrentDataOwner())\n )\n // TODO customise cache size?\n const exchangeKeysManager = new ExchangeKeysManager(\n 100,\n 500,\n 60000,\n 600000,\n cryptoStrategies,\n cryptoPrimitives,\n keyManager,\n baseExchangeKeysManager,\n dataOwnerApi,\n icureStorage\n )\n const entitiesEncryption = new EntitiesEncryption(cryptoPrimitives, dataOwnerApi, exchangeKeysManager)\n const shamirManager = new ShamirKeysManager(cryptoPrimitives, dataOwnerApi, keyManager, exchangeKeysManager)\n const confidentialEntitites = new ConfidentialEntities(entitiesEncryption, cryptoPrimitives, dataOwnerApi)\n await ensureDelegationForSelf(dataOwnerApi, entitiesEncryption, cryptoPrimitives, basePatientApi)\n const cryptoApi = new IccCryptoXApi(\n exchangeKeysManager,\n cryptoPrimitives,\n keyManager,\n dataOwnerApi,\n entitiesEncryption,\n shamirManager,\n params.storage,\n params.keyStorage,\n icureStorage,\n healthcarePartyApi,\n confidentialEntitites\n )\n const accessLogApi = new IccAccesslogXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const agendaApi = new IccAgendaApi(host, params.headers, authenticationProvider, fetchImpl)\n const contactApi = new IccContactXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const formApi = new IccFormXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const groupApi = new IccGroupApi(host, params.headers, authenticationProvider)\n const medicalLocationApi = new IccMedicallocationApi(host, params.headers, authenticationProvider)\n const calendarItemTypeApi = new IccCalendarItemTypeApi(host, params.headers, authenticationProvider)\n const invoiceApi = new IccInvoiceXApi(host, params.headers, cryptoApi, entityReferenceApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const insuranceApi = new IccInsuranceApi(host, params.headers, authenticationProvider, fetchImpl)\n const documentApi = new IccDocumentXApi(host, params.headers, cryptoApi, authApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const healthcareElementApi = new IccHelementXApi(\n host,\n params.headers,\n cryptoApi,\n dataOwnerApi,\n ['descr', 'note'],\n authenticationProvider,\n fetchImpl\n )\n const classificationApi = new IccClassificationXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const calendarItemApi = new IccCalendarItemXApi(\n host,\n params.headers,\n cryptoApi,\n dataOwnerApi,\n ['details', 'title', 'patientId'],\n authenticationProvider,\n fetchImpl\n )\n const receiptApi = new IccReceiptXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const timetableApi = new IccTimeTableXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const patientApi = new IccPatientXApi(\n host,\n params.headers,\n cryptoApi,\n contactApi,\n formApi,\n healthcareElementApi,\n invoiceApi,\n documentApi,\n healthcarePartyApi,\n classificationApi,\n dataOwnerApi,\n calendarItemApi,\n ['note'],\n authenticationProvider,\n fetchImpl\n )\n const messageApi = new IccMessageXApi(host, params.headers, cryptoApi, dataOwnerApi, authenticationProvider, fetchImpl)\n const maintenanceTaskApi = new IccMaintenanceTaskXApi(\n host,\n params.headers,\n cryptoApi,\n healthcarePartyApi,\n dataOwnerApi,\n ['properties'],\n authenticationProvider,\n fetchImpl\n )\n const icureMaintenanceTaskApi = new IccIcureMaintenanceXApi(cryptoApi, maintenanceTaskApi, dataOwnerApi)\n\n if (newKey && params.createMaintenanceTasksOnNewKey) {\n await icureMaintenanceTaskApi.createMaintenanceTasksForNewKeypair(await userApi.getCurrentUser(), newKey.newKeyPair)\n }\n return {\n cryptoApi,\n authApi,\n codeApi,\n calendarItemTypeApi,\n medicalLocationApi,\n userApi,\n permissionApi,\n patientApi,\n healthcarePartyApi,\n deviceApi,\n accessLogApi,\n contactApi,\n healthcareElementApi,\n documentApi,\n formApi,\n invoiceApi,\n insuranceApi,\n messageApi,\n entityReferenceApi,\n receiptApi,\n agendaApi,\n calendarItemApi,\n classificationApi,\n timetableApi,\n groupApi,\n maintenanceTaskApi,\n dataOwnerApi,\n icureMaintenanceTaskApi,\n }\n}\n\nexport const BasicApis = 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 fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n forceBasic: boolean = false\n) {\n const headers = {}\n const authenticationProvider = forceBasic\n ? new BasicAuthenticationProvider(username, password)\n : new EnsembleAuthenticationProvider(new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl), username, password)\n const authApi = new IccAuthApi(host, headers, authenticationProvider, fetchImpl)\n\n const codeApi = new IccCodeXApi(host, headers, authenticationProvider, fetchImpl)\n const entityReferenceApi = new IccEntityrefApi(host, headers, authenticationProvider, fetchImpl)\n const userApi = new IccUserXApi(host, headers, authenticationProvider, fetchImpl)\n const permissionApi = new IccPermissionApi(host, headers, authenticationProvider, fetchImpl)\n const agendaApi = new IccAgendaApi(host, headers, authenticationProvider, fetchImpl)\n const groupApi = new IccGroupApi(host, headers, authenticationProvider)\n const insuranceApi = new IccInsuranceApi(host, headers, authenticationProvider, fetchImpl)\n\n return {\n authApi,\n codeApi,\n userApi,\n permissionApi,\n insuranceApi,\n entityReferenceApi,\n agendaApi,\n groupApi,\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@icure/api",
3
- "version": "7.0.0-beta.1",
3
+ "version": "7.0.0-beta.3",
4
4
  "description": "Typescript version of iCure standalone API client",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",