gdc-sdk-front-ts 2.2.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ProfileManager.js +6 -3
- package/dist/front-clinical-runtime-client.d.ts +69 -0
- package/dist/front-clinical-runtime-client.js +214 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/orchestration/client-port.d.ts +21 -3
- package/dist/orchestration/individual-member-sdk.d.ts +11 -1
- package/dist/orchestration/individual-member-sdk.js +12 -0
- package/dist/orchestration/professional-sdk.d.ts +7 -1
- package/dist/orchestration/professional-sdk.js +6 -0
- package/package.json +3 -3
- package/dist/discovery/HttpDataspaceDiscoveryClient.d.ts +0 -34
- package/dist/discovery/HttpDataspaceDiscoveryClient.js +0 -47
- package/dist/gdc-common-utils-ts/src/AesManager.d.ts +0 -27
- package/dist/gdc-common-utils-ts/src/AesManager.js +0 -64
- package/dist/gdc-common-utils-ts/src/CryptographyService.d.ts +0 -76
- package/dist/gdc-common-utils-ts/src/CryptographyService.js +0 -401
- package/dist/gdc-common-utils-ts/src/constants/actor-session.d.ts +0 -40
- package/dist/gdc-common-utils-ts/src/constants/actor-session.js +0 -40
- package/dist/gdc-common-utils-ts/src/constants/communication.d.ts +0 -28
- package/dist/gdc-common-utils-ts/src/constants/communication.js +0 -14
- package/dist/gdc-common-utils-ts/src/constants/cryptography.d.ts +0 -58
- package/dist/gdc-common-utils-ts/src/constants/cryptography.js +0 -49
- package/dist/gdc-common-utils-ts/src/constants/dataspace-discovery.d.ts +0 -11
- package/dist/gdc-common-utils-ts/src/constants/dataspace-discovery.js +0 -11
- package/dist/gdc-common-utils-ts/src/constants/dataspace-protocol.d.ts +0 -27
- package/dist/gdc-common-utils-ts/src/constants/dataspace-protocol.js +0 -27
- package/dist/gdc-common-utils-ts/src/constants/device.d.ts +0 -16
- package/dist/gdc-common-utils-ts/src/constants/device.js +0 -15
- package/dist/gdc-common-utils-ts/src/constants/did-services.d.ts +0 -42
- package/dist/gdc-common-utils-ts/src/constants/did-services.js +0 -40
- package/dist/gdc-common-utils-ts/src/constants/eu-countries.d.ts +0 -36
- package/dist/gdc-common-utils-ts/src/constants/eu-countries.js +0 -69
- package/dist/gdc-common-utils-ts/src/constants/fhir-code-systems.d.ts +0 -12
- package/dist/gdc-common-utils-ts/src/constants/fhir-code-systems.js +0 -12
- package/dist/gdc-common-utils-ts/src/constants/fhir-resource-types.d.ts +0 -52
- package/dist/gdc-common-utils-ts/src/constants/fhir-resource-types.js +0 -33
- package/dist/gdc-common-utils-ts/src/constants/fhir-versions.d.ts +0 -10
- package/dist/gdc-common-utils-ts/src/constants/fhir-versions.js +0 -10
- package/dist/gdc-common-utils-ts/src/constants/healthcare.d.ts +0 -496
- package/dist/gdc-common-utils-ts/src/constants/healthcare.js +0 -274
- package/dist/gdc-common-utils-ts/src/constants/hl7-roles.d.ts +0 -44
- package/dist/gdc-common-utils-ts/src/constants/hl7-roles.js +0 -208
- package/dist/gdc-common-utils-ts/src/constants/index.d.ts +0 -21
- package/dist/gdc-common-utils-ts/src/constants/index.js +0 -21
- package/dist/gdc-common-utils-ts/src/constants/network.d.ts +0 -25
- package/dist/gdc-common-utils-ts/src/constants/network.js +0 -17
- package/dist/gdc-common-utils-ts/src/constants/schemaorg.d.ts +0 -175
- package/dist/gdc-common-utils-ts/src/constants/schemaorg.js +0 -261
- package/dist/gdc-common-utils-ts/src/constants/sectors.d.ts +0 -24
- package/dist/gdc-common-utils-ts/src/constants/sectors.js +0 -24
- package/dist/gdc-common-utils-ts/src/constants/service-capabilities.d.ts +0 -82
- package/dist/gdc-common-utils-ts/src/constants/service-capabilities.js +0 -105
- package/dist/gdc-common-utils-ts/src/constants/smart.d.ts +0 -12
- package/dist/gdc-common-utils-ts/src/constants/smart.js +0 -12
- package/dist/gdc-common-utils-ts/src/constants/urn.d.ts +0 -11
- package/dist/gdc-common-utils-ts/src/constants/urn.js +0 -11
- package/dist/gdc-common-utils-ts/src/constants/verifiable-credentials.d.ts +0 -34
- package/dist/gdc-common-utils-ts/src/constants/verifiable-credentials.js +0 -42
- package/dist/gdc-common-utils-ts/src/constants/vital-signs.d.ts +0 -75
- package/dist/gdc-common-utils-ts/src/constants/vital-signs.js +0 -33
- package/dist/gdc-common-utils-ts/src/examples/api-flow-examples.d.ts +0 -15
- package/dist/gdc-common-utils-ts/src/examples/api-flow-examples.js +0 -16
- package/dist/gdc-common-utils-ts/src/examples/communication-bundle-session.d.ts +0 -22
- package/dist/gdc-common-utils-ts/src/examples/communication-bundle-session.js +0 -81
- package/dist/gdc-common-utils-ts/src/examples/consent-access.d.ts +0 -30
- package/dist/gdc-common-utils-ts/src/examples/consent-access.js +0 -121
- package/dist/gdc-common-utils-ts/src/examples/contract-examples.d.ts +0 -15
- package/dist/gdc-common-utils-ts/src/examples/contract-examples.js +0 -16
- package/dist/gdc-common-utils-ts/src/examples/dataspace-discovery.d.ts +0 -98
- package/dist/gdc-common-utils-ts/src/examples/dataspace-discovery.js +0 -141
- package/dist/gdc-common-utils-ts/src/examples/frontend-session.d.ts +0 -13
- package/dist/gdc-common-utils-ts/src/examples/frontend-session.js +0 -24
- package/dist/gdc-common-utils-ts/src/examples/ica-activation-proof.d.ts +0 -64
- package/dist/gdc-common-utils-ts/src/examples/ica-activation-proof.js +0 -77
- package/dist/gdc-common-utils-ts/src/examples/index.d.ts +0 -14
- package/dist/gdc-common-utils-ts/src/examples/index.js +0 -14
- package/dist/gdc-common-utils-ts/src/examples/individual-controller.d.ts +0 -100
- package/dist/gdc-common-utils-ts/src/examples/individual-controller.js +0 -71
- package/dist/gdc-common-utils-ts/src/examples/lifecycle.d.ts +0 -505
- package/dist/gdc-common-utils-ts/src/examples/lifecycle.js +0 -291
- package/dist/gdc-common-utils-ts/src/examples/organization-controller.d.ts +0 -163
- package/dist/gdc-common-utils-ts/src/examples/organization-controller.js +0 -93
- package/dist/gdc-common-utils-ts/src/examples/professional.d.ts +0 -228
- package/dist/gdc-common-utils-ts/src/examples/professional.js +0 -324
- package/dist/gdc-common-utils-ts/src/examples/related-person.d.ts +0 -10
- package/dist/gdc-common-utils-ts/src/examples/related-person.js +0 -13
- package/dist/gdc-common-utils-ts/src/examples/relationship-access.d.ts +0 -11
- package/dist/gdc-common-utils-ts/src/examples/relationship-access.js +0 -96
- package/dist/gdc-common-utils-ts/src/examples/shared.d.ts +0 -220
- package/dist/gdc-common-utils-ts/src/examples/shared.js +0 -191
- package/dist/gdc-common-utils-ts/src/hmac.d.ts +0 -14
- package/dist/gdc-common-utils-ts/src/hmac.js +0 -24
- package/dist/gdc-common-utils-ts/src/i18n/clinical-sections.i18n.d.ts +0 -6
- package/dist/gdc-common-utils-ts/src/i18n/clinical-sections.i18n.js +0 -15
- package/dist/gdc-common-utils-ts/src/i18n/role-codes.i18n.d.ts +0 -4
- package/dist/gdc-common-utils-ts/src/i18n/role-codes.i18n.js +0 -13
- package/dist/gdc-common-utils-ts/src/index.d.ts +0 -10
- package/dist/gdc-common-utils-ts/src/index.js +0 -10
- package/dist/gdc-common-utils-ts/src/interfaces/Cryptography.types.d.ts +0 -139
- package/dist/gdc-common-utils-ts/src/interfaces/Cryptography.types.js +0 -8
- package/dist/gdc-common-utils-ts/src/interfaces/ICryptoHelper.d.ts +0 -28
- package/dist/gdc-common-utils-ts/src/interfaces/ICryptoHelper.js +0 -3
- package/dist/gdc-common-utils-ts/src/interfaces/ICryptography.d.ts +0 -154
- package/dist/gdc-common-utils-ts/src/interfaces/ICryptography.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/actor-session.d.ts +0 -9
- package/dist/gdc-common-utils-ts/src/models/actor-session.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/aes.d.ts +0 -85
- package/dist/gdc-common-utils-ts/src/models/aes.js +0 -10
- package/dist/gdc-common-utils-ts/src/models/auth.d.ts +0 -35
- package/dist/gdc-common-utils-ts/src/models/auth.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/bundle.d.ts +0 -153
- package/dist/gdc-common-utils-ts/src/models/bundle.js +0 -25
- package/dist/gdc-common-utils-ts/src/models/clinical-sections.d.ts +0 -36
- package/dist/gdc-common-utils-ts/src/models/clinical-sections.en.d.ts +0 -150
- package/dist/gdc-common-utils-ts/src/models/clinical-sections.en.js +0 -104
- package/dist/gdc-common-utils-ts/src/models/clinical-sections.js +0 -32
- package/dist/gdc-common-utils-ts/src/models/clinical-workbook-summary.d.ts +0 -126
- package/dist/gdc-common-utils-ts/src/models/clinical-workbook-summary.js +0 -67
- package/dist/gdc-common-utils-ts/src/models/comm.d.ts +0 -56
- package/dist/gdc-common-utils-ts/src/models/comm.js +0 -4
- package/dist/gdc-common-utils-ts/src/models/confidential-job.d.ts +0 -78
- package/dist/gdc-common-utils-ts/src/models/confidential-job.js +0 -20
- package/dist/gdc-common-utils-ts/src/models/confidential-message.d.ts +0 -97
- package/dist/gdc-common-utils-ts/src/models/confidential-message.js +0 -4
- package/dist/gdc-common-utils-ts/src/models/confidential-storage.d.ts +0 -134
- package/dist/gdc-common-utils-ts/src/models/confidential-storage.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/consent-access.d.ts +0 -79
- package/dist/gdc-common-utils-ts/src/models/consent-access.js +0 -2
- package/dist/gdc-common-utils-ts/src/models/consent-rule.d.ts +0 -122
- package/dist/gdc-common-utils-ts/src/models/consent-rule.js +0 -22
- package/dist/gdc-common-utils-ts/src/models/crypto.d.ts +0 -35
- package/dist/gdc-common-utils-ts/src/models/crypto.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/dataspace-discovery-defaults.d.ts +0 -79
- package/dist/gdc-common-utils-ts/src/models/dataspace-discovery-defaults.js +0 -2
- package/dist/gdc-common-utils-ts/src/models/dataspace-discovery.d.ts +0 -68
- package/dist/gdc-common-utils-ts/src/models/dataspace-discovery.js +0 -9
- package/dist/gdc-common-utils-ts/src/models/dataspace-protocol.d.ts +0 -14
- package/dist/gdc-common-utils-ts/src/models/dataspace-protocol.js +0 -2
- package/dist/gdc-common-utils-ts/src/models/device-license.d.ts +0 -134
- package/dist/gdc-common-utils-ts/src/models/device-license.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/did.d.ts +0 -108
- package/dist/gdc-common-utils-ts/src/models/did.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/fhir-documents.d.ts +0 -101
- package/dist/gdc-common-utils-ts/src/models/fhir-documents.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/identity-bootstrap.d.ts +0 -104
- package/dist/gdc-common-utils-ts/src/models/identity-bootstrap.js +0 -2
- package/dist/gdc-common-utils-ts/src/models/index.d.ts +0 -42
- package/dist/gdc-common-utils-ts/src/models/index.js +0 -42
- package/dist/gdc-common-utils-ts/src/models/indexing.d.ts +0 -11
- package/dist/gdc-common-utils-ts/src/models/indexing.js +0 -18
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/allergy-intolerance-claims.d.ts +0 -24
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/allergy-intolerance-claims.js +0 -36
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/communication-claims.d.ts +0 -53
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/communication-claims.js +0 -55
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/condition-claims.d.ts +0 -14
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/condition-claims.js +0 -25
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/device-use-statement-claims.d.ts +0 -13
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/device-use-statement-claims.js +0 -23
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/document-reference-claims.d.ts +0 -36
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/document-reference-claims.js +0 -89
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/medication-statement-claims.d.ts +0 -341
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/medication-statement-claims.js +0 -204
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/types.d.ts +0 -9
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims/types.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims.d.ts +0 -5
- package/dist/gdc-common-utils-ts/src/models/interoperable-claims.js +0 -7
- package/dist/gdc-common-utils-ts/src/models/issue.d.ts +0 -57
- package/dist/gdc-common-utils-ts/src/models/issue.js +0 -75
- package/dist/gdc-common-utils-ts/src/models/jsonapi.d.ts +0 -13
- package/dist/gdc-common-utils-ts/src/models/jsonapi.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/jwe.d.ts +0 -120
- package/dist/gdc-common-utils-ts/src/models/jwe.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/jwk.d.ts +0 -39
- package/dist/gdc-common-utils-ts/src/models/jwk.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/jws.d.ts +0 -35
- package/dist/gdc-common-utils-ts/src/models/jws.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/jwt.d.ts +0 -9
- package/dist/gdc-common-utils-ts/src/models/jwt.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/loinc-document-ontology.d.ts +0 -55
- package/dist/gdc-common-utils-ts/src/models/loinc-document-ontology.js +0 -58
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.common.model.d.ts +0 -33
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.common.model.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.document.model.d.ts +0 -50
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.document.model.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.electronicRecord.model.d.ts +0 -67
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.electronicRecord.model.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.evidence.model.d.ts +0 -51
- package/dist/gdc-common-utils-ts/src/models/oidc4ida.evidence.model.js +0 -5
- package/dist/gdc-common-utils-ts/src/models/openid-device.d.ts +0 -119
- package/dist/gdc-common-utils-ts/src/models/openid-device.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/operation-outcome.d.ts +0 -26
- package/dist/gdc-common-utils-ts/src/models/operation-outcome.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/params.d.ts +0 -133
- package/dist/gdc-common-utils-ts/src/models/params.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/relationship-access.d.ts +0 -160
- package/dist/gdc-common-utils-ts/src/models/relationship-access.js +0 -21
- package/dist/gdc-common-utils-ts/src/models/resource-document.d.ts +0 -14
- package/dist/gdc-common-utils-ts/src/models/resource-document.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/response.d.ts +0 -1
- package/dist/gdc-common-utils-ts/src/models/response.js +0 -3
- package/dist/gdc-common-utils-ts/src/models/urlPath.d.ts +0 -58
- package/dist/gdc-common-utils-ts/src/models/urlPath.js +0 -76
- package/dist/gdc-common-utils-ts/src/models/verifiable-credential.d.ts +0 -45
- package/dist/gdc-common-utils-ts/src/models/verifiable-credential.js +0 -8
- package/dist/gdc-common-utils-ts/src/storage/IVaultRepository.d.ts +0 -53
- package/dist/gdc-common-utils-ts/src/storage/IVaultRepository.js +0 -25
- package/dist/gdc-common-utils-ts/src/storage/VaultMemRepository.d.ts +0 -30
- package/dist/gdc-common-utils-ts/src/storage/VaultMemRepository.js +0 -81
- package/dist/gdc-common-utils-ts/src/storage/index.d.ts +0 -3
- package/dist/gdc-common-utils-ts/src/storage/index.js +0 -4
- package/dist/gdc-common-utils-ts/src/utils/activation-policy.d.ts +0 -86
- package/dist/gdc-common-utils-ts/src/utils/activation-policy.js +0 -218
- package/dist/gdc-common-utils-ts/src/utils/activation-request.d.ts +0 -81
- package/dist/gdc-common-utils-ts/src/utils/activation-request.js +0 -99
- package/dist/gdc-common-utils-ts/src/utils/actor.d.ts +0 -18
- package/dist/gdc-common-utils-ts/src/utils/actor.js +0 -36
- package/dist/gdc-common-utils-ts/src/utils/base-convert.d.ts +0 -60
- package/dist/gdc-common-utils-ts/src/utils/base-convert.js +0 -104
- package/dist/gdc-common-utils-ts/src/utils/baseN.d.ts +0 -35
- package/dist/gdc-common-utils-ts/src/utils/baseN.js +0 -174
- package/dist/gdc-common-utils-ts/src/utils/bundle-query.d.ts +0 -35
- package/dist/gdc-common-utils-ts/src/utils/bundle-query.js +0 -177
- package/dist/gdc-common-utils-ts/src/utils/bundle.d.ts +0 -13
- package/dist/gdc-common-utils-ts/src/utils/bundle.js +0 -39
- package/dist/gdc-common-utils-ts/src/utils/clinical-resource-converters.d.ts +0 -64
- package/dist/gdc-common-utils-ts/src/utils/clinical-resource-converters.js +0 -279
- package/dist/gdc-common-utils-ts/src/utils/clinical-resource-view.d.ts +0 -55
- package/dist/gdc-common-utils-ts/src/utils/clinical-resource-view.js +0 -291
- package/dist/gdc-common-utils-ts/src/utils/communication-bundle-session.d.ts +0 -110
- package/dist/gdc-common-utils-ts/src/utils/communication-bundle-session.js +0 -326
- package/dist/gdc-common-utils-ts/src/utils/communication-document-reference.d.ts +0 -41
- package/dist/gdc-common-utils-ts/src/utils/communication-document-reference.js +0 -170
- package/dist/gdc-common-utils-ts/src/utils/communication-fhir-r4.d.ts +0 -41
- package/dist/gdc-common-utils-ts/src/utils/communication-fhir-r4.js +0 -215
- package/dist/gdc-common-utils-ts/src/utils/communication-identity.d.ts +0 -152
- package/dist/gdc-common-utils-ts/src/utils/communication-identity.js +0 -121
- package/dist/gdc-common-utils-ts/src/utils/consent-claim-helpers.d.ts +0 -79
- package/dist/gdc-common-utils-ts/src/utils/consent-claim-helpers.js +0 -213
- package/dist/gdc-common-utils-ts/src/utils/consent.d.ts +0 -218
- package/dist/gdc-common-utils-ts/src/utils/consent.js +0 -679
- package/dist/gdc-common-utils-ts/src/utils/content.d.ts +0 -55
- package/dist/gdc-common-utils-ts/src/utils/content.js +0 -60
- package/dist/gdc-common-utils-ts/src/utils/dataspace-discovery-defaults.d.ts +0 -130
- package/dist/gdc-common-utils-ts/src/utils/dataspace-discovery-defaults.js +0 -307
- package/dist/gdc-common-utils-ts/src/utils/dataspace-discovery.d.ts +0 -235
- package/dist/gdc-common-utils-ts/src/utils/dataspace-discovery.js +0 -482
- package/dist/gdc-common-utils-ts/src/utils/dataspace-protocol.d.ts +0 -66
- package/dist/gdc-common-utils-ts/src/utils/dataspace-protocol.js +0 -109
- package/dist/gdc-common-utils-ts/src/utils/did-resolution.d.ts +0 -60
- package/dist/gdc-common-utils-ts/src/utils/did-resolution.js +0 -173
- package/dist/gdc-common-utils-ts/src/utils/did.d.ts +0 -124
- package/dist/gdc-common-utils-ts/src/utils/did.js +0 -204
- package/dist/gdc-common-utils-ts/src/utils/didcomm-submit-policy.d.ts +0 -10
- package/dist/gdc-common-utils-ts/src/utils/didcomm-submit-policy.js +0 -15
- package/dist/gdc-common-utils-ts/src/utils/didcomm-submit.d.ts +0 -48
- package/dist/gdc-common-utils-ts/src/utils/didcomm-submit.js +0 -81
- package/dist/gdc-common-utils-ts/src/utils/didcomm.d.ts +0 -60
- package/dist/gdc-common-utils-ts/src/utils/didcomm.js +0 -78
- package/dist/gdc-common-utils-ts/src/utils/discovery-normalization.d.ts +0 -28
- package/dist/gdc-common-utils-ts/src/utils/discovery-normalization.js +0 -64
- package/dist/gdc-common-utils-ts/src/utils/fhir-cid.d.ts +0 -60
- package/dist/gdc-common-utils-ts/src/utils/fhir-cid.js +0 -152
- package/dist/gdc-common-utils-ts/src/utils/fhir-validator.d.ts +0 -61
- package/dist/gdc-common-utils-ts/src/utils/fhir-validator.js +0 -91
- package/dist/gdc-common-utils-ts/src/utils/format-converter.d.ts +0 -21
- package/dist/gdc-common-utils-ts/src/utils/format-converter.js +0 -109
- package/dist/gdc-common-utils-ts/src/utils/index.d.ts +0 -39
- package/dist/gdc-common-utils-ts/src/utils/index.js +0 -39
- package/dist/gdc-common-utils-ts/src/utils/individual-form-pdf.d.ts +0 -55
- package/dist/gdc-common-utils-ts/src/utils/individual-form-pdf.js +0 -191
- package/dist/gdc-common-utils-ts/src/utils/jwt.d.ts +0 -53
- package/dist/gdc-common-utils-ts/src/utils/jwt.js +0 -154
- package/dist/gdc-common-utils-ts/src/utils/manager-error.d.ts +0 -15
- package/dist/gdc-common-utils-ts/src/utils/manager-error.js +0 -21
- package/dist/gdc-common-utils-ts/src/utils/medication-claim-helpers.d.ts +0 -56
- package/dist/gdc-common-utils-ts/src/utils/medication-claim-helpers.js +0 -127
- package/dist/gdc-common-utils-ts/src/utils/multibase58.d.ts +0 -13
- package/dist/gdc-common-utils-ts/src/utils/multibase58.js +0 -40
- package/dist/gdc-common-utils-ts/src/utils/multibasehash.d.ts +0 -8
- package/dist/gdc-common-utils-ts/src/utils/multibasehash.js +0 -23
- package/dist/gdc-common-utils-ts/src/utils/normalize-uuid.d.ts +0 -1
- package/dist/gdc-common-utils-ts/src/utils/normalize-uuid.js +0 -35
- package/dist/gdc-common-utils-ts/src/utils/normalize.d.ts +0 -16
- package/dist/gdc-common-utils-ts/src/utils/normalize.js +0 -40
- package/dist/gdc-common-utils-ts/src/utils/object-convert.d.ts +0 -20
- package/dist/gdc-common-utils-ts/src/utils/object-convert.js +0 -51
- package/dist/gdc-common-utils-ts/src/utils/smart-scope.d.ts +0 -28
- package/dist/gdc-common-utils-ts/src/utils/smart-scope.js +0 -29
- package/dist/gdc-common-utils-ts/src/utils/string-convert.d.ts +0 -24
- package/dist/gdc-common-utils-ts/src/utils/string-convert.js +0 -62
- package/dist/gdc-common-utils-ts/src/utils/string-utils.d.ts +0 -25
- package/dist/gdc-common-utils-ts/src/utils/string-utils.js +0 -66
- package/dist/gdc-common-utils-ts/src/utils/url.d.ts +0 -26
- package/dist/gdc-common-utils-ts/src/utils/url.js +0 -44
- package/dist/gdc-common-utils-ts/src/utils/vp-token.d.ts +0 -139
- package/dist/gdc-common-utils-ts/src/utils/vp-token.js +0 -256
- package/dist/gdc-sdk-core-ts/src/actor-model.d.ts +0 -56
- package/dist/gdc-sdk-core-ts/src/actor-model.js +0 -112
- package/dist/gdc-sdk-core-ts/src/app-identity.d.ts +0 -80
- package/dist/gdc-sdk-core-ts/src/app-identity.js +0 -147
- package/dist/gdc-sdk-core-ts/src/bootstrap-facade.d.ts +0 -165
- package/dist/gdc-sdk-core-ts/src/bootstrap-facade.js +0 -191
- package/dist/gdc-sdk-core-ts/src/communication-bundle-contracts.d.ts +0 -112
- package/dist/gdc-sdk-core-ts/src/communication-bundle-contracts.js +0 -185
- package/dist/gdc-sdk-core-ts/src/communication-bundle-resources.d.ts +0 -32
- package/dist/gdc-sdk-core-ts/src/communication-bundle-resources.js +0 -215
- package/dist/gdc-sdk-core-ts/src/communication-consent-mutation-contract.d.ts +0 -55
- package/dist/gdc-sdk-core-ts/src/communication-consent-mutation-contract.js +0 -190
- package/dist/gdc-sdk-core-ts/src/communication-document-facade.d.ts +0 -55
- package/dist/gdc-sdk-core-ts/src/communication-document-facade.js +0 -194
- package/dist/gdc-sdk-core-ts/src/communication-draft.d.ts +0 -104
- package/dist/gdc-sdk-core-ts/src/communication-draft.js +0 -143
- package/dist/gdc-sdk-core-ts/src/communication-outbox.d.ts +0 -49
- package/dist/gdc-sdk-core-ts/src/communication-outbox.js +0 -62
- package/dist/gdc-sdk-core-ts/src/communication-resource-helpers.d.ts +0 -180
- package/dist/gdc-sdk-core-ts/src/communication-resource-helpers.js +0 -455
- package/dist/gdc-sdk-core-ts/src/consent-access.d.ts +0 -73
- package/dist/gdc-sdk-core-ts/src/consent-access.js +0 -109
- package/dist/gdc-sdk-core-ts/src/consent-claim-helpers.d.ts +0 -5
- package/dist/gdc-sdk-core-ts/src/consent-claim-helpers.js +0 -6
- package/dist/gdc-sdk-core-ts/src/consent-communication-operations.d.ts +0 -82
- package/dist/gdc-sdk-core-ts/src/consent-communication-operations.js +0 -135
- package/dist/gdc-sdk-core-ts/src/did-resolution-session.d.ts +0 -33
- package/dist/gdc-sdk-core-ts/src/did-resolution-session.js +0 -56
- package/dist/gdc-sdk-core-ts/src/discovery-facade.d.ts +0 -84
- package/dist/gdc-sdk-core-ts/src/discovery-facade.js +0 -24
- package/dist/gdc-sdk-core-ts/src/identity-model.d.ts +0 -46
- package/dist/gdc-sdk-core-ts/src/identity-model.js +0 -2
- package/dist/gdc-sdk-core-ts/src/identity-store.d.ts +0 -83
- package/dist/gdc-sdk-core-ts/src/identity-store.js +0 -51
- package/dist/gdc-sdk-core-ts/src/index.d.ts +0 -23
- package/dist/gdc-sdk-core-ts/src/index.js +0 -24
- package/dist/gdc-sdk-core-ts/src/medication-claim-helpers.d.ts +0 -5
- package/dist/gdc-sdk-core-ts/src/medication-claim-helpers.js +0 -6
- package/dist/gdc-sdk-core-ts/src/polling-model.d.ts +0 -35
- package/dist/gdc-sdk-core-ts/src/polling-model.js +0 -24
- package/dist/gdc-sdk-core-ts/src/relationship-access.d.ts +0 -40
- package/dist/gdc-sdk-core-ts/src/relationship-access.js +0 -150
- package/dist/gdc-sdk-core-ts/src/session-model.d.ts +0 -134
- package/dist/gdc-sdk-core-ts/src/session-model.js +0 -2
- package/dist/gdc-sdk-core-ts/src/smart-endpoint-resolver.d.ts +0 -19
- package/dist/gdc-sdk-core-ts/src/smart-endpoint-resolver.js +0 -19
- package/dist/gdc-sdk-core-ts/src/vital-signs.d.ts +0 -38
- package/dist/gdc-sdk-core-ts/src/vital-signs.js +0 -155
- package/dist/gdc-sdk-front-ts/src/ClientSDK.d.ts +0 -99
- package/dist/gdc-sdk-front-ts/src/ClientSDK.js +0 -177
- package/dist/gdc-sdk-front-ts/src/ProfileManager.d.ts +0 -140
- package/dist/gdc-sdk-front-ts/src/ProfileManager.js +0 -76
- package/dist/gdc-sdk-front-ts/src/ProfileRegistry.d.ts +0 -11
- package/dist/gdc-sdk-front-ts/src/ProfileRegistry.js +0 -26
- package/dist/gdc-sdk-front-ts/src/VerifierService.d.ts +0 -6
- package/dist/gdc-sdk-front-ts/src/VerifierService.js +0 -10
- package/dist/gdc-sdk-front-ts/src/actor-session.d.ts +0 -2
- package/dist/gdc-sdk-front-ts/src/actor-session.js +0 -2
- package/dist/gdc-sdk-front-ts/src/capabilityMapper.d.ts +0 -8
- package/dist/gdc-sdk-front-ts/src/capabilityMapper.js +0 -28
- package/dist/gdc-sdk-front-ts/src/consent-claim-helpers.d.ts +0 -4
- package/dist/gdc-sdk-front-ts/src/consent-claim-helpers.js +0 -5
- package/dist/gdc-sdk-front-ts/src/discovery/DataspaceDiscoveryClient.d.ts +0 -54
- package/dist/gdc-sdk-front-ts/src/discovery/DataspaceDiscoveryClient.js +0 -85
- package/dist/gdc-sdk-front-ts/src/discovery/index.d.ts +0 -3
- package/dist/gdc-sdk-front-ts/src/discovery/index.js +0 -4
- package/dist/gdc-sdk-front-ts/src/discovery/mappers.d.ts +0 -29
- package/dist/gdc-sdk-front-ts/src/discovery/mappers.js +0 -60
- package/dist/gdc-sdk-front-ts/src/discovery/types.d.ts +0 -83
- package/dist/gdc-sdk-front-ts/src/discovery/types.js +0 -2
- package/dist/gdc-sdk-front-ts/src/index.d.ts +0 -15
- package/dist/gdc-sdk-front-ts/src/index.js +0 -16
- package/dist/gdc-sdk-front-ts/src/medication-claim-helpers.d.ts +0 -4
- package/dist/gdc-sdk-front-ts/src/medication-claim-helpers.js +0 -5
- package/dist/gdc-sdk-front-ts/src/roleRegistry.d.ts +0 -19
- package/dist/gdc-sdk-front-ts/src/roleRegistry.js +0 -2
- package/dist/gdc-sdk-front-ts/src/runtime-contracts.d.ts +0 -22
- package/dist/gdc-sdk-front-ts/src/runtime-contracts.js +0 -7
- package/dist/gdc-sdk-front-ts/src/services.d.ts +0 -167
- package/dist/gdc-sdk-front-ts/src/services.js +0 -78
- package/dist/gdc-sdk-front-ts/src/session-descriptor.d.ts +0 -11
- package/dist/gdc-sdk-front-ts/src/session-descriptor.js +0 -8
- package/dist/gdc-sdk-front-ts/src/types.d.ts +0 -11
- package/dist/gdc-sdk-front-ts/src/types.js +0 -1
- package/dist/lifecycle-examples.d.ts +0 -6
- package/dist/lifecycle-examples.js +0 -7
- package/dist/medication-claim-helpers.d.ts +0 -4
- package/dist/medication-claim-helpers.js +0 -5
- package/dist/orchestration/facades.d.ts +0 -65
- package/dist/orchestration/facades.js +0 -142
|
@@ -1,679 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
|
|
2
|
-
import { ClaimConsent } from '../models/consent-rule.js';
|
|
3
|
-
import { assignCidToClaimsId } from './fhir-cid.js';
|
|
4
|
-
/**
|
|
5
|
-
* Normalizes a phone string into a compact token form.
|
|
6
|
-
*
|
|
7
|
-
* @param value Raw phone-like input.
|
|
8
|
-
*/
|
|
9
|
-
export function normalizePhone(value) {
|
|
10
|
-
return String(value || '').replace(/[^\d+]/g, '');
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Normalizes arbitrary identifier text into a lowercase token-safe fragment.
|
|
14
|
-
*
|
|
15
|
-
* @param value Raw identifier text.
|
|
16
|
-
*/
|
|
17
|
-
export function normalizeIdentifierToken(value) {
|
|
18
|
-
return String(value || '')
|
|
19
|
-
.trim()
|
|
20
|
-
.toLowerCase()
|
|
21
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
22
|
-
.replace(/(^-|-$)/g, '');
|
|
23
|
-
}
|
|
24
|
-
function withPrefix(prefix, message) {
|
|
25
|
-
return prefix ? `${prefix} ${message}` : message;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Parses a single canonical consent actor token into its resolved kind/value.
|
|
29
|
-
*
|
|
30
|
-
* @param rawToken Raw actor token such as `did:...`, `user@example.org`,
|
|
31
|
-
* `tel:+34600111222`, or `ES`.
|
|
32
|
-
* @returns The normalized parsed token or `undefined` when the token cannot be resolved.
|
|
33
|
-
*/
|
|
34
|
-
export function parseConsentActorToken(rawToken) {
|
|
35
|
-
const token = String(rawToken || '').trim();
|
|
36
|
-
if (!token)
|
|
37
|
-
return undefined;
|
|
38
|
-
if (token.startsWith('did:')) {
|
|
39
|
-
return { kind: 'did', value: token };
|
|
40
|
-
}
|
|
41
|
-
const email = token.toLowerCase();
|
|
42
|
-
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
43
|
-
return { kind: 'email', value: email };
|
|
44
|
-
}
|
|
45
|
-
if (/^tel:/i.test(token)) {
|
|
46
|
-
const normalizedPhone = normalizePhone(token.slice(4));
|
|
47
|
-
if (normalizedPhone)
|
|
48
|
-
return { kind: 'phone', value: `tel:${normalizedPhone}` };
|
|
49
|
-
}
|
|
50
|
-
if (/^[A-Z]{2}$/.test(token)) {
|
|
51
|
-
return { kind: 'country', value: token };
|
|
52
|
-
}
|
|
53
|
-
return undefined;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Normalizes a consent actor input into a list of canonical actor tokens.
|
|
57
|
-
*
|
|
58
|
-
* The output preserves input order while removing empty and duplicate tokens.
|
|
59
|
-
* Legacy structured actor inputs are still supported as a compatibility layer.
|
|
60
|
-
*
|
|
61
|
-
* @param actor Consent actor input in canonical or legacy form.
|
|
62
|
-
* @param options.errorPrefix Optional error prefix.
|
|
63
|
-
* @throws When no valid actor token can be resolved from the input.
|
|
64
|
-
*/
|
|
65
|
-
export function normalizeConsentActors(actor, options = {}) {
|
|
66
|
-
const rawTokens = [];
|
|
67
|
-
if (typeof actor === 'string') {
|
|
68
|
-
rawTokens.push(...actor.split(','));
|
|
69
|
-
}
|
|
70
|
-
else if (Array.isArray(actor)) {
|
|
71
|
-
for (const item of actor)
|
|
72
|
-
rawTokens.push(...String(item || '').split(','));
|
|
73
|
-
}
|
|
74
|
-
else if (actor && typeof actor === 'object') {
|
|
75
|
-
const legacy = actor;
|
|
76
|
-
const identifier = String(legacy.identifier || '').trim();
|
|
77
|
-
if (identifier)
|
|
78
|
-
rawTokens.push(identifier);
|
|
79
|
-
const didWeb = String(legacy.didWeb || '').trim();
|
|
80
|
-
if (didWeb)
|
|
81
|
-
rawTokens.push(didWeb);
|
|
82
|
-
const orgUrl = String(legacy.url || legacy.organizationUrl || '').trim();
|
|
83
|
-
if (orgUrl) {
|
|
84
|
-
try {
|
|
85
|
-
const parsed = orgUrl.includes('://') ? new URL(orgUrl) : new URL(`https://${orgUrl}`);
|
|
86
|
-
if (parsed.hostname)
|
|
87
|
-
rawTokens.push(`did:web:${parsed.hostname.toLowerCase()}`);
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
// Ignore malformed URL and continue with other fallbacks.
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const email = String(legacy.email || '').trim();
|
|
94
|
-
if (email)
|
|
95
|
-
rawTokens.push(email);
|
|
96
|
-
const phone = normalizePhone(String(legacy.phone || ''));
|
|
97
|
-
if (phone)
|
|
98
|
-
rawTokens.push(`tel:${phone}`);
|
|
99
|
-
}
|
|
100
|
-
const normalized = [];
|
|
101
|
-
const seen = new Set();
|
|
102
|
-
for (const rawToken of rawTokens) {
|
|
103
|
-
const parsed = parseConsentActorToken(rawToken);
|
|
104
|
-
if (!parsed)
|
|
105
|
-
continue;
|
|
106
|
-
if (!seen.has(parsed.value)) {
|
|
107
|
-
seen.add(parsed.value);
|
|
108
|
-
normalized.push(parsed.value);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (normalized.length === 0) {
|
|
112
|
-
throw new Error(withPrefix(options.errorPrefix, 'Consent.actor-identifier input is required and must contain at least one resolvable token (did, email, tel, or country code).'));
|
|
113
|
-
}
|
|
114
|
-
return normalized;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Resolves the canonical consent actor string used in consent claims.
|
|
118
|
-
*
|
|
119
|
-
* The resulting value is always a comma-separated canonical string, even when
|
|
120
|
-
* the caller provides an array or a legacy structured object.
|
|
121
|
-
*
|
|
122
|
-
* @param actor Consent actor input in canonical or legacy form.
|
|
123
|
-
* @param options.errorPrefix Optional error prefix.
|
|
124
|
-
*/
|
|
125
|
-
export function resolveActorIdentifier(actor, options = {}) {
|
|
126
|
-
return normalizeConsentActors(actor, options).join(',');
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Resolves the canonical subject identifier used in consent claims.
|
|
130
|
-
*
|
|
131
|
-
* @param input Subject identification inputs.
|
|
132
|
-
* @param options.errorPrefix Optional error prefix.
|
|
133
|
-
*/
|
|
134
|
-
export function resolveSubjectIdentifier(input, options = {}) {
|
|
135
|
-
const did = String(input?.subjectDid || '').trim();
|
|
136
|
-
if (did)
|
|
137
|
-
return did;
|
|
138
|
-
const phone = normalizePhone(String(input?.subjectPhone || ''));
|
|
139
|
-
const given = normalizeIdentifierToken(String(input?.subjectGivenName || ''));
|
|
140
|
-
if (phone && given)
|
|
141
|
-
return `urn:person:phone:${phone}:given:${given}`;
|
|
142
|
-
throw new Error(withPrefix(options.errorPrefix, 'grantProfessionalAccessSimple requires subjectDid or (subjectPhone + subjectGivenName).'));
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Builds a minimal consent claims object from simple business inputs.
|
|
146
|
-
*
|
|
147
|
-
* @param input Consent actor/subject/business data.
|
|
148
|
-
* @param options.errorPrefix Optional error prefix.
|
|
149
|
-
* @param options.consentIdentifierFactory Optional fallback identifier factory.
|
|
150
|
-
*/
|
|
151
|
-
export function buildConsentClaimsSimple(input, options = {}) {
|
|
152
|
-
const actorIdentifier = resolveActorIdentifier(input.actor, { errorPrefix: options.errorPrefix });
|
|
153
|
-
const subjectIdentifier = resolveSubjectIdentifier(input, { errorPrefix: options.errorPrefix });
|
|
154
|
-
const consentDate = String(input.consentDate || '').trim() || new Date().toISOString().slice(0, 10);
|
|
155
|
-
const consentIdentifier = String(input.consentIdentifier || '').trim() || String(options.consentIdentifierFactory?.() || '').trim();
|
|
156
|
-
if (!consentIdentifier) {
|
|
157
|
-
throw new Error(withPrefix(options.errorPrefix, 'consentIdentifier is required when no consentIdentifierFactory is provided.'));
|
|
158
|
-
}
|
|
159
|
-
return {
|
|
160
|
-
actorIdentifier,
|
|
161
|
-
subjectIdentifier,
|
|
162
|
-
consentClaims: {
|
|
163
|
-
'@context': 'org.hl7.fhir.api',
|
|
164
|
-
[ClaimConsent.decision]: input.decision || 'permit',
|
|
165
|
-
[ClaimConsent.subject]: subjectIdentifier,
|
|
166
|
-
[ClaimConsent.identifier]: consentIdentifier,
|
|
167
|
-
[ClaimConsent.date]: consentDate,
|
|
168
|
-
[ClaimConsent.purpose]: input.purpose,
|
|
169
|
-
[ClaimConsent.action]: (input.actions || []).join(','),
|
|
170
|
-
[ClaimConsent.actorIdentifier]: actorIdentifier,
|
|
171
|
-
[ClaimConsent.actorRole]: input.actorRole,
|
|
172
|
-
[ClaimConsent.attachmentContentType]: input.attachmentContentType || 'application/odrl+json',
|
|
173
|
-
[ClaimConsent.attachmentData]: input.attachmentBase64 || 'e30=',
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Builds minimal consent claims and assigns a deterministic CID into the claims id.
|
|
179
|
-
*
|
|
180
|
-
* @param input Consent actor/subject/business data.
|
|
181
|
-
* @param options.errorPrefix Optional error prefix.
|
|
182
|
-
* @param options.consentIdentifierFactory Optional fallback identifier factory.
|
|
183
|
-
*/
|
|
184
|
-
export function buildConsentClaimsSimpleWithCid(input, options = {}) {
|
|
185
|
-
const built = buildConsentClaimsSimple(input, options);
|
|
186
|
-
const assigned = assignCidToClaimsId(built.consentClaims);
|
|
187
|
-
return {
|
|
188
|
-
actorIdentifier: built.actorIdentifier,
|
|
189
|
-
subjectIdentifier: built.subjectIdentifier,
|
|
190
|
-
consentClaims: assigned.claims,
|
|
191
|
-
claimsCid: assigned.cid,
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
function normalizeJurisdiction(value) {
|
|
195
|
-
const trimmed = String(value || '').trim();
|
|
196
|
-
if (!trimmed)
|
|
197
|
-
return '';
|
|
198
|
-
if (/^[A-Z]{2}$/i.test(trimmed))
|
|
199
|
-
return trimmed.toUpperCase();
|
|
200
|
-
const isoStd = trimmed.match(/^urn:iso:std:iso:3166\|([a-z]{2})$/i);
|
|
201
|
-
if (isoStd)
|
|
202
|
-
return isoStd[1].toUpperCase();
|
|
203
|
-
const iso = trimmed.match(/^urn:iso:3166(?:-2)?:([a-z]{2})(?:[-:].*)?$/i);
|
|
204
|
-
if (iso)
|
|
205
|
-
return iso[1].toUpperCase();
|
|
206
|
-
return trimmed.toUpperCase();
|
|
207
|
-
}
|
|
208
|
-
function normalizeDidWebFromUrl(value) {
|
|
209
|
-
const raw = String(value || '').trim();
|
|
210
|
-
if (!raw)
|
|
211
|
-
return undefined;
|
|
212
|
-
if (raw.startsWith('did:web:'))
|
|
213
|
-
return raw.toLowerCase();
|
|
214
|
-
try {
|
|
215
|
-
const parsed = raw.includes('://') ? new URL(raw) : new URL(`https://${raw}`);
|
|
216
|
-
return parsed.hostname ? `did:web:${parsed.hostname.toLowerCase()}` : undefined;
|
|
217
|
-
}
|
|
218
|
-
catch {
|
|
219
|
-
return undefined;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
function normalizeConsentRoleValue(value) {
|
|
223
|
-
const trimmed = String(value || '').trim();
|
|
224
|
-
if (!trimmed || trimmed === '*')
|
|
225
|
-
return trimmed;
|
|
226
|
-
const [system, code] = trimmed.includes('|') ? trimmed.split('|', 2) : ['', trimmed];
|
|
227
|
-
return system
|
|
228
|
-
? `${system.trim().toLowerCase()}|${code.trim()}`
|
|
229
|
-
: trimmed.toLowerCase();
|
|
230
|
-
}
|
|
231
|
-
function splitCsv(value) {
|
|
232
|
-
return String(value || '')
|
|
233
|
-
.split(',')
|
|
234
|
-
.map((item) => item.trim())
|
|
235
|
-
.filter(Boolean);
|
|
236
|
-
}
|
|
237
|
-
function normalizeSectionToken(value) {
|
|
238
|
-
const trimmed = String(value || '').trim();
|
|
239
|
-
if (!trimmed || !trimmed.includes('|'))
|
|
240
|
-
return trimmed;
|
|
241
|
-
const [system, code] = trimmed.split('|', 2);
|
|
242
|
-
const normalizedSystem = system
|
|
243
|
-
.trim()
|
|
244
|
-
.toLowerCase()
|
|
245
|
-
.replace(/^https?:\/\/loinc\.org$/i, 'loinc')
|
|
246
|
-
.replace(/^urn:oid:2\.16\.840\.1\.113883\.6\.1$/i, 'loinc');
|
|
247
|
-
return `${normalizedSystem}|${code.trim()}`;
|
|
248
|
-
}
|
|
249
|
-
function uniqueTargets(targets) {
|
|
250
|
-
const seen = new Set();
|
|
251
|
-
const result = [];
|
|
252
|
-
for (const target of targets) {
|
|
253
|
-
const key = `${target.kind}:${target.canonicalValue}:${target.isDirectTarget ? 'd' : ''}${target.isOrganizationTarget ? 'o' : ''}${target.isJurisdictionTarget ? 'j' : ''}`;
|
|
254
|
-
if (seen.has(key))
|
|
255
|
-
continue;
|
|
256
|
-
seen.add(key);
|
|
257
|
-
result.push(target);
|
|
258
|
-
}
|
|
259
|
-
return result;
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Normalizes a consent target token into a reusable matching descriptor.
|
|
263
|
-
*
|
|
264
|
-
* The helper keeps the current GW contract:
|
|
265
|
-
* - the first precedence tier is intended for concrete professional email matches
|
|
266
|
-
* - direct runtime selectors may still include email / `did:web` / phone
|
|
267
|
-
* - organization targets are normalized to `did:web:<host>`
|
|
268
|
-
* - jurisdictions resolve to ISO-like uppercase codes
|
|
269
|
-
* - phone targets stay marked as extension-specific
|
|
270
|
-
*
|
|
271
|
-
* @param input Raw target input from a rule or runtime request.
|
|
272
|
-
* @param options.actorKind Optional actor family hint.
|
|
273
|
-
* @param options.preferOrganizationDid When true, base `did:web:<host>` values are treated as organization targets.
|
|
274
|
-
*/
|
|
275
|
-
export function normalizeConsentTarget(input, options = {}) {
|
|
276
|
-
const raw = String(input || '').trim();
|
|
277
|
-
const parsed = parseConsentActorToken(raw);
|
|
278
|
-
if (parsed?.kind === 'email') {
|
|
279
|
-
return {
|
|
280
|
-
raw,
|
|
281
|
-
kind: 'email',
|
|
282
|
-
canonicalValue: parsed.value,
|
|
283
|
-
isDirectTarget: true,
|
|
284
|
-
isOrganizationTarget: false,
|
|
285
|
-
isJurisdictionTarget: false,
|
|
286
|
-
isPhoneExtension: false,
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
if (parsed?.kind === 'phone') {
|
|
290
|
-
return {
|
|
291
|
-
raw,
|
|
292
|
-
kind: 'phone',
|
|
293
|
-
canonicalValue: parsed.value,
|
|
294
|
-
isDirectTarget: true,
|
|
295
|
-
isOrganizationTarget: false,
|
|
296
|
-
isJurisdictionTarget: false,
|
|
297
|
-
isPhoneExtension: true,
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
if (parsed?.kind === 'country') {
|
|
301
|
-
return {
|
|
302
|
-
raw,
|
|
303
|
-
kind: 'jurisdiction',
|
|
304
|
-
canonicalValue: parsed.value,
|
|
305
|
-
isDirectTarget: false,
|
|
306
|
-
isOrganizationTarget: false,
|
|
307
|
-
isJurisdictionTarget: true,
|
|
308
|
-
isPhoneExtension: false,
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
const organizationDid = normalizeDidWebFromUrl(raw);
|
|
312
|
-
const isEmployeeLikeDid = /^did:web:[^:\s]+:(employee|family|relatedperson|related-person):/i.test(raw);
|
|
313
|
-
if (raw.startsWith('did:')) {
|
|
314
|
-
const preferOrganizationDid = Boolean(options.preferOrganizationDid && !isEmployeeLikeDid);
|
|
315
|
-
return {
|
|
316
|
-
raw,
|
|
317
|
-
kind: preferOrganizationDid ? 'organization' : 'did',
|
|
318
|
-
canonicalValue: raw.toLowerCase(),
|
|
319
|
-
isDirectTarget: !preferOrganizationDid,
|
|
320
|
-
isOrganizationTarget: preferOrganizationDid,
|
|
321
|
-
isJurisdictionTarget: false,
|
|
322
|
-
isPhoneExtension: false,
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
if (organizationDid) {
|
|
326
|
-
return {
|
|
327
|
-
raw,
|
|
328
|
-
kind: 'organization',
|
|
329
|
-
canonicalValue: organizationDid,
|
|
330
|
-
isDirectTarget: false,
|
|
331
|
-
isOrganizationTarget: true,
|
|
332
|
-
isJurisdictionTarget: false,
|
|
333
|
-
isPhoneExtension: false,
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
const jurisdiction = normalizeJurisdiction(raw);
|
|
337
|
-
if (/^[A-Z]{2}$/.test(jurisdiction)) {
|
|
338
|
-
return {
|
|
339
|
-
raw,
|
|
340
|
-
kind: 'jurisdiction',
|
|
341
|
-
canonicalValue: jurisdiction,
|
|
342
|
-
isDirectTarget: false,
|
|
343
|
-
isOrganizationTarget: false,
|
|
344
|
-
isJurisdictionTarget: true,
|
|
345
|
-
isPhoneExtension: false,
|
|
346
|
-
};
|
|
347
|
-
}
|
|
348
|
-
return {
|
|
349
|
-
raw,
|
|
350
|
-
kind: 'unknown',
|
|
351
|
-
canonicalValue: raw,
|
|
352
|
-
isDirectTarget: false,
|
|
353
|
-
isOrganizationTarget: false,
|
|
354
|
-
isJurisdictionTarget: false,
|
|
355
|
-
isPhoneExtension: false,
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Resolves all actor match targets used by consent evaluation.
|
|
360
|
-
*
|
|
361
|
-
* Organization matching prefers explicit `organizationDid` / `organizationUrl`.
|
|
362
|
-
* When those are absent but an email exists, the email domain is exposed as a
|
|
363
|
-
* fallback organization target through `did:web:<domain>`.
|
|
364
|
-
*
|
|
365
|
-
* @param actor Runtime actor descriptor.
|
|
366
|
-
*/
|
|
367
|
-
export function resolveConsentActor(actor) {
|
|
368
|
-
const actorKind = actor.actorKind || 'professional';
|
|
369
|
-
const directTargets = [];
|
|
370
|
-
const organizationTargets = [];
|
|
371
|
-
const jurisdictionTargets = [];
|
|
372
|
-
const phoneTargets = [];
|
|
373
|
-
const email = String(actor.email || '').trim();
|
|
374
|
-
if (email) {
|
|
375
|
-
const direct = normalizeConsentTarget(email, { actorKind });
|
|
376
|
-
directTargets.push(direct);
|
|
377
|
-
const domain = email.includes('@') ? email.split('@')[1] : '';
|
|
378
|
-
const fallbackOrganizationDid = normalizeDidWebFromUrl(domain);
|
|
379
|
-
if (fallbackOrganizationDid) {
|
|
380
|
-
organizationTargets.push(normalizeConsentTarget(fallbackOrganizationDid, {
|
|
381
|
-
actorKind,
|
|
382
|
-
preferOrganizationDid: true,
|
|
383
|
-
}));
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
const did = String(actor.did || '').trim();
|
|
387
|
-
if (did) {
|
|
388
|
-
directTargets.push(normalizeConsentTarget(did, { actorKind }));
|
|
389
|
-
const baseOrgDid = did.startsWith('did:web:') ? `did:web:${did.slice('did:web:'.length).split(':')[0]}` : '';
|
|
390
|
-
if (baseOrgDid) {
|
|
391
|
-
organizationTargets.push(normalizeConsentTarget(baseOrgDid, {
|
|
392
|
-
actorKind,
|
|
393
|
-
preferOrganizationDid: true,
|
|
394
|
-
}));
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
const phone = normalizePhone(String(actor.phone || ''));
|
|
398
|
-
if (phone) {
|
|
399
|
-
const phoneTarget = normalizeConsentTarget(`tel:${phone}`, { actorKind });
|
|
400
|
-
directTargets.push(phoneTarget);
|
|
401
|
-
phoneTargets.push(phoneTarget);
|
|
402
|
-
}
|
|
403
|
-
const orgDid = String(actor.organizationDid || '').trim();
|
|
404
|
-
if (orgDid) {
|
|
405
|
-
organizationTargets.push(normalizeConsentTarget(orgDid, {
|
|
406
|
-
actorKind,
|
|
407
|
-
preferOrganizationDid: true,
|
|
408
|
-
}));
|
|
409
|
-
}
|
|
410
|
-
const orgUrl = String(actor.organizationUrl || '').trim();
|
|
411
|
-
if (orgUrl) {
|
|
412
|
-
const normalized = normalizeDidWebFromUrl(orgUrl);
|
|
413
|
-
if (normalized) {
|
|
414
|
-
organizationTargets.push(normalizeConsentTarget(normalized, {
|
|
415
|
-
actorKind,
|
|
416
|
-
preferOrganizationDid: true,
|
|
417
|
-
}));
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
const jurisdiction = normalizeJurisdiction(String(actor.jurisdiction || ''));
|
|
421
|
-
if (jurisdiction) {
|
|
422
|
-
jurisdictionTargets.push(normalizeConsentTarget(jurisdiction, { actorKind }));
|
|
423
|
-
}
|
|
424
|
-
return {
|
|
425
|
-
actorKind,
|
|
426
|
-
directTargets: uniqueTargets(directTargets),
|
|
427
|
-
organizationTargets: uniqueTargets(organizationTargets),
|
|
428
|
-
jurisdictionTargets: uniqueTargets(jurisdictionTargets),
|
|
429
|
-
phoneTargets: uniqueTargets(phoneTargets),
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
/**
|
|
433
|
-
* Returns `true` when a consent rule is currently active.
|
|
434
|
-
*
|
|
435
|
-
* A rule is active when:
|
|
436
|
-
* - it matches the requested subject when one is provided
|
|
437
|
-
* - `Consent.period-start` is absent or already effective
|
|
438
|
-
* - `Consent.period-end` is absent or still in the future
|
|
439
|
-
*
|
|
440
|
-
* @param rule Consent rule to inspect.
|
|
441
|
-
* @param options.subject Optional subject filter.
|
|
442
|
-
* @param options.now Optional evaluation timestamp.
|
|
443
|
-
*/
|
|
444
|
-
export function isConsentRuleActive(rule, options = {}) {
|
|
445
|
-
if (options.subject && String(rule[ClaimConsent.subject] || '').trim() !== String(options.subject || '').trim()) {
|
|
446
|
-
return false;
|
|
447
|
-
}
|
|
448
|
-
const now = options.now instanceof Date
|
|
449
|
-
? options.now.getTime()
|
|
450
|
-
: options.now
|
|
451
|
-
? new Date(options.now).getTime()
|
|
452
|
-
: Date.now();
|
|
453
|
-
const periodStart = String(rule[ClaimConsent.periodStart] || '').trim();
|
|
454
|
-
const periodEnd = String(rule[ClaimConsent.periodEnd] || '').trim();
|
|
455
|
-
if (periodStart && !Number.isNaN(Date.parse(periodStart)) && Date.parse(periodStart) > now)
|
|
456
|
-
return false;
|
|
457
|
-
if (periodEnd && !Number.isNaN(Date.parse(periodEnd)) && Date.parse(periodEnd) < now)
|
|
458
|
-
return false;
|
|
459
|
-
return true;
|
|
460
|
-
}
|
|
461
|
-
function groupRulesBy(rules, predicate) {
|
|
462
|
-
var _a;
|
|
463
|
-
const groups = {};
|
|
464
|
-
for (const rule of rules) {
|
|
465
|
-
for (const token of splitCsv(rule[ClaimConsent.actorIdentifier])) {
|
|
466
|
-
const normalized = normalizeConsentTarget(token, { preferOrganizationDid: true });
|
|
467
|
-
if (!predicate(normalized))
|
|
468
|
-
continue;
|
|
469
|
-
groups[_a = normalized.canonicalValue] || (groups[_a] = []);
|
|
470
|
-
groups[normalized.canonicalValue].push(rule);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
return groups;
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Builds an aggregated active-consent view grouped by target kind.
|
|
477
|
-
*
|
|
478
|
-
* @param rules Full consent-rule set available for the subject.
|
|
479
|
-
* @param options.subject Optional subject filter.
|
|
480
|
-
* @param options.now Optional evaluation timestamp.
|
|
481
|
-
*/
|
|
482
|
-
export function groupActiveConsentsByTarget(rules, options = {}) {
|
|
483
|
-
const activeRules = rules.filter((rule) => isConsentRuleActive(rule, options));
|
|
484
|
-
return {
|
|
485
|
-
activeRules,
|
|
486
|
-
byDirectTarget: groupRulesBy(activeRules, (target) => target.isDirectTarget && !target.isPhoneExtension),
|
|
487
|
-
byOrganizationTarget: groupRulesBy(activeRules, (target) => target.isOrganizationTarget),
|
|
488
|
-
byJurisdictionTarget: groupRulesBy(activeRules, (target) => target.isJurisdictionTarget),
|
|
489
|
-
byPhoneTarget: groupRulesBy(activeRules, (target) => target.isPhoneExtension),
|
|
490
|
-
};
|
|
491
|
-
}
|
|
492
|
-
function normalizeRequestedList(values, wildcard = '*') {
|
|
493
|
-
const normalized = (values || []).map((value) => String(value || '').trim()).filter(Boolean);
|
|
494
|
-
return normalized.length ? Array.from(new Set(normalized)) : [wildcard];
|
|
495
|
-
}
|
|
496
|
-
function extractRuleResourceTypes(rule) {
|
|
497
|
-
const candidates = [
|
|
498
|
-
rule[ClaimConsent.resourceType],
|
|
499
|
-
rule['Consent.resource-type'],
|
|
500
|
-
rule['Consent.resource'],
|
|
501
|
-
rule['Consent.data-type'],
|
|
502
|
-
];
|
|
503
|
-
for (const candidate of candidates) {
|
|
504
|
-
const values = splitCsv(candidate);
|
|
505
|
-
if (values.length > 0)
|
|
506
|
-
return values;
|
|
507
|
-
}
|
|
508
|
-
return [];
|
|
509
|
-
}
|
|
510
|
-
function ruleMatchesRole(rule, actorRole) {
|
|
511
|
-
const ruleRoles = splitCsv(rule[ClaimConsent.actorRole]).map(normalizeConsentRoleValue).filter(Boolean);
|
|
512
|
-
if (ruleRoles.length === 0 || ruleRoles.includes('*'))
|
|
513
|
-
return true;
|
|
514
|
-
const requestedRole = normalizeConsentRoleValue(String(actorRole || ''));
|
|
515
|
-
return !!requestedRole && ruleRoles.includes(requestedRole);
|
|
516
|
-
}
|
|
517
|
-
function ruleMatchesPurpose(rule, purpose) {
|
|
518
|
-
const rulePurpose = String(rule[ClaimConsent.purpose] || '').trim();
|
|
519
|
-
if (!purpose || !rulePurpose)
|
|
520
|
-
return true;
|
|
521
|
-
return rulePurpose === purpose;
|
|
522
|
-
}
|
|
523
|
-
function ruleMatchesSection(rule, section) {
|
|
524
|
-
if (!section || section === '*')
|
|
525
|
-
return true;
|
|
526
|
-
const requestedSection = normalizeSectionToken(section);
|
|
527
|
-
const actions = splitCsv(rule[ClaimConsent.action]).map(normalizeSectionToken);
|
|
528
|
-
if (actions.length === 0)
|
|
529
|
-
return false;
|
|
530
|
-
return actions.includes(requestedSection) || actions.includes('*');
|
|
531
|
-
}
|
|
532
|
-
function ruleMatchesResourceType(rule, resourceType) {
|
|
533
|
-
if (!resourceType || resourceType === '*')
|
|
534
|
-
return true;
|
|
535
|
-
const resourceTypes = extractRuleResourceTypes(rule);
|
|
536
|
-
if (resourceTypes.length === 0)
|
|
537
|
-
return true;
|
|
538
|
-
return resourceTypes.includes(resourceType) || resourceTypes.includes('*');
|
|
539
|
-
}
|
|
540
|
-
function resolveRuleMatch(rule, actor) {
|
|
541
|
-
for (const token of splitCsv(rule[ClaimConsent.actorIdentifier])) {
|
|
542
|
-
const normalized = normalizeConsentTarget(token, { preferOrganizationDid: true });
|
|
543
|
-
if (actor.directTargets.some((target) => target.canonicalValue === normalized.canonicalValue)) {
|
|
544
|
-
return { matchKind: 'direct', target: normalized, precedenceBase: 10 };
|
|
545
|
-
}
|
|
546
|
-
if (actor.organizationTargets.some((target) => target.canonicalValue === normalized.canonicalValue)) {
|
|
547
|
-
return { matchKind: 'organization', target: normalized, precedenceBase: 20 };
|
|
548
|
-
}
|
|
549
|
-
if (actor.jurisdictionTargets.some((target) => target.canonicalValue === normalized.canonicalValue)) {
|
|
550
|
-
return { matchKind: 'jurisdiction', target: normalized, precedenceBase: 30 };
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
return { matchKind: 'none' };
|
|
554
|
-
}
|
|
555
|
-
function toRuleMatch(rule, actor, section, resourceType) {
|
|
556
|
-
const resolved = resolveRuleMatch(rule, actor);
|
|
557
|
-
if (!resolved.target || resolved.matchKind === 'none' || resolved.precedenceBase === undefined)
|
|
558
|
-
return undefined;
|
|
559
|
-
const decision = rule[ClaimConsent.decision];
|
|
560
|
-
const precedence = resolved.precedenceBase + (decision === 'deny' ? 0 : 1);
|
|
561
|
-
return {
|
|
562
|
-
rule,
|
|
563
|
-
ruleId: String((rule.id) || '').trim() || undefined,
|
|
564
|
-
decision,
|
|
565
|
-
matchKind: resolved.matchKind,
|
|
566
|
-
target: resolved.target,
|
|
567
|
-
precedence,
|
|
568
|
-
section: section === '*' ? undefined : section,
|
|
569
|
-
resourceType: resourceType === '*' ? undefined : resourceType,
|
|
570
|
-
};
|
|
571
|
-
}
|
|
572
|
-
function emptyMissing() {
|
|
573
|
-
return { sections: [], resourceTypes: [], pairs: [] };
|
|
574
|
-
}
|
|
575
|
-
/**
|
|
576
|
-
* Evaluates effective consent coverage for a runtime access request.
|
|
577
|
-
*
|
|
578
|
-
* Precedence implemented by the shared evaluator:
|
|
579
|
-
* 1. explicit deny for a concrete email
|
|
580
|
-
* 2. explicit permit for a concrete email
|
|
581
|
-
* 3. organization-scoped decisions
|
|
582
|
-
* 4. jurisdiction-scoped decisions
|
|
583
|
-
* 5. default deny
|
|
584
|
-
*
|
|
585
|
-
* Resource-type evaluation is optional: when a rule does not carry an explicit
|
|
586
|
-
* resource-type filter, it is treated as section-scoped wildcard coverage.
|
|
587
|
-
*
|
|
588
|
-
* @param rules Full consent-rule set available to the caller.
|
|
589
|
-
* @param request Runtime request to evaluate.
|
|
590
|
-
*/
|
|
591
|
-
export function evaluateConsentCoverage(rules, request) {
|
|
592
|
-
const actor = resolveConsentActor(request.actor);
|
|
593
|
-
const sections = normalizeRequestedList(request.sections);
|
|
594
|
-
const resourceTypes = normalizeRequestedList(request.resourceTypes);
|
|
595
|
-
const activeRules = rules.filter((rule) => isConsentRuleActive(rule, {
|
|
596
|
-
subject: request.subject,
|
|
597
|
-
now: request.now,
|
|
598
|
-
}));
|
|
599
|
-
const matchedRules = [];
|
|
600
|
-
const winningRules = [];
|
|
601
|
-
const explicitDenials = [];
|
|
602
|
-
const allowedSections = new Set();
|
|
603
|
-
const deniedSections = new Set();
|
|
604
|
-
const allowedResourceTypes = new Set();
|
|
605
|
-
const deniedResourceTypes = new Set();
|
|
606
|
-
const missing = emptyMissing();
|
|
607
|
-
for (const section of sections) {
|
|
608
|
-
for (const resourceType of resourceTypes) {
|
|
609
|
-
const candidates = activeRules
|
|
610
|
-
.filter((rule) => ruleMatchesRole(rule, request.actorRole)
|
|
611
|
-
&& ruleMatchesPurpose(rule, request.purpose)
|
|
612
|
-
&& ruleMatchesSection(rule, section)
|
|
613
|
-
&& ruleMatchesResourceType(rule, resourceType))
|
|
614
|
-
.map((rule) => toRuleMatch(rule, actor, section, resourceType))
|
|
615
|
-
.filter((match) => Boolean(match))
|
|
616
|
-
.sort((a, b) => a.precedence - b.precedence);
|
|
617
|
-
matchedRules.push(...candidates);
|
|
618
|
-
const winner = candidates[0];
|
|
619
|
-
if (!winner) {
|
|
620
|
-
missing.pairs.push({
|
|
621
|
-
section: section === '*' ? undefined : section,
|
|
622
|
-
resourceType: resourceType === '*' ? undefined : resourceType,
|
|
623
|
-
reason: 'default-deny-no-active-consent',
|
|
624
|
-
});
|
|
625
|
-
if (section !== '*')
|
|
626
|
-
missing.sections.push(section);
|
|
627
|
-
if (resourceType !== '*')
|
|
628
|
-
missing.resourceTypes.push(resourceType);
|
|
629
|
-
if (section !== '*')
|
|
630
|
-
deniedSections.add(section);
|
|
631
|
-
if (resourceType !== '*')
|
|
632
|
-
deniedResourceTypes.add(resourceType);
|
|
633
|
-
continue;
|
|
634
|
-
}
|
|
635
|
-
winningRules.push(winner);
|
|
636
|
-
if (winner.decision === 'deny') {
|
|
637
|
-
explicitDenials.push(winner);
|
|
638
|
-
if (section !== '*')
|
|
639
|
-
deniedSections.add(section);
|
|
640
|
-
if (resourceType !== '*')
|
|
641
|
-
deniedResourceTypes.add(resourceType);
|
|
642
|
-
missing.pairs.push({
|
|
643
|
-
section: section === '*' ? undefined : section,
|
|
644
|
-
resourceType: resourceType === '*' ? undefined : resourceType,
|
|
645
|
-
reason: `explicit-${winner.matchKind}-deny`,
|
|
646
|
-
});
|
|
647
|
-
if (section !== '*')
|
|
648
|
-
missing.sections.push(section);
|
|
649
|
-
if (resourceType !== '*')
|
|
650
|
-
missing.resourceTypes.push(resourceType);
|
|
651
|
-
}
|
|
652
|
-
else {
|
|
653
|
-
if (section !== '*')
|
|
654
|
-
allowedSections.add(section);
|
|
655
|
-
if (resourceType !== '*')
|
|
656
|
-
allowedResourceTypes.add(resourceType);
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
return {
|
|
661
|
-
allowed: missing.pairs.length === 0,
|
|
662
|
-
denied: missing.pairs.length > 0 && allowedSections.size === 0 && allowedResourceTypes.size === 0,
|
|
663
|
-
partial: missing.pairs.length > 0 && (allowedSections.size > 0 || allowedResourceTypes.size > 0),
|
|
664
|
-
subject: request.subject,
|
|
665
|
-
actor,
|
|
666
|
-
matchedRules,
|
|
667
|
-
winningRules,
|
|
668
|
-
explicitDenials,
|
|
669
|
-
allowedSections: Array.from(allowedSections),
|
|
670
|
-
deniedSections: Array.from(deniedSections),
|
|
671
|
-
allowedResourceTypes: Array.from(allowedResourceTypes),
|
|
672
|
-
deniedResourceTypes: Array.from(deniedResourceTypes),
|
|
673
|
-
missing: {
|
|
674
|
-
sections: Array.from(new Set(missing.sections)),
|
|
675
|
-
resourceTypes: Array.from(new Set(missing.resourceTypes)),
|
|
676
|
-
pairs: missing.pairs,
|
|
677
|
-
},
|
|
678
|
-
};
|
|
679
|
-
}
|