release: WRNexusJS 0.5.0

This commit is contained in:
2026-07-29 12:51:10 +05:30
parent 76c768099d
commit 6afe32f63f
456 changed files with 40879 additions and 8850 deletions
+22
View File
@@ -95,6 +95,7 @@
showStatus: bool(data.captchaShowStatus, true),
disabled: bool(data.captchaDisabled, false),
required: bool(data.captchaRequired, true),
resetOnError: bool(data.captchaResetOnError, true),
compact: compact,
requiredMessage: data.captchaRequiredMessage || "Please complete the security check.",
incorrectMessage: data.captchaIncorrectMessage || "That answer was not correct. Try again.",
@@ -905,6 +906,7 @@
form: root.closest("form"),
formSubmitListener: null,
formSuccessListener: null,
formErrorListener: null,
};
states.set(root, state);
root.dataset.captchaSize = state.config.size;
@@ -967,8 +969,25 @@
state.formSuccessListener = function () {
createChallenge(state, state.config.presentation);
};
state.formErrorListener = function (event) {
// Verified response tokens are single-use. The receiving API may
// consume one before another form field fails, so retry with a fresh
// challenge instead of reusing an already-consumed token.
var detail = event && event.detail ? event.detail : {};
var captchaFailed =
detail.code === "missing-input" ||
detail.code === "invalid-input" ||
detail.code === "expired" ||
detail.code === "already-used" ||
detail.code === "action-mismatch" ||
detail.code === "hostname-mismatch" ||
detail.code === "session-mismatch";
if (state.config.resetOnError || captchaFailed)
createChallenge(state, state.config.presentation);
};
state.form.addEventListener("submit", state.formSubmitListener, true);
state.form.addEventListener("wire:success", state.formSuccessListener);
state.form.addEventListener("wire:error", state.formErrorListener);
}
updateNotRobotState(state);
@@ -1002,6 +1021,9 @@
if (state.form && state.formSuccessListener) {
state.form.removeEventListener("wire:success", state.formSuccessListener);
}
if (state.form && state.formErrorListener) {
state.form.removeEventListener("wire:error", state.formErrorListener);
}
try {
if (state.externalApi && state.externalWidgetId != null) {
if (typeof state.externalApi.remove === "function")