@adobe/spacecat-shared-utils 1.90.3 → 1.91.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [@adobe/spacecat-shared-utils-v1.91.0](https://github.com/adobe/spacecat-shared/compare/@adobe/spacecat-shared-utils-v1.90.3...@adobe/spacecat-shared-utils-v1.91.0) (2026-02-08)
2
+
3
+
4
+ ### Features
5
+
6
+ * Bot press hold detection addition + add abort info to scrapeJob schema ([#1308](https://github.com/adobe/spacecat-shared/issues/1308)) ([4f19f91](https://github.com/adobe/spacecat-shared/commit/4f19f9143435aa283d8b9e57c17dd79873168177))
7
+
1
8
  # [@adobe/spacecat-shared-utils-v1.90.3](https://github.com/adobe/spacecat-shared/compare/@adobe/spacecat-shared-utils-v1.90.2...@adobe/spacecat-shared-utils-v1.90.3) (2026-02-06)
2
9
 
3
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/spacecat-shared-utils",
3
- "version": "1.90.3",
3
+ "version": "1.91.0",
4
4
  "description": "Shared modules of the Spacecat Services - utils",
5
5
  "type": "module",
6
6
  "exports": {
@@ -99,6 +99,14 @@ const CHALLENGE_PATTERNS = {
99
99
  /hcaptcha/i,
100
100
  /datadome/i,
101
101
  /dd-request-id/i,
102
+ /press.*hold/i, // Press and hold challenges (hCaptcha, custom implementations)
103
+ /click.*hold/i, // Click and hold button challenges
104
+ /geetest/i, // GeeTest interactive challenges
105
+ /arkose/i, // Arkose Labs bot protection
106
+ /funcaptcha/i, // FunCaptcha interactive challenges
107
+ /interactive.*challenge/i, // Generic interactive challenges
108
+ /verify.*human.*interaction/i, // Human interaction verification
109
+ /prove.*you.*are.*human/i, // Proof of humanity challenges
102
110
  ],
103
111
  };
104
112
 
@@ -145,7 +145,12 @@ async function resolveCanonicalUrl(urlString, method = 'HEAD') {
145
145
  let resp;
146
146
 
147
147
  try {
148
- resp = await fetch(urlString, { headers, method });
148
+ const timeout = method === 'HEAD' ? 10000 : 20000; // 10s for HEAD, 20s for GET
149
+ resp = await fetch(urlString, {
150
+ headers,
151
+ method,
152
+ signal: AbortSignal.timeout(timeout),
153
+ });
149
154
 
150
155
  if (resp.ok) {
151
156
  return ensureHttps(resp.url);