if (!window.rustiCsrfInitialized) {
window.rustiCsrfInitialized = true;
window.getCsrfToken = function() {
const input = document.querySelector('input[name="csrf_token"]');
if (input && input.value) return input.value;
const meta = document.querySelector('meta[name="csrf-token"]');
if (meta && meta.content) return meta.content;
return window._rusti_csrf_token || null;
};
const { fetch: originalFetch } = window;
window.fetch = async (input, init = {}) => {
let headers = new Headers(init.headers || {});
const method = (init.method || 'GET').toUpperCase();
if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(method)) {
const token = window.getCsrfToken();
if (token) {
headers.set('X-CSRF-Token', token); }
}
const response = await originalFetch(input, { ...init, headers });
const newToken = response.headers.get('X-CSRF-Token');
if (newToken) {
window._rusti_csrf_token = newToken;
document.querySelectorAll('input[name="csrf_token"]').forEach(el => el.value = newToken);
}
return response;
};
}