इस प्रोजेक्ट के बारे में

js-fair-consent एक ओपन-सोर्स सहमति प्रबंधन समाधान है जो ऐसी वेबसाइटों के लिए डिज़ाइन किया गया है जो आगंतुकों की गोपनीयता का सम्मान करना चाहते हैं जबकि एनालिटिक्स और मार्केटिंग टूल्स का नैतिक और कानूनी उपयोग भी कर सकें। लाइब्रेरी एक सहमति बैनर प्रदान करती है (HTML संरचना और CSS के माध्यम से पूर्ण रूप से कस्टमाइज़ करने योग्य) जो किसी भी एनालिटिक्स स्क्रिप्ट लोड करने से पहले आगंतुकों से अनुमति मांगती है। एक बार सहमति दिए जाने या इनकार किए जाने पर, उपयुक्त सेवाएँ असिंक्रोनस और non‑blocking रूप से लोड हो जाती हैं, आधुनिक वेब प्रदर्शन प्रथाओं का पालन करते हुए। **समर्थित एनालिटिक्स प्रदाता** - Google Analytics (gtag.js के माध्यम से), Consent Mode v2 समर्थन के साथ (`consent-only` या `preload` मोड) - Matomo, अपनी नेटिव सहमति API का उपयोग करके (`requireConsent`, `rememberConsentGiven`, `forgetConsentGiven`) - Umami, एक नो‑प्रीलोड मोड के साथ जो बाद में सहमति दिए जाने पर पुनः रेंडर से बचाता है - Hotjar, केवल तभी शर्ततः लोड होता है जब मार्केटिंग या पर्सनलाइज़ेशन सहमति दी गई हो **मुख्य विशेषताएँ** - एसिंक्रोनस, डिफर्ड स्क्रिप्ट लोडिंग ताकि पेज रेंडरिंग कभी ब्लॉक न हो - ग्लोबल प्राइवेसी कंट्रोल (GPC) और Do-Not-Track (DNT) संकेत स्वचालित रूप से सम्मानित किए जाते हैं — जब कोई भी पहचाना जाता है, तो बैनर छिप जाता है और सभी वैकल्पिक टूल बंद रहते हैं - डिज़ाइन‑से‑गोपनीयता डिफ़ॉल्ट: स्पष्ट सहमति तक कोई कुकी नहीं, सुरक्षित कुकी विशेषताएँ (`SameSite=Lax`, केवल HTTPS) - वैकल्पिक विस्तृत सहमति: आगंतुक विशिष्ट श्रेणियों (एनालिटिक्स, मार्केटिंग, पर्सनलाइज़ेशन) को स्वीकृत या अस्वीकार कर सकते हैं, एकल सभी‑या‑कुछ‑नहीं विकल्प के बजाय - CSP‑सुरक्षित:严格 Content Security Policy सेटअप के लिए `nonce` और `integrity` विशेषताओं का समर्थन करता है - अंतर्निहित i18n: डिफ़ॉल्ट रूप से अंग्रेज़ी और पोलिश अनुवाद शामिल हैं, अन्य भाषाओं के लिए विस्तार योग्य - CDN‑तैयार: jsDelivr या GitHub Pages के माध्यम से सीधे वितरण योग्य **कन्फ़िगरेशन** लाइब्रेरी को `ConsentAnalytics.init()` में पास किए गए साधारण JavaScript ऑब्जेक्ट के माध्यम से प्रारंभ किया जाता है। उपयोगकर्ता घोषित करते हैं कि वे कौन सी सेवाएँ समर्थित करना चाहते हैं, अपनी IDs प्रदान करते हैं (उदाहरण के लिए, GA मापन ID, Umami वेबसाइट ID, Matomo URL और साइट ID, Hotjar प्रोजेक्ट ID और संस्करण), और विकल्प सेट करते हैं जैसे `debug`, `locale`, और चाहें तो `granular` सहमति सक्षम करें। यदि विस्तृत सहमति सक्षम है, तो संग्रहीत कुकी प्रत्येक श्रेणी को उसकी स्वीकृति स्थिति से मैप करने वाला JSON ऑब्जेक्ट बन जाती है, और प्रत्येक सेवा लोड होने से पहले संबंधित श्रेणी मान की जाँच करती है। **Public API** लाइब्रेरी प्रोग्रामेटिक एक्सेस के लिए कुछ विधियाँ उजागर करती है: - `ConsentAnalytics.hasConsent()` — बताता है कि क्या कोई सहमति दी गई है, बूलियन लौटाता है - `ConsentAnalytics.readPrefs()` — पूर्ण सहमति प्राथमिकता ऑब्जेक्ट लौटाता है - `ConsentAnalytics.writePrefs(prefs)` — नई प्राथमिकता स्थिति संग्रहीत करता है - `ConsentAnalytics.revokeConsent()` — संग्रहीत सहमति को साफ़ करता है और बैनर फिर से दिखाता है - `ConsentAnalytics.trackPageView()` — मैन्युअल रूप से पेजव्यू ट्रिगर करता है (SPAs के लिए उपयोगी) परियोजना MIT लाइसेंस के तहत है और इसे Rafał Masiarek द्वारा बनाया गया था।