@prosopo/procaptcha-frictionless 2.15.0 → 2.16.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/.turbo/turbo-build$colon$cjs.log +11 -10
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +13 -12
- package/CHANGELOG.md +73 -0
- package/dist/AuthenticatedBadge.d.ts +12 -0
- package/dist/AuthenticatedBadge.d.ts.map +1 -0
- package/dist/AuthenticatedBadge.js +75 -0
- package/dist/AuthenticatedBadge.js.map +1 -0
- package/dist/ProcaptchaFrictionless.d.ts.map +1 -1
- package/dist/ProcaptchaFrictionless.js +35 -9
- package/dist/ProcaptchaFrictionless.js.map +1 -1
- package/dist/cjs/AuthenticatedBadge.cjs +75 -0
- package/dist/cjs/ProcaptchaFrictionless.cjs +35 -9
- package/dist/cjs/customDetectBot.cjs +3 -1
- package/dist/cjs/detectorLoader.cjs +42 -13
- package/dist/cjs/sessionInvalidatedRecovery.cjs +16 -9
- package/dist/customDetectBot.d.ts.map +1 -1
- package/dist/customDetectBot.js +3 -1
- package/dist/customDetectBot.js.map +1 -1
- package/dist/detectorLoader.d.ts +2 -1
- package/dist/detectorLoader.d.ts.map +1 -1
- package/dist/detectorLoader.js +42 -13
- package/dist/detectorLoader.js.map +1 -1
- package/dist/sessionInvalidatedRecovery.d.ts +3 -1
- package/dist/sessionInvalidatedRecovery.d.ts.map +1 -1
- package/dist/sessionInvalidatedRecovery.js +16 -9
- package/dist/sessionInvalidatedRecovery.js.map +1 -1
- package/dist/tests/detectorLoader.test.d.ts +2 -0
- package/dist/tests/detectorLoader.test.d.ts.map +1 -0
- package/dist/tests/detectorLoader.test.js +67 -0
- package/dist/tests/detectorLoader.test.js.map +1 -0
- package/dist/tests/escalationHandoff.integration.test.d.ts +5 -0
- package/dist/tests/escalationHandoff.integration.test.d.ts.map +1 -0
- package/dist/tests/escalationHandoff.integration.test.js +216 -0
- package/dist/tests/escalationHandoff.integration.test.js.map +1 -0
- package/dist/tests/sessionInvalidatedRecovery.test.js +41 -21
- package/dist/tests/sessionInvalidatedRecovery.test.js.map +1 -1
- package/dist/tests/sessionInvalidatedRemint.test.d.ts +5 -0
- package/dist/tests/sessionInvalidatedRemint.test.d.ts.map +1 -0
- package/dist/tests/sessionInvalidatedRemint.test.js +150 -0
- package/dist/tests/sessionInvalidatedRemint.test.js.map +1 -0
- package/package.json +8 -8
- package/src/AuthenticatedBadge.tsx +141 -0
- package/src/ProcaptchaFrictionless.tsx +85 -16
- package/src/customDetectBot.ts +2 -0
- package/src/detectorLoader.ts +52 -12
- package/src/sessionInvalidatedRecovery.ts +30 -10
- package/src/tests/detectorLoader.test.ts +108 -0
- package/src/tests/escalationHandoff.integration.test.tsx +354 -0
- package/src/tests/sessionInvalidatedRecovery.test.ts +49 -21
- package/src/tests/sessionInvalidatedRemint.test.tsx +245 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/procaptcha-frictionless@2.
|
|
2
|
+
> @prosopo/procaptcha-frictionless@2.16.0 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -53,15 +53,16 @@ ViteCommonJSConfig: .
|
|
|
53
53
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
54
54
|
Bundle build started
|
|
55
55
|
[2K
|
|
56
|
-
✓
|
|
56
|
+
✓ 9 modules transformed.
|
|
57
57
|
rendering chunks...
|
|
58
58
|
computing gzip size...
|
|
59
|
-
dist/cjs/index.cjs
|
|
60
|
-
dist/cjs/
|
|
61
|
-
dist/cjs/
|
|
62
|
-
dist/cjs/sessionInvalidatedRecovery.cjs
|
|
63
|
-
dist/cjs/
|
|
64
|
-
dist/cjs/
|
|
65
|
-
dist/cjs/
|
|
59
|
+
dist/cjs/index.cjs 0.54 kB │ gzip: 0.21 kB
|
|
60
|
+
dist/cjs/frictionlessResultGuard.cjs 1.55 kB │ gzip: 0.80 kB
|
|
61
|
+
dist/cjs/detectorLoader.cjs 1.65 kB │ gzip: 0.90 kB
|
|
62
|
+
dist/cjs/sessionInvalidatedRecovery.cjs 2.50 kB │ gzip: 1.14 kB
|
|
63
|
+
dist/cjs/AuthenticatedBadge.cjs 2.69 kB │ gzip: 1.08 kB
|
|
64
|
+
dist/cjs/detectorPrefetch.cjs 2.98 kB │ gzip: 1.35 kB
|
|
65
|
+
dist/cjs/customDetectBot.cjs 5.60 kB │ gzip: 1.71 kB
|
|
66
|
+
dist/cjs/ProcaptchaFrictionless.cjs 10.75 kB │ gzip: 2.84 kB
|
|
66
67
|
|
|
67
|
-
[32m✓ built in
|
|
68
|
+
[32m✓ built in 43ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/procaptcha-frictionless@2.
|
|
2
|
+
> @prosopo/procaptcha-frictionless@2.16.0 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
11:41:16 AM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../locale/tsconfig.json
|
|
8
8
|
* ../util/tsconfig.json
|
|
@@ -25,47 +25,47 @@
|
|
|
25
25
|
* ../procaptcha-react/tsconfig.json
|
|
26
26
|
* tsconfig.json
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
11:41:16 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/vite.backend.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
11:41:16 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
11:41:16 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
11:41:16 AM - 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'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
11:41:16 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
11:41:16 AM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
11:41:16 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
11:41:16 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
11:41:16 AM - Project '../fingerprintjs/tsconfig.json' is up to date because newest input '../fingerprintjs/src/utils/hashing.ts' is older than output '../fingerprintjs/tsconfig.tsbuildinfo'
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
11:41:16 AM - Project '../fingerprint/tsconfig.json' is up to date because newest input '../fingerprint/src/index.ts' is older than output '../fingerprint/tsconfig.tsbuildinfo'
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
11:41:16 AM - 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'
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
11:41:16 AM - Project '../widget-skeleton/tsconfig.json' is up to date because newest input '../widget-skeleton/src/theme.ts' is older than output '../widget-skeleton/tsconfig.tsbuildinfo'
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
11:41:16 AM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
11:41:16 AM - Project '../account/tsconfig.json' is up to date because newest input '../account/src/custom.d.ts' is older than output '../account/tsconfig.tsbuildinfo'
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
11:41:16 AM - Project '../procaptcha-common/tsconfig.json' is up to date because newest input '../procaptcha-common/src/tests/challengeSurfaceRender.unit.test.tsx' is older than output '../procaptcha-common/tsconfig.tsbuildinfo'
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
11:41:16 AM - Project '../procaptcha-pow/tsconfig.json' is up to date because newest input '../procaptcha-pow/src/tests/managerHarness.ts' is older than output '../procaptcha-pow/tsconfig.tsbuildinfo'
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
11:41:16 AM - Project '../procaptcha-puzzle/tsconfig.json' is up to date because newest input '../procaptcha-puzzle/src/index.ts' is older than output '../procaptcha-puzzle/tsconfig.tsbuildinfo'
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
11:41:16 AM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/mocks/data/captchas.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
11:41:16 AM - Project '../procaptcha/tsconfig.json' is up to date because newest input '../procaptcha/src/tests/manager.unit.test.ts' is older than output '../procaptcha/tsconfig.tsbuildinfo'
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
11:41:16 AM - Project '../procaptcha-react/tsconfig.json' is up to date because newest input '../procaptcha-react/src/tests/captchaComponent.unit.test.tsx' is older than output '../procaptcha-react/tsconfig.tsbuildinfo'
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
11:41:16 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
11:41:16 AM - Building project '/home/runner/work/captcha/captcha/packages/procaptcha-frictionless/tsconfig.json'...
|
|
71
71
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/procaptcha-frictionless@2.
|
|
2
|
+
> @prosopo/procaptcha-frictionless@2.16.0 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/procaptcha-frictionless@2.
|
|
6
|
+
> @prosopo/procaptcha-frictionless@2.16.0 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -57,16 +57,17 @@ ViteEsmConfig: .
|
|
|
57
57
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
58
58
|
Bundle build started
|
|
59
59
|
[2K
|
|
60
|
-
✓
|
|
60
|
+
✓ 9 modules transformed.
|
|
61
61
|
rendering chunks...
|
|
62
62
|
computing gzip size...
|
|
63
|
-
dist/_virtual/_rolldown/runtime.js
|
|
64
|
-
dist/index.js
|
|
65
|
-
dist/
|
|
66
|
-
dist/
|
|
67
|
-
dist/
|
|
68
|
-
dist/
|
|
69
|
-
dist/
|
|
70
|
-
dist/
|
|
63
|
+
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
64
|
+
dist/index.js 0.32 kB │ gzip: 0.15 kB
|
|
65
|
+
dist/frictionlessResultGuard.js 1.48 kB │ gzip: 0.80 kB
|
|
66
|
+
dist/detectorLoader.js 1.63 kB │ gzip: 0.90 kB
|
|
67
|
+
dist/AuthenticatedBadge.js 2.28 kB │ gzip: 1.04 kB
|
|
68
|
+
dist/sessionInvalidatedRecovery.js 2.41 kB │ gzip: 1.13 kB
|
|
69
|
+
dist/detectorPrefetch.js 2.86 kB │ gzip: 1.32 kB
|
|
70
|
+
dist/customDetectBot.js 5.42 kB │ gzip: 1.68 kB
|
|
71
|
+
dist/ProcaptchaFrictionless.js 10.01 kB │ gzip: 2.80 kB
|
|
71
72
|
|
|
72
|
-
[32m✓ built in
|
|
73
|
+
[32m✓ built in 42ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# @prosopo/procaptcha-frictionless
|
|
2
2
|
|
|
3
|
+
## 2.16.0
|
|
4
|
+
### Minor Changes
|
|
5
|
+
|
|
6
|
+
- af267c2: Web Bot Auth verifier and an authenticated frictionless flow for pre-verified agents.
|
|
7
|
+
|
|
8
|
+
**`@prosopo/web-bot-auth`** — a new package: an RFC 9421 HTTP Message Signatures verifier built on `@noble/curves/ed25519`, with no Cloudflare dependency. It parses `Signature-Agent` in both its bare-string and dictionary forms, resolves the signer's JWKS at `/.well-known/http-message-signatures-directory` honouring the response's cache-control TTL, and verifies the Ed25519 signature over the RFC 9421 signature base.
|
|
9
|
+
|
|
10
|
+
**Provider fast path.** `/captcha/frictionless` returns `captchaType: authenticated` when a non-`deferToVerify` `AccessPolicyType.Allow` rule matches the request's user scope, and writes a session with `serverChecked: false`, `agent: true` and the issuing IP frozen for verify-time binding. Decrypt, bot score and the decision machine are all skipped. A verified `Signature-Agent` is one way to qualify — the userScope gains a `webBotAuthAgent` field, set only when signature verification succeeded so a rule scoped to a signer can never be matched by a spoofed header — but an IP CIDR, JA4, user agent, ASN or country rule qualifies the same way. A `Block` or `Restrict` on the same match set always wins, because severity outranks Allow.
|
|
11
|
+
|
|
12
|
+
**`/client/authenticated/verify`.** A separate router with mandatory IP binding — the operator must forward the client IP (`API.AUTHENTICATED_IP_REQUIRED`) and it must match the one the session was issued to (`API.AUTHENTICATED_IP_MISMATCH`), so a leaked token cannot be replayed from elsewhere. Single use is enforced through `serverChecked`, and `captchaType` is checked so an ordinary captcha token cannot be redeemed on this route. `clientSessionId` correlation goes through the same `isClientSessionMismatch` helper as pow / image / puzzle, so the authenticated path cannot drift from the others.
|
|
13
|
+
|
|
14
|
+
**Surface.** `AccessPolicyType.Allow` and `CaptchaType.authenticated`; `webBotAuthAgent` on the user scope (indexed, normalised at parse time to a lowercase scheme+host with no trailing slash); `Session.agent` / `Session.webBotAuthAgent` for the Traffic view's "pre-verified pass" filter; `submitAuthenticatedCaptchaVerify` on `ProviderApi` and the matching branch in `@prosopo/server.verifyProvider`; `AuthenticatedBadge` and a dispatch branch in `procaptcha-frictionless`.
|
|
15
|
+
|
|
16
|
+
Three fixes the new end-to-end coverage turned up, each of which broke the flow outright:
|
|
17
|
+
|
|
18
|
+
- `ipMatchesSession` compared the operator's parsed IP against the session's composite halves with `===`. A session read back from Mongo carries BSON (`Decimal128`, or `Long` on pre-migration records), not the `bigint` the type claims, so the comparison was false for every session that had been through the database — every legitimate redemption was rejected as `API.AUTHENTICATED_IP_MISMATCH`. Both halves are now normalised before comparison, and an unparseable half fails closed rather than defaulting to `0n`, so garbage still cannot match garbage.
|
|
19
|
+
- `serverChecked` was never written onto the authenticated session, so "never set" and "consumed" were distinguishable only by an absence. It is now written as `false` at issuance.
|
|
20
|
+
- `serverChecked` was missing from `SESSION_PROJECTION`. Left out, the single-use check reads `undefined` and an authenticated token verifies an unlimited number of times.
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- 6c5b82f: Fall back to a `data:` URL when `blob:` is blocked, so a CSP that permits one scheme keeps the detector.
|
|
25
|
+
|
|
26
|
+
`DetectorLoaderFromScript` imported the provider-served module text from a blob URL only. `blob:` and `data:` are gated by different CSP directives and sites commonly allow one without the other — a `script-src` of `*` matches neither, and a policy listing `data:` for scripts with `blob:` only under `worker-src` blocks the blob path outright. On such an origin the import threw, the caller fell through to its no-detector path, and the session sent no detector session id, no token and no head hash, so the provider recorded `MISSING_TOKEN` and served a challenge the session could not pass frictionlessly.
|
|
27
|
+
|
|
28
|
+
- Percent-encoding rather than base64: the module is several hundred KB and `btoa(String.fromCharCode(...bytes))` overflows the call stack at that size.
|
|
29
|
+
- The blob URL is revoked on every path, including when its own import fails.
|
|
30
|
+
- `/* webpackIgnore: true */` sits alongside `/* @vite-ignore */`. Neither is redundant — `@vite-ignore` stops Vite analysing a non-literal specifier, `webpackIgnore` stops webpack rewriting it into a context module that cannot resolve a blob or data URL at runtime.
|
|
31
|
+
- The import is injected as `ModuleImporter` so the fallback is testable without a real dynamic import.
|
|
32
|
+
|
|
33
|
+
Known gap, not addressed here: `removeComments` in the shared build config strips both pragmas from `dist/`, so consumers bundling this package from npm still receive a bare `import(url)`. Emitting comments would leak source comments into shipped output, so that needs a mechanism which does not rely on a comment surviving compilation.
|
|
34
|
+
- Updated dependencies [929d99b]
|
|
35
|
+
- Updated dependencies [934fa5d]
|
|
36
|
+
- Updated dependencies [27f525e]
|
|
37
|
+
- Updated dependencies [af267c2]
|
|
38
|
+
- @prosopo/types@5.8.0
|
|
39
|
+
- @prosopo/api@4.2.0
|
|
40
|
+
- @prosopo/procaptcha-common@2.13.1
|
|
41
|
+
- @prosopo/procaptcha-pow@2.12.1
|
|
42
|
+
- @prosopo/procaptcha-puzzle@2.12.1
|
|
43
|
+
- @prosopo/procaptcha-react@2.10.2
|
|
44
|
+
|
|
45
|
+
## 2.15.1
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
- 46cca63: Make the post-PoW escalation handoff idempotent.
|
|
49
|
+
|
|
50
|
+
Follow-up to the `CAPTCHA.NO_SESSION_FOUND` recovery fix: this is the other producer of the duplicate `/captcha/image` POST that fix had to recover from.
|
|
51
|
+
|
|
52
|
+
Production, 2026-09-07, the same affected user:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
11:27:49.910 POST /pow/solution 200 escalation envelope returned
|
|
56
|
+
11:27:50.263 POST /captcha/image 200 escalation session issued
|
|
57
|
+
11:27:55.030 POST /captcha/image 400 CAPTCHA.NO_SESSION_FOUND, same session
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The provider mints exactly one escalation session per PoW solution and consumes it on the first challenge fetch. The PoW manager fires `onEscalate` from inside its `providerRetry`-wrapped `submit()`, so a throw anywhere after the handoff re-runs `submit()` and escalates a second time on the same envelope — mounting a second image widget against a session the first one already spent. `onEscalate` now ignores a repeat handoff for a sessionId it has already mounted; a genuinely new escalation session is still followed.
|
|
61
|
+
|
|
62
|
+
Adds `escalationHandoff.integration.test.tsx`, which drives the real `ProcaptchaFrictionless` wrapper into the real image widget and its real `Manager` with only the network stubbed. The stub enforces the provider's one-shot session contract and returns the `NO_SESSION_FOUND` envelope in the response body rather than throwing — `HttpClientBase` only throws when a failure isn't JSON, so a 400 from the provider arrives as `challenge.error`, which is what the widget's recovery path keys off.
|
|
63
|
+
- 9e06d72: Stop `CAPTCHA.NO_SESSION_FOUND` leaving the widget on a dead checkbox.
|
|
64
|
+
|
|
65
|
+
Users reported a checkbox reading "No session found" that never recovered, usually after pressing the image-challenge reload button. Provider logs show the shape clearly: `POST /captcha/image` returns 200 and issues a challenge, then 2-6 seconds later the *same* sessionId is POSTed again and the provider answers 400 `CAPTCHA.NO_SESSION_FOUND` — `checkAndRemoveSession` consumed the session when it issued the first challenge, so a second challenge fetch on that id can never succeed.
|
|
66
|
+
|
|
67
|
+
Three defects combined to turn that into a permanent dead end.
|
|
68
|
+
|
|
69
|
+
- **The manager re-sent a sessionId it had already spent.** `defaultState()` doesn't clear `sessionId` and `buildUpdateState` skips `undefined`, so a stale id survives `resetState()` and any path that re-enters `start()` re-sends it. `Manager` now remembers the id it exchanged for a challenge and, rather than making a request it knows the provider will reject, routes straight to the `CAPTCHA.NO_SESSION_FOUND` state the wrapper already listens for.
|
|
70
|
+
|
|
71
|
+
- **Recovery was one-shot per outer widget lifetime and had no terminal branch.** `ProcaptchaWidget` always takes the `onSessionInvalidated` branch and returns before its own `frictionlessState.restart()` fallback, and its guard ref is fresh on every re-mount because the wrapper bumps the mount key. So once the wrapper's one-shot was spent, the second failure was handled by nobody: no re-mint, no restart, no message — just a stuck checkbox. `handleSessionInvalidated` is now a bounded counter (`MAX_SESSION_INVALIDATED_RETRIES`) rather than a boolean, it reports `exhausted` to the caller, a reload press clears it (a reload mints a genuinely new session, so it shouldn't spend the budget for the old one), and exhaustion falls over visibly through `fallOverWithStyle` — which schedules the existing 10-second full restart, so there is always a way back.
|
|
72
|
+
|
|
73
|
+
- **`resetState(0)` never reset anything.** `0 || stateRef.current.attemptCount` kept the old count, so `attemptCount` accumulated across every re-mint and `start()`'s own `attemptCount >= 5` fall-over fired after five *cumulative* runs in a widget lifetime. Five successful reload presses were enough to drop the user onto the error placeholder. Now `??`, so callers passing literal `0` get the reset they asked for.
|
|
74
|
+
- @prosopo/procaptcha-react@2.10.1
|
|
75
|
+
|
|
3
76
|
## 2.15.0
|
|
4
77
|
### Minor Changes
|
|
5
78
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Account, type ProcaptchaCallbacks, type RandomProvider } from "@prosopo/types";
|
|
2
|
+
import { type FC } from "react";
|
|
3
|
+
export type AuthenticatedBadgeProps = {
|
|
4
|
+
sessionId: string;
|
|
5
|
+
agent?: string;
|
|
6
|
+
dapp: string;
|
|
7
|
+
userAccount: Account;
|
|
8
|
+
provider: RandomProvider;
|
|
9
|
+
callbacks: ProcaptchaCallbacks;
|
|
10
|
+
};
|
|
11
|
+
export declare const AuthenticatedBadge: FC<AuthenticatedBadgeProps>;
|
|
12
|
+
//# sourceMappingURL=AuthenticatedBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticatedBadge.d.ts","sourceRoot":"","sources":["../src/AuthenticatedBadge.tsx"],"names":[],"mappings":"AA4BA,OAAO,EACN,KAAK,OAAO,EAGZ,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,EAAqB,MAAM,OAAO,CAAC;AAEnD,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AAWF,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAoF1D,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getDefaultEvents } from "@prosopo/procaptcha-common";
|
|
2
|
+
import { ApiParams, CaptchaType, encodeProcaptchaOutput } from "@prosopo/types";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/AuthenticatedBadge.tsx
|
|
6
|
+
var displayHost = (agent) => {
|
|
7
|
+
if (!agent) return "unknown";
|
|
8
|
+
try {
|
|
9
|
+
return new URL(agent).hostname;
|
|
10
|
+
} catch {
|
|
11
|
+
return agent;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var AuthenticatedBadge = ({ sessionId, agent, dapp, userAccount, provider, callbacks }) => {
|
|
15
|
+
const emittedRef = useRef(false);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (emittedRef.current) return;
|
|
18
|
+
emittedRef.current = true;
|
|
19
|
+
const events = getDefaultEvents(callbacks);
|
|
20
|
+
const token = encodeProcaptchaOutput({
|
|
21
|
+
[ApiParams.providerUrl]: provider.provider.url,
|
|
22
|
+
[ApiParams.user]: userAccount.account.address,
|
|
23
|
+
[ApiParams.dapp]: dapp,
|
|
24
|
+
[ApiParams.commitmentId]: sessionId,
|
|
25
|
+
[ApiParams.timestamp]: Date.now().toString(),
|
|
26
|
+
[ApiParams.signature]: {
|
|
27
|
+
[ApiParams.provider]: {},
|
|
28
|
+
[ApiParams.user]: {}
|
|
29
|
+
},
|
|
30
|
+
[ApiParams.captchaType]: CaptchaType.authenticated
|
|
31
|
+
});
|
|
32
|
+
events.onHuman(token);
|
|
33
|
+
}, [
|
|
34
|
+
sessionId,
|
|
35
|
+
dapp,
|
|
36
|
+
userAccount,
|
|
37
|
+
provider,
|
|
38
|
+
callbacks
|
|
39
|
+
]);
|
|
40
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
41
|
+
style: {
|
|
42
|
+
display: "inline-flex",
|
|
43
|
+
alignItems: "center",
|
|
44
|
+
gap: 8,
|
|
45
|
+
padding: "8px 12px",
|
|
46
|
+
borderRadius: 6,
|
|
47
|
+
background: "#eef2ff",
|
|
48
|
+
border: "1px solid #c7d2fe",
|
|
49
|
+
color: "#3730a3",
|
|
50
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
51
|
+
fontSize: 13,
|
|
52
|
+
lineHeight: 1.4
|
|
53
|
+
},
|
|
54
|
+
role: "status",
|
|
55
|
+
"aria-label": "Verified agent",
|
|
56
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
57
|
+
width: "16",
|
|
58
|
+
height: "16",
|
|
59
|
+
viewBox: "0 0 24 24",
|
|
60
|
+
fill: "none",
|
|
61
|
+
stroke: "currentColor",
|
|
62
|
+
strokeWidth: "2.5",
|
|
63
|
+
strokeLinecap: "round",
|
|
64
|
+
strokeLinejoin: "round",
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
children: [/* @__PURE__ */ jsx("title", { children: "Verified" }), /* @__PURE__ */ jsx("path", { d: "M20 6L9 17l-5-5" })]
|
|
67
|
+
}), /* @__PURE__ */ jsx("span", { children: agent ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
68
|
+
/* @__PURE__ */ jsx("strong", { children: "Verified agent" }),
|
|
69
|
+
": ",
|
|
70
|
+
displayHost(agent)
|
|
71
|
+
] }) : /* @__PURE__ */ jsx("strong", { children: "Trusted request" }) })]
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
//#endregion
|
|
75
|
+
export { AuthenticatedBadge };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticatedBadge.js","sourceRoot":"","sources":["../src/AuthenticatedBadge.tsx"],"names":[],"mappings":";AA2BA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAEN,SAAS,EACT,WAAW,EAGX,sBAAsB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAW,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAWnD,MAAM,WAAW,GAAG,CAAC,KAAc,EAAU,EAAE;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,CAAC;QACJ,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,EAC/D,SAAS,EACT,KAAK,EACL,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,EAAE;IAKJ,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,UAAU,CAAC,OAAO;YAAE,OAAO;QAC/B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,sBAAsB,CAAC;YACpC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG;YAC9C,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO;YAC7C,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI;YAGtB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,SAAS;YACnC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YAC5C,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBACtB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACxB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE;aACpB;YACD,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAExD,OAAO,CACN,eACC,KAAK,EAAE;YACN,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,UAAU;YACnB,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,SAAS;YAChB,UAAU,EACT,mEAAmE;YACpE,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,GAAG;SACf,EAED,IAAI,EAAC,QAAQ,gBACF,gBAAgB,aAE3B,eACC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,aAElB,uCAAuB,EACvB,eAAM,CAAC,EAAC,iBAAiB,GAAG,IACvB,EACN,yBACE,KAAK,CAAC,CAAC,CAAC,CACR,8BACC,8CAA+B,QAAG,WAAW,CAAC,KAAK,CAAC,IAClD,CACH,CAAC,CAAC,CAAC,CAKH,+CAAgC,CAChC,GACK,IACF,CACN,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcaptchaFrictionless.d.ts","sourceRoot":"","sources":["../src/ProcaptchaFrictionless.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAMN,KAAK,2BAA2B,EAGhC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProcaptchaFrictionless.d.ts","sourceRoot":"","sources":["../src/ProcaptchaFrictionless.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAMN,KAAK,2BAA2B,EAGhC,MAAM,gBAAgB,CAAC;AAuExB,eAAO,MAAM,sBAAsB,gEAOhC,2BAA2B,gCA6b7B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthenticatedBadge } from "./AuthenticatedBadge.js";
|
|
1
2
|
import customDetectBot from "./customDetectBot.js";
|
|
2
3
|
import { evaluateFrictionlessResult } from "./frictionlessResultGuard.js";
|
|
3
4
|
import { consumeRetryMountProps, handleSessionInvalidated, normaliseRetryCoords } from "./sessionInvalidatedRecovery.js";
|
|
@@ -8,6 +9,7 @@ import { darkTheme, lightTheme } from "@prosopo/widget-skeleton";
|
|
|
8
9
|
import { useEffect, useRef, useState } from "react";
|
|
9
10
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
11
|
//#region src/ProcaptchaFrictionless.tsx
|
|
12
|
+
var NO_SESSION_FOUND_KEY = "CAPTCHA.NO_SESSION_FOUND";
|
|
11
13
|
var ProcaptchaLoader = async () => (await import("@prosopo/procaptcha-react")).Procaptcha;
|
|
12
14
|
var ProcaptchaPuzzleLoader = async () => (await import("@prosopo/procaptcha-puzzle")).ProcaptchaPuzzle;
|
|
13
15
|
var ProcaptchaPowLoader = async () => (await import("@prosopo/procaptcha-pow")).ProcaptchaPow;
|
|
@@ -28,13 +30,14 @@ var renderPlaceholder = (theme, mode, errorMessage, isTranslationLoaded, transla
|
|
|
28
30
|
};
|
|
29
31
|
var defaultLoadingState = (attemptCount) => ({
|
|
30
32
|
loading: false,
|
|
31
|
-
attemptCount
|
|
33
|
+
attemptCount
|
|
32
34
|
});
|
|
33
35
|
var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = customDetectBot, container }) => {
|
|
34
36
|
const stateRef = useRef(defaultLoadingState(0));
|
|
35
37
|
const events = getDefaultEvents(callbacks);
|
|
36
38
|
const pendingRetryCoordsRef = useRef(null);
|
|
37
|
-
const
|
|
39
|
+
const sessionInvalidatedAttemptsRef = useRef(0);
|
|
40
|
+
const escalatedSessionIdsRef = useRef(/* @__PURE__ */ new Set());
|
|
38
41
|
const mountCountRef = useRef(0);
|
|
39
42
|
const nextMountAutoStartRef = useRef(false);
|
|
40
43
|
const manualStart = config.startMode === StartModeEnum.manual;
|
|
@@ -50,7 +53,7 @@ var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = cu
|
|
|
50
53
|
}, [i18n, config.language]);
|
|
51
54
|
const [componentToRender, setComponentToRender] = useState(renderPlaceholder(config.theme, config.mode, stateRef.current.errorMessage, i18n.isInitialized, i18n.t, !manualStart, manualStart ? (event) => manualCheckboxHandlerRef.current(event) : void 0));
|
|
52
55
|
const resetState = (attemptCount) => {
|
|
53
|
-
stateRef.current = defaultLoadingState(attemptCount
|
|
56
|
+
stateRef.current = defaultLoadingState(attemptCount ?? stateRef.current.attemptCount);
|
|
54
57
|
};
|
|
55
58
|
const fallOverWithStyle = (errorMessage, errorKey) => {
|
|
56
59
|
if (errorKey === "CAPTCHA.NO_SESSION_FOUND") setTimeout(() => {
|
|
@@ -67,20 +70,28 @@ var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = cu
|
|
|
67
70
|
};
|
|
68
71
|
const renderForCaptchaType = async (captchaType, frictionlessState, autoStart = false, escalationCoords) => {
|
|
69
72
|
const onEscalate = (next, newSessionId, coords) => {
|
|
73
|
+
if (escalatedSessionIdsRef.current.has(newSessionId)) return;
|
|
74
|
+
escalatedSessionIdsRef.current.add(newSessionId);
|
|
70
75
|
renderForCaptchaType(next, {
|
|
71
76
|
...frictionlessState,
|
|
72
77
|
sessionId: newSessionId
|
|
73
78
|
}, true, coords);
|
|
74
79
|
};
|
|
75
80
|
const onSessionInvalidated = (x, y) => {
|
|
76
|
-
const { shouldRestart } = handleSessionInvalidated(x, y,
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
const { shouldRestart } = handleSessionInvalidated(x, y, sessionInvalidatedAttemptsRef, pendingRetryCoordsRef);
|
|
82
|
+
if (shouldRestart) {
|
|
83
|
+
resetState(0);
|
|
84
|
+
start();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const message = i18n.isInitialized ? i18n.t(NO_SESSION_FOUND_KEY) : "No session found";
|
|
88
|
+
events.onError(new Error(message));
|
|
89
|
+
fallOverWithStyle(message, NO_SESSION_FOUND_KEY);
|
|
80
90
|
};
|
|
81
91
|
const onReload = (x, y) => {
|
|
82
92
|
pendingRetryCoordsRef.current = normaliseRetryCoords(x, y);
|
|
83
93
|
nextMountAutoStartRef.current = true;
|
|
94
|
+
sessionInvalidatedAttemptsRef.current = 0;
|
|
84
95
|
resetState(0);
|
|
85
96
|
start();
|
|
86
97
|
};
|
|
@@ -90,7 +101,21 @@ var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = cu
|
|
|
90
101
|
const startCoords = escalationCoords ?? retryStartCoords;
|
|
91
102
|
mountCountRef.current += 1;
|
|
92
103
|
const mountKey = mountCountRef.current;
|
|
93
|
-
if (captchaType === CaptchaType.
|
|
104
|
+
if (captchaType === CaptchaType.authenticated) {
|
|
105
|
+
if (!frictionlessState.sessionId) {
|
|
106
|
+
events.onError(/* @__PURE__ */ new Error("authenticated captcha response missing sessionId — provider is misbehaving"));
|
|
107
|
+
fallOverWithStyle();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
setComponentToRender(/* @__PURE__ */ jsx(AuthenticatedBadge, {
|
|
111
|
+
sessionId: frictionlessState.sessionId,
|
|
112
|
+
agent: frictionlessState.agent,
|
|
113
|
+
dapp: config.account.address ?? "",
|
|
114
|
+
userAccount: frictionlessState.userAccount,
|
|
115
|
+
provider: frictionlessState.provider,
|
|
116
|
+
callbacks
|
|
117
|
+
}));
|
|
118
|
+
} else if (captchaType === CaptchaType.image) {
|
|
94
119
|
const Procaptcha = await ProcaptchaLoader();
|
|
95
120
|
setComponentToRender(/* @__PURE__ */ jsx(Procaptcha, {
|
|
96
121
|
config,
|
|
@@ -162,7 +187,8 @@ var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = cu
|
|
|
162
187
|
deviceCapability: result.deviceCapability,
|
|
163
188
|
encryptBehavioralData: result.encryptBehavioralData,
|
|
164
189
|
getSimdReadings: result.getSimdReadings,
|
|
165
|
-
hp: result.hp
|
|
190
|
+
hp: result.hp,
|
|
191
|
+
agent: result.agent
|
|
166
192
|
};
|
|
167
193
|
await renderForCaptchaType(result.captchaType, frictionlessState);
|
|
168
194
|
stateRef.current = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcaptchaFrictionless.js","sourceRoot":"","sources":["../src/ProcaptchaFrictionless.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProcaptchaFrictionless.js","sourceRoot":"","sources":["../src/ProcaptchaFrictionless.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,WAAW,EAGX,sBAAsB,EACtB,sBAAsB,EAGtB,aAAa,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAEN,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAGxD,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE,CACnC,CAAC,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,UAAU,CAAC;AACxD,MAAM,sBAAsB,GAAG,KAAK,IAAI,EAAE,CACzC,CAAC,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC/D,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE,CACtC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC;AAEzD,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAItD,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAAqB,EAAiB,EAAE,GAAE,CAAC,CAAC;AAE/E,MAAM,iBAAiB,GAAG,CACzB,KAAyB,EACzB,IAAc,EACd,YAAgC,EAChC,mBAA4B,EAC5B,aAAsC,EACtC,OAAgB,EAChB,WAAoD,mBAAmB,EACtE,EAAE;IACH,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjE,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CACN,KAAC,QAAQ,IACR,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,EACxE,KAAK,EAAE,YAAY,gBACR,gBAAgB,EAC3B,OAAO,EAAE,OAAO,GACf,CACF,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,mBAAmB,GAAG,CAC3B,YAAoB,EACO,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,KAAK;IACd,YAAY;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACtC,MAAM,EACN,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,GAAG,eAAe,EAC3B,SAAS,GACoB,EAAE,EAAE;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAM3C,MAAM,qBAAqB,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAQ/D,MAAM,6BAA6B,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAQhD,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;IAKzD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAKhC,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,KAAK,aAAa,CAAC,MAAM,CAAC;IAC9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,wBAAwB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QAC7B,IAAI,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACvC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO;QACR,CAAC;QAKD,KAAK,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE5B,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CACzD,iBAAiB,CAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,QAAQ,CAAC,OAAO,CAAC,YAAY,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,CAAC,EACN,CAAC,WAAW,EACZ,WAAW;QACV,CAAC,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC;QACnE,CAAC,CAAC,SAAS,CACZ,CACD,CAAC;IAOF,MAAM,UAAU,GAAG,CAAC,YAAqB,EAAE,EAAE;QAC5C,QAAQ,CAAC,OAAO,GAAG,mBAAmB,CACrC,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAC7C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,YAAqB,EAAE,QAAiB,EAAE,EAAE;QAItE,IAAI,QAAQ,KAAK,0BAA0B,EAAE,CAAC;YAC7C,UAAU,CAAC,GAAG,EAAE;gBACf,uBAAuB,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;QACP,CAAC;QACD,oBAAoB,CACnB,iBAAiB,CAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,YAAY,IAAI,qBAAqB,EACrC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,CAAC,EACN,KAAK,CACL,CACD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACpC,UAAU,CAAC,GAAG,EAAE;YACf,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,OAAO,EAAE,CAAC;QACX,CAAC,EAAE,KAAK,CAAC,CAAC;IACX,CAAC,CAAC;IAMF,MAAM,oBAAoB,GAAG,KAAK,EACjC,WAAmB,EACnB,iBAAoC,EACpC,SAAS,GAAG,KAAK,EACjB,gBAA8B,EAC7B,EAAE;QACH,MAAM,UAAU,GAAG,CAClB,IAA4C,EAC5C,YAAoB,EACpB,MAAoB,EACnB,EAAE;YAKH,IAAI,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;gBAAE,OAAO;YAC7D,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjD,KAAK,oBAAoB,CACxB,IAAI,EACJ;gBACC,GAAG,iBAAiB;gBACpB,SAAS,EAAE,YAAY;aACvB,EACD,IAAI,EACJ,MAAM,CACN,CAAC;QACH,CAAC,CAAC;QAgBF,MAAM,oBAAoB,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE;YACvD,MAAM,EAAE,aAAa,EAAE,GAAG,wBAAwB,CACjD,CAAC,EACD,CAAC,EACD,6BAA6B,EAC7B,qBAAqB,CACrB,CAAC;YACF,IAAI,aAAa,EAAE,CAAC;gBACnB,UAAU,CAAC,CAAC,CAAC,CAAC;gBACd,KAAK,KAAK,EAAE,CAAC;gBACb,OAAO;YACR,CAAC;YAID,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;gBACjC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBAC9B,CAAC,CAAC,kBAAkB,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAClD,CAAC,CAAC;QAQF,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE;YAC3C,qBAAqB,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;YAGrC,6BAA6B,CAAC,OAAO,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,CAAC,CAAC,CAAC;YACd,KAAK,KAAK,EAAE,CAAC;QACd,CAAC,CAAC;QASF,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACtD,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC;QACtC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,GACnE,sBAAsB,CACrB,qBAAqB,EACrB,SAAS,IAAI,eAAe,CAC5B,CAAC;QACH,MAAM,WAAW,GAAG,gBAAgB,IAAI,gBAAgB,CAAC;QACzD,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;QAEvC,IAAI,WAAW,KAAK,WAAW,CAAC,aAAa,EAAE,CAAC;YAK/C,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,CAAC,OAAO,CACb,IAAI,KAAK,CACR,4EAA4E,CAC5E,CACD,CAAC;gBACF,iBAAiB,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,oBAAoB,CACnB,KAAC,kBAAkB,IAClB,SAAS,EAAE,iBAAiB,CAAC,SAAS,EACtC,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAC9B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAClC,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAC1C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EACpC,SAAS,EAAE,SAAS,GACnB,CACF,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;YAC5C,oBAAoB,CACnB,KAAC,UAAU,IAEV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,EAC1C,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,IATb,QAAQ,CAUZ,CACF,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,EAAE,CAAC;YACxD,oBAAoB,CACnB,KAAC,gBAAgB,IAEhB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,EAC1C,SAAS,EAAE,SAAS,IARf,QAAQ,CASZ,CACF,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,aAAa,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAClD,oBAAoB,CACnB,KAAC,aAAa,IAEb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,EAC1C,SAAS,EAAE,SAAS,IATf,QAAQ,CAUZ,CACF,CAAC;QACH,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QAIxB,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;gBACtC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC;gBACnC,CAAC,CAAC,iDAAiD,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACxC,iBAAiB,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAC3D,OAAO;QACR,CAAC;QAED,MAAM,aAAa,CAClB,KAAK,IAAI,EAAE;YACV,QAAQ,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;YAEnC,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAI1D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;gBAChE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY;aACtC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,OAAO,GAAG;oBAClB,GAAG,QAAQ,CAAC,OAAO;oBACnB,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,KAAK,CAAC,OAAO;iBAC3B,CAAC;gBACF,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,OAAO;YACR,CAAC;YAED,MAAM,iBAAiB,GAAsB;gBAC5C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO;gBACP,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;gBACnD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;aACnB,CAAC;YAEF,MAAM,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAElE,QAAQ,CAAC,OAAO,GAAG;gBAClB,GAAG,QAAQ,CAAC,OAAO;gBACnB,OAAO,EAAE,KAAK;aACd,CAAC;QACH,CAAC,EACD,KAAK,EACL,UAAU,EACV,QAAQ,CAAC,OAAO,CAAC,YAAY,EAC7B,CAAC,CACD,CAAC,OAAO,CAAC,GAAG,EAAE;YACd,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;gBACxC,iBAAiB,EAAE,CAAC;gBACpB,uBAAuB,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EAC1B,SAAkB,EAClB,MAAoB,EACJ,EAAE;QAClB,IAAI,gBAAgB,CAAC,OAAO;YAAE,OAAO;QACrC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;QAChC,qBAAqB,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC;QAC/C,qBAAqB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1C,oBAAoB,CACnB,iBAAiB,CAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,QAAQ,CAAC,OAAO,CAAC,YAAY,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,CAAC,EACN,IAAI,CACJ,CACD,CAAC;QACF,MAAM,KAAK,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,wBAAwB,CAAC,OAAO,GAAG,KAAK,EAAE,KAAoB,EAAE,EAAE;QACjE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC1D,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;YACxB,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;QACzB,CAAC;QACD,MAAM,aAAa,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IACpE,CAAC,CAAC;IAGF,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;YACrC,MAAM,MAAM,GAAI,KAAiD,CAAC,MAAM,CAAC;YACzE,IAAI,MAAM,EAAE,OAAO,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzE,OAAO;YACR,CAAC;YACD,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,GAAG,EAAE;YAC3B,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAChE,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;QACpE,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;YACnE,QAAQ,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;QACxE,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAmB7B,MAAM,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,IACpE,MAAM,CAAC,IAAI,IAAI,EAChB,EAAE,CAAC;QACH,IAAI,gBAAgB,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO;QAC7C,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC;QAC/B,IAAI,WAAW;YAAE,OAAO;QACxB,KAAK,KAAK,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,OAAO,CACN,8BACC,KAAC,cAAc,IAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,GAAI,EACzD,iBAAiB,IAChB,CACH,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
let _prosopo_procaptcha_common = require("@prosopo/procaptcha-common");
|
|
2
|
+
let _prosopo_types = require("@prosopo/types");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
//#region src/AuthenticatedBadge.tsx
|
|
6
|
+
var displayHost = (agent) => {
|
|
7
|
+
if (!agent) return "unknown";
|
|
8
|
+
try {
|
|
9
|
+
return new URL(agent).hostname;
|
|
10
|
+
} catch {
|
|
11
|
+
return agent;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var AuthenticatedBadge = ({ sessionId, agent, dapp, userAccount, provider, callbacks }) => {
|
|
15
|
+
const emittedRef = (0, react.useRef)(false);
|
|
16
|
+
(0, react.useEffect)(() => {
|
|
17
|
+
if (emittedRef.current) return;
|
|
18
|
+
emittedRef.current = true;
|
|
19
|
+
const events = (0, _prosopo_procaptcha_common.getDefaultEvents)(callbacks);
|
|
20
|
+
const token = (0, _prosopo_types.encodeProcaptchaOutput)({
|
|
21
|
+
[_prosopo_types.ApiParams.providerUrl]: provider.provider.url,
|
|
22
|
+
[_prosopo_types.ApiParams.user]: userAccount.account.address,
|
|
23
|
+
[_prosopo_types.ApiParams.dapp]: dapp,
|
|
24
|
+
[_prosopo_types.ApiParams.commitmentId]: sessionId,
|
|
25
|
+
[_prosopo_types.ApiParams.timestamp]: Date.now().toString(),
|
|
26
|
+
[_prosopo_types.ApiParams.signature]: {
|
|
27
|
+
[_prosopo_types.ApiParams.provider]: {},
|
|
28
|
+
[_prosopo_types.ApiParams.user]: {}
|
|
29
|
+
},
|
|
30
|
+
[_prosopo_types.ApiParams.captchaType]: _prosopo_types.CaptchaType.authenticated
|
|
31
|
+
});
|
|
32
|
+
events.onHuman(token);
|
|
33
|
+
}, [
|
|
34
|
+
sessionId,
|
|
35
|
+
dapp,
|
|
36
|
+
userAccount,
|
|
37
|
+
provider,
|
|
38
|
+
callbacks
|
|
39
|
+
]);
|
|
40
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
41
|
+
style: {
|
|
42
|
+
display: "inline-flex",
|
|
43
|
+
alignItems: "center",
|
|
44
|
+
gap: 8,
|
|
45
|
+
padding: "8px 12px",
|
|
46
|
+
borderRadius: 6,
|
|
47
|
+
background: "#eef2ff",
|
|
48
|
+
border: "1px solid #c7d2fe",
|
|
49
|
+
color: "#3730a3",
|
|
50
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
51
|
+
fontSize: 13,
|
|
52
|
+
lineHeight: 1.4
|
|
53
|
+
},
|
|
54
|
+
role: "status",
|
|
55
|
+
"aria-label": "Verified agent",
|
|
56
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
57
|
+
width: "16",
|
|
58
|
+
height: "16",
|
|
59
|
+
viewBox: "0 0 24 24",
|
|
60
|
+
fill: "none",
|
|
61
|
+
stroke: "currentColor",
|
|
62
|
+
strokeWidth: "2.5",
|
|
63
|
+
strokeLinecap: "round",
|
|
64
|
+
strokeLinejoin: "round",
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("title", { children: "Verified" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M20 6L9 17l-5-5" })]
|
|
67
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: agent ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
68
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: "Verified agent" }),
|
|
69
|
+
": ",
|
|
70
|
+
displayHost(agent)
|
|
71
|
+
] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: "Trusted request" }) })]
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
//#endregion
|
|
75
|
+
exports.AuthenticatedBadge = AuthenticatedBadge;
|