@owlmeans/consent 0.1.18-rc.7 → 0.1.18-rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/consts.d.ts CHANGED
@@ -30,14 +30,23 @@ export declare const CONSENT_EVENT = "owlmeans:consent";
30
30
  export declare const CONSENT_ESSENTIAL = "essential";
31
31
  export declare const CONSENT_ANALYTICS = "analytics";
32
32
  export declare const CONSENT_MARKETING = "marketing";
33
+ /**
34
+ * Where an application persists an explicit interface-language choice — `@owlmeans/client-i18n`'s
35
+ * `owlmeans-lng`. The interface language is strictly necessary storage (the visitor asked for it by
36
+ * choosing it), so it is written whatever the cookie decision says and no category governs it.
37
+ * Repeated here rather than imported: this package has no runtime dependencies, and the linker's
38
+ * language part has to run in an inline `<head>` script, before any bundle exists.
39
+ */
40
+ export declare const CONSENT_LANGUAGE_KEY = "owlmeans-lng";
33
41
  export declare const CONSENT_LOCALES: readonly ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'];
34
42
  export type ConsentLocale = (typeof CONSENT_LOCALES)[number];
35
43
  /**
36
44
  * The categories every OwlMeans surface starts with.
37
45
  *
38
- * Three, matching what owlmeans.com already asks — plus the essential row, which the original
39
- * widget left implicit. Making it explicit is what lets a flow require an acknowledgement before
40
- * it sets a session cookie, and what tells a visitor what is being stored regardless.
46
+ * What owlmeans.com already asked (analytics, marketing) plus the essential row, which the original
47
+ * widget left implicit — making it explicit is what lets a flow require an acknowledgement before
48
+ * it sets a session cookie, and what tells a visitor what is being stored regardless: the consent
49
+ * record itself and the interface language the visitor picked.
41
50
  */
42
51
  export declare const DEFAULT_CONSENT_CATEGORIES: ConsentCategory[];
43
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAEhD,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAEtD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,qBAAqB,CAAA;AAE/C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAE5C,eAAO,MAAM,eAAe,YAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAExF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAAe,EAmBvD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAQxE,CAAA"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAEhD,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAEtD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,qBAAqB,CAAA;AAE/C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,iBAAiB,CAAA;AAElD,eAAO,MAAM,eAAe,YAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAExF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAAe,EAmBvD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAQxE,CAAA"}
package/build/consts.js CHANGED
@@ -29,13 +29,22 @@ export const CONSENT_EVENT = 'owlmeans:consent';
29
29
  export const CONSENT_ESSENTIAL = 'essential';
30
30
  export const CONSENT_ANALYTICS = 'analytics';
31
31
  export const CONSENT_MARKETING = 'marketing';
32
+ /**
33
+ * Where an application persists an explicit interface-language choice — `@owlmeans/client-i18n`'s
34
+ * `owlmeans-lng`. The interface language is strictly necessary storage (the visitor asked for it by
35
+ * choosing it), so it is written whatever the cookie decision says and no category governs it.
36
+ * Repeated here rather than imported: this package has no runtime dependencies, and the linker's
37
+ * language part has to run in an inline `<head>` script, before any bundle exists.
38
+ */
39
+ export const CONSENT_LANGUAGE_KEY = 'owlmeans-lng';
32
40
  export const CONSENT_LOCALES = ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'];
33
41
  /**
34
42
  * The categories every OwlMeans surface starts with.
35
43
  *
36
- * Three, matching what owlmeans.com already asks — plus the essential row, which the original
37
- * widget left implicit. Making it explicit is what lets a flow require an acknowledgement before
38
- * it sets a session cookie, and what tells a visitor what is being stored regardless.
44
+ * What owlmeans.com already asked (analytics, marketing) plus the essential row, which the original
45
+ * widget left implicit — making it explicit is what lets a flow require an acknowledgement before
46
+ * it sets a session cookie, and what tells a visitor what is being stored regardless: the consent
47
+ * record itself and the interface language the visitor picked.
39
48
  */
40
49
  export const DEFAULT_CONSENT_CATEGORIES = [
41
50
  {
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEvC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAIxF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D;QACE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI;QACtC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACvD;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,mBAAmB,CAAC;KAC/B;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,oBAAoB,CAAC;KAC9D;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAyC;IAC3E,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,kBAAkB,EAAE,QAAQ;IAC5B,iBAAiB,EAAE,QAAQ;IAC3B,qBAAqB,EAAE,QAAQ;IAC/B,uBAAuB,EAAE,QAAQ;IACjC,gBAAgB,EAAE,SAAS;CAC5B,CAAA"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEvC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAA;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAIxF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D;QACE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI;QACtC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACvD;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,mBAAmB,CAAC;KAC/B;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,oBAAoB,CAAC;KAC9D;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAyC;IAC3E,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,kBAAkB,EAAE,QAAQ;IAC5B,iBAAiB,EAAE,QAAQ;IAC3B,qBAAqB,EAAE,QAAQ;IAC/B,uBAAuB,EAAE,QAAQ;IACjC,gBAAgB,EAAE,SAAS;CAC5B,CAAA"}
@@ -2,7 +2,7 @@
2
2
  "title": "Налады файлаў cookie",
3
3
  "description": "Мы выкарыстоўваем файлы cookie, каб палепшыць ваш досвед прагляду, паказваць персаналізаваную рэкламу ці змесціва і аналізаваць наш трафік. Націскаючы «Прыняць усе», вы пагаджаецеся на выкарыстанне файлаў cookie.",
4
4
  "essential": "Неабходныя файлы cookie",
5
- "essentialDesc": "Патрэбныя для працы сайта — уваход, бяспека і захаванне гэтых налад. Іх нельга адключыць.",
5
+ "essentialDesc": "Патрэбныя для працы сайта — уваход, бяспека і захаванне вашага выбару адносна файлаў cookie і мовы інтэрфейсу. Іх нельга адключыць.",
6
6
  "analytics": "Аналітычныя файлы cookie",
7
7
  "analyticsDesc": "Дапамагаюць нам паляпшаць наш вэб-сайт, збіраючы і паведамляючы інфармацыю пра яго выкарыстанне.",
8
8
  "marketing": "Маркетынгавыя файлы cookie",
@@ -2,7 +2,7 @@
2
2
  "title": "Cookie-Einstellungen",
3
3
  "description": "Wir verwenden Cookies, um Ihr Surferlebnis zu verbessern, personalisierte Anzeigen oder Inhalte bereitzustellen und unseren Datenverkehr zu analysieren. Indem Sie auf „Alle akzeptieren\" klicken, stimmen Sie der Verwendung von Cookies zu.",
4
4
  "essential": "Notwendige Cookies",
5
- "essentialDesc": "Erforderlich, damit die Website funktioniert — Anmeldung, Sicherheit und das Speichern dieser Einstellungen. Sie lassen sich nicht abschalten.",
5
+ "essentialDesc": "Erforderlich, damit die Website funktioniert — Anmeldung, Sicherheit und das Speichern Ihrer Cookie-Auswahl und der Oberflächensprache. Sie lassen sich nicht abschalten.",
6
6
  "analytics": "Analyse-Cookies",
7
7
  "analyticsDesc": "Helfen uns, unsere Website zu verbessern, indem sie Informationen zur Nutzung sammeln und melden.",
8
8
  "marketing": "Marketing-Cookies",
@@ -2,7 +2,7 @@
2
2
  "title": "Cookie Preferences",
3
3
  "description": "We use cookies to enhance your browsing experience, serve personalized ads or content, and analyze our traffic. By clicking \"Accept All\", you consent to our use of cookies.",
4
4
  "essential": "Essential Cookies",
5
- "essentialDesc": "Required for the site to work — signing in, security and remembering these preferences. They cannot be switched off.",
5
+ "essentialDesc": "Required for the site to work — signing in, security, and remembering your cookie choices and interface language. They cannot be switched off.",
6
6
  "analytics": "Analytics Cookies",
7
7
  "analyticsDesc": "Help us improve our website by collecting and reporting information on its usage.",
8
8
  "marketing": "Marketing Cookies",
@@ -2,7 +2,7 @@
2
2
  "title": "Preferencias de cookies",
3
3
  "description": "Utilizamos cookies para mejorar tu experiencia de navegación, ofrecer anuncios o contenido personalizados y analizar nuestro tráfico. Al hacer clic en «Aceptar todo», aceptas nuestro uso de cookies.",
4
4
  "essential": "Cookies esenciales",
5
- "essentialDesc": "Necesarias para que el sitio funcione: inicio de sesión, seguridad y recordar estas preferencias. No se pueden desactivar.",
5
+ "essentialDesc": "Necesarias para que el sitio funcione: inicio de sesión, seguridad y recordar tus decisiones sobre cookies y el idioma de la interfaz. No se pueden desactivar.",
6
6
  "analytics": "Cookies analíticas",
7
7
  "analyticsDesc": "Nos ayudan a mejorar nuestro sitio web recopilando e informando sobre su uso.",
8
8
  "marketing": "Cookies de marketing",
@@ -2,7 +2,7 @@
2
2
  "title": "Préférences de cookies",
3
3
  "description": "Nous utilisons des cookies pour améliorer votre navigation, proposer des publicités ou contenus personnalisés et analyser notre trafic. En cliquant sur « Tout accepter », vous consentez à leur utilisation.",
4
4
  "essential": "Cookies essentiels",
5
- "essentialDesc": "Nécessaires au fonctionnement du site : connexion, sécurité et mémorisation de ces préférences. Ils ne peuvent pas être désactivés.",
5
+ "essentialDesc": "Nécessaires au fonctionnement du site : connexion, sécurité et mémorisation de vos choix en matière de cookies et de la langue de l'interface. Ils ne peuvent pas être désactivés.",
6
6
  "analytics": "Cookies analytiques",
7
7
  "analyticsDesc": "Nous aident à améliorer notre site en recueillant et en analysant des informations sur son utilisation.",
8
8
  "marketing": "Cookies marketing",
@@ -2,7 +2,7 @@
2
2
  "title": "Preferencje dotyczące plików cookie",
3
3
  "description": "Używamy plików cookie w celu ulepszenia Twojego doświadczenia podczas przeglądania, wyświetlania spersonalizowanych reklam lub treści oraz analizowania naszego ruchu. Klikając „Akceptuj wszystkie\", wyrażasz zgodę na używanie przez nas plików cookie.",
4
4
  "essential": "Niezbędne pliki cookie",
5
- "essentialDesc": "Wymagane do działania witryny — logowanie, bezpieczeństwo i zapamiętanie tych ustawień. Nie można ich wyłączyć.",
5
+ "essentialDesc": "Wymagane do działania witryny — logowanie, bezpieczeństwo oraz zapamiętanie Twoich wyborów dotyczących plików cookie i języka interfejsu. Nie można ich wyłączyć.",
6
6
  "analytics": "Analityczne pliki cookie",
7
7
  "analyticsDesc": "Pomagają nam ulepszać naszą witrynę internetową, zbierając i raportując informacje o jej użytkowaniu.",
8
8
  "marketing": "Marketingowe pliki cookie",
@@ -2,7 +2,7 @@
2
2
  "title": "Настройки файлов cookie",
3
3
  "description": "Мы используем файлы cookie, чтобы улучшить ваш опыт просмотра, показывать персонализированную рекламу или контент и анализировать наш трафик. Нажимая «Принять все», вы соглашаетесь на использование файлов cookie.",
4
4
  "essential": "Необходимые файлы cookie",
5
- "essentialDesc": "Нужны для работы сайта — вход, безопасность и сохранение этих настроек. Их нельзя отключить.",
5
+ "essentialDesc": "Нужны для работы сайта — вход, безопасность и сохранение вашего выбора по файлам cookie и языка интерфейса. Их нельзя отключить.",
6
6
  "analytics": "Аналитические файлы cookie",
7
7
  "analyticsDesc": "Помогают нам улучшать наш сайт, собирая и предоставляя информацию о его использовании.",
8
8
  "marketing": "Маркетинговые файлы cookie",
@@ -2,7 +2,7 @@
2
2
  "title": "Налаштування файлів cookie",
3
3
  "description": "Ми використовуємо файли cookie, щоб покращити ваш досвід перегляду, показувати персоналізовану рекламу чи вміст і аналізувати наш трафік. Натискаючи «Прийняти всі», ви погоджуєтеся на використання файлів cookie.",
4
4
  "essential": "Необхідні файли cookie",
5
- "essentialDesc": "Потрібні для роботи сайту — вхід, безпека та збереження цих налаштувань. Їх не можна вимкнути.",
5
+ "essentialDesc": "Потрібні для роботи сайту — вхід, безпека та збереження вашого вибору щодо файлів cookie і мови інтерфейсу. Їх не можна вимкнути.",
6
6
  "analytics": "Аналітичні файли cookie",
7
7
  "analyticsDesc": "Допомагають нам покращувати наш вебсайт, збираючи та надаючи інформацію про його використання.",
8
8
  "marketing": "Маркетингові файли cookie",
package/build/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export * from './gtm.js';
5
5
  export * from './store.js';
6
6
  export * from './i18n.js';
7
7
  export type { ConsentPlugin } from './plugins.js';
8
- export { registerConsentPlugin, consentPlugins, decorateConsentUrl, consentDomains, adoptConsent, startConsentPlugins, } from './plugins.js';
8
+ export { registerConsentPlugin, consentPlugins, decorateConsentUrl, consentDomains, adoptConsent, startConsentPlugins, adoptConsentLanguage, } from './plugins.js';
9
9
  export type { ConsentLinkPayload } from './linker.js';
10
- export { consentLinker, encodeConsentLink, decodeConsentLink, stripConsentLinkParam, consentLinkerScript, CONSENT_LINK_PARAM, CONSENT_LINK_MAX_AGE, CONSENT_LINK_SKEW, } from './linker.js';
10
+ export { consentLinker, encodeConsentLink, decodeConsentLink, stripConsentLinkParam, consentLinkerScript, writeConsentLanguage, CONSENT_LINK_PARAM, CONSENT_LINK_MAX_AGE, CONSENT_LINK_SKEW, } from './linker.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACL,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EACvF,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EACL,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAC/F,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,GAC5D,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACL,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EACvF,mBAAmB,EAAE,oBAAoB,GAC1C,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EACL,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAC/F,oBAAoB,EACpB,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,GAC5D,MAAM,aAAa,CAAA"}
package/build/index.js CHANGED
@@ -3,6 +3,6 @@ export * from './storage.js';
3
3
  export * from './gtm.js';
4
4
  export * from './store.js';
5
5
  export * from './i18n.js';
6
- export { registerConsentPlugin, consentPlugins, decorateConsentUrl, consentDomains, adoptConsent, startConsentPlugins, } from './plugins.js';
7
- export { consentLinker, encodeConsentLink, decodeConsentLink, stripConsentLinkParam, consentLinkerScript, CONSENT_LINK_PARAM, CONSENT_LINK_MAX_AGE, CONSENT_LINK_SKEW, } from './linker.js';
6
+ export { registerConsentPlugin, consentPlugins, decorateConsentUrl, consentDomains, adoptConsent, startConsentPlugins, adoptConsentLanguage, } from './plugins.js';
7
+ export { consentLinker, encodeConsentLink, decodeConsentLink, stripConsentLinkParam, consentLinkerScript, writeConsentLanguage, CONSENT_LINK_PARAM, CONSENT_LINK_MAX_AGE, CONSENT_LINK_SKEW, } from './linker.js';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AAEzB,OAAO,EACL,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EACvF,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAC/F,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,GAC5D,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AAEzB,OAAO,EACL,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EACvF,mBAAmB,EAAE,oBAAoB,GAC1C,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAC/F,oBAAoB,EACpB,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,GAC5D,MAAM,aAAa,CAAA"}
package/build/linker.d.ts CHANGED
@@ -14,11 +14,32 @@ export interface ConsentLinkPayload {
14
14
  c: Record<string, 0 | 1>;
15
15
  /** Unix seconds the link was decorated at. */
16
16
  t: number;
17
+ /**
18
+ * The interface language of the page the link was on (a BCP 47 tag, lower-cased) — present only
19
+ * when the sender has `linker.language` set and its `<html lang>` names one. Optional on the
20
+ * wire, so a receiver that predates it reads the same `v: 2` payload and ignores the field.
21
+ */
22
+ l?: string;
17
23
  }
18
- /** The current document's decision, as the link parameter's `c`: one `0`/`1` per optional category. */
19
- export declare const encodeConsentLink: (record: ConsentRecord, opts?: ConsentOptions) => string;
24
+ /**
25
+ * The link parameter's value: the current document's decision as `c` (one `0`/`1` per optional
26
+ * category — empty while `record` is `null`, i.e. before the visitor has decided) and, when
27
+ * `opts.linker.language` is set, the page's language as `l`.
28
+ */
29
+ export declare const encodeConsentLink: (record: ConsentRecord | null, opts?: ConsentOptions) => string;
20
30
  /** Parse-only — no trust decision here, that is `consentLinker(opts).adopt`'s job. Never throws. */
21
31
  export declare const decodeConsentLink: (value: string) => ConsentLinkPayload | null;
32
+ /**
33
+ * Persist an adopted language where the application's i18n layer reads its explicit choice from —
34
+ * `linker.language.storageKey`, `owlmeans-lng` by default. Unconditional: the interface language is
35
+ * strictly necessary storage (the visitor picked it, and the site cannot speak to them without it),
36
+ * so no cookie decision — none yet, a refusal, an old record — stands between it and the device.
37
+ *
38
+ * It overwrites what is there on purpose: the carried language is the one the visitor was reading a
39
+ * moment ago, which outranks a choice they made on this domain some other day. Storage that refuses
40
+ * the write is not an error. Returns whether the language was written.
41
+ */
42
+ export declare const writeConsentLanguage: (language: string, opts?: ConsentOptions) => boolean;
22
43
  /**
23
44
  * Cross-domain consent: share this decision, and adopt one, between the domains named in
24
45
  * `opts.linker.domains`.
@@ -1 +1 @@
1
- {"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,OAAO,KAAK,EAAmB,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEhF,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,UAAU,CAAA;AACzC,wGAAwG;AACxG,eAAO,MAAM,oBAAoB,MAAM,CAAA;AACvC,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,QAAA,MAAM,oBAAoB,IAAI,CAAA;AAE9B,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,OAAO,oBAAoB,CAAA;IAC9B,iFAAiF;IACjF,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACxB,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAA;CACV;AAwBD,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,WAAY,aAAa,SAAS,cAAc,KAAG,MAQhF,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,kBAAkB,GAAG,IAmBtE,CAAA;AAmBD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAO,aAgGhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAAU,cAAc,KAAG,IAgB5D,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,SAAU,cAAc,KAAG,MA6C1D,CAAA"}
1
+ {"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,OAAO,KAAK,EAAmB,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEhF,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,UAAU,CAAA;AACzC,wGAAwG;AACxG,eAAO,MAAM,oBAAoB,MAAM,CAAA;AACvC,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,QAAA,MAAM,oBAAoB,IAAI,CAAA;AAE9B,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,OAAO,oBAAoB,CAAA;IAC9B,iFAAiF;IACjF,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACxB,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAA;IACT;;;;OAIG;IACH,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAqCD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,WAAY,aAAa,GAAG,IAAI,SAAS,cAAc,KAAG,MAavF,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,kBAAkB,GAAG,IAuBtE,CAAA;AAyDD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,aAAc,MAAM,SAAS,cAAc,KAAG,OAS9E,CAAA;AAQD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAO,aA2FhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAAU,cAAc,KAAG,IAgB5D,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,SAAU,cAAc,KAAG,MA2D1D,CAAA"}
package/build/linker.js CHANGED
@@ -1,4 +1,4 @@
1
- import { CONSENT_COOKIE_DAYS, CONSENT_KEY, CONSENT_SCHEMA_VERSION, DEFAULT_CONSENT_CATEGORIES } from './consts.js';
1
+ import { CONSENT_COOKIE_DAYS, CONSENT_KEY, CONSENT_LANGUAGE_KEY, CONSENT_SCHEMA_VERSION, DEFAULT_CONSENT_CATEGORIES, } from './consts.js';
2
2
  import { decorateConsentUrl } from './plugins.js';
3
3
  import { readConsent } from './storage.js';
4
4
  /** The URL parameter a decorated link carries the decision in, absent an override. */
@@ -8,6 +8,8 @@ export const CONSENT_LINK_MAX_AGE = 300;
8
8
  /** Clock skew allowed the OTHER way — a timestamp up to this far in the future is still trusted. */
9
9
  export const CONSENT_LINK_SKEW = 60;
10
10
  const CONSENT_LINK_VERSION = 2;
11
+ /** A BCP 47-shaped tag: a 2–3 letter language and up to three subtags (`pl`, `pt-BR`, `zh-Hant-TW`). */
12
+ const LANGUAGE_TAG = /^[a-z]{2,3}(?:[-_][a-z0-9]{1,8}){0,3}$/i;
11
13
  const categoriesOf = (opts) => opts?.categories ?? DEFAULT_CONSENT_CATEGORIES;
12
14
  const optionalOf = (opts) => categoriesOf(opts).filter(category => category.required !== true);
13
15
  const toBase64Url = (json) => btoa(json).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
@@ -23,13 +25,30 @@ const fromBase64Url = (value) => {
23
25
  return null;
24
26
  }
25
27
  };
26
- /** The current document's decision, as the link parameter's `c`: one `0`/`1` per optional category. */
28
+ /** The language this document is written in — `<html lang>`, the one signal every page has. */
29
+ const documentLanguage = () => {
30
+ if (typeof document === 'undefined') {
31
+ return null;
32
+ }
33
+ const lang = document.documentElement?.lang?.trim() ?? '';
34
+ return LANGUAGE_TAG.test(lang) ? lang.toLowerCase() : null;
35
+ };
36
+ /**
37
+ * The link parameter's value: the current document's decision as `c` (one `0`/`1` per optional
38
+ * category — empty while `record` is `null`, i.e. before the visitor has decided) and, when
39
+ * `opts.linker.language` is set, the page's language as `l`.
40
+ */
27
41
  export const encodeConsentLink = (record, opts) => {
28
42
  const c = {};
29
- for (const category of optionalOf(opts)) {
30
- c[category.key] = record[category.key] === true ? 1 : 0;
43
+ if (record != null) {
44
+ for (const category of optionalOf(opts)) {
45
+ c[category.key] = record[category.key] === true ? 1 : 0;
46
+ }
31
47
  }
32
- const payload = { v: CONSENT_LINK_VERSION, c, t: Math.floor(Date.now() / 1000) };
48
+ const language = opts?.linker?.language != null ? documentLanguage() : null;
49
+ const payload = {
50
+ v: CONSENT_LINK_VERSION, c, t: Math.floor(Date.now() / 1000), ...(language != null ? { l: language } : {}),
51
+ };
33
52
  return toBase64Url(JSON.stringify(payload));
34
53
  };
35
54
  /** Parse-only — no trust decision here, that is `consentLinker(opts).adopt`'s job. Never throws. */
@@ -43,11 +62,15 @@ export const decodeConsentLink = (value) => {
43
62
  if (parsed == null || typeof parsed !== 'object') {
44
63
  return null;
45
64
  }
46
- const { v, c, t } = parsed;
65
+ const { v, c, t, l } = parsed;
47
66
  if (v !== CONSENT_LINK_VERSION || typeof t !== 'number' || c == null || typeof c !== 'object') {
48
67
  return null;
49
68
  }
50
- return { v: CONSENT_LINK_VERSION, c: c, t };
69
+ return {
70
+ v: CONSENT_LINK_VERSION, c: c, t,
71
+ // A malformed language is dropped, never a reason to refuse the decision beside it.
72
+ ...(typeof l === 'string' && LANGUAGE_TAG.test(l) ? { l: l.toLowerCase() } : {}),
73
+ };
51
74
  }
52
75
  catch {
53
76
  return null;
@@ -64,6 +87,66 @@ const referrerHostname = () => {
64
87
  return null;
65
88
  }
66
89
  };
90
+ /**
91
+ * The payload of the link this document was opened from, once it has passed every check that does
92
+ * not depend on WHAT it carries: the parameter decodes and its version matches, its timestamp is
93
+ * fresh (and not from the future beyond the allowed skew), and the request's referrer host is a
94
+ * LISTED domain — read from `document.referrer`, never from the parameter itself. `null` otherwise.
95
+ */
96
+ const trustedPayload = (opts) => {
97
+ const linker = opts.linker;
98
+ if (linker == null || typeof location === 'undefined') {
99
+ return null;
100
+ }
101
+ const raw = new URLSearchParams(location.search).get(linker.param ?? CONSENT_LINK_PARAM);
102
+ if (raw == null) {
103
+ return null;
104
+ }
105
+ const decoded = decodeConsentLink(raw);
106
+ if (decoded == null) {
107
+ return null;
108
+ }
109
+ const now = Math.floor(Date.now() / 1000);
110
+ const maxAge = linker.maxAge ?? CONSENT_LINK_MAX_AGE;
111
+ if (now - decoded.t > maxAge || decoded.t - now > CONSENT_LINK_SKEW) {
112
+ return null;
113
+ }
114
+ const referrer = referrerHostname();
115
+ if (referrer == null || !linker.domains.includes(referrer)) {
116
+ return null;
117
+ }
118
+ return decoded;
119
+ };
120
+ /** The entry of `supported` that `language` names — exactly, else by its base tag — or `null`. */
121
+ const supportedLanguage = (language, supported) => {
122
+ const wanted = language.toLowerCase();
123
+ const exact = supported.find(candidate => candidate.toLowerCase() === wanted);
124
+ if (exact != null) {
125
+ return exact;
126
+ }
127
+ const base = wanted.split(/[-_]/)[0];
128
+ return supported.find(candidate => candidate.toLowerCase() === base) ?? null;
129
+ };
130
+ /**
131
+ * Persist an adopted language where the application's i18n layer reads its explicit choice from —
132
+ * `linker.language.storageKey`, `owlmeans-lng` by default. Unconditional: the interface language is
133
+ * strictly necessary storage (the visitor picked it, and the site cannot speak to them without it),
134
+ * so no cookie decision — none yet, a refusal, an old record — stands between it and the device.
135
+ *
136
+ * It overwrites what is there on purpose: the carried language is the one the visitor was reading a
137
+ * moment ago, which outranks a choice they made on this domain some other day. Storage that refuses
138
+ * the write is not an error. Returns whether the language was written.
139
+ */
140
+ export const writeConsentLanguage = (language, opts) => {
141
+ try {
142
+ localStorage.setItem(opts?.linker?.language?.storageKey ?? CONSENT_LANGUAGE_KEY, language);
143
+ return true;
144
+ }
145
+ catch {
146
+ // Private modes and blocked storage both throw; the app simply keeps choosing its own language.
147
+ return false;
148
+ }
149
+ };
67
150
  /** Escape `<` inside a JSON literal meant for an inline `<script>` — the same discipline every
68
151
  * caller of `consentBootstrapScript`/`consentGateScript` already owes the HTML it lands in, applied
69
152
  * here at the source since this fragment's dynamic values (a configured domain, a storage key) are
@@ -99,8 +182,9 @@ export const consentLinker = () => {
99
182
  if (/\bnoreferrer\b/.test(anchor.getAttribute('rel') ?? '')) {
100
183
  return;
101
184
  }
185
+ // No decision yet is still worth a decoration when a language rides along with it.
102
186
  const record = readConsent(opts);
103
- if (record == null) {
187
+ if (record == null && opts.linker?.language == null) {
104
188
  return;
105
189
  }
106
190
  let url;
@@ -128,32 +212,19 @@ export const consentLinker = () => {
128
212
  if (linker == null || url.hostname === host || !linker.domains.includes(url.hostname)) {
129
213
  return null;
130
214
  }
215
+ // A link carries a decision, a language, or both; with neither there is nothing to say.
216
+ if (record == null && (linker.language == null || documentLanguage() == null)) {
217
+ return null;
218
+ }
131
219
  const next = new URL(url.toString());
132
220
  next.searchParams.set(linker.param ?? CONSENT_LINK_PARAM, encodeConsentLink(record, opts));
133
221
  return next;
134
222
  },
135
223
  adopt: opts => {
136
- const linker = opts.linker;
137
- if (linker == null || typeof location === 'undefined') {
138
- return null;
139
- }
140
- const raw = new URLSearchParams(location.search).get(linker.param ?? CONSENT_LINK_PARAM);
141
- if (raw == null) {
142
- return null;
143
- }
144
- const decoded = decodeConsentLink(raw);
224
+ const decoded = trustedPayload(opts);
145
225
  if (decoded == null) {
146
226
  return null;
147
227
  }
148
- const now = Math.floor(Date.now() / 1000);
149
- const maxAge = linker.maxAge ?? CONSENT_LINK_MAX_AGE;
150
- if (now - decoded.t > maxAge || decoded.t - now > CONSENT_LINK_SKEW) {
151
- return null;
152
- }
153
- const referrer = referrerHostname();
154
- if (referrer == null || !linker.domains.includes(referrer)) {
155
- return null;
156
- }
157
228
  const optional = optionalOf(opts);
158
229
  if (!optional.every(category => decoded.c[category.key] === 0 || decoded.c[category.key] === 1)) {
159
230
  return null;
@@ -164,6 +235,11 @@ export const consentLinker = () => {
164
235
  }
165
236
  return record;
166
237
  },
238
+ adoptLanguage: opts => {
239
+ const supported = opts.linker?.language?.supported;
240
+ const decoded = supported != null ? trustedPayload(opts) : null;
241
+ return decoded?.l != null && supported != null ? supportedLanguage(decoded.l, supported) : null;
242
+ },
167
243
  domains: opts => opts.linker?.domains ?? [],
168
244
  };
169
245
  };
@@ -220,6 +296,16 @@ export const consentLinkerScript = (opts) => {
220
296
  const skew = CONSENT_LINK_SKEW;
221
297
  const cookieDays = opts.cookieDays ?? CONSENT_COOKIE_DAYS;
222
298
  const version = CONSENT_LINK_VERSION;
299
+ // The language rides the same trust decision and is written unconditionally — it is strictly
300
+ // necessary storage, whatever the cookie decision is. Mirrors `supportedLanguage` +
301
+ // `writeConsentLanguage`; empty for a page that does not receive a language.
302
+ const language = linker.language?.supported != null
303
+ ? `var L=${jsonForScript(linker.language.supported)};` +
304
+ `if(typeof j.l==='string'){var lc=j.l.toLowerCase(),lm=null,q;` +
305
+ `for(q=0;q<L.length;q++){if(String(L[q]).toLowerCase()===lc){lm=L[q];break}}` +
306
+ `if(!lm){lc=lc.split(/[-_]/)[0];for(q=0;q<L.length;q++){if(String(L[q]).toLowerCase()===lc){lm=L[q];break}}}` +
307
+ `if(lm){try{w.localStorage.setItem(${jsonForScript(linker.language.storageKey ?? CONSENT_LANGUAGE_KEY)},lm)}catch(e){}}}`
308
+ : '';
223
309
  return `(function(w,d){` +
224
310
  `var p=${param};var qs;try{qs=new URLSearchParams(location.search)}catch(e){return}` +
225
311
  `var raw=qs.get(p);if(raw==null)return;` +
@@ -234,18 +320,22 @@ export const consentLinkerScript = (opts) => {
234
320
  `if(now-j.t>${maxAge}||j.t-now>${skew})return;` +
235
321
  `var ref=null;try{ref=new URL(d.referrer).hostname}catch(e){}` +
236
322
  `if(!ref||${domains}.indexOf(ref)<0)return;` +
237
- `var keys=${optionalKeys};` +
238
- `for(var i=0;i<keys.length;i++){if(j.c[keys[i]]!==0&&j.c[keys[i]]!==1)return}` +
239
323
  `var existing=null;try{existing=w.localStorage.getItem(${storageKey})}catch(e){}` +
240
324
  `if(!existing){var cp=('; '+d.cookie).split('; '+${storageKey}+'=');` +
241
325
  `if(cp.length===2)existing=cp.pop().split(';').shift()}` +
242
- `if(existing)return;` +
326
+ `if(!existing){` +
327
+ `var keys=${optionalKeys},ok=true;` +
328
+ `for(var i=0;i<keys.length;i++){if(j.c[keys[i]]!==0&&j.c[keys[i]]!==1){ok=false;break}}` +
329
+ `if(ok){` +
243
330
  `var cats=${allCategories},rec={v:${version}};` +
244
331
  `for(var k=0;k<cats.length;k++){var c=cats[k];rec[c.key]=c.required||j.c[c.key]===1}` +
245
332
  `var val=JSON.stringify(rec);` +
246
333
  `try{w.localStorage.setItem(${storageKey},val)}catch(e){}` +
247
334
  `var exp=new Date(Date.now()+${cookieDays}*86400000).toUTCString();` +
248
335
  `d.cookie=${storageKey}+'='+val+';expires='+exp+';path=/;SameSite=Lax'` +
336
+ `}` +
337
+ `}` +
338
+ language +
249
339
  `}catch(e){}` +
250
340
  `})(window,document)`;
251
341
  };
@@ -1 +1 @@
1
- {"version":3,"file":"linker.js","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linker.js","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"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"}
@@ -24,10 +24,19 @@ export interface ConsentPlugin {
24
24
  */
25
25
  adopt?: (opts: ConsentOptions) => ConsentRecord | null;
26
26
  /**
27
- * Rewrite an outgoing URL to carry this document's current decision, or `null` to leave it
28
- * untouched (a foreign host, a link that opts out, nothing to carry yet).
27
+ * Offer an interface language from outside this document's own storage — e.g. the one the page
28
+ * that led here was read in. Returns a language the application supports, or `null` to keep
29
+ * choosing its own. Only a CANDIDATE: it says what the link carried, and `writeConsentLanguage`
30
+ * stores it — unconditionally, since the interface language is strictly necessary storage.
29
31
  */
30
- decorate?: (url: URL, record: ConsentRecord, opts: ConsentOptions) => URL | null;
32
+ adoptLanguage?: (opts: ConsentOptions) => string | null;
33
+ /**
34
+ * Rewrite an outgoing URL to carry this document's current decision — and its language — or
35
+ * `null` to leave it untouched (a foreign host, a link that opts out, nothing to carry yet).
36
+ * `record` is `null` while the visitor has not decided: a plugin that also carries something
37
+ * else (the language) still has a reason to decorate then.
38
+ */
39
+ decorate?: (url: URL, record: ConsentRecord | null, opts: ConsentOptions) => URL | null;
31
40
  /** Extra domains this decision is understood to apply to, for disclosure — never deduplicated here. */
32
41
  domains?: (opts: ConsentOptions) => string[];
33
42
  }
@@ -40,7 +49,7 @@ export declare const consentPlugins: () => ConsentPlugin[];
40
49
  * stopping at the first one that actually changes it. A plugin whose own rules refuse (a foreign
41
50
  * host, a `noreferrer` link, no local decision yet) returns `null` and is skipped, not an error.
42
51
  */
43
- export declare const decorateConsentUrl: (url: string | URL, record: ConsentRecord, opts: ConsentOptions) => URL;
52
+ export declare const decorateConsentUrl: (url: string | URL, record: ConsentRecord | null, opts: ConsentOptions) => URL;
44
53
  /**
45
54
  * Every domain this document's decision is disclosed to, current host first, deduplicated — what a
46
55
  * dialog or a policy page lists. A plugin that runs on this host but names no domains of its own
@@ -50,6 +59,13 @@ export declare const decorateConsentUrl: (url: string | URL, record: ConsentReco
50
59
  export declare const consentDomains: (opts: ConsentOptions) => string[];
51
60
  /** Try every registered plugin's `adopt`, in priority order, and use the first decision offered. */
52
61
  export declare const adoptConsent: (opts: ConsentOptions) => ConsentRecord | null;
62
+ /**
63
+ * Try every registered plugin's `adoptLanguage`, in priority order, and use the first language
64
+ * offered. The caller persists it (`writeConsentLanguage`) — and has to do that BEFORE its i18n
65
+ * layer reads storage, which is why the inline `<head>` fragment (`consentLinkerScript`) is the
66
+ * one that normally does.
67
+ */
68
+ export declare const adoptConsentLanguage: (opts: ConsentOptions) => string | null;
53
69
  /** Run every registered plugin's `start`, in priority order. `consentStore.init` calls this once. */
54
70
  export declare const startConsentPlugins: (opts: ConsentOptions) => void;
55
71
  //# sourceMappingURL=plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,GAAG,IAAI,CAAA;IACtD;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,KAAK,GAAG,GAAG,IAAI,CAAA;IAChF,uGAAuG;IACvG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,EAAE,CAAA;CAC7C;AASD,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,WAAY,aAAa,KAAG,IAE7D,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QAAO,aAAa,EAC8B,CAAA;AAE7E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QACxB,MAAM,GAAG,GAAG,UAAU,aAAa,QAAQ,cAAc,KAC7D,GAaF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAU,cAAc,KAAG,MAAM,EAK3D,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,YAAY,SAAU,cAAc,KAAG,aAAa,GAAG,IASnE,CAAA;AAED,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,SAAU,cAAc,KAAG,IAI1D,CAAA"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,GAAG,IAAI,CAAA;IACtD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAA;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,KAAK,GAAG,GAAG,IAAI,CAAA;IACvF,uGAAuG;IACvG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,EAAE,CAAA;CAC7C;AASD,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,WAAY,aAAa,KAAG,IAE7D,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QAAO,aAAa,EAC8B,CAAA;AAE7E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QACxB,MAAM,GAAG,GAAG,UAAU,aAAa,GAAG,IAAI,QAAQ,cAAc,KACpE,GAaF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAU,cAAc,KAAG,MAAM,EAK3D,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,YAAY,SAAU,cAAc,KAAG,aAAa,GAAG,IASnE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,SAAU,cAAc,KAAG,MAAM,GAAG,IASpE,CAAA;AAED,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,SAAU,cAAc,KAAG,IAI1D,CAAA"}
package/build/plugins.js CHANGED
@@ -49,6 +49,21 @@ export const adoptConsent = (opts) => {
49
49
  }
50
50
  return null;
51
51
  };
52
+ /**
53
+ * Try every registered plugin's `adoptLanguage`, in priority order, and use the first language
54
+ * offered. The caller persists it (`writeConsentLanguage`) — and has to do that BEFORE its i18n
55
+ * layer reads storage, which is why the inline `<head>` fragment (`consentLinkerScript`) is the
56
+ * one that normally does.
57
+ */
58
+ export const adoptConsentLanguage = (opts) => {
59
+ for (const plugin of consentPlugins()) {
60
+ const adopted = plugin.adoptLanguage?.(opts);
61
+ if (adopted != null) {
62
+ return adopted;
63
+ }
64
+ }
65
+ return null;
66
+ };
52
67
  /** Run every registered plugin's `start`, in priority order. `consentStore.init` calls this once. */
53
68
  export const startConsentPlugins = (opts) => {
54
69
  for (const plugin of consentPlugins()) {
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAmCA;;;;GAIG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAA;AAEhD,4FAA4F;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAqB,EAAQ,EAAE;IACnE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,GAAoB,EAAE,CAClD,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAiB,EAAE,MAAqB,EAAE,IAAoB,EACzD,EAAE;IACP,IAAI,MAAM,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACpD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC5B,SAAQ;QACV,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACvD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,GAAG,SAAS,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAoB,EAAY,EAAE;IAC/D,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAE9E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,oGAAoG;AACpG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAwB,EAAE;IACzE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,qGAAqG;AACrG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAQ,EAAE;IAChE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}