@versori/run 0.2.29 → 0.3.0-beta.2
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/esm/src/connection/DirectConnectionFactory.d.ts +29 -0
- package/esm/src/connection/DirectConnectionFactory.d.ts.map +1 -0
- package/esm/src/connection/DirectConnectionFactory.js +82 -0
- package/esm/src/connection/DynamicFetchFactory.d.ts +30 -0
- package/esm/src/connection/DynamicFetchFactory.d.ts.map +1 -0
- package/esm/src/connection/DynamicFetchFactory.js +113 -0
- package/esm/src/connection/StaticFetchFactory.d.ts +11 -0
- package/esm/src/connection/StaticFetchFactory.d.ts.map +1 -0
- package/esm/src/connection/StaticFetchFactory.js +35 -0
- package/esm/src/connection/internal/CredentialHolder.d.ts +11 -0
- package/esm/src/connection/internal/CredentialHolder.d.ts.map +1 -0
- package/esm/src/connection/internal/CredentialHolder.js +66 -0
- package/esm/src/connection/internal/FetchBuilder.d.ts +15 -0
- package/esm/src/connection/internal/FetchBuilder.d.ts.map +1 -0
- package/esm/src/connection/internal/FetchBuilder.js +89 -0
- package/esm/src/connection/internal/HttpClientFactory.d.ts +14 -0
- package/esm/src/connection/internal/HttpClientFactory.d.ts.map +1 -0
- package/esm/src/connection/internal/HttpClientFactory.js +42 -0
- package/esm/src/connection/internal/InboundConnectionFactory.d.ts +19 -0
- package/esm/src/connection/internal/InboundConnectionFactory.d.ts.map +1 -0
- package/esm/src/connection/internal/InboundConnectionFactory.js +390 -0
- package/esm/src/connection/internal/OutboundConnectionFactory.d.ts +31 -0
- package/esm/src/connection/internal/OutboundConnectionFactory.d.ts.map +1 -0
- package/esm/src/connection/internal/OutboundConnectionFactory.js +447 -0
- package/esm/src/connection/types.d.ts +32 -0
- package/esm/src/connection/types.d.ts.map +1 -0
- package/esm/src/connection/types.js +1 -0
- package/esm/src/context/ActivationImpl.d.ts +18 -0
- package/esm/src/context/ActivationImpl.d.ts.map +1 -0
- package/esm/src/context/ActivationImpl.js +82 -0
- package/esm/src/context/Context.d.ts +4 -6
- package/esm/src/context/Context.d.ts.map +1 -1
- package/esm/src/context/Context.js +8 -16
- package/esm/src/context/ContextProvider.d.ts +7 -3
- package/esm/src/context/ContextProvider.d.ts.map +1 -1
- package/esm/src/context/ContextProvider.js +28 -10
- package/esm/src/dsl/http/default.d.ts.map +1 -1
- package/esm/src/dsl/http/default.js +2 -2
- package/esm/src/dsl/http/types.d.ts +9 -4
- package/esm/src/dsl/http/types.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/configloader.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/configloader.js +3 -1
- package/esm/src/dsl/http/versori/constants.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/constants.js +1 -0
- package/esm/src/dsl/http/versori/contextcredentials.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/platformapi.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/proxyroundtripper.d.ts +5 -3
- package/esm/src/dsl/http/versori/proxyroundtripper.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/proxyroundtripper.js +31 -8
- package/esm/src/dsl/http/versori/webhookmiddleware.d.ts +8 -5
- package/esm/src/dsl/http/versori/webhookmiddleware.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/webhookmiddleware.js +106 -115
- package/esm/src/dsl/tasks/HttpTask.d.ts +6 -5
- package/esm/src/dsl/tasks/HttpTask.d.ts.map +1 -1
- package/esm/src/dsl/tasks/HttpTask.js +19 -22
- package/esm/src/internal/InternalAuth.d.ts +15 -0
- package/esm/src/internal/InternalAuth.d.ts.map +1 -0
- package/esm/src/internal/InternalAuth.js +90 -0
- package/esm/src/internal/cli.d.ts +2 -0
- package/esm/src/internal/cli.d.ts.map +1 -0
- package/esm/src/internal/cli.js +20 -0
- package/esm/src/internal/constants.d.ts +20 -0
- package/esm/src/internal/constants.d.ts.map +1 -0
- package/esm/src/internal/constants.js +24 -0
- package/esm/src/interpreter/durable/DurableInterpreter.d.ts +14 -5
- package/esm/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/durable/DurableInterpreter.js +20 -18
- package/esm/src/interpreter/durable/ObservableCompiler.d.ts +6 -3
- package/esm/src/interpreter/durable/ObservableCompiler.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/durableworkflow.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/durableworkflow.js +10 -1
- package/esm/src/interpreter/durable/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/http.js +26 -9
- package/esm/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/schedule.js +41 -18
- package/esm/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/webhook.js +30 -33
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +4 -4
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/memory/MemoryInterpreter.js +14 -23
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts +6 -3
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.js +26 -9
- package/esm/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/schedule.js +34 -18
- package/esm/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/webhook.js +31 -34
- package/esm/src/services/credentials/credential-v1alpha1.d.ts +4 -0
- package/esm/src/services/credentials/credential-v1alpha1.d.ts.map +1 -0
- package/esm/src/services/credentials/credential-v1alpha1.js +3 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_metadata_pb.d.ts +119 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_metadata_pb.d.ts.map +1 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_metadata_pb.js +67 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_service_pb.d.ts +245 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_service_pb.d.ts.map +1 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_service_pb.js +44 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth2/v1/token_pb.d.ts +38 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth2/v1/token_pb.d.ts.map +1 -0
- package/esm/src/{dsl/http → services/credentials/generated}/versori/credential/oauth2/v1/token_pb.js +1 -1
- package/esm/src/services/credentials/generated/versori/credential/oauth2/v1/token_service_pb.d.ts +471 -0
- package/esm/src/services/credentials/generated/versori/credential/oauth2/v1/token_service_pb.d.ts.map +1 -0
- package/esm/src/{dsl/http → services/credentials/generated}/versori/credential/oauth2/v1/token_service_pb.js +1 -1
- package/esm/src/services/credentials/generated/versori/credential/tokens/v1/token_pb.d.ts +38 -0
- package/esm/src/services/credentials/generated/versori/credential/tokens/v1/token_pb.d.ts.map +1 -0
- package/esm/src/{dsl/http → services/credentials/generated}/versori/credential/tokens/v1/token_pb.js +1 -1
- package/esm/src/services/credentials/generated/versori/credential/tokens/v1/token_service_pb.d.ts +128 -0
- package/esm/src/services/credentials/generated/versori/credential/tokens/v1/token_service_pb.d.ts.map +1 -0
- package/esm/src/{dsl/http → services/credentials/generated}/versori/credential/tokens/v1/token_service_pb.js +1 -1
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/common_pb.d.ts +90 -0
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/common_pb.d.ts.map +1 -0
- package/esm/src/{dsl/http → services/credentials/generated}/versori/credential/v1alpha1/common_pb.js +16 -6
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/credential_pb.d.ts +1468 -0
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/credential_pb.d.ts.map +1 -0
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/credential_pb.js +534 -0
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/credential_service_pb.d.ts +390 -0
- package/esm/src/services/credentials/generated/versori/credential/v1alpha1/credential_service_pb.d.ts.map +1 -0
- package/esm/src/{dsl/http → services/credentials/generated}/versori/credential/v1alpha1/credential_service_pb.js +1 -1
- package/esm/src/services/credentials/isTokenValid.d.ts +3 -0
- package/esm/src/services/credentials/isTokenValid.d.ts.map +1 -0
- package/esm/src/services/credentials/isTokenValid.js +8 -0
- package/esm/src/services/credentials/mod.d.ts +5 -0
- package/esm/src/services/credentials/mod.d.ts.map +1 -0
- package/esm/src/services/credentials/mod.js +4 -0
- package/esm/src/services/credentials/oauth1-v1.d.ts +3 -0
- package/esm/src/services/credentials/oauth1-v1.d.ts.map +1 -0
- package/esm/src/services/credentials/oauth1-v1.js +2 -0
- package/esm/src/services/credentials/oauth2-v1.d.ts +3 -0
- package/esm/src/services/credentials/oauth2-v1.d.ts.map +1 -0
- package/esm/src/services/credentials/oauth2-v1.js +2 -0
- package/esm/src/services/credentials/tokens-v1.d.ts +3 -0
- package/esm/src/services/credentials/tokens-v1.d.ts.map +1 -0
- package/esm/src/services/credentials/tokens-v1.js +2 -0
- package/esm/src/services/platform/PlatformApi.d.ts +7 -0
- package/esm/src/services/platform/PlatformApi.d.ts.map +1 -0
- package/esm/src/services/platform/PlatformApi.js +25 -0
- package/esm/src/services/platform/generated/client/client.gen.d.ts +3 -0
- package/esm/src/services/platform/generated/client/client.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/client/client.gen.js +176 -0
- package/esm/src/services/platform/generated/client/index.d.ts +8 -0
- package/esm/src/services/platform/generated/client/index.d.ts.map +1 -0
- package/esm/src/services/platform/generated/client/index.js +5 -0
- package/esm/src/services/platform/generated/client/types.gen.d.ts +125 -0
- package/esm/src/services/platform/generated/client/types.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/client/types.gen.js +2 -0
- package/esm/src/services/platform/generated/client/utils.gen.d.ts +39 -0
- package/esm/src/services/platform/generated/client/utils.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/client/utils.gen.js +234 -0
- package/esm/src/services/platform/generated/client.gen.d.ts +13 -0
- package/esm/src/services/platform/generated/client.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/client.gen.js +5 -0
- package/esm/src/services/platform/generated/core/auth.gen.d.ts +19 -0
- package/esm/src/services/platform/generated/core/auth.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/auth.gen.js +14 -0
- package/esm/src/services/platform/generated/core/bodySerializer.gen.d.ts +18 -0
- package/esm/src/services/platform/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/bodySerializer.gen.js +57 -0
- package/esm/src/services/platform/generated/core/params.gen.d.ts +34 -0
- package/esm/src/services/platform/generated/core/params.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/params.gen.js +88 -0
- package/esm/src/services/platform/generated/core/pathSerializer.gen.d.ts +34 -0
- package/esm/src/services/platform/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/pathSerializer.gen.js +114 -0
- package/esm/src/services/platform/generated/core/serverSentEvents.gen.d.ts +60 -0
- package/esm/src/services/platform/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/serverSentEvents.gen.js +121 -0
- package/esm/src/services/platform/generated/core/types.gen.d.ts +79 -0
- package/esm/src/services/platform/generated/core/types.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/types.gen.js +2 -0
- package/esm/src/services/platform/generated/core/utils.gen.d.ts +15 -0
- package/esm/src/services/platform/generated/core/utils.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/core/utils.gen.js +69 -0
- package/esm/src/services/platform/generated/index.d.ts +3 -0
- package/esm/src/services/platform/generated/index.d.ts.map +1 -0
- package/esm/src/services/platform/generated/index.js +3 -0
- package/esm/src/services/platform/generated/sdk.gen.d.ts +494 -0
- package/esm/src/services/platform/generated/sdk.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/sdk.gen.js +1908 -0
- package/esm/src/services/platform/generated/types.gen.d.ts +3798 -0
- package/esm/src/services/platform/generated/types.gen.d.ts.map +1 -0
- package/esm/src/services/platform/generated/types.gen.js +2 -0
- package/esm/src/services/platform/mod.d.ts +5 -0
- package/esm/src/services/platform/mod.d.ts.map +1 -0
- package/esm/src/services/platform/mod.js +2 -0
- package/package.json +4 -4
- package/script/src/connection/DirectConnectionFactory.d.ts +29 -0
- package/script/src/connection/DirectConnectionFactory.d.ts.map +1 -0
- package/script/src/connection/DirectConnectionFactory.js +86 -0
- package/script/src/connection/DynamicFetchFactory.d.ts +30 -0
- package/script/src/connection/DynamicFetchFactory.d.ts.map +1 -0
- package/script/src/connection/DynamicFetchFactory.js +117 -0
- package/script/src/connection/StaticFetchFactory.d.ts +11 -0
- package/script/src/connection/StaticFetchFactory.d.ts.map +1 -0
- package/script/src/connection/StaticFetchFactory.js +39 -0
- package/script/src/connection/internal/CredentialHolder.d.ts +11 -0
- package/script/src/connection/internal/CredentialHolder.d.ts.map +1 -0
- package/script/src/connection/internal/CredentialHolder.js +71 -0
- package/script/src/connection/internal/FetchBuilder.d.ts +15 -0
- package/script/src/connection/internal/FetchBuilder.d.ts.map +1 -0
- package/script/src/connection/internal/FetchBuilder.js +93 -0
- package/script/src/connection/internal/HttpClientFactory.d.ts +14 -0
- package/script/src/connection/internal/HttpClientFactory.d.ts.map +1 -0
- package/script/src/connection/internal/HttpClientFactory.js +46 -0
- package/script/src/connection/internal/InboundConnectionFactory.d.ts +19 -0
- package/script/src/connection/internal/InboundConnectionFactory.d.ts.map +1 -0
- package/script/src/connection/internal/InboundConnectionFactory.js +394 -0
- package/script/src/connection/internal/OutboundConnectionFactory.d.ts +31 -0
- package/script/src/connection/internal/OutboundConnectionFactory.d.ts.map +1 -0
- package/script/src/connection/internal/OutboundConnectionFactory.js +454 -0
- package/script/src/connection/types.d.ts +32 -0
- package/script/src/connection/types.d.ts.map +1 -0
- package/script/src/connection/types.js +2 -0
- package/script/src/context/ActivationImpl.d.ts +18 -0
- package/script/src/context/ActivationImpl.d.ts.map +1 -0
- package/script/src/context/ActivationImpl.js +86 -0
- package/script/src/context/Context.d.ts +4 -6
- package/script/src/context/Context.d.ts.map +1 -1
- package/script/src/context/Context.js +8 -16
- package/script/src/context/ContextProvider.d.ts +7 -3
- package/script/src/context/ContextProvider.d.ts.map +1 -1
- package/script/src/context/ContextProvider.js +28 -10
- package/script/src/dsl/http/default.d.ts.map +1 -1
- package/script/src/dsl/http/default.js +2 -2
- package/script/src/dsl/http/types.d.ts +9 -4
- package/script/src/dsl/http/types.d.ts.map +1 -1
- package/script/src/dsl/http/versori/configloader.d.ts.map +1 -1
- package/script/src/dsl/http/versori/configloader.js +3 -1
- package/script/src/dsl/http/versori/constants.d.ts.map +1 -1
- package/script/src/dsl/http/versori/constants.js +1 -0
- package/script/src/dsl/http/versori/contextcredentials.d.ts.map +1 -1
- package/script/src/dsl/http/versori/platformapi.d.ts.map +1 -1
- package/script/src/dsl/http/versori/proxyroundtripper.d.ts +5 -3
- package/script/src/dsl/http/versori/proxyroundtripper.d.ts.map +1 -1
- package/script/src/dsl/http/versori/proxyroundtripper.js +31 -8
- package/script/src/dsl/http/versori/webhookmiddleware.d.ts +8 -5
- package/script/src/dsl/http/versori/webhookmiddleware.d.ts.map +1 -1
- package/script/src/dsl/http/versori/webhookmiddleware.js +106 -115
- package/script/src/dsl/tasks/HttpTask.d.ts +6 -5
- package/script/src/dsl/tasks/HttpTask.d.ts.map +1 -1
- package/script/src/dsl/tasks/HttpTask.js +19 -22
- package/script/src/internal/InternalAuth.d.ts +15 -0
- package/script/src/internal/InternalAuth.d.ts.map +1 -0
- package/script/src/internal/InternalAuth.js +94 -0
- package/script/src/internal/cli.d.ts +2 -0
- package/script/src/internal/cli.d.ts.map +1 -0
- package/script/src/internal/cli.js +23 -0
- package/script/src/internal/constants.d.ts +20 -0
- package/script/src/internal/constants.d.ts.map +1 -0
- package/script/src/internal/constants.js +27 -0
- package/script/src/interpreter/durable/DurableInterpreter.d.ts +14 -5
- package/script/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/durable/DurableInterpreter.js +20 -18
- package/script/src/interpreter/durable/ObservableCompiler.d.ts +6 -3
- package/script/src/interpreter/durable/ObservableCompiler.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/durableworkflow.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/durableworkflow.js +10 -1
- package/script/src/interpreter/durable/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/http.js +26 -9
- package/script/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/schedule.js +41 -18
- package/script/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/webhook.js +30 -33
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts +4 -4
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/memory/MemoryInterpreter.js +14 -23
- package/script/src/interpreter/memory/ObservableCompiler.d.ts +6 -3
- package/script/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.js +26 -9
- package/script/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/schedule.js +34 -18
- package/script/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/webhook.js +31 -34
- package/script/src/services/credentials/credential-v1alpha1.d.ts +4 -0
- package/script/src/services/credentials/credential-v1alpha1.d.ts.map +1 -0
- package/script/src/services/credentials/credential-v1alpha1.js +19 -0
- package/script/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_metadata_pb.d.ts +119 -0
- package/script/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_metadata_pb.d.ts.map +1 -0
- package/script/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_metadata_pb.js +70 -0
- package/script/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_service_pb.d.ts +245 -0
- package/script/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_service_pb.d.ts.map +1 -0
- package/script/src/services/credentials/generated/versori/credential/oauth1/v1/authorization_service_pb.js +47 -0
- package/script/src/services/credentials/generated/versori/credential/oauth2/v1/token_pb.d.ts +38 -0
- package/script/src/services/credentials/generated/versori/credential/oauth2/v1/token_pb.d.ts.map +1 -0
- package/script/src/{dsl/http → services/credentials/generated}/versori/credential/oauth2/v1/token_pb.js +1 -1
- package/script/src/services/credentials/generated/versori/credential/oauth2/v1/token_service_pb.d.ts +471 -0
- package/script/src/services/credentials/generated/versori/credential/oauth2/v1/token_service_pb.d.ts.map +1 -0
- package/script/src/{dsl/http → services/credentials/generated}/versori/credential/oauth2/v1/token_service_pb.js +1 -1
- package/script/src/services/credentials/generated/versori/credential/tokens/v1/token_pb.d.ts +38 -0
- package/script/src/services/credentials/generated/versori/credential/tokens/v1/token_pb.d.ts.map +1 -0
- package/script/src/{dsl/http → services/credentials/generated}/versori/credential/tokens/v1/token_pb.js +1 -1
- package/script/src/services/credentials/generated/versori/credential/tokens/v1/token_service_pb.d.ts +128 -0
- package/script/src/services/credentials/generated/versori/credential/tokens/v1/token_service_pb.d.ts.map +1 -0
- package/script/src/{dsl/http → services/credentials/generated}/versori/credential/tokens/v1/token_service_pb.js +1 -1
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/common_pb.d.ts +90 -0
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/common_pb.d.ts.map +1 -0
- package/script/src/{dsl/http → services/credentials/generated}/versori/credential/v1alpha1/common_pb.js +16 -6
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/credential_pb.d.ts +1468 -0
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/credential_pb.d.ts.map +1 -0
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/credential_pb.js +538 -0
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/credential_service_pb.d.ts +390 -0
- package/script/src/services/credentials/generated/versori/credential/v1alpha1/credential_service_pb.d.ts.map +1 -0
- package/script/src/{dsl/http → services/credentials/generated}/versori/credential/v1alpha1/credential_service_pb.js +1 -1
- package/script/src/services/credentials/isTokenValid.d.ts +3 -0
- package/script/src/services/credentials/isTokenValid.d.ts.map +1 -0
- package/script/src/services/credentials/isTokenValid.js +11 -0
- package/script/src/services/credentials/mod.d.ts +5 -0
- package/script/src/services/credentials/mod.d.ts.map +1 -0
- package/script/src/services/credentials/mod.js +30 -0
- package/script/src/services/credentials/oauth1-v1.d.ts +3 -0
- package/script/src/services/credentials/oauth1-v1.d.ts.map +1 -0
- package/script/src/services/credentials/oauth1-v1.js +18 -0
- package/script/src/services/credentials/oauth2-v1.d.ts +3 -0
- package/script/src/services/credentials/oauth2-v1.d.ts.map +1 -0
- package/script/src/services/credentials/oauth2-v1.js +18 -0
- package/script/src/services/credentials/tokens-v1.d.ts +3 -0
- package/script/src/services/credentials/tokens-v1.d.ts.map +1 -0
- package/script/src/services/credentials/tokens-v1.js +18 -0
- package/script/src/services/platform/PlatformApi.d.ts +7 -0
- package/script/src/services/platform/PlatformApi.d.ts.map +1 -0
- package/script/src/services/platform/PlatformApi.js +52 -0
- package/script/src/services/platform/generated/client/client.gen.d.ts +3 -0
- package/script/src/services/platform/generated/client/client.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/client/client.gen.js +180 -0
- package/script/src/services/platform/generated/client/index.d.ts +8 -0
- package/script/src/services/platform/generated/client/index.d.ts.map +1 -0
- package/script/src/services/platform/generated/client/index.js +15 -0
- package/script/src/services/platform/generated/client/types.gen.d.ts +125 -0
- package/script/src/services/platform/generated/client/types.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/client/types.gen.js +3 -0
- package/script/src/services/platform/generated/client/utils.gen.d.ts +39 -0
- package/script/src/services/platform/generated/client/utils.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/client/utils.gen.js +245 -0
- package/script/src/services/platform/generated/client.gen.d.ts +13 -0
- package/script/src/services/platform/generated/client.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/client.gen.js +8 -0
- package/script/src/services/platform/generated/core/auth.gen.d.ts +19 -0
- package/script/src/services/platform/generated/core/auth.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/auth.gen.js +18 -0
- package/script/src/services/platform/generated/core/bodySerializer.gen.d.ts +18 -0
- package/script/src/services/platform/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/bodySerializer.gen.js +60 -0
- package/script/src/services/platform/generated/core/params.gen.d.ts +34 -0
- package/script/src/services/platform/generated/core/params.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/params.gen.js +92 -0
- package/script/src/services/platform/generated/core/pathSerializer.gen.d.ts +34 -0
- package/script/src/services/platform/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/pathSerializer.gen.js +123 -0
- package/script/src/services/platform/generated/core/serverSentEvents.gen.d.ts +60 -0
- package/script/src/services/platform/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/serverSentEvents.gen.js +125 -0
- package/script/src/services/platform/generated/core/types.gen.d.ts +79 -0
- package/script/src/services/platform/generated/core/types.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/types.gen.js +3 -0
- package/script/src/services/platform/generated/core/utils.gen.d.ts +15 -0
- package/script/src/services/platform/generated/core/utils.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/core/utils.gen.js +74 -0
- package/script/src/services/platform/generated/index.d.ts +3 -0
- package/script/src/services/platform/generated/index.d.ts.map +1 -0
- package/script/src/services/platform/generated/index.js +19 -0
- package/script/src/services/platform/generated/sdk.gen.d.ts +494 -0
- package/script/src/services/platform/generated/sdk.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/sdk.gen.js +1992 -0
- package/script/src/services/platform/generated/types.gen.d.ts +3798 -0
- package/script/src/services/platform/generated/types.gen.d.ts.map +1 -0
- package/script/src/services/platform/generated/types.gen.js +3 -0
- package/script/src/services/platform/mod.d.ts +5 -0
- package/script/src/services/platform/mod.d.ts.map +1 -0
- package/script/src/services/platform/mod.js +18 -0
- package/esm/src/dsl/http/versori/credential/client.d.ts +0 -13
- package/esm/src/dsl/http/versori/credential/client.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/client.js +0 -35
- package/esm/src/dsl/http/versori/credential/credentials.d.ts +0 -98
- package/esm/src/dsl/http/versori/credential/credentials.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/credentials.js +0 -40
- package/esm/src/dsl/http/versori/credential/mod.d.ts +0 -2
- package/esm/src/dsl/http/versori/credential/mod.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/mod.js +0 -1
- package/esm/src/dsl/http/versori/credential/oauth2/v1/token_pb.d.ts +0 -13
- package/esm/src/dsl/http/versori/credential/oauth2/v1/token_pb.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/oauth2/v1/token_service_pb.d.ts +0 -102
- package/esm/src/dsl/http/versori/credential/oauth2/v1/token_service_pb.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/tokens/v1/token_pb.d.ts +0 -13
- package/esm/src/dsl/http/versori/credential/tokens/v1/token_pb.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/tokens/v1/token_service_pb.d.ts +0 -46
- package/esm/src/dsl/http/versori/credential/tokens/v1/token_service_pb.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/v1alpha1/common_pb.d.ts +0 -40
- package/esm/src/dsl/http/versori/credential/v1alpha1/common_pb.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/credential/v1alpha1/credential_service_pb.d.ts +0 -129
- package/esm/src/dsl/http/versori/credential/v1alpha1/credential_service_pb.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/roundtripper.d.ts +0 -61
- package/esm/src/dsl/http/versori/roundtripper.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/roundtripper.js +0 -967
- package/script/src/dsl/http/versori/credential/client.d.ts +0 -13
- package/script/src/dsl/http/versori/credential/client.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/client.js +0 -39
- package/script/src/dsl/http/versori/credential/credentials.d.ts +0 -98
- package/script/src/dsl/http/versori/credential/credentials.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/credentials.js +0 -46
- package/script/src/dsl/http/versori/credential/mod.d.ts +0 -2
- package/script/src/dsl/http/versori/credential/mod.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/mod.js +0 -5
- package/script/src/dsl/http/versori/credential/oauth2/v1/token_pb.d.ts +0 -13
- package/script/src/dsl/http/versori/credential/oauth2/v1/token_pb.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/oauth2/v1/token_service_pb.d.ts +0 -102
- package/script/src/dsl/http/versori/credential/oauth2/v1/token_service_pb.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/tokens/v1/token_pb.d.ts +0 -13
- package/script/src/dsl/http/versori/credential/tokens/v1/token_pb.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/tokens/v1/token_service_pb.d.ts +0 -46
- package/script/src/dsl/http/versori/credential/tokens/v1/token_service_pb.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/v1alpha1/common_pb.d.ts +0 -40
- package/script/src/dsl/http/versori/credential/v1alpha1/common_pb.d.ts.map +0 -1
- package/script/src/dsl/http/versori/credential/v1alpha1/credential_service_pb.d.ts +0 -129
- package/script/src/dsl/http/versori/credential/v1alpha1/credential_service_pb.d.ts.map +0 -1
- package/script/src/dsl/http/versori/roundtripper.d.ts +0 -61
- package/script/src/dsl/http/versori/roundtripper.d.ts.map +0 -1
- package/script/src/dsl/http/versori/roundtripper.js +0 -974
|
@@ -1,974 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.VersoriCredentialsFactory = void 0;
|
|
7
|
-
const connect_1 = require("@connectrpc/connect");
|
|
8
|
-
const mod_js_1 = require("../../../observability/mod.js");
|
|
9
|
-
const configloader_js_1 = require("./configloader.js");
|
|
10
|
-
const constants_js_1 = require("./constants.js");
|
|
11
|
-
const mod_js_2 = require("./credential/mod.js");
|
|
12
|
-
const helpers_js_1 = require("./helpers.js");
|
|
13
|
-
const platformapi_js_1 = require("./platformapi.js");
|
|
14
|
-
const node_url_1 = require("node:url");
|
|
15
|
-
const node_crypto_1 = require("node:crypto");
|
|
16
|
-
const lru_cache_1 = require("lru-cache");
|
|
17
|
-
const wkt_1 = require("@bufbuild/protobuf/wkt");
|
|
18
|
-
const oauth_1_0a_1 = __importDefault(require("oauth-1.0a")); // Importing the OAuth class as default export
|
|
19
|
-
/**
|
|
20
|
-
* VersoriRoundTripper is an implementation of the RoundTripperFactory interface for Versori connections.
|
|
21
|
-
* This is the intended implementation for when projects/services are hosted on Versori infrastructure.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* const factory = new VersoriCredentialsFactory(connectAPIClient, tokenClient);
|
|
26
|
-
* const customFetch = await factory.create('connectionName');
|
|
27
|
-
* const response = await customFetch('https://api.example.com/data');
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
class VersoriCredentialsFactory {
|
|
31
|
-
constructor(credsClient, credsBaseURL, platformAPIClient, logger, tracer, cfgReader) {
|
|
32
|
-
Object.defineProperty(this, "tokenClient", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
configurable: true,
|
|
35
|
-
writable: true,
|
|
36
|
-
value: void 0
|
|
37
|
-
});
|
|
38
|
-
Object.defineProperty(this, "credsBaseURL", {
|
|
39
|
-
enumerable: true,
|
|
40
|
-
configurable: true,
|
|
41
|
-
writable: true,
|
|
42
|
-
value: void 0
|
|
43
|
-
});
|
|
44
|
-
Object.defineProperty(this, "platformAPIClient", {
|
|
45
|
-
enumerable: true,
|
|
46
|
-
configurable: true,
|
|
47
|
-
writable: true,
|
|
48
|
-
value: void 0
|
|
49
|
-
});
|
|
50
|
-
Object.defineProperty(this, "cfgReader", {
|
|
51
|
-
enumerable: true,
|
|
52
|
-
configurable: true,
|
|
53
|
-
writable: true,
|
|
54
|
-
value: void 0
|
|
55
|
-
});
|
|
56
|
-
Object.defineProperty(this, "log", {
|
|
57
|
-
enumerable: true,
|
|
58
|
-
configurable: true,
|
|
59
|
-
writable: true,
|
|
60
|
-
value: void 0
|
|
61
|
-
});
|
|
62
|
-
Object.defineProperty(this, "tracer", {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
configurable: true,
|
|
65
|
-
writable: true,
|
|
66
|
-
value: void 0
|
|
67
|
-
});
|
|
68
|
-
Object.defineProperty(this, "oauth2Cache", {
|
|
69
|
-
enumerable: true,
|
|
70
|
-
configurable: true,
|
|
71
|
-
writable: true,
|
|
72
|
-
value: void 0
|
|
73
|
-
});
|
|
74
|
-
Object.defineProperty(this, "defaultDynamic", {
|
|
75
|
-
enumerable: true,
|
|
76
|
-
configurable: true,
|
|
77
|
-
writable: true,
|
|
78
|
-
value: (msg, values) => {
|
|
79
|
-
return (_, input, init) => {
|
|
80
|
-
this.log.error(msg, values);
|
|
81
|
-
return globalThis.fetch(input, init);
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
this.tokenClient = credsClient;
|
|
86
|
-
this.credsBaseURL = credsBaseURL;
|
|
87
|
-
this.platformAPIClient = platformAPIClient;
|
|
88
|
-
this.cfgReader = cfgReader;
|
|
89
|
-
this.log = logger;
|
|
90
|
-
this.tracer = tracer;
|
|
91
|
-
this.oauth2Cache = new lru_cache_1.LRUCache({
|
|
92
|
-
max: 1000,
|
|
93
|
-
ttl: 2000 * 60 * 5,
|
|
94
|
-
});
|
|
95
|
-
// lost 15 minutes because of this one
|
|
96
|
-
this.traceFetch = this.traceFetch.bind(this);
|
|
97
|
-
this.credentials = this.credentials.bind(this);
|
|
98
|
-
}
|
|
99
|
-
static fromEnv(logger, tracer) {
|
|
100
|
-
const credsBaseURL = Deno.env.get(constants_js_1.envVarCredsBaseURL);
|
|
101
|
-
const platformApiBaseURL = Deno.env.get(constants_js_1.envVarPlatformApiBaseURL);
|
|
102
|
-
const orgId = Deno.env.get(constants_js_1.envVarOrgId);
|
|
103
|
-
const envId = Deno.env.get(constants_js_1.envVarEnvId);
|
|
104
|
-
const cfgReader = configloader_js_1.VersoriConfigReader.fromEnv(logger);
|
|
105
|
-
if (!orgId || !envId || !platformApiBaseURL || !credsBaseURL) {
|
|
106
|
-
const missingVars = [];
|
|
107
|
-
if (!orgId)
|
|
108
|
-
missingVars.push(constants_js_1.envVarOrgId);
|
|
109
|
-
if (!envId)
|
|
110
|
-
missingVars.push(constants_js_1.envVarEnvId);
|
|
111
|
-
if (!platformApiBaseURL)
|
|
112
|
-
missingVars.push(constants_js_1.envVarPlatformApiBaseURL);
|
|
113
|
-
if (!credsBaseURL)
|
|
114
|
-
missingVars.push(constants_js_1.envVarCredsBaseURL);
|
|
115
|
-
throw new Error(`Missing environment variables: ${missingVars.join(', ')}`);
|
|
116
|
-
}
|
|
117
|
-
const log = logger || new mod_js_1.ConsoleLogger('debug');
|
|
118
|
-
const pAPIClient = new platformapi_js_1.PlatformAPIClient(platformApiBaseURL, orgId, envId, log);
|
|
119
|
-
const tokenClient = new mod_js_2.VersoriCredentialClient(credsBaseURL);
|
|
120
|
-
return new VersoriCredentialsFactory(tokenClient, credsBaseURL, pAPIClient, log, tracer, cfgReader);
|
|
121
|
-
}
|
|
122
|
-
// takes the info and modifies the url using changeBaseUrl if necessary
|
|
123
|
-
// if a full valid URL is passed as a string, it will be returned as is
|
|
124
|
-
// if a valid URL object is passed, it will be returned as is
|
|
125
|
-
changeRequestInit(info, conn) {
|
|
126
|
-
if (typeof info === 'string') {
|
|
127
|
-
if ((0, helpers_js_1.isValidURL)(info)) {
|
|
128
|
-
return info;
|
|
129
|
-
}
|
|
130
|
-
return this.changeBaseUrl(info, conn);
|
|
131
|
-
}
|
|
132
|
-
else if (info instanceof URL) {
|
|
133
|
-
return info;
|
|
134
|
-
}
|
|
135
|
-
else if (info instanceof Request) {
|
|
136
|
-
const url = this.changeBaseUrl(info.url, conn);
|
|
137
|
-
return new Request(url, info);
|
|
138
|
-
}
|
|
139
|
-
return info;
|
|
140
|
-
}
|
|
141
|
-
changeBaseUrl(pathname, conn) {
|
|
142
|
-
const connBaseURL = conn.baseUrl;
|
|
143
|
-
// if the connection has no baseUrl set, but the pathname is a valid URL, return it as is
|
|
144
|
-
if (!connBaseURL && (0, helpers_js_1.isValidURL)(pathname)) {
|
|
145
|
-
this.log.debug('Using given URL as is', { url: pathname });
|
|
146
|
-
return pathname;
|
|
147
|
-
}
|
|
148
|
-
const connBaseURLObj = new URL(connBaseURL);
|
|
149
|
-
let _pathname = pathname;
|
|
150
|
-
if ((0, helpers_js_1.isValidURL)(pathname)) {
|
|
151
|
-
const pathnameObj = new URL(pathname);
|
|
152
|
-
_pathname = pathnameObj.pathname;
|
|
153
|
-
}
|
|
154
|
-
const newURL = new URL(_pathname, connBaseURLObj.origin);
|
|
155
|
-
this.log.debug('Using baseURL from connection', { url: newURL.toString() });
|
|
156
|
-
return newURL.toString();
|
|
157
|
-
}
|
|
158
|
-
async create(connName) {
|
|
159
|
-
const cnxId = this.cfgReader.getConnectionID(connName);
|
|
160
|
-
if (!cnxId) {
|
|
161
|
-
return Promise.resolve(undefined);
|
|
162
|
-
}
|
|
163
|
-
const conn = await this.platformAPIClient.getStaticConnection(cnxId);
|
|
164
|
-
let _fetch = this.traceFetch;
|
|
165
|
-
if (!conn) {
|
|
166
|
-
this.log.error('Connection not found - using default fetch', { 'connectionName': connName, 'connectionID': cnxId });
|
|
167
|
-
return _fetch;
|
|
168
|
-
}
|
|
169
|
-
for (const cred of conn?.credentials ?? []) {
|
|
170
|
-
switch (cred.authSchemeConfig.type) {
|
|
171
|
-
case 'api-key': {
|
|
172
|
-
const apiTokenResponse = await this.getToken(cred.credential.id);
|
|
173
|
-
if (!apiTokenResponse?.token?.accessToken || !cred.authSchemeConfig.apiKey) {
|
|
174
|
-
this.log.error('API Key credential is missing token or configuration', {
|
|
175
|
-
connectionName: connName,
|
|
176
|
-
credentialId: cred.credential.id,
|
|
177
|
-
});
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
_fetch = this.apiKeyFetcherStatic(apiTokenResponse.token.accessToken, cred.authSchemeConfig.apiKey, _fetch);
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
case 'basic-auth': {
|
|
184
|
-
const basicTokenResponse = await this.getToken(cred.credential.id);
|
|
185
|
-
if (!basicTokenResponse?.token?.accessToken) {
|
|
186
|
-
this.log.error('Basic Auth credential is missing token', {
|
|
187
|
-
connectionName: connName,
|
|
188
|
-
credentialId: cred.credential.id,
|
|
189
|
-
});
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
_fetch = this.basicAuthFetcherStatic(basicTokenResponse.token.accessToken, _fetch);
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
case 'jwt-bearer': {
|
|
196
|
-
const bearerTokenResponse = await this.getToken(cred.credential.id);
|
|
197
|
-
if (!bearerTokenResponse?.token?.accessToken) {
|
|
198
|
-
this.log.error('Bearer Token credential is missing token', {
|
|
199
|
-
connectionName: connName,
|
|
200
|
-
credentialId: cred.credential.id,
|
|
201
|
-
});
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
_fetch = this.bearerTokenFetcherStatic(bearerTokenResponse.token.accessToken, _fetch);
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
case 'oauth2': {
|
|
208
|
-
if (!cred.credential?.id) {
|
|
209
|
-
this.log.error('OAuth2 credential is missing credential ID', {
|
|
210
|
-
connectionName: connName,
|
|
211
|
-
credentialId: cred.credential.id,
|
|
212
|
-
});
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
_fetch = this.oauth2FetcherStatic(cred.credential.id, _fetch);
|
|
216
|
-
break;
|
|
217
|
-
}
|
|
218
|
-
case 'oauth1': {
|
|
219
|
-
const oauth1Metadata = await this.getOAuth1Metadata(cred.credential.id);
|
|
220
|
-
if (!oauth1Metadata?.authorizationMetadata) {
|
|
221
|
-
this.log.error('OAuth1 credential is missing metadata', {
|
|
222
|
-
connectionName: connName,
|
|
223
|
-
credentialId: cred.credential.id,
|
|
224
|
-
});
|
|
225
|
-
continue;
|
|
226
|
-
}
|
|
227
|
-
_fetch = this.oauth1FetcherStatic(oauth1Metadata, _fetch);
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
case 'certificate': {
|
|
231
|
-
const mtlsData = await this.getRaw(cred.credential.id);
|
|
232
|
-
if (!mtlsData?.credential?.data['cert'] || !mtlsData?.credential?.data['key']) {
|
|
233
|
-
this.log.error('mTLS credential is missing cert or key data', {
|
|
234
|
-
connectionName: connName,
|
|
235
|
-
credentialId: cred.credential.id,
|
|
236
|
-
});
|
|
237
|
-
continue;
|
|
238
|
-
}
|
|
239
|
-
_fetch = this.mtlsFetcherStatic({
|
|
240
|
-
cert: mtlsData.credential.data['cert'],
|
|
241
|
-
key: mtlsData.credential.data['key'],
|
|
242
|
-
ca: mtlsData.credential.data['ca'],
|
|
243
|
-
}, _fetch);
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
const _fn = async (input, init) => {
|
|
249
|
-
const _input = this.changeRequestInit(input, conn);
|
|
250
|
-
return _fetch(_input, init);
|
|
251
|
-
};
|
|
252
|
-
return _fn;
|
|
253
|
-
}
|
|
254
|
-
apiKeyFetcherStatic(token, asc, fn) {
|
|
255
|
-
const _fn = async (input, init) => {
|
|
256
|
-
if (!token) {
|
|
257
|
-
throw new Error('Token not found');
|
|
258
|
-
}
|
|
259
|
-
if (!asc) {
|
|
260
|
-
throw new Error('API Key configuration not found');
|
|
261
|
-
}
|
|
262
|
-
if (!init) {
|
|
263
|
-
init = {};
|
|
264
|
-
}
|
|
265
|
-
switch (asc.in) {
|
|
266
|
-
case 'header':
|
|
267
|
-
if (!init.headers) {
|
|
268
|
-
init.headers = new Headers();
|
|
269
|
-
}
|
|
270
|
-
if (init.headers instanceof Headers) {
|
|
271
|
-
init.headers.set(asc.name, token);
|
|
272
|
-
}
|
|
273
|
-
else if (init.headers instanceof Array) {
|
|
274
|
-
init.headers.push([asc.name, token]);
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
init.headers = {
|
|
278
|
-
...init.headers,
|
|
279
|
-
[asc.name]: token,
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
break;
|
|
283
|
-
case 'query':
|
|
284
|
-
if (typeof input === 'string') {
|
|
285
|
-
const _input = new URL(input);
|
|
286
|
-
_input.searchParams.append(asc.name, token);
|
|
287
|
-
input = _input.toString();
|
|
288
|
-
}
|
|
289
|
-
else if (input instanceof Request) {
|
|
290
|
-
const _input = new URL(input.url);
|
|
291
|
-
_input.searchParams.append(asc.name, token);
|
|
292
|
-
input = new Request(_input.toString(), init);
|
|
293
|
-
}
|
|
294
|
-
else if (input instanceof URL) {
|
|
295
|
-
input.searchParams.append(asc.name, token);
|
|
296
|
-
}
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
return fn(input, init);
|
|
300
|
-
};
|
|
301
|
-
return _fn;
|
|
302
|
-
}
|
|
303
|
-
basicAuthFetcherStatic(token, fn) {
|
|
304
|
-
const _fn = async (input, init) => {
|
|
305
|
-
if (!init) {
|
|
306
|
-
init = {};
|
|
307
|
-
}
|
|
308
|
-
if (!init.headers) {
|
|
309
|
-
init.headers = new Headers();
|
|
310
|
-
}
|
|
311
|
-
if (init.headers instanceof Headers) {
|
|
312
|
-
init.headers.set('Authorization', `Basic ${token}`);
|
|
313
|
-
}
|
|
314
|
-
else if (init.headers instanceof Array) {
|
|
315
|
-
init.headers.push(['Authorization', `Basic ${token}`]);
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
init.headers = {
|
|
319
|
-
...init.headers,
|
|
320
|
-
['Authorization']: `Basic ${token}`,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
return fn(input, init);
|
|
324
|
-
};
|
|
325
|
-
return _fn;
|
|
326
|
-
}
|
|
327
|
-
bearerTokenFetcherStatic(token, fn) {
|
|
328
|
-
const _fn = async (input, init) => {
|
|
329
|
-
if (!init) {
|
|
330
|
-
init = {};
|
|
331
|
-
}
|
|
332
|
-
if (!init.headers) {
|
|
333
|
-
init.headers = new Headers();
|
|
334
|
-
}
|
|
335
|
-
if (init.headers instanceof Headers) {
|
|
336
|
-
init.headers.set('Authorization', `Bearer ${token}`);
|
|
337
|
-
}
|
|
338
|
-
else if (init.headers instanceof Array) {
|
|
339
|
-
init.headers.push(['Authorization', `Bearer ${token}`]);
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
init.headers = {
|
|
343
|
-
...init.headers,
|
|
344
|
-
['Authorization']: `Bearer ${token}`,
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
return fn(input, init);
|
|
348
|
-
};
|
|
349
|
-
return _fn;
|
|
350
|
-
}
|
|
351
|
-
// getOauth2Token fetches an OAuth2 token, stores the result in a cache, and returns the token.
|
|
352
|
-
// If forceRefresh is true, it will bypass the cache and fetch a new token then update the cache.
|
|
353
|
-
async getOAuth2Token(credId, forceRefresh = false) {
|
|
354
|
-
if (!forceRefresh && this.oauth2Cache.has(credId)) {
|
|
355
|
-
// we do cache.has so it will be there, hence the ! operator
|
|
356
|
-
const cached = this.oauth2Cache.get(credId);
|
|
357
|
-
// check the expiry: if the oauth2 token has an expiry and it is going to expire
|
|
358
|
-
// after the next 10 minutes, then simply return. Otherswise set forceRefresh to true,
|
|
359
|
-
// get a new token and update the cache
|
|
360
|
-
if (cached.expiry) {
|
|
361
|
-
if (this.checkExpiry(cached.expiry)) {
|
|
362
|
-
return Promise.resolve(cached);
|
|
363
|
-
}
|
|
364
|
-
else {
|
|
365
|
-
forceRefresh = true;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
let tokenResponse = await this.getToken(credId, forceRefresh);
|
|
370
|
-
// we need to check the expiry of this new token in case it is going to expire soon.
|
|
371
|
-
if (tokenResponse?.token?.expiry && !this.checkExpiry(tokenResponse.token.expiry)) {
|
|
372
|
-
tokenResponse = await this.getToken(credId, true);
|
|
373
|
-
}
|
|
374
|
-
const newOauthTokenData = {
|
|
375
|
-
token: tokenResponse.token?.accessToken || '',
|
|
376
|
-
tokenType: tokenResponse.token?.tokenType,
|
|
377
|
-
expiry: tokenResponse.token?.expiry,
|
|
378
|
-
};
|
|
379
|
-
this.oauth2Cache.set(credId, newOauthTokenData);
|
|
380
|
-
return Promise.resolve(newOauthTokenData);
|
|
381
|
-
}
|
|
382
|
-
// Check if the given timestamp is expiring in the next 10 minutes.
|
|
383
|
-
// Returns true if not expiring, false otherwise
|
|
384
|
-
checkExpiry(ts) {
|
|
385
|
-
return (0, wkt_1.timestampMs)(ts) > (Date.now() + 10 * 60 * 1000);
|
|
386
|
-
}
|
|
387
|
-
oauth2FetcherStatic(credId, fn) {
|
|
388
|
-
const refreshFn = async (input, init, forceRefresh = false) => {
|
|
389
|
-
const tokenResponse = await this.getOAuth2Token(credId, forceRefresh);
|
|
390
|
-
const token = tokenResponse.token;
|
|
391
|
-
const _tokenType = () => {
|
|
392
|
-
const _tt = tokenResponse.tokenType?.toLowerCase();
|
|
393
|
-
switch (_tt) {
|
|
394
|
-
case 'bearer':
|
|
395
|
-
return 'Bearer';
|
|
396
|
-
case 'mac':
|
|
397
|
-
return 'MAC';
|
|
398
|
-
case 'basic':
|
|
399
|
-
return 'Basic';
|
|
400
|
-
default:
|
|
401
|
-
return 'Bearer';
|
|
402
|
-
}
|
|
403
|
-
};
|
|
404
|
-
if (!init) {
|
|
405
|
-
init = {};
|
|
406
|
-
}
|
|
407
|
-
if (!init.headers) {
|
|
408
|
-
init.headers = new Headers();
|
|
409
|
-
}
|
|
410
|
-
if (init.headers instanceof Headers) {
|
|
411
|
-
init.headers.set('Authorization', `${_tokenType()} ${token}`);
|
|
412
|
-
}
|
|
413
|
-
else if (init.headers instanceof Array) {
|
|
414
|
-
init.headers.push(['Authorization', `${_tokenType()} ${token}`]);
|
|
415
|
-
}
|
|
416
|
-
else {
|
|
417
|
-
init.headers = {
|
|
418
|
-
...init.headers,
|
|
419
|
-
['Authorization']: `${_tokenType()} ${token}`,
|
|
420
|
-
};
|
|
421
|
-
}
|
|
422
|
-
return fn(input, init);
|
|
423
|
-
};
|
|
424
|
-
const _fn = async (input, init) => {
|
|
425
|
-
const resp = await refreshFn(input, init);
|
|
426
|
-
if (resp.status === 401 || resp.status === 403) {
|
|
427
|
-
this.log.debug('Received unauthorized response, attempting to refresh token', {
|
|
428
|
-
url: input,
|
|
429
|
-
status: resp.status,
|
|
430
|
-
});
|
|
431
|
-
return refreshFn(input, init, true);
|
|
432
|
-
}
|
|
433
|
-
return resp;
|
|
434
|
-
};
|
|
435
|
-
return _fn;
|
|
436
|
-
}
|
|
437
|
-
oauth1FetcherStatic(metadata, fn) {
|
|
438
|
-
const _fn = async (input, init) => {
|
|
439
|
-
const authParams = new node_url_1.URLSearchParams(metadata.authorizationMetadata?.authorizationParams);
|
|
440
|
-
if (!metadata.authorizationMetadata) {
|
|
441
|
-
throw new Error('OAuth1 metadata not found');
|
|
442
|
-
}
|
|
443
|
-
const oauth = new oauth_1_0a_1.default({
|
|
444
|
-
consumer: {
|
|
445
|
-
key: metadata.authorizationMetadata.consumerKey,
|
|
446
|
-
secret: metadata.authorizationMetadata.consumerSecret,
|
|
447
|
-
},
|
|
448
|
-
signature_method: 'HMAC-SHA256',
|
|
449
|
-
hash_function: (baseString, key) => (0, node_crypto_1.createHmac)('sha256', key).update(baseString).digest('base64'),
|
|
450
|
-
realm: authParams.get('realm') || undefined,
|
|
451
|
-
});
|
|
452
|
-
let url;
|
|
453
|
-
if (input instanceof Request) {
|
|
454
|
-
url = input.url;
|
|
455
|
-
}
|
|
456
|
-
else if (input instanceof URL) {
|
|
457
|
-
url = input.toString();
|
|
458
|
-
}
|
|
459
|
-
else if (typeof input === 'string') {
|
|
460
|
-
url = input;
|
|
461
|
-
}
|
|
462
|
-
else {
|
|
463
|
-
throw new Error('Invalid input type for OAuth1 fetcher');
|
|
464
|
-
}
|
|
465
|
-
const header = oauth.toHeader(oauth.authorize({
|
|
466
|
-
url: url,
|
|
467
|
-
method: init?.method || 'GET',
|
|
468
|
-
}, {
|
|
469
|
-
key: metadata.authorizationMetadata?.oauthToken,
|
|
470
|
-
secret: metadata.authorizationMetadata?.oauthTokenSecret,
|
|
471
|
-
}));
|
|
472
|
-
const authHeader = header.Authorization;
|
|
473
|
-
if (!init) {
|
|
474
|
-
init = {};
|
|
475
|
-
}
|
|
476
|
-
if (!init.headers) {
|
|
477
|
-
init.headers = new Headers();
|
|
478
|
-
}
|
|
479
|
-
if (init.headers instanceof Headers) {
|
|
480
|
-
init.headers.set('Authorization', authHeader);
|
|
481
|
-
}
|
|
482
|
-
else if (init.headers instanceof Array) {
|
|
483
|
-
init.headers.push(['Authorization', authHeader]);
|
|
484
|
-
}
|
|
485
|
-
else {
|
|
486
|
-
init.headers = {
|
|
487
|
-
...init.headers,
|
|
488
|
-
['Authorization']: authHeader,
|
|
489
|
-
};
|
|
490
|
-
}
|
|
491
|
-
return fn(input, init);
|
|
492
|
-
};
|
|
493
|
-
return _fn;
|
|
494
|
-
}
|
|
495
|
-
mtlsFetcherStatic(mtlsdata, fn) {
|
|
496
|
-
const _fn = async (input, init) => {
|
|
497
|
-
const cert = new TextDecoder().decode(mtlsdata.cert);
|
|
498
|
-
const key = new TextDecoder().decode(mtlsdata.key);
|
|
499
|
-
const caCerts = new TextDecoder().decode(mtlsdata.ca ?? new Uint8Array());
|
|
500
|
-
const httpClient = Deno.createHttpClient({
|
|
501
|
-
cert,
|
|
502
|
-
key,
|
|
503
|
-
caCerts: caCerts ? [caCerts] : [],
|
|
504
|
-
});
|
|
505
|
-
return fn(input, {
|
|
506
|
-
...init,
|
|
507
|
-
client: httpClient,
|
|
508
|
-
});
|
|
509
|
-
};
|
|
510
|
-
return _fn;
|
|
511
|
-
}
|
|
512
|
-
createDynamic(templateName) {
|
|
513
|
-
const template = this.cfgReader.getTemplateID(templateName);
|
|
514
|
-
if (!template) {
|
|
515
|
-
return Promise.resolve(undefined);
|
|
516
|
-
}
|
|
517
|
-
const _fn = async (activation, input, init) => {
|
|
518
|
-
const conn = await this.platformAPIClient.getActivationConnection(template, activation.id);
|
|
519
|
-
if (!conn) {
|
|
520
|
-
return this.defaultDynamic('Connection not found for user, using default fetch', {
|
|
521
|
-
templateName: templateName,
|
|
522
|
-
userId: activation.user.id,
|
|
523
|
-
activationId: activation.id,
|
|
524
|
-
})(activation, input, init);
|
|
525
|
-
}
|
|
526
|
-
const _input = this.changeRequestInit(input, conn);
|
|
527
|
-
let _fetch = this.traceFetch;
|
|
528
|
-
conn.credentials.forEach((cred) => {
|
|
529
|
-
switch (cred.authSchemeConfig.type) {
|
|
530
|
-
case 'api-key':
|
|
531
|
-
_fetch = this.apiKeyFetcher(cred, _fetch);
|
|
532
|
-
break;
|
|
533
|
-
case 'basic-auth':
|
|
534
|
-
_fetch = this.basicAuthFetcher(cred, _fetch);
|
|
535
|
-
break;
|
|
536
|
-
case 'jwt-bearer':
|
|
537
|
-
_fetch = this.bearerTokenFetcher(cred, _fetch);
|
|
538
|
-
break;
|
|
539
|
-
case 'oauth2':
|
|
540
|
-
_fetch = this.oauth2Fetcher(cred, _fetch);
|
|
541
|
-
break;
|
|
542
|
-
case 'certificate':
|
|
543
|
-
_fetch = this.mtlsFetcher(cred, _fetch);
|
|
544
|
-
break;
|
|
545
|
-
default:
|
|
546
|
-
break;
|
|
547
|
-
}
|
|
548
|
-
});
|
|
549
|
-
return _fetch(_input, init);
|
|
550
|
-
};
|
|
551
|
-
return Promise.resolve(_fn);
|
|
552
|
-
}
|
|
553
|
-
traceFetch(input, init) {
|
|
554
|
-
return this.tracer.startActiveSpan('fetch', async (span) => {
|
|
555
|
-
const response = await globalThis.fetch(input, init);
|
|
556
|
-
let url = new URL('http://localhost');
|
|
557
|
-
try {
|
|
558
|
-
url = new URL(input.toString());
|
|
559
|
-
}
|
|
560
|
-
catch (error) {
|
|
561
|
-
this.log.error('Error parsing URL when tracing request', { error });
|
|
562
|
-
}
|
|
563
|
-
const method = input instanceof Request ? input.method : 'GET';
|
|
564
|
-
span.setAttributes({
|
|
565
|
-
// Error attributes
|
|
566
|
-
'error.type': response.status >= 400 ? 'HTTP_ERROR' : undefined,
|
|
567
|
-
// HTTP request attributes
|
|
568
|
-
'http.request.method': method,
|
|
569
|
-
'http.response.status_code': response.status,
|
|
570
|
-
// Server attributes
|
|
571
|
-
'server.address': url.hostname,
|
|
572
|
-
'server.port': url.port || (url.protocol === 'https:' ? '443' : '80'),
|
|
573
|
-
// URL attributes
|
|
574
|
-
'url.full': url.toString(),
|
|
575
|
-
'url.path': url.pathname,
|
|
576
|
-
'url.query': url.search,
|
|
577
|
-
'url.scheme': url.protocol.replace(':', ''),
|
|
578
|
-
});
|
|
579
|
-
span.end();
|
|
580
|
-
return response;
|
|
581
|
-
});
|
|
582
|
-
}
|
|
583
|
-
credentials() {
|
|
584
|
-
return {
|
|
585
|
-
getRaw: this.getRawByName.bind(this),
|
|
586
|
-
getAccessToken: this.getTokenByName.bind(this),
|
|
587
|
-
getOAuth1Metadata: this.getOAuth1Metadata.bind(this),
|
|
588
|
-
};
|
|
589
|
-
}
|
|
590
|
-
baseUrlFetcher(templateName) {
|
|
591
|
-
let isDynamic = false;
|
|
592
|
-
let cnxId = this.cfgReader.getConnectionID(templateName);
|
|
593
|
-
if (!cnxId) {
|
|
594
|
-
this.log.debug('Connection not found in config, could be a dynamic connection', {
|
|
595
|
-
connectionName: templateName,
|
|
596
|
-
});
|
|
597
|
-
isDynamic = true;
|
|
598
|
-
cnxId = this.cfgReader.getTemplateID(templateName);
|
|
599
|
-
}
|
|
600
|
-
return async (activationId) => {
|
|
601
|
-
if (!activationId) {
|
|
602
|
-
throw new Error(`Activation ID is required for base URL fetching for connection ${templateName}`);
|
|
603
|
-
}
|
|
604
|
-
if (isDynamic) {
|
|
605
|
-
const dynamicConn = await this.platformAPIClient.getActivationConnection(cnxId, activationId);
|
|
606
|
-
if (!dynamicConn) {
|
|
607
|
-
throw new Error(`Dynamic connection ${templateName} not found for activation ${activationId}`);
|
|
608
|
-
}
|
|
609
|
-
return dynamicConn.baseUrl;
|
|
610
|
-
}
|
|
611
|
-
const staticConn = await this.platformAPIClient.getStaticConnection(cnxId);
|
|
612
|
-
if (!staticConn) {
|
|
613
|
-
throw new Error(`Static connection ${templateName} not found`);
|
|
614
|
-
}
|
|
615
|
-
return staticConn.baseUrl;
|
|
616
|
-
};
|
|
617
|
-
}
|
|
618
|
-
async getTokenByName(name, forceRefresh = false, activationId) {
|
|
619
|
-
const credId = await this.getCredentialIDFromName(name, activationId);
|
|
620
|
-
const token = await this.getToken(credId, forceRefresh);
|
|
621
|
-
if (!token?.token) {
|
|
622
|
-
throw new Error(`Token not found for connection ${name} with credential ID ${credId}`);
|
|
623
|
-
}
|
|
624
|
-
return {
|
|
625
|
-
accessToken: token.token.accessToken,
|
|
626
|
-
tokenType: token.token.tokenType,
|
|
627
|
-
expiry: token.token.expiry
|
|
628
|
-
? new Date(Number(token.token.expiry.seconds) * 1000)
|
|
629
|
-
: undefined,
|
|
630
|
-
};
|
|
631
|
-
}
|
|
632
|
-
async getRawByName(name, activationId) {
|
|
633
|
-
const credId = await this.getCredentialIDFromName(name, activationId);
|
|
634
|
-
const raw = await this.getRaw(credId);
|
|
635
|
-
if (!raw) {
|
|
636
|
-
throw new Error(`Raw data not found for connection ${name} with credential ID ${credId}`);
|
|
637
|
-
}
|
|
638
|
-
const buffer = raw?.credential?.data['raw'] ?? undefined;
|
|
639
|
-
if (!buffer) {
|
|
640
|
-
throw new Error(`Credential ${raw?.credential?.id} is missing raw data, please contact your administrator`);
|
|
641
|
-
}
|
|
642
|
-
return Promise.resolve(buffer);
|
|
643
|
-
}
|
|
644
|
-
async getCredentialIDFromName(name, activationId) {
|
|
645
|
-
// fin connection config from versori file
|
|
646
|
-
const conn = this.cfgReader.getCnxMapping(name);
|
|
647
|
-
if (!conn) {
|
|
648
|
-
return '';
|
|
649
|
-
}
|
|
650
|
-
// if connection is dynamic try and load the activation
|
|
651
|
-
if (conn.dynamic) {
|
|
652
|
-
if (!activationId) {
|
|
653
|
-
throw new Error(`Connection ${name} is dynamic, but no activation ID was found on the context`);
|
|
654
|
-
}
|
|
655
|
-
if (!conn.templateId) {
|
|
656
|
-
throw new Error(`Connection ${name} is dynamic, but no template ID was found on the config`);
|
|
657
|
-
}
|
|
658
|
-
const dynamicConn = await this.platformAPIClient.getActivationConnection(conn.templateId, activationId);
|
|
659
|
-
if (!dynamicConn) {
|
|
660
|
-
throw new Error(`Connection ${name} not found`);
|
|
661
|
-
}
|
|
662
|
-
return dynamicConn.credentials[0].credential.id;
|
|
663
|
-
}
|
|
664
|
-
// connection is not dynamic try and load static connection
|
|
665
|
-
if (!conn.connId) {
|
|
666
|
-
throw new Error(`Connection ${name} is static, but no connection ID was found on the config`);
|
|
667
|
-
}
|
|
668
|
-
const staticConn = await this.platformAPIClient.getStaticConnection(conn.connId);
|
|
669
|
-
if (!conn) {
|
|
670
|
-
throw new Error(`Connection ${name} not found`);
|
|
671
|
-
}
|
|
672
|
-
if (!staticConn?.credentials[0]?.credential?.id) {
|
|
673
|
-
throw new Error(`Connection ${name}/${conn.connId} has no credentials defined on it`);
|
|
674
|
-
}
|
|
675
|
-
return staticConn.credentials[0].credential.id;
|
|
676
|
-
}
|
|
677
|
-
apiKeyFetcher(cred, fn) {
|
|
678
|
-
const _fn = async (input, init) => {
|
|
679
|
-
const tokenResponse = await this.getToken(cred.credential.id);
|
|
680
|
-
const token = tokenResponse.token?.accessToken;
|
|
681
|
-
const asc = cred.authSchemeConfig.apiKey;
|
|
682
|
-
if (!token) {
|
|
683
|
-
throw new Error('Token not found');
|
|
684
|
-
}
|
|
685
|
-
if (!asc) {
|
|
686
|
-
throw new Error('API Key configuration not found');
|
|
687
|
-
}
|
|
688
|
-
if (!init) {
|
|
689
|
-
init = {};
|
|
690
|
-
}
|
|
691
|
-
switch (asc.in) {
|
|
692
|
-
case 'header':
|
|
693
|
-
if (!init.headers) {
|
|
694
|
-
init.headers = new Headers();
|
|
695
|
-
}
|
|
696
|
-
if (init.headers instanceof Headers) {
|
|
697
|
-
init.headers.set(asc.name, token);
|
|
698
|
-
}
|
|
699
|
-
else if (init.headers instanceof Array) {
|
|
700
|
-
init.headers.push([asc.name, token]);
|
|
701
|
-
}
|
|
702
|
-
else {
|
|
703
|
-
init.headers = {
|
|
704
|
-
...init.headers,
|
|
705
|
-
[asc.name]: token,
|
|
706
|
-
};
|
|
707
|
-
}
|
|
708
|
-
break;
|
|
709
|
-
case 'query':
|
|
710
|
-
if (typeof input === 'string') {
|
|
711
|
-
input += `?${asc.name}=${token}`;
|
|
712
|
-
}
|
|
713
|
-
else if (input instanceof Request) {
|
|
714
|
-
input = new Request(input.url + `?${asc.name}=${token}`, init);
|
|
715
|
-
}
|
|
716
|
-
else if (input instanceof URL) {
|
|
717
|
-
input.searchParams.append(asc.name, token);
|
|
718
|
-
}
|
|
719
|
-
break;
|
|
720
|
-
}
|
|
721
|
-
return fn(input, init);
|
|
722
|
-
};
|
|
723
|
-
return _fn;
|
|
724
|
-
}
|
|
725
|
-
basicAuthFetcher(cred, fn) {
|
|
726
|
-
const _fn = async (input, init) => {
|
|
727
|
-
const tokenResponse = await this.getToken(cred.credential.id);
|
|
728
|
-
const token = tokenResponse.token?.accessToken;
|
|
729
|
-
if (!token) {
|
|
730
|
-
throw new Error('Token not found');
|
|
731
|
-
}
|
|
732
|
-
if (!init) {
|
|
733
|
-
init = {};
|
|
734
|
-
}
|
|
735
|
-
if (!init.headers) {
|
|
736
|
-
init.headers = new Headers();
|
|
737
|
-
}
|
|
738
|
-
if (init.headers instanceof Headers) {
|
|
739
|
-
init.headers.set('Authorization', `Basic ${token}`);
|
|
740
|
-
}
|
|
741
|
-
else if (init.headers instanceof Array) {
|
|
742
|
-
init.headers.push(['Authorization', `Basic ${token}`]);
|
|
743
|
-
}
|
|
744
|
-
else {
|
|
745
|
-
init.headers = {
|
|
746
|
-
...init.headers,
|
|
747
|
-
['Authorization']: `Basic ${token}`,
|
|
748
|
-
};
|
|
749
|
-
}
|
|
750
|
-
return fn(input, init);
|
|
751
|
-
};
|
|
752
|
-
return _fn;
|
|
753
|
-
}
|
|
754
|
-
// TODO: need to make the prefix and header name configurable from authschemeconfig
|
|
755
|
-
bearerTokenFetcher(cred, fn) {
|
|
756
|
-
const _fn = async (input, init) => {
|
|
757
|
-
const tokenResponse = await this.getToken(cred.credential.id);
|
|
758
|
-
const token = tokenResponse.token?.accessToken;
|
|
759
|
-
if (!token) {
|
|
760
|
-
throw new Error('Token not found');
|
|
761
|
-
}
|
|
762
|
-
if (!init) {
|
|
763
|
-
init = {};
|
|
764
|
-
}
|
|
765
|
-
if (!init.headers) {
|
|
766
|
-
init.headers = new Headers();
|
|
767
|
-
}
|
|
768
|
-
if (init.headers instanceof Headers) {
|
|
769
|
-
init.headers.set('Authorization', `Bearer ${token}`);
|
|
770
|
-
}
|
|
771
|
-
else if (init.headers instanceof Array) {
|
|
772
|
-
init.headers.push(['Authorization', `Bearer ${token}`]);
|
|
773
|
-
}
|
|
774
|
-
else {
|
|
775
|
-
init.headers = {
|
|
776
|
-
...init.headers,
|
|
777
|
-
['Authorization']: `Bearer ${token}`,
|
|
778
|
-
};
|
|
779
|
-
}
|
|
780
|
-
return fn(input, init);
|
|
781
|
-
};
|
|
782
|
-
return _fn;
|
|
783
|
-
}
|
|
784
|
-
oauth2Fetcher(cred, fn) {
|
|
785
|
-
const refreshFn = async (input, init, forceRefresh = false) => {
|
|
786
|
-
const tokenResponse = await this.getToken(cred.credential.id, forceRefresh);
|
|
787
|
-
const token = tokenResponse.token?.accessToken;
|
|
788
|
-
const tokenType = tokenResponse.token?.tokenType;
|
|
789
|
-
if (!token) {
|
|
790
|
-
throw new Error('Token not found');
|
|
791
|
-
}
|
|
792
|
-
const _tokenType = () => {
|
|
793
|
-
const _tt = tokenType?.toLowerCase();
|
|
794
|
-
switch (_tt) {
|
|
795
|
-
case 'bearer':
|
|
796
|
-
return 'Bearer';
|
|
797
|
-
case 'mac':
|
|
798
|
-
return 'MAC';
|
|
799
|
-
case 'basic':
|
|
800
|
-
return 'Basic';
|
|
801
|
-
default:
|
|
802
|
-
return 'Bearer';
|
|
803
|
-
}
|
|
804
|
-
};
|
|
805
|
-
if (!init) {
|
|
806
|
-
init = {};
|
|
807
|
-
}
|
|
808
|
-
if (!init.headers) {
|
|
809
|
-
init.headers = new Headers();
|
|
810
|
-
}
|
|
811
|
-
if (init.headers instanceof Headers) {
|
|
812
|
-
init.headers.set('Authorization', `${_tokenType()} ${token}`);
|
|
813
|
-
}
|
|
814
|
-
else if (init.headers instanceof Array) {
|
|
815
|
-
init.headers.push(['Authorization', `${_tokenType()} ${token}`]);
|
|
816
|
-
}
|
|
817
|
-
else {
|
|
818
|
-
init.headers = {
|
|
819
|
-
...init.headers,
|
|
820
|
-
['Authorization']: `${_tokenType()} ${token}`,
|
|
821
|
-
};
|
|
822
|
-
}
|
|
823
|
-
return fn(input, init);
|
|
824
|
-
};
|
|
825
|
-
const _fn = async (input, init) => {
|
|
826
|
-
const resp = await refreshFn(input, init);
|
|
827
|
-
if (resp.status === 401) {
|
|
828
|
-
this.log.debug('Received 401 Unauthorized response, attempting refresh', {
|
|
829
|
-
url: input,
|
|
830
|
-
status: resp.status,
|
|
831
|
-
});
|
|
832
|
-
// TODO: attempt refresh until precondition failed??
|
|
833
|
-
return refreshFn(input, init, true);
|
|
834
|
-
}
|
|
835
|
-
return Promise.resolve(resp);
|
|
836
|
-
};
|
|
837
|
-
return _fn;
|
|
838
|
-
}
|
|
839
|
-
oauth1Fetcher(cred, fn) {
|
|
840
|
-
const _fn = async (input, init) => {
|
|
841
|
-
const metadata = await this.getOAuth1Metadata(cred.credential.id);
|
|
842
|
-
const authParams = new node_url_1.URLSearchParams(metadata.authorizationMetadata?.authorizationParams);
|
|
843
|
-
if (!metadata.authorizationMetadata) {
|
|
844
|
-
throw new Error('OAuth1 metadata not found');
|
|
845
|
-
}
|
|
846
|
-
const oauth = new oauth_1_0a_1.default({
|
|
847
|
-
consumer: {
|
|
848
|
-
key: metadata.authorizationMetadata.consumerKey,
|
|
849
|
-
secret: metadata.authorizationMetadata.consumerSecret,
|
|
850
|
-
},
|
|
851
|
-
signature_method: 'HMAC-SHA256',
|
|
852
|
-
hash_function: (baseString, key) => (0, node_crypto_1.createHmac)('sha256', key).update(baseString).digest('base64'),
|
|
853
|
-
realm: authParams.get('realm') || undefined,
|
|
854
|
-
});
|
|
855
|
-
let url;
|
|
856
|
-
if (input instanceof Request) {
|
|
857
|
-
url = input.url;
|
|
858
|
-
}
|
|
859
|
-
else if (input instanceof URL) {
|
|
860
|
-
url = input.toString();
|
|
861
|
-
}
|
|
862
|
-
else if (typeof input === 'string') {
|
|
863
|
-
url = input;
|
|
864
|
-
}
|
|
865
|
-
else {
|
|
866
|
-
throw new Error('Invalid input type for OAuth1 fetcher');
|
|
867
|
-
}
|
|
868
|
-
const header = oauth.toHeader(oauth.authorize({
|
|
869
|
-
url: url,
|
|
870
|
-
method: init?.method || 'GET',
|
|
871
|
-
}, {
|
|
872
|
-
key: metadata.authorizationMetadata?.oauthToken,
|
|
873
|
-
secret: metadata.authorizationMetadata?.oauthTokenSecret,
|
|
874
|
-
}));
|
|
875
|
-
const authHeader = header.Authorization;
|
|
876
|
-
if (!init) {
|
|
877
|
-
init = {};
|
|
878
|
-
}
|
|
879
|
-
if (!init.headers) {
|
|
880
|
-
init.headers = new Headers();
|
|
881
|
-
}
|
|
882
|
-
if (init.headers instanceof Headers) {
|
|
883
|
-
init.headers.set('Authorization', authHeader);
|
|
884
|
-
}
|
|
885
|
-
else if (init.headers instanceof Array) {
|
|
886
|
-
init.headers.push(['Authorization', authHeader]);
|
|
887
|
-
}
|
|
888
|
-
else {
|
|
889
|
-
init.headers = {
|
|
890
|
-
...init.headers,
|
|
891
|
-
['Authorization']: authHeader,
|
|
892
|
-
};
|
|
893
|
-
}
|
|
894
|
-
return fn(input, init);
|
|
895
|
-
};
|
|
896
|
-
return _fn;
|
|
897
|
-
}
|
|
898
|
-
mtlsFetcher(cred, fn) {
|
|
899
|
-
const _fn = async (input, init) => {
|
|
900
|
-
const raw = await this.getRaw(cred.credential.id);
|
|
901
|
-
if (!raw?.credential?.data) {
|
|
902
|
-
throw new Error(`Cannot fetch MTLS credentials for connection ${cred.credential.name}, no data found`);
|
|
903
|
-
}
|
|
904
|
-
const cert = new TextDecoder().decode(raw.credential.data['certificate']);
|
|
905
|
-
const key = new TextDecoder().decode(raw.credential.data['key']);
|
|
906
|
-
const caCerts = new TextDecoder().decode(raw.credential.data['ca'] || '');
|
|
907
|
-
const httpClient = Deno.createHttpClient({
|
|
908
|
-
cert,
|
|
909
|
-
key,
|
|
910
|
-
caCerts: caCerts ? [caCerts] : [],
|
|
911
|
-
});
|
|
912
|
-
return fn(input, {
|
|
913
|
-
...init,
|
|
914
|
-
client: httpClient,
|
|
915
|
-
});
|
|
916
|
-
};
|
|
917
|
-
return _fn;
|
|
918
|
-
}
|
|
919
|
-
async getToken(id, forceRefresh = false) {
|
|
920
|
-
try {
|
|
921
|
-
return await this.tokenClient.getToken(id, forceRefresh);
|
|
922
|
-
}
|
|
923
|
-
catch (error) {
|
|
924
|
-
this.log.error('unable to get token credential', { error });
|
|
925
|
-
if (error instanceof connect_1.ConnectError) {
|
|
926
|
-
if (error.rawMessage.includes('connection error received: not a result of an error') &&
|
|
927
|
-
error.code === connect_1.Code.Internal) {
|
|
928
|
-
this.log.info('Connection error received, attempting to reconnect');
|
|
929
|
-
this.tokenClient = new mod_js_2.VersoriCredentialClient(this.credsBaseURL);
|
|
930
|
-
return await this.tokenClient.getToken(id);
|
|
931
|
-
}
|
|
932
|
-
throw error;
|
|
933
|
-
}
|
|
934
|
-
throw error;
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
async getRaw(id) {
|
|
938
|
-
try {
|
|
939
|
-
return await this.tokenClient.getRaw(id);
|
|
940
|
-
}
|
|
941
|
-
catch (error) {
|
|
942
|
-
this.log.error('unable to get raw credential', { error });
|
|
943
|
-
if (error instanceof connect_1.ConnectError) {
|
|
944
|
-
if (error.rawMessage.includes('connection error received: not a result of an error') &&
|
|
945
|
-
error.code === connect_1.Code.Internal) {
|
|
946
|
-
this.log.info('Connection error received, attempting to reconnect');
|
|
947
|
-
this.tokenClient = new mod_js_2.VersoriCredentialClient(this.credsBaseURL);
|
|
948
|
-
return await this.tokenClient.getRaw(id);
|
|
949
|
-
}
|
|
950
|
-
throw error;
|
|
951
|
-
}
|
|
952
|
-
throw error;
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
async getOAuth1Metadata(id) {
|
|
956
|
-
try {
|
|
957
|
-
return await this.tokenClient.getOAuth1Metadata(id);
|
|
958
|
-
}
|
|
959
|
-
catch (error) {
|
|
960
|
-
this.log.error('unable to get OAuth1 metadata', { error });
|
|
961
|
-
if (error instanceof connect_1.ConnectError) {
|
|
962
|
-
if (error.rawMessage.includes('connection error received: not a result of an error') &&
|
|
963
|
-
error.code === connect_1.Code.Internal) {
|
|
964
|
-
this.log.info('Connection error received, attempting to reconnect');
|
|
965
|
-
this.tokenClient = new mod_js_2.VersoriCredentialClient(this.credsBaseURL);
|
|
966
|
-
return await this.tokenClient.getOAuth1Metadata(id);
|
|
967
|
-
}
|
|
968
|
-
throw error;
|
|
969
|
-
}
|
|
970
|
-
throw error;
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
exports.VersoriCredentialsFactory = VersoriCredentialsFactory;
|