@icure/api 8.6.18 → 8.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/icc-api/api/IccDocumentApi.d.ts +10 -2
- package/icc-api/api/IccDocumentApi.js +22 -4
- package/icc-api/api/IccDocumentApi.js.map +1 -1
- package/icc-api/api/IccReceiptApi.d.ts +17 -0
- package/icc-api/api/IccReceiptApi.js +52 -0
- package/icc-api/api/IccReceiptApi.js.map +1 -1
- package/icc-api/model/DataAttachment.d.ts +22 -0
- package/icc-api/model/DataAttachment.js.map +1 -1
- package/icc-api/model/Document.d.ts +6 -0
- package/icc-api/model/Document.js.map +1 -1
- package/icc-api/model/Receipt.d.ts +6 -0
- package/icc-api/model/Receipt.js.map +1 -1
- package/icc-x-api/crypto/BaseExchangeDataManager.js +2 -2
- package/icc-x-api/crypto/BaseExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/ExchangeDataManager.js +3 -3
- package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/ExtendedApisUtils.d.ts +1 -1
- package/icc-x-api/crypto/ExtendedApisUtils.js.map +1 -1
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.d.ts +1 -1
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.js +8 -2
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.js.map +1 -1
- package/icc-x-api/crypto/RecoveryDataEncryption.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.js +7 -7
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.js +7 -7
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-classification-x-api.js +4 -5
- package/icc-x-api/icc-classification-x-api.js.map +1 -1
- package/icc-x-api/icc-code-x-api.d.ts +2 -2
- package/icc-x-api/icc-code-x-api.js +3 -33
- package/icc-x-api/icc-code-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.js +20 -33
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
- package/icc-x-api/icc-document-x-api.d.ts +8 -7
- package/icc-x-api/icc-document-x-api.js +64 -22
- package/icc-x-api/icc-document-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.js +3 -4
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.js +11 -11
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-invoice-x-api.js +3 -4
- package/icc-x-api/icc-invoice-x-api.js.map +1 -1
- package/icc-x-api/icc-maintenance-task-x-api.js +3 -3
- package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.js +29 -29
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/icc-x-api/icc-receipt-x-api.d.ts +40 -0
- package/icc-x-api/icc-receipt-x-api.js +79 -1
- package/icc-x-api/icc-receipt-x-api.js.map +1 -1
- package/icc-x-api/icc-topic-x-api.js.map +1 -1
- package/icc-x-api/index.js +1 -1
- package/icc-x-api/index.js.map +1 -1
- package/icc-x-api/utils/code-util.d.ts +23 -0
- package/icc-x-api/utils/code-util.js +39 -2
- package/icc-x-api/utils/code-util.js.map +1 -1
- package/icc-x-api/utils/collection-utils.d.ts +13 -0
- package/icc-x-api/utils/collection-utils.js +69 -0
- package/icc-x-api/utils/collection-utils.js.map +1 -1
- package/icc-x-api/utils/compression-utils.d.ts +28 -0
- package/icc-x-api/utils/compression-utils.js +106 -0
- package/icc-x-api/utils/compression-utils.js.map +1 -0
- package/icc-x-api/utils/crypto-utils.js +7 -7
- package/icc-x-api/utils/crypto-utils.js.map +1 -1
- package/icc-x-api/utils/formatting-util.d.ts +1 -3
- package/icc-x-api/utils/formatting-util.js +15 -17
- package/icc-x-api/utils/formatting-util.js.map +1 -1
- package/icc-x-api/utils/hcp-util.js +2 -3
- package/icc-x-api/utils/hcp-util.js.map +1 -1
- package/icc-x-api/utils/insurability-util.js +10 -8
- package/icc-x-api/utils/insurability-util.js.map +1 -1
- package/icc-x-api/utils/lzma-wasm.d.ts +6 -0
- package/icc-x-api/utils/lzma-wasm.js +81 -0
- package/icc-x-api/utils/lzma-wasm.js.map +1 -0
- package/icc-x-api/utils/mutex.d.ts +12 -0
- package/icc-x-api/utils/mutex.js +26 -0
- package/icc-x-api/utils/mutex.js.map +1 -0
- package/icc-x-api/utils/websocket.js +7 -7
- package/icc-x-api/utils/websocket.js.map +1 -1
- package/icc-x-api/wasm/lzma/lzma.js +2 -0
- package/icc-x-api/wasm/lzma/lzma.wasm +0 -0
- package/package.json +2 -11
- package/icc-x-api/utils/uuid-encoder.d.ts +0 -44
- package/icc-x-api/utils/uuid-encoder.js +0 -114
- package/icc-x-api/utils/uuid-encoder.js.map +0 -1
- package/test/icc-api/api/IccAgendaApi.d.ts +0 -1
- package/test/icc-api/api/IccAgendaApi.js +0 -64
- package/test/icc-api/api/IccAgendaApi.js.map +0 -1
- package/test/icc-api/api/IccAnonymousAccessApi.d.ts +0 -1
- package/test/icc-api/api/IccAnonymousAccessApi.js +0 -58
- package/test/icc-api/api/IccAnonymousAccessApi.js.map +0 -1
- package/test/icc-api/api/IccCalendarItemApi.d.ts +0 -1
- package/test/icc-api/api/IccCalendarItemApi.js +0 -67
- package/test/icc-api/api/IccCalendarItemApi.js.map +0 -1
- package/test/icc-api/api/IccCalendarItemTypeApi.d.ts +0 -1
- package/test/icc-api/api/IccCalendarItemTypeApi.js +0 -96
- package/test/icc-api/api/IccCalendarItemTypeApi.js.map +0 -1
- package/test/icc-api/api/IccCodeApi.d.ts +0 -1
- package/test/icc-api/api/IccCodeApi.js +0 -38
- package/test/icc-api/api/IccCodeApi.js.map +0 -1
- package/test/icc-api/api/IccDocumentApi.d.ts +0 -1
- package/test/icc-api/api/IccDocumentApi.js +0 -199
- package/test/icc-api/api/IccDocumentApi.js.map +0 -1
- package/test/icc-api/api/IccGroupApi.d.ts +0 -1
- package/test/icc-api/api/IccGroupApi.js +0 -50
- package/test/icc-api/api/IccGroupApi.js.map +0 -1
- package/test/icc-api/api/IccKeywordApi.d.ts +0 -1
- package/test/icc-api/api/IccKeywordApi.js +0 -64
- package/test/icc-api/api/IccKeywordApi.js.map +0 -1
- package/test/icc-api/api/IccMedicalLocationApi.d.ts +0 -1
- package/test/icc-api/api/IccMedicalLocationApi.js +0 -64
- package/test/icc-api/api/IccMedicalLocationApi.js.map +0 -1
- package/test/icc-api/api/IccPlaceApi.d.ts +0 -1
- package/test/icc-api/api/IccPlaceApi.js +0 -64
- package/test/icc-api/api/IccPlaceApi.js.map +0 -1
- package/test/icc-api/api/IccRecoveryDataApi.d.ts +0 -1
- package/test/icc-api/api/IccRecoveryDataApi.js +0 -95
- package/test/icc-api/api/IccRecoveryDataApi.js.map +0 -1
- package/test/icc-api/api/IccRoleApi.d.ts +0 -1
- package/test/icc-api/api/IccRoleApi.js +0 -34
- package/test/icc-api/api/IccRoleApi.js.map +0 -1
- package/test/icc-api/api/IccUserApi.d.ts +0 -1
- package/test/icc-api/api/IccUserApi.js +0 -96
- package/test/icc-api/api/IccUserApi.js.map +0 -1
- package/test/icc-api/e2e/IccCalendarItemApi.d.ts +0 -1
- package/test/icc-api/e2e/IccCalendarItemApi.js +0 -46
- package/test/icc-api/e2e/IccCalendarItemApi.js.map +0 -1
- package/test/icc-api/model/modelHelpersTest.d.ts +0 -1
- package/test/icc-api/model/modelHelpersTest.js +0 -45
- package/test/icc-api/model/modelHelpersTest.js.map +0 -1
- package/test/icc-x-api/auth/group-switch-test.d.ts +0 -1
- package/test/icc-x-api/auth/group-switch-test.js +0 -81
- package/test/icc-x-api/auth/group-switch-test.js.map +0 -1
- package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +0 -2
- package/test/icc-x-api/auth/jwt-concurrency-test.js +0 -112
- package/test/icc-x-api/auth/jwt-concurrency-test.js.map +0 -1
- package/test/icc-x-api/auth/jwt-provider-test.d.ts +0 -1
- package/test/icc-x-api/auth/jwt-provider-test.js +0 -197
- package/test/icc-x-api/auth/jwt-provider-test.js.map +0 -1
- package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +0 -1
- package/test/icc-x-api/auth/smart-auth-provider-test.js +0 -224
- package/test/icc-x-api/auth/smart-auth-provider-test.js.map +0 -1
- package/test/icc-x-api/autofix-anonymity-test.d.ts +0 -1
- package/test/icc-x-api/autofix-anonymity-test.js +0 -122
- package/test/icc-x-api/autofix-anonymity-test.js.map +0 -1
- package/test/icc-x-api/confidential-entities-test.d.ts +0 -1
- package/test/icc-x-api/confidential-entities-test.js +0 -168
- package/test/icc-x-api/confidential-entities-test.js.map +0 -1
- package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +0 -1
- package/test/icc-x-api/crud/comprehensive-crud-test.js +0 -276
- package/test/icc-x-api/crud/comprehensive-crud-test.js.map +0 -1
- package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +0 -16
- package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -408
- package/test/icc-x-api/crud/entities-crud-test-interface.js.map +0 -1
- package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +0 -1
- package/test/icc-x-api/crypto/anonymous-delegations-test.js +0 -587
- package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +0 -1
- package/test/icc-x-api/crypto/concurrency.d.ts +0 -1
- package/test/icc-x-api/crypto/concurrency.js +0 -35
- package/test/icc-x-api/crypto/concurrency.js.map +0 -1
- package/test/icc-x-api/crypto/crypto-utils.d.ts +0 -1
- package/test/icc-x-api/crypto/crypto-utils.js +0 -79
- package/test/icc-x-api/crypto/crypto-utils.js.map +0 -1
- package/test/icc-x-api/crypto/cryptoTest.d.ts +0 -2
- package/test/icc-x-api/crypto/cryptoTest.js +0 -402
- package/test/icc-x-api/crypto/cryptoTest.js.map +0 -1
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +0 -1
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +0 -166
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +0 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.js +0 -674
- package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +0 -1
- package/test/icc-x-api/crypto/full-crypto-test.d.ts +0 -1
- package/test/icc-x-api/crypto/full-crypto-test.js +0 -454
- package/test/icc-x-api/crypto/full-crypto-test.js.map +0 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.d.ts +0 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js +0 -379
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +0 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js +0 -278
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +0 -1
- package/test/icc-x-api/crypto/shamir.d.ts +0 -2
- package/test/icc-x-api/crypto/shamir.js +0 -167
- package/test/icc-x-api/crypto/shamir.js.map +0 -1
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +0 -1
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +0 -71
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +0 -1
- package/test/icc-x-api/crypto/soft-deleted-data-owners.d.ts +0 -2
- package/test/icc-x-api/crypto/soft-deleted-data-owners.js +0 -113
- package/test/icc-x-api/crypto/soft-deleted-data-owners.js.map +0 -1
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +0 -246
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +0 -1
- package/test/icc-x-api/entity-with-attachments-api-test.d.ts +0 -1
- package/test/icc-x-api/entity-with-attachments-api-test.js +0 -142
- package/test/icc-x-api/entity-with-attachments-api-test.js.map +0 -1
- package/test/icc-x-api/filters/filters.d.ts +0 -1
- package/test/icc-x-api/filters/filters.js +0 -49
- package/test/icc-x-api/filters/filters.js.map +0 -1
- package/test/icc-x-api/filters/healthelement.d.ts +0 -1
- package/test/icc-x-api/filters/healthelement.js +0 -333
- package/test/icc-x-api/filters/healthelement.js.map +0 -1
- package/test/icc-x-api/icc-accesslog-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-accesslog-x-api.js +0 -106
- package/test/icc-x-api/icc-accesslog-x-api.js.map +0 -1
- package/test/icc-x-api/icc-application-settings-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-application-settings-x-api.js +0 -91
- package/test/icc-x-api/icc-application-settings-x-api.js.map +0 -1
- package/test/icc-x-api/icc-auth-api.d.ts +0 -1
- package/test/icc-x-api/icc-auth-api.js +0 -47
- package/test/icc-x-api/icc-auth-api.js.map +0 -1
- package/test/icc-x-api/icc-calendar-item-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-calendar-item-x-api.js +0 -150
- package/test/icc-x-api/icc-calendar-item-x-api.js.map +0 -1
- package/test/icc-x-api/icc-contact-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-contact-x-api.js +0 -355
- package/test/icc-x-api/icc-contact-x-api.js.map +0 -1
- package/test/icc-x-api/icc-document-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-document-x-api.js +0 -76
- package/test/icc-x-api/icc-document-x-api.js.map +0 -1
- package/test/icc-x-api/icc-form-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-form-x-api.js +0 -413
- package/test/icc-x-api/icc-form-x-api.js.map +0 -1
- package/test/icc-x-api/icc-hcparty-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-hcparty-x-api-test.js +0 -43
- package/test/icc-x-api/icc-hcparty-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-helement-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-helement-x-api-test.js +0 -155
- package/test/icc-x-api/icc-helement-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-invoice-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-invoice-x-api.js +0 -99
- package/test/icc-x-api/icc-invoice-x-api.js.map +0 -1
- package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js +0 -222
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-message-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-message-x-api.js +0 -54
- package/test/icc-x-api/icc-message-x-api.js.map +0 -1
- package/test/icc-x-api/icc-patient-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-patient-x-api-test.js +0 -165
- package/test/icc-x-api/icc-patient-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-recovery-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-recovery-x-api.js +0 -175
- package/test/icc-x-api/icc-recovery-x-api.js.map +0 -1
- package/test/icc-x-api/icc-topic-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-topic-x-api.js +0 -269
- package/test/icc-x-api/icc-topic-x-api.js.map +0 -1
- package/test/icc-x-api/icc-user-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-user-x-api-test.js +0 -99
- package/test/icc-x-api/icc-user-x-api-test.js.map +0 -1
- package/test/icc-x-api/keyless-api.d.ts +0 -1
- package/test/icc-x-api/keyless-api.js +0 -125
- package/test/icc-x-api/keyless-api.js.map +0 -1
- package/test/icc-x-api/patient-user.d.ts +0 -2
- package/test/icc-x-api/patient-user.js +0 -103
- package/test/icc-x-api/patient-user.js.map +0 -1
- package/test/icc-x-api/storage/storage.d.ts +0 -1
- package/test/icc-x-api/storage/storage.js +0 -48
- package/test/icc-x-api/storage/storage.js.map +0 -1
- package/test/icc-x-api/test-api-no-parent.d.ts +0 -1
- package/test/icc-x-api/test-api-no-parent.js +0 -79
- package/test/icc-x-api/test-api-no-parent.js.map +0 -1
- package/test/icc-x-api/test-legacy-data-support.d.ts +0 -1
- package/test/icc-x-api/test-legacy-data-support.js +0 -375
- package/test/icc-x-api/test-legacy-data-support.js.map +0 -1
- package/test/icc-x-api/utils/graph-test.d.ts +0 -1
- package/test/icc-x-api/utils/graph-test.js +0 -54
- package/test/icc-x-api/utils/graph-test.js.map +0 -1
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +0 -1
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +0 -364
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +0 -1
- package/test/support/CSM-185.d.ts +0 -1
- package/test/support/CSM-185.js +0 -124
- package/test/support/CSM-185.js.map +0 -1
- package/test/support/CSM-243.d.ts +0 -1
- package/test/support/CSM-243.js +0 -120
- package/test/support/CSM-243.js.map +0 -1
- package/test/support/CSM-543.d.ts +0 -1
- package/test/support/CSM-543.js +0 -164
- package/test/support/CSM-543.js.map +0 -1
- package/test/support/CSM-729.d.ts +0 -1
- package/test/support/CSM-729.js +0 -225
- package/test/support/CSM-729.js.map +0 -1
- package/test/support/CSM-87.d.ts +0 -0
- package/test/support/CSM-87.js +0 -21
- package/test/support/CSM-87.js.map +0 -1
- package/test/support/CSM-93.d.ts +0 -1
- package/test/support/CSM-93.js +0 -112
- package/test/support/CSM-93.js.map +0 -1
- package/test/utils/FakeDataOwnerApi.d.ts +0 -32
- package/test/utils/FakeDataOwnerApi.js +0 -136
- package/test/utils/FakeDataOwnerApi.js.map +0 -1
- package/test/utils/FakeEncryptionKeysManager.d.ts +0 -36
- package/test/utils/FakeEncryptionKeysManager.js +0 -98
- package/test/utils/FakeEncryptionKeysManager.js.map +0 -1
- package/test/utils/FakeExchangeDataApi.d.ts +0 -32
- package/test/utils/FakeExchangeDataApi.js +0 -92
- package/test/utils/FakeExchangeDataApi.js.map +0 -1
- package/test/utils/FakeExchangeDataManager.d.ts +0 -48
- package/test/utils/FakeExchangeDataManager.js +0 -82
- package/test/utils/FakeExchangeDataManager.js.map +0 -1
- package/test/utils/FakeExchangeDataMapManager.d.ts +0 -12
- package/test/utils/FakeExchangeDataMapManager.js +0 -38
- package/test/utils/FakeExchangeDataMapManager.js.map +0 -1
- package/test/utils/FakeGenericApi.d.ts +0 -16
- package/test/utils/FakeGenericApi.js +0 -65
- package/test/utils/FakeGenericApi.js.map +0 -1
- package/test/utils/KeylessCryptoStrategies.d.ts +0 -23
- package/test/utils/KeylessCryptoStrategies.js +0 -26
- package/test/utils/KeylessCryptoStrategies.js.map +0 -1
- package/test/utils/TestApi.d.ts +0 -3
- package/test/utils/TestApi.js +0 -30
- package/test/utils/TestApi.js.map +0 -1
- package/test/utils/TestCollectionUtils.d.ts +0 -1
- package/test/utils/TestCollectionUtils.js +0 -109
- package/test/utils/TestCollectionUtils.js.map +0 -1
- package/test/utils/TestCryptoStrategies.d.ts +0 -42
- package/test/utils/TestCryptoStrategies.js +0 -80
- package/test/utils/TestCryptoStrategies.js.map +0 -1
- package/test/utils/TestStorage.d.ts +0 -23
- package/test/utils/TestStorage.js +0 -61
- package/test/utils/TestStorage.js.map +0 -1
- package/test/utils/roles.d.ts +0 -14
- package/test/utils/roles.js +0 -345
- package/test/utils/roles.js.map +0 -1
- package/test/utils/test_utils.d.ts +0 -87
- package/test/utils/test_utils.js +0 -452
- package/test/utils/test_utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../icc-x-api/utils/websocket.ts"],"names":[],"mappings":"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","sourcesContent":["import * as WebSocketNode from 'ws'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { AbstractFilter } from '../filters/filters'\nimport { User } from '../../icc-api/model/User'\nimport { isNode } from 'browser-or-node'\nimport { IccAuthApi } from '../../icc-api'\nimport { Service } from '../../icc-api/model/Service'\nimport { HealthElement } from '../../icc-api/model/HealthElement'\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { Device } from '../../icc-api/model/Device'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { Message } from '../../icc-api/model/Message'\nimport { Topic } from '../../icc-api/model/Topic'\n\nexport type EventTypes = 'CREATE' | 'UPDATE' | 'DELETE'\ntype Subscribable =\n | 'Patient'\n | 'Service'\n | 'User'\n | 'HealthElement'\n | 'MaintenanceTask'\n | 'HealthcareParty'\n | 'Device'\n | 'Contact'\n | 'Message'\n | 'Topic'\ntype SubscribableEntity = Patient | Service | User | HealthElement | MaintenanceTask | HealthcareParty | Device | Contact | Message | Topic\nexport type SubscriptionOptions = {\n connectionMaxRetry?: number\n connectionRetryIntervalMs?: number\n debug?: boolean\n}\n\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Patient',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Patient> | undefined,\n eventFired: (entity: Patient) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Patient) => Promise<Patient>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Service',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Service> | undefined,\n eventFired: (entity: Service) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Service) => Promise<Service>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Contact',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Contact> | undefined,\n eventFired: (entity: Contact) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Contact) => Promise<Contact>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthElement',\n eventTypes: EventTypes[],\n filter: AbstractFilter<HealthElement> | undefined,\n eventFired: (entity: HealthElement) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: HealthElement) => Promise<HealthElement>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Message',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Message> | undefined,\n eventFired: (entity: Message) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Message) => Promise<Message>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Topic',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Topic> | undefined,\n eventFired: (entity: Topic) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Topic) => Promise<Topic>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'User',\n eventTypes: EventTypes[],\n filter: AbstractFilter<User> | undefined,\n eventFired: (entity: User) => Promise<void>,\n options: SubscriptionOptions\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'MaintenanceTask',\n eventTypes: EventTypes[],\n filter: AbstractFilter<MaintenanceTask> | undefined,\n eventFired: (entity: MaintenanceTask) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: MaintenanceTask) => Promise<MaintenanceTask>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthcareParty',\n eventTypes: EventTypes[],\n filter: AbstractFilter<HealthcareParty> | undefined,\n eventFired: (entity: HealthcareParty) => Promise<void>,\n options: SubscriptionOptions\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Device',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Device> | undefined,\n eventFired: (entity: Device) => Promise<void>,\n options: SubscriptionOptions\n): Promise<WebSocketWrapper>\n\nexport function subscribeToEntityEvents<T extends SubscribableEntity>(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: Subscribable,\n eventTypes: EventTypes[],\n filter: AbstractFilter<T> | undefined,\n eventFired: (entity: T) => Promise<void>,\n options: SubscriptionOptions = {},\n decryptor?: (encrypted: T) => Promise<T>\n): Promise<WebSocketWrapper> {\n const config = {\n User: {\n qualifiedName: 'org.taktik.icure.entities.User',\n decryptor: (data: User) => Promise.resolve(new User({ ...data }) as T),\n },\n Patient: {\n qualifiedName: 'org.taktik.icure.entities.Patient',\n decryptor: (data: Patient) => decryptor!(data as Patient as T),\n },\n Service: {\n qualifiedName: 'org.taktik.icure.entities.embed.Service',\n decryptor: (data: Service) => decryptor!(data as Service as T),\n },\n HealthElement: {\n qualifiedName: 'org.taktik.icure.entities.HealthElement',\n decryptor: (data: HealthElement) => decryptor!(data as HealthElement as T),\n },\n Message: {\n qualifiedName: 'org.taktik.icure.entities.Message',\n decryptor: (data: Message) => decryptor!(data as Message as T),\n },\n Topic: {\n qualifiedName: 'org.taktik.icure.entities.Topic',\n decryptor: (data: Topic) => decryptor!(data as Topic as T),\n },\n MaintenanceTask: {\n qualifiedName: 'org.taktik.icure.entities.MaintenanceTask',\n decryptor: (data: MaintenanceTask) => decryptor!(data as MaintenanceTask as T),\n },\n HealthcareParty: {\n qualifiedName: 'org.taktik.icure.entities.HealthcareParty',\n decryptor: (data: HealthcareParty) => Promise.resolve(new HealthcareParty({ ...data }) as HealthcareParty as T),\n },\n Device: {\n qualifiedName: 'org.taktik.icure.entities.Device',\n decryptor: (data: Device) => Promise.resolve(new Device({ ...data }) as Device as T),\n },\n Contact: {\n qualifiedName: 'org.taktik.icure.entities.Contact',\n decryptor: (data: Contact) => decryptor!(data as Contact as T),\n },\n }\n\n return WebSocketWrapper.create(\n basePath.replace('http', 'ws').replace('rest', 'ws') + '/notification/subscribe',\n new WebSocketAuthProviderImpl(authApi),\n options.connectionMaxRetry ?? 5,\n options.connectionRetryIntervalMs ?? 1_000,\n {\n CONNECTED: [\n async (ws: WebSocketWrapper) => {\n const subscription = {\n eventTypes,\n entityClass: config[entityClass].qualifiedName,\n filter: { filter },\n }\n\n ws.send(JSON.stringify(subscription))\n },\n ],\n },\n async (data: any) => {\n try {\n await config[entityClass].decryptor(data).then((o) => eventFired(o))\n } catch (e) {\n console.error(e)\n }\n },\n options.debug\n )\n}\n\nexport type ConnectionStatus = 'NOT_CONNECTED' | 'CONNECTED' | 'CLOSED' | 'ERROR'\nexport type StatusCallback = (ws: WebSocketWrapper) => void\nexport type ErrorStatusCallback = (ws: WebSocketWrapper, error?: Error) => void\nexport type ConnectionStatusFunction = {\n [K in ConnectionStatus]: K extends 'ERROR' ? ErrorStatusCallback : StatusCallback\n}\nexport type ConnectionStatusFunctions = {\n [K in ConnectionStatus]?: K extends 'ERROR' ? Array<ErrorStatusCallback> : Array<StatusCallback>\n}\nexport type WebSocketWrapperMessageCallback = (data: any) => void\n\nexport class WebSocketWrapper {\n private readonly pingLifetime: number = 20_000\n private socket: WebsocketAdapter | null = null\n private retries = 0\n private closed = false\n private lastPingReceived = Date.now()\n private intervalIds: (NodeJS.Timeout | number)[] = []\n private readonly methodPath: string\n\n private constructor(\n private readonly url: string,\n private readonly authProvider: WebSocketAuthProvider,\n private readonly maxRetries = 3,\n private readonly retryDelay = 1000,\n private readonly statusCallbacks: ConnectionStatusFunctions = {},\n private readonly messageCallback: WebSocketWrapperMessageCallback = () => {},\n private readonly debug: boolean = false\n ) {\n this.methodPath = new URL(url).pathname\n }\n\n public static async create(\n url: string,\n authProvider: WebSocketAuthProvider,\n maxRetries?: number,\n retryDelay?: number,\n statusCallbacks?: ConnectionStatusFunctions,\n messageCallback?: WebSocketWrapperMessageCallback,\n debug?: boolean\n ): Promise<WebSocketWrapper> {\n const ws = new WebSocketWrapper(url, authProvider, maxRetries, retryDelay, statusCallbacks, messageCallback, debug)\n await ws.connect()\n return ws\n }\n\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.socket && this.socket.readyState === ReadyState.OPEN) {\n this.socket.send(data)\n }\n }\n\n public close() {\n if (this.socket) {\n this.closed = true\n this.socket.close(1000, 'Client closed connection')\n }\n }\n\n public addStatusCallback(status: ConnectionStatus, callback: ConnectionStatusFunction[ConnectionStatus]) {\n switch (status) {\n case 'CONNECTED':\n case 'CLOSED':\n if (!this.statusCallbacks[status]) this.statusCallbacks[status] = []\n this.statusCallbacks?.[status]?.push(callback)\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.push(callback)\n break\n }\n }\n\n private async connect() {\n if (this.retries >= this.maxRetries) {\n throw new Error('WebSocket connection failed after ' + this.maxRetries + ' retries')\n }\n\n const bearerToken = await this.authProvider.getBearerToken()\n\n if (!bearerToken) {\n throw new Error('Cannot obtain JWT for the user')\n }\n\n const socket = isNode\n ? new WebSocketNode(this.url, {\n headers: {\n Authorization: bearerToken,\n },\n })\n : new WebSocket(`${this.url}?jwt=${bearerToken.slice(7) /* \"Bearer \".length */}`)\n\n this.socket = new WebsocketAdapter(socket)\n\n this.socket.on('open', async () => {\n if (this.debug) console.debug('WebSocket connection opened')\n\n this.intervalIds.push(\n setTimeout(() => {\n this.retries = 0\n }, (this.maxRetries + 1) * this.retryDelay)\n )\n\n this.callStatusCallbacks('CONNECTED')\n })\n\n this.socket.on('message', (event: string) => {\n if (this.debug) console.debug('WebSocket message received', event)\n\n // Handle ping messages\n if (event === 'ping') {\n if (this.debug) console.debug('Received ping, sending pong')\n\n this.send('pong')\n this.lastPingReceived = Date.now()\n\n this.intervalIds.push(\n setTimeout(() => {\n if (Date.now() - this.lastPingReceived > this.pingLifetime) {\n console.error(`No ping received in the last ${this.pingLifetime} ms`)\n this.socket?.close()\n }\n }, this.pingLifetime)\n )\n\n return\n }\n\n // Call the message callback for other messages\n try {\n const data = JSON.parse(event)\n this.messageCallback(data)\n } catch (error) {\n console.error('Failed to parse WebSocket message', error)\n }\n })\n\n this.socket.on('close', ({ code, reason }) => {\n if (this.debug) console.debug('WebSocket connection closed', code, reason?.toString())\n\n this.callStatusCallbacks('CLOSED')\n\n this.intervalIds.forEach((id) => clearTimeout(id as number))\n this.intervalIds = []\n\n if (this.closed) {\n return\n }\n\n setTimeout(async () => {\n ++this.retries\n return await this.connect()\n }, this.retryDelay)\n })\n\n this.socket.on('error', async (err) => {\n console.error('WebSocket error', err)\n\n this.callStatusCallbacks('ERROR', err)\n\n if (this.socket) {\n this.socket.close()\n }\n })\n }\n\n private callStatusCallbacks(event: ConnectionStatus, error?: Error) {\n switch (event) {\n case 'CONNECTED':\n case 'CLOSED':\n this.statusCallbacks?.[event]?.forEach((callback) => callback(this))\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.forEach((callback) => callback(this, error))\n break\n }\n }\n}\n\ninterface WebSocketAuthProvider {\n getBearerToken(): Promise<string | undefined>\n}\n\nclass WebSocketAuthProviderImpl {\n constructor(private readonly authApi: IccAuthApi) {}\n\n async getBearerToken(): Promise<string | undefined> {\n const headers = await this.authApi.authenticationProvider.getAuthService().getAuthHeaders()\n return headers.find((header) => header.header === 'Authorization' && header.data.startsWith('Bearer '))?.data\n }\n}\n\ntype EventCallback = {\n open: (event: any) => void\n message: (event: string) => void\n close: (event: { code: number; reason: string }) => void\n error: (error: any) => void\n}\n\nenum ReadyState {\n CONNECTING = 0,\n OPEN = 1,\n CLOSING = 2,\n CLOSED = 3,\n}\n\nclass WebsocketAdapter {\n constructor(private readonly websocket: WebSocketNode | WebSocket) {}\n\n public get readyState(): number {\n if (this.websocket) {\n if (isNode) {\n switch ((this.websocket as WebSocketNode).readyState) {\n case WebSocketNode.CONNECTING:\n return ReadyState.CONNECTING\n case WebSocketNode.OPEN:\n return ReadyState.OPEN\n case WebSocketNode.CLOSING:\n return ReadyState.CLOSING\n case WebSocketNode.CLOSED:\n return ReadyState.CLOSED\n }\n } else {\n switch ((this.websocket as WebSocket).readyState) {\n case WebSocket.CONNECTING:\n return ReadyState.CONNECTING\n case WebSocket.OPEN:\n return ReadyState.OPEN\n case WebSocket.CLOSING:\n return ReadyState.CLOSING\n case WebSocket.CLOSED:\n return ReadyState.CLOSED\n }\n }\n }\n return ReadyState.CLOSED\n }\n\n /**\n * This is not throwing an error if the websocket is not open, because the purpose of the websocket wrapper is custom to notifications needs (subscribe and ping pong only)\n * If in the future we need to use it for other purposes, we will have to throw an error and update the implementation of ping pong in the notification\n * @param data the data to send\n */\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.websocket && this.readyState === ReadyState.OPEN) {\n this.websocket.send(data)\n }\n }\n\n public close(code?: number, reason?: string) {\n if (this.websocket) {\n this.websocket.close(code, reason)\n }\n }\n\n private onMessage(callback: (event: string) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('message', (x) => callback(x.toString('utf8')))\n } else {\n ;(this.websocket as WebSocket).addEventListener('message', async (event) => {\n let dataAsString: string | undefined\n if (event.type === 'message') {\n dataAsString = event.data\n } else console.error('Unexpected event type: ' + event.type)\n if (!dataAsString) {\n console.error('Failed to parse WebSocket message')\n return\n }\n\n callback(dataAsString)\n })\n }\n } else {\n console.error('Websocket is not defined')\n throw new Error('Websocket is not defined')\n }\n }\n\n private onOpen(callback: (event: any) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('open', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('open', callback)\n }\n }\n }\n\n private onClose(callback: (event: { code: number; reason: string }) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('close', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('close', callback)\n }\n }\n }\n\n private onError(callback: (error: any) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('error', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('error', callback)\n }\n }\n }\n\n public on<K extends keyof EventCallback>(event: K, callback: EventCallback[K]) {\n if (this.websocket) {\n switch (event) {\n case 'message':\n return this.onMessage(callback as EventCallback['message'])\n case 'open':\n return this.onOpen(callback as EventCallback['open'])\n case 'close':\n return this.onClose(callback as EventCallback['close'])\n case 'error':\n return this.onError(callback as EventCallback['error'])\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../icc-x-api/utils/websocket.ts"],"names":[],"mappings":"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","sourcesContent":["import * as WebSocketNode from 'ws'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { AbstractFilter } from '../filters/filters'\nimport { User } from '../../icc-api/model/User'\nimport { IccAuthApi } from '../../icc-api'\nimport { Service } from '../../icc-api/model/Service'\nimport { HealthElement } from '../../icc-api/model/HealthElement'\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { Device } from '../../icc-api/model/Device'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { Message } from '../../icc-api/model/Message'\nimport { Topic } from '../../icc-api/model/Topic'\n\nconst isNode: boolean = typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n\nexport type EventTypes = 'CREATE' | 'UPDATE' | 'DELETE'\ntype Subscribable =\n | 'Patient'\n | 'Service'\n | 'User'\n | 'HealthElement'\n | 'MaintenanceTask'\n | 'HealthcareParty'\n | 'Device'\n | 'Contact'\n | 'Message'\n | 'Topic'\ntype SubscribableEntity = Patient | Service | User | HealthElement | MaintenanceTask | HealthcareParty | Device | Contact | Message | Topic\nexport type SubscriptionOptions = {\n connectionMaxRetry?: number\n connectionRetryIntervalMs?: number\n debug?: boolean\n}\n\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Patient',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Patient> | undefined,\n eventFired: (entity: Patient) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Patient) => Promise<Patient>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Service',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Service> | undefined,\n eventFired: (entity: Service) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Service) => Promise<Service>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Contact',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Contact> | undefined,\n eventFired: (entity: Contact) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Contact) => Promise<Contact>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthElement',\n eventTypes: EventTypes[],\n filter: AbstractFilter<HealthElement> | undefined,\n eventFired: (entity: HealthElement) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: HealthElement) => Promise<HealthElement>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Message',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Message> | undefined,\n eventFired: (entity: Message) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Message) => Promise<Message>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Topic',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Topic> | undefined,\n eventFired: (entity: Topic) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: Topic) => Promise<Topic>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'User',\n eventTypes: EventTypes[],\n filter: AbstractFilter<User> | undefined,\n eventFired: (entity: User) => Promise<void>,\n options: SubscriptionOptions\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'MaintenanceTask',\n eventTypes: EventTypes[],\n filter: AbstractFilter<MaintenanceTask> | undefined,\n eventFired: (entity: MaintenanceTask) => Promise<void>,\n options: SubscriptionOptions,\n decryptor: (encrypted: MaintenanceTask) => Promise<MaintenanceTask>\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthcareParty',\n eventTypes: EventTypes[],\n filter: AbstractFilter<HealthcareParty> | undefined,\n eventFired: (entity: HealthcareParty) => Promise<void>,\n options: SubscriptionOptions\n): Promise<WebSocketWrapper>\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Device',\n eventTypes: EventTypes[],\n filter: AbstractFilter<Device> | undefined,\n eventFired: (entity: Device) => Promise<void>,\n options: SubscriptionOptions\n): Promise<WebSocketWrapper>\n\nexport function subscribeToEntityEvents<T extends SubscribableEntity>(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: Subscribable,\n eventTypes: EventTypes[],\n filter: AbstractFilter<T> | undefined,\n eventFired: (entity: T) => Promise<void>,\n options: SubscriptionOptions = {},\n decryptor?: (encrypted: T) => Promise<T>\n): Promise<WebSocketWrapper> {\n const config = {\n User: {\n qualifiedName: 'org.taktik.icure.entities.User',\n decryptor: (data: User) => Promise.resolve(new User({ ...data }) as T),\n },\n Patient: {\n qualifiedName: 'org.taktik.icure.entities.Patient',\n decryptor: (data: Patient) => decryptor!(data as Patient as T),\n },\n Service: {\n qualifiedName: 'org.taktik.icure.entities.embed.Service',\n decryptor: (data: Service) => decryptor!(data as Service as T),\n },\n HealthElement: {\n qualifiedName: 'org.taktik.icure.entities.HealthElement',\n decryptor: (data: HealthElement) => decryptor!(data as HealthElement as T),\n },\n Message: {\n qualifiedName: 'org.taktik.icure.entities.Message',\n decryptor: (data: Message) => decryptor!(data as Message as T),\n },\n Topic: {\n qualifiedName: 'org.taktik.icure.entities.Topic',\n decryptor: (data: Topic) => decryptor!(data as Topic as T),\n },\n MaintenanceTask: {\n qualifiedName: 'org.taktik.icure.entities.MaintenanceTask',\n decryptor: (data: MaintenanceTask) => decryptor!(data as MaintenanceTask as T),\n },\n HealthcareParty: {\n qualifiedName: 'org.taktik.icure.entities.HealthcareParty',\n decryptor: (data: HealthcareParty) => Promise.resolve(new HealthcareParty({ ...data }) as HealthcareParty as T),\n },\n Device: {\n qualifiedName: 'org.taktik.icure.entities.Device',\n decryptor: (data: Device) => Promise.resolve(new Device({ ...data }) as Device as T),\n },\n Contact: {\n qualifiedName: 'org.taktik.icure.entities.Contact',\n decryptor: (data: Contact) => decryptor!(data as Contact as T),\n },\n }\n\n return WebSocketWrapper.create(\n basePath.replace('http', 'ws').replace('rest', 'ws') + '/notification/subscribe',\n new WebSocketAuthProviderImpl(authApi),\n options.connectionMaxRetry ?? 5,\n options.connectionRetryIntervalMs ?? 1_000,\n {\n CONNECTED: [\n async (ws: WebSocketWrapper) => {\n const subscription = {\n eventTypes,\n entityClass: config[entityClass].qualifiedName,\n filter: { filter },\n }\n\n ws.send(JSON.stringify(subscription))\n },\n ],\n },\n async (data: any) => {\n try {\n await config[entityClass].decryptor(data).then((o) => eventFired(o))\n } catch (e) {\n console.error(e)\n }\n },\n options.debug\n )\n}\n\nexport type ConnectionStatus = 'NOT_CONNECTED' | 'CONNECTED' | 'CLOSED' | 'ERROR'\nexport type StatusCallback = (ws: WebSocketWrapper) => void\nexport type ErrorStatusCallback = (ws: WebSocketWrapper, error?: Error) => void\nexport type ConnectionStatusFunction = {\n [K in ConnectionStatus]: K extends 'ERROR' ? ErrorStatusCallback : StatusCallback\n}\nexport type ConnectionStatusFunctions = {\n [K in ConnectionStatus]?: K extends 'ERROR' ? Array<ErrorStatusCallback> : Array<StatusCallback>\n}\nexport type WebSocketWrapperMessageCallback = (data: any) => void\n\nexport class WebSocketWrapper {\n private readonly pingLifetime: number = 20_000\n private socket: WebsocketAdapter | null = null\n private retries = 0\n private closed = false\n private lastPingReceived = Date.now()\n private intervalIds: (NodeJS.Timeout | number)[] = []\n private readonly methodPath: string\n\n private constructor(\n private readonly url: string,\n private readonly authProvider: WebSocketAuthProvider,\n private readonly maxRetries = 3,\n private readonly retryDelay = 1000,\n private readonly statusCallbacks: ConnectionStatusFunctions = {},\n private readonly messageCallback: WebSocketWrapperMessageCallback = () => {},\n private readonly debug: boolean = false\n ) {\n this.methodPath = new URL(url).pathname\n }\n\n public static async create(\n url: string,\n authProvider: WebSocketAuthProvider,\n maxRetries?: number,\n retryDelay?: number,\n statusCallbacks?: ConnectionStatusFunctions,\n messageCallback?: WebSocketWrapperMessageCallback,\n debug?: boolean\n ): Promise<WebSocketWrapper> {\n const ws = new WebSocketWrapper(url, authProvider, maxRetries, retryDelay, statusCallbacks, messageCallback, debug)\n await ws.connect()\n return ws\n }\n\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.socket && this.socket.readyState === ReadyState.OPEN) {\n this.socket.send(data)\n }\n }\n\n public close() {\n if (this.socket) {\n this.closed = true\n this.socket.close(1000, 'Client closed connection')\n }\n }\n\n public addStatusCallback(status: ConnectionStatus, callback: ConnectionStatusFunction[ConnectionStatus]) {\n switch (status) {\n case 'CONNECTED':\n case 'CLOSED':\n if (!this.statusCallbacks[status]) this.statusCallbacks[status] = []\n this.statusCallbacks?.[status]?.push(callback)\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.push(callback)\n break\n }\n }\n\n private async connect() {\n if (this.retries >= this.maxRetries) {\n throw new Error('WebSocket connection failed after ' + this.maxRetries + ' retries')\n }\n\n const bearerToken = await this.authProvider.getBearerToken()\n\n if (!bearerToken) {\n throw new Error('Cannot obtain JWT for the user')\n }\n\n const socket = isNode\n ? new WebSocketNode(this.url, {\n headers: {\n Authorization: bearerToken,\n },\n })\n : new WebSocket(`${this.url}?jwt=${bearerToken.slice(7) /* \"Bearer \".length */}`)\n\n this.socket = new WebsocketAdapter(socket)\n\n this.socket.on('open', async () => {\n if (this.debug) console.debug('WebSocket connection opened')\n\n this.intervalIds.push(\n setTimeout(() => {\n this.retries = 0\n }, (this.maxRetries + 1) * this.retryDelay)\n )\n\n this.callStatusCallbacks('CONNECTED')\n })\n\n this.socket.on('message', (event: string) => {\n if (this.debug) console.debug('WebSocket message received', event)\n\n // Handle ping messages\n if (event === 'ping') {\n if (this.debug) console.debug('Received ping, sending pong')\n\n this.send('pong')\n this.lastPingReceived = Date.now()\n\n this.intervalIds.push(\n setTimeout(() => {\n if (Date.now() - this.lastPingReceived > this.pingLifetime) {\n console.error(`No ping received in the last ${this.pingLifetime} ms`)\n this.socket?.close()\n }\n }, this.pingLifetime)\n )\n\n return\n }\n\n // Call the message callback for other messages\n try {\n const data = JSON.parse(event)\n this.messageCallback(data)\n } catch (error) {\n console.error('Failed to parse WebSocket message', error)\n }\n })\n\n this.socket.on('close', ({ code, reason }) => {\n if (this.debug) console.debug('WebSocket connection closed', code, reason?.toString())\n\n this.callStatusCallbacks('CLOSED')\n\n this.intervalIds.forEach((id) => clearTimeout(id as number))\n this.intervalIds = []\n\n if (this.closed) {\n return\n }\n\n setTimeout(async () => {\n ++this.retries\n return await this.connect()\n }, this.retryDelay)\n })\n\n this.socket.on('error', async (err) => {\n console.error('WebSocket error', err)\n\n this.callStatusCallbacks('ERROR', err)\n\n if (this.socket) {\n this.socket.close()\n }\n })\n }\n\n private callStatusCallbacks(event: ConnectionStatus, error?: Error) {\n switch (event) {\n case 'CONNECTED':\n case 'CLOSED':\n this.statusCallbacks?.[event]?.forEach((callback) => callback(this))\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.forEach((callback) => callback(this, error))\n break\n }\n }\n}\n\ninterface WebSocketAuthProvider {\n getBearerToken(): Promise<string | undefined>\n}\n\nclass WebSocketAuthProviderImpl {\n constructor(private readonly authApi: IccAuthApi) {}\n\n async getBearerToken(): Promise<string | undefined> {\n const headers = await this.authApi.authenticationProvider.getAuthService().getAuthHeaders()\n return headers.find((header) => header.header === 'Authorization' && header.data.startsWith('Bearer '))?.data\n }\n}\n\ntype EventCallback = {\n open: (event: any) => void\n message: (event: string) => void\n close: (event: { code: number; reason: string }) => void\n error: (error: any) => void\n}\n\nenum ReadyState {\n CONNECTING = 0,\n OPEN = 1,\n CLOSING = 2,\n CLOSED = 3,\n}\n\nclass WebsocketAdapter {\n constructor(private readonly websocket: WebSocketNode | WebSocket) {}\n\n public get readyState(): number {\n if (this.websocket) {\n if (isNode) {\n switch ((this.websocket as WebSocketNode).readyState) {\n case WebSocketNode.CONNECTING:\n return ReadyState.CONNECTING\n case WebSocketNode.OPEN:\n return ReadyState.OPEN\n case WebSocketNode.CLOSING:\n return ReadyState.CLOSING\n case WebSocketNode.CLOSED:\n return ReadyState.CLOSED\n }\n } else {\n switch ((this.websocket as WebSocket).readyState) {\n case WebSocket.CONNECTING:\n return ReadyState.CONNECTING\n case WebSocket.OPEN:\n return ReadyState.OPEN\n case WebSocket.CLOSING:\n return ReadyState.CLOSING\n case WebSocket.CLOSED:\n return ReadyState.CLOSED\n }\n }\n }\n return ReadyState.CLOSED\n }\n\n /**\n * This is not throwing an error if the websocket is not open, because the purpose of the websocket wrapper is custom to notifications needs (subscribe and ping pong only)\n * If in the future we need to use it for other purposes, we will have to throw an error and update the implementation of ping pong in the notification\n * @param data the data to send\n */\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.websocket && this.readyState === ReadyState.OPEN) {\n this.websocket.send(data)\n }\n }\n\n public close(code?: number, reason?: string) {\n if (this.websocket) {\n this.websocket.close(code, reason)\n }\n }\n\n private onMessage(callback: (event: string) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('message', (x) => callback(x.toString('utf8')))\n } else {\n ;(this.websocket as WebSocket).addEventListener('message', async (event) => {\n let dataAsString: string | undefined\n if (event.type === 'message') {\n dataAsString = event.data\n } else console.error('Unexpected event type: ' + event.type)\n if (!dataAsString) {\n console.error('Failed to parse WebSocket message')\n return\n }\n\n callback(dataAsString)\n })\n }\n } else {\n console.error('Websocket is not defined')\n throw new Error('Websocket is not defined')\n }\n }\n\n private onOpen(callback: (event: any) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('open', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('open', callback)\n }\n }\n }\n\n private onClose(callback: (event: { code: number; reason: string }) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('close', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('close', callback)\n }\n }\n }\n\n private onError(callback: (error: any) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('error', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('error', callback)\n }\n }\n }\n\n public on<K extends keyof EventCallback>(event: K, callback: EventCallback[K]) {\n if (this.websocket) {\n switch (event) {\n case 'message':\n return this.onMessage(callback as EventCallback['message'])\n case 'open':\n return this.onOpen(callback as EventCallback['open'])\n case 'close':\n return this.onClose(callback as EventCallback['close'])\n case 'error':\n return this.onError(callback as EventCallback['error'])\n }\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var createLzmaModule=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["c"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("lzma.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;var _get_result_len,_get_result_ptr,_free_result,_free,_lzma_wasm_compress,_malloc,_lzma_wasm_decompress,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory;function assignWasmExports(wasmExports){_get_result_len=Module["_get_result_len"]=wasmExports["d"];_get_result_ptr=Module["_get_result_ptr"]=wasmExports["e"];_free_result=Module["_free_result"]=wasmExports["f"];_free=Module["_free"]=wasmExports["g"];_lzma_wasm_compress=Module["_lzma_wasm_compress"]=wasmExports["h"];_malloc=Module["_malloc"]=wasmExports["i"];_lzma_wasm_decompress=Module["_lzma_wasm_decompress"]=wasmExports["j"];__emscripten_stack_restore=wasmExports["k"];__emscripten_stack_alloc=wasmExports["l"];_emscripten_stack_get_current=wasmExports["m"];memory=wasmMemory=wasmExports["b"];__indirect_function_table=wasmExports["__indirect_function_table"]}var wasmImports={a:_emscripten_resize_heap};function run(){preRun();function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}
|
|
2
|
+
;return moduleRtn}})();if(typeof exports==="object"&&typeof module==="object"){module.exports=createLzmaModule;module.exports.default=createLzmaModule}else if(typeof define==="function"&&define["amd"])define([],()=>createLzmaModule);
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@icure/api",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.7.0",
|
|
4
4
|
"description": "Typescript version of iCure standalone API client",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"async-mutex": "^0.5.0",
|
|
9
|
-
"big-integer": "^1.6.52",
|
|
10
|
-
"browser-or-node": "^3.0.0",
|
|
11
8
|
"date-fns": "^2.23.0",
|
|
12
|
-
"libphonenumber-js": "^1.7.18"
|
|
13
|
-
"lodash": "^4.17.21",
|
|
14
|
-
"moment": "^2.22.1",
|
|
15
|
-
"text-encoding": "^0.7.0",
|
|
16
|
-
"uuid": "^8.3.2",
|
|
17
|
-
"uuid-encoder": "^1.1.0",
|
|
18
|
-
"ws": "^8.18.0"
|
|
9
|
+
"libphonenumber-js": "^1.7.18"
|
|
19
10
|
},
|
|
20
11
|
"author": "Taktik sa - B12 Consulting",
|
|
21
12
|
"license": "MIT",
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export declare class UuidEncoder {
|
|
2
|
-
private encStr;
|
|
3
|
-
private isCaseSensitive;
|
|
4
|
-
private base;
|
|
5
|
-
/**
|
|
6
|
-
* @public
|
|
7
|
-
* @param [baseEncodingStr] A string containing all usable letters for encoding
|
|
8
|
-
* @constructor
|
|
9
|
-
*/
|
|
10
|
-
constructor(baseEncodingStr?: string);
|
|
11
|
-
/**
|
|
12
|
-
* Set encoding base
|
|
13
|
-
* @param {string} baseEncodingStr A string containing all usable letters for encoding
|
|
14
|
-
* @public
|
|
15
|
-
*/
|
|
16
|
-
setBaseEncodingStr(baseEncodingStr: string): void;
|
|
17
|
-
/**
|
|
18
|
-
* @private
|
|
19
|
-
* @param {string} baseEncodingStr
|
|
20
|
-
* @returns {string}
|
|
21
|
-
*/
|
|
22
|
-
static resolveEncodingStr(baseEncodingStr: string): string;
|
|
23
|
-
/**
|
|
24
|
-
* @public
|
|
25
|
-
* @param baseEncodingStr
|
|
26
|
-
* @returns {boolean}
|
|
27
|
-
*/
|
|
28
|
-
static isCaseSensitiveBase(baseEncodingStr: string): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Encode a UUID
|
|
31
|
-
* @param {string} uuid Properly formatted UUID
|
|
32
|
-
* @returns {string} Encoded UUID
|
|
33
|
-
* @public
|
|
34
|
-
*/
|
|
35
|
-
encode(uuid: string): string;
|
|
36
|
-
/**
|
|
37
|
-
* Decode an encoded UUID
|
|
38
|
-
* @public
|
|
39
|
-
* @param {string} str Previously encoded string
|
|
40
|
-
* @returns {string} Properly formatted UUID
|
|
41
|
-
* @throws Throws an {Error} when encountering invalid data
|
|
42
|
-
*/
|
|
43
|
-
decode(str: string): string;
|
|
44
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UuidEncoder = void 0;
|
|
4
|
-
const bigInt = require("big-integer");
|
|
5
|
-
const knownBases = {
|
|
6
|
-
// pragma: allowlist nextline secret
|
|
7
|
-
base64: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/',
|
|
8
|
-
// pragma: allowlist nextline secret
|
|
9
|
-
base62: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
|
|
10
|
-
// pragma: allowlist nextline secret
|
|
11
|
-
base58: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', // Bitcoin base58
|
|
12
|
-
// pragma: allowlist nextline secret
|
|
13
|
-
base36: '0123456789abcdefghijklmnopqrstuvwxyz',
|
|
14
|
-
// pragma: allowlist nextline secret
|
|
15
|
-
base32: '0123456789abcdefghjkmnpqrstvwxyz', // Crockford's base32
|
|
16
|
-
// pragma: allowlist nextline secret
|
|
17
|
-
base16: '0123456789abcdef',
|
|
18
|
-
// pragma: allowlist nextline secret
|
|
19
|
-
base10: '0123456789',
|
|
20
|
-
base2: '01',
|
|
21
|
-
};
|
|
22
|
-
const caseSensitiveBases = {
|
|
23
|
-
base62: true,
|
|
24
|
-
base58: true,
|
|
25
|
-
base36: false,
|
|
26
|
-
base32: false,
|
|
27
|
-
base16: false,
|
|
28
|
-
base10: true,
|
|
29
|
-
base2: true,
|
|
30
|
-
};
|
|
31
|
-
class UuidEncoder {
|
|
32
|
-
/**
|
|
33
|
-
* @public
|
|
34
|
-
* @param [baseEncodingStr] A string containing all usable letters for encoding
|
|
35
|
-
* @constructor
|
|
36
|
-
*/
|
|
37
|
-
constructor(baseEncodingStr = 'base36') {
|
|
38
|
-
this.encStr = knownBases.base36;
|
|
39
|
-
this.isCaseSensitive = false;
|
|
40
|
-
this.base = 36;
|
|
41
|
-
this.setBaseEncodingStr(baseEncodingStr);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Set encoding base
|
|
45
|
-
* @param {string} baseEncodingStr A string containing all usable letters for encoding
|
|
46
|
-
* @public
|
|
47
|
-
*/
|
|
48
|
-
setBaseEncodingStr(baseEncodingStr) {
|
|
49
|
-
this.encStr = UuidEncoder.resolveEncodingStr(baseEncodingStr);
|
|
50
|
-
this.isCaseSensitive = UuidEncoder.isCaseSensitiveBase(baseEncodingStr);
|
|
51
|
-
this.base = this.encStr.length;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* @private
|
|
55
|
-
* @param {string} baseEncodingStr
|
|
56
|
-
* @returns {string}
|
|
57
|
-
*/
|
|
58
|
-
static resolveEncodingStr(baseEncodingStr) {
|
|
59
|
-
return Object.prototype.hasOwnProperty.call(knownBases, baseEncodingStr) ? knownBases[baseEncodingStr] : baseEncodingStr;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* @public
|
|
63
|
-
* @param baseEncodingStr
|
|
64
|
-
* @returns {boolean}
|
|
65
|
-
*/
|
|
66
|
-
static isCaseSensitiveBase(baseEncodingStr) {
|
|
67
|
-
return Object.prototype.hasOwnProperty.call(caseSensitiveBases, baseEncodingStr) ? caseSensitiveBases[baseEncodingStr] : true;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Encode a UUID
|
|
71
|
-
* @param {string} uuid Properly formatted UUID
|
|
72
|
-
* @returns {string} Encoded UUID
|
|
73
|
-
* @public
|
|
74
|
-
*/
|
|
75
|
-
encode(uuid) {
|
|
76
|
-
const cleanUuid = uuid.replace(/-/g, '');
|
|
77
|
-
const { base, encStr } = this;
|
|
78
|
-
let iUuid = bigInt(cleanUuid, 16);
|
|
79
|
-
let str = '';
|
|
80
|
-
do {
|
|
81
|
-
str = encStr.substr(iUuid.mod(base).valueOf(), 1) + str;
|
|
82
|
-
iUuid = iUuid.divide(base);
|
|
83
|
-
} while (iUuid.greater(0));
|
|
84
|
-
return str;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Decode an encoded UUID
|
|
88
|
-
* @public
|
|
89
|
-
* @param {string} str Previously encoded string
|
|
90
|
-
* @returns {string} Properly formatted UUID
|
|
91
|
-
* @throws Throws an {Error} when encountering invalid data
|
|
92
|
-
*/
|
|
93
|
-
decode(str) {
|
|
94
|
-
let iUuid = bigInt(0);
|
|
95
|
-
const { base, encStr } = this;
|
|
96
|
-
const len = str.length;
|
|
97
|
-
const finalStr = this.isCaseSensitive ? str : str.toLowerCase();
|
|
98
|
-
for (let pos = 0; pos < len; pos += 1) {
|
|
99
|
-
const ch = finalStr.substr(pos, 1);
|
|
100
|
-
const encPos = encStr.indexOf(ch);
|
|
101
|
-
if (encPos < 0) {
|
|
102
|
-
throw new Error('Invalid encoded data');
|
|
103
|
-
}
|
|
104
|
-
iUuid = iUuid.add(encPos);
|
|
105
|
-
if (pos < len - 1) {
|
|
106
|
-
iUuid = iUuid.multiply(base);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
const uuid = iUuid.toString(16).padStart(32, '0');
|
|
110
|
-
return `${uuid.substr(0, 8)}-${uuid.substr(8, 4)}-${uuid.substr(12, 4)}-${uuid.substr(16, 4)}-${uuid.substr(20)}`;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
exports.UuidEncoder = UuidEncoder;
|
|
114
|
-
//# sourceMappingURL=uuid-encoder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid-encoder.js","sourceRoot":"","sources":["../../../icc-x-api/utils/uuid-encoder.ts"],"names":[],"mappings":"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","sourcesContent":["import * as bigInt from 'big-integer'\n\nconst knownBases: { [key: string]: string } = {\n // pragma: allowlist nextline secret\n base64: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/',\n // pragma: allowlist nextline secret\n base62: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n // pragma: allowlist nextline secret\n base58: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', // Bitcoin base58\n // pragma: allowlist nextline secret\n base36: '0123456789abcdefghijklmnopqrstuvwxyz',\n // pragma: allowlist nextline secret\n base32: '0123456789abcdefghjkmnpqrstvwxyz', // Crockford's base32\n // pragma: allowlist nextline secret\n base16: '0123456789abcdef',\n // pragma: allowlist nextline secret\n base10: '0123456789',\n base2: '01',\n}\n\nconst caseSensitiveBases: { [key: string]: boolean } = {\n base62: true,\n base58: true,\n base36: false,\n base32: false,\n base16: false,\n base10: true,\n base2: true,\n}\n\nexport class UuidEncoder {\n private encStr: string = knownBases.base36\n private isCaseSensitive = false\n private base = 36\n /**\n * @public\n * @param [baseEncodingStr] A string containing all usable letters for encoding\n * @constructor\n */\n constructor(baseEncodingStr = 'base36') {\n this.setBaseEncodingStr(baseEncodingStr)\n }\n\n /**\n * Set encoding base\n * @param {string} baseEncodingStr A string containing all usable letters for encoding\n * @public\n */\n setBaseEncodingStr(baseEncodingStr: string) {\n this.encStr = UuidEncoder.resolveEncodingStr(baseEncodingStr)\n this.isCaseSensitive = UuidEncoder.isCaseSensitiveBase(baseEncodingStr)\n this.base = this.encStr.length\n }\n\n /**\n * @private\n * @param {string} baseEncodingStr\n * @returns {string}\n */\n static resolveEncodingStr(baseEncodingStr: string) {\n return Object.prototype.hasOwnProperty.call(knownBases, baseEncodingStr) ? knownBases[baseEncodingStr] : baseEncodingStr\n }\n\n /**\n * @public\n * @param baseEncodingStr\n * @returns {boolean}\n */\n static isCaseSensitiveBase(baseEncodingStr: string) {\n return Object.prototype.hasOwnProperty.call(caseSensitiveBases, baseEncodingStr) ? caseSensitiveBases[baseEncodingStr] : true\n }\n\n /**\n * Encode a UUID\n * @param {string} uuid Properly formatted UUID\n * @returns {string} Encoded UUID\n * @public\n */\n encode(uuid: string) {\n const cleanUuid = uuid.replace(/-/g, '')\n const { base, encStr } = this\n\n let iUuid = bigInt(cleanUuid, 16)\n let str = ''\n\n do {\n str = encStr.substr(iUuid.mod(base).valueOf(), 1) + str\n iUuid = iUuid.divide(base)\n } while (iUuid.greater(0))\n\n return str\n }\n\n /**\n * Decode an encoded UUID\n * @public\n * @param {string} str Previously encoded string\n * @returns {string} Properly formatted UUID\n * @throws Throws an {Error} when encountering invalid data\n */\n decode(str: string) {\n let iUuid = bigInt(0)\n\n const { base, encStr } = this\n const len = str.length\n const finalStr = this.isCaseSensitive ? str : str.toLowerCase()\n\n for (let pos = 0; pos < len; pos += 1) {\n const ch = finalStr.substr(pos, 1)\n const encPos = encStr.indexOf(ch)\n\n if (encPos < 0) {\n throw new Error('Invalid encoded data')\n }\n\n iUuid = iUuid.add(encPos)\n\n if (pos < len - 1) {\n iUuid = iUuid.multiply(base)\n }\n }\n\n const uuid = iUuid.toString(16).padStart(32, '0')\n\n return `${uuid.substr(0, 8)}-${uuid.substr(8, 4)}-${uuid.substr(12, 4)}-${uuid.substr(16, 4)}-${uuid.substr(20)}`\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const crypto_1 = require("crypto");
|
|
13
|
-
const test_utils_1 = require("../../utils/test_utils");
|
|
14
|
-
require("isomorphic-fetch");
|
|
15
|
-
var initMasterApi = test_utils_1.TestUtils.initMasterApi;
|
|
16
|
-
const chai_1 = require("chai");
|
|
17
|
-
const types_1 = require("@icure/test-setup/types");
|
|
18
|
-
const Agenda_1 = require("../../../icc-api/model/Agenda");
|
|
19
|
-
const mocha_1 = require("mocha");
|
|
20
|
-
(0, test_utils_1.setLocalStorage)(fetch);
|
|
21
|
-
let env;
|
|
22
|
-
let agendaApi;
|
|
23
|
-
const agendas = [];
|
|
24
|
-
(0, mocha_1.describe)('IccAgendaApi', () => {
|
|
25
|
-
before(function () {
|
|
26
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
this.timeout(600000);
|
|
28
|
-
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
29
|
-
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
30
|
-
agendaApi = (yield initMasterApi(env)).agendaApi;
|
|
31
|
-
for (let i = 0; i < 10; i++) {
|
|
32
|
-
const agenda = yield agendaApi.createAgenda(new Agenda_1.Agenda({
|
|
33
|
-
id: (0, crypto_1.randomUUID)(),
|
|
34
|
-
name: (0, crypto_1.randomUUID)(),
|
|
35
|
-
}));
|
|
36
|
-
agendas.push(agenda);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
it('Should be able of getting the Agendas using the deprecated method', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
const page = yield agendaApi.getAgendas();
|
|
42
|
-
page.forEach((it) => {
|
|
43
|
-
const existingAgenda = agendas.find((a) => a.id === it.id);
|
|
44
|
-
(0, chai_1.expect)(existingAgenda).not.to.be.undefined;
|
|
45
|
-
(0, chai_1.expect)(it.rev).to.be.eq(existingAgenda.rev);
|
|
46
|
-
});
|
|
47
|
-
}));
|
|
48
|
-
it('Should be able of getting the Agendas with pagination', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
-
var _a;
|
|
50
|
-
const firstPage = yield agendaApi.getAgendasWithPagination(undefined, 6);
|
|
51
|
-
(0, chai_1.expect)(firstPage.nextKeyPair).not.to.be.undefined;
|
|
52
|
-
(0, chai_1.expect)(firstPage.rows).not.to.be.undefined;
|
|
53
|
-
const secondPage = yield agendaApi.getAgendasWithPagination((_a = firstPage.nextKeyPair) === null || _a === void 0 ? void 0 : _a.startKeyDocId, 6);
|
|
54
|
-
(0, chai_1.expect)(secondPage.nextKeyPair).to.be.undefined;
|
|
55
|
-
(0, chai_1.expect)(secondPage.rows).not.to.be.undefined;
|
|
56
|
-
const rows = firstPage.rows.concat(secondPage.rows);
|
|
57
|
-
rows.forEach((it) => {
|
|
58
|
-
const existingAgenda = agendas.find((a) => a.id === it.id);
|
|
59
|
-
(0, chai_1.expect)(existingAgenda).not.to.be.undefined;
|
|
60
|
-
(0, chai_1.expect)(it.rev).to.be.eq(existingAgenda.rev);
|
|
61
|
-
});
|
|
62
|
-
}));
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=IccAgendaApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IccAgendaApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccAgendaApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'crypto'\nimport { getEnvironmentInitializer, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport 'isomorphic-fetch'\nimport initMasterApi = TestUtils.initMasterApi\nimport { expect } from 'chai'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { IccAgendaApi } from '../../../icc-api'\nimport { Agenda } from '../../../icc-api/model/Agenda'\nimport { describe } from 'mocha'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\nlet agendaApi: IccAgendaApi\nconst agendas: Agenda[] = []\n\ndescribe('IccAgendaApi', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n agendaApi = (await initMasterApi(env)).agendaApi\n\n for (let i = 0; i < 10; i++) {\n const agenda = await agendaApi.createAgenda(\n new Agenda({\n id: randomUUID(),\n name: randomUUID(),\n })\n )\n agendas.push(agenda)\n }\n })\n\n it('Should be able of getting the Agendas using the deprecated method', async () => {\n const page = await agendaApi.getAgendas()\n page.forEach((it) => {\n const existingAgenda = agendas.find((a) => a.id === it.id)\n expect(existingAgenda).not.to.be.undefined\n expect(it.rev).to.be.eq(existingAgenda!!.rev!!)\n })\n })\n\n it('Should be able of getting the Agendas with pagination', async () => {\n const firstPage = await agendaApi.getAgendasWithPagination(undefined, 6)\n expect(firstPage.nextKeyPair).not.to.be.undefined\n expect(firstPage.rows).not.to.be.undefined\n\n const secondPage = await agendaApi.getAgendasWithPagination(firstPage.nextKeyPair?.startKeyDocId, 6)\n expect(secondPage.nextKeyPair).to.be.undefined\n expect(secondPage.rows).not.to.be.undefined\n\n const rows = firstPage.rows!!.concat(secondPage.rows!!)\n rows.forEach((it) => {\n const existingAgenda = agendas.find((a) => a.id === it.id)\n expect(existingAgenda).not.to.be.undefined\n expect(it.rev).to.be.eq(existingAgenda!!.rev!!)\n })\n })\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const crypto_1 = require("crypto");
|
|
13
|
-
const test_utils_1 = require("../../utils/test_utils");
|
|
14
|
-
require("isomorphic-fetch");
|
|
15
|
-
var initMasterApi = test_utils_1.TestUtils.initMasterApi;
|
|
16
|
-
const chai_1 = require("chai");
|
|
17
|
-
const types_1 = require("@icure/test-setup/types");
|
|
18
|
-
const MedicalLocation_1 = require("../../../icc-api/model/MedicalLocation");
|
|
19
|
-
(0, test_utils_1.setLocalStorage)(fetch);
|
|
20
|
-
let env;
|
|
21
|
-
(0, test_utils_1.describeNoLite)('Anonymous Access', () => {
|
|
22
|
-
before(function () {
|
|
23
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
this.timeout(600000);
|
|
25
|
-
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
26
|
-
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
it('should be able to retrieve publicly available informations of medicalLocation', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
-
var _a, _b;
|
|
31
|
-
const { medicalLocationApi, anonymousAccessApi } = yield initMasterApi(env);
|
|
32
|
-
const createdMedicalLocation = yield medicalLocationApi.createMedicalLocation(new MedicalLocation_1.MedicalLocation({
|
|
33
|
-
id: (0, crypto_1.randomUUID)(),
|
|
34
|
-
name: 'private medicalLocation ' + (0, crypto_1.randomUUID)(),
|
|
35
|
-
description: 'private medicalLocation description ' + (0, crypto_1.randomUUID)(),
|
|
36
|
-
}));
|
|
37
|
-
const createdMedicalLocationWithPublicInfo = yield medicalLocationApi.createMedicalLocation(new MedicalLocation_1.MedicalLocation({
|
|
38
|
-
id: (0, crypto_1.randomUUID)(),
|
|
39
|
-
name: 'public medicalLocation ' + (0, crypto_1.randomUUID)(),
|
|
40
|
-
description: 'public medicalLocation description ' + (0, crypto_1.randomUUID)(),
|
|
41
|
-
publicInformations: {
|
|
42
|
-
address: 'public address',
|
|
43
|
-
phone: '+32 2 555 55 55',
|
|
44
|
-
},
|
|
45
|
-
}));
|
|
46
|
-
const groupId = env.testGroupId;
|
|
47
|
-
const paginatedMedicalLocations = yield anonymousAccessApi.getPublicMedicalLocationsByGroupId(groupId);
|
|
48
|
-
(0, chai_1.expect)((_a = paginatedMedicalLocations.rows) === null || _a === void 0 ? void 0 : _a.length).to.be.greaterThan(0);
|
|
49
|
-
const publicMedicalLocationIds = (_b = paginatedMedicalLocations.rows) === null || _b === void 0 ? void 0 : _b.map((medicalLocation) => medicalLocation.id);
|
|
50
|
-
(0, chai_1.expect)(publicMedicalLocationIds).to.include(createdMedicalLocationWithPublicInfo.id);
|
|
51
|
-
(0, chai_1.expect)(publicMedicalLocationIds).not.to.include(createdMedicalLocation.id);
|
|
52
|
-
const publicMedicalLocation = paginatedMedicalLocations.rows.find((medicalLocation) => medicalLocation.id === createdMedicalLocationWithPublicInfo.id);
|
|
53
|
-
(0, chai_1.expect)(publicMedicalLocation).to.be.not.undefined;
|
|
54
|
-
(0, chai_1.expect)(publicMedicalLocation === null || publicMedicalLocation === void 0 ? void 0 : publicMedicalLocation.name).to.be.undefined;
|
|
55
|
-
(0, chai_1.expect)(publicMedicalLocation === null || publicMedicalLocation === void 0 ? void 0 : publicMedicalLocation.description).to.be.undefined;
|
|
56
|
-
}));
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=IccAnonymousAccessApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IccAnonymousAccessApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccAnonymousAccessApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'crypto'\nimport { describeNoLite, getEnvironmentInitializer, isLiteTest, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport 'isomorphic-fetch'\nimport initMasterApi = TestUtils.initMasterApi\nimport { expect } from 'chai'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { MedicalLocation } from '../../../icc-api/model/MedicalLocation'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\n\ndescribeNoLite('Anonymous Access', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('should be able to retrieve publicly available informations of medicalLocation', async () => {\n const { medicalLocationApi, anonymousAccessApi } = await initMasterApi(env)\n\n const createdMedicalLocation = await medicalLocationApi.createMedicalLocation(\n new MedicalLocation({\n id: randomUUID(),\n name: 'private medicalLocation ' + randomUUID(),\n description: 'private medicalLocation description ' + randomUUID(),\n })\n )\n\n const createdMedicalLocationWithPublicInfo = await medicalLocationApi.createMedicalLocation(\n new MedicalLocation({\n id: randomUUID(),\n name: 'public medicalLocation ' + randomUUID(),\n description: 'public medicalLocation description ' + randomUUID(),\n publicInformations: {\n address: 'public address',\n phone: '+32 2 555 55 55',\n },\n })\n )\n\n const groupId = env.testGroupId\n\n const paginatedMedicalLocations = await anonymousAccessApi.getPublicMedicalLocationsByGroupId(groupId)\n\n expect(paginatedMedicalLocations.rows?.length).to.be.greaterThan(0)\n\n const publicMedicalLocationIds = paginatedMedicalLocations.rows?.map((medicalLocation) => medicalLocation.id)\n expect(publicMedicalLocationIds).to.include(createdMedicalLocationWithPublicInfo.id)\n expect(publicMedicalLocationIds).not.to.include(createdMedicalLocation.id)\n\n const publicMedicalLocation: MedicalLocation = paginatedMedicalLocations.rows!.find(\n (medicalLocation) => medicalLocation.id === createdMedicalLocationWithPublicInfo.id\n )!\n expect(publicMedicalLocation).to.be.not.undefined\n expect(publicMedicalLocation?.name).to.be.undefined\n expect(publicMedicalLocation?.description).to.be.undefined\n })\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const crypto_1 = require("crypto");
|
|
13
|
-
const test_utils_1 = require("../../utils/test_utils");
|
|
14
|
-
require("isomorphic-fetch");
|
|
15
|
-
var initMasterApi = test_utils_1.TestUtils.initMasterApi;
|
|
16
|
-
const chai_1 = require("chai");
|
|
17
|
-
const types_1 = require("@icure/test-setup/types");
|
|
18
|
-
const mocha_1 = require("mocha");
|
|
19
|
-
const CalendarItem_1 = require("../../../icc-api/model/CalendarItem");
|
|
20
|
-
(0, test_utils_1.setLocalStorage)(fetch);
|
|
21
|
-
let env;
|
|
22
|
-
let api;
|
|
23
|
-
let user;
|
|
24
|
-
const entities = [];
|
|
25
|
-
(0, mocha_1.describe)('IccCalendarItemApi', () => {
|
|
26
|
-
before(function () {
|
|
27
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
this.timeout(600000);
|
|
29
|
-
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
30
|
-
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
31
|
-
const masterApi = yield initMasterApi(env);
|
|
32
|
-
user = yield masterApi.userApi.getCurrentUser();
|
|
33
|
-
api = masterApi.calendarItemApi;
|
|
34
|
-
for (let i = 0; i < 10; i++) {
|
|
35
|
-
const entity = (yield api.createCalendarItemWithHcParty(user, yield api.newInstance(user, new CalendarItem_1.CalendarItem({
|
|
36
|
-
id: (0, crypto_1.randomUUID)(),
|
|
37
|
-
name: (0, crypto_1.randomUUID)(),
|
|
38
|
-
}))));
|
|
39
|
-
entities.push(entity);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
it('Should be able of getting the CalendarItems using the deprecated method', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
-
const page = (yield api.getCalendarItemsWithUser(user));
|
|
45
|
-
page.forEach((it) => {
|
|
46
|
-
const existingEntity = entities.find((a) => a.id === it.id);
|
|
47
|
-
(0, chai_1.expect)(existingEntity).not.to.be.undefined;
|
|
48
|
-
(0, chai_1.expect)(it.rev).to.be.eq(existingEntity.rev);
|
|
49
|
-
});
|
|
50
|
-
}));
|
|
51
|
-
it('Should be able of getting the CalendarItems with pagination', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
-
var _a;
|
|
53
|
-
const firstPage = yield api.getCalendarItemsWithPaginationWithUser(user, undefined, 6);
|
|
54
|
-
(0, chai_1.expect)(firstPage.nextKeyPair).not.to.be.undefined;
|
|
55
|
-
(0, chai_1.expect)(firstPage.rows).not.to.be.undefined;
|
|
56
|
-
const secondPage = yield api.getCalendarItemsWithPaginationWithUser(user, (_a = firstPage.nextKeyPair) === null || _a === void 0 ? void 0 : _a.startKeyDocId, 6);
|
|
57
|
-
(0, chai_1.expect)(secondPage.nextKeyPair).to.be.undefined;
|
|
58
|
-
(0, chai_1.expect)(secondPage.rows).not.to.be.undefined;
|
|
59
|
-
const rows = firstPage.rows.concat(secondPage.rows);
|
|
60
|
-
rows.forEach((it) => {
|
|
61
|
-
const existingEntity = entities.find((a) => a.id === it.id);
|
|
62
|
-
(0, chai_1.expect)(existingEntity).not.to.be.undefined;
|
|
63
|
-
(0, chai_1.expect)(it.rev).to.be.eq(existingEntity.rev);
|
|
64
|
-
});
|
|
65
|
-
}));
|
|
66
|
-
});
|
|
67
|
-
//# sourceMappingURL=IccCalendarItemApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IccCalendarItemApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccCalendarItemApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'crypto'\nimport { getEnvironmentInitializer, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport 'isomorphic-fetch'\nimport initMasterApi = TestUtils.initMasterApi\nimport { expect } from 'chai'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { describe } from 'mocha'\nimport { IccCalendarItemXApi } from '../../../icc-x-api'\nimport { CalendarItem } from '../../../icc-api/model/CalendarItem'\nimport { User } from '../../../icc-api/model/User'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\nlet api: IccCalendarItemXApi\nlet user: User\nconst entities: CalendarItem[] = []\n\ndescribe('IccCalendarItemApi', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n const masterApi = await initMasterApi(env)\n user = await masterApi.userApi.getCurrentUser()\n api = masterApi.calendarItemApi\n\n for (let i = 0; i < 10; i++) {\n const entity = (await api.createCalendarItemWithHcParty(\n user,\n await api.newInstance(\n user,\n new CalendarItem({\n id: randomUUID(),\n name: randomUUID(),\n })\n )\n )) as CalendarItem\n entities.push(entity)\n }\n })\n\n it('Should be able of getting the CalendarItems using the deprecated method', async () => {\n const page = (await api.getCalendarItemsWithUser(user)) as CalendarItem[]\n page.forEach((it) => {\n const existingEntity = entities.find((a) => a.id === it.id)\n expect(existingEntity).not.to.be.undefined\n expect(it.rev).to.be.eq(existingEntity!!.rev!!)\n })\n })\n\n it('Should be able of getting the CalendarItems with pagination', async () => {\n const firstPage = await api.getCalendarItemsWithPaginationWithUser(user, undefined, 6)\n expect(firstPage.nextKeyPair).not.to.be.undefined\n expect(firstPage.rows).not.to.be.undefined\n\n const secondPage = await api.getCalendarItemsWithPaginationWithUser(user, firstPage.nextKeyPair?.startKeyDocId, 6)\n expect(secondPage.nextKeyPair).to.be.undefined\n expect(secondPage.rows).not.to.be.undefined\n\n const rows = firstPage.rows!!.concat(secondPage.rows!!)\n rows.forEach((it) => {\n const existingEntity = entities.find((a) => a.id === it.id)\n expect(existingEntity).not.to.be.undefined\n expect(it.rev).to.be.eq(existingEntity!!.rev!!)\n })\n })\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|