@prosopo/provider 3.12.14 → 3.13.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 (356) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +338 -0
  3. package/dist/api/captcha/getImageCaptchaChallenge.js +150 -0
  4. package/dist/api/captcha/getPoWCaptchaChallenge.js +156 -0
  5. package/dist/api/captcha/submitImageCaptchaSolution.js +87 -0
  6. package/dist/api/captcha/submitPoWCaptchaSolution.js +77 -0
  7. package/dist/api/captcha.js +18 -696
  8. package/dist/api/verify.js +2 -1
  9. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +337 -0
  10. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +149 -0
  11. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +155 -0
  12. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +86 -0
  13. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +76 -0
  14. package/dist/cjs/api/captcha.cjs +17 -695
  15. package/dist/cjs/api/verify.cjs +2 -1
  16. package/dist/cjs/index.cjs +2 -0
  17. package/dist/cjs/schedulers/setClientEntropy.cjs +36 -0
  18. package/dist/cjs/tasks/captchaManager.cjs +2 -1
  19. package/dist/cjs/tasks/client/clientTasks.cjs +15 -0
  20. package/dist/cjs/tasks/detection/decodePayload.cjs +379 -609
  21. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +28 -9
  22. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +8 -2
  23. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +2 -2
  24. package/dist/cjs/tasks/tasks.cjs +1 -0
  25. package/dist/cjs/utils/hashUserIp.cjs +9 -0
  26. package/dist/index.js +2 -0
  27. package/dist/schedulers/setClientEntropy.js +29 -24
  28. package/dist/tasks/captchaManager.js +2 -1
  29. package/dist/tasks/client/clientTasks.js +16 -1
  30. package/dist/tasks/detection/decodePayload.js +379 -609
  31. package/dist/tasks/detection/getBotScore.js +2 -2
  32. package/dist/tasks/frictionless/frictionlessTasks.js +29 -10
  33. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +8 -2
  34. package/dist/tasks/powCaptcha/powTasks.js +2 -2
  35. package/dist/tasks/tasks.js +1 -0
  36. package/dist/utils/hashUserIp.js +9 -0
  37. package/package.json +18 -18
  38. package/coverage/base.css +0 -224
  39. package/coverage/block-navigation.js +0 -87
  40. package/coverage/clover.xml +0 -4278
  41. package/coverage/coverage-final.json +0 -42
  42. package/coverage/favicon.png +0 -0
  43. package/coverage/index.html +0 -311
  44. package/coverage/prettify.css +0 -1
  45. package/coverage/prettify.js +0 -2
  46. package/coverage/sort-arrow-sprite.png +0 -0
  47. package/coverage/sorter.js +0 -210
  48. package/coverage/src/api/admin/apiAdminRoutesProvider.ts.html +0 -214
  49. package/coverage/src/api/admin/apiRegisterSiteKeyEndpoint.ts.html +0 -259
  50. package/coverage/src/api/admin/apiRemoveDetectorKeyEndpoint.ts.html +0 -283
  51. package/coverage/src/api/admin/apiToggleMaintenanceModeEndpoint.ts.html +0 -334
  52. package/coverage/src/api/admin/apiUpdateDetectorKeyEndpoint.ts.html +0 -298
  53. package/coverage/src/api/admin/createApiAdminRoutesProvider.ts.html +0 -163
  54. package/coverage/src/api/admin/index.html +0 -191
  55. package/coverage/src/api/blacklistRequestInspector.ts.html +0 -751
  56. package/coverage/src/api/block.ts.html +0 -187
  57. package/coverage/src/api/captcha.ts.html +0 -2803
  58. package/coverage/src/api/domainMiddleware.ts.html +0 -493
  59. package/coverage/src/api/headerCheckMiddleware.ts.html +0 -256
  60. package/coverage/src/api/ignoreMiddleware.ts.html +0 -181
  61. package/coverage/src/api/index.html +0 -266
  62. package/coverage/src/api/ja4Middleware.ts.html +0 -400
  63. package/coverage/src/api/public.ts.html +0 -343
  64. package/coverage/src/api/robotsMiddleware.ts.html +0 -157
  65. package/coverage/src/api/validateAddress.ts.html +0 -214
  66. package/coverage/src/api/verify.ts.html +0 -871
  67. package/coverage/src/compositeIpAddress.ts.html +0 -340
  68. package/coverage/src/index.html +0 -161
  69. package/coverage/src/index.ts.html +0 -175
  70. package/coverage/src/pairs.ts.html +0 -238
  71. package/coverage/src/rules/index.html +0 -116
  72. package/coverage/src/rules/lang.ts.html +0 -187
  73. package/coverage/src/schedulers/captchaScheduler.ts.html +0 -250
  74. package/coverage/src/schedulers/getClientList.ts.html +0 -271
  75. package/coverage/src/schedulers/index.html +0 -131
  76. package/coverage/src/services/index.html +0 -131
  77. package/coverage/src/services/ipComparison.ts.html +0 -685
  78. package/coverage/src/services/ipInfo.ts.html +0 -490
  79. package/coverage/src/tasks/captchaManager.ts.html +0 -865
  80. package/coverage/src/tasks/client/clientTasks.ts.html +0 -1381
  81. package/coverage/src/tasks/client/index.html +0 -116
  82. package/coverage/src/tasks/dataset/datasetTasks.ts.html +0 -268
  83. package/coverage/src/tasks/dataset/datasetTasksUtils.ts.html +0 -271
  84. package/coverage/src/tasks/dataset/index.html +0 -131
  85. package/coverage/src/tasks/detection/decodePayload.js.html +0 -127
  86. package/coverage/src/tasks/detection/getBotScore.ts.html +0 -244
  87. package/coverage/src/tasks/detection/index.html +0 -131
  88. package/coverage/src/tasks/frictionless/frictionlessTasks.ts.html +0 -1216
  89. package/coverage/src/tasks/frictionless/frictionlessTasksUtils.ts.html +0 -247
  90. package/coverage/src/tasks/frictionless/index.html +0 -131
  91. package/coverage/src/tasks/imgCaptcha/imgCaptchaTasks.ts.html +0 -1972
  92. package/coverage/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts.html +0 -232
  93. package/coverage/src/tasks/imgCaptcha/index.html +0 -131
  94. package/coverage/src/tasks/index.html +0 -146
  95. package/coverage/src/tasks/index.ts.html +0 -127
  96. package/coverage/src/tasks/powCaptcha/index.html +0 -131
  97. package/coverage/src/tasks/powCaptcha/powTasks.ts.html +0 -961
  98. package/coverage/src/tasks/powCaptcha/powTasksUtils.ts.html +0 -244
  99. package/coverage/src/tasks/tasks.ts.html +0 -388
  100. package/coverage/src/util.ts.html +0 -1627
  101. package/coverage/src/utils/hashUserAgent.ts.html +0 -184
  102. package/coverage/src/utils/index.html +0 -116
  103. package/dist/api/admin/apiAdminRoutesProvider.d.ts +0 -9
  104. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +0 -1
  105. package/dist/api/admin/apiAdminRoutesProvider.js.map +0 -1
  106. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +0 -14
  107. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +0 -1
  108. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +0 -1
  109. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +0 -23
  110. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +0 -1
  111. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +0 -1
  112. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +0 -13
  113. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +0 -1
  114. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +0 -1
  115. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +0 -14
  116. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +0 -1
  117. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +0 -1
  118. package/dist/api/admin/createApiAdminRoutesProvider.d.ts +0 -4
  119. package/dist/api/admin/createApiAdminRoutesProvider.d.ts.map +0 -1
  120. package/dist/api/admin/createApiAdminRoutesProvider.js.map +0 -1
  121. package/dist/api/blacklistRequestInspector.d.ts +0 -19
  122. package/dist/api/blacklistRequestInspector.d.ts.map +0 -1
  123. package/dist/api/blacklistRequestInspector.js.map +0 -1
  124. package/dist/api/block.d.ts +0 -3
  125. package/dist/api/block.d.ts.map +0 -1
  126. package/dist/api/block.js.map +0 -1
  127. package/dist/api/captcha.d.ts +0 -4
  128. package/dist/api/captcha.d.ts.map +0 -1
  129. package/dist/api/captcha.js.map +0 -1
  130. package/dist/api/domainMiddleware.d.ts +0 -4
  131. package/dist/api/domainMiddleware.d.ts.map +0 -1
  132. package/dist/api/domainMiddleware.js.map +0 -1
  133. package/dist/api/headerCheckMiddleware.d.ts +0 -4
  134. package/dist/api/headerCheckMiddleware.d.ts.map +0 -1
  135. package/dist/api/headerCheckMiddleware.js.map +0 -1
  136. package/dist/api/ignoreMiddleware.d.ts +0 -3
  137. package/dist/api/ignoreMiddleware.d.ts.map +0 -1
  138. package/dist/api/ignoreMiddleware.js.map +0 -1
  139. package/dist/api/ja4Middleware.d.ts +0 -10
  140. package/dist/api/ja4Middleware.d.ts.map +0 -1
  141. package/dist/api/ja4Middleware.js.map +0 -1
  142. package/dist/api/public.d.ts +0 -4
  143. package/dist/api/public.d.ts.map +0 -1
  144. package/dist/api/public.js.map +0 -1
  145. package/dist/api/robotsMiddleware.d.ts +0 -3
  146. package/dist/api/robotsMiddleware.d.ts.map +0 -1
  147. package/dist/api/robotsMiddleware.js.map +0 -1
  148. package/dist/api/validateAddress.d.ts +0 -5
  149. package/dist/api/validateAddress.d.ts.map +0 -1
  150. package/dist/api/validateAddress.js.map +0 -1
  151. package/dist/api/verify.d.ts +0 -4
  152. package/dist/api/verify.d.ts.map +0 -1
  153. package/dist/api/verify.js.map +0 -1
  154. package/dist/compositeIpAddress.d.ts +0 -5
  155. package/dist/compositeIpAddress.d.ts.map +0 -1
  156. package/dist/compositeIpAddress.js.map +0 -1
  157. package/dist/index.d.ts +0 -17
  158. package/dist/index.d.ts.map +0 -1
  159. package/dist/index.js.map +0 -1
  160. package/dist/pairs.d.ts +0 -3
  161. package/dist/pairs.d.ts.map +0 -1
  162. package/dist/pairs.js.map +0 -1
  163. package/dist/rules/lang.d.ts +0 -3
  164. package/dist/rules/lang.d.ts.map +0 -1
  165. package/dist/rules/lang.js.map +0 -1
  166. package/dist/schedulers/captchaScheduler.d.ts +0 -4
  167. package/dist/schedulers/captchaScheduler.d.ts.map +0 -1
  168. package/dist/schedulers/captchaScheduler.js.map +0 -1
  169. package/dist/schedulers/getClientList.d.ts +0 -4
  170. package/dist/schedulers/getClientList.d.ts.map +0 -1
  171. package/dist/schedulers/getClientList.js.map +0 -1
  172. package/dist/schedulers/setClientEntropy.d.ts +0 -4
  173. package/dist/schedulers/setClientEntropy.d.ts.map +0 -1
  174. package/dist/schedulers/setClientEntropy.js.map +0 -1
  175. package/dist/services/ipComparison.d.ts +0 -3
  176. package/dist/services/ipComparison.d.ts.map +0 -1
  177. package/dist/services/ipComparison.js.map +0 -1
  178. package/dist/services/ipInfo.d.ts +0 -3
  179. package/dist/services/ipInfo.d.ts.map +0 -1
  180. package/dist/services/ipInfo.js.map +0 -1
  181. package/dist/tasks/captchaManager.d.ts +0 -34
  182. package/dist/tasks/captchaManager.d.ts.map +0 -1
  183. package/dist/tasks/captchaManager.js.map +0 -1
  184. package/dist/tasks/client/clientTasks.d.ts +0 -21
  185. package/dist/tasks/client/clientTasks.d.ts.map +0 -1
  186. package/dist/tasks/client/clientTasks.js.map +0 -1
  187. package/dist/tasks/dataset/datasetTasks.d.ts +0 -13
  188. package/dist/tasks/dataset/datasetTasks.d.ts.map +0 -1
  189. package/dist/tasks/dataset/datasetTasks.js.map +0 -1
  190. package/dist/tasks/dataset/datasetTasksUtils.d.ts +0 -3
  191. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +0 -1
  192. package/dist/tasks/dataset/datasetTasksUtils.js.map +0 -1
  193. package/dist/tasks/detection/decodePayload.d.ts +0 -5
  194. package/dist/tasks/detection/decodePayload.d.ts.map +0 -1
  195. package/dist/tasks/detection/decodePayload.js.map +0 -1
  196. package/dist/tasks/detection/getBotScore.d.ts +0 -20
  197. package/dist/tasks/detection/getBotScore.d.ts.map +0 -1
  198. package/dist/tasks/detection/getBotScore.js.map +0 -1
  199. package/dist/tasks/frictionless/frictionlessTasks.d.ts +0 -67
  200. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +0 -1
  201. package/dist/tasks/frictionless/frictionlessTasks.js.map +0 -1
  202. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +0 -6
  203. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +0 -1
  204. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +0 -1
  205. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +0 -30
  206. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +0 -1
  207. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +0 -1
  208. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +0 -7
  209. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +0 -1
  210. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +0 -1
  211. package/dist/tasks/index.d.ts +0 -2
  212. package/dist/tasks/index.d.ts.map +0 -1
  213. package/dist/tasks/index.js.map +0 -1
  214. package/dist/tasks/powCaptcha/powTasks.d.ts +0 -17
  215. package/dist/tasks/powCaptcha/powTasks.d.ts.map +0 -1
  216. package/dist/tasks/powCaptcha/powTasks.js.map +0 -1
  217. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +0 -3
  218. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +0 -1
  219. package/dist/tasks/powCaptcha/powTasksUtils.js.map +0 -1
  220. package/dist/tasks/tasks.d.ts +0 -25
  221. package/dist/tasks/tasks.d.ts.map +0 -1
  222. package/dist/tasks/tasks.js.map +0 -1
  223. package/dist/tests/index.d.ts +0 -2
  224. package/dist/tests/index.d.ts.map +0 -1
  225. package/dist/tests/index.js +0 -2
  226. package/dist/tests/index.js.map +0 -1
  227. package/dist/tests/integration/accessRules.integration.test.d.ts +0 -2
  228. package/dist/tests/integration/accessRules.integration.test.d.ts.map +0 -1
  229. package/dist/tests/integration/accessRules.integration.test.js +0 -588
  230. package/dist/tests/integration/accessRules.integration.test.js.map +0 -1
  231. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts +0 -2
  232. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts.map +0 -1
  233. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +0 -60
  234. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +0 -1
  235. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts +0 -2
  236. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts.map +0 -1
  237. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +0 -368
  238. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +0 -1
  239. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +0 -2
  240. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +0 -1
  241. package/dist/tests/integration/imgCaptcha.integration.test.js +0 -272
  242. package/dist/tests/integration/imgCaptcha.integration.test.js.map +0 -1
  243. package/dist/tests/integration/ipValidation.integration.test.d.ts +0 -2
  244. package/dist/tests/integration/ipValidation.integration.test.d.ts.map +0 -1
  245. package/dist/tests/integration/ipValidation.integration.test.js +0 -75
  246. package/dist/tests/integration/ipValidation.integration.test.js.map +0 -1
  247. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +0 -32
  248. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +0 -1
  249. package/dist/tests/integration/mocks/solvedTestCaptchas.js +0 -1046
  250. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +0 -1
  251. package/dist/tests/integration/powCaptcha.integration.test.d.ts +0 -2
  252. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +0 -1
  253. package/dist/tests/integration/powCaptcha.integration.test.js +0 -308
  254. package/dist/tests/integration/powCaptcha.integration.test.js.map +0 -1
  255. package/dist/tests/integration/registerSitekey.d.ts +0 -3
  256. package/dist/tests/integration/registerSitekey.d.ts.map +0 -1
  257. package/dist/tests/integration/registerSitekey.js +0 -24
  258. package/dist/tests/integration/registerSitekey.js.map +0 -1
  259. package/dist/tests/integration/userAccessPolicy.d.ts +0 -2
  260. package/dist/tests/integration/userAccessPolicy.d.ts.map +0 -1
  261. package/dist/tests/integration/userAccessPolicy.js +0 -2
  262. package/dist/tests/integration/userAccessPolicy.js.map +0 -1
  263. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts +0 -2
  264. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts.map +0 -1
  265. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +0 -60
  266. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +0 -1
  267. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +0 -2
  268. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +0 -1
  269. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +0 -43
  270. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +0 -1
  271. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts +0 -2
  272. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts.map +0 -1
  273. package/dist/tests/unit/api/ja4Middleware.unit.test.js +0 -57
  274. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +0 -1
  275. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts +0 -2
  276. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts.map +0 -1
  277. package/dist/tests/unit/compositeIpAddress.unit.test.js +0 -86
  278. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +0 -1
  279. package/dist/tests/unit/pairs.unit.test.d.ts +0 -2
  280. package/dist/tests/unit/pairs.unit.test.d.ts.map +0 -1
  281. package/dist/tests/unit/pairs.unit.test.js +0 -83
  282. package/dist/tests/unit/pairs.unit.test.js.map +0 -1
  283. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +0 -2
  284. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +0 -1
  285. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +0 -75
  286. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +0 -1
  287. package/dist/tests/unit/services/ipComparison.unit.test.d.ts +0 -2
  288. package/dist/tests/unit/services/ipComparison.unit.test.d.ts.map +0 -1
  289. package/dist/tests/unit/services/ipComparison.unit.test.js +0 -258
  290. package/dist/tests/unit/services/ipComparison.unit.test.js.map +0 -1
  291. package/dist/tests/unit/services/ipInfo.unit.test.d.ts +0 -2
  292. package/dist/tests/unit/services/ipInfo.unit.test.d.ts.map +0 -1
  293. package/dist/tests/unit/services/ipInfo.unit.test.js +0 -210
  294. package/dist/tests/unit/services/ipInfo.unit.test.js.map +0 -1
  295. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts +0 -2
  296. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts.map +0 -1
  297. package/dist/tests/unit/tasks/captchaManager.unit.test.js +0 -311
  298. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +0 -1
  299. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +0 -2
  300. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +0 -1
  301. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +0 -289
  302. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +0 -1
  303. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +0 -2
  304. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +0 -1
  305. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +0 -92
  306. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +0 -1
  307. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +0 -2
  308. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +0 -1
  309. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +0 -75
  310. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +0 -1
  311. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts +0 -2
  312. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts.map +0 -1
  313. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +0 -143
  314. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +0 -1
  315. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts +0 -2
  316. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts.map +0 -1
  317. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -145
  318. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +0 -1
  319. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts +0 -2
  320. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts.map +0 -1
  321. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +0 -64
  322. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +0 -1
  323. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +0 -2
  324. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +0 -1
  325. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +0 -388
  326. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +0 -1
  327. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +0 -2
  328. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +0 -1
  329. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +0 -46
  330. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +0 -1
  331. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +0 -2
  332. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +0 -1
  333. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +0 -216
  334. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +0 -1
  335. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +0 -2
  336. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +0 -1
  337. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +0 -69
  338. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +0 -1
  339. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts +0 -2
  340. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts.map +0 -1
  341. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +0 -505
  342. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +0 -1
  343. package/dist/tests/unit/util.ipDistance.unit.test.d.ts +0 -2
  344. package/dist/tests/unit/util.ipDistance.unit.test.d.ts.map +0 -1
  345. package/dist/tests/unit/util.ipDistance.unit.test.js +0 -93
  346. package/dist/tests/unit/util.ipDistance.unit.test.js.map +0 -1
  347. package/dist/tests/unit/util.unit.test.d.ts +0 -2
  348. package/dist/tests/unit/util.unit.test.d.ts.map +0 -1
  349. package/dist/tests/unit/util.unit.test.js +0 -170
  350. package/dist/tests/unit/util.unit.test.js.map +0 -1
  351. package/dist/util.d.ts +0 -24
  352. package/dist/util.d.ts.map +0 -1
  353. package/dist/util.js.map +0 -1
  354. package/dist/utils/hashUserAgent.d.ts +0 -2
  355. package/dist/utils/hashUserAgent.d.ts.map +0 -1
  356. package/dist/utils/hashUserAgent.js.map +0 -1
@@ -1,505 +0,0 @@
1
- import { IPValidationAction } from "@prosopo/types";
2
- import { describe, expect, it } from "vitest";
3
- import { evaluateIpValidationRules } from "../../util.js";
4
- const mockLogger = {
5
- info: () => { },
6
- error: () => { },
7
- warn: () => { },
8
- debug: () => { },
9
- setLogLevel: () => { },
10
- getLogLevel: () => "info",
11
- getScope: () => "test",
12
- trace: () => { },
13
- };
14
- describe("evaluateIpValidationRules", () => {
15
- const baseRules = {
16
- actions: {
17
- countryChangeAction: IPValidationAction.Flag,
18
- cityChangeAction: IPValidationAction.Allow,
19
- distanceExceedAction: IPValidationAction.Flag,
20
- ispChangeAction: IPValidationAction.Reject,
21
- abuseScoreExceedAction: IPValidationAction.Reject,
22
- },
23
- distanceThresholdKm: 1000,
24
- abuseScoreThreshold: 0.005,
25
- requireAllConditions: false,
26
- forceConsistentIp: false,
27
- };
28
- it("returns Allow when no conditions are met", () => {
29
- const comparison = {
30
- ipsMatch: true,
31
- ip1: "ip1",
32
- ip2: "ip2",
33
- comparison: {},
34
- };
35
- const result = evaluateIpValidationRules(comparison, baseRules, mockLogger);
36
- expect(result.action).toBe(IPValidationAction.Allow);
37
- expect(result.errorMessage).toBeUndefined();
38
- });
39
- it("returns Reject if ISP change triggers Reject", () => {
40
- const comparison = {
41
- ipsMatch: false,
42
- ip1: "ip1",
43
- ip2: "ip2",
44
- comparison: {
45
- ip1Details: {
46
- country: "A",
47
- countryCode: "A",
48
- provider: "X",
49
- connectionType: "residential",
50
- isVpnOrProxy: false,
51
- },
52
- ip2Details: {
53
- country: "A",
54
- countryCode: "A",
55
- provider: "Y",
56
- connectionType: "residential",
57
- isVpnOrProxy: false,
58
- },
59
- differentProviders: true,
60
- differentConnectionTypes: false,
61
- anyVpnOrProxy: false,
62
- },
63
- };
64
- const result = evaluateIpValidationRules(comparison, baseRules, mockLogger);
65
- expect(result.action).toBe(IPValidationAction.Reject);
66
- expect(result.errorMessage).toContain("ISP changed");
67
- });
68
- it("returns Flag if country change triggers Flag", () => {
69
- const comparison = {
70
- ipsMatch: false,
71
- ip1: "ip1",
72
- ip2: "ip2",
73
- comparison: {
74
- ip1Details: {
75
- country: "A",
76
- countryCode: "A",
77
- provider: "X",
78
- connectionType: "residential",
79
- isVpnOrProxy: false,
80
- },
81
- ip2Details: {
82
- country: "B",
83
- countryCode: "B",
84
- provider: "X",
85
- connectionType: "residential",
86
- isVpnOrProxy: false,
87
- },
88
- distanceKm: 2000,
89
- differentProviders: false,
90
- differentConnectionTypes: false,
91
- anyVpnOrProxy: false,
92
- },
93
- };
94
- const rules = {
95
- ...baseRules,
96
- actions: {
97
- ...baseRules.actions,
98
- countryChangeAction: IPValidationAction.Flag,
99
- },
100
- };
101
- const result = evaluateIpValidationRules(comparison, rules, mockLogger);
102
- expect(result.action).toBe(IPValidationAction.Flag);
103
- expect(result.errorMessage).toContain("Country changed");
104
- });
105
- it("returns Flag if distance exceeds threshold", () => {
106
- const comparison = {
107
- ipsMatch: false,
108
- ip1: "ip1",
109
- ip2: "ip2",
110
- comparison: {
111
- ip1Details: {
112
- country: "A",
113
- countryCode: "A",
114
- provider: "X",
115
- connectionType: "residential",
116
- isVpnOrProxy: false,
117
- },
118
- ip2Details: {
119
- country: "A",
120
- countryCode: "A",
121
- provider: "X",
122
- connectionType: "residential",
123
- isVpnOrProxy: false,
124
- },
125
- distanceKm: 2000,
126
- differentProviders: false,
127
- differentConnectionTypes: false,
128
- anyVpnOrProxy: false,
129
- },
130
- };
131
- const result = evaluateIpValidationRules(comparison, baseRules, mockLogger);
132
- expect(result.action).toBe(IPValidationAction.Flag);
133
- expect(result.errorMessage).toBeDefined();
134
- expect(result.errorMessage).toMatch(/IP addresses are 2000\.00km apart/);
135
- });
136
- it("returns Allow if city change triggers Allow", () => {
137
- const comparison = {
138
- ipsMatch: false,
139
- ip1: "ip1",
140
- ip2: "ip2",
141
- comparison: {
142
- ip1Details: {
143
- country: "A",
144
- countryCode: "A",
145
- city: "CityA",
146
- provider: "X",
147
- connectionType: "residential",
148
- isVpnOrProxy: false,
149
- },
150
- ip2Details: {
151
- country: "A",
152
- countryCode: "A",
153
- city: "CityB",
154
- provider: "X",
155
- connectionType: "residential",
156
- isVpnOrProxy: false,
157
- },
158
- differentProviders: false,
159
- differentConnectionTypes: false,
160
- anyVpnOrProxy: false,
161
- },
162
- };
163
- const result = evaluateIpValidationRules(comparison, baseRules, mockLogger);
164
- expect(result.action).toBe(IPValidationAction.Allow);
165
- });
166
- it("returns Flag if city change triggers Flag", () => {
167
- const comparison = {
168
- ipsMatch: false,
169
- ip1: "ip1",
170
- ip2: "ip2",
171
- comparison: {
172
- ip1Details: {
173
- country: "A",
174
- countryCode: "A",
175
- city: "CityA",
176
- provider: "X",
177
- connectionType: "residential",
178
- isVpnOrProxy: false,
179
- },
180
- ip2Details: {
181
- country: "A",
182
- countryCode: "A",
183
- city: "CityB",
184
- provider: "X",
185
- connectionType: "residential",
186
- isVpnOrProxy: false,
187
- },
188
- differentProviders: false,
189
- differentConnectionTypes: false,
190
- anyVpnOrProxy: false,
191
- },
192
- };
193
- const rules = {
194
- ...baseRules,
195
- actions: {
196
- ...baseRules.actions,
197
- cityChangeAction: IPValidationAction.Flag,
198
- },
199
- };
200
- const result = evaluateIpValidationRules(comparison, rules, mockLogger);
201
- expect(result.action).toBe(IPValidationAction.Flag);
202
- expect(result.errorMessage).toContain("City changed");
203
- });
204
- it("returns Reject if city change triggers Reject", () => {
205
- const comparison = {
206
- ipsMatch: false,
207
- ip1: "ip1",
208
- ip2: "ip2",
209
- comparison: {
210
- ip1Details: {
211
- country: "A",
212
- countryCode: "A",
213
- city: "CityA",
214
- provider: "X",
215
- connectionType: "residential",
216
- isVpnOrProxy: false,
217
- },
218
- ip2Details: {
219
- country: "A",
220
- countryCode: "A",
221
- city: "CityB",
222
- provider: "X",
223
- connectionType: "residential",
224
- isVpnOrProxy: false,
225
- },
226
- differentProviders: false,
227
- differentConnectionTypes: false,
228
- anyVpnOrProxy: false,
229
- },
230
- };
231
- const rules = {
232
- ...baseRules,
233
- actions: {
234
- ...baseRules.actions,
235
- cityChangeAction: IPValidationAction.Reject,
236
- },
237
- };
238
- const result = evaluateIpValidationRules(comparison, rules, mockLogger);
239
- expect(result.action).toBe(IPValidationAction.Reject);
240
- expect(result.errorMessage).toContain("City changed from CityA to CityB");
241
- });
242
- it("returns no flag if one condition is true but requireAllConditions is true", () => {
243
- const requireAllRules = {
244
- actions: {
245
- countryChangeAction: IPValidationAction.Reject,
246
- cityChangeAction: IPValidationAction.Allow,
247
- ispChangeAction: IPValidationAction.Reject,
248
- distanceExceedAction: IPValidationAction.Allow,
249
- abuseScoreExceedAction: IPValidationAction.Reject,
250
- },
251
- distanceThresholdKm: 1000,
252
- abuseScoreThreshold: 0.005,
253
- requireAllConditions: true,
254
- forceConsistentIp: false,
255
- };
256
- const comparison = {
257
- ipsMatch: false,
258
- ip1: "ip1",
259
- ip2: "ip2",
260
- comparison: {
261
- ip1Details: {
262
- country: "A",
263
- countryCode: "A",
264
- provider: "X",
265
- connectionType: "residential",
266
- isVpnOrProxy: false,
267
- },
268
- ip2Details: {
269
- country: "A",
270
- countryCode: "A",
271
- provider: "Y",
272
- connectionType: "residential",
273
- isVpnOrProxy: false,
274
- },
275
- distanceKm: 500,
276
- differentProviders: true,
277
- differentConnectionTypes: false,
278
- anyVpnOrProxy: false,
279
- },
280
- };
281
- const result = evaluateIpValidationRules(comparison, requireAllRules, mockLogger);
282
- expect(result.action).toBe(IPValidationAction.Allow);
283
- });
284
- it("applies country-specific overrides correctly", () => {
285
- const comparison = {
286
- ipsMatch: false,
287
- ip1: "ip1",
288
- ip2: "ip2",
289
- comparison: {
290
- ip1Details: {
291
- country: "A",
292
- countryCode: "A",
293
- provider: "X",
294
- connectionType: "residential",
295
- isVpnOrProxy: false,
296
- },
297
- ip2Details: {
298
- country: "B",
299
- countryCode: "B",
300
- provider: "X",
301
- connectionType: "residential",
302
- isVpnOrProxy: false,
303
- },
304
- differentProviders: false,
305
- differentConnectionTypes: false,
306
- anyVpnOrProxy: false,
307
- },
308
- };
309
- const rulesWithOverrides = {
310
- ...baseRules,
311
- countryOverrides: {
312
- B: {
313
- actions: {
314
- countryChangeAction: IPValidationAction.Reject,
315
- },
316
- },
317
- },
318
- };
319
- const result = evaluateIpValidationRules(comparison, rulesWithOverrides, mockLogger);
320
- expect(result.action).toBe(IPValidationAction.Reject);
321
- expect(result.errorMessage).toContain("Country changed from A to B");
322
- });
323
- it("applies country override for distance threshold", () => {
324
- const comparison = {
325
- ipsMatch: false,
326
- ip1: "ip1",
327
- ip2: "ip2",
328
- comparison: {
329
- ip1Details: {
330
- country: "A",
331
- countryCode: "A",
332
- provider: "X",
333
- connectionType: "residential",
334
- isVpnOrProxy: false,
335
- },
336
- ip2Details: {
337
- country: "B",
338
- countryCode: "B",
339
- provider: "X",
340
- connectionType: "residential",
341
- isVpnOrProxy: false,
342
- },
343
- distanceKm: 800,
344
- differentProviders: false,
345
- differentConnectionTypes: false,
346
- anyVpnOrProxy: false,
347
- },
348
- };
349
- const rulesWithOverrides = {
350
- ...baseRules,
351
- countryOverrides: {
352
- B: {
353
- actions: {},
354
- distanceThresholdKm: 500,
355
- abuseScoreThreshold: 0.01,
356
- },
357
- },
358
- };
359
- const result = evaluateIpValidationRules(comparison, rulesWithOverrides, mockLogger);
360
- expect(result.action).toBe(IPValidationAction.Flag);
361
- expect(result.errorMessage).toContain("IP addresses are 800.00km apart (>500km limit)");
362
- });
363
- it("returns Reject if abuse score exceeds threshold", () => {
364
- const comparison = {
365
- ipsMatch: false,
366
- ip1: "ip1",
367
- ip2: "ip2",
368
- comparison: {
369
- ip1Details: {
370
- country: "A",
371
- countryCode: "A",
372
- provider: "X",
373
- connectionType: "residential",
374
- isVpnOrProxy: false,
375
- abuserScore: 0.001,
376
- },
377
- ip2Details: {
378
- country: "A",
379
- countryCode: "A",
380
- provider: "X",
381
- connectionType: "residential",
382
- isVpnOrProxy: false,
383
- abuserScore: 0.01,
384
- },
385
- differentProviders: false,
386
- differentConnectionTypes: false,
387
- anyVpnOrProxy: false,
388
- },
389
- };
390
- const result = evaluateIpValidationRules(comparison, baseRules, mockLogger);
391
- expect(result.action).toBe(IPValidationAction.Reject);
392
- expect(result.errorMessage).toContain("Abuse score 0.0100 exceeds threshold 0.005");
393
- });
394
- it("returns Allow if abuse score does not exceed threshold", () => {
395
- const comparison = {
396
- ipsMatch: false,
397
- ip1: "ip1",
398
- ip2: "ip2",
399
- comparison: {
400
- ip1Details: {
401
- country: "A",
402
- countryCode: "A",
403
- provider: "X",
404
- connectionType: "residential",
405
- isVpnOrProxy: false,
406
- abuserScore: 0.001,
407
- },
408
- ip2Details: {
409
- country: "A",
410
- countryCode: "A",
411
- provider: "X",
412
- connectionType: "residential",
413
- isVpnOrProxy: false,
414
- abuserScore: 0.002,
415
- },
416
- differentProviders: false,
417
- differentConnectionTypes: false,
418
- anyVpnOrProxy: false,
419
- },
420
- };
421
- const result = evaluateIpValidationRules(comparison, baseRules, mockLogger);
422
- expect(result.action).toBe(IPValidationAction.Allow);
423
- });
424
- it("applies country override for abuse score threshold", () => {
425
- const comparison = {
426
- ipsMatch: false,
427
- ip1: "ip1",
428
- ip2: "ip2",
429
- comparison: {
430
- ip1Details: {
431
- country: "A",
432
- countryCode: "A",
433
- provider: "X",
434
- connectionType: "residential",
435
- isVpnOrProxy: false,
436
- abuserScore: 0.001,
437
- },
438
- ip2Details: {
439
- country: "B",
440
- countryCode: "B",
441
- provider: "X",
442
- connectionType: "residential",
443
- isVpnOrProxy: false,
444
- abuserScore: 0.007,
445
- },
446
- differentProviders: false,
447
- differentConnectionTypes: false,
448
- anyVpnOrProxy: false,
449
- },
450
- };
451
- const rulesWithOverrides = {
452
- ...baseRules,
453
- countryOverrides: {
454
- B: {
455
- actions: {
456
- abuseScoreExceedAction: IPValidationAction.Flag,
457
- },
458
- distanceThresholdKm: 500,
459
- abuseScoreThreshold: 0.0001,
460
- },
461
- },
462
- };
463
- const result = evaluateIpValidationRules(comparison, rulesWithOverrides, mockLogger);
464
- expect(result.action).toBe(IPValidationAction.Flag);
465
- });
466
- it("returns Flag if abuse score triggers Flag action", () => {
467
- const comparison = {
468
- ipsMatch: false,
469
- ip1: "ip1",
470
- ip2: "ip2",
471
- comparison: {
472
- ip1Details: {
473
- country: "A",
474
- countryCode: "A",
475
- provider: "X",
476
- connectionType: "residential",
477
- isVpnOrProxy: false,
478
- abuserScore: 0.001,
479
- },
480
- ip2Details: {
481
- country: "A",
482
- countryCode: "A",
483
- provider: "X",
484
- connectionType: "residential",
485
- isVpnOrProxy: false,
486
- abuserScore: 0.01,
487
- },
488
- differentProviders: false,
489
- differentConnectionTypes: false,
490
- anyVpnOrProxy: false,
491
- },
492
- };
493
- const rules = {
494
- ...baseRules,
495
- actions: {
496
- ...baseRules.actions,
497
- abuseScoreExceedAction: IPValidationAction.Flag,
498
- },
499
- };
500
- const result = evaluateIpValidationRules(comparison, rules, mockLogger);
501
- expect(result.action).toBe(IPValidationAction.Flag);
502
- expect(result.errorMessage).toContain("Abuse score 0.0100 exceeds threshold 0.005");
503
- });
504
- });
505
- //# sourceMappingURL=util.evaluateIpValidationRules.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.evaluateIpValidationRules.unit.test.js","sourceRoot":"","sources":["../../../src/tests/unit/util.evaluateIpValidationRules.unit.test.ts"],"names":[],"mappings":"AAeA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,UAAU,GAAG;IAClB,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM;IACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;IACtB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CACM,CAAC;AAEvB,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,MAAM,SAAS,GAAuB;QACrC,OAAO,EAAE;YACR,mBAAmB,EAAE,kBAAkB,CAAC,IAAI;YAC5C,gBAAgB,EAAE,kBAAkB,CAAC,KAAK;YAC1C,oBAAoB,EAAE,kBAAkB,CAAC,IAAI;YAC7C,eAAe,EAAE,kBAAkB,CAAC,MAAM;YAC1C,sBAAsB,EAAE,kBAAkB,CAAC,MAAM;SACjD;QACD,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,iBAAiB,EAAE,KAAK;KACxB,CAAC;IAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,EAA6B;SACzC,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,kBAAkB,EAAE,IAAI;gBACxB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE,IAAI;gBAChB,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,KAAK,GAAG;YACb,GAAG,SAAS;YACZ,OAAO,EAAE;gBACR,GAAG,SAAS,CAAC,OAAO;gBACpB,mBAAmB,EAAE,kBAAkB,CAAC,IAAI;aAC5C;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE,IAAI;gBAChB,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,KAAK,GAAG;YACb,GAAG,SAAS;YACZ,OAAO,EAAE;gBACR,GAAG,SAAS,CAAC,OAAO;gBACpB,gBAAgB,EAAE,kBAAkB,CAAC,IAAI;aACzC;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,KAAK,GAAG;YACb,GAAG,SAAS;YACZ,OAAO,EAAE;gBACR,GAAG,SAAS,CAAC,OAAO;gBACpB,gBAAgB,EAAE,kBAAkB,CAAC,MAAM;aAC3C;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACpF,MAAM,eAAe,GAAuB;YAC3C,OAAO,EAAE;gBACR,mBAAmB,EAAE,kBAAkB,CAAC,MAAM;gBAC9C,gBAAgB,EAAE,kBAAkB,CAAC,KAAK;gBAC1C,eAAe,EAAE,kBAAkB,CAAC,MAAM;gBAC1C,oBAAoB,EAAE,kBAAkB,CAAC,KAAK;gBAC9C,sBAAsB,EAAE,kBAAkB,CAAC,MAAM;aACjD;YACD,mBAAmB,EAAE,IAAI;YACzB,mBAAmB,EAAE,KAAK;YAC1B,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE,GAAG;gBACf,kBAAkB,EAAE,IAAI;gBACxB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CACvC,UAAU,EACV,eAAe,EACf,UAAU,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,kBAAkB,GAAG;YAC1B,GAAG,SAAS;YACZ,gBAAgB,EAAE;gBACjB,CAAC,EAAE;oBACF,OAAO,EAAE;wBACR,mBAAmB,EAAE,kBAAkB,CAAC,MAAM;qBAC9C;iBACD;aACD;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CACvC,UAAU,EACV,kBAAkB,EAClB,UAAU,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;iBACnB;gBACD,UAAU,EAAE,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,kBAAkB,GAAG;YAC1B,GAAG,SAAS;YACZ,gBAAgB,EAAE;gBACjB,CAAC,EAAE;oBACF,OAAO,EAAE,EAAE;oBACX,mBAAmB,EAAE,GAAG;oBACxB,mBAAmB,EAAE,IAAI;iBACzB;aACD;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CACvC,UAAU,EACV,kBAAkB,EAClB,UAAU,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CACpC,gDAAgD,CAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;iBAClB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,IAAI;iBACjB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CACpC,4CAA4C,CAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QACjE,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;iBAClB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;iBAClB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;iBAClB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;iBAClB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,kBAAkB,GAAG;YAC1B,GAAG,SAAS;YACZ,gBAAgB,EAAE;gBACjB,CAAC,EAAE;oBACF,OAAO,EAAE;wBACR,sBAAsB,EAAE,kBAAkB,CAAC,IAAI;qBAC/C;oBACD,mBAAmB,EAAE,GAAG;oBACxB,mBAAmB,EAAE,MAAM;iBAC3B;aACD;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CACvC,UAAU,EACV,kBAAkB,EAClB,UAAU,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,MAAM,UAAU,GAAuB;YACtC,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;iBAClB;gBACD,UAAU,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,GAAG;oBAChB,QAAQ,EAAE,GAAG;oBACb,cAAc,EAAE,aAAa;oBAC7B,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,IAAI;iBACjB;gBACD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAK;aACpB;SACD,CAAC;QACF,MAAM,KAAK,GAAG;YACb,GAAG,SAAS;YACZ,OAAO,EAAE;gBACR,GAAG,SAAS,CAAC,OAAO;gBACpB,sBAAsB,EAAE,kBAAkB,CAAC,IAAI;aAC/C;SACD,CAAC;QACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CACpC,4CAA4C,CAC5C,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=util.ipDistance.unit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.ipDistance.unit.test.d.ts","sourceRoot":"","sources":["../../../src/tests/unit/util.ipDistance.unit.test.ts"],"names":[],"mappings":""}
@@ -1,93 +0,0 @@
1
- import { Address4 } from "ip-address";
2
- import { beforeEach, describe, expect, it, vi } from "vitest";
3
- import * as ipComparisonModule from "../../services/ipComparison.js";
4
- import { deepValidateIpAddress } from "../../util.js";
5
- describe("deepValidateIpAddress", () => {
6
- let mockLogger;
7
- const compareIPsSpy = vi.spyOn(ipComparisonModule, "compareIPs");
8
- beforeEach(() => {
9
- mockLogger = {
10
- info: vi.fn(),
11
- debug: vi.fn(),
12
- error: vi.fn(),
13
- log: vi.fn(),
14
- warn: vi.fn(),
15
- };
16
- vi.clearAllMocks();
17
- });
18
- it("should return valid when IPs match exactly", async () => {
19
- const ip = "192.168.1.1";
20
- const challengeIp = new Address4("192.168.1.1");
21
- const result = await deepValidateIpAddress(ip, challengeIp, mockLogger, "test-api-key", "test-api-url");
22
- expect(result.isValid).toBe(true);
23
- expect(compareIPsSpy).not.toHaveBeenCalled();
24
- });
25
- it("should reject when distance > 1000km", async () => {
26
- const ip = "8.8.8.8";
27
- const challengeIp = new Address4("1.1.1.1");
28
- compareIPsSpy.mockResolvedValueOnce({
29
- ipsMatch: false,
30
- ip1: "1.1.1.1",
31
- ip2: "8.8.8.8",
32
- comparison: {
33
- differentProviders: true,
34
- differentConnectionTypes: false,
35
- distanceKm: 2500,
36
- anyVpnOrProxy: false,
37
- ip1Details: {
38
- provider: "Cloudflare",
39
- connectionType: "datacenter",
40
- isVpnOrProxy: false,
41
- country: "US",
42
- city: "New York",
43
- },
44
- ip2Details: {
45
- provider: "Google",
46
- connectionType: "datacenter",
47
- isVpnOrProxy: false,
48
- country: "AU",
49
- city: "Sydney",
50
- },
51
- },
52
- });
53
- const result = await deepValidateIpAddress(ip, challengeIp, mockLogger, "test-api-key", "test-api-url");
54
- expect(result.isValid).toBe(false);
55
- expect(result.distanceKm).toBe(2500);
56
- expect(result.errorMessage).toContain("too far apart");
57
- });
58
- it("should allow but flag when distance <= 1000km", async () => {
59
- const ip = "8.8.8.8";
60
- const challengeIp = new Address4("1.1.1.1");
61
- compareIPsSpy.mockResolvedValueOnce({
62
- ipsMatch: false,
63
- ip1: "1.1.1.1",
64
- ip2: "8.8.8.8",
65
- comparison: {
66
- differentProviders: true,
67
- differentConnectionTypes: false,
68
- distanceKm: 500,
69
- anyVpnOrProxy: false,
70
- ip1Details: {
71
- provider: "Cloudflare",
72
- connectionType: "datacenter",
73
- isVpnOrProxy: false,
74
- country: "US",
75
- city: "New York",
76
- },
77
- ip2Details: {
78
- provider: "Google",
79
- connectionType: "datacenter",
80
- isVpnOrProxy: false,
81
- country: "US",
82
- city: "San Francisco",
83
- },
84
- },
85
- });
86
- const result = await deepValidateIpAddress(ip, challengeIp, mockLogger, "test-api-key", "test-api-url");
87
- expect(result.isValid).toBe(true);
88
- expect(result.shouldFlag).toBe(true);
89
- expect(result.distanceKm).toBe(500);
90
- expect(mockLogger.info).toHaveBeenCalledWith(expect.any(Function));
91
- });
92
- });
93
- //# sourceMappingURL=util.ipDistance.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.ipDistance.unit.test.js","sourceRoot":"","sources":["../../../src/tests/unit/util.ipDistance.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=util.unit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.unit.test.d.ts","sourceRoot":"","sources":["../../../src/tests/unit/util.unit.test.ts"],"names":[],"mappings":""}