unshared-clientjs-sdk 2.0.0-rc.21 → 2.0.0-rc.22

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 (85) hide show
  1. package/dist/client.d.ts +29 -0
  2. package/dist/client.js +1 -1
  3. package/dist/esm/client.d.mts +29 -0
  4. package/dist/esm/client.mjs +1 -1
  5. package/dist/esm/index.d.mts +2 -0
  6. package/dist/esm/index.mjs +1 -1
  7. package/dist/esm/middleware/dispatch-dedupe.d.mts +11 -0
  8. package/dist/esm/middleware/dispatch-dedupe.mjs +1 -0
  9. package/dist/esm/middleware/index.d.mts +26 -11
  10. package/dist/esm/middleware/index.mjs +1 -1
  11. package/dist/esm/middleware/injection/fingerprint-script.mjs +1 -1
  12. package/dist/esm/middleware/response-interceptor.d.mts +2 -2
  13. package/dist/esm/middleware/routes/submit-fp.d.mts +14 -7
  14. package/dist/esm/middleware/routes/submit-fp.mjs +1 -1
  15. package/dist/esm/middleware/routes/verify.d.mts +11 -6
  16. package/dist/esm/middleware/routes/verify.mjs +1 -1
  17. package/dist/esm/middleware/utils/client-ip.d.mts +4 -4
  18. package/dist/esm/middleware/utils/client-ip.mjs +1 -1
  19. package/dist/esm/middleware/utils/cookies.d.mts +2 -2
  20. package/dist/esm/middleware/utils/device-id.d.mts +17 -3
  21. package/dist/esm/middleware/utils/device-id.mjs +1 -1
  22. package/dist/esm/middleware/utils/http-helpers.d.mts +21 -0
  23. package/dist/esm/middleware/utils/http-helpers.mjs +1 -0
  24. package/dist/esm/middleware/utils/include-path.d.mts +6 -0
  25. package/dist/esm/middleware/utils/include-path.mjs +1 -0
  26. package/dist/esm/middleware/utils/is-bot.mjs +1 -1
  27. package/dist/esm/middleware/utils/secure.d.mts +2 -2
  28. package/dist/esm/middleware/utils/secure.mjs +1 -1
  29. package/dist/esm/middleware/utils/sentinel-user-id.d.mts +10 -0
  30. package/dist/esm/middleware/utils/sentinel-user-id.mjs +1 -0
  31. package/dist/esm/middleware.d.mts +11 -8
  32. package/dist/esm/middleware.mjs +1 -1
  33. package/dist/esm/types.d.mts +44 -0
  34. package/dist/esm/types.mjs +1 -0
  35. package/dist/esm/web/index.d.mts +17 -0
  36. package/dist/esm/web/index.mjs +1 -0
  37. package/dist/esm/web/protection-handler.d.mts +28 -0
  38. package/dist/esm/web/protection-handler.mjs +1 -0
  39. package/dist/esm/web/submit-handler.d.mts +27 -0
  40. package/dist/esm/web/submit-handler.mjs +1 -0
  41. package/dist/esm/web/types.d.mts +110 -0
  42. package/dist/esm/web/types.mjs +1 -0
  43. package/dist/esm/web/web-helpers.d.mts +55 -0
  44. package/dist/esm/web/web-helpers.mjs +1 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.js +1 -1
  47. package/dist/middleware/dispatch-dedupe.d.ts +11 -0
  48. package/dist/middleware/dispatch-dedupe.js +1 -0
  49. package/dist/middleware/index.d.ts +26 -11
  50. package/dist/middleware/index.js +1 -1
  51. package/dist/middleware/injection/fingerprint-script.js +1 -1
  52. package/dist/middleware/response-interceptor.d.ts +2 -2
  53. package/dist/middleware/routes/submit-fp.d.ts +14 -7
  54. package/dist/middleware/routes/submit-fp.js +1 -1
  55. package/dist/middleware/routes/verify.d.ts +11 -6
  56. package/dist/middleware/routes/verify.js +1 -1
  57. package/dist/middleware/utils/client-ip.d.ts +4 -4
  58. package/dist/middleware/utils/client-ip.js +1 -1
  59. package/dist/middleware/utils/cookies.d.ts +2 -2
  60. package/dist/middleware/utils/device-id.d.ts +17 -3
  61. package/dist/middleware/utils/device-id.js +1 -1
  62. package/dist/middleware/utils/http-helpers.d.ts +21 -0
  63. package/dist/middleware/utils/http-helpers.js +1 -0
  64. package/dist/middleware/utils/include-path.d.ts +6 -0
  65. package/dist/middleware/utils/include-path.js +1 -0
  66. package/dist/middleware/utils/is-bot.js +1 -1
  67. package/dist/middleware/utils/secure.d.ts +2 -2
  68. package/dist/middleware/utils/secure.js +1 -1
  69. package/dist/middleware/utils/sentinel-user-id.d.ts +10 -0
  70. package/dist/middleware/utils/sentinel-user-id.js +1 -0
  71. package/dist/middleware.d.ts +11 -8
  72. package/dist/middleware.js +1 -1
  73. package/dist/types.d.ts +44 -0
  74. package/dist/types.js +1 -0
  75. package/dist/web/index.d.ts +17 -0
  76. package/dist/web/index.js +1 -0
  77. package/dist/web/protection-handler.d.ts +28 -0
  78. package/dist/web/protection-handler.js +1 -0
  79. package/dist/web/submit-handler.d.ts +27 -0
  80. package/dist/web/submit-handler.js +1 -0
  81. package/dist/web/types.d.ts +110 -0
  82. package/dist/web/types.js +1 -0
  83. package/dist/web/web-helpers.d.ts +55 -0
  84. package/dist/web/web-helpers.js +1 -0
  85. package/package.json +7 -10
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Thin adapter functions that bridge Web Standard `Request`/`Response` to the
3
+ * data shapes the rest of the SDK expects. These mirror the Node.js
4
+ * `src/middleware/utils/*` functions but read from Web Standard Headers
5
+ * instead of Node.js `req.headers` objects.
6
+ */
7
+ /**
8
+ * Reads a single cookie value from the raw Cookie header.
9
+ * Mirrors `parseCookie(req, name)` in src/middleware/utils/cookies.ts.
10
+ */
11
+ export declare function parseCookieFromRequest(request: Request, name: string): string | undefined;
12
+ /**
13
+ * Extract the real client IP from proxy headers. Web Standard has no
14
+ * equivalent of `req.ip` or `req.socket.remoteAddress`, so we rely entirely
15
+ * on standard proxy headers (which all edge platforms populate).
16
+ *
17
+ * Priority: CF-Connecting-IP → X-Real-IP → X-Forwarded-For (first entry).
18
+ */
19
+ export declare function extractClientIpFromRequest(request: Request): string;
20
+ /**
21
+ * Resolves device ID from: custom resolver → X-Device-Id header → __unshared_fp_id cookie.
22
+ * Mirrors `extractDeviceIdOrUndefined` in src/middleware/utils/device-id.ts.
23
+ */
24
+ export declare function extractDeviceIdFromRequest(request: Request, resolveDeviceId?: (req: Request) => string | undefined): string | undefined;
25
+ /** Same as extractDeviceIdFromRequest but returns "unknown" when nothing is available. */
26
+ export declare function extractDeviceIdFromRequestOrUnknown(request: Request, resolveDeviceId?: (req: Request) => string | undefined): string;
27
+ /**
28
+ * Returns true if the request arrived over HTTPS.
29
+ *
30
+ * Web Standard has no `socket.encrypted`, so this checks:
31
+ * 1. The `x-forwarded-proto` header (set by reverse proxies / load balancers)
32
+ * 2. The URL protocol (for direct HTTPS requests)
33
+ */
34
+ export declare function isSecureWebRequest(request: Request): boolean;
35
+ /**
36
+ * Build a JSON response. Mirrors `sendJson(res, status, data)` in
37
+ * src/middleware/utils/http-helpers.ts, but returns a new Response instead
38
+ * of mutating one.
39
+ */
40
+ export declare function jsonResponse(statusCode: number, data: unknown, extraHeaders?: HeadersInit): Response;
41
+ /** Build a status-only response with no body. */
42
+ export declare function emptyResponse(statusCode: number, extraHeaders?: HeadersInit): Response;
43
+ /** Build a raw-body response (for the fp.js bundle). */
44
+ export declare function bodyResponse(statusCode: number, body: string, extraHeaders?: HeadersInit): Response;
45
+ /**
46
+ * Append a Set-Cookie header to a Headers object. Web Standard `Headers`
47
+ * supports multiple Set-Cookie values via `.append()`.
48
+ */
49
+ export declare function appendCookieToHeaders(headers: Headers, cookieValue: string): void;
50
+ /**
51
+ * Merge a downstream Response's headers with additional Set-Cookie entries
52
+ * and overrides. Preserves multiple Set-Cookie values from the source
53
+ * response via `getSetCookie()` (Node 20+, all modern edge runtimes).
54
+ */
55
+ export declare function mergeResponseHeaders(source: Headers, overrides?: Record<string, string>, extraCookies?: string[]): Headers;
@@ -0,0 +1 @@
1
+ "use strict";function parseCookieFromRequest(e,t){const o=e.headers.get("cookie");if(!o)return;const n=o.match(new RegExp(`(?:^|; )${t}=([^;]*)`));return n?decodeURIComponent(n[1]):void 0}function extractClientIpFromRequest(e){const t=e.headers.get("cf-connecting-ip");if(t)return t;const o=e.headers.get("x-real-ip");if(o)return o;const n=e.headers.get("x-forwarded-for");if(n){const e=n.split(",")[0]?.trim();if(e)return e}return""}function extractDeviceIdFromRequest(e,t){if(t)try{const o=t(e);if(o)return o}catch{}const o=e.headers.get("x-device-id");if(o)return o;return parseCookieFromRequest(e,"__unshared_fp_id")||void 0}function extractDeviceIdFromRequestOrUnknown(e,t){return extractDeviceIdFromRequest(e,t)??"unknown"}function isSecureWebRequest(e){if("https"===e.headers.get("x-forwarded-proto"))return!0;try{return"https:"===new URL(e.url).protocol}catch{return!1}}function jsonResponse(e,t,o){const n=new Headers(o);return n.set("Content-Type","application/json"),new Response(JSON.stringify(t),{status:e,headers:n})}function emptyResponse(e,t){return new Response(null,{status:e,headers:new Headers(t)})}function bodyResponse(e,t,o){return new Response(t,{status:e,headers:new Headers(o)})}function appendCookieToHeaders(e,t){e.append("Set-Cookie",t)}function mergeResponseHeaders(e,t,o){const n=new Headers;e.forEach((e,t)=>{"set-cookie"!==t.toLowerCase()&&n.set(t,e)});const r="function"==typeof e.getSetCookie?e.getSetCookie():[];for(const e of r)n.append("Set-Cookie",e);if(o)for(const e of o)n.append("Set-Cookie",e);if(t)for(const[e,o]of Object.entries(t))n.set(e,o);return n}Object.defineProperty(exports,"t",{value:!0}),exports.parseCookieFromRequest=parseCookieFromRequest,exports.extractClientIpFromRequest=extractClientIpFromRequest,exports.extractDeviceIdFromRequest=extractDeviceIdFromRequest,exports.extractDeviceIdFromRequestOrUnknown=extractDeviceIdFromRequestOrUnknown,exports.isSecureWebRequest=isSecureWebRequest,exports.jsonResponse=jsonResponse,exports.emptyResponse=emptyResponse,exports.bodyResponse=bodyResponse,exports.appendCookieToHeaders=appendCookieToHeaders,exports.mergeResponseHeaders=mergeResponseHeaders;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unshared-clientjs-sdk",
3
- "version": "2.0.0-rc.21",
3
+ "version": "2.0.0-rc.22",
4
4
  "description": "Server-side Node.js SDK for the Unshared Labs V2 API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.mjs",
@@ -38,6 +38,11 @@
38
38
  "import": "./dist/esm/middleware/index.mjs",
39
39
  "require": "./dist/middleware/index.js",
40
40
  "types": "./dist/middleware/index.d.ts"
41
+ },
42
+ "./web": {
43
+ "import": "./dist/esm/web/index.mjs",
44
+ "require": "./dist/web/index.js",
45
+ "types": "./dist/web/index.d.ts"
41
46
  }
42
47
  },
43
48
  "engines": {
@@ -46,16 +51,8 @@
46
51
  "keywords": [],
47
52
  "author": "",
48
53
  "license": "MIT",
49
- "peerDependencies": {
50
- "@types/express": ">=4"
51
- },
52
- "peerDependenciesMeta": {
53
- "@types/express": {
54
- "optional": true
55
- }
56
- },
57
54
  "dependencies": {
58
- "unshared-frontend-sdk": "2.0.0-rc.21"
55
+ "unshared-frontend-sdk": "2.0.0-rc.22"
59
56
  },
60
57
  "devDependencies": {
61
58
  "@types/express": "^4.17.21",