perimeterx-js-core 0.1.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.
Files changed (288) hide show
  1. package/README.md +158 -0
  2. package/lib/activities/ActivityType.d.ts +6 -0
  3. package/lib/activities/ActivityType.js +10 -0
  4. package/lib/activities/HttpActivityClient.d.ts +12 -0
  5. package/lib/activities/HttpActivityClient.js +107 -0
  6. package/lib/activities/IActivityClient.d.ts +8 -0
  7. package/lib/activities/IActivityClient.js +2 -0
  8. package/lib/activities/constants.d.ts +1 -0
  9. package/lib/activities/constants.js +4 -0
  10. package/lib/activities/index.d.ts +5 -0
  11. package/lib/activities/index.js +7 -0
  12. package/lib/activities/model/Activity.d.ts +13 -0
  13. package/lib/activities/model/Activity.js +2 -0
  14. package/lib/activities/model/ActivityDetails.d.ts +41 -0
  15. package/lib/activities/model/ActivityDetails.js +2 -0
  16. package/lib/activities/utils.d.ts +10 -0
  17. package/lib/activities/utils.js +88 -0
  18. package/lib/additional_activity_handler/AdditionalActivityHandler.d.ts +3 -0
  19. package/lib/additional_activity_handler/AdditionalActivityHandler.js +2 -0
  20. package/lib/additional_activity_handler/AdditionalActivityHandlerUtils.d.ts +5 -0
  21. package/lib/additional_activity_handler/AdditionalActivityHandlerUtils.js +64 -0
  22. package/lib/additional_activity_handler/index.d.ts +2 -0
  23. package/lib/additional_activity_handler/index.js +5 -0
  24. package/lib/block_handler/BlockAction.d.ts +6 -0
  25. package/lib/block_handler/BlockAction.js +21 -0
  26. package/lib/block_handler/BlockReason.d.ts +4 -0
  27. package/lib/block_handler/BlockReason.js +8 -0
  28. package/lib/block_handler/DefaultBlockResponseGenerator.d.ts +14 -0
  29. package/lib/block_handler/DefaultBlockResponseGenerator.js +44 -0
  30. package/lib/block_handler/IBlockResponseGenerator.d.ts +14 -0
  31. package/lib/block_handler/IBlockResponseGenerator.js +2 -0
  32. package/lib/block_handler/captcha/CaptchaBlockResponseGenerator.d.ts +14 -0
  33. package/lib/block_handler/captcha/CaptchaBlockResponseGenerator.js +30 -0
  34. package/lib/block_handler/captcha/HtmlCaptchaResponseGenerator.d.ts +10 -0
  35. package/lib/block_handler/captcha/HtmlCaptchaResponseGenerator.js +25 -0
  36. package/lib/block_handler/captcha/JsonCaptchaResponseGenerator.d.ts +10 -0
  37. package/lib/block_handler/captcha/JsonCaptchaResponseGenerator.js +44 -0
  38. package/lib/block_handler/captcha/MobileCaptchaResponseGenerator.d.ts +12 -0
  39. package/lib/block_handler/captcha/MobileCaptchaResponseGenerator.js +36 -0
  40. package/lib/block_handler/index.d.ts +13 -0
  41. package/lib/block_handler/index.js +21 -0
  42. package/lib/block_handler/model/BlockData.d.ts +16 -0
  43. package/lib/block_handler/model/BlockData.js +2 -0
  44. package/lib/block_handler/model/JsonBlockPayload.d.ts +11 -0
  45. package/lib/block_handler/model/JsonBlockPayload.js +2 -0
  46. package/lib/block_handler/model/MobileBlockPayload.d.ts +8 -0
  47. package/lib/block_handler/model/MobileBlockPayload.js +2 -0
  48. package/lib/block_handler/templates/captcha_template.d.ts +1 -0
  49. package/lib/block_handler/templates/captcha_template.js +4 -0
  50. package/lib/block_handler/templates/rate_limit_template.d.ts +1 -0
  51. package/lib/block_handler/templates/rate_limit_template.js +4 -0
  52. package/lib/block_handler/utils.d.ts +5 -0
  53. package/lib/block_handler/utils.js +48 -0
  54. package/lib/config/ConfigurationParams.d.ts +65 -0
  55. package/lib/config/ConfigurationParams.js +2 -0
  56. package/lib/config/DefaultConfigurations.d.ts +2 -0
  57. package/lib/config/DefaultConfigurations.js +107 -0
  58. package/lib/config/IConfiguration.d.ts +172 -0
  59. package/lib/config/IConfiguration.js +2 -0
  60. package/lib/config/StaticConfigurationBase.d.ts +57 -0
  61. package/lib/config/StaticConfigurationBase.js +355 -0
  62. package/lib/config/index.d.ts +4 -0
  63. package/lib/config/index.js +7 -0
  64. package/lib/context/ContextBase.d.ts +55 -0
  65. package/lib/context/ContextBase.js +206 -0
  66. package/lib/context/DefaultTokenV2Context.d.ts +13 -0
  67. package/lib/context/DefaultTokenV2Context.js +35 -0
  68. package/lib/context/DefaultTokenV3Context.d.ts +13 -0
  69. package/lib/context/DefaultTokenV3Context.js +35 -0
  70. package/lib/context/IContext.d.ts +256 -0
  71. package/lib/context/IContext.js +2 -0
  72. package/lib/context/index.d.ts +4 -0
  73. package/lib/context/index.js +9 -0
  74. package/lib/custom_parameters/CustomParameters.d.ts +12 -0
  75. package/lib/custom_parameters/CustomParameters.js +2 -0
  76. package/lib/custom_parameters/CustomParametersFunction.d.ts +4 -0
  77. package/lib/custom_parameters/CustomParametersFunction.js +2 -0
  78. package/lib/custom_parameters/CustomParametersUtils.d.ts +4 -0
  79. package/lib/custom_parameters/CustomParametersUtils.js +19 -0
  80. package/lib/custom_parameters/index.d.ts +3 -0
  81. package/lib/custom_parameters/index.js +5 -0
  82. package/lib/enforcer/EnforcerBase.d.ts +139 -0
  83. package/lib/enforcer/EnforcerBase.js +376 -0
  84. package/lib/enforcer/IEnforcer.d.ts +4 -0
  85. package/lib/enforcer/IEnforcer.js +2 -0
  86. package/lib/enforcer/index.d.ts +2 -0
  87. package/lib/enforcer/index.js +5 -0
  88. package/lib/filter/DefaultFilter.d.ts +16 -0
  89. package/lib/filter/DefaultFilter.js +59 -0
  90. package/lib/filter/FilterReason.d.ts +8 -0
  91. package/lib/filter/FilterReason.js +12 -0
  92. package/lib/filter/IFilter.d.ts +8 -0
  93. package/lib/filter/IFilter.js +2 -0
  94. package/lib/filter/index.d.ts +3 -0
  95. package/lib/filter/index.js +7 -0
  96. package/lib/first_party/DefaultFirstParty.d.ts +22 -0
  97. package/lib/first_party/DefaultFirstParty.js +215 -0
  98. package/lib/first_party/IFirstParty.d.ts +9 -0
  99. package/lib/first_party/IFirstParty.js +2 -0
  100. package/lib/first_party/constants.d.ts +32 -0
  101. package/lib/first_party/constants.js +39 -0
  102. package/lib/first_party/index.d.ts +4 -0
  103. package/lib/first_party/index.js +21 -0
  104. package/lib/first_party/utils.d.ts +8 -0
  105. package/lib/first_party/utils.js +27 -0
  106. package/lib/http/IHttpClient.d.ts +10 -0
  107. package/lib/http/IHttpClient.js +2 -0
  108. package/lib/http/body_reader/IBodyReader.d.ts +5 -0
  109. package/lib/http/body_reader/IBodyReader.js +2 -0
  110. package/lib/http/body_reader/StringBodyReader.d.ts +8 -0
  111. package/lib/http/body_reader/StringBodyReader.js +70 -0
  112. package/lib/http/index.d.ts +10 -0
  113. package/lib/http/index.js +28 -0
  114. package/lib/http/request/DefaultHttpRequest.d.ts +5 -0
  115. package/lib/http/request/DefaultHttpRequest.js +42 -0
  116. package/lib/http/request/HttpRequestBase.d.ts +24 -0
  117. package/lib/http/request/HttpRequestBase.js +77 -0
  118. package/lib/http/request/IHttpRequest.d.ts +31 -0
  119. package/lib/http/request/IHttpRequest.js +2 -0
  120. package/lib/http/response/DefaultHttpResponse.d.ts +5 -0
  121. package/lib/http/response/DefaultHttpResponse.js +32 -0
  122. package/lib/http/response/HttpResponseBase.d.ts +17 -0
  123. package/lib/http/response/HttpResponseBase.js +75 -0
  124. package/lib/http/response/IHttpResponse.d.ts +26 -0
  125. package/lib/http/response/IHttpResponse.js +2 -0
  126. package/lib/http/utils/ContentType.d.ts +9 -0
  127. package/lib/http/utils/ContentType.js +13 -0
  128. package/lib/http/utils/HttpBody.d.ts +4 -0
  129. package/lib/http/utils/HttpBody.js +2 -0
  130. package/lib/http/utils/HttpHeaders.d.ts +51 -0
  131. package/lib/http/utils/HttpHeaders.js +106 -0
  132. package/lib/http/utils/HttpMethod.d.ts +11 -0
  133. package/lib/http/utils/HttpMethod.js +15 -0
  134. package/lib/http/utils/constants.d.ts +9 -0
  135. package/lib/http/utils/constants.js +12 -0
  136. package/lib/http/utils/index.d.ts +5 -0
  137. package/lib/http/utils/index.js +24 -0
  138. package/lib/index.d.ts +17 -0
  139. package/lib/index.js +33 -0
  140. package/lib/logger/DefaultLogger.d.ts +7 -0
  141. package/lib/logger/DefaultLogger.js +31 -0
  142. package/lib/logger/ILogger.d.ts +24 -0
  143. package/lib/logger/ILogger.js +2 -0
  144. package/lib/logger/LoggerBase.d.ts +11 -0
  145. package/lib/logger/LoggerBase.js +28 -0
  146. package/lib/logger/LoggerSeverity.d.ts +5 -0
  147. package/lib/logger/LoggerSeverity.js +9 -0
  148. package/lib/logger/index.d.ts +4 -0
  149. package/lib/logger/index.js +9 -0
  150. package/lib/pxde/DefaultDataEnrichment.d.ts +14 -0
  151. package/lib/pxde/DefaultDataEnrichment.js +133 -0
  152. package/lib/pxde/IDataEnrichment.d.ts +9 -0
  153. package/lib/pxde/IDataEnrichment.js +2 -0
  154. package/lib/pxde/constants.d.ts +4 -0
  155. package/lib/pxde/constants.js +7 -0
  156. package/lib/pxde/index.d.ts +4 -0
  157. package/lib/pxde/index.js +20 -0
  158. package/lib/pxde/model/PXDE.d.ts +9 -0
  159. package/lib/pxde/model/PXDE.js +2 -0
  160. package/lib/pxhd/PXHDUtils.d.ts +8 -0
  161. package/lib/pxhd/PXHDUtils.js +20 -0
  162. package/lib/pxhd/index.d.ts +1 -0
  163. package/lib/pxhd/index.js +5 -0
  164. package/lib/risk_api/PostRiskApiClient.d.ts +27 -0
  165. package/lib/risk_api/PostRiskApiClient.js +232 -0
  166. package/lib/risk_api/S2SCallReason.d.ts +12 -0
  167. package/lib/risk_api/S2SCallReason.js +16 -0
  168. package/lib/risk_api/S2SErrorHandler.d.ts +9 -0
  169. package/lib/risk_api/S2SErrorHandler.js +121 -0
  170. package/lib/risk_api/S2SErrorReason.d.ts +8 -0
  171. package/lib/risk_api/S2SErrorReason.js +12 -0
  172. package/lib/risk_api/constants.d.ts +1 -0
  173. package/lib/risk_api/constants.js +4 -0
  174. package/lib/risk_api/index.d.ts +13 -0
  175. package/lib/risk_api/index.js +34 -0
  176. package/lib/risk_api/model/RiskActivity.d.ts +50 -0
  177. package/lib/risk_api/model/RiskActivity.js +2 -0
  178. package/lib/risk_api/model/RiskResponseV2.d.ts +10 -0
  179. package/lib/risk_api/model/RiskResponseV2.js +2 -0
  180. package/lib/risk_api/model/RiskResponseV3.d.ts +12 -0
  181. package/lib/risk_api/model/RiskResponseV3.js +2 -0
  182. package/lib/risk_api/model/RiskStatus.d.ts +4 -0
  183. package/lib/risk_api/model/RiskStatus.js +8 -0
  184. package/lib/risk_api/risk_response_handler/IRiskResponseHandler.d.ts +5 -0
  185. package/lib/risk_api/risk_response_handler/IRiskResponseHandler.js +2 -0
  186. package/lib/risk_api/risk_response_handler/RiskResponseHandlerBase.d.ts +16 -0
  187. package/lib/risk_api/risk_response_handler/RiskResponseHandlerBase.js +73 -0
  188. package/lib/risk_api/risk_response_handler/RiskResponseV2Handler.d.ts +10 -0
  189. package/lib/risk_api/risk_response_handler/RiskResponseV2Handler.js +46 -0
  190. package/lib/risk_api/risk_response_handler/RiskResponseV3Handler.d.ts +10 -0
  191. package/lib/risk_api/risk_response_handler/RiskResponseV3Handler.js +47 -0
  192. package/lib/risk_token/MobileError.d.ts +6 -0
  193. package/lib/risk_token/MobileError.js +10 -0
  194. package/lib/risk_token/MobileErrorHandler.d.ts +9 -0
  195. package/lib/risk_token/MobileErrorHandler.js +100 -0
  196. package/lib/risk_token/RiskTokenScoreRetriever.d.ts +14 -0
  197. package/lib/risk_token/RiskTokenScoreRetriever.js +148 -0
  198. package/lib/risk_token/TokenOrigin.d.ts +4 -0
  199. package/lib/risk_token/TokenOrigin.js +8 -0
  200. package/lib/risk_token/TokenVerificationResult.d.ts +6 -0
  201. package/lib/risk_token/TokenVerificationResult.js +10 -0
  202. package/lib/risk_token/TokenVersion.d.ts +4 -0
  203. package/lib/risk_token/TokenVersion.js +8 -0
  204. package/lib/risk_token/constants.d.ts +9 -0
  205. package/lib/risk_token/constants.js +12 -0
  206. package/lib/risk_token/index.d.ts +9 -0
  207. package/lib/risk_token/index.js +32 -0
  208. package/lib/risk_token/token/BotDefenderTokenBase.d.ts +27 -0
  209. package/lib/risk_token/token/BotDefenderTokenBase.js +94 -0
  210. package/lib/risk_token/token/IBotDefenderToken.d.ts +54 -0
  211. package/lib/risk_token/token/IBotDefenderToken.js +2 -0
  212. package/lib/risk_token/token/index.d.ts +7 -0
  213. package/lib/risk_token/token/index.js +11 -0
  214. package/lib/risk_token/token/v2/BotDefenderTokenV2Payload.d.ts +6 -0
  215. package/lib/risk_token/token/v2/BotDefenderTokenV2Payload.js +2 -0
  216. package/lib/risk_token/token/v2/DefaultBotDefenderTokenV2.d.ts +28 -0
  217. package/lib/risk_token/token/v2/DefaultBotDefenderTokenV2.js +199 -0
  218. package/lib/risk_token/token/v3/BotDefenderTokenV3Payload.d.ts +9 -0
  219. package/lib/risk_token/token/v3/BotDefenderTokenV3Payload.js +2 -0
  220. package/lib/risk_token/token/v3/DefaultBotDefenderTokenV3.d.ts +31 -0
  221. package/lib/risk_token/token/v3/DefaultBotDefenderTokenV3.js +231 -0
  222. package/lib/risk_token/token/v3/TokenSignField.d.ts +4 -0
  223. package/lib/risk_token/token/v3/TokenSignField.js +8 -0
  224. package/lib/risk_token/utils.d.ts +2 -0
  225. package/lib/risk_token/utils.js +16 -0
  226. package/lib/telemetry/DefaultTelemetry.d.ts +19 -0
  227. package/lib/telemetry/DefaultTelemetry.js +176 -0
  228. package/lib/telemetry/ITelemetry.d.ts +13 -0
  229. package/lib/telemetry/ITelemetry.js +2 -0
  230. package/lib/telemetry/constants.d.ts +7 -0
  231. package/lib/telemetry/constants.js +10 -0
  232. package/lib/telemetry/index.d.ts +4 -0
  233. package/lib/telemetry/index.js +20 -0
  234. package/lib/telemetry/model/TelemetryActivity.d.ts +15 -0
  235. package/lib/telemetry/model/TelemetryActivity.js +2 -0
  236. package/lib/utils/Algorithm.d.ts +4 -0
  237. package/lib/utils/Algorithm.js +8 -0
  238. package/lib/utils/EnforcerException.d.ts +3 -0
  239. package/lib/utils/EnforcerException.js +26 -0
  240. package/lib/utils/IScoreRetriever.d.ts +14 -0
  241. package/lib/utils/IScoreRetriever.js +2 -0
  242. package/lib/utils/ModuleMode.d.ts +4 -0
  243. package/lib/utils/ModuleMode.js +8 -0
  244. package/lib/utils/PassReason.d.ts +6 -0
  245. package/lib/utils/PassReason.js +10 -0
  246. package/lib/utils/VidSource.d.ts +4 -0
  247. package/lib/utils/VidSource.js +8 -0
  248. package/lib/utils/base64/DefaultBase64Utils.d.ts +5 -0
  249. package/lib/utils/base64/DefaultBase64Utils.js +16 -0
  250. package/lib/utils/base64/IBase64Utils.d.ts +4 -0
  251. package/lib/utils/base64/IBase64Utils.js +2 -0
  252. package/lib/utils/base64/index.d.ts +2 -0
  253. package/lib/utils/base64/index.js +5 -0
  254. package/lib/utils/cipher/ICipherUtils.d.ts +7 -0
  255. package/lib/utils/cipher/ICipherUtils.js +2 -0
  256. package/lib/utils/cipher/index.d.ts +1 -0
  257. package/lib/utils/cipher/index.js +2 -0
  258. package/lib/utils/constants.d.ts +10 -0
  259. package/lib/utils/constants.js +13 -0
  260. package/lib/utils/cookie_parser/DefaultCookieParser.d.ts +4 -0
  261. package/lib/utils/cookie_parser/DefaultCookieParser.js +13 -0
  262. package/lib/utils/cookie_parser/ICookieParser.d.ts +3 -0
  263. package/lib/utils/cookie_parser/ICookieParser.js +2 -0
  264. package/lib/utils/cookie_parser/index.d.ts +2 -0
  265. package/lib/utils/cookie_parser/index.js +5 -0
  266. package/lib/utils/hash/DefaultHashUtils.d.ts +5 -0
  267. package/lib/utils/hash/DefaultHashUtils.js +19 -0
  268. package/lib/utils/hash/IHashUtils.d.ts +4 -0
  269. package/lib/utils/hash/IHashUtils.js +2 -0
  270. package/lib/utils/hash/index.d.ts +2 -0
  271. package/lib/utils/hash/index.js +5 -0
  272. package/lib/utils/index.d.ts +14 -0
  273. package/lib/utils/index.js +35 -0
  274. package/lib/utils/ip_range_checker/DefaultIpRangeChecker.d.ts +4 -0
  275. package/lib/utils/ip_range_checker/DefaultIpRangeChecker.js +13 -0
  276. package/lib/utils/ip_range_checker/IIpRangeChecker.d.ts +3 -0
  277. package/lib/utils/ip_range_checker/IIpRangeChecker.js +2 -0
  278. package/lib/utils/ip_range_checker/index.d.ts +2 -0
  279. package/lib/utils/ip_range_checker/index.js +5 -0
  280. package/lib/utils/utils.d.ts +13 -0
  281. package/lib/utils/utils.js +91 -0
  282. package/lib/utils/uuid_generator/DefaultUuidGenerator.d.ts +4 -0
  283. package/lib/utils/uuid_generator/DefaultUuidGenerator.js +13 -0
  284. package/lib/utils/uuid_generator/IUuidGenerator.d.ts +3 -0
  285. package/lib/utils/uuid_generator/IUuidGenerator.js +2 -0
  286. package/lib/utils/uuid_generator/index.d.ts +2 -0
  287. package/lib/utils/uuid_generator/index.js +5 -0
  288. package/package.json +52 -0
@@ -0,0 +1,139 @@
1
+ import { IEnforcer } from './IEnforcer';
2
+ import { IConfiguration } from '../config';
3
+ import { IHttpClient, IHttpRequest, IHttpResponse } from '../http';
4
+ import { IBase64Utils, ICipherUtils, IHashUtils, IIpRangeChecker, IScoreRetriever } from '../utils';
5
+ import { IContext } from '../context';
6
+ import { IFilter } from '../filter';
7
+ import { IDataEnrichment } from '../pxde';
8
+ import { IFirstParty } from '../first_party';
9
+ import { ITelemetry } from '../telemetry';
10
+ import { IBlockResponseGenerator } from '../block_handler';
11
+ import { TokenVersion } from '../risk_token';
12
+ import { IActivityClient } from '../activities';
13
+ export declare type EnforcerBaseOptions = {
14
+ tokenVersion?: TokenVersion;
15
+ dataEnrichment?: IDataEnrichment;
16
+ filter?: IFilter;
17
+ cookieScoreRetriever?: IScoreRetriever;
18
+ ipRangeChecker?: IIpRangeChecker;
19
+ base64Utils?: IBase64Utils;
20
+ hashUtils?: IHashUtils;
21
+ cipherUtils?: ICipherUtils;
22
+ blockGenerator?: IBlockResponseGenerator;
23
+ } & ({
24
+ httpClient: IHttpClient;
25
+ firstParty?: IFirstParty;
26
+ telemetry?: ITelemetry;
27
+ riskApiScoreRetriever?: IScoreRetriever;
28
+ activityClient?: IActivityClient;
29
+ } | {
30
+ httpClient?: IHttpClient;
31
+ firstParty: IFirstParty;
32
+ telemetry: ITelemetry;
33
+ riskApiScoreRetriever: IScoreRetriever;
34
+ activityClient: IActivityClient;
35
+ });
36
+ export declare abstract class EnforcerBase<EnforceArgs extends any[], Req, Res> implements IEnforcer<EnforceArgs, [Req, Res, ...EnforceArgs], Promise<Req | Res>, Promise<Res>> {
37
+ protected config: IConfiguration;
38
+ protected filter: IFilter;
39
+ protected dataEnrichment: IDataEnrichment;
40
+ protected firstParty: IFirstParty;
41
+ protected telemetry: ITelemetry;
42
+ protected cookieScoreRetriever: IScoreRetriever;
43
+ protected riskApiScoreRetriever: IScoreRetriever;
44
+ protected blockGenerator: IBlockResponseGenerator;
45
+ protected activityClient: IActivityClient;
46
+ /**
47
+ * Returns the original Req object in case the module is disabled or an error is thrown.
48
+ * @param args - The EnforceArgs required to enforce the incoming request.
49
+ * @returns Req - The original Req object.
50
+ * @protected
51
+ */
52
+ protected abstract getRequestFromArgs(...args: EnforceArgs): Req;
53
+ /**
54
+ * Constructs the concrete request context given the provided EnforceArgs.
55
+ * @param args - The EnforceArgs required to enforce the incoming request.
56
+ * @returns IContext - The context for the request.
57
+ * @protected
58
+ */
59
+ protected abstract constructContext(...args: EnforceArgs): IContext;
60
+ /**
61
+ * A function that retrieves the already generated context for use in the postEnforce function.
62
+ * @param req - The Req object sent to the origin.
63
+ * @param res - The Res object received from the origin.
64
+ * @param args - The EnforceArgs required to enforce the incoming request.
65
+ * @returns IContext - The context for the request.
66
+ * @protected
67
+ */
68
+ protected abstract retrieveContext(req: Req, res: Res, ...args: EnforceArgs): IContext;
69
+ /**
70
+ * Converts the IHttpRequest object into the Req object.
71
+ * @param httpRequest - The IHttpRequest object.
72
+ * @returns Promise<Req> - A Promise resolving to Req.
73
+ * @protected
74
+ */
75
+ protected abstract convertToReq(httpRequest: IHttpRequest): Promise<Req>;
76
+ /**
77
+ * Converts the IHttpResponse object into the Res object.
78
+ * @param httpResponse - The IHttpResponse object.
79
+ * @returns Promise<Res> - A Promise resolving to Res.
80
+ * @protected
81
+ */
82
+ protected abstract convertToRes(httpResponse: IHttpResponse): Promise<Res>;
83
+ /**
84
+ * Converts the Req object into the IHttpRequest interface.
85
+ * @param req - The Req object.
86
+ * @returns Promise<IHttpRequest> - A Promise resolving to IHttpRequest.
87
+ * @protected
88
+ */
89
+ protected abstract convertToHttpRequest(req: Req): Promise<IHttpRequest>;
90
+ /**
91
+ * Converts the Res object into the IHttpResponse interface.
92
+ * @param res - The Res object.
93
+ * @returns Promise<IHttpResponse> - A Promise resolving to IHttpResponse.
94
+ * @protected
95
+ */
96
+ protected abstract convertToHttpResponse(res: Res): Promise<IHttpResponse>;
97
+ /**
98
+ * The EnforcerBase constructor.
99
+ * @param config - The enforcer configuration.
100
+ * @param options - An options object that allows for overriding any functional building blocks in the enforcer.
101
+ * @protected
102
+ */
103
+ protected constructor(config: IConfiguration, options: EnforcerBaseOptions);
104
+ /**
105
+ * The central function that triggers enforcement on the incoming request.
106
+ * @param args - The EnforceArgs required to enforce the incoming request.
107
+ * @returns Promise<Req|Res> - A Promise resolving to a either Req or Res depending on the action that should be taken.
108
+ */
109
+ enforce(...args: EnforceArgs): Promise<Req | Res>;
110
+ /**
111
+ * Performs all enforcer functionality on the incoming request context.
112
+ * @param args - The EnforceArgs required to enforce the incoming request.
113
+ * @returns Promise<Req|Res> - A Promise resolving to a either Req or Res depending on the action that should be taken.
114
+ * @protected
115
+ */
116
+ protected doEnforce(...args: EnforceArgs): Promise<Req | Res>;
117
+ protected createContext(...args: EnforceArgs): Promise<IContext>;
118
+ protected handleFirstParty(context: IContext): Promise<IHttpResponse>;
119
+ protected handleFilter(context: IContext): boolean;
120
+ protected handleCompleteContextInitialization(context: IContext): Promise<void>;
121
+ protected handleTelemetryIfNeeded(context: IContext): Promise<void>;
122
+ protected handlePxde(context: IContext): Promise<void>;
123
+ protected handleCookieRetrieverIfNeeded(context: IContext): Promise<void>;
124
+ protected handleRiskApiIfNeeded(context: IContext): Promise<void>;
125
+ protected handleAdditionalActivityHandler(context: IContext): Promise<void>;
126
+ protected handleBlockResponse(context: IContext): Promise<null | IHttpResponse>;
127
+ protected handleSendActivities(context: IContext): Promise<void>;
128
+ /**
129
+ * Performs all required functionality after an origin response has been received.
130
+ * @param req - The Req sent to the origin.
131
+ * @param res - The Res received from the origin.
132
+ * @param args - The EnforceArgs required to enforce the incoming request.
133
+ * @returns Promise<Res> - A modified response
134
+ * @protected
135
+ */
136
+ postEnforce(req: Req, res: Res, ...args: EnforceArgs): Promise<Res>;
137
+ protected setResponseData(context: IContext, response: IHttpResponse): Promise<void>;
138
+ protected handlePxhd(context: IContext, response: IHttpResponse): Promise<IHttpResponse>;
139
+ }
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.EnforcerBase = void 0;
49
+ var utils_1 = require("../utils");
50
+ var pxhd_1 = require("../pxhd");
51
+ var additional_activity_handler_1 = require("../additional_activity_handler");
52
+ var filter_1 = require("../filter");
53
+ var pxde_1 = require("../pxde");
54
+ var first_party_1 = require("../first_party");
55
+ var telemetry_1 = require("../telemetry");
56
+ var block_handler_1 = require("../block_handler");
57
+ var risk_token_1 = require("../risk_token");
58
+ var risk_api_1 = require("../risk_api");
59
+ var activities_1 = require("../activities");
60
+ var EnforcerBase = /** @class */ (function () {
61
+ /**
62
+ * The EnforcerBase constructor.
63
+ * @param config - The enforcer configuration.
64
+ * @param options - An options object that allows for overriding any functional building blocks in the enforcer.
65
+ * @protected
66
+ */
67
+ function EnforcerBase(config, options) {
68
+ this.config = config;
69
+ var base64Utils = options.base64Utils || new utils_1.DefaultBase64Utils();
70
+ var hashUtils = options.hashUtils || new utils_1.DefaultHashUtils();
71
+ this.filter = options.filter || new filter_1.DefaultFilter(this.config, options === null || options === void 0 ? void 0 : options.ipRangeChecker);
72
+ this.cookieScoreRetriever = options.cookieScoreRetriever || new risk_token_1.RiskTokenScoreRetriever(this.config);
73
+ this.blockGenerator = options.blockGenerator || new block_handler_1.DefaultBlockResponseGenerator(this.config, base64Utils);
74
+ this.dataEnrichment = options.dataEnrichment || new pxde_1.DefaultDataEnrichment(this.config, base64Utils, hashUtils);
75
+ var httpClient = options.httpClient;
76
+ this.firstParty = options.firstParty || new first_party_1.DefaultFirstParty(this.config, httpClient);
77
+ this.telemetry = options.telemetry || new telemetry_1.DefaultTelemetry(this.config, httpClient, base64Utils, hashUtils);
78
+ this.activityClient = options.activityClient || new activities_1.HttpActivityClient(this.config, httpClient);
79
+ var riskResponseHandler = options.tokenVersion === risk_token_1.TokenVersion.V2
80
+ ? new risk_api_1.RiskResponseV2Handler(this.config)
81
+ : new risk_api_1.RiskResponseV3Handler(this.config);
82
+ this.riskApiScoreRetriever =
83
+ options.riskApiScoreRetriever || new risk_api_1.PostRiskApiClient(this.config, httpClient, riskResponseHandler);
84
+ }
85
+ /**
86
+ * The central function that triggers enforcement on the incoming request.
87
+ * @param args - The EnforceArgs required to enforce the incoming request.
88
+ * @returns Promise<Req|Res> - A Promise resolving to a either Req or Res depending on the action that should be taken.
89
+ */
90
+ EnforcerBase.prototype.enforce = function () {
91
+ var args = [];
92
+ for (var _i = 0; _i < arguments.length; _i++) {
93
+ args[_i] = arguments[_i];
94
+ }
95
+ return __awaiter(this, void 0, void 0, function () {
96
+ var e_1;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ _a.trys.push([0, 2, , 3]);
101
+ if (!this.config.moduleEnabled) {
102
+ this.config.logger.debug('module is disabled, will not enforce');
103
+ return [2 /*return*/, this.getRequestFromArgs.apply(this, args)];
104
+ }
105
+ this.config.logger.debug('module is enabled, continuing with enforcement');
106
+ return [4 /*yield*/, this.doEnforce.apply(this, args)];
107
+ case 1: return [2 /*return*/, _a.sent()];
108
+ case 2:
109
+ e_1 = _a.sent();
110
+ this.config.logger.error("caught error in enforce - ".concat(e_1));
111
+ return [2 /*return*/, this.getRequestFromArgs.apply(this, args)];
112
+ case 3: return [2 /*return*/];
113
+ }
114
+ });
115
+ });
116
+ };
117
+ /**
118
+ * Performs all enforcer functionality on the incoming request context.
119
+ * @param args - The EnforceArgs required to enforce the incoming request.
120
+ * @returns Promise<Req|Res> - A Promise resolving to a either Req or Res depending on the action that should be taken.
121
+ * @protected
122
+ */
123
+ EnforcerBase.prototype.doEnforce = function () {
124
+ var args = [];
125
+ for (var _i = 0; _i < arguments.length; _i++) {
126
+ args[_i] = arguments[_i];
127
+ }
128
+ return __awaiter(this, void 0, void 0, function () {
129
+ var context, httpResponse;
130
+ return __generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0: return [4 /*yield*/, this.createContext.apply(this, args)];
133
+ case 1:
134
+ context = _a.sent();
135
+ return [4 /*yield*/, this.handleFirstParty(context)];
136
+ case 2:
137
+ httpResponse = _a.sent();
138
+ if (httpResponse) {
139
+ this.config.logger.debug('returning first party response');
140
+ return [2 /*return*/, this.convertToRes(httpResponse)];
141
+ }
142
+ if (this.handleFilter(context)) {
143
+ this.config.logger.debug("filtering due to ".concat(context.filterReason));
144
+ return [2 /*return*/, this.convertToReq(context.requestData.request)];
145
+ }
146
+ return [4 /*yield*/, this.handleCompleteContextInitialization(context)];
147
+ case 3:
148
+ _a.sent();
149
+ this.config.logger.debug('context initialization complete');
150
+ return [4 /*yield*/, this.handleTelemetryIfNeeded(context)];
151
+ case 4:
152
+ _a.sent();
153
+ return [4 /*yield*/, this.handlePxde(context)];
154
+ case 5:
155
+ _a.sent();
156
+ return [4 /*yield*/, this.handleCookieRetrieverIfNeeded(context)];
157
+ case 6:
158
+ _a.sent();
159
+ return [4 /*yield*/, this.handleRiskApiIfNeeded(context)];
160
+ case 7:
161
+ _a.sent();
162
+ return [4 /*yield*/, this.handleAdditionalActivityHandler(context)];
163
+ case 8:
164
+ _a.sent();
165
+ return [4 /*yield*/, this.handleBlockResponse(context)];
166
+ case 9:
167
+ httpResponse = _a.sent();
168
+ if (httpResponse) {
169
+ this.config.logger.debug("blocking request due to ".concat(context.blockReason));
170
+ return [2 /*return*/, this.convertToRes(httpResponse)];
171
+ }
172
+ this.config.logger.debug("passing request due to ".concat(context.passReason || 'monitor mode'));
173
+ return [2 /*return*/, this.convertToReq(context.requestData.request)];
174
+ }
175
+ });
176
+ });
177
+ };
178
+ EnforcerBase.prototype.createContext = function () {
179
+ var args = [];
180
+ for (var _i = 0; _i < arguments.length; _i++) {
181
+ args[_i] = arguments[_i];
182
+ }
183
+ return __awaiter(this, void 0, void 0, function () {
184
+ return __generator(this, function (_a) {
185
+ return [2 /*return*/, this.constructContext.apply(this, args)];
186
+ });
187
+ });
188
+ };
189
+ EnforcerBase.prototype.handleFirstParty = function (context) {
190
+ return __awaiter(this, void 0, void 0, function () {
191
+ return __generator(this, function (_a) {
192
+ switch (_a.label) {
193
+ case 0: return [4 /*yield*/, this.firstParty.handleFirstPartyRequest(context)];
194
+ case 1: return [2 /*return*/, _a.sent()];
195
+ }
196
+ });
197
+ });
198
+ };
199
+ EnforcerBase.prototype.handleFilter = function (context) {
200
+ return this.filter.shouldFilter(context);
201
+ };
202
+ EnforcerBase.prototype.handleCompleteContextInitialization = function (context) {
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0: return [4 /*yield*/, context.completeInitialization()];
207
+ case 1:
208
+ _a.sent();
209
+ return [2 /*return*/];
210
+ }
211
+ });
212
+ });
213
+ };
214
+ EnforcerBase.prototype.handleTelemetryIfNeeded = function (context) {
215
+ return __awaiter(this, void 0, void 0, function () {
216
+ return __generator(this, function (_a) {
217
+ switch (_a.label) {
218
+ case 0: return [4 /*yield*/, this.telemetry.isValidTelemetryRequest(context)];
219
+ case 1:
220
+ if (!_a.sent()) return [3 /*break*/, 3];
221
+ return [4 /*yield*/, this.telemetry.sendTelemetry(context)];
222
+ case 2:
223
+ _a.sent();
224
+ _a.label = 3;
225
+ case 3: return [2 /*return*/];
226
+ }
227
+ });
228
+ });
229
+ };
230
+ EnforcerBase.prototype.handlePxde = function (context) {
231
+ return __awaiter(this, void 0, void 0, function () {
232
+ return __generator(this, function (_a) {
233
+ switch (_a.label) {
234
+ case 0: return [4 /*yield*/, this.dataEnrichment.handlePxde(context)];
235
+ case 1:
236
+ _a.sent();
237
+ return [2 /*return*/];
238
+ }
239
+ });
240
+ });
241
+ };
242
+ EnforcerBase.prototype.handleCookieRetrieverIfNeeded = function (context) {
243
+ return __awaiter(this, void 0, void 0, function () {
244
+ return __generator(this, function (_a) {
245
+ switch (_a.label) {
246
+ case 0:
247
+ if (!this.cookieScoreRetriever.shouldRetrieveScore(context)) return [3 /*break*/, 2];
248
+ this.config.logger.debug('evaluating cookie');
249
+ return [4 /*yield*/, this.cookieScoreRetriever.retrieveScore(context)];
250
+ case 1:
251
+ _a.sent();
252
+ _a.label = 2;
253
+ case 2: return [2 /*return*/];
254
+ }
255
+ });
256
+ });
257
+ };
258
+ EnforcerBase.prototype.handleRiskApiIfNeeded = function (context) {
259
+ return __awaiter(this, void 0, void 0, function () {
260
+ return __generator(this, function (_a) {
261
+ switch (_a.label) {
262
+ case 0:
263
+ if (!this.riskApiScoreRetriever.shouldRetrieveScore(context)) return [3 /*break*/, 2];
264
+ this.config.logger.debug('sending risk api request');
265
+ return [4 /*yield*/, this.riskApiScoreRetriever.retrieveScore(context)];
266
+ case 1:
267
+ _a.sent();
268
+ _a.label = 2;
269
+ case 2: return [2 /*return*/];
270
+ }
271
+ });
272
+ });
273
+ };
274
+ EnforcerBase.prototype.handleAdditionalActivityHandler = function (context) {
275
+ return __awaiter(this, void 0, void 0, function () {
276
+ return __generator(this, function (_a) {
277
+ switch (_a.label) {
278
+ case 0: return [4 /*yield*/, additional_activity_handler_1.AdditionalActivityHandlerUtils.invokeAdditionalActivityHandler(this.config, context)];
279
+ case 1:
280
+ _a.sent();
281
+ return [2 /*return*/];
282
+ }
283
+ });
284
+ });
285
+ };
286
+ EnforcerBase.prototype.handleBlockResponse = function (context) {
287
+ return __awaiter(this, void 0, void 0, function () {
288
+ return __generator(this, function (_a) {
289
+ switch (_a.label) {
290
+ case 0:
291
+ if (!this.blockGenerator.shouldGenerate(context)) return [3 /*break*/, 2];
292
+ return [4 /*yield*/, this.handleSendActivities(context)];
293
+ case 1:
294
+ _a.sent();
295
+ return [2 /*return*/, this.blockGenerator.generateBlockResponse(context)];
296
+ case 2: return [2 /*return*/, null];
297
+ }
298
+ });
299
+ });
300
+ };
301
+ EnforcerBase.prototype.handleSendActivities = function (context) {
302
+ return __awaiter(this, void 0, void 0, function () {
303
+ return __generator(this, function (_a) {
304
+ switch (_a.label) {
305
+ case 0: return [4 /*yield*/, this.activityClient.sendActivities(context)];
306
+ case 1:
307
+ _a.sent();
308
+ return [2 /*return*/];
309
+ }
310
+ });
311
+ });
312
+ };
313
+ /**
314
+ * Performs all required functionality after an origin response has been received.
315
+ * @param req - The Req sent to the origin.
316
+ * @param res - The Res received from the origin.
317
+ * @param args - The EnforceArgs required to enforce the incoming request.
318
+ * @returns Promise<Res> - A modified response
319
+ * @protected
320
+ */
321
+ EnforcerBase.prototype.postEnforce = function (req, res) {
322
+ var args = [];
323
+ for (var _i = 2; _i < arguments.length; _i++) {
324
+ args[_i - 2] = arguments[_i];
325
+ }
326
+ return __awaiter(this, void 0, void 0, function () {
327
+ var response, context_1, e_2;
328
+ return __generator(this, function (_a) {
329
+ switch (_a.label) {
330
+ case 0: return [4 /*yield*/, this.convertToHttpResponse(res)];
331
+ case 1:
332
+ response = _a.sent();
333
+ _a.label = 2;
334
+ case 2:
335
+ _a.trys.push([2, 7, , 8]);
336
+ context_1 = this.retrieveContext.apply(this, __spreadArray([req, res], args, false));
337
+ if (!context_1) return [3 /*break*/, 6];
338
+ return [4 /*yield*/, this.setResponseData(context_1, response)];
339
+ case 3:
340
+ _a.sent();
341
+ return [4 /*yield*/, this.handleSendActivities(context_1)];
342
+ case 4:
343
+ _a.sent();
344
+ return [4 /*yield*/, this.handlePxhd(context_1, response)];
345
+ case 5:
346
+ response = _a.sent();
347
+ _a.label = 6;
348
+ case 6: return [3 /*break*/, 8];
349
+ case 7:
350
+ e_2 = _a.sent();
351
+ this.config.logger.error("error in post enforce - ".concat(e_2));
352
+ return [3 /*break*/, 8];
353
+ case 8: return [4 /*yield*/, this.convertToRes(response)];
354
+ case 9: return [2 /*return*/, _a.sent()];
355
+ }
356
+ });
357
+ });
358
+ };
359
+ EnforcerBase.prototype.setResponseData = function (context, response) {
360
+ return __awaiter(this, void 0, void 0, function () {
361
+ return __generator(this, function (_a) {
362
+ context.responseData.status = response.status;
363
+ return [2 /*return*/];
364
+ });
365
+ });
366
+ };
367
+ EnforcerBase.prototype.handlePxhd = function (context, response) {
368
+ return __awaiter(this, void 0, void 0, function () {
369
+ return __generator(this, function (_a) {
370
+ return [2 /*return*/, pxhd_1.PXHDUtils.addPxhdToResponse(context, response)];
371
+ });
372
+ });
373
+ };
374
+ return EnforcerBase;
375
+ }());
376
+ exports.EnforcerBase = EnforcerBase;
@@ -0,0 +1,4 @@
1
+ export interface IEnforcer<EnforceArgs extends any[], PostEnforceArgs extends any[], EnforceResult, PostEnforceResult> {
2
+ enforce(...args: EnforceArgs): EnforceResult;
3
+ postEnforce(...args: PostEnforceArgs): PostEnforceResult;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export { IEnforcer } from './IEnforcer';
2
+ export { EnforcerBase, EnforcerBaseOptions } from './EnforcerBase';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnforcerBase = void 0;
4
+ var EnforcerBase_1 = require("./EnforcerBase");
5
+ Object.defineProperty(exports, "EnforcerBase", { enumerable: true, get: function () { return EnforcerBase_1.EnforcerBase; } });
@@ -0,0 +1,16 @@
1
+ import { IConfiguration } from '../config';
2
+ import { IContext } from '../context/IContext';
3
+ import { IIpRangeChecker } from '../utils';
4
+ import { IFilter } from './IFilter';
5
+ export declare class DefaultFilter implements IFilter {
6
+ private readonly config;
7
+ private readonly ipRangeChecker;
8
+ constructor(config: IConfiguration, ipRangeChecker?: IIpRangeChecker);
9
+ shouldFilter(context: IContext): boolean;
10
+ private getFilterReason;
11
+ private shouldFilterByExtension;
12
+ private shouldFilterByHttpMethod;
13
+ private shouldFilterByIp;
14
+ private shouldFilterByRoute;
15
+ private shouldFilterByUserAgent;
16
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultFilter = void 0;
4
+ var http_1 = require("../http");
5
+ var utils_1 = require("../utils");
6
+ var FilterReason_1 = require("./FilterReason");
7
+ var DefaultFilter = /** @class */ (function () {
8
+ function DefaultFilter(config, ipRangeChecker) {
9
+ if (ipRangeChecker === void 0) { ipRangeChecker = new utils_1.DefaultIpRangeChecker(); }
10
+ this.config = config;
11
+ this.ipRangeChecker = ipRangeChecker;
12
+ }
13
+ DefaultFilter.prototype.shouldFilter = function (context) {
14
+ var requestData = context.requestData;
15
+ var filterReason = this.getFilterReason(requestData);
16
+ context.filterReason = filterReason;
17
+ return filterReason !== FilterReason_1.FilterReason.NONE;
18
+ };
19
+ DefaultFilter.prototype.getFilterReason = function (request) {
20
+ if (this.shouldFilterByExtension(request)) {
21
+ return FilterReason_1.FilterReason.EXTENSION;
22
+ }
23
+ if (this.shouldFilterByRoute(request.url.pathname)) {
24
+ return FilterReason_1.FilterReason.ROUTE;
25
+ }
26
+ if (this.shouldFilterByHttpMethod(request.method)) {
27
+ return FilterReason_1.FilterReason.HTTP_METHOD;
28
+ }
29
+ if (this.shouldFilterByUserAgent(request.userAgent)) {
30
+ return FilterReason_1.FilterReason.USER_AGENT;
31
+ }
32
+ if (this.shouldFilterByIp(request.ip)) {
33
+ return FilterReason_1.FilterReason.IP;
34
+ }
35
+ return FilterReason_1.FilterReason.NONE;
36
+ };
37
+ DefaultFilter.prototype.shouldFilterByExtension = function (request) {
38
+ if (request.method !== http_1.HttpMethod.GET && request.method !== http_1.HttpMethod.HEAD) {
39
+ return false;
40
+ }
41
+ var ext = (0, utils_1.getExtension)(request.url.href);
42
+ return !!ext && this.config.filteredExtensions.includes(ext);
43
+ };
44
+ DefaultFilter.prototype.shouldFilterByHttpMethod = function (method) {
45
+ return this.config.filteredHttpMethods.some(function (filteredMethod) { return filteredMethod.toUpperCase() === method; });
46
+ };
47
+ DefaultFilter.prototype.shouldFilterByIp = function (ip) {
48
+ var _this = this;
49
+ return this.config.filteredIps.some(function (range) { return _this.ipRangeChecker.isIpInRange(ip, range); });
50
+ };
51
+ DefaultFilter.prototype.shouldFilterByRoute = function (route) {
52
+ return (0, utils_1.isRouteInPatterns)(route, this.config.filteredRoutes);
53
+ };
54
+ DefaultFilter.prototype.shouldFilterByUserAgent = function (userAgent) {
55
+ return this.config.filteredUserAgents.includes(userAgent);
56
+ };
57
+ return DefaultFilter;
58
+ }());
59
+ exports.DefaultFilter = DefaultFilter;
@@ -0,0 +1,8 @@
1
+ export declare enum FilterReason {
2
+ NONE = "",
3
+ ROUTE = "route",
4
+ EXTENSION = "extension",
5
+ HTTP_METHOD = "http_method",
6
+ USER_AGENT = "user_agent",
7
+ IP = "ip"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterReason = void 0;
4
+ var FilterReason;
5
+ (function (FilterReason) {
6
+ FilterReason["NONE"] = "";
7
+ FilterReason["ROUTE"] = "route";
8
+ FilterReason["EXTENSION"] = "extension";
9
+ FilterReason["HTTP_METHOD"] = "http_method";
10
+ FilterReason["USER_AGENT"] = "user_agent";
11
+ FilterReason["IP"] = "ip";
12
+ })(FilterReason = exports.FilterReason || (exports.FilterReason = {}));
@@ -0,0 +1,8 @@
1
+ import { IContext } from '../context';
2
+ export interface IFilter {
3
+ /**
4
+ * @param context - The request context.
5
+ * @returns boolean - Whether or not the request should be filtered (i.e., not go through the enforcer flow).
6
+ */
7
+ shouldFilter(context: IContext): boolean;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export { IFilter } from './IFilter';
2
+ export { DefaultFilter } from './DefaultFilter';
3
+ export { FilterReason } from './FilterReason';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterReason = exports.DefaultFilter = void 0;
4
+ var DefaultFilter_1 = require("./DefaultFilter");
5
+ Object.defineProperty(exports, "DefaultFilter", { enumerable: true, get: function () { return DefaultFilter_1.DefaultFilter; } });
6
+ var FilterReason_1 = require("./FilterReason");
7
+ Object.defineProperty(exports, "FilterReason", { enumerable: true, get: function () { return FilterReason_1.FilterReason; } });