perimeterx-js-core 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -15
- package/lib/action/Action.d.ts +6 -0
- package/lib/action/Action.js +7 -0
- package/lib/action/ActionData.d.ts +11 -0
- package/lib/action/ActionData.js +1 -0
- package/lib/action/ActionPriorityOrder.d.ts +2 -0
- package/lib/action/ActionPriorityOrder.js +7 -0
- package/lib/action/Decision.d.ts +6 -0
- package/lib/action/Decision.js +1 -0
- package/lib/action/index.d.ts +4 -0
- package/lib/action/index.js +4 -0
- package/lib/activities/ActivityType.js +2 -5
- package/lib/activities/HttpActivityClient.d.ts +7 -7
- package/lib/activities/HttpActivityClient.js +46 -95
- package/lib/activities/HttpBatchedActivityClient.d.ts +2 -2
- package/lib/activities/HttpBatchedActivityClient.js +46 -115
- package/lib/activities/IActivityClient.d.ts +3 -3
- package/lib/activities/IActivityClient.js +1 -2
- package/lib/activities/constants.js +1 -4
- package/lib/activities/index.d.ts +7 -6
- package/lib/activities/index.js +7 -9
- package/lib/activities/model/Activity.js +1 -2
- package/lib/activities/model/ActivityDetails.d.ts +9 -7
- package/lib/activities/model/ActivityDetails.js +1 -2
- package/lib/activities/model/index.d.ts +2 -0
- package/lib/activities/model/index.js +2 -0
- package/lib/activities/utils.d.ts +11 -8
- package/lib/activities/utils.js +65 -43
- package/lib/additional_activity_handler/AdditionalActivityHandler.d.ts +2 -2
- package/lib/additional_activity_handler/AdditionalActivityHandler.js +1 -2
- package/lib/additional_activity_handler/AdditionalActivityHandlerUtils.d.ts +2 -2
- package/lib/additional_activity_handler/AdditionalActivityHandlerUtils.js +11 -53
- package/lib/additional_activity_handler/index.d.ts +2 -2
- package/lib/additional_activity_handler/index.js +2 -5
- package/lib/{block_handler → blocker}/BlockAction.d.ts +0 -1
- package/lib/blocker/BlockAction.js +6 -0
- package/lib/blocker/BlockActionToProductMap.d.ts +3 -0
- package/lib/blocker/BlockActionToProductMap.js +7 -0
- package/lib/blocker/BlockActionToWordMap.d.ts +2 -0
- package/lib/blocker/BlockActionToWordMap.js +6 -0
- package/lib/blocker/IBlocker.d.ts +5 -0
- package/lib/blocker/IBlocker.js +1 -0
- package/lib/blocker/IConditionalBlocker.d.ts +9 -0
- package/lib/blocker/IConditionalBlocker.js +1 -0
- package/lib/blocker/index.d.ts +5 -0
- package/lib/blocker/index.js +5 -0
- package/lib/config/ConfigurationParams.d.ts +20 -12
- package/lib/config/ConfigurationParams.js +1 -2
- package/lib/config/DefaultConfigurations.d.ts +1 -1
- package/lib/config/DefaultConfigurations.js +15 -13
- package/lib/config/IConfiguration.d.ts +103 -10
- package/lib/config/IConfiguration.js +1 -2
- package/lib/config/StaticConfigurationBase.d.ts +29 -6
- package/lib/config/StaticConfigurationBase.js +244 -394
- package/lib/config/index.js +2 -7
- package/lib/context/DefaultContext.d.ts +46 -0
- package/lib/context/DefaultContext.js +82 -0
- package/lib/context/index.d.ts +2 -4
- package/lib/context/index.js +2 -20
- package/lib/context/interfaces/IContext.d.ts +111 -0
- package/lib/context/interfaces/IContext.js +1 -0
- package/lib/context/interfaces/MobileData.d.ts +23 -0
- package/lib/context/interfaces/MobileData.js +1 -0
- package/lib/context/interfaces/ReadonlyContext.d.ts +3 -0
- package/lib/context/interfaces/ReadonlyContext.js +1 -0
- package/lib/context/interfaces/RequestData.d.ts +41 -0
- package/lib/context/interfaces/RequestData.js +1 -0
- package/lib/context/interfaces/RiskApiData.d.ts +27 -0
- package/lib/context/interfaces/RiskApiData.js +1 -0
- package/lib/context/interfaces/ServerData.d.ts +18 -0
- package/lib/context/interfaces/ServerData.js +1 -0
- package/lib/context/interfaces/TlsData.d.ts +30 -0
- package/lib/context/interfaces/TlsData.js +1 -0
- package/lib/context/interfaces/TokenData.d.ts +16 -0
- package/lib/context/interfaces/TokenData.js +1 -0
- package/lib/context/interfaces/index.d.ts +8 -0
- package/lib/context/interfaces/index.js +8 -0
- package/lib/cors/CustomBlockResponseHeadersHandler.d.ts +2 -2
- package/lib/cors/CustomBlockResponseHeadersHandler.js +1 -2
- package/lib/cors/CustomPreflightHandler.d.ts +2 -2
- package/lib/cors/CustomPreflightHandler.js +1 -2
- package/lib/cors/DefaultCors.d.ts +9 -9
- package/lib/cors/DefaultCors.js +39 -87
- package/lib/cors/ICors.d.ts +7 -7
- package/lib/cors/ICors.js +1 -2
- package/lib/cors/constants.js +2 -5
- package/lib/cors/index.js +2 -20
- package/lib/custom_parameters/CustomParameters.js +1 -2
- package/lib/custom_parameters/CustomParametersFunction.d.ts +1 -2
- package/lib/custom_parameters/CustomParametersFunction.js +1 -2
- package/lib/custom_parameters/CustomParametersUtils.d.ts +2 -2
- package/lib/custom_parameters/CustomParametersUtils.js +18 -60
- package/lib/custom_parameters/index.js +1 -5
- package/lib/enforcer/EnforcerBase.d.ts +43 -85
- package/lib/enforcer/EnforcerBase.js +120 -411
- package/lib/enforcer/IEnforcer.js +1 -2
- package/lib/enforcer/index.d.ts +2 -1
- package/lib/enforcer/index.js +2 -5
- package/lib/enforcer/options/EnforcerBaseOptions.d.ts +25 -0
- package/lib/enforcer/options/EnforcerBaseOptions.js +1 -0
- package/lib/enforcer/options/EnforcerOptionsType.d.ts +4 -0
- package/lib/enforcer/options/EnforcerOptionsType.js +1 -0
- package/lib/enforcer/options/EnforcerV2Options.d.ts +5 -0
- package/lib/enforcer/options/EnforcerV2Options.js +1 -0
- package/lib/enforcer/options/EnforcerV3Options.d.ts +7 -0
- package/lib/enforcer/options/EnforcerV3Options.js +1 -0
- package/lib/enforcer/options/index.d.ts +4 -0
- package/lib/enforcer/options/index.js +4 -0
- package/lib/filter/FilterReason.d.ts +2 -1
- package/lib/filter/FilterReason.js +3 -5
- package/lib/filter/IFilter.d.ts +4 -4
- package/lib/filter/IFilter.js +1 -2
- package/lib/filter/index.d.ts +2 -3
- package/lib/filter/index.js +2 -7
- package/lib/first_party/FirstPartyData.d.ts +5 -0
- package/lib/first_party/FirstPartyData.js +1 -0
- package/lib/first_party/IFirstParty.d.ts +5 -5
- package/lib/first_party/IFirstParty.js +1 -2
- package/lib/first_party/index.d.ts +2 -4
- package/lib/first_party/index.js +2 -21
- package/lib/graphql/DefaultGraphQLParser.d.ts +6 -5
- package/lib/graphql/DefaultGraphQLParser.js +77 -133
- package/lib/graphql/IGraphQLParser.d.ts +5 -4
- package/lib/graphql/IGraphQLParser.js +1 -2
- package/lib/graphql/index.d.ts +3 -5
- package/lib/graphql/index.js +3 -7
- package/lib/graphql/model/GraphQLData.js +1 -2
- package/lib/graphql/model/GraphQLOperation.js +1 -2
- package/lib/graphql/model/GraphQLOperationType.js +2 -5
- package/lib/graphql/model/index.d.ts +3 -0
- package/lib/graphql/model/index.js +3 -0
- package/lib/http/impl/FormDataImpl.d.ts +12 -0
- package/lib/http/impl/FormDataImpl.js +36 -0
- package/lib/http/impl/MinimalResponseImpl.d.ts +3 -3
- package/lib/http/impl/MinimalResponseImpl.js +3 -8
- package/lib/http/impl/OutgoingRequestImpl.d.ts +3 -3
- package/lib/http/impl/OutgoingRequestImpl.js +5 -10
- package/lib/http/impl/index.d.ts +1 -0
- package/lib/http/impl/index.js +4 -19
- package/lib/http/impl/phin/PhinHttpClient.js +30 -70
- package/lib/http/impl/phin/PhinIncomingResponse.d.ts +4 -5
- package/lib/http/impl/phin/PhinIncomingResponse.js +22 -70
- package/lib/http/impl/phin/index.js +2 -18
- package/lib/http/index.js +3 -19
- package/lib/http/interfaces/IBody.d.ts +10 -12
- package/lib/http/interfaces/IBody.js +1 -2
- package/lib/http/interfaces/IFormData.d.ts +9 -0
- package/lib/http/interfaces/IFormData.js +1 -0
- package/lib/http/interfaces/IHeaders.js +1 -2
- package/lib/http/interfaces/IHttpClient.js +1 -2
- package/lib/http/interfaces/IIncomingRequest.d.ts +10 -6
- package/lib/http/interfaces/IIncomingRequest.js +1 -2
- package/lib/http/interfaces/IIncomingResponse.d.ts +2 -2
- package/lib/http/interfaces/IIncomingResponse.js +1 -2
- package/lib/http/interfaces/IMinimalResponse.d.ts +2 -2
- package/lib/http/interfaces/IMinimalResponse.js +1 -2
- package/lib/http/interfaces/IOutgoingRequest.d.ts +2 -2
- package/lib/http/interfaces/IOutgoingRequest.js +1 -2
- package/lib/http/interfaces/IOutgoingResponse.d.ts +5 -1
- package/lib/http/interfaces/IOutgoingResponse.js +1 -2
- package/lib/http/interfaces/IURL.d.ts +6 -0
- package/lib/http/interfaces/IURL.js +1 -0
- package/lib/http/interfaces/ReadonlyHeaders.d.ts +6 -0
- package/lib/http/interfaces/ReadonlyHeaders.js +14 -0
- package/lib/http/interfaces/index.d.ts +3 -1
- package/lib/http/interfaces/index.js +11 -25
- package/lib/http/utils/ContentType.js +2 -5
- package/lib/http/utils/HttpMethod.js +2 -5
- package/lib/http/utils/MinimalResponseUtils.d.ts +6 -6
- package/lib/http/utils/MinimalResponseUtils.js +31 -48
- package/lib/http/utils/MultipartFormDataUtils.d.ts +6 -0
- package/lib/http/utils/MultipartFormDataUtils.js +45 -0
- package/lib/http/utils/constants.js +9 -12
- package/lib/http/utils/index.d.ts +3 -1
- package/lib/http/utils/index.js +5 -21
- package/lib/index.d.ts +4 -1
- package/lib/index.js +22 -35
- package/lib/logger/DefaultLogger.js +7 -28
- package/lib/logger/ILogger.js +1 -2
- package/lib/logger/LoggerBase.d.ts +2 -0
- package/lib/logger/LoggerBase.js +24 -22
- package/lib/logger/LoggerSeverity.js +2 -5
- package/lib/logger/index.js +3 -9
- package/lib/phase/IPhase.d.ts +5 -0
- package/lib/phase/IPhase.js +1 -0
- package/lib/phase/PhaseResult.d.ts +5 -0
- package/lib/phase/PhaseResult.js +1 -0
- package/lib/phase/flow/EnforceFlow.d.ts +6 -0
- package/lib/phase/flow/EnforceFlow.js +15 -0
- package/lib/phase/flow/FilterFlow.d.ts +6 -0
- package/lib/phase/flow/FilterFlow.js +12 -0
- package/lib/phase/flow/PostEnforceFlow.d.ts +6 -0
- package/lib/phase/flow/PostEnforceFlow.js +10 -0
- package/lib/phase/flow/index.d.ts +3 -0
- package/lib/phase/flow/index.js +3 -0
- package/lib/phase/impl/AdditionalActivityHandlerPhase.d.ts +9 -0
- package/lib/phase/impl/AdditionalActivityHandlerPhase.js +22 -0
- package/lib/phase/impl/CompositePhase.d.ts +8 -0
- package/lib/phase/impl/CompositePhase.js +26 -0
- package/lib/phase/impl/CreateBlockResponsePhase.d.ts +17 -0
- package/lib/phase/impl/CreateBlockResponsePhase.js +60 -0
- package/lib/phase/impl/DecideActionPhase.d.ts +19 -0
- package/lib/phase/impl/DecideActionPhase.js +56 -0
- package/lib/phase/impl/EnrichContextFromRequestPhase.d.ts +18 -0
- package/lib/phase/impl/EnrichContextFromRequestPhase.js +59 -0
- package/lib/phase/impl/EnrichContextFromResponsePhase.d.ts +10 -0
- package/lib/phase/impl/EnrichContextFromResponsePhase.js +29 -0
- package/lib/phase/impl/FilterPhase.d.ts +9 -0
- package/lib/phase/impl/FilterPhase.js +19 -0
- package/lib/phase/impl/FirstPartyPhase.d.ts +12 -0
- package/lib/phase/impl/FirstPartyPhase.js +42 -0
- package/lib/phase/impl/ModifyIncomingRequestPhase.d.ts +9 -0
- package/lib/phase/impl/ModifyIncomingRequestPhase.js +20 -0
- package/lib/phase/impl/ModifyOutgoingResponsePhase.d.ts +9 -0
- package/lib/phase/impl/ModifyOutgoingResponsePhase.js +25 -0
- package/lib/phase/impl/ParseTokenPhase.d.ts +10 -0
- package/lib/phase/impl/ParseTokenPhase.js +37 -0
- package/lib/phase/impl/PreflightPhase.d.ts +12 -0
- package/lib/phase/impl/PreflightPhase.js +28 -0
- package/lib/phase/impl/RiskApiPhase.d.ts +17 -0
- package/lib/phase/impl/RiskApiPhase.js +76 -0
- package/lib/phase/impl/SendAsyncActivitiesOnRequestPhase.d.ts +10 -0
- package/lib/phase/impl/SendAsyncActivitiesOnRequestPhase.js +28 -0
- package/lib/phase/impl/SendAsyncActivitiesOnResponsePhase.d.ts +9 -0
- package/lib/phase/impl/SendAsyncActivitiesOnResponsePhase.js +20 -0
- package/lib/phase/impl/TelemetryPhase.d.ts +10 -0
- package/lib/phase/impl/TelemetryPhase.js +29 -0
- package/lib/phase/impl/index.d.ts +16 -0
- package/lib/phase/impl/index.js +16 -0
- package/lib/phase/index.d.ts +4 -0
- package/lib/phase/index.js +4 -0
- package/lib/products/account_defender/AccountDefender.d.ts +23 -0
- package/lib/products/account_defender/AccountDefender.js +98 -0
- package/lib/products/account_defender/AccountDefenderData.d.ts +6 -0
- package/lib/products/account_defender/AccountDefenderData.js +1 -0
- package/lib/products/account_defender/IAccountDefender.d.ts +4 -0
- package/lib/products/account_defender/IAccountDefender.js +1 -0
- package/lib/products/account_defender/JwtData.d.ts +4 -0
- package/lib/products/account_defender/JwtData.js +1 -0
- package/lib/products/account_defender/constants.d.ts +1 -0
- package/lib/products/account_defender/constants.js +1 -0
- package/lib/products/account_defender/index.d.ts +5 -0
- package/lib/products/account_defender/index.js +5 -0
- package/lib/products/bot_defender/BotDefender.d.ts +47 -0
- package/lib/products/bot_defender/BotDefender.js +135 -0
- package/lib/products/bot_defender/BotDefenderActionData.d.ts +7 -0
- package/lib/products/bot_defender/BotDefenderActionData.js +6 -0
- package/lib/products/bot_defender/BotDefenderData.d.ts +13 -0
- package/lib/products/bot_defender/BotDefenderData.js +1 -0
- package/lib/products/bot_defender/BotDefenderUtils.d.ts +5 -0
- package/lib/products/bot_defender/BotDefenderUtils.js +19 -0
- package/lib/products/bot_defender/IBotDefender.d.ts +7 -0
- package/lib/products/bot_defender/IBotDefender.js +1 -0
- package/lib/products/bot_defender/block/DefaultBotDefenderBlocker.d.ts +14 -0
- package/lib/products/bot_defender/block/DefaultBotDefenderBlocker.js +39 -0
- package/lib/products/bot_defender/block/captcha/CaptchaBlocker.d.ts +13 -0
- package/lib/products/bot_defender/block/captcha/CaptchaBlocker.js +20 -0
- package/lib/products/bot_defender/block/captcha/HtmlCaptchaBlocker.d.ts +9 -0
- package/lib/products/bot_defender/block/captcha/HtmlCaptchaBlocker.js +20 -0
- package/lib/products/bot_defender/block/captcha/JsonCaptchaBlocker.d.ts +10 -0
- package/lib/products/bot_defender/block/captcha/JsonCaptchaBlocker.js +38 -0
- package/lib/products/bot_defender/block/captcha/MobileCaptchaBlocker.d.ts +12 -0
- package/lib/products/bot_defender/block/captcha/MobileCaptchaBlocker.js +34 -0
- package/lib/products/bot_defender/block/captcha/index.d.ts +4 -0
- package/lib/products/bot_defender/block/captcha/index.js +4 -0
- package/lib/products/bot_defender/block/index.d.ts +5 -0
- package/lib/products/bot_defender/block/index.js +5 -0
- package/lib/{block_handler → products/bot_defender/block}/model/BlockData.d.ts +1 -1
- package/lib/products/bot_defender/block/model/BlockData.js +1 -0
- package/lib/products/bot_defender/block/model/JsonBlockPayload.js +1 -0
- package/lib/products/bot_defender/block/model/MobileBlockPayload.js +1 -0
- package/lib/products/bot_defender/block/model/index.d.ts +3 -0
- package/lib/products/bot_defender/block/model/index.js +3 -0
- package/lib/products/bot_defender/block/templates/captcha_template.js +50 -0
- package/lib/products/bot_defender/block/templates/index.d.ts +2 -0
- package/lib/products/bot_defender/block/templates/index.js +2 -0
- package/lib/products/bot_defender/block/templates/rate_limit_template.js +10 -0
- package/lib/products/bot_defender/block/utils.d.ts +5 -0
- package/lib/products/bot_defender/block/utils.js +43 -0
- package/lib/products/bot_defender/filter/DefaultBotDefenderFilter.d.ts +16 -0
- package/lib/products/bot_defender/filter/DefaultBotDefenderFilter.js +51 -0
- package/lib/products/bot_defender/filter/index.d.ts +1 -0
- package/lib/products/bot_defender/filter/index.js +1 -0
- package/lib/products/bot_defender/first_party/DefaultBotDefenderFirstParty.d.ts +20 -0
- package/lib/products/bot_defender/first_party/DefaultBotDefenderFirstParty.js +129 -0
- package/lib/products/bot_defender/first_party/FirstPartySuffix.d.ts +5 -0
- package/lib/products/bot_defender/first_party/FirstPartySuffix.js +6 -0
- package/lib/{first_party → products/bot_defender/first_party}/constants.d.ts +5 -2
- package/lib/products/bot_defender/first_party/constants.js +36 -0
- package/lib/products/bot_defender/first_party/index.d.ts +4 -0
- package/lib/products/bot_defender/first_party/index.js +4 -0
- package/lib/products/bot_defender/first_party/utils.d.ts +11 -0
- package/lib/products/bot_defender/first_party/utils.js +46 -0
- package/lib/products/bot_defender/index.d.ts +9 -0
- package/lib/products/bot_defender/index.js +9 -0
- package/lib/{block_handler/BlockReason.d.ts → products/bot_defender/reasons/BotDefenderBlockReason.d.ts} +1 -1
- package/lib/products/bot_defender/reasons/BotDefenderBlockReason.js +5 -0
- package/lib/{utils/PassReason.d.ts → products/bot_defender/reasons/BotDefenderPassReason.d.ts} +1 -1
- package/lib/products/bot_defender/reasons/BotDefenderPassReason.js +7 -0
- package/lib/products/bot_defender/reasons/BotDefenderReasonType.d.ts +5 -0
- package/lib/products/bot_defender/reasons/BotDefenderReasonType.js +1 -0
- package/lib/{risk_api/S2SCallReason.d.ts → products/bot_defender/reasons/BotDefenderS2SCallReason.d.ts} +1 -1
- package/lib/products/bot_defender/reasons/BotDefenderS2SCallReason.js +13 -0
- package/lib/products/bot_defender/reasons/index.d.ts +4 -0
- package/lib/products/bot_defender/reasons/index.js +4 -0
- package/lib/products/credential_intelligence/CredentialIntelligence.d.ts +22 -0
- package/lib/products/credential_intelligence/CredentialIntelligence.js +96 -0
- package/lib/products/credential_intelligence/ICredentialIntelligence.d.ts +4 -0
- package/lib/products/credential_intelligence/ICredentialIntelligence.js +1 -0
- package/lib/products/credential_intelligence/constants.d.ts +4 -0
- package/lib/products/credential_intelligence/constants.js +4 -0
- package/lib/products/credential_intelligence/endpoint/CredentialEndpoint.d.ts +21 -0
- package/lib/products/credential_intelligence/endpoint/CredentialEndpoint.js +37 -0
- package/lib/products/credential_intelligence/endpoint/CredentialEndpointConfiguration.d.ts +74 -0
- package/lib/products/credential_intelligence/endpoint/CredentialEndpointConfiguration.js +1 -0
- package/lib/products/credential_intelligence/endpoint/CredentialEndpointManager.d.ts +12 -0
- package/lib/products/credential_intelligence/endpoint/CredentialEndpointManager.js +32 -0
- package/lib/products/credential_intelligence/endpoint/ICredentialEndpoint.d.ts +9 -0
- package/lib/products/credential_intelligence/endpoint/ICredentialEndpoint.js +1 -0
- package/lib/products/credential_intelligence/endpoint/extractor/BodyCredentialExtractor.d.ts +15 -0
- package/lib/products/credential_intelligence/endpoint/extractor/BodyCredentialExtractor.js +64 -0
- package/lib/products/credential_intelligence/endpoint/extractor/CredentialExtractorFactory.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/extractor/CredentialExtractorFactory.js +21 -0
- package/lib/products/credential_intelligence/endpoint/extractor/CustomCredentialExtractor.d.ts +9 -0
- package/lib/products/credential_intelligence/endpoint/extractor/CustomCredentialExtractor.js +24 -0
- package/lib/products/credential_intelligence/endpoint/extractor/HeaderCredentialExtractor.d.ts +10 -0
- package/lib/products/credential_intelligence/endpoint/extractor/HeaderCredentialExtractor.js +22 -0
- package/lib/products/credential_intelligence/endpoint/extractor/ICredentialExtractor.d.ts +6 -0
- package/lib/products/credential_intelligence/endpoint/extractor/ICredentialExtractor.js +1 -0
- package/lib/products/credential_intelligence/endpoint/extractor/QueryParamCredentialExtractor.d.ts +10 -0
- package/lib/products/credential_intelligence/endpoint/extractor/QueryParamCredentialExtractor.js +23 -0
- package/lib/products/credential_intelligence/endpoint/extractor/SentThrough.d.ts +6 -0
- package/lib/products/credential_intelligence/endpoint/extractor/SentThrough.js +7 -0
- package/lib/products/credential_intelligence/endpoint/extractor/index.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/extractor/index.js +5 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/CredentialIntelligenceHashProtocolFactory.d.ts +6 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/CredentialIntelligenceHashProtocolFactory.js +17 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/CredentialIntelligenceVersion.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/CredentialIntelligenceVersion.js +6 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/ICredentialIntelligenceHashProtocol.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/ICredentialIntelligenceHashProtocol.js +1 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/MultistepHashProtocol.d.ts +8 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/MultistepHashProtocol.js +30 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/SingleStepAndMultistepHashProtocol.d.ts +8 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/SingleStepAndMultistepHashProtocol.js +25 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/SingleStepHashProtocol.d.ts +10 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/SingleStepHashProtocol.js +49 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/SsoStep.d.ts +4 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/SsoStep.js +5 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/index.d.ts +7 -0
- package/lib/products/credential_intelligence/endpoint/hash_protocol/index.js +7 -0
- package/lib/products/credential_intelligence/endpoint/index.d.ts +8 -0
- package/lib/products/credential_intelligence/endpoint/index.js +8 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/BodyLoginSuccessfulParser.d.ts +7 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/BodyLoginSuccessfulParser.js +20 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/CustomLoginSuccessfulCallback.d.ts +1 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/CustomLoginSuccessfulCallback.js +1 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/CustomLoginSuccessfulParser.d.ts +8 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/CustomLoginSuccessfulParser.js +26 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/HeaderLoginSuccessfulParser.d.ts +8 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/HeaderLoginSuccessfulParser.js +23 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/ILoginSuccessfulParser.d.ts +4 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/ILoginSuccessfulParser.js +1 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/LoginSuccessfulParserFactory.d.ts +6 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/LoginSuccessfulParserFactory.js +26 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/LoginSuccessfulReportingMethod.d.ts +6 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/LoginSuccessfulReportingMethod.js +7 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/StatusLoginSuccessfulParser.d.ts +7 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/StatusLoginSuccessfulParser.js +19 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/index.d.ts +8 -0
- package/lib/products/credential_intelligence/endpoint/login_successful/index.js +8 -0
- package/lib/products/credential_intelligence/endpoint/matcher/CredentialIntelligenceEndpointMatcherFactory.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/matcher/CredentialIntelligenceEndpointMatcherFactory.js +14 -0
- package/lib/products/credential_intelligence/endpoint/matcher/ExactPathEndpointMatcher.d.ts +10 -0
- package/lib/products/credential_intelligence/endpoint/matcher/ExactPathEndpointMatcher.js +9 -0
- package/lib/products/credential_intelligence/endpoint/matcher/ICredentialIntelligenceEndpointMatcher.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/matcher/ICredentialIntelligenceEndpointMatcher.js +1 -0
- package/lib/products/credential_intelligence/endpoint/matcher/PathType.d.ts +4 -0
- package/lib/products/credential_intelligence/endpoint/matcher/PathType.js +5 -0
- package/lib/products/credential_intelligence/endpoint/matcher/RegexPathEndpointMatcher.d.ts +10 -0
- package/lib/products/credential_intelligence/endpoint/matcher/RegexPathEndpointMatcher.js +9 -0
- package/lib/products/credential_intelligence/endpoint/matcher/index.d.ts +5 -0
- package/lib/products/credential_intelligence/endpoint/matcher/index.js +5 -0
- package/lib/products/credential_intelligence/index.d.ts +5 -0
- package/lib/products/credential_intelligence/index.js +5 -0
- package/lib/products/credential_intelligence/model/CredentialData.d.ts +8 -0
- package/lib/products/credential_intelligence/model/CredentialData.js +1 -0
- package/lib/products/credential_intelligence/model/CredentialIntelligenceData.d.ts +7 -0
- package/lib/products/credential_intelligence/model/CredentialIntelligenceData.js +1 -0
- package/lib/products/credential_intelligence/model/Credentials.d.ts +4 -0
- package/lib/products/credential_intelligence/model/Credentials.js +1 -0
- package/lib/products/credential_intelligence/model/CustomExtractionCallback.d.ts +2 -0
- package/lib/products/credential_intelligence/model/CustomExtractionCallback.js +1 -0
- package/lib/products/credential_intelligence/model/index.d.ts +4 -0
- package/lib/products/credential_intelligence/model/index.js +4 -0
- package/lib/products/index.d.ts +5 -0
- package/lib/products/index.js +5 -0
- package/lib/products/interfaces/IProduct.d.ts +10 -0
- package/lib/products/interfaces/IProduct.js +1 -0
- package/lib/products/interfaces/ProductData.d.ts +5 -0
- package/lib/products/interfaces/ProductData.js +1 -0
- package/lib/products/interfaces/ProductDataType.d.ts +5 -0
- package/lib/products/interfaces/ProductDataType.js +1 -0
- package/lib/products/interfaces/ProductType.d.ts +5 -0
- package/lib/products/interfaces/ProductType.js +1 -0
- package/lib/products/interfaces/Products.d.ts +5 -0
- package/lib/products/interfaces/Products.js +1 -0
- package/lib/products/interfaces/index.d.ts +5 -0
- package/lib/products/interfaces/index.js +5 -0
- package/lib/products/utils/ProductName.d.ts +7 -0
- package/lib/products/utils/ProductName.js +8 -0
- package/lib/products/utils/ProductPriorityOrder.d.ts +2 -0
- package/lib/products/utils/ProductPriorityOrder.js +8 -0
- package/lib/products/utils/index.d.ts +3 -0
- package/lib/products/utils/index.js +3 -0
- package/lib/products/utils/utils.d.ts +5 -0
- package/lib/products/utils/utils.js +12 -0
- package/lib/pxde/DefaultDataEnrichment.d.ts +7 -6
- package/lib/pxde/DefaultDataEnrichment.js +57 -116
- package/lib/pxde/IDataEnrichment.d.ts +5 -4
- package/lib/pxde/IDataEnrichment.js +1 -2
- package/lib/pxde/constants.js +4 -7
- package/lib/pxde/index.d.ts +3 -3
- package/lib/pxde/index.js +4 -20
- package/lib/pxde/model/PXDE.js +1 -2
- package/lib/pxde/model/PxdeData.d.ts +5 -0
- package/lib/pxde/model/PxdeData.js +1 -0
- package/lib/pxde/model/index.d.ts +2 -0
- package/lib/pxde/model/index.js +2 -0
- package/lib/pxhd/PXHDUtils.d.ts +3 -4
- package/lib/pxhd/PXHDUtils.js +15 -26
- package/lib/pxhd/index.js +2 -20
- package/lib/pxhd/model/PXHD.js +1 -2
- package/lib/pxhd/model/PXHDSource.js +2 -5
- package/lib/pxhd/model/index.js +2 -18
- package/lib/risk_api/client/IRiskApiClient.d.ts +4 -0
- package/lib/risk_api/client/IRiskApiClient.js +1 -0
- package/lib/risk_api/client/PostRiskApiClientBase.d.ts +44 -0
- package/lib/risk_api/client/PostRiskApiClientBase.js +235 -0
- package/lib/risk_api/client/PostRiskApiClientV2.d.ts +8 -0
- package/lib/risk_api/client/PostRiskApiClientV2.js +10 -0
- package/lib/risk_api/client/PostRiskApiClientV3.d.ts +8 -0
- package/lib/risk_api/client/PostRiskApiClientV3.js +10 -0
- package/lib/risk_api/client/index.d.ts +4 -0
- package/lib/risk_api/client/index.js +4 -0
- package/lib/risk_api/constants.js +1 -4
- package/lib/risk_api/index.d.ts +3 -12
- package/lib/risk_api/index.js +4 -34
- package/lib/risk_api/model/RiskActivity.d.ts +6 -2
- package/lib/risk_api/model/RiskActivity.js +1 -2
- package/lib/risk_api/model/RiskApiCallResult.d.ts +6 -0
- package/lib/risk_api/model/RiskApiCallResult.js +7 -0
- package/lib/risk_api/model/RiskStatus.js +2 -5
- package/lib/risk_api/{S2SErrorReason.js → model/S2SErrorReason.js} +2 -5
- package/lib/risk_api/model/index.d.ts +4 -0
- package/lib/risk_api/model/index.js +4 -0
- package/lib/risk_api/risk_response/IRiskResponse.d.ts +15 -0
- package/lib/risk_api/risk_response/IRiskResponse.js +1 -0
- package/lib/risk_api/risk_response/RiskResponseBase.d.ts +22 -0
- package/lib/risk_api/risk_response/RiskResponseBase.js +54 -0
- package/lib/risk_api/risk_response/RiskResponsePayloadType.d.ts +4 -0
- package/lib/risk_api/risk_response/RiskResponsePayloadType.js +1 -0
- package/lib/risk_api/risk_response/index.d.ts +4 -0
- package/lib/risk_api/risk_response/index.js +4 -0
- package/lib/risk_api/risk_response/v2/DefaultRiskResponseV2.d.ts +8 -0
- package/lib/risk_api/risk_response/v2/DefaultRiskResponseV2.js +18 -0
- package/lib/risk_api/{model/RiskResponseV2.d.ts → risk_response/v2/RiskResponseV2Payload.d.ts} +4 -4
- package/lib/risk_api/risk_response/v2/RiskResponseV2Payload.js +1 -0
- package/lib/risk_api/risk_response/v2/index.d.ts +2 -0
- package/lib/risk_api/risk_response/v2/index.js +2 -0
- package/lib/risk_api/risk_response/v3/DefaultRiskResponseV3.d.ts +8 -0
- package/lib/risk_api/risk_response/v3/DefaultRiskResponseV3.js +14 -0
- package/lib/risk_api/{model/RiskResponseV3.d.ts → risk_response/v3/RiskResponseV3Payload.d.ts} +4 -4
- package/lib/risk_api/risk_response/v3/RiskResponseV3Payload.js +1 -0
- package/lib/risk_api/risk_response/v3/index.d.ts +2 -0
- package/lib/risk_api/risk_response/v3/index.js +2 -0
- package/lib/risk_token/MobileError.js +2 -5
- package/lib/risk_token/TokenOrigin.js +2 -5
- package/lib/risk_token/{TokenVerificationResult.d.ts → TokenParseResult.d.ts} +2 -2
- package/lib/risk_token/TokenParseResult.js +7 -0
- package/lib/risk_token/TokenVersion.js +2 -5
- package/lib/risk_token/constants.js +9 -12
- package/lib/risk_token/index.d.ts +2 -3
- package/lib/risk_token/index.js +8 -32
- package/lib/risk_token/parser/DefaultTokenV2Parser.d.ts +13 -0
- package/lib/risk_token/parser/DefaultTokenV2Parser.js +14 -0
- package/lib/risk_token/parser/DefaultTokenV3Parser.d.ts +13 -0
- package/lib/risk_token/parser/DefaultTokenV3Parser.js +14 -0
- package/lib/risk_token/parser/ITokenParser.d.ts +4 -0
- package/lib/risk_token/parser/ITokenParser.js +1 -0
- package/lib/risk_token/parser/TokenParserBase.d.ts +19 -0
- package/lib/risk_token/parser/TokenParserBase.js +94 -0
- package/lib/risk_token/parser/TokenParserOptions.d.ts +4 -0
- package/lib/risk_token/parser/TokenParserOptions.js +1 -0
- package/lib/risk_token/parser/index.d.ts +5 -0
- package/lib/risk_token/parser/index.js +5 -0
- package/lib/risk_token/token/{IBotDefenderToken.d.ts → IToken.d.ts} +10 -9
- package/lib/risk_token/token/IToken.js +1 -0
- package/lib/risk_token/token/TokenBase.d.ts +32 -0
- package/lib/risk_token/token/TokenBase.js +50 -0
- package/lib/risk_token/token/TokenPayloadType.d.ts +4 -0
- package/lib/risk_token/token/TokenPayloadType.js +1 -0
- package/lib/risk_token/token/index.d.ts +6 -6
- package/lib/risk_token/token/index.js +4 -11
- package/lib/risk_token/token/v2/DefaultTokenV2.d.ts +27 -0
- package/lib/risk_token/token/v2/DefaultTokenV2.js +112 -0
- package/lib/risk_token/token/v2/{BotDefenderTokenV2Payload.d.ts → TokenV2Payload.d.ts} +1 -1
- package/lib/risk_token/token/v2/TokenV2Payload.js +1 -0
- package/lib/risk_token/token/v3/DefaultTokenV3.d.ts +30 -0
- package/lib/risk_token/token/v3/DefaultTokenV3.js +137 -0
- package/lib/risk_token/token/v3/TokenSignField.js +2 -5
- package/lib/risk_token/token/v3/TokenV3Payload.d.ts +9 -0
- package/lib/risk_token/token/v3/TokenV3Payload.js +1 -0
- package/lib/risk_token/utils.js +7 -11
- package/lib/telemetry/DefaultTelemetry.d.ts +8 -8
- package/lib/telemetry/DefaultTelemetry.js +86 -152
- package/lib/telemetry/ITelemetry.d.ts +4 -4
- package/lib/telemetry/ITelemetry.js +1 -2
- package/lib/telemetry/constants.js +7 -10
- package/lib/telemetry/index.js +2 -20
- package/lib/telemetry/model/TelemetryActivity.d.ts +1 -1
- package/lib/telemetry/model/TelemetryActivity.js +1 -2
- package/lib/utils/Algorithm.js +2 -5
- package/lib/utils/ModuleMode.js +2 -5
- package/lib/utils/VidSource.js +2 -5
- package/lib/utils/base64/AtobBase64Utils.js +6 -13
- package/lib/utils/base64/BufferBase64Utils.js +9 -16
- package/lib/utils/base64/IBase64Utils.js +1 -2
- package/lib/utils/base64/JSBase64Base64Utils.js +8 -15
- package/lib/utils/base64/index.js +4 -20
- package/lib/utils/cipher/CryptoCipherUtils.d.ts +1 -3
- package/lib/utils/cipher/CryptoCipherUtils.js +16 -53
- package/lib/utils/cipher/ICipherUtils.d.ts +2 -1
- package/lib/utils/cipher/ICipherUtils.js +1 -2
- package/lib/utils/cipher/SubtleCryptoCipherUtils.js +31 -78
- package/lib/utils/cipher/index.js +2 -18
- package/lib/utils/constants.d.ts +2 -1
- package/lib/utils/constants.js +11 -13
- package/lib/utils/cookie_parser/ICookieParser.js +1 -2
- package/lib/utils/cookie_parser/{DefaultCookieParser.d.ts → StringSplitCookieParser.d.ts} +2 -1
- package/lib/utils/cookie_parser/StringSplitCookieParser.js +28 -0
- package/lib/utils/cookie_parser/index.d.ts +2 -2
- package/lib/utils/cookie_parser/index.js +2 -5
- package/lib/utils/error/EnforcerError.js +6 -28
- package/lib/utils/error/EnforcerErrorName.js +2 -5
- package/lib/utils/error/EnforcerTimeoutError.js +7 -29
- package/lib/utils/error/index.js +3 -9
- package/lib/utils/hash/CryptoHashUtils.d.ts +11 -0
- package/lib/utils/hash/CryptoHashUtils.js +20 -0
- package/lib/utils/hash/IHashUtils.d.ts +2 -1
- package/lib/utils/hash/IHashUtils.js +1 -2
- package/lib/utils/hash/SubtleCryptoHashUtils.d.ts +8 -0
- package/lib/utils/hash/SubtleCryptoHashUtils.js +31 -0
- package/lib/utils/hash/index.d.ts +2 -2
- package/lib/utils/hash/index.js +3 -19
- package/lib/utils/{hash → hmac}/CryptoHmacUtils.d.ts +2 -2
- package/lib/utils/hmac/CryptoHmacUtils.js +19 -0
- package/lib/utils/{hash → hmac}/CryptoJSHmacUtils.d.ts +2 -2
- package/lib/utils/hmac/CryptoJSHmacUtils.js +12 -0
- package/lib/utils/hmac/IHmacUtils.d.ts +4 -0
- package/lib/utils/hmac/IHmacUtils.js +1 -0
- package/lib/utils/hmac/index.d.ts +3 -0
- package/lib/utils/hmac/index.js +3 -0
- package/lib/utils/index.d.ts +5 -6
- package/lib/utils/index.js +13 -34
- package/lib/utils/ip_range_checker/DefaultIpRangeChecker.js +5 -12
- package/lib/utils/ip_range_checker/IIpRangeChecker.js +1 -2
- package/lib/utils/ip_range_checker/index.js +1 -5
- package/lib/utils/request_id_generator/IRequestIdGenerator.d.ts +3 -0
- package/lib/utils/request_id_generator/IRequestIdGenerator.js +1 -0
- package/lib/utils/request_id_generator/UuidRequestIdGenerator.d.ts +4 -0
- package/lib/utils/request_id_generator/UuidRequestIdGenerator.js +6 -0
- package/lib/utils/request_id_generator/index.d.ts +2 -0
- package/lib/utils/request_id_generator/index.js +1 -0
- package/lib/utils/utils.d.ts +5 -2
- package/lib/utils/utils.js +52 -97
- package/package.json +5 -2
- package/lib/block_handler/BlockAction.js +0 -21
- package/lib/block_handler/BlockReason.js +0 -8
- package/lib/block_handler/DefaultBlockResponseGenerator.d.ts +0 -14
- package/lib/block_handler/DefaultBlockResponseGenerator.js +0 -55
- package/lib/block_handler/IBlockResponseGenerator.d.ts +0 -14
- package/lib/block_handler/IBlockResponseGenerator.js +0 -2
- package/lib/block_handler/captcha/CaptchaBlockResponseGenerator.d.ts +0 -14
- package/lib/block_handler/captcha/CaptchaBlockResponseGenerator.js +0 -30
- package/lib/block_handler/captcha/HtmlCaptchaResponseGenerator.d.ts +0 -10
- package/lib/block_handler/captcha/HtmlCaptchaResponseGenerator.js +0 -29
- package/lib/block_handler/captcha/JsonCaptchaResponseGenerator.d.ts +0 -10
- package/lib/block_handler/captcha/JsonCaptchaResponseGenerator.js +0 -47
- package/lib/block_handler/captcha/MobileCaptchaResponseGenerator.d.ts +0 -12
- package/lib/block_handler/captcha/MobileCaptchaResponseGenerator.js +0 -41
- package/lib/block_handler/index.d.ts +0 -13
- package/lib/block_handler/index.js +0 -21
- package/lib/block_handler/model/BlockData.js +0 -2
- package/lib/block_handler/model/JsonBlockPayload.js +0 -2
- package/lib/block_handler/model/MobileBlockPayload.js +0 -2
- package/lib/block_handler/templates/captcha_template.js +0 -4
- package/lib/block_handler/templates/rate_limit_template.js +0 -4
- package/lib/block_handler/utils.d.ts +0 -5
- package/lib/block_handler/utils.js +0 -48
- package/lib/context/ContextBase.d.ts +0 -57
- package/lib/context/ContextBase.js +0 -147
- package/lib/context/DefaultTokenV2Context.d.ts +0 -13
- package/lib/context/DefaultTokenV2Context.js +0 -35
- package/lib/context/DefaultTokenV3Context.d.ts +0 -13
- package/lib/context/DefaultTokenV3Context.js +0 -35
- package/lib/context/IContext.d.ts +0 -264
- package/lib/context/IContext.js +0 -2
- package/lib/filter/DefaultFilter.d.ts +0 -16
- package/lib/filter/DefaultFilter.js +0 -59
- package/lib/first_party/DefaultFirstParty.d.ts +0 -22
- package/lib/first_party/DefaultFirstParty.js +0 -227
- package/lib/first_party/constants.js +0 -37
- package/lib/first_party/utils.d.ts +0 -9
- package/lib/first_party/utils.js +0 -29
- package/lib/http/interfaces/ReadOnlyHeaders.d.ts +0 -4
- package/lib/http/interfaces/ReadOnlyHeaders.js +0 -19
- package/lib/risk_api/PostRiskApiClient.d.ts +0 -43
- package/lib/risk_api/PostRiskApiClient.js +0 -265
- package/lib/risk_api/S2SCallReason.js +0 -16
- package/lib/risk_api/S2SErrorHandler.d.ts +0 -9
- package/lib/risk_api/S2SErrorHandler.js +0 -121
- package/lib/risk_api/model/RiskResponseV2.js +0 -2
- package/lib/risk_api/model/RiskResponseV3.js +0 -2
- package/lib/risk_api/risk_response_handler/IRiskResponseHandler.d.ts +0 -5
- package/lib/risk_api/risk_response_handler/IRiskResponseHandler.js +0 -2
- package/lib/risk_api/risk_response_handler/RiskResponseHandlerBase.d.ts +0 -16
- package/lib/risk_api/risk_response_handler/RiskResponseHandlerBase.js +0 -73
- package/lib/risk_api/risk_response_handler/RiskResponseV2Handler.d.ts +0 -10
- package/lib/risk_api/risk_response_handler/RiskResponseV2Handler.js +0 -55
- package/lib/risk_api/risk_response_handler/RiskResponseV3Handler.d.ts +0 -10
- package/lib/risk_api/risk_response_handler/RiskResponseV3Handler.js +0 -57
- package/lib/risk_token/MobileErrorHandler.d.ts +0 -9
- package/lib/risk_token/MobileErrorHandler.js +0 -100
- package/lib/risk_token/RiskTokenScoreRetriever.d.ts +0 -14
- package/lib/risk_token/RiskTokenScoreRetriever.js +0 -148
- package/lib/risk_token/TokenVerificationResult.js +0 -10
- package/lib/risk_token/token/BotDefenderTokenBase.d.ts +0 -29
- package/lib/risk_token/token/BotDefenderTokenBase.js +0 -95
- package/lib/risk_token/token/IBotDefenderToken.js +0 -2
- package/lib/risk_token/token/v2/BotDefenderTokenV2Payload.js +0 -2
- package/lib/risk_token/token/v2/DefaultBotDefenderTokenV2.d.ts +0 -26
- package/lib/risk_token/token/v2/DefaultBotDefenderTokenV2.js +0 -206
- package/lib/risk_token/token/v3/BotDefenderTokenV3Payload.d.ts +0 -9
- package/lib/risk_token/token/v3/BotDefenderTokenV3Payload.js +0 -2
- package/lib/risk_token/token/v3/DefaultBotDefenderTokenV3.d.ts +0 -29
- package/lib/risk_token/token/v3/DefaultBotDefenderTokenV3.js +0 -231
- package/lib/utils/IScoreRetriever.d.ts +0 -14
- package/lib/utils/IScoreRetriever.js +0 -2
- package/lib/utils/PassReason.js +0 -10
- package/lib/utils/cookie_parser/DefaultCookieParser.js +0 -13
- package/lib/utils/hash/CryptoHmacUtils.js +0 -25
- package/lib/utils/hash/CryptoJSHmacUtils.js +0 -19
- package/lib/utils/uuid_generator/DefaultUuidGenerator.d.ts +0 -4
- package/lib/utils/uuid_generator/DefaultUuidGenerator.js +0 -13
- package/lib/utils/uuid_generator/IUuidGenerator.d.ts +0 -3
- package/lib/utils/uuid_generator/IUuidGenerator.js +0 -2
- package/lib/utils/uuid_generator/index.d.ts +0 -2
- package/lib/utils/uuid_generator/index.js +0 -5
- /package/lib/{block_handler → products/bot_defender/block}/model/JsonBlockPayload.d.ts +0 -0
- /package/lib/{block_handler → products/bot_defender/block}/model/MobileBlockPayload.d.ts +0 -0
- /package/lib/{block_handler → products/bot_defender/block}/templates/captcha_template.d.ts +0 -0
- /package/lib/{block_handler → products/bot_defender/block}/templates/rate_limit_template.d.ts +0 -0
- /package/lib/risk_api/{S2SErrorReason.d.ts → model/S2SErrorReason.d.ts} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IContext } from '../../context';
|
|
2
|
+
import { IActivityClient } from '../../activities';
|
|
3
|
+
import { IPhase } from '../IPhase';
|
|
4
|
+
import { PhaseResult } from '../PhaseResult';
|
|
5
|
+
export declare class SendAsyncActivitiesOnResponsePhase<Req, Res> implements IPhase<Req, Res> {
|
|
6
|
+
protected readonly activityClient: IActivityClient<Req, Res>;
|
|
7
|
+
constructor(activityClient: IActivityClient<Req, Res>);
|
|
8
|
+
execute(context: IContext<Req, Res>): Promise<PhaseResult>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
export class SendAsyncActivitiesOnResponsePhase {
|
|
11
|
+
constructor(activityClient) {
|
|
12
|
+
this.activityClient = activityClient;
|
|
13
|
+
}
|
|
14
|
+
execute(context) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
yield this.activityClient.sendActivities(context);
|
|
17
|
+
return { done: false };
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IPhase } from '../IPhase';
|
|
2
|
+
import { PhaseResult } from '../PhaseResult';
|
|
3
|
+
import { IContext } from '../../context';
|
|
4
|
+
import { ITelemetry } from '../../telemetry';
|
|
5
|
+
export declare class TelemetryPhase<Req, Res> implements IPhase<Req, Res> {
|
|
6
|
+
protected readonly telemetry: ITelemetry<Req, Res>;
|
|
7
|
+
constructor(telemetry: ITelemetry<Req, Res>);
|
|
8
|
+
execute(context: IContext<Req, Res>): Promise<PhaseResult>;
|
|
9
|
+
protected sendTelemetry(context: IContext<Req, Res>): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
export class TelemetryPhase {
|
|
11
|
+
constructor(telemetry) {
|
|
12
|
+
this.telemetry = telemetry;
|
|
13
|
+
}
|
|
14
|
+
execute(context) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
if (yield this.telemetry.isValidTelemetryRequest(context)) {
|
|
17
|
+
yield this.sendTelemetry(context);
|
|
18
|
+
return { done: true };
|
|
19
|
+
}
|
|
20
|
+
return { done: false };
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
// Note: If await is not necessary, can be overridden
|
|
24
|
+
sendTelemetry(context) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
yield this.telemetry.sendTelemetry(context);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './FirstPartyPhase';
|
|
2
|
+
export * from './FilterPhase';
|
|
3
|
+
export * from './PreflightPhase';
|
|
4
|
+
export * from './TelemetryPhase';
|
|
5
|
+
export * from './EnrichContextFromRequestPhase';
|
|
6
|
+
export * from './ParseTokenPhase';
|
|
7
|
+
export * from './DecideActionPhase';
|
|
8
|
+
export * from './RiskApiPhase';
|
|
9
|
+
export * from './CreateBlockResponsePhase';
|
|
10
|
+
export * from './ModifyIncomingRequestPhase';
|
|
11
|
+
export * from './EnrichContextFromResponsePhase';
|
|
12
|
+
export * from './ModifyOutgoingResponsePhase';
|
|
13
|
+
export * from './SendAsyncActivitiesOnRequestPhase';
|
|
14
|
+
export * from './SendAsyncActivitiesOnResponsePhase';
|
|
15
|
+
export * from './AdditionalActivityHandlerPhase';
|
|
16
|
+
export * from './CompositePhase';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './FirstPartyPhase';
|
|
2
|
+
export * from './FilterPhase';
|
|
3
|
+
export * from './PreflightPhase';
|
|
4
|
+
export * from './TelemetryPhase';
|
|
5
|
+
export * from './EnrichContextFromRequestPhase';
|
|
6
|
+
export * from './ParseTokenPhase';
|
|
7
|
+
export * from './DecideActionPhase';
|
|
8
|
+
export * from './RiskApiPhase';
|
|
9
|
+
export * from './CreateBlockResponsePhase';
|
|
10
|
+
export * from './ModifyIncomingRequestPhase';
|
|
11
|
+
export * from './EnrichContextFromResponsePhase';
|
|
12
|
+
export * from './ModifyOutgoingResponsePhase';
|
|
13
|
+
export * from './SendAsyncActivitiesOnRequestPhase';
|
|
14
|
+
export * from './SendAsyncActivitiesOnResponsePhase';
|
|
15
|
+
export * from './AdditionalActivityHandlerPhase';
|
|
16
|
+
export * from './CompositePhase';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
2
|
+
import { ReadonlyContext, RequestData } from '../../context';
|
|
3
|
+
import { IConfiguration } from '../../config';
|
|
4
|
+
import { IBase64Utils } from '../../utils';
|
|
5
|
+
import { IAccountDefender } from './IAccountDefender';
|
|
6
|
+
import { AccountDefenderData } from './AccountDefenderData';
|
|
7
|
+
import { JwtData } from './JwtData';
|
|
8
|
+
export declare type AccountDefenderOptions = {
|
|
9
|
+
base64Utils: IBase64Utils;
|
|
10
|
+
};
|
|
11
|
+
export declare class AccountDefender<Req, Res> implements IAccountDefender<Req, Res> {
|
|
12
|
+
protected readonly config: IConfiguration<Req, Res>;
|
|
13
|
+
protected readonly base64Utils: IBase64Utils;
|
|
14
|
+
constructor(config: IConfiguration<Req, Res>, options: AccountDefenderOptions);
|
|
15
|
+
enrichContextFromRequest(context: ReadonlyContext<Req, Res>): Promise<AccountDefenderData>;
|
|
16
|
+
enrichContextFromRiskApi(context: ReadonlyContext<Req, Res>): Promise<AccountDefenderData>;
|
|
17
|
+
enrichContextFromResponse(context: ReadonlyContext<Req, Res>): Promise<AccountDefenderData>;
|
|
18
|
+
modifyIncomingRequest(context: ReadonlyContext<Req, Res>): Promise<void>;
|
|
19
|
+
modifyOutgoingResponse(context: ReadonlyContext<Req, Res>): Promise<void>;
|
|
20
|
+
protected getJwtData(requestData: DeepReadonly<RequestData<Req>>): JwtData | null;
|
|
21
|
+
protected extractJwtData(jwt: string, userIdFieldName: string, additionalFieldNames: string[]): JwtData | null;
|
|
22
|
+
protected getDecodedJwt(jwt: string): any | null;
|
|
23
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { getPropertyFromObject } from '../../utils';
|
|
11
|
+
import { CROSS_TAB_SESSION_COOKIE_NAME } from './constants';
|
|
12
|
+
export class AccountDefender {
|
|
13
|
+
constructor(config, options) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.base64Utils = options.base64Utils;
|
|
16
|
+
}
|
|
17
|
+
enrichContextFromRequest(context) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const crossTabSession = context.requestData.cookies[CROSS_TAB_SESSION_COOKIE_NAME];
|
|
20
|
+
const jwtData = this.getJwtData(context.requestData);
|
|
21
|
+
return Object.assign({ crossTabSession }, jwtData);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
enrichContextFromRiskApi(context) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
return;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
enrichContextFromResponse(context) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
return;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
modifyIncomingRequest(context) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
return;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
modifyOutgoingResponse(context) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
return;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getJwtData(requestData) {
|
|
45
|
+
var _a;
|
|
46
|
+
let jwtToken;
|
|
47
|
+
let userIdFieldName;
|
|
48
|
+
let additionalFieldNames;
|
|
49
|
+
if (this.config.jwtCookieName) {
|
|
50
|
+
jwtToken = requestData.cookies[this.config.jwtCookieName];
|
|
51
|
+
if (jwtToken) {
|
|
52
|
+
userIdFieldName = this.config.jwtCookieUserIdFieldName;
|
|
53
|
+
additionalFieldNames = this.config.jwtCookieAdditionalFieldNames;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!jwtToken && this.config.jwtHeaderName) {
|
|
57
|
+
jwtToken = (_a = requestData.headers[this.config.jwtHeaderName]) === null || _a === void 0 ? void 0 : _a[0];
|
|
58
|
+
if (jwtToken) {
|
|
59
|
+
userIdFieldName = this.config.jwtHeaderUserIdFieldName;
|
|
60
|
+
additionalFieldNames = this.config.jwtHeaderAdditionalFieldNames;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return jwtToken ? this.extractJwtData(jwtToken, userIdFieldName, additionalFieldNames) : null;
|
|
64
|
+
}
|
|
65
|
+
extractJwtData(jwt, userIdFieldName, additionalFieldNames) {
|
|
66
|
+
try {
|
|
67
|
+
const decodedJwt = this.getDecodedJwt(jwt);
|
|
68
|
+
if (decodedJwt) {
|
|
69
|
+
const appUserId = getPropertyFromObject(decodedJwt, ...userIdFieldName.split('.'));
|
|
70
|
+
const additionalFields = additionalFieldNames.reduce((matchedFields, fieldName) => {
|
|
71
|
+
const fieldNameParts = fieldName.split('.');
|
|
72
|
+
const value = getPropertyFromObject(decodedJwt, ...fieldNameParts);
|
|
73
|
+
if (value) {
|
|
74
|
+
matchedFields[fieldNameParts[fieldNameParts.length - 1]] = value;
|
|
75
|
+
}
|
|
76
|
+
return matchedFields;
|
|
77
|
+
}, {});
|
|
78
|
+
return { additionalFields, appUserId };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
this.config.logger.debug(`unable to get account defender JWT data: ${e}`);
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
getDecodedJwt(jwt) {
|
|
87
|
+
var _a;
|
|
88
|
+
try {
|
|
89
|
+
const encodedPayload = (_a = jwt.split('.')) === null || _a === void 0 ? void 0 : _a[1];
|
|
90
|
+
const base64 = encodedPayload.replace('-', '+').replace('_', '/');
|
|
91
|
+
return JSON.parse(this.base64Utils.base64Decode(base64));
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
this.config.logger.debug(`unable to decode account defender jwt token: ${e}`);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CROSS_TAB_SESSION_COOKIE_NAME = "pxcts";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const CROSS_TAB_SESSION_COOKIE_NAME = 'pxcts';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
2
|
+
import { IConfiguration } from '../../config';
|
|
3
|
+
import { ReadonlyContext } from '../../context';
|
|
4
|
+
import { ActionData } from '../../action';
|
|
5
|
+
import { IMinimalResponse } from '../../http';
|
|
6
|
+
import { IRiskResponse } from '../../risk_api';
|
|
7
|
+
import { FirstPartyData, IFirstParty } from '../../first_party';
|
|
8
|
+
import { IFilter } from '../../filter';
|
|
9
|
+
import { IConditionalBlocker } from '../../blocker';
|
|
10
|
+
import { IBase64Utils, IIpRangeChecker } from '../../utils';
|
|
11
|
+
import { IBotDefender } from '../';
|
|
12
|
+
import { BotDefenderData } from './BotDefenderData';
|
|
13
|
+
import { BotDefenderS2SCallReason } from './reasons';
|
|
14
|
+
export declare type BotDefenderOptions<Req, Res> = {
|
|
15
|
+
base64Utils: IBase64Utils;
|
|
16
|
+
firstParty?: IFirstParty<Req, Res>;
|
|
17
|
+
blocker?: IConditionalBlocker<Req, Res>;
|
|
18
|
+
} & ({
|
|
19
|
+
ipRangeChecker?: IIpRangeChecker;
|
|
20
|
+
filter: IFilter<Req, Res>;
|
|
21
|
+
} | {
|
|
22
|
+
ipRangeChecker: IIpRangeChecker;
|
|
23
|
+
filter?: IFilter<Req, Res>;
|
|
24
|
+
});
|
|
25
|
+
export declare class BotDefender<Req, Res> implements IBotDefender<Req, Res> {
|
|
26
|
+
protected readonly config: IConfiguration<Req, Res>;
|
|
27
|
+
protected readonly firstParty: IFirstParty<Req, Res>;
|
|
28
|
+
protected readonly filter: IFilter<Req, Res>;
|
|
29
|
+
protected readonly blocker: IConditionalBlocker<Req, Res>;
|
|
30
|
+
constructor(config: IConfiguration<Req, Res>, options: BotDefenderOptions<Req, Res>);
|
|
31
|
+
handleFirstPartyRequest(context: ReadonlyContext<Req, Res>): Promise<FirstPartyData | null>;
|
|
32
|
+
shouldFilter(context: ReadonlyContext<Req, Res>): boolean;
|
|
33
|
+
enrichContextFromRequest(context: ReadonlyContext<Req, Res>): Promise<BotDefenderData>;
|
|
34
|
+
protected isMonitoredRoute(context: ReadonlyContext<Req, Res>): boolean;
|
|
35
|
+
protected isSensitiveRequest({ requestData: { url } }: ReadonlyContext<Req, Res>): boolean;
|
|
36
|
+
enrichContextFromResponse(context: ReadonlyContext<Req, Res>): Promise<Partial<BotDefenderData>>;
|
|
37
|
+
getTokenAction(context: ReadonlyContext<Req, Res>, isMonitoredRequest: boolean, isSensitiveRequest: boolean): Promise<ActionData>;
|
|
38
|
+
protected getNoTokenS2SCallReason({ pxhd, isMobile, tokenData, }: ReadonlyContext<Req, Res>): BotDefenderS2SCallReason;
|
|
39
|
+
protected getActionForSuccessfulTokenParse({ tokenData: { token } }: ReadonlyContext<Req, Res>, isMonitoredRequest: boolean, isSensitiveRequest: boolean): ActionData;
|
|
40
|
+
enrichContextFromRiskApi(context: ReadonlyContext<Req, Res>): Promise<Partial<BotDefenderData>>;
|
|
41
|
+
protected getRiskApiActionData({ riskApiData, productData: { bd }, }: ReadonlyContext<Req, Res>): Promise<ActionData>;
|
|
42
|
+
protected getSuccessfulRiskApiAction(riskResponse: DeepReadonly<IRiskResponse>, isMonitored: boolean): ActionData;
|
|
43
|
+
shouldBlock(context: ReadonlyContext<Req, Res>): boolean;
|
|
44
|
+
createBlockResponse(context: ReadonlyContext<Req, Res>): IMinimalResponse;
|
|
45
|
+
modifyIncomingRequest(context: ReadonlyContext<Req, Res>): Promise<void>;
|
|
46
|
+
modifyOutgoingResponse(context: ReadonlyContext<Req, Res>): Promise<void>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Action } from '../../action';
|
|
11
|
+
import { TokenParseResult } from '../../risk_token';
|
|
12
|
+
import { RiskApiCallResult } from '../../risk_api';
|
|
13
|
+
import { EnforcerError, isRouteInPatterns } from '../../utils';
|
|
14
|
+
import { BotDefenderActionData, isMonitoredRequest } from '../';
|
|
15
|
+
import { DefaultBotDefenderFirstParty } from './first_party';
|
|
16
|
+
import { DefaultBotDefenderFilter } from './filter';
|
|
17
|
+
import { BotDefenderBlockReason, BotDefenderPassReason, BotDefenderS2SCallReason } from './reasons';
|
|
18
|
+
import { BotDefenderUtils } from './BotDefenderUtils';
|
|
19
|
+
import { DefaultBotDefenderBlocker } from './block';
|
|
20
|
+
export class BotDefender {
|
|
21
|
+
constructor(config, options) {
|
|
22
|
+
var _a, _b, _c;
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.firstParty = (_a = options.firstParty) !== null && _a !== void 0 ? _a : new DefaultBotDefenderFirstParty(config);
|
|
25
|
+
this.filter = (_b = options.filter) !== null && _b !== void 0 ? _b : new DefaultBotDefenderFilter(config, options.ipRangeChecker);
|
|
26
|
+
this.blocker = (_c = options.blocker) !== null && _c !== void 0 ? _c : new DefaultBotDefenderBlocker(config, options.base64Utils);
|
|
27
|
+
}
|
|
28
|
+
handleFirstPartyRequest(context) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
return this.firstParty.handleFirstPartyRequest(context);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
shouldFilter(context) {
|
|
34
|
+
return this.filter.shouldFilter(context);
|
|
35
|
+
}
|
|
36
|
+
enrichContextFromRequest(context) {
|
|
37
|
+
var _a;
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const isMonitoredRequest = this.isMonitoredRoute(context);
|
|
40
|
+
const isSensitiveRequest = this.isSensitiveRequest(context) || ((_a = context.graphqlData) === null || _a === void 0 ? void 0 : _a.some((operation) => operation.sensitive));
|
|
41
|
+
const actionData = yield this.getTokenAction(context, isMonitoredRequest, isSensitiveRequest);
|
|
42
|
+
return Object.assign(Object.assign({}, actionData), { isMonitoredRequest,
|
|
43
|
+
isSensitiveRequest });
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
isMonitoredRoute(context) {
|
|
47
|
+
return isMonitoredRequest(this.config, context);
|
|
48
|
+
}
|
|
49
|
+
isSensitiveRequest({ requestData: { url } }) {
|
|
50
|
+
// TODO: Include custom sensitive request function
|
|
51
|
+
return isRouteInPatterns(url.pathname, this.config.sensitiveRoutes);
|
|
52
|
+
}
|
|
53
|
+
enrichContextFromResponse(context) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
return;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
getTokenAction(context, isMonitoredRequest, isSensitiveRequest) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
switch (context.tokenData.tokenParseResult) {
|
|
61
|
+
case TokenParseResult.NONE:
|
|
62
|
+
return new BotDefenderActionData(Action.TRIGGER_RISK_API, this.getNoTokenS2SCallReason(context));
|
|
63
|
+
case TokenParseResult.DECRYPTION_FAILED:
|
|
64
|
+
return new BotDefenderActionData(Action.TRIGGER_RISK_API, BotDefenderS2SCallReason.COOKIE_DECRYPTION_FAILED);
|
|
65
|
+
case TokenParseResult.VALIDATION_FAILED:
|
|
66
|
+
return new BotDefenderActionData(Action.TRIGGER_RISK_API, BotDefenderS2SCallReason.COOKIE_VALIDATION_FAILED);
|
|
67
|
+
case TokenParseResult.SUCCESSFUL:
|
|
68
|
+
return this.getActionForSuccessfulTokenParse(context, isMonitoredRequest, isSensitiveRequest);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getNoTokenS2SCallReason({ pxhd, isMobile, tokenData, }) {
|
|
73
|
+
var _a;
|
|
74
|
+
if (isMobile && ((_a = tokenData.mobileData) === null || _a === void 0 ? void 0 : _a.mobileError)) {
|
|
75
|
+
return BotDefenderUtils.getS2SCallReasonFromMobileError(tokenData.mobileData.mobileError);
|
|
76
|
+
}
|
|
77
|
+
if (pxhd) {
|
|
78
|
+
return BotDefenderS2SCallReason.NO_COOKIE_WITH_VID;
|
|
79
|
+
}
|
|
80
|
+
return BotDefenderS2SCallReason.NO_COOKIE;
|
|
81
|
+
}
|
|
82
|
+
getActionForSuccessfulTokenParse({ tokenData: { token } }, isMonitoredRequest, isSensitiveRequest) {
|
|
83
|
+
if (token.isExpired()) {
|
|
84
|
+
return new BotDefenderActionData(Action.TRIGGER_RISK_API, BotDefenderS2SCallReason.COOKIE_EXPIRED);
|
|
85
|
+
}
|
|
86
|
+
if (token.isHighScore()) {
|
|
87
|
+
return new BotDefenderActionData(isMonitoredRequest ? Action.SIMULATED_BLOCK : Action.BLOCK, BotDefenderBlockReason.COOKIE_HIGH_SCORE);
|
|
88
|
+
}
|
|
89
|
+
if (isSensitiveRequest) {
|
|
90
|
+
return new BotDefenderActionData(Action.TRIGGER_RISK_API, BotDefenderS2SCallReason.SENSITIVE_ROUTE);
|
|
91
|
+
}
|
|
92
|
+
return new BotDefenderActionData(Action.PASS_REQUEST, BotDefenderPassReason.COOKIE);
|
|
93
|
+
}
|
|
94
|
+
enrichContextFromRiskApi(context) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
return yield this.getRiskApiActionData(context);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
getRiskApiActionData({ riskApiData, productData: { bd }, }) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
switch (riskApiData.riskApiCallResult) {
|
|
102
|
+
case RiskApiCallResult.NONE:
|
|
103
|
+
throw new EnforcerError('risk api call result should not be none!');
|
|
104
|
+
case RiskApiCallResult.ERROR:
|
|
105
|
+
return new BotDefenderActionData(Action.PASS_REQUEST, BotDefenderPassReason.S2S_ERROR);
|
|
106
|
+
case RiskApiCallResult.TIMEOUT:
|
|
107
|
+
return new BotDefenderActionData(Action.PASS_REQUEST, BotDefenderPassReason.S2S_TIMEOUT);
|
|
108
|
+
case RiskApiCallResult.SUCCESSFUL:
|
|
109
|
+
return this.getSuccessfulRiskApiAction(riskApiData.riskResponse, bd.isMonitoredRequest);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
getSuccessfulRiskApiAction(riskResponse, isMonitored) {
|
|
114
|
+
if (riskResponse.score >= this.config.blockingScore) {
|
|
115
|
+
return new BotDefenderActionData(isMonitored ? Action.SIMULATED_BLOCK : Action.BLOCK, BotDefenderBlockReason.S2S_HIGH_SCORE);
|
|
116
|
+
}
|
|
117
|
+
return new BotDefenderActionData(Action.PASS_REQUEST, BotDefenderPassReason.S2S);
|
|
118
|
+
}
|
|
119
|
+
shouldBlock(context) {
|
|
120
|
+
return this.blocker.shouldBlock(context);
|
|
121
|
+
}
|
|
122
|
+
createBlockResponse(context) {
|
|
123
|
+
return this.blocker.createBlockResponse(context);
|
|
124
|
+
}
|
|
125
|
+
modifyIncomingRequest(context) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
// intentionally left blank
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
modifyOutgoingResponse(context) {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
+
// intentionally left blank
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Action, ActionData } from '../../action';
|
|
2
|
+
import { BotDefenderReasonType } from './reasons';
|
|
3
|
+
export declare class BotDefenderActionData<A extends Action> implements ActionData {
|
|
4
|
+
readonly action: A;
|
|
5
|
+
readonly reason: BotDefenderReasonType<A>;
|
|
6
|
+
constructor(action: A, reason: BotDefenderReasonType<A>);
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ActionData } from '../../action';
|
|
2
|
+
export declare type BotDefenderData = ActionData & {
|
|
3
|
+
/**
|
|
4
|
+
* Whether the request should go through the enforcement flow in monitor mode.
|
|
5
|
+
* This depends on various configurations including the module mode, monitored routes, enforced
|
|
6
|
+
* routes, and the bypass monitor header.
|
|
7
|
+
*/
|
|
8
|
+
isMonitoredRequest: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Whether the request should trigger a Risk API call regardless of the risk cookie it carries.
|
|
11
|
+
*/
|
|
12
|
+
isSensitiveRequest: boolean;
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MobileError } from '../../risk_token';
|
|
2
|
+
import { BotDefenderS2SCallReason } from './reasons';
|
|
3
|
+
export var BotDefenderUtils;
|
|
4
|
+
(function (BotDefenderUtils) {
|
|
5
|
+
BotDefenderUtils.getS2SCallReasonFromMobileError = (mobileError) => {
|
|
6
|
+
switch (mobileError) {
|
|
7
|
+
case MobileError.NO_COOKIE:
|
|
8
|
+
return BotDefenderS2SCallReason.MOBILE_ERROR_NO_COOKIE;
|
|
9
|
+
case MobileError.CONNECTION_ERROR:
|
|
10
|
+
return BotDefenderS2SCallReason.MOBILE_ERROR_CONNECTION_ERROR;
|
|
11
|
+
case MobileError.CERTIFICATE_PINNING_ERROR:
|
|
12
|
+
return BotDefenderS2SCallReason.MOBILE_ERROR_CERTIFICATE_PINNING_ERROR;
|
|
13
|
+
case MobileError.BYPASS:
|
|
14
|
+
return BotDefenderS2SCallReason.MOBILE_ERROR_BYPASS;
|
|
15
|
+
default:
|
|
16
|
+
return `mobile_error_${mobileError}`;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
})(BotDefenderUtils || (BotDefenderUtils = {}));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IFilter } from '../../filter';
|
|
2
|
+
import { IFirstParty } from '../../first_party';
|
|
3
|
+
import { IConditionalBlocker } from '../../blocker';
|
|
4
|
+
import { IProduct } from '../interfaces';
|
|
5
|
+
import { ProductName } from '../utils';
|
|
6
|
+
export interface IBotDefender<Req, Res> extends IProduct<ProductName.BOT_DEFENDER, Req, Res>, IFirstParty<Req, Res>, IFilter<Req, Res>, IConditionalBlocker<Req, Res> {
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReadonlyContext } from '../../../context';
|
|
2
|
+
import { IConfiguration } from '../../../config';
|
|
3
|
+
import { IBase64Utils } from '../../../utils';
|
|
4
|
+
import { IConditionalBlocker } from '../../../blocker';
|
|
5
|
+
import { IMinimalResponse } from '../../../http';
|
|
6
|
+
export declare class DefaultBotDefenderBlocker<Req, Res> implements IConditionalBlocker<Req, Res> {
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly captchaResponseGenerator;
|
|
9
|
+
constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
|
|
10
|
+
shouldBlock({ action, reasons, productData }: ReadonlyContext<Req, Res>): boolean;
|
|
11
|
+
createBlockResponse(context: ReadonlyContext<Req, Res>): IMinimalResponse;
|
|
12
|
+
private createRateLimitResponse;
|
|
13
|
+
private createCaptchaResponse;
|
|
14
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Action } from '../../../action';
|
|
2
|
+
import { BlockAction } from '../../../blocker';
|
|
3
|
+
import { ContentType, CONTENT_TYPE_HEADER_NAME, MinimalResponseImpl } from '../../../http';
|
|
4
|
+
import { ProductName } from '../../utils';
|
|
5
|
+
import { CaptchaBlocker } from './captcha';
|
|
6
|
+
import { RATE_LIMIT_TEMPLATE } from './templates';
|
|
7
|
+
export class DefaultBotDefenderBlocker {
|
|
8
|
+
constructor(config, base64Utils) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.captchaResponseGenerator = new CaptchaBlocker(config, base64Utils);
|
|
11
|
+
}
|
|
12
|
+
shouldBlock({ action, reasons, productData }) {
|
|
13
|
+
return action === Action.BLOCK && !!(reasons === null || reasons === void 0 ? void 0 : reasons[ProductName.BOT_DEFENDER]);
|
|
14
|
+
}
|
|
15
|
+
createBlockResponse(context) {
|
|
16
|
+
switch (context.blockAction) {
|
|
17
|
+
case BlockAction.RATE_LIMIT:
|
|
18
|
+
return this.createRateLimitResponse();
|
|
19
|
+
case BlockAction.CHALLENGE:
|
|
20
|
+
case BlockAction.CAPTCHA:
|
|
21
|
+
default:
|
|
22
|
+
return this.createCaptchaResponse(context);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
createRateLimitResponse() {
|
|
26
|
+
const status = 429;
|
|
27
|
+
const headers = {
|
|
28
|
+
[CONTENT_TYPE_HEADER_NAME]: [ContentType.TEXT_HTML],
|
|
29
|
+
};
|
|
30
|
+
return new MinimalResponseImpl({
|
|
31
|
+
body: RATE_LIMIT_TEMPLATE,
|
|
32
|
+
status: status,
|
|
33
|
+
headers: headers,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
createCaptchaResponse(context) {
|
|
37
|
+
return this.captchaResponseGenerator.createBlockResponse(context);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IConfiguration } from '../../../../config';
|
|
2
|
+
import { ReadonlyContext } from '../../../../context';
|
|
3
|
+
import { IBase64Utils } from '../../../../utils';
|
|
4
|
+
import { IBlocker } from '../../../../blocker';
|
|
5
|
+
import { IMinimalResponse } from '../../../../http';
|
|
6
|
+
export declare class CaptchaBlocker<Req, Res> implements IBlocker<Req, Res> {
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly jsonCaptchaGenerator;
|
|
9
|
+
private readonly mobileCaptchaGenerator;
|
|
10
|
+
private readonly htmlCaptchaGenerator;
|
|
11
|
+
constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
|
|
12
|
+
createBlockResponse(context: ReadonlyContext<Req, Res>): IMinimalResponse;
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { JsonCaptchaBlocker } from './JsonCaptchaBlocker';
|
|
2
|
+
import { MobileCaptchaBlocker } from './MobileCaptchaBlocker';
|
|
3
|
+
import { HtmlCaptchaBlocker } from './HtmlCaptchaBlocker';
|
|
4
|
+
export class CaptchaBlocker {
|
|
5
|
+
constructor(config, base64Utils) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.jsonCaptchaGenerator = new JsonCaptchaBlocker(config);
|
|
8
|
+
this.mobileCaptchaGenerator = new MobileCaptchaBlocker(config, base64Utils);
|
|
9
|
+
this.htmlCaptchaGenerator = new HtmlCaptchaBlocker(config);
|
|
10
|
+
}
|
|
11
|
+
createBlockResponse(context) {
|
|
12
|
+
if (this.mobileCaptchaGenerator.shouldBlock(context)) {
|
|
13
|
+
return this.mobileCaptchaGenerator.createBlockResponse(context);
|
|
14
|
+
}
|
|
15
|
+
if (this.jsonCaptchaGenerator.shouldBlock(context)) {
|
|
16
|
+
return this.jsonCaptchaGenerator.createBlockResponse(context);
|
|
17
|
+
}
|
|
18
|
+
return this.htmlCaptchaGenerator.createBlockResponse(context);
|
|
19
|
+
}
|
|
20
|
+
}
|