@icanbwell/bwell-sdk-ts 0.1.2 → 0.2.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/README.md +15 -4
- package/dist/__version__.d.ts +4 -0
- package/dist/__version__.js +5 -0
- package/dist/__version__.js.map +1 -0
- package/dist/api/api-provider-factory.d.ts +7 -0
- package/dist/api/api-provider-factory.js +9 -0
- package/dist/api/api-provider-factory.js.map +1 -0
- package/dist/api/base/activity/activity-manager.d.ts +31 -0
- package/dist/api/base/activity/activity-manager.js +2 -0
- package/dist/api/base/activity/activity-manager.js.map +1 -0
- package/dist/api/base/activity/get-tasks-request.d.ts +49 -0
- package/dist/api/base/activity/get-tasks-request.js +36 -0
- package/dist/api/base/activity/get-tasks-request.js.map +1 -0
- package/dist/api/base/activity/index.d.ts +4 -0
- package/dist/api/base/activity/index.js +3 -0
- package/dist/api/base/activity/index.js.map +1 -0
- package/dist/api/base/activity/types.d.ts +3 -0
- package/dist/api/base/activity/types.js +6 -0
- package/dist/api/base/activity/types.js.map +1 -0
- package/dist/api/base/activity/update-task-status-request.d.ts +18 -0
- package/dist/api/base/activity/update-task-status-request.js +16 -0
- package/dist/api/base/activity/update-task-status-request.js.map +1 -0
- package/dist/api/base/api-provider.d.ts +16 -0
- package/dist/api/base/api-provider.js +2 -0
- package/dist/api/base/api-provider.js.map +1 -0
- package/dist/api/base/connection/connection-manager.d.ts +60 -0
- package/dist/api/base/connection/connection-manager.js +2 -0
- package/dist/api/base/connection/connection-manager.js.map +1 -0
- package/dist/api/base/connection/connection-request.d.ts +56 -0
- package/dist/api/base/connection/connection-request.js +71 -0
- package/dist/api/base/connection/connection-request.js.map +1 -0
- package/dist/api/base/connection/index.d.ts +2 -0
- package/dist/api/base/connection/index.js +3 -0
- package/dist/api/base/connection/index.js.map +1 -0
- package/dist/api/base/device/device-manager.d.ts +22 -0
- package/dist/api/base/device/device-manager.js +6 -0
- package/dist/api/base/device/device-manager.js.map +1 -0
- package/dist/api/base/device/device-request.d.ts +62 -0
- package/dist/api/base/device/device-request.js +72 -0
- package/dist/api/base/device/device-request.js.map +1 -0
- package/dist/api/base/device/index.d.ts +2 -0
- package/dist/api/base/device/index.js +2 -0
- package/dist/api/base/device/index.js.map +1 -0
- package/dist/api/base/errors.d.ts +2 -0
- package/dist/api/base/errors.js +2 -0
- package/dist/api/base/errors.js.map +1 -0
- package/dist/api/base/event/event-manager.d.ts +13 -0
- package/dist/api/base/event/event-manager.js +2 -0
- package/dist/api/base/event/event-manager.js.map +1 -0
- package/dist/api/base/event/event-request.d.ts +35 -0
- package/dist/api/base/event/event-request.js +65 -0
- package/dist/api/base/event/event-request.js.map +1 -0
- package/dist/api/base/event/index.d.ts +2 -0
- package/dist/api/base/event/index.js +2 -0
- package/dist/api/base/event/index.js.map +1 -0
- package/dist/api/base/health-data/health-data-request.d.ts +116 -0
- package/dist/api/base/health-data/health-data-request.js +134 -0
- package/dist/api/base/health-data/health-data-request.js.map +1 -0
- package/dist/api/base/health-data/health-manager.d.ts +201 -0
- package/dist/api/base/health-data/health-manager.js +2 -0
- package/dist/api/base/health-data/health-manager.js.map +1 -0
- package/dist/api/base/health-data/index.d.ts +4 -0
- package/dist/api/base/health-data/index.js +4 -0
- package/dist/api/base/health-data/index.js.map +1 -0
- package/dist/api/base/health-data/lab-knowledge-request.d.ts +21 -0
- package/dist/api/base/health-data/lab-knowledge-request.js +28 -0
- package/dist/api/base/health-data/lab-knowledge-request.js.map +1 -0
- package/dist/api/base/health-data/medication-knowledge-request.d.ts +21 -0
- package/dist/api/base/health-data/medication-knowledge-request.js +28 -0
- package/dist/api/base/health-data/medication-knowledge-request.js.map +1 -0
- package/dist/api/base/identity/identity-manager.d.ts +23 -0
- package/dist/api/base/identity/identity-manager.js +2 -0
- package/dist/api/base/identity/identity-manager.js.map +1 -0
- package/dist/api/base/identity/index.d.ts +1 -0
- package/dist/api/base/identity/index.js +2 -0
- package/dist/api/base/identity/index.js.map +1 -0
- package/dist/api/base/index.d.ts +8 -0
- package/dist/api/base/index.js +9 -0
- package/dist/api/base/index.js.map +1 -0
- package/dist/api/base/requests/index.d.ts +2 -0
- package/dist/api/base/requests/index.js +2 -0
- package/dist/api/base/requests/index.js.map +1 -0
- package/dist/api/base/requests/search-date-validation-cases.d.ts +167 -0
- package/dist/api/base/requests/search-date-validation-cases.js +249 -0
- package/dist/api/base/requests/search-date-validation-cases.js.map +1 -0
- package/dist/api/base/requests/search-date.d.ts +27 -0
- package/dist/api/base/requests/search-date.js +117 -0
- package/dist/api/base/requests/search-date.js.map +1 -0
- package/dist/api/base/requests/search-token.d.ts +26 -0
- package/dist/api/base/requests/search-token.js +46 -0
- package/dist/api/base/requests/search-token.js.map +1 -0
- package/dist/api/base/search/index.d.ts +3 -0
- package/dist/api/base/search/index.js +3 -0
- package/dist/api/base/search/index.js.map +1 -0
- package/dist/api/base/search/request-connection-request.d.ts +24 -0
- package/dist/api/base/search/request-connection-request.js +4 -0
- package/dist/api/base/search/request-connection-request.js.map +1 -0
- package/dist/api/base/search/search-manager.d.ts +41 -0
- package/dist/api/base/search/search-manager.js +2 -0
- package/dist/api/base/search/search-manager.js.map +1 -0
- package/dist/api/base/search/search-request.d.ts +84 -0
- package/dist/api/base/search/search-request.js +79 -0
- package/dist/api/base/search/search-request.js.map +1 -0
- package/dist/api/base/user/create-consent-request.d.ts +14 -0
- package/dist/api/base/user/create-consent-request.js +33 -0
- package/dist/api/base/user/create-consent-request.js.map +1 -0
- package/dist/api/base/user/get-consents-request.d.ts +15 -0
- package/dist/api/base/user/get-consents-request.js +16 -0
- package/dist/api/base/user/get-consents-request.js.map +1 -0
- package/dist/api/base/user/index.d.ts +5 -0
- package/dist/api/base/user/index.js +4 -0
- package/dist/api/base/user/index.js.map +1 -0
- package/dist/api/base/user/types.d.ts +9 -0
- package/dist/api/base/user/types.js +18 -0
- package/dist/api/base/user/types.js.map +1 -0
- package/dist/api/base/user/update-profile-request.d.ts +28 -0
- package/dist/api/base/user/update-profile-request.js +21 -0
- package/dist/api/base/user/update-profile-request.js.map +1 -0
- package/dist/api/base/user/user-manager.d.ts +46 -0
- package/dist/api/base/user/user-manager.js +2 -0
- package/dist/api/base/user/user-manager.js.map +1 -0
- package/dist/api/graphql-api/activity/activity-request-factories.d.ts +13 -0
- package/dist/api/graphql-api/activity/activity-request-factories.js +67 -0
- package/dist/api/graphql-api/activity/activity-request-factories.js.map +1 -0
- package/dist/api/graphql-api/activity/graphql-activity-manager.d.ts +14 -0
- package/dist/api/graphql-api/activity/graphql-activity-manager.js +73 -0
- package/dist/api/graphql-api/activity/graphql-activity-manager.js.map +1 -0
- package/dist/api/graphql-api/activity/index.d.ts +1 -0
- package/dist/api/graphql-api/activity/index.js +2 -0
- package/dist/api/graphql-api/activity/index.js.map +1 -0
- package/dist/api/graphql-api/connection/graphql-connection-manager.d.ts +18 -0
- package/dist/api/graphql-api/connection/graphql-connection-manager.js +142 -0
- package/dist/api/graphql-api/connection/graphql-connection-manager.js.map +1 -0
- package/dist/api/graphql-api/connection/graphql-get-member-connections-bwell-response-factory.d.ts +18 -0
- package/dist/api/graphql-api/connection/graphql-get-member-connections-bwell-response-factory.js +41 -0
- package/dist/api/graphql-api/connection/graphql-get-member-connections-bwell-response-factory.js.map +1 -0
- package/dist/api/graphql-api/connection/index.d.ts +2 -0
- package/dist/api/graphql-api/connection/index.js +3 -0
- package/dist/api/graphql-api/connection/index.js.map +1 -0
- package/dist/api/graphql-api/device/device-request-factory.d.ts +9 -0
- package/dist/api/graphql-api/device/device-request-factory.js +16 -0
- package/dist/api/graphql-api/device/device-request-factory.js.map +1 -0
- package/dist/api/graphql-api/device/graphql-device-manager.d.ts +13 -0
- package/dist/api/graphql-api/device/graphql-device-manager.js +74 -0
- package/dist/api/graphql-api/device/graphql-device-manager.js.map +1 -0
- package/dist/api/graphql-api/device/index.d.ts +1 -0
- package/dist/api/graphql-api/device/index.js +2 -0
- package/dist/api/graphql-api/device/index.js.map +1 -0
- package/dist/api/graphql-api/errors/errors.d.ts +38 -0
- package/dist/api/graphql-api/errors/errors.js +95 -0
- package/dist/api/graphql-api/errors/errors.js.map +1 -0
- package/dist/api/graphql-api/errors/index.d.ts +1 -0
- package/dist/api/graphql-api/errors/index.js +2 -0
- package/dist/api/graphql-api/errors/index.js.map +1 -0
- package/dist/api/graphql-api/event/event-request-factory.d.ts +6 -0
- package/dist/api/graphql-api/event/event-request-factory.js +12 -0
- package/dist/api/graphql-api/event/event-request-factory.js.map +1 -0
- package/dist/api/graphql-api/event/graphql-event-manager.d.ts +15 -0
- package/dist/api/graphql-api/event/graphql-event-manager.js +66 -0
- package/dist/api/graphql-api/event/graphql-event-manager.js.map +1 -0
- package/dist/api/graphql-api/event/index.d.ts +1 -0
- package/dist/api/graphql-api/event/index.js +2 -0
- package/dist/api/graphql-api/event/index.js.map +1 -0
- package/dist/api/graphql-api/graphql-api-provider.d.ts +21 -0
- package/dist/api/graphql-api/graphql-api-provider.js +37 -0
- package/dist/api/graphql-api/graphql-api-provider.js.map +1 -0
- package/dist/api/graphql-api/graphql-manager/graphql-manager.d.ts +43 -0
- package/dist/api/graphql-api/graphql-manager/graphql-manager.js +119 -0
- package/dist/api/graphql-api/graphql-manager/graphql-manager.js.map +1 -0
- package/dist/api/graphql-api/graphql-manager/index.d.ts +1 -0
- package/dist/api/graphql-api/graphql-manager/index.js +2 -0
- package/dist/api/graphql-api/graphql-manager/index.js.map +1 -0
- package/dist/api/graphql-api/graphql-sdk/graphql-sdk.d.ts +24 -0
- package/dist/api/graphql-api/graphql-sdk/graphql-sdk.js +45 -0
- package/dist/api/graphql-api/graphql-sdk/graphql-sdk.js.map +1 -0
- package/dist/api/graphql-api/graphql-sdk/index.d.ts +1 -0
- package/dist/api/graphql-api/graphql-sdk/index.js +2 -0
- package/dist/api/graphql-api/graphql-sdk/index.js.map +1 -0
- package/dist/api/graphql-api/healthdata/graphql-health-manager.d.ts +33 -0
- package/dist/api/graphql-api/healthdata/graphql-health-manager.js +406 -0
- package/dist/api/graphql-api/healthdata/graphql-health-manager.js.map +1 -0
- package/dist/api/graphql-api/healthdata/index.d.ts +1 -0
- package/dist/api/graphql-api/healthdata/index.js +2 -0
- package/dist/api/graphql-api/healthdata/index.js.map +1 -0
- package/dist/api/graphql-api/identity/graphql-identity-manager.d.ts +13 -0
- package/dist/api/graphql-api/identity/graphql-identity-manager.js +88 -0
- package/dist/api/graphql-api/identity/graphql-identity-manager.js.map +1 -0
- package/dist/api/graphql-api/identity/index.d.ts +1 -0
- package/dist/api/graphql-api/identity/index.js +2 -0
- package/dist/api/graphql-api/identity/index.js.map +1 -0
- package/dist/api/graphql-api/index.d.ts +1 -0
- package/dist/api/graphql-api/index.js +2 -0
- package/dist/api/graphql-api/index.js.map +1 -0
- package/dist/api/graphql-api/search/connection-search-request-factory.d.ts +7 -0
- package/dist/api/graphql-api/search/connection-search-request-factory.js +22 -0
- package/dist/api/graphql-api/search/connection-search-request-factory.js.map +1 -0
- package/dist/api/graphql-api/search/graphql-search-manager.d.ts +16 -0
- package/dist/api/graphql-api/search/graphql-search-manager.js +113 -0
- package/dist/api/graphql-api/search/graphql-search-manager.js.map +1 -0
- package/dist/api/graphql-api/search/index.d.ts +1 -0
- package/dist/api/graphql-api/search/index.js +2 -0
- package/dist/api/graphql-api/search/index.js.map +1 -0
- package/dist/api/graphql-api/search/provider-search-request-factory.d.ts +7 -0
- package/dist/api/graphql-api/search/provider-search-request-factory.js +22 -0
- package/dist/api/graphql-api/search/provider-search-request-factory.js.map +1 -0
- package/dist/api/graphql-api/search/request-connection-request-factory.d.ts +6 -0
- package/dist/api/graphql-api/search/request-connection-request-factory.js +13 -0
- package/dist/api/graphql-api/search/request-connection-request-factory.js.map +1 -0
- package/dist/api/graphql-api/search/search-request-factory.d.ts +6 -0
- package/dist/api/graphql-api/search/search-request-factory.js +45 -0
- package/dist/api/graphql-api/search/search-request-factory.js.map +1 -0
- package/dist/api/graphql-api/user/create-consent-request-factory.d.ts +6 -0
- package/dist/api/graphql-api/user/create-consent-request-factory.js +40 -0
- package/dist/api/graphql-api/user/create-consent-request-factory.js.map +1 -0
- package/dist/api/graphql-api/user/get-consent-request-factory.d.ts +6 -0
- package/dist/api/graphql-api/user/get-consent-request-factory.js +9 -0
- package/dist/api/graphql-api/user/get-consent-request-factory.js.map +1 -0
- package/dist/api/graphql-api/user/graphql-user-manager.d.ts +18 -0
- package/dist/api/graphql-api/user/graphql-user-manager.js +122 -0
- package/dist/api/graphql-api/user/graphql-user-manager.js.map +1 -0
- package/dist/api/graphql-api/user/index.d.ts +1 -0
- package/dist/api/graphql-api/user/index.js +2 -0
- package/dist/api/graphql-api/user/index.js.map +1 -0
- package/dist/api/graphql-api/user/update-profile-request-factory.d.ts +7 -0
- package/dist/api/graphql-api/user/update-profile-request-factory.js +123 -0
- package/dist/api/graphql-api/user/update-profile-request-factory.js.map +1 -0
- package/dist/api/identity-manager-factory.d.ts +6 -0
- package/dist/api/identity-manager-factory.js +9 -0
- package/dist/api/identity-manager-factory.js.map +1 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -0
- package/dist/auth/auth-strategy-factory.d.ts +10 -0
- package/dist/auth/auth-strategy-factory.js +15 -0
- package/dist/auth/auth-strategy-factory.js.map +1 -0
- package/dist/auth/auth-strategy.d.ts +9 -0
- package/dist/auth/auth-strategy.js +2 -0
- package/dist/auth/auth-strategy.js.map +1 -0
- package/dist/auth/credentials.d.ts +10 -0
- package/dist/auth/credentials.js +7 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth-strategy.d.ts +11 -0
- package/dist/auth/oauth-strategy.js +52 -0
- package/dist/auth/oauth-strategy.js.map +1 -0
- package/dist/bwell-sdk/bwell-sdk.d.ts +24 -0
- package/dist/bwell-sdk/bwell-sdk.js +147 -0
- package/dist/bwell-sdk/bwell-sdk.js.map +1 -0
- package/dist/bwell-sdk/mocks.d.ts +2 -0
- package/dist/bwell-sdk/mocks.js +5 -0
- package/dist/bwell-sdk/mocks.js.map +1 -0
- package/dist/config/bwell-config.d.ts +12 -0
- package/dist/config/bwell-config.js +14 -0
- package/dist/config/bwell-config.js.map +1 -0
- package/dist/config/config-manager.d.ts +17 -0
- package/dist/config/config-manager.js +64 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/context.d.ts +6 -0
- package/dist/config/context.js +2 -0
- package/dist/config/context.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/sdk-config.d.ts +44 -0
- package/dist/config/sdk-config.js +173 -0
- package/dist/config/sdk-config.js.map +1 -0
- package/dist/errors/authentication-error.d.ts +4 -0
- package/dist/errors/authentication-error.js +8 -0
- package/dist/errors/authentication-error.js.map +1 -0
- package/dist/errors/bwell-error.d.ts +8 -0
- package/dist/errors/bwell-error.js +13 -0
- package/dist/errors/bwell-error.js.map +1 -0
- package/dist/errors/illegal-argument-error.d.ts +4 -0
- package/dist/errors/illegal-argument-error.js +8 -0
- package/dist/errors/illegal-argument-error.js.map +1 -0
- package/dist/errors/illegal-state-error.d.ts +4 -0
- package/dist/errors/illegal-state-error.js +8 -0
- package/dist/errors/illegal-state-error.js.map +1 -0
- package/dist/errors/index.d.ts +11 -0
- package/dist/errors/index.js +12 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/invalid-client-key-error.d.ts +4 -0
- package/dist/errors/invalid-client-key-error.js +8 -0
- package/dist/errors/invalid-client-key-error.js.map +1 -0
- package/dist/errors/invalid-credentials-type-error.d.ts +6 -0
- package/dist/errors/invalid-credentials-type-error.js +9 -0
- package/dist/errors/invalid-credentials-type-error.js.map +1 -0
- package/dist/errors/invalid-token-error.d.ts +4 -0
- package/dist/errors/invalid-token-error.js +8 -0
- package/dist/errors/invalid-token-error.js.map +1 -0
- package/dist/errors/network-error.d.ts +5 -0
- package/dist/errors/network-error.js +9 -0
- package/dist/errors/network-error.js.map +1 -0
- package/dist/errors/operation-outcome-error.d.ts +6 -0
- package/dist/errors/operation-outcome-error.js +9 -0
- package/dist/errors/operation-outcome-error.js.map +1 -0
- package/dist/errors/unknown-error.d.ts +5 -0
- package/dist/errors/unknown-error.js +9 -0
- package/dist/errors/unknown-error.js.map +1 -0
- package/dist/errors/validation-error.d.ts +5 -0
- package/dist/errors/validation-error.js +9 -0
- package/dist/errors/validation-error.js.map +1 -0
- package/dist/graphql/index.d.ts +17 -0
- package/dist/graphql/index.js +19 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/operations/index.d.ts +376 -0
- package/dist/graphql/operations/index.js +1946 -0
- package/dist/graphql/operations/index.js.map +1 -0
- package/dist/graphql/operations/types.d.ts +1350 -0
- package/dist/graphql/operations/types.js +17 -0
- package/dist/graphql/operations/types.js.map +1 -0
- package/dist/graphql/schema.d.ts +3542 -0
- package/dist/graphql/schema.js +273 -0
- package/dist/graphql/schema.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -0
- package/dist/logger/console/console-formatter.d.ts +9 -0
- package/dist/logger/console/console-formatter.js +20 -0
- package/dist/logger/console/console-formatter.js.map +1 -0
- package/dist/logger/console/console-logger-provider.d.ts +8 -0
- package/dist/logger/console/console-logger-provider.js +25 -0
- package/dist/logger/console/console-logger-provider.js.map +1 -0
- package/dist/logger/console/console-logger.d.ts +20 -0
- package/dist/logger/console/console-logger.js +70 -0
- package/dist/logger/console/console-logger.js.map +1 -0
- package/dist/logger/console/index.d.ts +2 -0
- package/dist/logger/console/index.js +3 -0
- package/dist/logger/console/index.js.map +1 -0
- package/dist/logger/index.d.ts +6 -0
- package/dist/logger/index.js +7 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/logger-formatter.d.ts +20 -0
- package/dist/logger/logger-formatter.js +2 -0
- package/dist/logger/logger-formatter.js.map +1 -0
- package/dist/logger/logger-provider-factory.d.ts +7 -0
- package/dist/logger/logger-provider-factory.js +32 -0
- package/dist/logger/logger-provider-factory.js.map +1 -0
- package/dist/logger/logger-provider.d.ts +7 -0
- package/dist/logger/logger-provider.js +2 -0
- package/dist/logger/logger-provider.js.map +1 -0
- package/dist/logger/logger.d.ts +56 -0
- package/dist/logger/logger.js +2 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/logger/otel/index.d.ts +2 -0
- package/dist/logger/otel/index.js +3 -0
- package/dist/logger/otel/index.js.map +1 -0
- package/dist/logger/otel/otel-logger-provider.d.ts +9 -0
- package/dist/logger/otel/otel-logger-provider.js +28 -0
- package/dist/logger/otel/otel-logger-provider.js.map +1 -0
- package/dist/logger/otel/otel-logger.d.ts +19 -0
- package/dist/logger/otel/otel-logger.js +95 -0
- package/dist/logger/otel/otel-logger.js.map +1 -0
- package/dist/logger/severity.d.ts +41 -0
- package/dist/logger/severity.js +80 -0
- package/dist/logger/severity.js.map +1 -0
- package/dist/models/coding.d.ts +5 -0
- package/dist/models/coding.js +2 -0
- package/dist/models/coding.js.map +1 -0
- package/dist/models/fhir-error.d.ts +9 -0
- package/dist/models/fhir-error.js +2 -0
- package/dist/models/fhir-error.js.map +1 -0
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.js +5 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/operation-outcome.d.ts +14 -0
- package/dist/models/operation-outcome.js +50 -0
- package/dist/models/operation-outcome.js.map +1 -0
- package/dist/models/user.d.ts +4 -0
- package/dist/models/user.js +2 -0
- package/dist/models/user.js.map +1 -0
- package/dist/requests/index.d.ts +3 -0
- package/dist/requests/index.js +4 -0
- package/dist/requests/index.js.map +1 -0
- package/dist/requests/paged-request.d.ts +28 -0
- package/dist/requests/paged-request.js +54 -0
- package/dist/requests/paged-request.js.map +1 -0
- package/dist/requests/request.d.ts +84 -0
- package/dist/requests/request.js +80 -0
- package/dist/requests/request.js.map +1 -0
- package/dist/requests/validator.d.ts +54 -0
- package/dist/requests/validator.js +22 -0
- package/dist/requests/validator.js.map +1 -0
- package/dist/results/bwell-query-result-factory.d.ts +15 -0
- package/dist/results/bwell-query-result-factory.js +2 -0
- package/dist/results/bwell-query-result-factory.js.map +1 -0
- package/dist/results/bwell-query-result.d.ts +12 -0
- package/dist/results/bwell-query-result.js +19 -0
- package/dist/results/bwell-query-result.js.map +1 -0
- package/dist/results/bwell-transaction-result.d.ts +76 -0
- package/dist/results/bwell-transaction-result.js +95 -0
- package/dist/results/bwell-transaction-result.js.map +1 -0
- package/dist/results/index.d.ts +3 -0
- package/dist/results/index.js +4 -0
- package/dist/results/index.js.map +1 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.js +3 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/open-telemetry-instrumentation.d.ts +3 -0
- package/dist/telemetry/open-telemetry-instrumentation.js +41 -0
- package/dist/telemetry/open-telemetry-instrumentation.js.map +1 -0
- package/dist/telemetry/open-telemetry.d.ts +14 -0
- package/dist/telemetry/open-telemetry.js +87 -0
- package/dist/telemetry/open-telemetry.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +8 -0
- package/dist/telemetry/telemetry.js +2 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/tokens/index.d.ts +2 -0
- package/dist/tokens/index.js +3 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/jwt-token-manager.d.ts +32 -0
- package/dist/tokens/jwt-token-manager.js +150 -0
- package/dist/tokens/jwt-token-manager.js.map +1 -0
- package/dist/tokens/token-storage.d.ts +33 -0
- package/dist/tokens/token-storage.js +33 -0
- package/dist/tokens/token-storage.js.map +1 -0
- package/dist/utils/base64.d.ts +12 -0
- package/dist/utils/base64.js +22 -0
- package/dist/utils/base64.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/parsing-utils.d.ts +26 -0
- package/dist/utils/parsing-utils.js +69 -0
- package/dist/utils/parsing-utils.js.map +1 -0
- package/dist/utils/runtime.d.ts +10 -0
- package/dist/utils/runtime.js +50 -0
- package/dist/utils/runtime.js.map +1 -0
- package/dist/utils/string-utils.d.ts +6 -0
- package/dist/utils/string-utils.js +9 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/dist/utils/type-utils.d.ts +51 -0
- package/dist/utils/type-utils.js +58 -0
- package/dist/utils/type-utils.js.map +1 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +42 -8
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _OpenTelemetry_instances, _OpenTelemetry_resource, _OpenTelemetry_tracerProvider, _OpenTelemetry_loggerProvider, _OpenTelemetry_initializeResource, _OpenTelemetry_initializeTraceProvider, _OpenTelemetry_initializeLoggerProvider, _OpenTelemetry_registerFetchInstrumentation;
|
|
13
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
14
|
+
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
|
|
15
|
+
import { Resource } from "@opentelemetry/resources";
|
|
16
|
+
import { BatchLogRecordProcessor, LoggerProvider, } from "@opentelemetry/sdk-logs";
|
|
17
|
+
import { BasicTracerProvider } from "@opentelemetry/sdk-trace-base";
|
|
18
|
+
import { SEMRESATTRS_DEPLOYMENT_ENVIRONMENT, SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_NAMESPACE, SEMRESATTRS_SERVICE_VERSION, SEMRESATTRS_TELEMETRY_SDK_LANGUAGE, } from "@opentelemetry/semantic-conventions";
|
|
19
|
+
import { sdkVersion } from "../utils/index.js";
|
|
20
|
+
import { getRuntimeInstrumentation } from "./open-telemetry-instrumentation.js";
|
|
21
|
+
export class OpenTelemetry {
|
|
22
|
+
constructor(config) {
|
|
23
|
+
_OpenTelemetry_instances.add(this);
|
|
24
|
+
_OpenTelemetry_resource.set(this, void 0);
|
|
25
|
+
// If the BasicTracerProvider does not work we will probably want to use the
|
|
26
|
+
// WebTracerProvider and the NodeTracerProvider
|
|
27
|
+
// @see https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node
|
|
28
|
+
// @see https://www.npmjs.com/package/@opentelemetry/sdk-trace-web
|
|
29
|
+
_OpenTelemetry_tracerProvider.set(this, void 0);
|
|
30
|
+
_OpenTelemetry_loggerProvider.set(this, void 0);
|
|
31
|
+
__classPrivateFieldSet(this, _OpenTelemetry_resource, __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_initializeResource).call(this, config), "f");
|
|
32
|
+
__classPrivateFieldSet(this, _OpenTelemetry_tracerProvider, __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_initializeTraceProvider).call(this), "f");
|
|
33
|
+
__classPrivateFieldSet(this, _OpenTelemetry_loggerProvider, __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_initializeLoggerProvider).call(this, config), "f");
|
|
34
|
+
this.fetchInstrumentation = __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_registerFetchInstrumentation).call(this);
|
|
35
|
+
}
|
|
36
|
+
loggerProvider() {
|
|
37
|
+
return __classPrivateFieldGet(this, _OpenTelemetry_loggerProvider, "f");
|
|
38
|
+
}
|
|
39
|
+
resource() {
|
|
40
|
+
return __classPrivateFieldGet(this, _OpenTelemetry_resource, "f");
|
|
41
|
+
}
|
|
42
|
+
// public tracerProvider(): WebTracerProvider {
|
|
43
|
+
tracerProvider() {
|
|
44
|
+
return __classPrivateFieldGet(this, _OpenTelemetry_tracerProvider, "f");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
_OpenTelemetry_resource = new WeakMap(), _OpenTelemetry_tracerProvider = new WeakMap(), _OpenTelemetry_loggerProvider = new WeakMap(), _OpenTelemetry_instances = new WeakSet(), _OpenTelemetry_initializeResource = function _OpenTelemetry_initializeResource(config) {
|
|
48
|
+
var _a, _b, _c, _d;
|
|
49
|
+
return Resource.default().merge(new Resource({
|
|
50
|
+
[SEMRESATTRS_SERVICE_NAME]: "bwell-sdk-typescript",
|
|
51
|
+
[SEMRESATTRS_SERVICE_VERSION]: sdkVersion(),
|
|
52
|
+
[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]: "typescript",
|
|
53
|
+
[SEMRESATTRS_SERVICE_NAMESPACE]: "com.bwell",
|
|
54
|
+
[SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: config.context.env,
|
|
55
|
+
"client.key": config.context.clientKey,
|
|
56
|
+
"user.id": (_b = (_a = config.context.user) === null || _a === void 0 ? void 0 : _a.clientFhirPersonId) !== null && _b !== void 0 ? _b : "",
|
|
57
|
+
"user.bwell-person-id": (_d = (_c = config.context.user) === null || _c === void 0 ? void 0 : _c.bwellFhirPersonId) !== null && _d !== void 0 ? _d : "",
|
|
58
|
+
}));
|
|
59
|
+
}, _OpenTelemetry_initializeTraceProvider = function _OpenTelemetry_initializeTraceProvider() {
|
|
60
|
+
// TODO: Research using the AlwaysOffSampler
|
|
61
|
+
// @see https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base#alwaysoff-sampler
|
|
62
|
+
const tracerProvider = new BasicTracerProvider({
|
|
63
|
+
resource: __classPrivateFieldGet(this, _OpenTelemetry_resource, "f"),
|
|
64
|
+
});
|
|
65
|
+
tracerProvider.register({
|
|
66
|
+
propagator: new W3CTraceContextPropagator(),
|
|
67
|
+
});
|
|
68
|
+
return tracerProvider;
|
|
69
|
+
}, _OpenTelemetry_initializeLoggerProvider = function _OpenTelemetry_initializeLoggerProvider(config) {
|
|
70
|
+
const loggerProvider = new LoggerProvider({
|
|
71
|
+
resource: __classPrivateFieldGet(this, _OpenTelemetry_resource, "f"),
|
|
72
|
+
});
|
|
73
|
+
const exporter = new OTLPLogExporter({
|
|
74
|
+
url: `${config.telemetry.collectorUrl}/otlp-http/v1/logs`,
|
|
75
|
+
});
|
|
76
|
+
const processor = new BatchLogRecordProcessor(exporter);
|
|
77
|
+
loggerProvider.addLogRecordProcessor(processor);
|
|
78
|
+
return loggerProvider;
|
|
79
|
+
}, _OpenTelemetry_registerFetchInstrumentation = function _OpenTelemetry_registerFetchInstrumentation() {
|
|
80
|
+
const fetchInstrumentation = getRuntimeInstrumentation();
|
|
81
|
+
if (fetchInstrumentation === null) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
fetchInstrumentation.setTracerProvider(__classPrivateFieldGet(this, _OpenTelemetry_tracerProvider, "f"));
|
|
85
|
+
return fetchInstrumentation;
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=open-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-telemetry.js","sourceRoot":"","sources":["../../src/telemetry/open-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TracerProvider } from "@opentelemetry/api";
|
|
2
|
+
import type * as logsAPI from "@opentelemetry/api-logs";
|
|
3
|
+
import { Resource } from "@opentelemetry/resources";
|
|
4
|
+
export interface Telemetry {
|
|
5
|
+
resource(): Resource;
|
|
6
|
+
tracerProvider(): TracerProvider;
|
|
7
|
+
loggerProvider(): logsAPI.LoggerProvider;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { IdentityManager } from "../api/base/identity/index.js";
|
|
2
|
+
import { InvalidTokenError, OperationOutcomeError } from "../errors/index.js";
|
|
3
|
+
import { LoggerProvider } from "../logger/index.js";
|
|
4
|
+
import { BWellTransactionResult } from "../results/index.js";
|
|
5
|
+
import { TokenStorage } from "./token-storage.js";
|
|
6
|
+
export type TokenManagerConfig = {
|
|
7
|
+
accessToken: string;
|
|
8
|
+
idToken: string;
|
|
9
|
+
clientKey: string;
|
|
10
|
+
refreshToken: string;
|
|
11
|
+
};
|
|
12
|
+
export interface TokenManager {
|
|
13
|
+
getAccessToken(): Promise<BWellTransactionResult<string, OperationOutcomeError | InvalidTokenError>>;
|
|
14
|
+
getIdToken(): Promise<string | undefined>;
|
|
15
|
+
}
|
|
16
|
+
export declare class JWTTokenManager implements TokenManager {
|
|
17
|
+
#private;
|
|
18
|
+
private constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Instantiates a new JWTTokenManager after parsing and validating the provided
|
|
21
|
+
* accessToken.
|
|
22
|
+
*
|
|
23
|
+
* This static method publicly takes the place of new JWTTokenManager() for
|
|
24
|
+
* the purposes of returning a BWellTransactionResult with potential failures
|
|
25
|
+
* since you shouldn't return anything from the constructor other than a JWTTokenManager
|
|
26
|
+
*
|
|
27
|
+
* @returns {BWellTransactionResult<JWTTokenManager, InvalidTokenError>}
|
|
28
|
+
*/
|
|
29
|
+
static initialize(config: TokenManagerConfig, identManager: IdentityManager, loggerProvider?: LoggerProvider, tokenStorage?: TokenStorage): Promise<BWellTransactionResult<JWTTokenManager, InvalidTokenError>>;
|
|
30
|
+
getAccessToken(): Promise<BWellTransactionResult<string, OperationOutcomeError | InvalidTokenError>>;
|
|
31
|
+
getIdToken(): Promise<string | undefined>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
11
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
14
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
15
|
+
};
|
|
16
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
17
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
18
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
19
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
20
|
+
};
|
|
21
|
+
var _JWTTokenManager_instances, _a, _JWTTokenManager_identityManager, _JWTTokenManager_logger, _JWTTokenManager_tokenStorage, _JWTTokenManager_parseTokenExpiration, _JWTTokenManager_getExpiration, _JWTTokenManager_isAccessTokenExpired, _JWTTokenManager_refreshAccessToken;
|
|
22
|
+
import { BWellError, InvalidTokenError, } from "../errors/index.js";
|
|
23
|
+
import { ConsoleLoggerProvider, } from "../logger/index.js";
|
|
24
|
+
import { BWellTransactionResult } from "../results/index.js";
|
|
25
|
+
import { isUndefined, parseTokenExpiration } from "../utils/index.js";
|
|
26
|
+
import { InMemoryTokenStorage } from "./token-storage.js";
|
|
27
|
+
export class JWTTokenManager {
|
|
28
|
+
constructor(config, identManager, loggerProvider, tokenStorage) {
|
|
29
|
+
_JWTTokenManager_instances.add(this);
|
|
30
|
+
_JWTTokenManager_identityManager.set(this, void 0);
|
|
31
|
+
_JWTTokenManager_logger.set(this, void 0);
|
|
32
|
+
_JWTTokenManager_tokenStorage.set(this, void 0);
|
|
33
|
+
__classPrivateFieldSet(this, _JWTTokenManager_identityManager, identManager, "f");
|
|
34
|
+
__classPrivateFieldSet(this, _JWTTokenManager_logger, loggerProvider.getLogger("TokenManager"), "f");
|
|
35
|
+
__classPrivateFieldSet(this, _JWTTokenManager_tokenStorage, tokenStorage, "f");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Instantiates a new JWTTokenManager after parsing and validating the provided
|
|
39
|
+
* accessToken.
|
|
40
|
+
*
|
|
41
|
+
* This static method publicly takes the place of new JWTTokenManager() for
|
|
42
|
+
* the purposes of returning a BWellTransactionResult with potential failures
|
|
43
|
+
* since you shouldn't return anything from the constructor other than a JWTTokenManager
|
|
44
|
+
*
|
|
45
|
+
* @returns {BWellTransactionResult<JWTTokenManager, InvalidTokenError>}
|
|
46
|
+
*/
|
|
47
|
+
static initialize(config_1, identManager_1) {
|
|
48
|
+
return __awaiter(this, arguments, void 0, function* (config, identManager, loggerProvider = new ConsoleLoggerProvider(), tokenStorage = new InMemoryTokenStorage()) {
|
|
49
|
+
const expirationResult = __classPrivateFieldGet(_a, _a, "m", _JWTTokenManager_parseTokenExpiration).call(_a, config.accessToken);
|
|
50
|
+
if (expirationResult.failure()) {
|
|
51
|
+
return expirationResult.intoFailure();
|
|
52
|
+
}
|
|
53
|
+
const tokenManager = new _a(Object.assign(Object.assign({}, config), { expiration: expirationResult.data() }), identManager, loggerProvider, tokenStorage);
|
|
54
|
+
try {
|
|
55
|
+
yield Promise.all([
|
|
56
|
+
tokenStorage.set("idToken", config.idToken),
|
|
57
|
+
tokenStorage.set("clientKey", config.clientKey),
|
|
58
|
+
tokenStorage.set("accessToken", config.accessToken),
|
|
59
|
+
tokenStorage.set("refreshToken", config.refreshToken),
|
|
60
|
+
tokenStorage.set("expiration", expirationResult.data().toISOString()),
|
|
61
|
+
]);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
return BWellTransactionResult.failure(new InvalidTokenError("Failed to set tokens in token storage"));
|
|
65
|
+
}
|
|
66
|
+
return BWellTransactionResult.success(tokenManager);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
getAccessToken() {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const tokenIsExpired = yield __classPrivateFieldGet(this, _JWTTokenManager_instances, "m", _JWTTokenManager_isAccessTokenExpired).call(this);
|
|
72
|
+
if (tokenIsExpired) {
|
|
73
|
+
const refreshResults = yield __classPrivateFieldGet(this, _JWTTokenManager_instances, "m", _JWTTokenManager_refreshAccessToken).call(this);
|
|
74
|
+
if (refreshResults.failure()) {
|
|
75
|
+
return refreshResults.intoFailure();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const accessToken = yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("accessToken");
|
|
79
|
+
if (isUndefined(accessToken)) {
|
|
80
|
+
return BWellTransactionResult.failure(new InvalidTokenError("accessToken not found in token storage"));
|
|
81
|
+
}
|
|
82
|
+
return BWellTransactionResult.success(accessToken);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
getIdToken() {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
return yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("idToken");
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
_a = JWTTokenManager, _JWTTokenManager_identityManager = new WeakMap(), _JWTTokenManager_logger = new WeakMap(), _JWTTokenManager_tokenStorage = new WeakMap(), _JWTTokenManager_instances = new WeakSet(), _JWTTokenManager_parseTokenExpiration = function _JWTTokenManager_parseTokenExpiration(accessToken) {
|
|
92
|
+
try {
|
|
93
|
+
const parsedExpirationTime = parseTokenExpiration(accessToken);
|
|
94
|
+
return BWellTransactionResult.success(new Date(parsedExpirationTime));
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
// If an error that we don't expect is caught, log it and re-throw it
|
|
98
|
+
// Its quite difficult to trigger an error that is not a BWellError in tests
|
|
99
|
+
// so we cannot test the case where an unexpected error is caught.
|
|
100
|
+
/* istanbul ignore next */
|
|
101
|
+
if (!BWellError.isBwellError(e)) {
|
|
102
|
+
throw e;
|
|
103
|
+
}
|
|
104
|
+
return BWellTransactionResult.failure(e);
|
|
105
|
+
}
|
|
106
|
+
}, _JWTTokenManager_getExpiration = function _JWTTokenManager_getExpiration() {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
const expirationString = yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("expiration");
|
|
109
|
+
if (isUndefined(expirationString)) {
|
|
110
|
+
throw new Error("expiration not found in token storage");
|
|
111
|
+
}
|
|
112
|
+
return new Date(expirationString);
|
|
113
|
+
});
|
|
114
|
+
}, _JWTTokenManager_isAccessTokenExpired = function _JWTTokenManager_isAccessTokenExpired() {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
const expirationDate = yield __classPrivateFieldGet(this, _JWTTokenManager_instances, "m", _JWTTokenManager_getExpiration).call(this);
|
|
117
|
+
const expirationTime = expirationDate.getTime();
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
return expirationTime < now;
|
|
120
|
+
});
|
|
121
|
+
}, _JWTTokenManager_refreshAccessToken = function _JWTTokenManager_refreshAccessToken() {
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
__classPrivateFieldGet(this, _JWTTokenManager_logger, "f").verbose("refreshing access token...");
|
|
124
|
+
const [refreshToken, clientKey] = yield Promise.all([
|
|
125
|
+
__classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("refreshToken"),
|
|
126
|
+
__classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("clientKey"),
|
|
127
|
+
]);
|
|
128
|
+
if (isUndefined(refreshToken) || isUndefined(clientKey)) {
|
|
129
|
+
return BWellTransactionResult.failure(new InvalidTokenError("refreshToken or clientKey not found in token storage"));
|
|
130
|
+
}
|
|
131
|
+
const results = yield __classPrivateFieldGet(this, _JWTTokenManager_identityManager, "f").refreshAccessToken({
|
|
132
|
+
refreshToken: refreshToken,
|
|
133
|
+
clientKey: clientKey,
|
|
134
|
+
});
|
|
135
|
+
__classPrivateFieldGet(this, _JWTTokenManager_logger, "f").verbose("refreshing access token complete");
|
|
136
|
+
if (results.failure()) {
|
|
137
|
+
return results.intoFailure();
|
|
138
|
+
}
|
|
139
|
+
const refreshAccessTokenData = results.data();
|
|
140
|
+
yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").set("accessToken", refreshAccessTokenData.accessToken);
|
|
141
|
+
yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").set("idToken", refreshAccessTokenData.idToken);
|
|
142
|
+
const parseExpirationResult = __classPrivateFieldGet(_a, _a, "m", _JWTTokenManager_parseTokenExpiration).call(_a, refreshAccessTokenData.accessToken);
|
|
143
|
+
if (parseExpirationResult.failure()) {
|
|
144
|
+
return parseExpirationResult.intoFailure();
|
|
145
|
+
}
|
|
146
|
+
yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").set("expiration", parseExpirationResult.data().toISOString());
|
|
147
|
+
return BWellTransactionResult.success(null);
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=jwt-token-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-token-manager.js","sourceRoot":"","sources":["../../src/tokens/jwt-token-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for storing tokens.
|
|
3
|
+
* We might want to store more than one kind of token, so the interface is for a key-value store.
|
|
4
|
+
* All methods are asynchronous, in cases of storage in the cloud, over the network, in a multi-step process, etc.
|
|
5
|
+
*/
|
|
6
|
+
export interface TokenStorage {
|
|
7
|
+
/**
|
|
8
|
+
* Get the value for a key.
|
|
9
|
+
* @param key The key to look up the value.
|
|
10
|
+
*/
|
|
11
|
+
get(key: string): Promise<string | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* Set the value for a key.
|
|
14
|
+
* @param key The key to set the value.
|
|
15
|
+
* @param value The value to set.
|
|
16
|
+
*/
|
|
17
|
+
set(key: string, value: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Delete the value for a key.
|
|
20
|
+
* @param key The key to delete the value.
|
|
21
|
+
*/
|
|
22
|
+
delete(key: string): Promise<boolean>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Default token storage implementation that stores tokens in memory.
|
|
26
|
+
*/
|
|
27
|
+
export declare class InMemoryTokenStorage {
|
|
28
|
+
private storage;
|
|
29
|
+
constructor(storage?: Map<string, string>);
|
|
30
|
+
get(key: string): Promise<string | undefined>;
|
|
31
|
+
set(key: string, value: string): Promise<void>;
|
|
32
|
+
delete(key: string): Promise<boolean>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Default token storage implementation that stores tokens in memory.
|
|
12
|
+
*/
|
|
13
|
+
export class InMemoryTokenStorage {
|
|
14
|
+
constructor(storage = new Map()) {
|
|
15
|
+
this.storage = storage;
|
|
16
|
+
}
|
|
17
|
+
get(key) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
return this.storage.get(key);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
set(key, value) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
this.storage.set(key, value);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
delete(key) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return this.storage.delete(key);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=token-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../src/tokens/token-storage.ts"],"names":[],"mappings":";;;;;;;;;AAwBA;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B,YACU,UAA+B,IAAI,GAAG,EAAkB;QAAxD,YAAO,GAAP,OAAO,CAAiD;IAC/D,CAAC;IAEE,GAAG,CAAC,GAAW;;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAa;;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEK,MAAM,CAAC,GAAW;;YACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;KAAA;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decodes a Base64 encoded string to a utf-8 encoded string.
|
|
3
|
+
*
|
|
4
|
+
* Node.js and Browser runtimes have different API's for decoding Base64 encoded
|
|
5
|
+
* strings so a runtime check is necessary.
|
|
6
|
+
*
|
|
7
|
+
* atob and btoa are deprecated in Node.js so we need to use Buffer.from
|
|
8
|
+
* @see https://nodejs.org/api/buffer.html#bufferatobdata
|
|
9
|
+
*
|
|
10
|
+
* The Buffer API is not available in browswer runtimes, so using atob is required
|
|
11
|
+
*/
|
|
12
|
+
export declare function base64Decode(base64String: string): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getRuntime } from "./runtime.js";
|
|
2
|
+
/**
|
|
3
|
+
* Decodes a Base64 encoded string to a utf-8 encoded string.
|
|
4
|
+
*
|
|
5
|
+
* Node.js and Browser runtimes have different API's for decoding Base64 encoded
|
|
6
|
+
* strings so a runtime check is necessary.
|
|
7
|
+
*
|
|
8
|
+
* atob and btoa are deprecated in Node.js so we need to use Buffer.from
|
|
9
|
+
* @see https://nodejs.org/api/buffer.html#bufferatobdata
|
|
10
|
+
*
|
|
11
|
+
* The Buffer API is not available in browswer runtimes, so using atob is required
|
|
12
|
+
*/
|
|
13
|
+
export function base64Decode(base64String) {
|
|
14
|
+
switch (getRuntime()) {
|
|
15
|
+
case "node":
|
|
16
|
+
return Buffer.from(base64String, "base64").toString("utf-8");
|
|
17
|
+
case "browser":
|
|
18
|
+
// @see https://developer.mozilla.org/en-US/docs/Web/API/atob
|
|
19
|
+
return atob(base64String);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,QAAQ,UAAU,EAAE,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/D,KAAK,SAAS;YACZ,6DAA6D;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { User } from "../models/index.js";
|
|
2
|
+
export declare function retrieveEnvironmentFromClientKey(clientKey: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Returns the JSON parsed payload section of a JWT
|
|
5
|
+
*
|
|
6
|
+
* @param {string} token - token to parse
|
|
7
|
+
* @returns {T} parsed data
|
|
8
|
+
* @throws {InvalidTokenError} - If token is corrupt or cannot be JSON parsed
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseJWTPayload<T>(token: string): T;
|
|
11
|
+
/**
|
|
12
|
+
* Parses a JWT and gets the expiration from the JWT payload.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} token - JWT to parse
|
|
15
|
+
* @returns {number} Expiration date expressed in milliseconds
|
|
16
|
+
* @throws {InvalidTokenError} if token is invalid base64, JWT, JSON paylaod or expiration
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseTokenExpiration(token: string): number;
|
|
19
|
+
/**
|
|
20
|
+
* Parses a JWT and pulls BWell user data from the payload.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} token - JWT to parse
|
|
23
|
+
* @returns {User} pulled from the JWT payload
|
|
24
|
+
* @throws {InvalidTokenError} if token is invalid base64, JWT or JSON paylaod
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseUserFromIdToken(token: string): User;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { InvalidTokenError } from "../errors/index.js";
|
|
2
|
+
import { base64Decode } from "./base64.js";
|
|
3
|
+
import { isNotNullOrUndefined } from "./type-utils.js";
|
|
4
|
+
export function retrieveEnvironmentFromClientKey(clientKey) {
|
|
5
|
+
const decodeClientKeyJson = JSON.parse(base64Decode(clientKey));
|
|
6
|
+
return decodeClientKeyJson["env"];
|
|
7
|
+
}
|
|
8
|
+
const JWT_PART_SIZE = 3;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the JSON parsed payload section of a JWT
|
|
11
|
+
*
|
|
12
|
+
* @param {string} token - token to parse
|
|
13
|
+
* @returns {T} parsed data
|
|
14
|
+
* @throws {InvalidTokenError} - If token is corrupt or cannot be JSON parsed
|
|
15
|
+
*/
|
|
16
|
+
export function parseJWTPayload(token) {
|
|
17
|
+
const splitToken = token.split(".");
|
|
18
|
+
const tokenPayload = splitToken[1];
|
|
19
|
+
if (tokenPayload === undefined || splitToken.length !== JWT_PART_SIZE) {
|
|
20
|
+
throw new InvalidTokenError("Token is missing data and may be corrupted");
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const tokenJson = JSON.parse(base64Decode(tokenPayload));
|
|
24
|
+
return tokenJson;
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
const cause = err;
|
|
28
|
+
throw new InvalidTokenError(`Unable to parse token payload: ${cause.name} - ${cause.message}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parses a JWT and gets the expiration from the JWT payload.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} token - JWT to parse
|
|
35
|
+
* @returns {number} Expiration date expressed in milliseconds
|
|
36
|
+
* @throws {InvalidTokenError} if token is invalid base64, JWT, JSON paylaod or expiration
|
|
37
|
+
*/
|
|
38
|
+
export function parseTokenExpiration(token) {
|
|
39
|
+
const tokenJson = parseJWTPayload(token);
|
|
40
|
+
// Parse out the seconds till expiration and convert them to milliseconds.
|
|
41
|
+
const expiration = tokenJson.exp;
|
|
42
|
+
if (typeof expiration !== "number") {
|
|
43
|
+
throw new InvalidTokenError("The access token is missing an expiration date and is most likely corrupted.");
|
|
44
|
+
}
|
|
45
|
+
return expiration * 1000;
|
|
46
|
+
}
|
|
47
|
+
const CLIENT_PERSON_ID_KEY = "custom:clientFhirPersonId";
|
|
48
|
+
const BWELL_FHIR_PERSON_ID_KEY = "custom:bwellFhirPatientId";
|
|
49
|
+
/**
|
|
50
|
+
* Parses a JWT and pulls BWell user data from the payload.
|
|
51
|
+
*
|
|
52
|
+
* @param {string} token - JWT to parse
|
|
53
|
+
* @returns {User} pulled from the JWT payload
|
|
54
|
+
* @throws {InvalidTokenError} if token is invalid base64, JWT or JSON paylaod
|
|
55
|
+
*/
|
|
56
|
+
export function parseUserFromIdToken(token) {
|
|
57
|
+
const idTokenJson = parseJWTPayload(token);
|
|
58
|
+
const bwellFhirPersonId = idTokenJson[BWELL_FHIR_PERSON_ID_KEY];
|
|
59
|
+
const clientFhirPersonId = idTokenJson[CLIENT_PERSON_ID_KEY];
|
|
60
|
+
if (isNotNullOrUndefined(bwellFhirPersonId) &&
|
|
61
|
+
isNotNullOrUndefined(clientFhirPersonId)) {
|
|
62
|
+
return {
|
|
63
|
+
bwellFhirPersonId,
|
|
64
|
+
clientFhirPersonId,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
throw new InvalidTokenError("The idToken does not contain a bwellFhirPerson and/or a clientFhirPersonId");
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=parsing-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing-utils.js","sourceRoot":"","sources":["../../src/utils/parsing-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,UAAU,gCAAgC,CAAC,SAAiB;IAChE,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,OAAO,mBAAmB,CAAC,KAAK,CAAW,CAAC;AAC9C,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,CAAC;AAMxB;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAI,KAAa;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACtE,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QAEzD,OAAO,SAAc,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAY,CAAC;QAE3B,MAAM,IAAI,iBAAiB,CACzB,kCAAkC,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,SAAS,GAAG,eAAe,CAAsB,KAAK,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC;IACjC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,iBAAiB,CACzB,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AACzD,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AAO7D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,WAAW,GAAG,eAAe,CAAc,KAAK,CAAC,CAAC;IAExD,MAAM,iBAAiB,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAChE,MAAM,kBAAkB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAE7D,IACE,oBAAoB,CAAC,iBAAiB,CAAC;QACvC,oBAAoB,CAAC,kBAAkB,CAAC,EACxC,CAAC;QACD,OAAO;YACL,iBAAiB;YACjB,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,iBAAiB,CACzB,4EAA4E,CAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type Runtime = "browser" | "node";
|
|
2
|
+
/**
|
|
3
|
+
* Determines which JavaScript runtime the SDK is being used in.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getRuntime(): Runtime;
|
|
6
|
+
export interface RuntimeExecutor<T> {
|
|
7
|
+
node(): T;
|
|
8
|
+
browser(): T;
|
|
9
|
+
}
|
|
10
|
+
export declare function executeForRuntime<T>(runtimeExecutor: RuntimeExecutor<T>): T;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @see https://nodejs.org/api/process.html#processversions
|
|
3
|
+
*/
|
|
4
|
+
function isNode() {
|
|
5
|
+
var _a;
|
|
6
|
+
// Even when testing in a JSDom environment, the process variable still exists
|
|
7
|
+
// so its dificult to purely test this branch
|
|
8
|
+
/* istanbul ignore next */
|
|
9
|
+
const nodeProcessIsAbsent =
|
|
10
|
+
// process isn't a native global variable in browsers
|
|
11
|
+
typeof process === "undefined" ||
|
|
12
|
+
// Sometimes webpack or other build systems will inject process as a global
|
|
13
|
+
// so lets check that .versions.node does not exist.
|
|
14
|
+
((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node) === undefined;
|
|
15
|
+
return !nodeProcessIsAbsent;
|
|
16
|
+
}
|
|
17
|
+
function isBrowser() {
|
|
18
|
+
return typeof window !== "undefined";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Determines which JavaScript runtime the SDK is being used in.
|
|
22
|
+
*/
|
|
23
|
+
export function getRuntime() {
|
|
24
|
+
/**
|
|
25
|
+
* Need to ensure that the browser runtime check is ran first since running tests
|
|
26
|
+
* in jest jsdom environment is still technically in a node environment.
|
|
27
|
+
* When tests are ran in jsdom environment, isBrowser will return true, but
|
|
28
|
+
* so will isNode whereas when tests are ran in a node jest environment, isBrowser
|
|
29
|
+
* will return false.
|
|
30
|
+
*/
|
|
31
|
+
if (isBrowser()) {
|
|
32
|
+
return "browser";
|
|
33
|
+
}
|
|
34
|
+
if (isNode()) {
|
|
35
|
+
return "node";
|
|
36
|
+
}
|
|
37
|
+
// This is not very testable as we don't have a jest environment that is not
|
|
38
|
+
// browser-like or node-like available to us.
|
|
39
|
+
/* istanbul ignore next */
|
|
40
|
+
throw new Error("Invalid runtime");
|
|
41
|
+
}
|
|
42
|
+
export function executeForRuntime(runtimeExecutor) {
|
|
43
|
+
switch (getRuntime()) {
|
|
44
|
+
case "browser":
|
|
45
|
+
return runtimeExecutor.browser();
|
|
46
|
+
case "node":
|
|
47
|
+
return runtimeExecutor.node();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,MAAM;;IACb,8EAA8E;IAC9E,6CAA6C;IAC7C,0BAA0B;IAC1B,MAAM,mBAAmB;IACvB,qDAAqD;IACrD,OAAO,OAAO,KAAK,WAAW;QAC9B,2EAA2E;QAC3E,oDAAoD;QACpD,CAAA,MAAA,OAAO,CAAC,QAAQ,0CAAE,IAAI,MAAK,SAAS,CAAC;IAEvC,OAAO,CAAC,mBAAmB,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB;;;;;;OAMG;IACH,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,EAAE,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,6CAA6C;IAC7C,0BAA0B;IAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAI,eAAmC;IACtE,QAAQ,UAAU,EAAE,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC;QAEnC,KAAK,MAAM;YACT,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|