pow-captcha-react
v0.2.0
Published
Standalone TypeScript/React support library for the Rust proof-of-work captcha server.
Readme
POW Captcha Support Library
Standalone client helpers for the Rust proof-of-work captcha server.
import { useCaptcha } from "pow-captcha-react";
export function ContactForm() {
const {
captchaToken,
solvingCaptcha,
captchaError,
captchaProgress,
consumeCaptchaToken,
} = useCaptcha({
endpoint: "https://captcha.example.com/captcha/",
});
async function submit() {
const token = consumeCaptchaToken();
if (!token) return;
await fetch("/api/contact", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ captchaToken: token }),
});
}
return (
<button disabled={!captchaToken || solvingCaptcha || !!captchaError} onClick={submit}>
{solvingCaptcha ? `Solving ${captchaProgress ?? 0}%` : "Submit"}
</button>
);
}The hook auto-solves, validates cached tokens, refreshes before expiry, and resets after consumeCaptchaToken().
For non-React code:
import { getCapToken, validateToken, consumeToken } from "pow-captcha-react";
const token = await getCapToken({ endpoint: "/captcha/" });
const stillValid = await validateToken("/captcha/", token.token);
const consumed = await consumeToken("/captcha/", token.token);