@factset/frontgate-js-sdk 6.9.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/CHANGELOG.md +1112 -0
- package/LICENSE +201 -0
- package/README.md +44 -0
- package/dist/lib/esnext/FrontgateClient.js +142 -0
- package/dist/lib/esnext/FrontgateClient.js.map +1 -0
- package/dist/lib/esnext/Mdg2Client.js +186 -0
- package/dist/lib/esnext/Mdg2Client.js.map +1 -0
- package/dist/lib/esnext/authentication/AbstractAuthentication.js +50 -0
- package/dist/lib/esnext/authentication/AbstractAuthentication.js.map +1 -0
- package/dist/lib/esnext/authentication/AppAuthentication.js +71 -0
- package/dist/lib/esnext/authentication/AppAuthentication.js.map +1 -0
- package/dist/lib/esnext/authentication/AuthenticationInterface.js +2 -0
- package/dist/lib/esnext/authentication/AuthenticationInterface.js.map +1 -0
- package/dist/lib/esnext/authentication/CookieTokenAuthentication.js +19 -0
- package/dist/lib/esnext/authentication/CookieTokenAuthentication.js.map +1 -0
- package/dist/lib/esnext/authentication/CookieTokenAuthenticationFactors.js +16 -0
- package/dist/lib/esnext/authentication/CookieTokenAuthenticationFactors.js.map +1 -0
- package/dist/lib/esnext/authentication/TokenAuthentication.js +43 -0
- package/dist/lib/esnext/authentication/TokenAuthentication.js.map +1 -0
- package/dist/lib/esnext/authentication/UserCredentialAuthentication.js +74 -0
- package/dist/lib/esnext/authentication/UserCredentialAuthentication.js.map +1 -0
- package/dist/lib/esnext/authentication/UserPasswordAuthentication.js +72 -0
- package/dist/lib/esnext/authentication/UserPasswordAuthentication.js.map +1 -0
- package/dist/lib/esnext/authentication/index.js +6 -0
- package/dist/lib/esnext/authentication/index.js.map +1 -0
- package/dist/lib/esnext/authentication/util/ChallengeResolver.js +33 -0
- package/dist/lib/esnext/authentication/util/ChallengeResolver.js.map +1 -0
- package/dist/lib/esnext/authentication/util/SecretGenerator.js +63 -0
- package/dist/lib/esnext/authentication/util/SecretGenerator.js.map +1 -0
- package/dist/lib/esnext/authentication/util/index.js +3 -0
- package/dist/lib/esnext/authentication/util/index.js.map +1 -0
- package/dist/lib/esnext/common/Mdg2ClientOptions.js +2 -0
- package/dist/lib/esnext/common/Mdg2ClientOptions.js.map +1 -0
- package/dist/lib/esnext/common/constants.js +11 -0
- package/dist/lib/esnext/common/constants.js.map +1 -0
- package/dist/lib/esnext/common/errors.js +43 -0
- package/dist/lib/esnext/common/errors.js.map +1 -0
- package/dist/lib/esnext/common/functions.js +98 -0
- package/dist/lib/esnext/common/functions.js.map +1 -0
- package/dist/lib/esnext/common/interfaces/PtlMessage.js +2 -0
- package/dist/lib/esnext/common/interfaces/PtlMessage.js.map +1 -0
- package/dist/lib/esnext/common/interfaces/index.js +5 -0
- package/dist/lib/esnext/common/interfaces/index.js.map +1 -0
- package/dist/lib/esnext/common/interfaces/observe/ObserveOptions.js +2 -0
- package/dist/lib/esnext/common/interfaces/observe/ObserveOptions.js.map +1 -0
- package/dist/lib/esnext/common/interfaces/result/HTTPProxyRequestResult.js +2 -0
- package/dist/lib/esnext/common/interfaces/result/HTTPProxyRequestResult.js.map +1 -0
- package/dist/lib/esnext/common/interfaces/result/HighLevelRequestResult.js +2 -0
- package/dist/lib/esnext/common/interfaces/result/HighLevelRequestResult.js.map +1 -0
- package/dist/lib/esnext/common/interfaces/result/RequestResult.js +2 -0
- package/dist/lib/esnext/common/interfaces/result/RequestResult.js.map +1 -0
- package/dist/lib/esnext/common/types/Quality.js +2 -0
- package/dist/lib/esnext/common/types/Quality.js.map +1 -0
- package/dist/lib/esnext/common/types/RequestQuality.js +2 -0
- package/dist/lib/esnext/common/types/RequestQuality.js.map +1 -0
- package/dist/lib/esnext/common/types/index.js +3 -0
- package/dist/lib/esnext/common/types/index.js.map +1 -0
- package/dist/lib/esnext/compat/index.js +11 -0
- package/dist/lib/esnext/compat/index.js.map +1 -0
- package/dist/lib/esnext/connection/AbstractFrontgateConnection.js +325 -0
- package/dist/lib/esnext/connection/AbstractFrontgateConnection.js.map +1 -0
- package/dist/lib/esnext/connection/ConnectionInterface.js +2 -0
- package/dist/lib/esnext/connection/ConnectionInterface.js.map +1 -0
- package/dist/lib/esnext/connection/FrontgateWSConnection.js +282 -0
- package/dist/lib/esnext/connection/FrontgateWSConnection.js.map +1 -0
- package/dist/lib/esnext/connection/JobPromise.js +3 -0
- package/dist/lib/esnext/connection/JobPromise.js.map +1 -0
- package/dist/lib/esnext/connection/LatencyHandler.js +2 -0
- package/dist/lib/esnext/connection/LatencyHandler.js.map +1 -0
- package/dist/lib/esnext/connection/LatencyTracker.js +48 -0
- package/dist/lib/esnext/connection/LatencyTracker.js.map +1 -0
- package/dist/lib/esnext/connection/MessageProcessor.js +2 -0
- package/dist/lib/esnext/connection/MessageProcessor.js.map +1 -0
- package/dist/lib/esnext/connection/index.js +8 -0
- package/dist/lib/esnext/connection/index.js.map +1 -0
- package/dist/lib/esnext/connection/util/Compressor.js +52 -0
- package/dist/lib/esnext/connection/util/Compressor.js.map +1 -0
- package/dist/lib/esnext/connection/util/Encoding.js +15 -0
- package/dist/lib/esnext/connection/util/Encoding.js.map +1 -0
- package/dist/lib/esnext/connection/util/functions.js +66 -0
- package/dist/lib/esnext/connection/util/functions.js.map +1 -0
- package/dist/lib/esnext/core/RequestModule.js +350 -0
- package/dist/lib/esnext/core/RequestModule.js.map +1 -0
- package/dist/lib/esnext/core/SubscriptionModule.js +105 -0
- package/dist/lib/esnext/core/SubscriptionModule.js.map +1 -0
- package/dist/lib/esnext/core/subscription/EndpointHandler.js +122 -0
- package/dist/lib/esnext/core/subscription/EndpointHandler.js.map +1 -0
- package/dist/lib/esnext/core/subscription/SubjectManager.js +40 -0
- package/dist/lib/esnext/core/subscription/SubjectManager.js.map +1 -0
- package/dist/lib/esnext/index.js +11 -0
- package/dist/lib/esnext/index.js.map +1 -0
- package/dist/lib/esnext/logger/AbstractLogger.js +99 -0
- package/dist/lib/esnext/logger/AbstractLogger.js.map +1 -0
- package/dist/lib/esnext/logger/ConsoleLogger.js +33 -0
- package/dist/lib/esnext/logger/ConsoleLogger.js.map +1 -0
- package/dist/lib/esnext/logger/LoggerHelper.js +25 -0
- package/dist/lib/esnext/logger/LoggerHelper.js.map +1 -0
- package/dist/lib/esnext/logger/LoggerInterface.js +2 -0
- package/dist/lib/esnext/logger/LoggerInterface.js.map +1 -0
- package/dist/lib/esnext/logger/NullLogger.js +15 -0
- package/dist/lib/esnext/logger/NullLogger.js.map +1 -0
- package/dist/lib/esnext/logger/WinstonLogger.js +34 -0
- package/dist/lib/esnext/logger/WinstonLogger.js.map +1 -0
- package/dist/lib/esnext/logger/index.js +7 -0
- package/dist/lib/esnext/logger/index.js.map +1 -0
- package/dist/lib/esnext/message/MessageFactory.js +37 -0
- package/dist/lib/esnext/message/MessageFactory.js.map +1 -0
- package/dist/lib/esnext/message/guards.js +22 -0
- package/dist/lib/esnext/message/guards.js.map +1 -0
- package/dist/lib/esnext/message/index.js +7 -0
- package/dist/lib/esnext/message/index.js.map +1 -0
- package/dist/lib/esnext/message/interfaces/HTTPProxyRequestOptions.js +2 -0
- package/dist/lib/esnext/message/interfaces/HTTPProxyRequestOptions.js.map +1 -0
- package/dist/lib/esnext/message/interfaces/HighLevelRequestMethod.js +2 -0
- package/dist/lib/esnext/message/interfaces/HighLevelRequestMethod.js.map +1 -0
- package/dist/lib/esnext/message/interfaces/HighLevelRequestOptions.js +2 -0
- package/dist/lib/esnext/message/interfaces/HighLevelRequestOptions.js.map +1 -0
- package/dist/lib/esnext/message/interfaces/JobObservable.js +2 -0
- package/dist/lib/esnext/message/interfaces/JobObservable.js.map +1 -0
- package/dist/lib/esnext/message/interfaces/index.js +5 -0
- package/dist/lib/esnext/message/interfaces/index.js.map +1 -0
- package/dist/lib/esnext/message/request/AbstractMdg2Request.js +17 -0
- package/dist/lib/esnext/message/request/AbstractMdg2Request.js.map +1 -0
- package/dist/lib/esnext/message/request/AuthenticationByTokenRequest.js +32 -0
- package/dist/lib/esnext/message/request/AuthenticationByTokenRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/AuthenticationRequest.js +30 -0
- package/dist/lib/esnext/message/request/AuthenticationRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/AuthenticationTokenRequest.js +24 -0
- package/dist/lib/esnext/message/request/AuthenticationTokenRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/CancelSubscriptionRequest.js +10 -0
- package/dist/lib/esnext/message/request/CancelSubscriptionRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/ConfigurationRequest.js +76 -0
- package/dist/lib/esnext/message/request/ConfigurationRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/HTTPProxyRequest.js +121 -0
- package/dist/lib/esnext/message/request/HTTPProxyRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/HighLevelRequest.js +89 -0
- package/dist/lib/esnext/message/request/HighLevelRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/PingRequest.js +23 -0
- package/dist/lib/esnext/message/request/PingRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/TransportLayerClientRequestHeader.js +109 -0
- package/dist/lib/esnext/message/request/TransportLayerClientRequestHeader.js.map +1 -0
- package/dist/lib/esnext/message/request/index.js +10 -0
- package/dist/lib/esnext/message/request/index.js.map +1 -0
- package/dist/lib/esnext/message/request/raw/RawRequest.js +15 -0
- package/dist/lib/esnext/message/request/raw/RawRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/raw/RawRequestFactory.js +19 -0
- package/dist/lib/esnext/message/request/raw/RawRequestFactory.js.map +1 -0
- package/dist/lib/esnext/message/request/raw/example/CreateNotationSearchRequest.js +568 -0
- package/dist/lib/esnext/message/request/raw/example/CreateNotationSearchRequest.js.map +1 -0
- package/dist/lib/esnext/message/request/raw/index.js +3 -0
- package/dist/lib/esnext/message/request/raw/index.js.map +1 -0
- package/dist/lib/esnext/message/response/AuthenticationByTokenResponse.js +2 -0
- package/dist/lib/esnext/message/response/AuthenticationByTokenResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/AuthenticationResponse.js +2 -0
- package/dist/lib/esnext/message/response/AuthenticationResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/AuthenticationTokenResponse.js +22 -0
- package/dist/lib/esnext/message/response/AuthenticationTokenResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/CancelSubscriptionResponse.js +4 -0
- package/dist/lib/esnext/message/response/CancelSubscriptionResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/ConfigurationResponse.js +2 -0
- package/dist/lib/esnext/message/response/ConfigurationResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/DisconnectionMessage.js +2 -0
- package/dist/lib/esnext/message/response/DisconnectionMessage.js.map +1 -0
- package/dist/lib/esnext/message/response/ErrorResponse.js +10 -0
- package/dist/lib/esnext/message/response/ErrorResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/HTTPProxyResponse.js +30 -0
- package/dist/lib/esnext/message/response/HTTPProxyResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/HighLevelResponse.js +25 -0
- package/dist/lib/esnext/message/response/HighLevelResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/LoadNotificationMessage.js +2 -0
- package/dist/lib/esnext/message/response/LoadNotificationMessage.js.map +1 -0
- package/dist/lib/esnext/message/response/Mdg2Response.js +28 -0
- package/dist/lib/esnext/message/response/Mdg2Response.js.map +1 -0
- package/dist/lib/esnext/message/response/PermissionDeniedResponse.js +7 -0
- package/dist/lib/esnext/message/response/PermissionDeniedResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/PingResponse.js +32 -0
- package/dist/lib/esnext/message/response/PingResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/RejectResponse.js +10 -0
- package/dist/lib/esnext/message/response/RejectResponse.js.map +1 -0
- package/dist/lib/esnext/message/response/index.js +14 -0
- package/dist/lib/esnext/message/response/index.js.map +1 -0
- package/dist/lib/esnext/message/types/Time.js +9 -0
- package/dist/lib/esnext/message/types/Time.js.map +1 -0
- package/dist/lib/esnext/message/types/TransportLayerClientRequestHeaderFlag.js +2 -0
- package/dist/lib/esnext/message/types/TransportLayerClientRequestHeaderFlag.js.map +1 -0
- package/dist/lib/esnext/message/types/index.js +3 -0
- package/dist/lib/esnext/message/types/index.js.map +1 -0
- package/dist/lib/esnext/message/update/HighLevelUpdate.js +19 -0
- package/dist/lib/esnext/message/update/HighLevelUpdate.js.map +1 -0
- package/dist/lib/esnext/message/update/SubscriptionLossMessage.js +11 -0
- package/dist/lib/esnext/message/update/SubscriptionLossMessage.js.map +1 -0
- package/dist/lib/esnext/message/update/index.js +3 -0
- package/dist/lib/esnext/message/update/index.js.map +1 -0
- package/dist/lib/esnext/mixins/AuthTokenRequestMixin.js +38 -0
- package/dist/lib/esnext/mixins/AuthTokenRequestMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/EndpointRequestMixin.js +87 -0
- package/dist/lib/esnext/mixins/EndpointRequestMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/HTTPProxyRequestMixin.js +47 -0
- package/dist/lib/esnext/mixins/HTTPProxyRequestMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/LoggerMixin.js +19 -0
- package/dist/lib/esnext/mixins/LoggerMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/MessageCompressorMixin.js +46 -0
- package/dist/lib/esnext/mixins/MessageCompressorMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/OpenTelemetryMixin.js +65 -0
- package/dist/lib/esnext/mixins/OpenTelemetryMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/ReconnectMixin.js +71 -0
- package/dist/lib/esnext/mixins/ReconnectMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/RequestMixin.js +31 -0
- package/dist/lib/esnext/mixins/RequestMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/AppAuthMixin.js +43 -0
- package/dist/lib/esnext/mixins/auth/AppAuthMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/CookieTokenAuthMixin.js +47 -0
- package/dist/lib/esnext/mixins/auth/CookieTokenAuthMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/FetchAuthenticationMixin.js +128 -0
- package/dist/lib/esnext/mixins/auth/FetchAuthenticationMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/SessionAuthMixin.js +181 -0
- package/dist/lib/esnext/mixins/auth/SessionAuthMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/TokenAuthMixin.js +60 -0
- package/dist/lib/esnext/mixins/auth/TokenAuthMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/UserCredentialAuthMixin.js +44 -0
- package/dist/lib/esnext/mixins/auth/UserCredentialAuthMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/UserPasswordAuthMixin.js +44 -0
- package/dist/lib/esnext/mixins/auth/UserPasswordAuthMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/auth/index.js +34 -0
- package/dist/lib/esnext/mixins/auth/index.js.map +1 -0
- package/dist/lib/esnext/mixins/connection/FrontgateWSMixin.js +326 -0
- package/dist/lib/esnext/mixins/connection/FrontgateWSMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/connection/index.js +2 -0
- package/dist/lib/esnext/mixins/connection/index.js.map +1 -0
- package/dist/lib/esnext/mixins/index.js +20 -0
- package/dist/lib/esnext/mixins/index.js.map +1 -0
- package/dist/lib/esnext/mixins/subscription/DataObserver.js +117 -0
- package/dist/lib/esnext/mixins/subscription/DataObserver.js.map +1 -0
- package/dist/lib/esnext/mixins/subscription/EndpointSubscriptionMixin.js +193 -0
- package/dist/lib/esnext/mixins/subscription/EndpointSubscriptionMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/subscription/RawSubscriptionMixin.js +156 -0
- package/dist/lib/esnext/mixins/subscription/RawSubscriptionMixin.js.map +1 -0
- package/dist/lib/esnext/mixins/subscription/index.js +4 -0
- package/dist/lib/esnext/mixins/subscription/index.js.map +1 -0
- package/dist/lib/esnext/util/TimeOutWrapper.js +52 -0
- package/dist/lib/esnext/util/TimeOutWrapper.js.map +1 -0
- package/dist/lib/esnext/util/functions.js +64 -0
- package/dist/lib/esnext/util/functions.js.map +1 -0
- package/dist/lib/esnext/version.js +2 -0
- package/dist/lib/esnext/version.js.map +1 -0
- package/dist/lib/node/FrontgateClient.js +147 -0
- package/dist/lib/node/FrontgateClient.js.map +1 -0
- package/dist/lib/node/Mdg2Client.js +190 -0
- package/dist/lib/node/Mdg2Client.js.map +1 -0
- package/dist/lib/node/authentication/AbstractAuthentication.js +54 -0
- package/dist/lib/node/authentication/AbstractAuthentication.js.map +1 -0
- package/dist/lib/node/authentication/AppAuthentication.js +75 -0
- package/dist/lib/node/authentication/AppAuthentication.js.map +1 -0
- package/dist/lib/node/authentication/AuthenticationInterface.js +3 -0
- package/dist/lib/node/authentication/AuthenticationInterface.js.map +1 -0
- package/dist/lib/node/authentication/CookieTokenAuthentication.js +23 -0
- package/dist/lib/node/authentication/CookieTokenAuthentication.js.map +1 -0
- package/dist/lib/node/authentication/CookieTokenAuthenticationFactors.js +20 -0
- package/dist/lib/node/authentication/CookieTokenAuthenticationFactors.js.map +1 -0
- package/dist/lib/node/authentication/TokenAuthentication.js +47 -0
- package/dist/lib/node/authentication/TokenAuthentication.js.map +1 -0
- package/dist/lib/node/authentication/UserCredentialAuthentication.js +78 -0
- package/dist/lib/node/authentication/UserCredentialAuthentication.js.map +1 -0
- package/dist/lib/node/authentication/UserPasswordAuthentication.js +76 -0
- package/dist/lib/node/authentication/UserPasswordAuthentication.js.map +1 -0
- package/dist/lib/node/authentication/index.js +22 -0
- package/dist/lib/node/authentication/index.js.map +1 -0
- package/dist/lib/node/authentication/util/ChallengeResolver.js +40 -0
- package/dist/lib/node/authentication/util/ChallengeResolver.js.map +1 -0
- package/dist/lib/node/authentication/util/SecretGenerator.js +67 -0
- package/dist/lib/node/authentication/util/SecretGenerator.js.map +1 -0
- package/dist/lib/node/authentication/util/index.js +19 -0
- package/dist/lib/node/authentication/util/index.js.map +1 -0
- package/dist/lib/node/common/Mdg2ClientOptions.js +3 -0
- package/dist/lib/node/common/Mdg2ClientOptions.js.map +1 -0
- package/dist/lib/node/common/constants.js +14 -0
- package/dist/lib/node/common/constants.js.map +1 -0
- package/dist/lib/node/common/errors.js +52 -0
- package/dist/lib/node/common/errors.js.map +1 -0
- package/dist/lib/node/common/functions.js +114 -0
- package/dist/lib/node/common/functions.js.map +1 -0
- package/dist/lib/node/common/interfaces/PtlMessage.js +3 -0
- package/dist/lib/node/common/interfaces/PtlMessage.js.map +1 -0
- package/dist/lib/node/common/interfaces/index.js +21 -0
- package/dist/lib/node/common/interfaces/index.js.map +1 -0
- package/dist/lib/node/common/interfaces/observe/ObserveOptions.js +3 -0
- package/dist/lib/node/common/interfaces/observe/ObserveOptions.js.map +1 -0
- package/dist/lib/node/common/interfaces/result/HTTPProxyRequestResult.js +3 -0
- package/dist/lib/node/common/interfaces/result/HTTPProxyRequestResult.js.map +1 -0
- package/dist/lib/node/common/interfaces/result/HighLevelRequestResult.js +3 -0
- package/dist/lib/node/common/interfaces/result/HighLevelRequestResult.js.map +1 -0
- package/dist/lib/node/common/interfaces/result/RequestResult.js +3 -0
- package/dist/lib/node/common/interfaces/result/RequestResult.js.map +1 -0
- package/dist/lib/node/common/types/Quality.js +3 -0
- package/dist/lib/node/common/types/Quality.js.map +1 -0
- package/dist/lib/node/common/types/RequestQuality.js +3 -0
- package/dist/lib/node/common/types/RequestQuality.js.map +1 -0
- package/dist/lib/node/common/types/index.js +19 -0
- package/dist/lib/node/common/types/index.js.map +1 -0
- package/dist/lib/node/compat/index.js +27 -0
- package/dist/lib/node/compat/index.js.map +1 -0
- package/dist/lib/node/connection/AbstractFrontgateConnection.js +329 -0
- package/dist/lib/node/connection/AbstractFrontgateConnection.js.map +1 -0
- package/dist/lib/node/connection/ConnectionInterface.js +3 -0
- package/dist/lib/node/connection/ConnectionInterface.js.map +1 -0
- package/dist/lib/node/connection/FrontgateWSConnection.js +289 -0
- package/dist/lib/node/connection/FrontgateWSConnection.js.map +1 -0
- package/dist/lib/node/connection/JobPromise.js +7 -0
- package/dist/lib/node/connection/JobPromise.js.map +1 -0
- package/dist/lib/node/connection/LatencyHandler.js +3 -0
- package/dist/lib/node/connection/LatencyHandler.js.map +1 -0
- package/dist/lib/node/connection/LatencyTracker.js +52 -0
- package/dist/lib/node/connection/LatencyTracker.js.map +1 -0
- package/dist/lib/node/connection/MessageProcessor.js +3 -0
- package/dist/lib/node/connection/MessageProcessor.js.map +1 -0
- package/dist/lib/node/connection/index.js +24 -0
- package/dist/lib/node/connection/index.js.map +1 -0
- package/dist/lib/node/connection/util/Compressor.js +56 -0
- package/dist/lib/node/connection/util/Compressor.js.map +1 -0
- package/dist/lib/node/connection/util/Encoding.js +19 -0
- package/dist/lib/node/connection/util/Encoding.js.map +1 -0
- package/dist/lib/node/connection/util/functions.js +76 -0
- package/dist/lib/node/connection/util/functions.js.map +1 -0
- package/dist/lib/node/core/RequestModule.js +354 -0
- package/dist/lib/node/core/RequestModule.js.map +1 -0
- package/dist/lib/node/core/SubscriptionModule.js +109 -0
- package/dist/lib/node/core/SubscriptionModule.js.map +1 -0
- package/dist/lib/node/core/subscription/EndpointHandler.js +126 -0
- package/dist/lib/node/core/subscription/EndpointHandler.js.map +1 -0
- package/dist/lib/node/core/subscription/SubjectManager.js +44 -0
- package/dist/lib/node/core/subscription/SubjectManager.js.map +1 -0
- package/dist/lib/node/index.js +32 -0
- package/dist/lib/node/index.js.map +1 -0
- package/dist/lib/node/logger/AbstractLogger.js +103 -0
- package/dist/lib/node/logger/AbstractLogger.js.map +1 -0
- package/dist/lib/node/logger/ConsoleLogger.js +37 -0
- package/dist/lib/node/logger/ConsoleLogger.js.map +1 -0
- package/dist/lib/node/logger/LoggerHelper.js +29 -0
- package/dist/lib/node/logger/LoggerHelper.js.map +1 -0
- package/dist/lib/node/logger/LoggerInterface.js +3 -0
- package/dist/lib/node/logger/LoggerInterface.js.map +1 -0
- package/dist/lib/node/logger/NullLogger.js +19 -0
- package/dist/lib/node/logger/NullLogger.js.map +1 -0
- package/dist/lib/node/logger/WinstonLogger.js +38 -0
- package/dist/lib/node/logger/WinstonLogger.js.map +1 -0
- package/dist/lib/node/logger/index.js +23 -0
- package/dist/lib/node/logger/index.js.map +1 -0
- package/dist/lib/node/message/MessageFactory.js +74 -0
- package/dist/lib/node/message/MessageFactory.js.map +1 -0
- package/dist/lib/node/message/guards.js +31 -0
- package/dist/lib/node/message/guards.js.map +1 -0
- package/dist/lib/node/message/index.js +23 -0
- package/dist/lib/node/message/index.js.map +1 -0
- package/dist/lib/node/message/interfaces/HTTPProxyRequestOptions.js +3 -0
- package/dist/lib/node/message/interfaces/HTTPProxyRequestOptions.js.map +1 -0
- package/dist/lib/node/message/interfaces/HighLevelRequestMethod.js +3 -0
- package/dist/lib/node/message/interfaces/HighLevelRequestMethod.js.map +1 -0
- package/dist/lib/node/message/interfaces/HighLevelRequestOptions.js +3 -0
- package/dist/lib/node/message/interfaces/HighLevelRequestOptions.js.map +1 -0
- package/dist/lib/node/message/interfaces/JobObservable.js +3 -0
- package/dist/lib/node/message/interfaces/JobObservable.js.map +1 -0
- package/dist/lib/node/message/interfaces/index.js +21 -0
- package/dist/lib/node/message/interfaces/index.js.map +1 -0
- package/dist/lib/node/message/request/AbstractMdg2Request.js +21 -0
- package/dist/lib/node/message/request/AbstractMdg2Request.js.map +1 -0
- package/dist/lib/node/message/request/AuthenticationByTokenRequest.js +36 -0
- package/dist/lib/node/message/request/AuthenticationByTokenRequest.js.map +1 -0
- package/dist/lib/node/message/request/AuthenticationRequest.js +34 -0
- package/dist/lib/node/message/request/AuthenticationRequest.js.map +1 -0
- package/dist/lib/node/message/request/AuthenticationTokenRequest.js +28 -0
- package/dist/lib/node/message/request/AuthenticationTokenRequest.js.map +1 -0
- package/dist/lib/node/message/request/CancelSubscriptionRequest.js +14 -0
- package/dist/lib/node/message/request/CancelSubscriptionRequest.js.map +1 -0
- package/dist/lib/node/message/request/ConfigurationRequest.js +80 -0
- package/dist/lib/node/message/request/ConfigurationRequest.js.map +1 -0
- package/dist/lib/node/message/request/HTTPProxyRequest.js +125 -0
- package/dist/lib/node/message/request/HTTPProxyRequest.js.map +1 -0
- package/dist/lib/node/message/request/HighLevelRequest.js +93 -0
- package/dist/lib/node/message/request/HighLevelRequest.js.map +1 -0
- package/dist/lib/node/message/request/PingRequest.js +27 -0
- package/dist/lib/node/message/request/PingRequest.js.map +1 -0
- package/dist/lib/node/message/request/TransportLayerClientRequestHeader.js +113 -0
- package/dist/lib/node/message/request/TransportLayerClientRequestHeader.js.map +1 -0
- package/dist/lib/node/message/request/index.js +26 -0
- package/dist/lib/node/message/request/index.js.map +1 -0
- package/dist/lib/node/message/request/raw/RawRequest.js +22 -0
- package/dist/lib/node/message/request/raw/RawRequest.js.map +1 -0
- package/dist/lib/node/message/request/raw/RawRequestFactory.js +23 -0
- package/dist/lib/node/message/request/raw/RawRequestFactory.js.map +1 -0
- package/dist/lib/node/message/request/raw/example/CreateNotationSearchRequest.js +572 -0
- package/dist/lib/node/message/request/raw/example/CreateNotationSearchRequest.js.map +1 -0
- package/dist/lib/node/message/request/raw/index.js +19 -0
- package/dist/lib/node/message/request/raw/index.js.map +1 -0
- package/dist/lib/node/message/response/AuthenticationByTokenResponse.js +3 -0
- package/dist/lib/node/message/response/AuthenticationByTokenResponse.js.map +1 -0
- package/dist/lib/node/message/response/AuthenticationResponse.js +3 -0
- package/dist/lib/node/message/response/AuthenticationResponse.js.map +1 -0
- package/dist/lib/node/message/response/AuthenticationTokenResponse.js +26 -0
- package/dist/lib/node/message/response/AuthenticationTokenResponse.js.map +1 -0
- package/dist/lib/node/message/response/CancelSubscriptionResponse.js +8 -0
- package/dist/lib/node/message/response/CancelSubscriptionResponse.js.map +1 -0
- package/dist/lib/node/message/response/ConfigurationResponse.js +3 -0
- package/dist/lib/node/message/response/ConfigurationResponse.js.map +1 -0
- package/dist/lib/node/message/response/DisconnectionMessage.js +3 -0
- package/dist/lib/node/message/response/DisconnectionMessage.js.map +1 -0
- package/dist/lib/node/message/response/ErrorResponse.js +14 -0
- package/dist/lib/node/message/response/ErrorResponse.js.map +1 -0
- package/dist/lib/node/message/response/HTTPProxyResponse.js +34 -0
- package/dist/lib/node/message/response/HTTPProxyResponse.js.map +1 -0
- package/dist/lib/node/message/response/HighLevelResponse.js +29 -0
- package/dist/lib/node/message/response/HighLevelResponse.js.map +1 -0
- package/dist/lib/node/message/response/LoadNotificationMessage.js +3 -0
- package/dist/lib/node/message/response/LoadNotificationMessage.js.map +1 -0
- package/dist/lib/node/message/response/Mdg2Response.js +32 -0
- package/dist/lib/node/message/response/Mdg2Response.js.map +1 -0
- package/dist/lib/node/message/response/PermissionDeniedResponse.js +11 -0
- package/dist/lib/node/message/response/PermissionDeniedResponse.js.map +1 -0
- package/dist/lib/node/message/response/PingResponse.js +36 -0
- package/dist/lib/node/message/response/PingResponse.js.map +1 -0
- package/dist/lib/node/message/response/RejectResponse.js +14 -0
- package/dist/lib/node/message/response/RejectResponse.js.map +1 -0
- package/dist/lib/node/message/response/index.js +30 -0
- package/dist/lib/node/message/response/index.js.map +1 -0
- package/dist/lib/node/message/types/Time.js +13 -0
- package/dist/lib/node/message/types/Time.js.map +1 -0
- package/dist/lib/node/message/types/TransportLayerClientRequestHeaderFlag.js +3 -0
- package/dist/lib/node/message/types/TransportLayerClientRequestHeaderFlag.js.map +1 -0
- package/dist/lib/node/message/types/index.js +19 -0
- package/dist/lib/node/message/types/index.js.map +1 -0
- package/dist/lib/node/message/update/HighLevelUpdate.js +23 -0
- package/dist/lib/node/message/update/HighLevelUpdate.js.map +1 -0
- package/dist/lib/node/message/update/SubscriptionLossMessage.js +15 -0
- package/dist/lib/node/message/update/SubscriptionLossMessage.js.map +1 -0
- package/dist/lib/node/message/update/index.js +19 -0
- package/dist/lib/node/message/update/index.js.map +1 -0
- package/dist/lib/node/mixins/AuthTokenRequestMixin.js +42 -0
- package/dist/lib/node/mixins/AuthTokenRequestMixin.js.map +1 -0
- package/dist/lib/node/mixins/EndpointRequestMixin.js +91 -0
- package/dist/lib/node/mixins/EndpointRequestMixin.js.map +1 -0
- package/dist/lib/node/mixins/HTTPProxyRequestMixin.js +51 -0
- package/dist/lib/node/mixins/HTTPProxyRequestMixin.js.map +1 -0
- package/dist/lib/node/mixins/LoggerMixin.js +23 -0
- package/dist/lib/node/mixins/LoggerMixin.js.map +1 -0
- package/dist/lib/node/mixins/MessageCompressorMixin.js +50 -0
- package/dist/lib/node/mixins/MessageCompressorMixin.js.map +1 -0
- package/dist/lib/node/mixins/OpenTelemetryMixin.js +70 -0
- package/dist/lib/node/mixins/OpenTelemetryMixin.js.map +1 -0
- package/dist/lib/node/mixins/ReconnectMixin.js +75 -0
- package/dist/lib/node/mixins/ReconnectMixin.js.map +1 -0
- package/dist/lib/node/mixins/RequestMixin.js +35 -0
- package/dist/lib/node/mixins/RequestMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/AppAuthMixin.js +47 -0
- package/dist/lib/node/mixins/auth/AppAuthMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/CookieTokenAuthMixin.js +51 -0
- package/dist/lib/node/mixins/auth/CookieTokenAuthMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/FetchAuthenticationMixin.js +132 -0
- package/dist/lib/node/mixins/auth/FetchAuthenticationMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/SessionAuthMixin.js +185 -0
- package/dist/lib/node/mixins/auth/SessionAuthMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/TokenAuthMixin.js +64 -0
- package/dist/lib/node/mixins/auth/TokenAuthMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/UserCredentialAuthMixin.js +48 -0
- package/dist/lib/node/mixins/auth/UserCredentialAuthMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/UserPasswordAuthMixin.js +48 -0
- package/dist/lib/node/mixins/auth/UserPasswordAuthMixin.js.map +1 -0
- package/dist/lib/node/mixins/auth/index.js +52 -0
- package/dist/lib/node/mixins/auth/index.js.map +1 -0
- package/dist/lib/node/mixins/connection/FrontgateWSMixin.js +333 -0
- package/dist/lib/node/mixins/connection/FrontgateWSMixin.js.map +1 -0
- package/dist/lib/node/mixins/connection/index.js +18 -0
- package/dist/lib/node/mixins/connection/index.js.map +1 -0
- package/dist/lib/node/mixins/index.js +38 -0
- package/dist/lib/node/mixins/index.js.map +1 -0
- package/dist/lib/node/mixins/subscription/DataObserver.js +122 -0
- package/dist/lib/node/mixins/subscription/DataObserver.js.map +1 -0
- package/dist/lib/node/mixins/subscription/EndpointSubscriptionMixin.js +197 -0
- package/dist/lib/node/mixins/subscription/EndpointSubscriptionMixin.js.map +1 -0
- package/dist/lib/node/mixins/subscription/RawSubscriptionMixin.js +160 -0
- package/dist/lib/node/mixins/subscription/RawSubscriptionMixin.js.map +1 -0
- package/dist/lib/node/mixins/subscription/index.js +20 -0
- package/dist/lib/node/mixins/subscription/index.js.map +1 -0
- package/dist/lib/node/util/TimeOutWrapper.js +56 -0
- package/dist/lib/node/util/TimeOutWrapper.js.map +1 -0
- package/dist/lib/node/util/functions.js +75 -0
- package/dist/lib/node/util/functions.js.map +1 -0
- package/dist/lib/node/version.js +5 -0
- package/dist/lib/node/version.js.map +1 -0
- package/dist/lib/types/FrontgateClient.d.ts +39 -0
- package/dist/lib/types/Mdg2Client.d.ts +52 -0
- package/dist/lib/types/authentication/AbstractAuthentication.d.ts +17 -0
- package/dist/lib/types/authentication/AppAuthentication.d.ts +12 -0
- package/dist/lib/types/authentication/AuthenticationInterface.d.ts +9 -0
- package/dist/lib/types/authentication/CookieTokenAuthentication.d.ts +6 -0
- package/dist/lib/types/authentication/CookieTokenAuthenticationFactors.d.ts +7 -0
- package/dist/lib/types/authentication/TokenAuthentication.d.ts +14 -0
- package/dist/lib/types/authentication/UserCredentialAuthentication.d.ts +13 -0
- package/dist/lib/types/authentication/UserPasswordAuthentication.d.ts +14 -0
- package/dist/lib/types/authentication/index.d.ts +5 -0
- package/dist/lib/types/authentication/util/ChallengeResolver.d.ts +15 -0
- package/dist/lib/types/authentication/util/SecretGenerator.d.ts +14 -0
- package/dist/lib/types/authentication/util/index.d.ts +2 -0
- package/dist/lib/types/common/Mdg2ClientOptions.d.ts +12 -0
- package/dist/lib/types/common/constants.d.ts +11 -0
- package/dist/lib/types/common/errors.d.ts +30 -0
- package/dist/lib/types/common/functions.d.ts +11 -0
- package/dist/lib/types/common/interfaces/PtlMessage.d.ts +5 -0
- package/dist/lib/types/common/interfaces/index.d.ts +5 -0
- package/dist/lib/types/common/interfaces/observe/ObserveOptions.d.ts +5 -0
- package/dist/lib/types/common/interfaces/result/HTTPProxyRequestResult.d.ts +6 -0
- package/dist/lib/types/common/interfaces/result/HighLevelRequestResult.d.ts +6 -0
- package/dist/lib/types/common/interfaces/result/RequestResult.d.ts +5 -0
- package/dist/lib/types/common/types/Quality.d.ts +1 -0
- package/dist/lib/types/common/types/RequestQuality.d.ts +2 -0
- package/dist/lib/types/common/types/index.d.ts +2 -0
- package/dist/lib/types/compat/index.d.ts +10 -0
- package/dist/lib/types/connection/AbstractFrontgateConnection.d.ts +116 -0
- package/dist/lib/types/connection/ConnectionInterface.d.ts +53 -0
- package/dist/lib/types/connection/FrontgateWSConnection.d.ts +23 -0
- package/dist/lib/types/connection/JobPromise.d.ts +3 -0
- package/dist/lib/types/connection/LatencyHandler.d.ts +1 -0
- package/dist/lib/types/connection/LatencyTracker.d.ts +13 -0
- package/dist/lib/types/connection/MessageProcessor.d.ts +2 -0
- package/dist/lib/types/connection/index.d.ts +7 -0
- package/dist/lib/types/connection/util/Compressor.d.ts +8 -0
- package/dist/lib/types/connection/util/Encoding.d.ts +9 -0
- package/dist/lib/types/connection/util/functions.d.ts +19 -0
- package/dist/lib/types/core/RequestModule.d.ts +78 -0
- package/dist/lib/types/core/SubscriptionModule.d.ts +24 -0
- package/dist/lib/types/core/subscription/EndpointHandler.d.ts +37 -0
- package/dist/lib/types/core/subscription/SubjectManager.d.ts +21 -0
- package/dist/lib/types/index.d.ts +10 -0
- package/dist/lib/types/logger/AbstractLogger.d.ts +32 -0
- package/dist/lib/types/logger/ConsoleLogger.d.ts +14 -0
- package/dist/lib/types/logger/LoggerHelper.d.ts +4 -0
- package/dist/lib/types/logger/LoggerInterface.d.ts +12 -0
- package/dist/lib/types/logger/NullLogger.d.ts +10 -0
- package/dist/lib/types/logger/WinstonLogger.d.ts +22 -0
- package/dist/lib/types/logger/index.d.ts +6 -0
- package/dist/lib/types/message/MessageFactory.d.ts +29 -0
- package/dist/lib/types/message/guards.d.ts +11 -0
- package/dist/lib/types/message/index.d.ts +6 -0
- package/dist/lib/types/message/interfaces/HTTPProxyRequestOptions.d.ts +15 -0
- package/dist/lib/types/message/interfaces/HighLevelRequestMethod.d.ts +1 -0
- package/dist/lib/types/message/interfaces/HighLevelRequestOptions.d.ts +9 -0
- package/dist/lib/types/message/interfaces/JobObservable.d.ts +4 -0
- package/dist/lib/types/message/interfaces/index.d.ts +4 -0
- package/dist/lib/types/message/request/AbstractMdg2Request.d.ts +12 -0
- package/dist/lib/types/message/request/AuthenticationByTokenRequest.d.ts +6 -0
- package/dist/lib/types/message/request/AuthenticationRequest.d.ts +17 -0
- package/dist/lib/types/message/request/AuthenticationTokenRequest.d.ts +9 -0
- package/dist/lib/types/message/request/CancelSubscriptionRequest.d.ts +6 -0
- package/dist/lib/types/message/request/ConfigurationRequest.d.ts +14 -0
- package/dist/lib/types/message/request/HTTPProxyRequest.d.ts +28 -0
- package/dist/lib/types/message/request/HighLevelRequest.d.ts +17 -0
- package/dist/lib/types/message/request/PingRequest.d.ts +16 -0
- package/dist/lib/types/message/request/TransportLayerClientRequestHeader.d.ts +53 -0
- package/dist/lib/types/message/request/index.d.ts +9 -0
- package/dist/lib/types/message/request/raw/RawRequest.d.ts +5 -0
- package/dist/lib/types/message/request/raw/RawRequestFactory.d.ts +4 -0
- package/dist/lib/types/message/request/raw/example/CreateNotationSearchRequest.d.ts +146 -0
- package/dist/lib/types/message/request/raw/index.d.ts +2 -0
- package/dist/lib/types/message/response/AuthenticationByTokenResponse.d.ts +20 -0
- package/dist/lib/types/message/response/AuthenticationResponse.d.ts +37 -0
- package/dist/lib/types/message/response/AuthenticationTokenResponse.d.ts +8 -0
- package/dist/lib/types/message/response/CancelSubscriptionResponse.d.ts +3 -0
- package/dist/lib/types/message/response/ConfigurationResponse.d.ts +44 -0
- package/dist/lib/types/message/response/DisconnectionMessage.d.ts +7 -0
- package/dist/lib/types/message/response/ErrorResponse.d.ts +5 -0
- package/dist/lib/types/message/response/HTTPProxyResponse.d.ts +30 -0
- package/dist/lib/types/message/response/HighLevelResponse.d.ts +25 -0
- package/dist/lib/types/message/response/LoadNotificationMessage.d.ts +8 -0
- package/dist/lib/types/message/response/Mdg2Response.d.ts +11 -0
- package/dist/lib/types/message/response/PermissionDeniedResponse.d.ts +4 -0
- package/dist/lib/types/message/response/PingResponse.d.ts +13 -0
- package/dist/lib/types/message/response/RejectResponse.d.ts +5 -0
- package/dist/lib/types/message/response/index.d.ts +13 -0
- package/dist/lib/types/message/types/Time.d.ts +6 -0
- package/dist/lib/types/message/types/TransportLayerClientRequestHeaderFlag.d.ts +1 -0
- package/dist/lib/types/message/types/index.d.ts +2 -0
- package/dist/lib/types/message/update/HighLevelUpdate.d.ts +6 -0
- package/dist/lib/types/message/update/SubscriptionLossMessage.d.ts +17 -0
- package/dist/lib/types/message/update/index.d.ts +2 -0
- package/dist/lib/types/mixins/AuthTokenRequestMixin.d.ts +22 -0
- package/dist/lib/types/mixins/EndpointRequestMixin.d.ts +23 -0
- package/dist/lib/types/mixins/HTTPProxyRequestMixin.d.ts +21 -0
- package/dist/lib/types/mixins/LoggerMixin.d.ts +12 -0
- package/dist/lib/types/mixins/MessageCompressorMixin.d.ts +14 -0
- package/dist/lib/types/mixins/OpenTelemetryMixin.d.ts +20 -0
- package/dist/lib/types/mixins/ReconnectMixin.d.ts +22 -0
- package/dist/lib/types/mixins/RequestMixin.d.ts +17 -0
- package/dist/lib/types/mixins/auth/AppAuthMixin.d.ts +15 -0
- package/dist/lib/types/mixins/auth/CookieTokenAuthMixin.d.ts +13 -0
- package/dist/lib/types/mixins/auth/FetchAuthenticationMixin.d.ts +54 -0
- package/dist/lib/types/mixins/auth/SessionAuthMixin.d.ts +58 -0
- package/dist/lib/types/mixins/auth/TokenAuthMixin.d.ts +18 -0
- package/dist/lib/types/mixins/auth/UserCredentialAuthMixin.d.ts +15 -0
- package/dist/lib/types/mixins/auth/UserPasswordAuthMixin.d.ts +15 -0
- package/dist/lib/types/mixins/auth/index.d.ts +16 -0
- package/dist/lib/types/mixins/connection/FrontgateWSMixin.d.ts +67 -0
- package/dist/lib/types/mixins/connection/index.d.ts +45 -0
- package/dist/lib/types/mixins/index.d.ts +28 -0
- package/dist/lib/types/mixins/subscription/DataObserver.d.ts +43 -0
- package/dist/lib/types/mixins/subscription/EndpointSubscriptionMixin.d.ts +26 -0
- package/dist/lib/types/mixins/subscription/RawSubscriptionMixin.d.ts +27 -0
- package/dist/lib/types/mixins/subscription/index.d.ts +8 -0
- package/dist/lib/types/util/TimeOutWrapper.d.ts +12 -0
- package/dist/lib/types/util/functions.d.ts +20 -0
- package/dist/lib/types/version.d.ts +4 -0
- package/dist/lib/umd/mdg2.client.min.umd.js +12 -0
- package/dist/lib/umd/mdg2.client.umd.js +8852 -0
- package/package.json +92 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { getBytesFromBuffer } from '../connection/util/functions';
|
|
2
|
+
import { SecretGenerator } from './util';
|
|
3
|
+
import { AbstractAuthentication } from './AbstractAuthentication';
|
|
4
|
+
import { AuthenticationRequest } from '../message/request/AuthenticationRequest';
|
|
5
|
+
import { ConfigurationRequest } from '../message/request/ConfigurationRequest';
|
|
6
|
+
import { randomBytes } from 'crypto';
|
|
7
|
+
export class AppAuthentication extends AbstractAuthentication {
|
|
8
|
+
constructor(idApplication, idUser, clientCredentials) {
|
|
9
|
+
super(idApplication, idUser);
|
|
10
|
+
this.reconnectable = true;
|
|
11
|
+
if (typeof clientCredentials !== 'string') {
|
|
12
|
+
throw new Error('clientCredentials not provided or not a string. Client credentials must have the form "{server_secret}-{shared_secret}-{client_secret}".');
|
|
13
|
+
}
|
|
14
|
+
const secrets = clientCredentials.split('-');
|
|
15
|
+
if (secrets.length !== 3) {
|
|
16
|
+
throw new Error('Invalid clientCredentials. Client credentials must have the form "{server_secret}-{shared_secret}-{client_secret}".');
|
|
17
|
+
}
|
|
18
|
+
if (secrets[0] === '*') {
|
|
19
|
+
throw new Error('Invalid clientCredentials. Client credentials first part must be a hashed server secret.');
|
|
20
|
+
}
|
|
21
|
+
this.sharedSecret = Buffer.from(secrets[1], 'base64');
|
|
22
|
+
this.clientSecret = Buffer.from(secrets[2], 'base64');
|
|
23
|
+
}
|
|
24
|
+
async authenticate(connection) {
|
|
25
|
+
this.connection = connection;
|
|
26
|
+
const authenticationResponse = await this.sendAuthenticationRequest();
|
|
27
|
+
const configurationResponse = await this.sendConfigurationRequest(authenticationResponse);
|
|
28
|
+
const peerInfo = this.peerInfoFromMessage(configurationResponse);
|
|
29
|
+
this.connection.setPeerInfo(peerInfo);
|
|
30
|
+
await this.sendTransportLayerRequestHeaderConfigurationRequest(configurationResponse);
|
|
31
|
+
}
|
|
32
|
+
async sendAuthenticationRequest() {
|
|
33
|
+
const salt = randomBytes(16);
|
|
34
|
+
const options = {
|
|
35
|
+
idApplication: this.idApplication,
|
|
36
|
+
salt: getBytesFromBuffer(salt),
|
|
37
|
+
challenge: getBytesFromBuffer(randomBytes(16)),
|
|
38
|
+
encryptedSecrets: [{ encrypted_secret: SecretGenerator.createEncryptedSecret(salt, this.sharedSecret, this.clientSecret) }],
|
|
39
|
+
};
|
|
40
|
+
const request = new AuthenticationRequest(options);
|
|
41
|
+
return (await this.connection.submit(request.toJson()));
|
|
42
|
+
}
|
|
43
|
+
async sendConfigurationRequest(msg) {
|
|
44
|
+
const expectedMessage = 'Foundation::AuthenticationResponse';
|
|
45
|
+
if (msg.Message !== expectedMessage) {
|
|
46
|
+
throw new Error(`Expected message "${expectedMessage}" but received "${msg.Message}"`);
|
|
47
|
+
}
|
|
48
|
+
const { challenge } = msg.challenge;
|
|
49
|
+
const options = {
|
|
50
|
+
shared_secret: this.sharedSecret,
|
|
51
|
+
payload_content: this.connection.options.payload_content,
|
|
52
|
+
deployment_stage: this.connection.options.deployment_stage,
|
|
53
|
+
maximum_idle_interval: this.connection.options.maximum_idle_interval,
|
|
54
|
+
};
|
|
55
|
+
const configRequest = new ConfigurationRequest(challenge, options);
|
|
56
|
+
return (await this.connection.submit(configRequest.toJson()));
|
|
57
|
+
}
|
|
58
|
+
async sendTransportLayerRequestHeaderConfigurationRequest(msg) {
|
|
59
|
+
const expectedMessage = 'Foundation::ConfigurationResponse';
|
|
60
|
+
if (msg.Message !== expectedMessage) {
|
|
61
|
+
throw new Error(`Expected message "${expectedMessage}" but received "${msg.Message}"`);
|
|
62
|
+
}
|
|
63
|
+
const request = {
|
|
64
|
+
Message: 'TransportLayerClientConfigurationRequest',
|
|
65
|
+
Version: 1,
|
|
66
|
+
flags: 0,
|
|
67
|
+
};
|
|
68
|
+
return this.connection.submit(request);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=AppAuthentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppAuthentication.js","sourceRoot":"","sources":["../../../../src/authentication/AppAuthentication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticationInterface.js","sourceRoot":"","sources":["../../../../src/authentication/AuthenticationInterface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { fetchConnectionConfiguration } from '../connection/util/functions';
|
|
2
|
+
import { TokenAuthentication } from './TokenAuthentication';
|
|
3
|
+
export class CookieTokenAuthentication extends TokenAuthentication {
|
|
4
|
+
constructor() {
|
|
5
|
+
super('', false);
|
|
6
|
+
}
|
|
7
|
+
getEncodedToken() {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
async onReconnect() {
|
|
11
|
+
if (this.fetchConfigurationInput) {
|
|
12
|
+
const { config } = await fetchConnectionConfiguration(this.fetchConfigurationInput, this.fetchConfigurationConfig);
|
|
13
|
+
if (config.frontgateSplitAuthenticationTokenSecondFactor) {
|
|
14
|
+
this.connection.options.frontgateSplitAuthenticationTokenSecondFactor = config.frontgateSplitAuthenticationTokenSecondFactor;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CookieTokenAuthentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CookieTokenAuthentication.js","sourceRoot":"","sources":["../../../../src/authentication/CookieTokenAuthentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAC,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAE1D,MAAM,OAAO,yBAA0B,SAAQ,mBAAmB;IAChE;QACE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnB,CAAC;IAES,eAAe;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACjH,IAAI,MAAM,CAAC,6CAA6C,EAAE,CAAC;gBACzD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,6CAA6C,GAAG,MAAM,CAAC,6CAA6C,CAAC;YAC/H,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { toUrlBase64 } from '../common/functions';
|
|
2
|
+
export class CookieTokenAuthenticationFactors {
|
|
3
|
+
constructor(token) {
|
|
4
|
+
const tokenBase64Url = toUrlBase64(token);
|
|
5
|
+
const middle = Math.ceil(tokenBase64Url.length / 2);
|
|
6
|
+
this.firstFactor = tokenBase64Url.substring(0, middle);
|
|
7
|
+
this.secondFactor = tokenBase64Url.substring(middle);
|
|
8
|
+
}
|
|
9
|
+
getFirstFactor() {
|
|
10
|
+
return this.firstFactor;
|
|
11
|
+
}
|
|
12
|
+
getSecondFactor() {
|
|
13
|
+
return this.secondFactor;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=CookieTokenAuthenticationFactors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CookieTokenAuthenticationFactors.js","sourceRoot":"","sources":["../../../../src/authentication/CookieTokenAuthenticationFactors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAEhD,MAAM,OAAO,gCAAgC;IAK3C,YAAY,KAAa;QACvB,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { fetchConnectionConfiguration } from '../connection/util/functions';
|
|
2
|
+
import { AbstractAuthentication, ID_APP_AUTHENTICATED, ID_USER_AUTHENTICATED } from './AbstractAuthentication';
|
|
3
|
+
import { AuthenticationByTokenRequest } from '../message';
|
|
4
|
+
import { isBase64Url, base64UrlToBase64 } from '../common/functions';
|
|
5
|
+
export class TokenAuthentication extends AbstractAuthentication {
|
|
6
|
+
constructor(token, validate = true) {
|
|
7
|
+
super(ID_APP_AUTHENTICATED, ID_USER_AUTHENTICATED);
|
|
8
|
+
if (validate && (!token || token.length < 80)) {
|
|
9
|
+
throw new Error('Invalid token passed to TokenAuthentication');
|
|
10
|
+
}
|
|
11
|
+
this.setToken(token);
|
|
12
|
+
}
|
|
13
|
+
setToken(token) {
|
|
14
|
+
this.token = isBase64Url(token) ? base64UrlToBase64(token) : token;
|
|
15
|
+
}
|
|
16
|
+
setFetchConfiguration(input, config) {
|
|
17
|
+
this.fetchConfigurationInput = input;
|
|
18
|
+
this.fetchConfigurationConfig = config;
|
|
19
|
+
}
|
|
20
|
+
async authenticate(connection) {
|
|
21
|
+
this.connection = connection;
|
|
22
|
+
const authenticationByTokenResponse = await this.sendAuthenticationByTokenRequest();
|
|
23
|
+
const peerInfo = this.peerInfoFromMessage(authenticationByTokenResponse);
|
|
24
|
+
this.connection.setPeerInfo(peerInfo);
|
|
25
|
+
}
|
|
26
|
+
async sendAuthenticationByTokenRequest() {
|
|
27
|
+
const token = { b64: this.token };
|
|
28
|
+
const request = new AuthenticationByTokenRequest(token, this.connection.options.maximum_idle_interval);
|
|
29
|
+
return (await this.connection.submit(request.toJson()));
|
|
30
|
+
}
|
|
31
|
+
get reconnectable() {
|
|
32
|
+
return !!this.fetchConfigurationInput;
|
|
33
|
+
}
|
|
34
|
+
async onReconnect() {
|
|
35
|
+
if (this.fetchConfigurationInput) {
|
|
36
|
+
const { config } = await fetchConnectionConfiguration(this.fetchConfigurationInput, this.fetchConfigurationConfig);
|
|
37
|
+
if (config.frontgateAuthenticationType === 'token' && config.frontgateAuthenticationToken) {
|
|
38
|
+
this.setToken(config.frontgateAuthenticationToken);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=TokenAuthentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenAuthentication.js","sourceRoot":"","sources":["../../../../src/authentication/TokenAuthentication.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,4BAA4B,EAAC,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAC,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAE7G,OAAO,EAAC,4BAA4B,EAAC,MAAM,YAAY,CAAC;AACxD,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAEnE,MAAM,OAAO,mBAAoB,SAAQ,sBAAsB;IAO7D,YAAY,KAAa,EAAE,QAAQ,GAAG,IAAI;QACxC,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QACnD,IAAI,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAKD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEO,QAAQ,CAAC,KAAa;QAC5B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,CAAC;IAEM,qBAAqB,CAAC,KAA8B,EAAE,MAA+B;QAC1F,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAA+B;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,6BAA6B,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,gCAAgC;QAC5C,MAAM,KAAK,GAAG,EAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACvG,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAkC,CAAC;IAC3F,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACjH,IAAI,MAAM,CAAC,2BAA2B,KAAK,OAAO,IAAI,MAAM,CAAC,4BAA4B,EAAE,CAAC;gBAC1F,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { getBytesFromBuffer } from '../connection/util/functions';
|
|
2
|
+
import { AbstractAuthentication, ID_APP_AUTHENTICATED, ID_USER_AUTHENTICATED } from './AbstractAuthentication';
|
|
3
|
+
import { SecretGenerator } from './util';
|
|
4
|
+
import { AuthenticationRequest } from '../message/request/AuthenticationRequest';
|
|
5
|
+
import { ConfigurationRequest } from '../message/request/ConfigurationRequest';
|
|
6
|
+
import { randomBytes } from 'crypto';
|
|
7
|
+
export class UserCredentialAuthentication extends AbstractAuthentication {
|
|
8
|
+
constructor(idApplication, username, credentials) {
|
|
9
|
+
super(idApplication);
|
|
10
|
+
this.reconnectable = true;
|
|
11
|
+
const secrets = credentials.split('-');
|
|
12
|
+
if (secrets.length !== 3) {
|
|
13
|
+
throw new Error('Invalid clientCredentials. Client credentials must have the form "{server_secret}-{shared_secret}-{client_secret}".');
|
|
14
|
+
}
|
|
15
|
+
if (secrets[0] === '*') {
|
|
16
|
+
throw new Error('Invalid clientCredentials. Client credentials first part must be a hashed server secret.');
|
|
17
|
+
}
|
|
18
|
+
this.username = username;
|
|
19
|
+
this.sharedSecret = Buffer.from(secrets[1], 'base64');
|
|
20
|
+
this.clientSecret = Buffer.from(secrets[2], 'base64');
|
|
21
|
+
}
|
|
22
|
+
async authenticate(connection) {
|
|
23
|
+
this.connection = connection;
|
|
24
|
+
const authenticationResponse = await this.sendAuthenticationRequest();
|
|
25
|
+
const configurationResponse = await this.sendConfigurationRequest(authenticationResponse);
|
|
26
|
+
const peerInfo = this.peerInfoFromMessage(configurationResponse);
|
|
27
|
+
this.connection.setPeerInfo(peerInfo);
|
|
28
|
+
await this.sendTransportLayerRequestHeaderConfigurationRequest(configurationResponse);
|
|
29
|
+
}
|
|
30
|
+
async sendAuthenticationRequest() {
|
|
31
|
+
const salt = randomBytes(16);
|
|
32
|
+
const options = {
|
|
33
|
+
idApplication: this.idApplication,
|
|
34
|
+
username: this.username,
|
|
35
|
+
salt: getBytesFromBuffer(salt),
|
|
36
|
+
challenge: getBytesFromBuffer(randomBytes(16)),
|
|
37
|
+
encryptedSecrets: [{ encrypted_secret: SecretGenerator.createEncryptedSecret(salt, this.sharedSecret, this.clientSecret) }],
|
|
38
|
+
};
|
|
39
|
+
const request = new AuthenticationRequest(options);
|
|
40
|
+
return (await this.connection.submit(request.toJson()));
|
|
41
|
+
}
|
|
42
|
+
async sendConfigurationRequest(msg) {
|
|
43
|
+
const expectedMessage = 'Foundation::AuthenticationResponse';
|
|
44
|
+
if (msg.Message !== expectedMessage) {
|
|
45
|
+
throw new Error(`Expected message "${expectedMessage}" but received "${msg.Message}"`);
|
|
46
|
+
}
|
|
47
|
+
if (msg.id_user === ID_USER_AUTHENTICATED) {
|
|
48
|
+
this.connection.auth.idUser = ID_USER_AUTHENTICATED;
|
|
49
|
+
this.connection.auth.idApplication = ID_APP_AUTHENTICATED;
|
|
50
|
+
}
|
|
51
|
+
const { challenge } = msg.challenge;
|
|
52
|
+
const options = {
|
|
53
|
+
shared_secret: this.sharedSecret,
|
|
54
|
+
payload_content: this.connection.options.payload_content,
|
|
55
|
+
deployment_stage: this.connection.options.deployment_stage,
|
|
56
|
+
maximum_idle_interval: this.connection.options.maximum_idle_interval,
|
|
57
|
+
};
|
|
58
|
+
const configRequest = new ConfigurationRequest(challenge, options);
|
|
59
|
+
return (await this.connection.submit(configRequest.toJson()));
|
|
60
|
+
}
|
|
61
|
+
async sendTransportLayerRequestHeaderConfigurationRequest(msg) {
|
|
62
|
+
const expectedMessage = 'Foundation::ConfigurationResponse';
|
|
63
|
+
if (msg.Message !== expectedMessage) {
|
|
64
|
+
throw new Error(`Expected message "${expectedMessage}" but received "${msg.Message}"`);
|
|
65
|
+
}
|
|
66
|
+
const request = {
|
|
67
|
+
Message: 'TransportLayerClientConfigurationRequest',
|
|
68
|
+
Version: 1,
|
|
69
|
+
flags: 0,
|
|
70
|
+
};
|
|
71
|
+
return this.connection.submit(request);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=UserCredentialAuthentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserCredentialAuthentication.js","sourceRoot":"","sources":["../../../../src/authentication/UserCredentialAuthentication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { getBytesFromBuffer } from '../connection/util/functions';
|
|
2
|
+
import { AbstractAuthentication, ID_APP_AUTHENTICATED, ID_USER_AUTHENTICATED } from './AbstractAuthentication';
|
|
3
|
+
import { SecretGenerator } from './util';
|
|
4
|
+
import { AuthenticationRequest } from '../message/request/AuthenticationRequest';
|
|
5
|
+
import { ConfigurationRequest } from '../message/request/ConfigurationRequest';
|
|
6
|
+
import { randomBytes } from 'crypto';
|
|
7
|
+
export class UserPasswordAuthentication extends AbstractAuthentication {
|
|
8
|
+
constructor(idApplication, username, password) {
|
|
9
|
+
super(idApplication);
|
|
10
|
+
this.reconnectable = true;
|
|
11
|
+
this.username = username;
|
|
12
|
+
this.password = password;
|
|
13
|
+
const plainSharedSecret = SecretGenerator.generateSharedSecret(username, password);
|
|
14
|
+
const plainClientSecret = SecretGenerator.generateClientSecret(username, password);
|
|
15
|
+
if (plainSharedSecret && plainClientSecret) {
|
|
16
|
+
this.sharedSecret = Buffer.from(plainSharedSecret);
|
|
17
|
+
this.clientSecret = Buffer.from(plainClientSecret);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async authenticate(connection) {
|
|
21
|
+
this.connection = connection;
|
|
22
|
+
const authenticationResponse = await this.sendAuthenticationRequest();
|
|
23
|
+
const configurationResponse = await this.sendConfigurationRequest(authenticationResponse);
|
|
24
|
+
const peerInfo = this.peerInfoFromMessage(configurationResponse);
|
|
25
|
+
this.connection.setPeerInfo(peerInfo);
|
|
26
|
+
await this.sendTransportLayerRequestHeaderConfigurationRequest(configurationResponse);
|
|
27
|
+
}
|
|
28
|
+
async sendAuthenticationRequest() {
|
|
29
|
+
const salt = randomBytes(16);
|
|
30
|
+
const options = {
|
|
31
|
+
idApplication: this.idApplication,
|
|
32
|
+
username: this.username,
|
|
33
|
+
salt: getBytesFromBuffer(salt),
|
|
34
|
+
challenge: getBytesFromBuffer(randomBytes(16)),
|
|
35
|
+
encryptedSecrets: [{ encrypted_secret: SecretGenerator.createEncryptedSecret(salt, this.sharedSecret, this.clientSecret) }],
|
|
36
|
+
};
|
|
37
|
+
const request = new AuthenticationRequest(options);
|
|
38
|
+
return (await this.connection.submit(request.toJson()));
|
|
39
|
+
}
|
|
40
|
+
async sendConfigurationRequest(msg) {
|
|
41
|
+
const expectedMessage = 'Foundation::AuthenticationResponse';
|
|
42
|
+
if (msg.Message !== expectedMessage) {
|
|
43
|
+
throw new Error(`Expected message "${expectedMessage}" but received "${msg.Message}"`);
|
|
44
|
+
}
|
|
45
|
+
if (msg.id_user === ID_USER_AUTHENTICATED) {
|
|
46
|
+
this.connection.auth.idApplication = ID_APP_AUTHENTICATED;
|
|
47
|
+
this.connection.auth.idUser = ID_USER_AUTHENTICATED;
|
|
48
|
+
}
|
|
49
|
+
const { challenge } = msg.challenge;
|
|
50
|
+
const options = {
|
|
51
|
+
shared_secret: this.sharedSecret,
|
|
52
|
+
payload_content: this.connection.options.payload_content,
|
|
53
|
+
deployment_stage: this.connection.options.deployment_stage,
|
|
54
|
+
maximum_idle_interval: this.connection.options.maximum_idle_interval,
|
|
55
|
+
};
|
|
56
|
+
const configRequest = new ConfigurationRequest(challenge, options);
|
|
57
|
+
return (await this.connection.submit(configRequest.toJson()));
|
|
58
|
+
}
|
|
59
|
+
async sendTransportLayerRequestHeaderConfigurationRequest(msg) {
|
|
60
|
+
const expectedMessage = 'Foundation::ConfigurationResponse';
|
|
61
|
+
if (msg.Message !== expectedMessage) {
|
|
62
|
+
throw new Error(`Expected message "${expectedMessage}" but received "${msg.Message}"`);
|
|
63
|
+
}
|
|
64
|
+
const request = {
|
|
65
|
+
Message: 'TransportLayerClientConfigurationRequest',
|
|
66
|
+
Version: 1,
|
|
67
|
+
flags: 0,
|
|
68
|
+
};
|
|
69
|
+
return this.connection.submit(request);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=UserPasswordAuthentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserPasswordAuthentication.js","sourceRoot":"","sources":["../../../../src/authentication/UserPasswordAuthentication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/authentication/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import bigInt from 'big-integer';
|
|
2
|
+
import { Tiger } from 'fb-tiger-hash';
|
|
3
|
+
import { getBytesFromBuffer } from '../../connection/util/functions';
|
|
4
|
+
import { randomBytes } from 'crypto';
|
|
5
|
+
export class ChallengeResolver {
|
|
6
|
+
static solveChallenge(challenge, sharedSecret, staticPart = ChallengeResolver.CLIENT_STATIC_PART) {
|
|
7
|
+
const salt = randomBytes(16);
|
|
8
|
+
return ChallengeResolver.createSaltedHash(salt, sharedSecret, challenge, staticPart);
|
|
9
|
+
}
|
|
10
|
+
static createSaltedHash(salt, param1, param2, param3) {
|
|
11
|
+
const algo = new Tiger(192, 0, false, 'hex');
|
|
12
|
+
const hash = Buffer.from(algo.hash(Buffer.concat([salt, param1, param2, param3]).toString('hex')), 'hex');
|
|
13
|
+
return {
|
|
14
|
+
salt: getBytesFromBuffer(salt),
|
|
15
|
+
hash1: ChallengeResolver.hexToInt64LE(hash.subarray(0, 8)),
|
|
16
|
+
hash2: ChallengeResolver.hexToInt64LE(hash.subarray(8, 16)),
|
|
17
|
+
hash3: ChallengeResolver.hexToInt64LE(hash.subarray(16, 24)),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
static hexToInt64LE(buf) {
|
|
21
|
+
const lower = buf.readUInt32LE(0);
|
|
22
|
+
const upper = buf.readUInt32LE(4);
|
|
23
|
+
let val = bigInt(upper).shiftLeft(32).plus(lower);
|
|
24
|
+
if (val.and(ChallengeResolver.INT64MSB).toJSNumber() > 0) {
|
|
25
|
+
val = val.minus(ChallengeResolver.INT64OVERFLOW);
|
|
26
|
+
}
|
|
27
|
+
return val;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
ChallengeResolver.INT64MSB = bigInt.one.shiftLeft(63);
|
|
31
|
+
ChallengeResolver.INT64OVERFLOW = bigInt.one.shiftLeft(64);
|
|
32
|
+
ChallengeResolver.CLIENT_STATIC_PART = Buffer.from([75, 70, 108, 61, 65, 119, 52, 50, 83, 83, 51, 59, 97, 48, 78]);
|
|
33
|
+
//# sourceMappingURL=ChallengeResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChallengeResolver.js","sourceRoot":"","sources":["../../../../../src/authentication/util/ChallengeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,QAAQ,CAAC;AASnC,MAAM,OAAO,iBAAiB;IAWrB,MAAM,CAAC,cAAc,CAAC,SAAiB,EAAE,YAAoB,EAAE,aAAqB,iBAAiB,CAAC,kBAAkB;QAC7H,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACvF,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc;QAC1F,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1G,OAAO;YACL,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC;YAC9B,KAAK,EAAE,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,KAAK,EAAE,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,KAAK,EAAE,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC7D,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,GAAW;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAElC,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;YACzD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;;AAnCuB,0BAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAEpC,+BAAa,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAEzC,oCAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { encodeBase64, hash, hashSync } from 'bcryptjs';
|
|
2
|
+
import { createCipheriv, createHash } from 'crypto';
|
|
3
|
+
import { Tiger } from 'fb-tiger-hash';
|
|
4
|
+
import { getBytesFromBuffer } from '../../connection/util/functions';
|
|
5
|
+
export class SecretGenerator {
|
|
6
|
+
static createEncryptedSecret(salt, sharedSecret, clientSecret) {
|
|
7
|
+
const encryptionKey = SecretGenerator.getEncryptionKey(salt, sharedSecret);
|
|
8
|
+
const aes = createCipheriv(SecretGenerator.ALGORITHM, encryptionKey, SecretGenerator.INITIALIZATION_VECTOR);
|
|
9
|
+
const encryptedSecret = Buffer.concat([aes.update(clientSecret), aes.final()]);
|
|
10
|
+
return getBytesFromBuffer(encryptedSecret);
|
|
11
|
+
}
|
|
12
|
+
static generateClientSecret(username, password, callback) {
|
|
13
|
+
const salt = SecretGenerator.generateSalt(SecretGenerator.BCRYPT_KEY_A + username);
|
|
14
|
+
if (typeof callback === 'undefined') {
|
|
15
|
+
return hashSync(password, salt);
|
|
16
|
+
}
|
|
17
|
+
hash(password, salt, callback);
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
static generateSharedSecret(username, password, callback) {
|
|
21
|
+
const salt = SecretGenerator.generateSalt(SecretGenerator.BCRYPT_KEY_B + username);
|
|
22
|
+
if (typeof callback === 'undefined') {
|
|
23
|
+
return hashSync(password, salt);
|
|
24
|
+
}
|
|
25
|
+
hash(password, salt, callback);
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
static getEncryptionKey(salt, secret) {
|
|
29
|
+
const hasher = new Tiger(192, 0, false, 'hex');
|
|
30
|
+
const hashed = hasher.hash(Buffer.concat([salt, secret]).toString('hex'));
|
|
31
|
+
return Buffer.from(hashed.slice(0, 32), 'hex');
|
|
32
|
+
}
|
|
33
|
+
static generateSalt(seed, rounds = SecretGenerator.SALT_ROUNDS) {
|
|
34
|
+
if (rounds < 4 || rounds > 31) {
|
|
35
|
+
throw new Error(`Illegal number of rounds (4-31): ${rounds}`);
|
|
36
|
+
}
|
|
37
|
+
const salt = [];
|
|
38
|
+
salt.push('$2a$');
|
|
39
|
+
if (rounds < 10) {
|
|
40
|
+
salt.push('0');
|
|
41
|
+
}
|
|
42
|
+
salt.push(rounds.toString());
|
|
43
|
+
salt.push('$');
|
|
44
|
+
salt.push(encodeBase64(SecretGenerator.create128bitSeed(seed), 16));
|
|
45
|
+
return salt.join('');
|
|
46
|
+
}
|
|
47
|
+
static create128bitSeed(text) {
|
|
48
|
+
const array = [];
|
|
49
|
+
array.push(SecretGenerator.CLIENT_STATIC_PART[2] + 1);
|
|
50
|
+
array.push(SecretGenerator.INITIALIZATION_VECTOR[3] + SecretGenerator.INITIALIZATION_VECTOR[10] + 10);
|
|
51
|
+
array.push(SecretGenerator.CLIENT_STATIC_PART[6] + 1);
|
|
52
|
+
const hasher = createHash(Buffer.from(array).toString());
|
|
53
|
+
hasher.update(text);
|
|
54
|
+
return hasher.digest();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
SecretGenerator.INITIALIZATION_VECTOR = Buffer.from([74, 84, 82, 34, 47, 38, 50, 111, 51, 114, 56, -2, 41, 61, 33, -62]);
|
|
58
|
+
SecretGenerator.CLIENT_STATIC_PART = Buffer.from([75, 70, 108, 61, 65, 119, 52, 50, 83, 83, 51, 59, 97, 48, 78]);
|
|
59
|
+
SecretGenerator.SALT_ROUNDS = 10;
|
|
60
|
+
SecretGenerator.BCRYPT_KEY_A = 'plKqu7tduotIryee';
|
|
61
|
+
SecretGenerator.BCRYPT_KEY_B = 'AkshyetmiEdOgAb0';
|
|
62
|
+
SecretGenerator.ALGORITHM = 'AES-128-CBC';
|
|
63
|
+
//# sourceMappingURL=SecretGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretGenerator.js","sourceRoot":"","sources":["../../../../../src/authentication/util/SecretGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/authentication/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mdg2ClientOptions.js","sourceRoot":"","sources":["../../../../src/common/Mdg2ClientOptions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const LOGGER_NAME = 'Mdg2Client';
|
|
2
|
+
export const DEFAULT_QUALITY = 'BST';
|
|
3
|
+
export const DEFAULT_TIMEOUT_IN_MS = 6000;
|
|
4
|
+
export const DEFAULT_TIMEOUT_TOKEN_IN_MS = 3000;
|
|
5
|
+
export const DEFAULT_TIMEOUT_CONNECTION_IN_MS = 9000;
|
|
6
|
+
export const DEFAULT_MAX_TIMEOUTS_BEFORE_RECONNECT = 3;
|
|
7
|
+
export const DEFAULT_ENABLE_SESSION_HANDLING = false;
|
|
8
|
+
export const DEFAULT_RESUBSCRIBE_WAIT_TIME_IN_MS = 9000;
|
|
9
|
+
export const DEFAULT_FLAG_PERMISSION_DENIED = false;
|
|
10
|
+
export const DEFAULT_REPLAY_SUBJECT_BUFFER_SIZE = 512;
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/common/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAmB,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AACrD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AACpD,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export class ServiceUnavailableError extends Error {
|
|
2
|
+
constructor(message = 'Service Unavailable', error) {
|
|
3
|
+
super(message, { cause: error });
|
|
4
|
+
this.name = 'ServiceUnavailableError';
|
|
5
|
+
this.code = 503;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class InternalServerError extends Error {
|
|
9
|
+
constructor(message = 'Internal Server Error', error) {
|
|
10
|
+
super(message, { cause: error });
|
|
11
|
+
this.name = 'InternalServerError';
|
|
12
|
+
this.code = 500;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class TimeoutError extends Error {
|
|
16
|
+
constructor(message = 'Timeout', error) {
|
|
17
|
+
super(message, { cause: error });
|
|
18
|
+
this.name = 'TimeoutError';
|
|
19
|
+
this.code = 408;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class UnauthorizedError extends Error {
|
|
23
|
+
constructor(message = 'Unauthorized', error) {
|
|
24
|
+
super(message, { cause: error });
|
|
25
|
+
this.name = 'UnauthorizedError';
|
|
26
|
+
this.code = 401;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class BadRequestError extends Error {
|
|
30
|
+
constructor(message = 'Bad Request', error) {
|
|
31
|
+
super(message, { cause: error });
|
|
32
|
+
this.name = 'BadRequestError';
|
|
33
|
+
this.code = 400;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class ResponseError extends Error {
|
|
37
|
+
constructor(message, response) {
|
|
38
|
+
super(message, { cause: response });
|
|
39
|
+
this.name = 'ResponseError';
|
|
40
|
+
this.response = response;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/common/errors.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAEhD,YAAY,OAAO,GAAG,qBAAqB,EAAE,KAAa;QACxD,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE5C,YAAY,OAAO,GAAG,uBAAuB,EAAE,KAAa;QAC1D,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IAErC,YAAY,OAAO,GAAG,SAAS,EAAE,KAAa;QAC5C,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAE1C,YAAY,OAAO,GAAG,cAAc,EAAE,KAAa;QACjD,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAExC,YAAY,OAAO,GAAG,aAAa,EAAE,KAAa;QAChD,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGtC,YAAY,OAAe,EAAE,QAAuB;QAClD,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
|