typescript-typenfehler behoben.. npm run lint läuft nun fehlerfrei durch.

This commit is contained in:
Codex Agent
2025-11-22 11:49:47 +01:00
parent 6c78d7e281
commit eb41cb6194
74 changed files with 469 additions and 396 deletions

View File

@@ -10,7 +10,9 @@ export type MatomoConfig = {
declare global {
interface Window {
_paq?: any[];
_paq?: Array<[string, ...unknown[]]>;
__matomoInitialized?: boolean;
__CSP_NONCE?: string;
}
}
@@ -19,7 +21,7 @@ interface MatomoTrackerProps {
}
const MatomoTracker: React.FC<MatomoTrackerProps> = ({ config }) => {
const page = usePage();
const page = usePage<{ security?: { csp?: { scriptNonce?: string } } }>();
const { hasConsent } = useConsent();
const scriptNonce = (page.props.security as { csp?: { scriptNonce?: string } } | undefined)?.csp?.scriptNonce;
const analyticsConsent = hasConsent('analytics');
@@ -38,14 +40,14 @@ const MatomoTracker: React.FC<MatomoTrackerProps> = ({ config }) => {
if (window._paq) {
window._paq.length = 0;
}
delete (window as any).__matomoInitialized;
delete window.__matomoInitialized;
return;
}
window._paq = window._paq || [];
const { _paq } = window;
if (!(window as any).__matomoInitialized) {
if (!window.__matomoInitialized) {
_paq.push(['setTrackerUrl', `${base}/matomo.php`]);
_paq.push(['setSiteId', config.siteId]);
_paq.push(['disableCookies']);
@@ -58,8 +60,8 @@ const MatomoTracker: React.FC<MatomoTrackerProps> = ({ config }) => {
script.dataset.matomo = base;
if (scriptNonce) {
script.setAttribute('nonce', scriptNonce);
} else if (typeof window !== 'undefined' && (window as any).__CSP_NONCE) {
script.setAttribute('nonce', (window as any).__CSP_NONCE);
} else if (typeof window !== 'undefined' && window.__CSP_NONCE) {
script.setAttribute('nonce', window.__CSP_NONCE);
} else {
const metaNonce = document
.querySelector('meta[name="csp-nonce"]')
@@ -72,9 +74,9 @@ const MatomoTracker: React.FC<MatomoTrackerProps> = ({ config }) => {
document.body.appendChild(script);
}
(window as any).__matomoInitialized = true;
window.__matomoInitialized = true;
}
}, [config, analyticsConsent]);
}, [config, analyticsConsent, scriptNonce]);
useEffect(() => {
if (