@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,3 +1,4 @@
|
|
|
1
|
+
const require_AuthenticatedBadge = require("./AuthenticatedBadge.cjs");
|
|
1
2
|
const require_customDetectBot = require("./customDetectBot.cjs");
|
|
2
3
|
const require_frictionlessResultGuard = require("./frictionlessResultGuard.cjs");
|
|
3
4
|
const require_sessionInvalidatedRecovery = require("./sessionInvalidatedRecovery.cjs");
|
|
@@ -8,6 +9,7 @@ let _prosopo_widget_skeleton = require("@prosopo/widget-skeleton");
|
|
|
8
9
|
let react = require("react");
|
|
9
10
|
let react_jsx_runtime = require("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 = require_customDetectBot.default, container }) => {
|
|
34
36
|
const stateRef = (0, react.useRef)(defaultLoadingState(0));
|
|
35
37
|
const events = (0, _prosopo_procaptcha_common.getDefaultEvents)(callbacks);
|
|
36
38
|
const pendingRetryCoordsRef = (0, react.useRef)(null);
|
|
37
|
-
const
|
|
39
|
+
const sessionInvalidatedAttemptsRef = (0, react.useRef)(0);
|
|
40
|
+
const escalatedSessionIdsRef = (0, react.useRef)(/* @__PURE__ */ new Set());
|
|
38
41
|
const mountCountRef = (0, react.useRef)(0);
|
|
39
42
|
const nextMountAutoStartRef = (0, react.useRef)(false);
|
|
40
43
|
const manualStart = config.startMode === _prosopo_types.StartModeEnum.manual;
|
|
@@ -50,7 +53,7 @@ var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = re
|
|
|
50
53
|
}, [i18n, config.language]);
|
|
51
54
|
const [componentToRender, setComponentToRender] = (0, react.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 = re
|
|
|
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 } = require_sessionInvalidatedRecovery.handleSessionInvalidated(x, y,
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
const { shouldRestart } = require_sessionInvalidatedRecovery.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 = require_sessionInvalidatedRecovery.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 = re
|
|
|
90
101
|
const startCoords = escalationCoords ?? retryStartCoords;
|
|
91
102
|
mountCountRef.current += 1;
|
|
92
103
|
const mountKey = mountCountRef.current;
|
|
93
|
-
if (captchaType === _prosopo_types.CaptchaType.
|
|
104
|
+
if (captchaType === _prosopo_types.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__ */ (0, react_jsx_runtime.jsx)(require_AuthenticatedBadge.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 === _prosopo_types.CaptchaType.image) {
|
|
94
119
|
const Procaptcha = await ProcaptchaLoader();
|
|
95
120
|
setComponentToRender(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Procaptcha, {
|
|
96
121
|
config,
|
|
@@ -162,7 +187,8 @@ var ProcaptchaFrictionless = ({ config, callbacks, restart, i18n, detectBot = re
|
|
|
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 = {
|
|
@@ -109,7 +109,8 @@ var customDetectBot = async (config, container, restartFn, retryContext) => {
|
|
|
109
109
|
status: captcha.status,
|
|
110
110
|
userAccount,
|
|
111
111
|
error: captcha.error,
|
|
112
|
-
hp: captcha.hp
|
|
112
|
+
hp: captcha.hp,
|
|
113
|
+
agent: captcha.agent
|
|
113
114
|
};
|
|
114
115
|
}
|
|
115
116
|
const detectionResult = await providerDetect(container, restartFn, () => ext.getAccount(config));
|
|
@@ -135,6 +136,7 @@ var customDetectBot = async (config, container, restartFn, retryContext) => {
|
|
|
135
136
|
userAccount,
|
|
136
137
|
error: captcha.error,
|
|
137
138
|
hp: captcha.hp,
|
|
139
|
+
agent: captcha.agent,
|
|
138
140
|
behaviorCollector1: detectionResult.mouseTracker,
|
|
139
141
|
behaviorCollector2: detectionResult.touchTracker,
|
|
140
142
|
behaviorCollector3: detectionResult.clickTracker,
|
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
//#region src/detectorLoader.ts
|
|
2
|
+
var blobAttempt = (script) => {
|
|
3
|
+
const url = URL.createObjectURL(new Blob([script], { type: "text/javascript" }));
|
|
4
|
+
return {
|
|
5
|
+
url,
|
|
6
|
+
release: () => URL.revokeObjectURL(url)
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
var dataAttempt = (script) => ({
|
|
10
|
+
url: `data:text/javascript;charset=utf-8,${encodeURIComponent(script)}`,
|
|
11
|
+
release: () => void 0
|
|
12
|
+
});
|
|
13
|
+
var defaultImporter = (url) => import(
|
|
14
|
+
/* @vite-ignore */
|
|
15
|
+
/* webpackIgnore: true */
|
|
16
|
+
url
|
|
17
|
+
);
|
|
2
18
|
/**
|
|
3
|
-
* Loads a detector from a provider-served obfuscated ESM string (the
|
|
4
|
-
* pool bundle).
|
|
5
|
-
*
|
|
19
|
+
* Loads a detector from a provider-served obfuscated ESM string (the
|
|
20
|
+
* per-session pool bundle). The module is self-contained, so a dynamic
|
|
21
|
+
* `import()` yields its default export.
|
|
22
|
+
*
|
|
23
|
+
* A blob URL is tried first, then a `data:` URL. The two are gated by
|
|
24
|
+
* different CSP directives and sites commonly allow one without the other — a
|
|
25
|
+
* `script-src` of `*` matches neither, and a policy listing `data:` for
|
|
26
|
+
* scripts and `blob:` only for workers blocks the blob path outright. Without
|
|
27
|
+
* the fallback every session on such a site loses the detector, sends an empty
|
|
28
|
+
* token, and can never pass frictionlessly.
|
|
29
|
+
*
|
|
30
|
+
* A blocked attempt logs a CSP violation before the import rejects. That noise
|
|
31
|
+
* is the cost of recovering the session.
|
|
6
32
|
*/
|
|
7
|
-
var DetectorLoaderFromScript = async (script) => {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
url
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
33
|
+
var DetectorLoaderFromScript = async (script, importModule = defaultImporter) => {
|
|
34
|
+
let lastError = /* @__PURE__ */ new Error("no loader attempt ran");
|
|
35
|
+
for (const build of [blobAttempt, dataAttempt]) {
|
|
36
|
+
let attempt;
|
|
37
|
+
try {
|
|
38
|
+
attempt = build(script);
|
|
39
|
+
return (await importModule(attempt.url)).default;
|
|
40
|
+
} catch (err) {
|
|
41
|
+
lastError = err;
|
|
42
|
+
} finally {
|
|
43
|
+
attempt?.release();
|
|
44
|
+
}
|
|
17
45
|
}
|
|
46
|
+
throw lastError;
|
|
18
47
|
};
|
|
19
48
|
//#endregion
|
|
20
49
|
exports.DetectorLoaderFromScript = DetectorLoaderFromScript;
|
|
@@ -22,18 +22,25 @@ var normaliseRetryCoords = (x, y) => {
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
|
-
* Semantics of the outer recovery handler. Returns whether the caller
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* Semantics of the outer recovery handler. Returns whether the caller should
|
|
26
|
+
* proceed to re-run the frictionless flow (`start()`), and mutates the passed
|
|
27
|
+
* refs to record the attempt + pending coords.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
29
|
+
* Bounded rather than one-shot: a persistently broken session still stops
|
|
30
|
+
* looping, but the caller is told (`exhausted`) so it can fall back visibly
|
|
31
|
+
* instead of silently doing nothing.
|
|
31
32
|
*/
|
|
32
|
-
var handleSessionInvalidated = (x, y,
|
|
33
|
-
if (
|
|
34
|
-
|
|
33
|
+
var handleSessionInvalidated = (x, y, attemptsRef, pendingCoordsRef, maxAttempts = 3) => {
|
|
34
|
+
if (attemptsRef.current >= maxAttempts) return {
|
|
35
|
+
shouldRestart: false,
|
|
36
|
+
exhausted: true
|
|
37
|
+
};
|
|
38
|
+
attemptsRef.current += 1;
|
|
35
39
|
pendingCoordsRef.current = normaliseRetryCoords(x, y);
|
|
36
|
-
return {
|
|
40
|
+
return {
|
|
41
|
+
shouldRestart: true,
|
|
42
|
+
exhausted: false
|
|
43
|
+
};
|
|
37
44
|
};
|
|
38
45
|
/**
|
|
39
46
|
* Compute the props a resumed inner widget mounts with. Consumes the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customDetectBot.d.ts","sourceRoot":"","sources":["../src/customDetectBot.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACX,oBAAoB,EAGpB,MAAM,gBAAgB,CAAC;AAyFxB,eAAO,MAAM,WAAW,GAAU,CAAC,WACzB,OAAO,CAAC,CAAC,CAAC,MACf,MAAM,KACR,OAAO,CAAC,CAAC,CAoBX,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"customDetectBot.d.ts","sourceRoot":"","sources":["../src/customDetectBot.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACX,oBAAoB,EAGpB,MAAM,gBAAgB,CAAC;AAyFxB,eAAO,MAAM,WAAW,GAAU,CAAC,WACzB,OAAO,CAAC,CAAC,CAAC,MACf,MAAM,KACR,OAAO,CAAC,CAAC,CAoBX,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,oBAuOtB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
package/dist/customDetectBot.js
CHANGED
|
@@ -109,7 +109,8 @@ var customDetectBot = async (config, container, restartFn, retryContext) => {
|
|
|
109
109
|
status: captcha.status,
|
|
110
110
|
userAccount,
|
|
111
111
|
error: captcha.error,
|
|
112
|
-
hp: captcha.hp
|
|
112
|
+
hp: captcha.hp,
|
|
113
|
+
agent: captcha.agent
|
|
113
114
|
};
|
|
114
115
|
}
|
|
115
116
|
const detectionResult = await providerDetect(container, restartFn, () => ext.getAccount(config));
|
|
@@ -135,6 +136,7 @@ var customDetectBot = async (config, container, restartFn, retryContext) => {
|
|
|
135
136
|
userAccount,
|
|
136
137
|
error: captcha.error,
|
|
137
138
|
hp: captcha.hp,
|
|
139
|
+
agent: captcha.agent,
|
|
138
140
|
behaviorCollector1: detectionResult.mouseTracker,
|
|
139
141
|
behaviorCollector2: detectionResult.touchTracker,
|
|
140
142
|
behaviorCollector3: detectionResult.clickTracker,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customDetectBot.js","sourceRoot":"","sources":["../src/customDetectBot.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"customDetectBot.js","sourceRoot":"","sources":["../src/customDetectBot.ts"],"names":[],"mappings":"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"}
|
package/dist/detectorLoader.d.ts
CHANGED
|
@@ -27,5 +27,6 @@ export type DetectorType = (container: HTMLElement | undefined, restart: () => v
|
|
|
27
27
|
getSimdReadings?: (timeoutMs?: number) => Promise<string | undefined>;
|
|
28
28
|
userAccount: Account;
|
|
29
29
|
}>;
|
|
30
|
-
export
|
|
30
|
+
export type ModuleImporter = (url: string) => Promise<unknown>;
|
|
31
|
+
export declare const DetectorLoaderFromScript: (script: string, importModule?: ModuleImporter) => Promise<DetectorType>;
|
|
31
32
|
//# sourceMappingURL=detectorLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectorLoader.d.ts","sourceRoot":"","sources":["../src/detectorLoader.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,MAAM,gBAAgB,CAAC;AAOxB,MAAM,MAAM,YAAY,GAAG,CAC1B,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,IAAI,EACnB,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KACpC,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,OAAO,EAAE,MAAM,kBAAkB,EAAE,CAAC;QACpC,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,OAAO,EAAE,MAAM,eAAe,EAAE,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,OAAO,EAAE,MAAM,eAAe,EAAE,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,oBAAoB,CAAC;IAC9E,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,WAAW,EAAE,OAAO,CAAC;CACrB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"detectorLoader.d.ts","sourceRoot":"","sources":["../src/detectorLoader.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,MAAM,gBAAgB,CAAC;AAOxB,MAAM,MAAM,YAAY,GAAG,CAC1B,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,IAAI,EACnB,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KACpC,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,OAAO,EAAE,MAAM,kBAAkB,EAAE,CAAC;QACpC,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,OAAO,EAAE,MAAM,eAAe,EAAE,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,OAAO,EAAE,MAAM,eAAe,EAAE,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,oBAAoB,CAAC;IAC9E,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,WAAW,EAAE,OAAO,CAAC;CACrB,CAAC,CAAC;AAoBH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAoB/D,eAAO,MAAM,wBAAwB,WAC5B,MAAM,iBACA,cAAc,KAC1B,OAAO,CAAC,YAAY,CAiBtB,CAAC"}
|
package/dist/detectorLoader.js
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
//#region src/detectorLoader.ts
|
|
2
|
+
var blobAttempt = (script) => {
|
|
3
|
+
const url = URL.createObjectURL(new Blob([script], { type: "text/javascript" }));
|
|
4
|
+
return {
|
|
5
|
+
url,
|
|
6
|
+
release: () => URL.revokeObjectURL(url)
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
var dataAttempt = (script) => ({
|
|
10
|
+
url: `data:text/javascript;charset=utf-8,${encodeURIComponent(script)}`,
|
|
11
|
+
release: () => void 0
|
|
12
|
+
});
|
|
13
|
+
var defaultImporter = (url) => import(
|
|
14
|
+
/* @vite-ignore */
|
|
15
|
+
/* webpackIgnore: true */
|
|
16
|
+
url
|
|
17
|
+
);
|
|
2
18
|
/**
|
|
3
|
-
* Loads a detector from a provider-served obfuscated ESM string (the
|
|
4
|
-
* pool bundle).
|
|
5
|
-
*
|
|
19
|
+
* Loads a detector from a provider-served obfuscated ESM string (the
|
|
20
|
+
* per-session pool bundle). The module is self-contained, so a dynamic
|
|
21
|
+
* `import()` yields its default export.
|
|
22
|
+
*
|
|
23
|
+
* A blob URL is tried first, then a `data:` URL. The two are gated by
|
|
24
|
+
* different CSP directives and sites commonly allow one without the other — a
|
|
25
|
+
* `script-src` of `*` matches neither, and a policy listing `data:` for
|
|
26
|
+
* scripts and `blob:` only for workers blocks the blob path outright. Without
|
|
27
|
+
* the fallback every session on such a site loses the detector, sends an empty
|
|
28
|
+
* token, and can never pass frictionlessly.
|
|
29
|
+
*
|
|
30
|
+
* A blocked attempt logs a CSP violation before the import rejects. That noise
|
|
31
|
+
* is the cost of recovering the session.
|
|
6
32
|
*/
|
|
7
|
-
var DetectorLoaderFromScript = async (script) => {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
url
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
33
|
+
var DetectorLoaderFromScript = async (script, importModule = defaultImporter) => {
|
|
34
|
+
let lastError = /* @__PURE__ */ new Error("no loader attempt ran");
|
|
35
|
+
for (const build of [blobAttempt, dataAttempt]) {
|
|
36
|
+
let attempt;
|
|
37
|
+
try {
|
|
38
|
+
attempt = build(script);
|
|
39
|
+
return (await importModule(attempt.url)).default;
|
|
40
|
+
} catch (err) {
|
|
41
|
+
lastError = err;
|
|
42
|
+
} finally {
|
|
43
|
+
attempt?.release();
|
|
44
|
+
}
|
|
17
45
|
}
|
|
46
|
+
throw lastError;
|
|
18
47
|
};
|
|
19
48
|
//#endregion
|
|
20
49
|
export { DetectorLoaderFromScript };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectorLoader.js","sourceRoot":"","sources":["../src/detectorLoader.ts"],"names":[],"mappings":"AAkEA,MAAM,
|
|
1
|
+
{"version":3,"file":"detectorLoader.js","sourceRoot":"","sources":["../src/detectorLoader.ts"],"names":[],"mappings":"AAkEA,MAAM,WAAW,GAAG,CAAC,MAAc,EAAiB,EAAE;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAC9B,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC/C,CAAC;IACF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAS,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAiB,EAAE,CAAC,CAAC;IACvD,GAAG,EAAE,sCAAsC,kBAAkB,CAAC,MAAM,CAAC,EAAE;IACvE,OAAO,EAAE,GAAS,EAAE,CAAC,SAAS;CAC9B,CAAC,CAAC;AAKH,MAAM,eAAe,GAAmB,CAAC,GAAG,EAAE,EAAE,CAC/C,MAAM,CAA8C,GAAG,CAAC,CAAC;AAiB1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC5C,MAAc,EACd,eAA+B,eAAe,EACtB,EAAE;IAC1B,IAAI,SAAS,GAAY,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC5D,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAChD,IAAI,OAAkC,CAAC;QACvC,IAAI,CAAC;YACJ,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAE3C,CAAC;YACF,OAAO,GAAG,CAAC,OAAO,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,SAAS,GAAG,GAAG,CAAC;QACjB,CAAC;gBAAS,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,CAAC;QACpB,CAAC;IACF,CAAC;IACD,MAAM,SAAS,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -6,8 +6,10 @@ export type MutableRef<T> = {
|
|
|
6
6
|
current: T;
|
|
7
7
|
};
|
|
8
8
|
export declare const normaliseRetryCoords: (x: number | undefined, y: number | undefined) => RetryCoords | null;
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const MAX_SESSION_INVALIDATED_RETRIES = 3;
|
|
10
|
+
export declare const handleSessionInvalidated: (x: number | undefined, y: number | undefined, attemptsRef: MutableRef<number>, pendingCoordsRef: MutableRef<RetryCoords | null>, maxAttempts?: number) => {
|
|
10
11
|
shouldRestart: boolean;
|
|
12
|
+
exhausted: boolean;
|
|
11
13
|
};
|
|
12
14
|
export declare const consumeRetryMountProps: (pendingCoordsRef: MutableRef<RetryCoords | null>, escalationAutoStart: boolean) => {
|
|
13
15
|
autoStart: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionInvalidatedRecovery.d.ts","sourceRoot":"","sources":["../src/sessionInvalidatedRecovery.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAMnD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAgB3C,eAAO,MAAM,oBAAoB,MAC7B,MAAM,GAAG,SAAS,KAClB,MAAM,GAAG,SAAS,KACnB,WAAW,GAAG,IAIhB,CAAC;
|
|
1
|
+
{"version":3,"file":"sessionInvalidatedRecovery.d.ts","sourceRoot":"","sources":["../src/sessionInvalidatedRecovery.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAMnD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAgB3C,eAAO,MAAM,oBAAoB,MAC7B,MAAM,GAAG,SAAS,KAClB,MAAM,GAAG,SAAS,KACnB,WAAW,GAAG,IAIhB,CAAC;AAgBF,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAWjD,eAAO,MAAM,wBAAwB,MACjC,MAAM,GAAG,SAAS,KAClB,MAAM,GAAG,SAAS,eACR,UAAU,CAAC,MAAM,CAAC,oBACb,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,gBACnC,MAAM,KACjB;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAO9C,CAAC;AAWF,eAAO,MAAM,sBAAsB,qBAChB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,uBAC3B,OAAO,KAC1B;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;CAO5D,CAAC"}
|
|
@@ -22,18 +22,25 @@ var normaliseRetryCoords = (x, y) => {
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
|
-
* Semantics of the outer recovery handler. Returns whether the caller
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* Semantics of the outer recovery handler. Returns whether the caller should
|
|
26
|
+
* proceed to re-run the frictionless flow (`start()`), and mutates the passed
|
|
27
|
+
* refs to record the attempt + pending coords.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
29
|
+
* Bounded rather than one-shot: a persistently broken session still stops
|
|
30
|
+
* looping, but the caller is told (`exhausted`) so it can fall back visibly
|
|
31
|
+
* instead of silently doing nothing.
|
|
31
32
|
*/
|
|
32
|
-
var handleSessionInvalidated = (x, y,
|
|
33
|
-
if (
|
|
34
|
-
|
|
33
|
+
var handleSessionInvalidated = (x, y, attemptsRef, pendingCoordsRef, maxAttempts = 3) => {
|
|
34
|
+
if (attemptsRef.current >= maxAttempts) return {
|
|
35
|
+
shouldRestart: false,
|
|
36
|
+
exhausted: true
|
|
37
|
+
};
|
|
38
|
+
attemptsRef.current += 1;
|
|
35
39
|
pendingCoordsRef.current = normaliseRetryCoords(x, y);
|
|
36
|
-
return {
|
|
40
|
+
return {
|
|
41
|
+
shouldRestart: true,
|
|
42
|
+
exhausted: false
|
|
43
|
+
};
|
|
37
44
|
};
|
|
38
45
|
/**
|
|
39
46
|
* Compute the props a resumed inner widget mounts with. Consumes the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionInvalidatedRecovery.js","sourceRoot":"","sources":["../src/sessionInvalidatedRecovery.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,CAAqB,EACrB,CAAqB,EACA,EAAE;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sessionInvalidatedRecovery.js","sourceRoot":"","sources":["../src/sessionInvalidatedRecovery.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,CAAqB,EACrB,CAAqB,EACA,EAAE;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAWjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,CAAqB,EACrB,CAAqB,EACrB,WAA+B,EAC/B,gBAAgD,EAChD,cAAsB,+BAA+B,EACJ,EAAE;IACnD,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC;QACxC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;IACzB,gBAAgB,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,gBAAgD,EAChD,mBAA4B,EACmC,EAAE;IACjE,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,IAAI,SAAS,CAAC;IAC1D,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IAChC,OAAO;QACN,SAAS,EAAE,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;QACtD,WAAW;KACX,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectorLoader.test.d.ts","sourceRoot":"","sources":["../../src/tests/detectorLoader.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { DetectorLoaderFromScript, } from "../detectorLoader.js";
|
|
3
|
+
const SCRIPT = "export default () => ({ token: 'x' });";
|
|
4
|
+
const detector = (() => undefined);
|
|
5
|
+
describe("DetectorLoaderFromScript", () => {
|
|
6
|
+
const created = [];
|
|
7
|
+
const revoked = [];
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
created.length = 0;
|
|
10
|
+
revoked.length = 0;
|
|
11
|
+
let counter = 0;
|
|
12
|
+
URL.createObjectURL = vi.fn(() => {
|
|
13
|
+
const url = `blob:https://example.test/${counter++}`;
|
|
14
|
+
created.push(url);
|
|
15
|
+
return url;
|
|
16
|
+
});
|
|
17
|
+
URL.revokeObjectURL = vi.fn((url) => {
|
|
18
|
+
revoked.push(url);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
vi.restoreAllMocks();
|
|
23
|
+
});
|
|
24
|
+
it("uses a blob URL when the import succeeds", async () => {
|
|
25
|
+
const seen = [];
|
|
26
|
+
const importer = async (url) => {
|
|
27
|
+
seen.push(url);
|
|
28
|
+
return { default: detector };
|
|
29
|
+
};
|
|
30
|
+
await expect(DetectorLoaderFromScript(SCRIPT, importer)).resolves.toBe(detector);
|
|
31
|
+
expect(seen).toHaveLength(1);
|
|
32
|
+
expect(seen[0]).toMatch(/^blob:/);
|
|
33
|
+
expect(revoked).toEqual(created);
|
|
34
|
+
});
|
|
35
|
+
it("falls back to a data URL when the blob import is blocked by CSP", async () => {
|
|
36
|
+
const seen = [];
|
|
37
|
+
const importer = async (url) => {
|
|
38
|
+
seen.push(url);
|
|
39
|
+
if (url.startsWith("blob:")) {
|
|
40
|
+
throw new TypeError("Failed to fetch dynamically imported module");
|
|
41
|
+
}
|
|
42
|
+
return { default: detector };
|
|
43
|
+
};
|
|
44
|
+
await expect(DetectorLoaderFromScript(SCRIPT, importer)).resolves.toBe(detector);
|
|
45
|
+
expect(seen).toHaveLength(2);
|
|
46
|
+
expect(seen[0]).toMatch(/^blob:/);
|
|
47
|
+
expect(seen[1]).toMatch(/^data:text\/javascript;charset=utf-8,/);
|
|
48
|
+
expect(decodeURIComponent(seen[1]?.split(",")[1] ?? "")).toBe(SCRIPT);
|
|
49
|
+
});
|
|
50
|
+
it("revokes the blob URL even when its import fails", async () => {
|
|
51
|
+
const importer = async (url) => {
|
|
52
|
+
if (url.startsWith("blob:"))
|
|
53
|
+
throw new Error("blocked");
|
|
54
|
+
return { default: detector };
|
|
55
|
+
};
|
|
56
|
+
await DetectorLoaderFromScript(SCRIPT, importer);
|
|
57
|
+
expect(revoked).toEqual(created);
|
|
58
|
+
});
|
|
59
|
+
it("rethrows the last error when both schemes are blocked", async () => {
|
|
60
|
+
const importer = async (url) => {
|
|
61
|
+
throw new Error(`blocked: ${url.slice(0, 5)}`);
|
|
62
|
+
};
|
|
63
|
+
await expect(DetectorLoaderFromScript(SCRIPT, importer)).rejects.toThrow("blocked: data:");
|
|
64
|
+
expect(revoked).toEqual(created);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=detectorLoader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectorLoader.test.js","sourceRoot":"","sources":["../../src/tests/detectorLoader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalationHandoff.integration.test.d.ts","sourceRoot":"","sources":["../../src/tests/escalationHandoff.integration.test.tsx"],"names":[],"mappings":"AAyDA,OAAO,CAAC,MAAM,CAAC;IACd,IAAI,wBAAwB,EAAE,OAAO,CAAC;CACtC"}
|