@prosopo/provider 5.14.0 → 5.15.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 (134) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +20 -22
  2. package/.turbo/turbo-build$colon$tsc.log +27 -30
  3. package/.turbo/turbo-build.log +21 -26
  4. package/CHANGELOG.md +128 -0
  5. package/LICENSE +201 -0
  6. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +2 -1
  7. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -1
  8. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +11 -2
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -1
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  11. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +15 -8
  12. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  13. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.d.ts +5 -0
  14. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.d.ts.map +1 -0
  15. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js +20 -0
  16. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js.map +1 -0
  17. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  18. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +24 -0
  19. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  20. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +4 -11
  21. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  22. package/dist/api/captcha/submitPoWCaptchaSolution.js +12 -17
  23. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  24. package/dist/api/rawTlsSignalsMiddleware.d.ts +14 -1
  25. package/dist/api/rawTlsSignalsMiddleware.d.ts.map +1 -1
  26. package/dist/api/rawTlsSignalsMiddleware.js +111 -23
  27. package/dist/api/rawTlsSignalsMiddleware.js.map +1 -1
  28. package/dist/api/startProviderApi.js +2 -2
  29. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +10 -0
  30. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +14 -7
  31. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.cjs +20 -0
  32. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +24 -0
  33. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +10 -15
  34. package/dist/cjs/api/rawTlsSignalsMiddleware.cjs +111 -22
  35. package/dist/cjs/api/startProviderApi.cjs +2 -2
  36. package/dist/cjs/compositeIpAddress.cjs +21 -7
  37. package/dist/cjs/tasks/captchaManager.cjs +15 -0
  38. package/dist/cjs/tasks/captchaTypeSelection.cjs +23 -2
  39. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +26 -23
  40. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +2 -9
  41. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +7 -11
  42. package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +2 -0
  43. package/dist/cjs/tasks/puzzle/backgroundBuffer.cjs +3 -3
  44. package/dist/cjs/tasks/puzzle/nativeBackground.cjs +12 -5
  45. package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +4 -3
  46. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +2 -9
  47. package/dist/compositeIpAddress.d.ts.map +1 -1
  48. package/dist/compositeIpAddress.js +21 -7
  49. package/dist/compositeIpAddress.js.map +1 -1
  50. package/dist/tasks/captchaManager.d.ts.map +1 -1
  51. package/dist/tasks/captchaManager.js +16 -1
  52. package/dist/tasks/captchaManager.js.map +1 -1
  53. package/dist/tasks/captchaTypeSelection.d.ts +3 -1
  54. package/dist/tasks/captchaTypeSelection.d.ts.map +1 -1
  55. package/dist/tasks/captchaTypeSelection.js +23 -3
  56. package/dist/tasks/captchaTypeSelection.js.map +1 -1
  57. package/dist/tasks/frictionless/frictionlessTasks.d.ts +3 -1
  58. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  59. package/dist/tasks/frictionless/frictionlessTasks.js +28 -25
  60. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  61. package/dist/tasks/frictionless/routingMachine.d.ts +1 -2
  62. package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -1
  63. package/dist/tasks/frictionless/routingMachine.js.map +1 -1
  64. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  65. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +2 -9
  66. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  67. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  68. package/dist/tasks/powCaptcha/powTasks.js +8 -12
  69. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  70. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +1 -0
  71. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -1
  72. package/dist/tasks/powCaptcha/powTasksUtils.js +2 -1
  73. package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
  74. package/dist/tasks/puzzle/backgroundBuffer.d.ts +3 -2
  75. package/dist/tasks/puzzle/backgroundBuffer.d.ts.map +1 -1
  76. package/dist/tasks/puzzle/backgroundBuffer.js +3 -3
  77. package/dist/tasks/puzzle/backgroundBuffer.js.map +1 -1
  78. package/dist/tasks/puzzle/nativeBackground.d.ts +5 -1
  79. package/dist/tasks/puzzle/nativeBackground.d.ts.map +1 -1
  80. package/dist/tasks/puzzle/nativeBackground.js +12 -5
  81. package/dist/tasks/puzzle/nativeBackground.js.map +1 -1
  82. package/dist/tasks/puzzle/puzzleRenderer.d.ts +2 -0
  83. package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -1
  84. package/dist/tasks/puzzle/puzzleRenderer.js +4 -3
  85. package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -1
  86. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  87. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +2 -9
  88. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  89. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +2 -0
  90. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
  91. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +35 -2
  92. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -1
  93. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.d.ts +2 -0
  94. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.d.ts.map +1 -0
  95. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.js +45 -0
  96. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.js.map +1 -0
  97. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js +15 -1
  98. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js.map +1 -1
  99. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +148 -0
  100. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  101. package/dist/tests/unit/api/rawTlsSignalsMiddleware.unit.test.js +96 -1
  102. package/dist/tests/unit/api/rawTlsSignalsMiddleware.unit.test.js.map +1 -1
  103. package/dist/tests/unit/compositeIpAddress.unit.test.js +12 -3
  104. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -1
  105. package/dist/tests/unit/tasks/captchaManager.unit.test.js +51 -0
  106. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  107. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js +20 -1
  108. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js.map +1 -1
  109. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.d.ts +2 -0
  110. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.d.ts.map +1 -0
  111. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.js +94 -0
  112. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.js.map +1 -0
  113. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.d.ts +2 -0
  114. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.d.ts.map +1 -0
  115. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.js +103 -0
  116. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.js.map +1 -0
  117. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +23 -1
  118. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
  119. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js +1 -4
  120. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js.map +1 -1
  121. package/dist/tests/unit/tasks/puzzle/nativeBackground.unit.test.js +10 -3
  122. package/dist/tests/unit/tasks/puzzle/nativeBackground.unit.test.js.map +1 -1
  123. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.d.ts +2 -0
  124. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.d.ts.map +1 -0
  125. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.js +35 -0
  126. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.js.map +1 -0
  127. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.d.ts +2 -0
  128. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.d.ts.map +1 -0
  129. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.js +49 -0
  130. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.js.map +1 -0
  131. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +17 -14
  132. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -1
  133. package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -1
  134. package/package.json +105 -103
@@ -1,7 +1,4 @@
1
-
2
- > @prosopo/provider@5.14.0 build:cjs
3
- > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
-
1
+ $ NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
5
2
  ViteCommonJSConfig: .
6
3
  {
7
4
  tsConfigPaths: [
@@ -59,7 +56,7 @@ ViteCommonJSConfig: .
59
56
  vite v8.1.5 building ssr environment for production...
60
57
  Bundle build started
61
58
  
62
- ✓ 120 modules transformed.
59
+ ✓ 121 modules transformed.
63
60
  rendering chunks...
64
61
  computing gzip size...
65
62
  dist/cjs/tasks/index.cjs 0.08 kB │ gzip: 0.07 kB
@@ -76,6 +73,7 @@ dist/cjs/utils/hashUserIp.cjs 0
76
73
  dist/cjs/api/testSiteKey.cjs 0.65 kB │ gzip: 0.32 kB
77
74
  dist/cjs/utils/hashUserAgent.cjs 0.66 kB │ gzip: 0.40 kB
78
75
  dist/cjs/api/validateAddress.cjs 0.80 kB │ gzip: 0.36 kB
76
+ dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.cjs 0.82 kB │ gzip: 0.46 kB
79
77
  dist/cjs/api/ja4.cjs 0.85 kB │ gzip: 0.47 kB
80
78
  dist/cjs/api/dnsEventUrl.cjs 0.85 kB │ gzip: 0.46 kB
81
79
  dist/cjs/tasks/dataset/datasetTasks.cjs 0.92 kB │ gzip: 0.41 kB
@@ -84,23 +82,22 @@ dist/cjs/_virtual/_rolldown/runtime.cjs 1
84
82
  dist/cjs/api/headerCheckMiddleware.cjs 1.02 kB │ gzip: 0.45 kB
85
83
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs 1.03 kB │ gzip: 0.53 kB
86
84
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs 1.03 kB │ gzip: 0.45 kB
87
- dist/cjs/tasks/powCaptcha/powTasksUtils.cjs 1.05 kB │ gzip: 0.50 kB
88
85
  dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs 1.07 kB │ gzip: 0.48 kB
89
86
  dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs 1.14 kB │ gzip: 0.52 kB
90
- dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs 1.15 kB │ gzip: 0.60 kB
91
87
  dist/cjs/utils/normalizeRequestIp.cjs 1.16 kB │ gzip: 0.52 kB
92
88
  dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs 1.16 kB │ gzip: 0.50 kB
93
- dist/cjs/tasks/puzzle/nativeBackground.cjs 1.16 kB │ gzip: 0.62 kB
94
89
  dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs 1.17 kB │ gzip: 0.50 kB
95
90
  dist/cjs/schedulers/captchaScheduler.cjs 1.21 kB │ gzip: 0.50 kB
96
91
  dist/cjs/api/detectorPoolBodyParser.cjs 1.22 kB │ gzip: 0.63 kB
92
+ dist/cjs/tasks/powCaptcha/powTasksUtils.cjs 1.26 kB │ gzip: 0.59 kB
97
93
  dist/cjs/api/block.cjs 1.28 kB │ gzip: 0.48 kB
98
94
  dist/cjs/schedulers/getClientList.cjs 1.28 kB │ gzip: 0.55 kB
95
+ dist/cjs/tasks/puzzle/nativeBackground.cjs 1.31 kB │ gzip: 0.68 kB
99
96
  dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs 1.33 kB │ gzip: 0.52 kB
100
97
  dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs 1.36 kB │ gzip: 0.52 kB
101
98
  dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs 1.36 kB │ gzip: 0.54 kB
102
- dist/cjs/tasks/puzzle/backgroundBuffer.cjs 1.44 kB │ gzip: 0.54 kB
103
99
  dist/cjs/tasks/dataset/datasetTasksUtils.cjs 1.45 kB │ gzip: 0.49 kB
100
+ dist/cjs/tasks/puzzle/backgroundBuffer.cjs 1.46 kB │ gzip: 0.54 kB
104
101
  dist/cjs/utils/clientMetaData.cjs 1.48 kB │ gzip: 0.72 kB
105
102
  dist/cjs/tasks/detection/assignSecret.cjs 1.48 kB │ gzip: 0.75 kB
106
103
  dist/cjs/api/assetDocument.cjs 1.50 kB │ gzip: 0.81 kB
@@ -110,6 +107,7 @@ dist/cjs/utils/honeypot/encoders.cjs 1
110
107
  dist/cjs/api/admin/apiReplaceDetectorPoolEndpoint.cjs 1.67 kB │ gzip: 0.71 kB
111
108
  dist/cjs/utils/devicePlatform.cjs 1.72 kB │ gzip: 0.91 kB
112
109
  dist/cjs/api/admin/apiGetSessionEndpoint.cjs 1.75 kB │ gzip: 0.82 kB
110
+ dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs 1.76 kB │ gzip: 0.79 kB
113
111
  dist/cjs/api/ja4Middleware.cjs 1.76 kB │ gzip: 0.79 kB
114
112
  dist/cjs/api/adminAuthOptions.cjs 1.77 kB │ gzip: 0.82 kB
115
113
  dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs 1.77 kB │ gzip: 0.60 kB
@@ -127,7 +125,6 @@ dist/cjs/tasks/frictionless/routingMachine.cjs 2
127
125
  dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs 2.21 kB │ gzip: 1.10 kB
128
126
  dist/cjs/api/captcha/signedAssetsResolver.cjs 2.24 kB │ gzip: 1.00 kB
129
127
  dist/cjs/api/captcha/sealedAssetsResolver.cjs 2.37 kB │ gzip: 0.98 kB
130
- dist/cjs/tasks/captchaTypeSelection.cjs 2.44 kB │ gzip: 1.04 kB
131
128
  dist/cjs/utils/dns.cjs 2.66 kB │ gzip: 1.02 kB
132
129
  dist/cjs/api/forwardVerify.cjs 2.66 kB │ gzip: 1.12 kB
133
130
  dist/cjs/tasks/puzzle/puzzleDifficulty.cjs 2.66 kB │ gzip: 1.10 kB
@@ -138,21 +135,21 @@ dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs 2
138
135
  dist/cjs/api/captcha/submitImageCaptchaSolution.cjs 3.09 kB │ gzip: 1.06 kB
139
136
  dist/cjs/api/admin/apiDnsEventEndpoint.cjs 3.20 kB │ gzip: 1.22 kB
140
137
  dist/cjs/tasks/detection/getBotScore.cjs 3.37 kB │ gzip: 1.33 kB
141
- dist/cjs/compositeIpAddress.cjs 3.39 kB │ gzip: 1.36 kB
142
138
  dist/cjs/api/captcha/assetSealFormat.cjs 3.59 kB │ gzip: 1.37 kB
143
139
  dist/cjs/api/captcha/assignDetectorBundle.cjs 3.63 kB │ gzip: 1.37 kB
140
+ dist/cjs/tasks/captchaTypeSelection.cjs 3.64 kB │ gzip: 1.53 kB
144
141
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs 3.66 kB │ gzip: 1.35 kB
145
142
  dist/cjs/api/admin/apiAdminRoutesProvider.cjs 3.67 kB │ gzip: 0.62 kB
146
143
  dist/cjs/utils/tarpitPadding.cjs 3.71 kB │ gzip: 1.51 kB
147
144
  dist/cjs/tasks/tasks.cjs 3.82 kB │ gzip: 1.07 kB
148
- dist/cjs/api/rawTlsSignalsMiddleware.cjs 3.84 kB │ gzip: 1.16 kB
149
145
  dist/cjs/api/domainMiddleware.cjs 3.95 kB │ gzip: 1.28 kB
150
146
  dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs 4.03 kB │ gzip: 1.60 kB
151
147
  dist/cjs/services/ipComparison.cjs 4.06 kB │ gzip: 1.22 kB
148
+ dist/cjs/compositeIpAddress.cjs 4.11 kB │ gzip: 1.69 kB
152
149
  dist/cjs/tasks/spam/checkSpamEmail.cjs 4.14 kB │ gzip: 1.14 kB
153
150
  dist/cjs/api/cpuProfiler.cjs 4.21 kB │ gzip: 1.78 kB
154
151
  dist/cjs/api/captcha/trafficFilterRequestTime.cjs 4.27 kB │ gzip: 1.55 kB
155
- dist/cjs/tasks/puzzle/puzzleRenderer.cjs 4.36 kB │ gzip: 1.55 kB
152
+ dist/cjs/tasks/puzzle/puzzleRenderer.cjs 4.38 kB │ gzip: 1.56 kB
156
153
  dist/cjs/api/hardBlockVerdictCache.cjs 4.39 kB │ gzip: 1.74 kB
157
154
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs 4.56 kB │ gzip: 1.07 kB
158
155
  dist/cjs/api/captcha.cjs 4.64 kB │ gzip: 1.43 kB
@@ -161,13 +158,14 @@ dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs 4
161
158
  dist/cjs/index.cjs 5.02 kB │ gzip: 1.05 kB
162
159
  dist/cjs/tasks/detection/decoderPool.cjs 5.47 kB │ gzip: 2.06 kB
163
160
  dist/cjs/util/usageCounters.cjs 5.72 kB │ gzip: 2.03 kB
161
+ dist/cjs/api/rawTlsSignalsMiddleware.cjs 6.44 kB │ gzip: 1.98 kB
164
162
  dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs 6.92 kB │ gzip: 1.94 kB
165
163
  dist/cjs/api/healthzGeo.cjs 7.03 kB │ gzip: 2.70 kB
166
164
  dist/cjs/api/captcha/getImageCaptchaChallenge.cjs 7.47 kB │ gzip: 2.09 kB
167
- dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs 7.75 kB │ gzip: 2.08 kB
168
165
  dist/cjs/tasks/spam/checkTrafficFilter.cjs 7.97 kB │ gzip: 2.63 kB
169
- dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs 9.28 kB │ gzip: 2.74 kB
166
+ dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs 8.77 kB │ gzip: 2.31 kB
170
167
  dist/cjs/tasks/detection/bundlePool.cjs 9.29 kB │ gzip: 3.38 kB
168
+ dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs 9.33 kB │ gzip: 2.76 kB
171
169
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs 10.33 kB │ gzip: 1.82 kB
172
170
  dist/cjs/api/startProviderApi.cjs 11.96 kB │ gzip: 3.79 kB
173
171
  dist/cjs/tasks/client/clientTasks.cjs 12.31 kB │ gzip: 3.23 kB
@@ -176,14 +174,14 @@ dist/cjs/util.cjs 13
176
174
  dist/cjs/api/blacklistRequestInspector.cjs 13.39 kB │ gzip: 4.50 kB
177
175
  dist/cjs/api/metrics.cjs 13.94 kB │ gzip: 4.32 kB
178
176
  dist/cjs/api/verify.cjs 18.33 kB │ gzip: 3.16 kB
179
- dist/cjs/tasks/frictionless/frictionlessTasks.cjs 18.43 kB │ gzip: 4.88 kB
180
- dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs 20.15 kB │ gzip: 4.63 kB
181
- dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs 24.26 kB │ gzip: 5.18 kB
182
- dist/cjs/tasks/captchaManager.cjs 25.12 kB │ gzip: 7.48 kB
183
- dist/cjs/tasks/powCaptcha/powTasks.cjs 25.99 kB │ gzip: 6.23 kB
184
- dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs 28.93 kB │ gzip: 6.55 kB
177
+ dist/cjs/tasks/frictionless/frictionlessTasks.cjs 19.27 kB │ gzip: 5.13 kB
178
+ dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs 20.94 kB │ gzip: 4.79 kB
179
+ dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs 24.07 kB │ gzip: 5.15 kB
180
+ dist/cjs/tasks/captchaManager.cjs 25.58 kB │ gzip: 7.54 kB
181
+ dist/cjs/tasks/powCaptcha/powTasks.cjs 25.94 kB │ gzip: 6.23 kB
182
+ dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs 28.74 kB │ gzip: 6.51 kB
185
183
 
186
- ✓ built in 218ms
184
+ ✓ built in 144ms
187
185
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeBehavior.js
188
186
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodePayload.js
189
187
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeSimd.js
@@ -1,8 +1,5 @@
1
-
2
- > @prosopo/provider@5.14.0 build:tsc
3
- > tsc --build --verbose
4
-
5
- 12:39:18 PM - Projects in this build:
1
+ $ tsc --build --verbose
2
+ 1:38:17 PM - Projects in this build:
6
3
  * ../../dev/config/tsconfig.json
7
4
  * ../util/tsconfig.json
8
5
  * ../logger/tsconfig.json
@@ -28,53 +25,53 @@
28
25
  * ../web-bot-auth/tsconfig.json
29
26
  * tsconfig.json
30
27
 
31
- 12:39:18 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
28
+ 1:38:17 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
32
29
 
33
- 12:39:18 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
30
+ 1:38:17 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
34
31
 
35
- 12:39:18 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
32
+ 1:38:17 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
36
33
 
37
- 12:39:18 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
34
+ 1:38:17 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
38
35
 
39
- 12:39:18 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
36
+ 1:38:17 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
40
37
 
41
- 12:39:18 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
38
+ 1:38:17 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
42
39
 
43
- 12:39:18 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
40
+ 1:38:17 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
44
41
 
45
- 12:39:18 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
42
+ 1:38:17 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
46
43
 
47
- 12:39:18 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/index.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
44
+ 1:38:17 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
48
45
 
49
- 12:39:18 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
46
+ 1:38:17 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
50
47
 
51
- 12:39:18 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
48
+ 1:38:17 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
52
49
 
53
- 12:39:18 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
50
+ 1:38:17 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
54
51
 
55
- 12:39:18 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
52
+ 1:38:17 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
56
53
 
57
- 12:39:18 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
54
+ 1:38:17 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
58
55
 
59
- 12:39:18 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
56
+ 1:38:17 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
60
57
 
61
- 12:39:18 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
58
+ 1:38:17 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/tests/typesEnv.test-d.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
62
59
 
63
- 12:39:18 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
60
+ 1:38:17 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
64
61
 
65
- 12:39:18 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/errorHandler.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
62
+ 1:38:17 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/errorHandler.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
66
63
 
67
- 12:39:18 PM - Project '../captcha-severity/tsconfig.json' is up to date because newest input '../captcha-severity/src/index.test.ts' is older than output '../captcha-severity/tsconfig.tsbuildinfo'
64
+ 1:38:17 PM - Project '../captcha-severity/tsconfig.json' is up to date because newest input '../captcha-severity/src/index.test.ts' is older than output '../captcha-severity/tsconfig.tsbuildinfo'
68
65
 
69
- 12:39:18 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
66
+ 1:38:17 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
70
67
 
71
- 12:39:18 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
68
+ 1:38:17 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/developmentProviderUrl.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
72
69
 
73
- 12:39:18 PM - Project '../puzzle-assets/tsconfig.json' is up to date because newest input '../puzzle-assets/src/background.ts' is older than output '../puzzle-assets/tsconfig.tsbuildinfo'
70
+ 1:38:17 PM - Project '../puzzle-assets/tsconfig.json' is up to date because newest input '../puzzle-assets/src/background.ts' is older than output '../puzzle-assets/tsconfig.tsbuildinfo'
74
71
 
75
- 12:39:18 PM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/base64.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
72
+ 1:38:17 PM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/verify.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
76
73
 
77
- 12:39:18 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
74
+ 1:38:17 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
78
75
 
79
- 12:39:18 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
76
+ 1:38:17 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
80
77
 
@@ -1,11 +1,5 @@
1
-
2
- > @prosopo/provider@5.14.0 build
3
- > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
-
5
-
6
- > @prosopo/provider@5.14.0 build:cross-env
7
- > vite build --config vite.esm.config.ts --mode production
8
-
1
+ $ pnpm run build:cross-env --mode ${NODE_ENV:-development}
2
+ $ vite build --config vite.esm.config.ts --mode production
9
3
  ViteEsmConfig: .
10
4
  {
11
5
  tsConfigPaths: [
@@ -63,7 +57,7 @@ ViteEsmConfig: .
63
57
  vite v8.1.5 building ssr environment for production...
64
58
  Bundle build started
65
59
  
66
- ✓ 120 modules transformed.
60
+ ✓ 121 modules transformed.
67
61
  rendering chunks...
68
62
  computing gzip size...
69
63
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
@@ -81,28 +75,28 @@ dist/utils/hashUserIp.js 0.52 k
81
75
  dist/api/testSiteKey.js 0.56 kB │ gzip: 0.30 kB
82
76
  dist/utils/hashUserAgent.js 0.63 kB │ gzip: 0.39 kB
83
77
  dist/api/validateAddress.js 0.70 kB │ gzip: 0.33 kB
78
+ dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js 0.80 kB │ gzip: 0.46 kB
84
79
  dist/api/dnsEventUrl.js 0.80 kB │ gzip: 0.44 kB
85
80
  dist/api/ja4.js 0.80 kB │ gzip: 0.44 kB
86
81
  dist/tasks/dataset/datasetTasks.js 0.85 kB │ gzip: 0.39 kB
87
- dist/tasks/powCaptcha/powTasksUtils.js 0.89 kB │ gzip: 0.46 kB
88
82
  dist/api/captcha/assetSeal.js 0.91 kB │ gzip: 0.50 kB
89
83
  dist/api/headerCheckMiddleware.js 0.91 kB │ gzip: 0.43 kB
90
84
  dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js 0.95 kB │ gzip: 0.51 kB
91
85
  dist/api/admin/apiRegisterSiteKeyEndpoint.js 1.00 kB │ gzip: 0.46 kB
92
86
  dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js 1.01 kB │ gzip: 0.45 kB
93
- dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 1.04 kB │ gzip: 0.57 kB
94
- dist/tasks/puzzle/nativeBackground.js 1.06 kB │ gzip: 0.58 kB
95
87
  dist/api/detectorPoolBodyParser.js 1.07 kB │ gzip: 0.57 kB
96
88
  dist/api/admin/apiRemoveSiteKeysEndpoint.js 1.07 kB │ gzip: 0.48 kB
89
+ dist/tasks/powCaptcha/powTasksUtils.js 1.07 kB │ gzip: 0.54 kB
97
90
  dist/api/admin/apiRegisterSiteKeysEndpoint.js 1.08 kB │ gzip: 0.50 kB
98
91
  dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 kB │ gzip: 0.48 kB
99
92
  dist/api/block.js 1.08 kB │ gzip: 0.46 kB
100
93
  dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
101
94
  dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
102
95
  dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
96
+ dist/tasks/puzzle/nativeBackground.js 1.21 kB │ gzip: 0.64 kB
103
97
  dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
104
- dist/tasks/puzzle/backgroundBuffer.js 1.26 kB │ gzip: 0.51 kB
105
98
  dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js 1.27 kB │ gzip: 0.51 kB
99
+ dist/tasks/puzzle/backgroundBuffer.js 1.27 kB │ gzip: 0.51 kB
106
100
  dist/api/admin/apiRemoveDecisionMachineEndpoint.js 1.29 kB │ gzip: 0.51 kB
107
101
  dist/tasks/dataset/datasetTasksUtils.js 1.33 kB │ gzip: 0.48 kB
108
102
  dist/api/assetDocument.js 1.36 kB │ gzip: 0.75 kB
@@ -112,6 +106,7 @@ dist/api/admin/apiGetAllDecisionMachinesEndpoint.js 1.48 k
112
106
  dist/schedulers/updateSpamEmailDomains.js 1.52 kB │ gzip: 0.60 kB
113
107
  dist/api/admin/apiReplaceDetectorPoolEndpoint.js 1.57 kB │ gzip: 0.68 kB
114
108
  dist/api/ja4Middleware.js 1.59 kB │ gzip: 0.75 kB
109
+ dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 1.61 kB │ gzip: 0.76 kB
115
110
  dist/utils/honeypot/encoders.js 1.62 kB │ gzip: 0.67 kB
116
111
  dist/api/admin/apiGetSessionEndpoint.js 1.66 kB │ gzip: 0.80 kB
117
112
  dist/api/admin/apiToggleMaintenanceModeEndpoint.js 1.66 kB │ gzip: 0.69 kB
@@ -131,7 +126,6 @@ dist/tasks/puzzle/stratifiedSampler.js 2.14 k
131
126
  dist/tasks/frictionless/frictionlessTasksUtils.js 2.16 kB │ gzip: 1.09 kB
132
127
  dist/api/captcha/maintenanceModeResponses.js 2.16 kB │ gzip: 0.73 kB
133
128
  dist/tasks/frictionless/routingMachine.js 2.20 kB │ gzip: 0.93 kB
134
- dist/tasks/captchaTypeSelection.js 2.22 kB │ gzip: 1.03 kB
135
129
  dist/api/captcha/sealedAssetsResolver.js 2.26 kB │ gzip: 0.97 kB
136
130
  dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
137
131
  dist/api/public.js 2.45 kB │ gzip: 0.98 kB
@@ -143,17 +137,17 @@ dist/api/captcha/submitImageCaptchaSolution.js 2.69 k
143
137
  dist/api/admin/apiAdminRoutesProvider.js 2.78 kB │ gzip: 0.55 kB
144
138
  dist/index.js 2.95 kB │ gzip: 0.81 kB
145
139
  dist/api/admin/apiDnsEventEndpoint.js 3.05 kB │ gzip: 1.18 kB
146
- dist/compositeIpAddress.js 3.15 kB │ gzip: 1.34 kB
147
140
  dist/tasks/detection/getBotScore.js 3.29 kB │ gzip: 1.32 kB
141
+ dist/tasks/captchaTypeSelection.js 3.34 kB │ gzip: 1.50 kB
148
142
  dist/api/captcha/assetSealFormat.js 3.38 kB │ gzip: 1.34 kB
149
143
  dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 3.39 kB │ gzip: 1.32 kB
150
144
  dist/api/captcha/assignDetectorBundle.js 3.40 kB │ gzip: 1.34 kB
151
145
  dist/tasks/tasks.js 3.44 kB │ gzip: 1.01 kB
152
146
  dist/api/domainMiddleware.js 3.61 kB │ gzip: 1.24 kB
153
147
  dist/utils/tarpitPadding.js 3.67 kB │ gzip: 1.51 kB
154
- dist/api/rawTlsSignalsMiddleware.js 3.69 kB │ gzip: 1.13 kB
155
148
  dist/tasks/spam/evaluateEmailSpamRules.js 3.84 kB │ gzip: 1.59 kB
156
- dist/tasks/puzzle/puzzleRenderer.js 3.99 kB │ gzip: 1.52 kB
149
+ dist/compositeIpAddress.js 3.87 kB │ gzip: 1.66 kB
150
+ dist/tasks/puzzle/puzzleRenderer.js 4.02 kB │ gzip: 1.53 kB
157
151
  dist/services/ipComparison.js 4.04 kB │ gzip: 1.21 kB
158
152
  dist/api/captcha/trafficFilterRequestTime.js 4.06 kB │ gzip: 1.53 kB
159
153
  dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip: 1.12 kB
@@ -165,12 +159,13 @@ dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 4.35 k
165
159
  dist/tasks/dnsEvent/enrichDnsEvent.js 4.71 kB │ gzip: 1.72 kB
166
160
  dist/tasks/detection/decoderPool.js 5.34 kB │ gzip: 2.02 kB
167
161
  dist/util/usageCounters.js 5.65 kB │ gzip: 2.01 kB
162
+ dist/api/rawTlsSignalsMiddleware.js 6.25 kB │ gzip: 1.95 kB
168
163
  dist/api/captcha/getPoWCaptchaChallenge.js 6.25 kB │ gzip: 1.87 kB
169
164
  dist/api/captcha/getImageCaptchaChallenge.js 6.69 kB │ gzip: 2.03 kB
170
165
  dist/api/healthzGeo.js 6.86 kB │ gzip: 2.68 kB
171
- dist/api/captcha/getPuzzleCaptchaChallenge.js 7.00 kB │ gzip: 2.01 kB
172
166
  dist/tasks/spam/checkTrafficFilter.js 7.63 kB │ gzip: 2.61 kB
173
- dist/api/captcha/submitPoWCaptchaSolution.js 8.70 kB │ gzip: 2.69 kB
167
+ dist/api/captcha/getPuzzleCaptchaChallenge.js 7.95 kB │ gzip: 2.24 kB
168
+ dist/api/captcha/submitPoWCaptchaSolution.js 8.72 kB │ gzip: 2.70 kB
174
169
  dist/tasks/detection/bundlePool.js 8.86 kB │ gzip: 3.34 kB
175
170
  dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 9.36 kB │ gzip: 1.80 kB
176
171
  dist/api/startProviderApi.js 10.22 kB │ gzip: 3.50 kB
@@ -180,14 +175,14 @@ dist/util.js 12.47 k
180
175
  dist/api/blacklistRequestInspector.js 12.75 kB │ gzip: 4.46 kB
181
176
  dist/api/metrics.js 13.17 kB │ gzip: 4.27 kB
182
177
  dist/api/verify.js 16.55 kB │ gzip: 3.04 kB
183
- dist/tasks/frictionless/frictionlessTasks.js 17.86 kB │ gzip: 4.86 kB
184
- dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 18.63 kB │ gzip: 4.53 kB
185
- dist/tasks/puzzleCaptcha/puzzleTasks.js 22.85 kB │ gzip: 5.14 kB
186
- dist/tasks/powCaptcha/powTasks.js 24.56 kB │ gzip: 6.17 kB
187
- dist/tasks/captchaManager.js 24.61 kB │ gzip: 7.41 kB
188
- dist/tasks/imgCaptcha/imgCaptchaTasks.js 27.41 kB │ gzip: 6.51 kB
178
+ dist/tasks/frictionless/frictionlessTasks.js 18.61 kB │ gzip: 5.10 kB
179
+ dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 19.35 kB │ gzip: 4.68 kB
180
+ dist/tasks/puzzleCaptcha/puzzleTasks.js 22.62 kB │ gzip: 5.09 kB
181
+ dist/tasks/powCaptcha/powTasks.js 24.47 kB │ gzip: 6.18 kB
182
+ dist/tasks/captchaManager.js 25.06 kB │ gzip: 7.47 kB
183
+ dist/tasks/imgCaptcha/imgCaptchaTasks.js 27.18 kB │ gzip: 6.46 kB
189
184
 
190
- ✓ built in 219ms
185
+ ✓ built in 142ms
191
186
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeBehavior.js
192
187
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodePayload.js
193
188
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeSimd.js
package/CHANGELOG.md CHANGED
@@ -1,5 +1,133 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 5.15.0
4
+ ### Minor Changes
5
+
6
+ - 1c13037: Add `captchaTypeFeatureFlags` to site settings, starting with `puzzle`. Setting
7
+ `puzzle: false` stops a site being served the puzzle captcha by any path: its
8
+ configured `captchaType`, `frictionlessTypes`, access policies, the traffic
9
+ filter, routing machines, PoW escalation, and puzzle sessions that already
10
+ exist. A site pinned to puzzle gets an image captcha instead (or PoW if image is
11
+ also off). The field is optional and has no stored default, so sites that never
12
+ set it behave exactly as before. The flag is meant for Prosopo staff, not site
13
+ owners.
14
+ - f961dab: Store everything needed to redraw a puzzle, so the portal can show the exact challenge a user was served.
15
+
16
+ Until now a puzzle record kept the target, the origin and the accuracy required (`tolerance`), and
17
+ nothing else. The things that decide what the puzzle actually looked like — how many decoy shapes were
18
+ scattered on it, how dark they were, how big the piece was, and which background was used — were
19
+ picked per challenge and then thrown away. So you could see that someone failed by 11px and had no way
20
+ to know whether they had been handed an easy puzzle or a nasty one.
21
+
22
+ Puzzle records now carry a `render` object with all of it: the difficulty ladder level, the piece size,
23
+ the frame geometry, the five render settings, and the two 128-bit seeds that regenerate the imagery.
24
+ Given those, the portal reproduces the background and the piece byte for byte.
25
+
26
+ To make that possible the renderer had to become reproducible. `renderPuzzle` and `createBackground`
27
+ now take an optional seed and report the one they used, instead of generating one internally and
28
+ discarding it; the background pool hands out each image together with its seed. Default behaviour is
29
+ unchanged — omit the seed and you still get a fresh random one.
30
+
31
+ The ladder level is new on the session too (`puzzleLevel`), because it was computed when the puzzle
32
+ was escalated and never written down anywhere. It is absent when the ladder did not choose the
33
+ puzzle — a site-configured puzzle or a traffic-filter override has no level.
34
+
35
+ The record is patched after the imagery is produced rather than written with the rest of the record,
36
+ because the piece size and the seeds only exist once the render has run, and the target has to be
37
+ durable before it is expressed in pixels. If that patch fails it is logged and ignored: losing a
38
+ diagnostic must not cost the user their solve. Records written before this change, and any challenge
39
+ whose render threw, simply have no `render`.
40
+
41
+ **The seeds are secret.** `puzzle-assets/src/prng.ts` explains why: they regenerate the clean
42
+ background, and a clean background can be diffed against the composite to read the target position
43
+ straight off. They were previously barred from leaving the provider entirely. They may now sit on the
44
+ captcha record, and nowhere else — not in a response, not in a log, not on the session. Anything that
45
+ exposes a puzzle record to a caller has to drop `render.backgroundSeed` and `render.renderSeed`, and
46
+ must not serve them at all while the challenge is still live. The comment in `prng.ts` now says so.
47
+
48
+ Test coverage. Three guards, each confirmed to fail when the thing it protects is broken:
49
+ `renderReplay.unit.test.ts` re-renders from the stored fields and asserts the bytes match, with one
50
+ case per field asserting that changing *only* that field changes the output — so a record missing a
51
+ field cannot pass; `puzzleRenderer.unit.test.ts` replays through the same entry points the portal would
52
+ use, which catches a background paired with the wrong seed; and `schemas.test.ts` asserts every
53
+ sub-field survives a strict-mode mongoose write, since a field absent from the schema is dropped
54
+ silently and would store nothing at all.
55
+ - 1ce9482: Cap automatic puzzle escalation one rung lower on touch devices than on pointer devices.
56
+
57
+ The puzzle's `tolerance` is an absolute CSS-pixel target and the widget renders into a fixed 300x200 container on every device, so a difficulty level asks the same placement accuracy of a fingertip as it does of a mouse.
58
+
59
+ `MAX_AUTO_ESCALATION_LEVEL_TOUCH` and `resolveMaxEscalationLevel(siteMaxLevel, isTouch)` are new in `@prosopo/captcha-severity`. The resolver takes the stricter of the site's own `puzzleMaxDifficulty` and the device ceiling, so a site set to 3 or 4 cannot out-vote the touch ceiling and a site pinned to 0 is not raised by it.
60
+
61
+ The provider now calls it from both places a puzzle difficulty is chosen: `sendCaptcha`, which reads `routingContext.platform.isMobile`, and the post-PoW escalation in `submitPoWCaptchaSolution`, which derives the platform from the originating session. That second path previously ignored the site's `puzzleMaxDifficulty` entirely and always clamped to the global ceiling; it now respects both caps.
62
+
63
+ Desktop behaviour is unchanged, and L4 stays unreachable by automatic escalation on either device.
64
+ - dcb691b: Add a refresh control to the puzzle captcha.
65
+
66
+ A user who can't solve the puzzle they were given can now ask for a different one, from a button in the puzzle's header. The replacement comes through a new frictionless session, like a wrong answer already does.
67
+
68
+ The widget tells the provider which session was refreshed (`refreshOf`). The provider then records `refreshOf`, `refreshCount` and `refreshedAfterMs` on the new session, so refresh behaviour can be scored later. After three refreshes in a row it serves an image challenge instead, with reason `PUZZLE_REFRESH_LIMIT`. It only does this if the site has image enabled. The switch only goes from puzzle to image, so a client that lies about its refreshes can only make its own challenge harder. A client that leaves the field out gets a normal session, the same as reloading the page.
69
+
70
+ The image widget's reload button now reports itself as a refresh too. That way a user who was moved onto image isn't sent back to the puzzle by their next reload.
71
+
72
+ ### Patch Changes
73
+
74
+ - 7d57d2a: A proof-of-work solve is checked against the address the challenge was issued to, and a mismatch sends the user to an image captcha instead of approving them. That check compared the whole IPv4 address, so it fired for anyone whose address moved between asking for the challenge and solving it — which is normal behaviour on mobile and on carrier NAT, where the low octet gets reassigned mid-session. One EE subscriber was seen moving one address along in four seconds.
75
+
76
+ It now compares the /24, so a reassignment inside the same pool reads as the same place on the network. IPv6 already worked this way on the /64, for the same reason, and is unchanged. A solve arriving from a genuinely different network is still caught and still escalates, so the point of the check survives.
77
+
78
+ Unit tests cover a low-octet reassignment, both ends of a /24, two different /24s, and a pair of adjacent addresses that straddle the /24 boundary.
79
+ - 2118584: Trim the comments on the puzzle difficulty device ceiling. No behaviour change.
80
+ - 80b7780: Post-PoW routing now receives the widget mode from the originating session and whether the submitted click coords were all (0,0), so a routing rule can escalate visible-mode solves that carry no real click position.
81
+ - dd4c27c: Store the whole-SYN fields the tcp-probe sidecar now reports.
82
+
83
+ The sidecar's handshake record grew from 80 to 104 bytes and the tail was reordered (prosopo/Protect#1167). chaddy was updated to read both layouts and to forward the new fields as their own headers (prosopo/chaddy#16, #17); this is the provider side of that, so the values have somewhere to land instead of being dropped at the middleware.
84
+
85
+ Twelve new fields on `Session`, all optional: `tcpOptsKinds`, `tcpOptsPresent`, `tcpOptsCount`, `tcpTsval`, `tcpTsecr`, `tcpFlags`, `tcpDataOffsetResv`, `tcpUrgPtr`, `ipIdent`, `ipTotalLen`, `ipFragFlags`, `ipTos`. They are surfaced on the decision-machine input the same way the existing TCP fields are, so routing and verify rules can read them.
86
+
87
+ `tcpOptsKinds` is stored decoded — the IANA kind number of each TCP option in wire order, `[2, 4, 8, 1, 3]` on an ordinary Linux SYN. The probe emits it packed into a u64, and a u64 reaches 2^64 while a JS number is exact only to 2^53, so the packed form could not be held without rounding; the rounding would land in the low bytes, which are the option kinds themselves. The array holds the same information and is queryable per position. It also replaces the old `tcpOptsOrder`, which packed 4 bits per option and so could not tell MSS from TCP Fast Open, or Window Scale from MD5, and could not represent MPTCP at all.
88
+
89
+ `tcpOptsFlags` and `tcpOptsOrder` are kept and still read. A pronode running an older chaddy still sends them, and years of rows hold them, so removing them would both lose the rollout window and break any routing rule already reading them. They go undefined on new sessions once the fleet is rolled.
90
+
91
+ `tcpTsval` and `tcpTsecr` are written only when the Timestamps option was actually on the SYN. A TSval of 0 is legal and a TSecr of 0 is expected, so neither can use zero to mean absent.
92
+
93
+ Six places named every one of these fields by hand — the middleware's copy onto the request, the session write, and four task files building the decision-machine bag. They now all go through one list, with a compile-time check that every field of `RawTlsSignals` is on it. That is not tidying: the Session projection comment in `@prosopo/types-database` records a field being missed in exactly this way, after which the rules reading it got `undefined` and silently never fired against real traffic.
94
+
95
+ Separately, the provider compose no longer defaults the sidecar to `prosopo/tcp-probe:latest`. The probe's reply is a bare fixed-size struct with no version in it, so the image tag is the only statement of which layout a host serves, and publishing `:latest` would change that on every pronode at the next pull with nobody running a deploy. The default is now the `0.1.1` both Protect inventories already pin.
96
+
97
+ Tests: the new headers all parse; a packed value above 2^53 decodes without losing its low bytes; the kind pairs the old encoding aliased stay distinct; a trailing end-of-option-list terminates the list rather than appearing in it; an all-zero packed value reads as absent rather than as an empty list; malformed and out-of-range values are ignored; the legacy header pair is still read; and a zero is kept rather than dropped, since `ipIdent` 0 and `tcpTsecr` 0 are real readings.
98
+ - Updated dependencies [1c13037]
99
+ - Updated dependencies [f961dab]
100
+ - Updated dependencies [a17e8eb]
101
+ - Updated dependencies [7d57d2a]
102
+ - Updated dependencies [2118584]
103
+ - Updated dependencies [1ce9482]
104
+ - Updated dependencies [6e2eb55]
105
+ - Updated dependencies [dcb691b]
106
+ - Updated dependencies [80b7780]
107
+ - Updated dependencies [dd4c27c]
108
+ - @prosopo/types@5.13.0
109
+ - @prosopo/types-database@5.8.0
110
+ - @prosopo/puzzle-assets@0.2.0
111
+ - @prosopo/util@3.3.14
112
+ - @prosopo/captcha-severity@1.2.0
113
+ - @prosopo/api@4.4.0
114
+ - @prosopo/locale@3.7.0
115
+ - @prosopo/api-express-router@3.2.1
116
+ - @prosopo/common@3.1.62
117
+ - @prosopo/database@4.1.4
118
+ - @prosopo/datasets@3.2.1
119
+ - @prosopo/env@3.6.69
120
+ - @prosopo/ipinfo@0.4.14
121
+ - @prosopo/keyring@2.10.1
122
+ - @prosopo/load-balancer@2.11.5
123
+ - @prosopo/types-env@2.11.15
124
+ - @prosopo/user-access-policy@3.14.15
125
+ - @prosopo/api-route@2.6.63
126
+ - @prosopo/logger@2.1.3
127
+ - @prosopo/redis-client@1.0.40
128
+ - @prosopo/util-crypto@13.6.0
129
+ - @prosopo/web-bot-auth@0.1.3
130
+
3
131
  ## 5.14.0
4
132
  ### Minor Changes
5
133