in src/policy.ts [300:331]
export async function fetchActions(context: RecaptchaContext, req: EdgeRequest): Promise<action.Action[]> {
let actions: action.Action[] = [];
try {
const localAssessment = await localPolicyAssessment(context, req);
if (localAssessment === "recaptcha-required") {
context.log("debug", "no local match, calling reCAPTCHA");
actions = await evaluatePolicyAssessment(context, req);
} else {
context.log("debug", "local assessment succeeded");
actions = localAssessment;
}
} catch (reason) {
context.logException(reason);
actions = [action.createAllowAction()];
}
if (context.config.sessionJsInjectPath) {
const patterns = context.config.sessionJsInjectPath?.split(";");
const url = new URL(req.url);
for (const pattern of patterns) {
if (picomatch.isMatch(url.pathname, pattern)) {
context.debug_trace.inject_js_match = true;
context.log("debug", "Request matching session JS inject pattern: " + pattern);
// We don't need to check if it's already there, since policies currently
// can't insert this action.
actions.unshift(action.createInjectJsAction());
break;
}
}
}
return actions;
}