@owlmeans/consent 0.1.18-rc.6 → 0.1.18-rc.8
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 +26 -3
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +35 -3
- package/build/consts.js.map +1 -1
- package/build/functional.d.ts +35 -0
- package/build/functional.d.ts.map +1 -0
- package/build/functional.js +67 -0
- package/build/functional.js.map +1 -0
- package/build/gtm.d.ts.map +1 -1
- package/build/gtm.js +8 -0
- package/build/gtm.js.map +1 -1
- package/build/i18n/be.json +5 -1
- package/build/i18n/de.json +5 -1
- package/build/i18n/en.json +5 -1
- package/build/i18n/es.json +5 -1
- package/build/i18n/fr.json +5 -1
- package/build/i18n/pl.json +5 -1
- package/build/i18n/ru.json +5 -1
- package/build/i18n/uk.json +5 -1
- package/build/index.d.ts +5 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +3 -0
- package/build/index.js.map +1 -1
- package/build/linker.d.ts +80 -0
- package/build/linker.d.ts.map +1 -0
- package/build/linker.js +357 -0
- package/build/linker.js.map +1 -0
- package/build/plugins.d.ts +72 -0
- package/build/plugins.d.ts.map +1 -0
- package/build/plugins.js +74 -0
- package/build/plugins.js.map +1 -0
- package/build/store.d.ts.map +1 -1
- package/build/store.js +67 -2
- package/build/store.js.map +1 -1
- package/build/types.d.ts +56 -0
- package/build/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +38 -3
- package/src/functional.ts +73 -0
- package/src/gtm.ts +8 -0
- package/src/i18n/be.json +5 -1
- package/src/i18n/de.json +5 -1
- package/src/i18n/en.json +5 -1
- package/src/i18n/es.json +5 -1
- package/src/i18n/fr.json +5 -1
- package/src/i18n/pl.json +5 -1
- package/src/i18n/ru.json +5 -1
- package/src/i18n/uk.json +5 -1
- package/src/index.ts +12 -0
- package/src/linker.ts +413 -0
- package/src/plugins.ts +131 -0
- package/src/store.ts +75 -2
- package/src/types.ts +58 -0
- package/tests/linker.spec.ts +939 -0
package/build/consts.d.ts
CHANGED
|
@@ -28,16 +28,39 @@ export declare const CONSENT_SETUP_FLAG = "cookieConsentSetup";
|
|
|
28
28
|
*/
|
|
29
29
|
export declare const CONSENT_EVENT = "owlmeans:consent";
|
|
30
30
|
export declare const CONSENT_ESSENTIAL = "essential";
|
|
31
|
+
export declare const CONSENT_FUNCTIONAL = "functional";
|
|
31
32
|
export declare const CONSENT_ANALYTICS = "analytics";
|
|
32
33
|
export declare const CONSENT_MARKETING = "marketing";
|
|
34
|
+
/**
|
|
35
|
+
* The DOM event the store dispatches on `window` when a language that arrived with a link (or an
|
|
36
|
+
* explicit choice made before the visitor answered the dialog) has just become storable — the
|
|
37
|
+
* visitor granted functional storage — so the application can switch to it now instead of at the
|
|
38
|
+
* next load. `detail: { language }`. An application that resolves its language from storage at
|
|
39
|
+
* start-up (`@owlmeans/client-i18n`) listens for it.
|
|
40
|
+
*/
|
|
41
|
+
export declare const CONSENT_LANGUAGE_EVENT = "owlmeans:language";
|
|
42
|
+
/**
|
|
43
|
+
* The `window` property the inline `<head>` fragment leaves a carried language on when it may not
|
|
44
|
+
* store it yet (no decision, or functional not granted): memory only, never storage. The store
|
|
45
|
+
* picks it up at `init` and writes it if — and only if — the visitor later grants functional storage
|
|
46
|
+
* in this page's life. Fixed for the same reason `CONSENT_SETUP_FLAG` is: two bundles, one page.
|
|
47
|
+
*/
|
|
48
|
+
export declare const CONSENT_PENDING_LANGUAGE = "cookieConsentPendingLanguage";
|
|
49
|
+
/**
|
|
50
|
+
* Where an application persists an explicit interface-language choice — `@owlmeans/client-i18n`'s
|
|
51
|
+
* `owlmeans-lng`. Repeated here rather than imported: this package has no runtime dependencies, and
|
|
52
|
+
* the linker's language part has to run in an inline `<head>` script, before any bundle exists.
|
|
53
|
+
*/
|
|
54
|
+
export declare const CONSENT_LANGUAGE_KEY = "owlmeans-lng";
|
|
33
55
|
export declare const CONSENT_LOCALES: readonly ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'];
|
|
34
56
|
export type ConsentLocale = (typeof CONSENT_LOCALES)[number];
|
|
35
57
|
/**
|
|
36
58
|
* The categories every OwlMeans surface starts with.
|
|
37
59
|
*
|
|
38
|
-
*
|
|
39
|
-
* widget left implicit
|
|
40
|
-
* it sets a session cookie, and what tells a visitor what is being stored regardless
|
|
60
|
+
* What owlmeans.com already asked (analytics, marketing) plus the essential row, which the original
|
|
61
|
+
* widget left implicit — making it explicit is what lets a flow require an acknowledgement before
|
|
62
|
+
* it sets a session cookie, and what tells a visitor what is being stored regardless — plus
|
|
63
|
+
* functional, the visitor's own remembered preferences.
|
|
41
64
|
*/
|
|
42
65
|
export declare const DEFAULT_CONSENT_CATEGORIES: ConsentCategory[];
|
|
43
66
|
/**
|
package/build/consts.d.ts.map
CHANGED
|
@@ -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
|
|
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,kBAAkB,eAAe,CAAA;AAC9C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,iCAAiC,CAAA;AAEtE;;;;GAIG;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,EA4BvD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAQxE,CAAA"}
|
package/build/consts.js
CHANGED
|
@@ -27,15 +27,38 @@ export const CONSENT_SETUP_FLAG = 'cookieConsentSetup';
|
|
|
27
27
|
*/
|
|
28
28
|
export const CONSENT_EVENT = 'owlmeans:consent';
|
|
29
29
|
export const CONSENT_ESSENTIAL = 'essential';
|
|
30
|
+
export const CONSENT_FUNCTIONAL = 'functional';
|
|
30
31
|
export const CONSENT_ANALYTICS = 'analytics';
|
|
31
32
|
export const CONSENT_MARKETING = 'marketing';
|
|
33
|
+
/**
|
|
34
|
+
* The DOM event the store dispatches on `window` when a language that arrived with a link (or an
|
|
35
|
+
* explicit choice made before the visitor answered the dialog) has just become storable — the
|
|
36
|
+
* visitor granted functional storage — so the application can switch to it now instead of at the
|
|
37
|
+
* next load. `detail: { language }`. An application that resolves its language from storage at
|
|
38
|
+
* start-up (`@owlmeans/client-i18n`) listens for it.
|
|
39
|
+
*/
|
|
40
|
+
export const CONSENT_LANGUAGE_EVENT = 'owlmeans:language';
|
|
41
|
+
/**
|
|
42
|
+
* The `window` property the inline `<head>` fragment leaves a carried language on when it may not
|
|
43
|
+
* store it yet (no decision, or functional not granted): memory only, never storage. The store
|
|
44
|
+
* picks it up at `init` and writes it if — and only if — the visitor later grants functional storage
|
|
45
|
+
* in this page's life. Fixed for the same reason `CONSENT_SETUP_FLAG` is: two bundles, one page.
|
|
46
|
+
*/
|
|
47
|
+
export const CONSENT_PENDING_LANGUAGE = 'cookieConsentPendingLanguage';
|
|
48
|
+
/**
|
|
49
|
+
* Where an application persists an explicit interface-language choice — `@owlmeans/client-i18n`'s
|
|
50
|
+
* `owlmeans-lng`. Repeated here rather than imported: this package has no runtime dependencies, and
|
|
51
|
+
* the linker's language part has to run in an inline `<head>` script, before any bundle exists.
|
|
52
|
+
*/
|
|
53
|
+
export const CONSENT_LANGUAGE_KEY = 'owlmeans-lng';
|
|
32
54
|
export const CONSENT_LOCALES = ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'];
|
|
33
55
|
/**
|
|
34
56
|
* The categories every OwlMeans surface starts with.
|
|
35
57
|
*
|
|
36
|
-
*
|
|
37
|
-
* widget left implicit
|
|
38
|
-
* it sets a session cookie, and what tells a visitor what is being stored regardless
|
|
58
|
+
* What owlmeans.com already asked (analytics, marketing) plus the essential row, which the original
|
|
59
|
+
* widget left implicit — making it explicit is what lets a flow require an acknowledgement before
|
|
60
|
+
* it sets a session cookie, and what tells a visitor what is being stored regardless — plus
|
|
61
|
+
* functional, the visitor's own remembered preferences.
|
|
39
62
|
*/
|
|
40
63
|
export const DEFAULT_CONSENT_CATEGORIES = [
|
|
41
64
|
{
|
|
@@ -44,6 +67,15 @@ export const DEFAULT_CONSENT_CATEGORIES = [
|
|
|
44
67
|
globalVar: 'owlConsentEssential',
|
|
45
68
|
signals: ['security_storage', 'functionality_storage'],
|
|
46
69
|
},
|
|
70
|
+
// A preference the visitor set — today the interface language — remembered on their device. Not
|
|
71
|
+
// essential (nothing breaks without it) and not tracking, so it drives NO Consent Mode signal:
|
|
72
|
+
// a signal would make `trackingGranted` count it, and a visitor who only allowed their language
|
|
73
|
+
// to be remembered would load the tag container.
|
|
74
|
+
{
|
|
75
|
+
key: CONSENT_FUNCTIONAL,
|
|
76
|
+
labelKey: 'functional', descriptionKey: 'functionalDesc',
|
|
77
|
+
globalVar: 'owlConsentFunctional',
|
|
78
|
+
},
|
|
47
79
|
{
|
|
48
80
|
key: CONSENT_ANALYTICS,
|
|
49
81
|
labelKey: 'analytics', descriptionKey: 'analyticsDesc',
|
package/build/consts.js.map
CHANGED
|
@@ -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
|
|
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,kBAAkB,GAAG,YAAY,CAAA;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAA;AAEtE;;;;GAIG;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,gGAAgG;IAChG,+FAA+F;IAC/F,gGAAgG;IAChG,iDAAiD;IACjD;QACE,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB;QACxD,SAAS,EAAE,sBAAsB;KAClC;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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ConsentOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Whether this document's visitor has granted functional storage — a preference they set, such as
|
|
4
|
+
* the interface language, may be remembered on their device.
|
|
5
|
+
*
|
|
6
|
+
* Read from the stored record every time rather than from the store's state, so it is correct
|
|
7
|
+
* before `consentStore.init` has run: the language resolves at start-up, ahead of any component.
|
|
8
|
+
* A record with no `functional` key (one saved before the category existed) is NOT a grant — the
|
|
9
|
+
* visitor was never asked, and a preference is not remembered on a device nobody asked about.
|
|
10
|
+
*/
|
|
11
|
+
export declare const functionalGranted: (opts?: ConsentOptions) => boolean;
|
|
12
|
+
/** Every `localStorage` key that may hold a functional preference for these options. */
|
|
13
|
+
export declare const functionalKeysOf: (opts?: ConsentOptions) => string[];
|
|
14
|
+
/**
|
|
15
|
+
* Remove every functional preference this application keeps. Called whenever functional is not
|
|
16
|
+
* granted — a refusal, a withdrawal, or a record that never answered — because a preference that
|
|
17
|
+
* outlives the consent to remember it is exactly the storage the visitor did not agree to.
|
|
18
|
+
*/
|
|
19
|
+
export declare const purgeFunctionalStorage: (opts?: ConsentOptions) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Remember a functional preference — but only while `functional` is granted. Returns whether it was
|
|
22
|
+
* written. The gate lives here so a caller cannot forget it; an application that is asked to store
|
|
23
|
+
* something functional calls this instead of `localStorage.setItem`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const writeFunctionalPreference: (key: string, value: string, opts?: ConsentOptions) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* An inline `<head>` fragment that defines `window.owlConsentAllows(category)` — whether the stored
|
|
28
|
+
* decision grants that category — for the scripts of a page that has no bundle yet: a site that
|
|
29
|
+
* remembers the visitor's language choice from a plain inline script (owlmeans.com's language
|
|
30
|
+
* switcher) asks it before it writes anything. Reads the same localStorage-then-cookie pair
|
|
31
|
+
* `readConsent` does, and answers `false` for anything it cannot read or parse — no answer is not a
|
|
32
|
+
* grant. Stamp it before the scripts that call it.
|
|
33
|
+
*/
|
|
34
|
+
export declare const consentAllowsScript: (opts?: ConsentOptions) => string;
|
|
35
|
+
//# sourceMappingURL=functional.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functional.d.ts","sourceRoot":"","sources":["../src/functional.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,UAAW,cAAc,KAAG,OACR,CAAA;AAElD,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,UAAW,cAAc,KAAG,MAAM,EAK9D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAW,cAAc,KAAG,IAM9D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAS,MAAM,SAAS,MAAM,SAAS,cAAc,KAAG,OAW7F,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAAW,cAAc,KAAG,MAS3D,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { CONSENT_FUNCTIONAL, CONSENT_KEY, CONSENT_LANGUAGE_KEY } from './consts.js';
|
|
2
|
+
import { readConsent } from './storage.js';
|
|
3
|
+
/**
|
|
4
|
+
* Whether this document's visitor has granted functional storage — a preference they set, such as
|
|
5
|
+
* the interface language, may be remembered on their device.
|
|
6
|
+
*
|
|
7
|
+
* Read from the stored record every time rather than from the store's state, so it is correct
|
|
8
|
+
* before `consentStore.init` has run: the language resolves at start-up, ahead of any component.
|
|
9
|
+
* A record with no `functional` key (one saved before the category existed) is NOT a grant — the
|
|
10
|
+
* visitor was never asked, and a preference is not remembered on a device nobody asked about.
|
|
11
|
+
*/
|
|
12
|
+
export const functionalGranted = (opts) => readConsent(opts)?.[CONSENT_FUNCTIONAL] === true;
|
|
13
|
+
/** Every `localStorage` key that may hold a functional preference for these options. */
|
|
14
|
+
export const functionalKeysOf = (opts) => [
|
|
15
|
+
...new Set([
|
|
16
|
+
...(opts?.functionalKeys ?? [CONSENT_LANGUAGE_KEY]),
|
|
17
|
+
...(opts?.linker?.language?.storageKey != null ? [opts.linker.language.storageKey] : []),
|
|
18
|
+
]),
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Remove every functional preference this application keeps. Called whenever functional is not
|
|
22
|
+
* granted — a refusal, a withdrawal, or a record that never answered — because a preference that
|
|
23
|
+
* outlives the consent to remember it is exactly the storage the visitor did not agree to.
|
|
24
|
+
*/
|
|
25
|
+
export const purgeFunctionalStorage = (opts) => {
|
|
26
|
+
for (const key of functionalKeysOf(opts)) {
|
|
27
|
+
try {
|
|
28
|
+
localStorage.removeItem(key);
|
|
29
|
+
}
|
|
30
|
+
catch { /* storage blocked: nothing was written there to remove */ }
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Remember a functional preference — but only while `functional` is granted. Returns whether it was
|
|
35
|
+
* written. The gate lives here so a caller cannot forget it; an application that is asked to store
|
|
36
|
+
* something functional calls this instead of `localStorage.setItem`.
|
|
37
|
+
*/
|
|
38
|
+
export const writeFunctionalPreference = (key, value, opts) => {
|
|
39
|
+
if (!functionalGranted(opts)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
localStorage.setItem(key, value);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* An inline `<head>` fragment that defines `window.owlConsentAllows(category)` — whether the stored
|
|
52
|
+
* decision grants that category — for the scripts of a page that has no bundle yet: a site that
|
|
53
|
+
* remembers the visitor's language choice from a plain inline script (owlmeans.com's language
|
|
54
|
+
* switcher) asks it before it writes anything. Reads the same localStorage-then-cookie pair
|
|
55
|
+
* `readConsent` does, and answers `false` for anything it cannot read or parse — no answer is not a
|
|
56
|
+
* grant. Stamp it before the scripts that call it.
|
|
57
|
+
*/
|
|
58
|
+
export const consentAllowsScript = (opts) => {
|
|
59
|
+
const key = JSON.stringify(opts?.storageKey ?? CONSENT_KEY).replace(/</g, '\\u003c');
|
|
60
|
+
return `(function(w,d){w.owlConsentAllows=function(k){` +
|
|
61
|
+
`var raw=null;try{raw=w.localStorage.getItem(${key})}catch(e){}` +
|
|
62
|
+
`if(!raw){var p=('; '+d.cookie).split('; '+${key}+'=');if(p.length===2)raw=p.pop().split(';').shift()}` +
|
|
63
|
+
`if(!raw)return false;` +
|
|
64
|
+
`try{var r=JSON.parse(raw);return !!r&&typeof r==='object'&&r[k]===true}catch(e){return false}}` +
|
|
65
|
+
`})(window,document)`;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=functional.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functional.js","sourceRoot":"","sources":["../src/functional.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAW,EAAE,CAClE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAA;AAElD,wFAAwF;AACxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAqB,EAAY,EAAE,CAAC;IACnE,GAAG,IAAI,GAAG,CAAC;QACT,GAAG,CAAC,IAAI,EAAE,cAAc,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;CACH,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAqB,EAAQ,EAAE;IACpE,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;IACxE,CAAC;AACH,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,IAAqB,EAAW,EAAE;IACtG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAEhC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAqB,EAAU,EAAE;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAEpF,OAAO,gDAAgD;QACrD,+CAA+C,GAAG,cAAc;QAChE,6CAA6C,GAAG,uDAAuD;QACvG,uBAAuB;QACvB,gGAAgG;QAClG,qBAAqB,CAAA;AACvB,CAAC,CAAA"}
|
package/build/gtm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtm.d.ts","sourceRoot":"","sources":["../src/gtm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gtm.d.ts","sourceRoot":"","sources":["../src/gtm.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAUhF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAUrD;AAKD,8EAA8E;AAC9E,eAAO,MAAM,eAAe,gBACb,eAAe,EAAE,KAC7B,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAMrC,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,aAAa,WAChB,aAAa,eAAe,eAAe,EAAE,KACpD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAWrC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,cAAc,KAAG,IAO3D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,WAAY,aAAa,SAAS,cAAc,KAAG,IA6B3E,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,WAClB,aAAa,GAAG,IAAI,eAAc,eAAe,EAAE,KAC1D,OAEF,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,UAAW,cAAc,KAAG,MA+B9D,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,eAChB,MAAM,SAAS,cAAc,GAAG;IAAE,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,KAC7E,MAuBF,CAAA"}
|
package/build/gtm.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CONSENT_EVENT, CONSENT_KEY, CONSENT_SETUP_FLAG, CONSENT_SIGNAL_DEFAULTS, DEFAULT_CONSENT_CATEGORIES, } from './consts.js';
|
|
2
|
+
import { consentLinkerScript } from './linker.js';
|
|
2
3
|
const global = () => typeof window !== 'undefined' ? window : null;
|
|
3
4
|
/**
|
|
4
5
|
* Push onto the tag-manager queue in the shape Google's own snippet uses.
|
|
@@ -114,9 +115,16 @@ export const consentBootstrapScript = (opts) => {
|
|
|
114
115
|
})));
|
|
115
116
|
const storageKey = JSON.stringify(opts?.storageKey ?? CONSENT_KEY);
|
|
116
117
|
const flag = JSON.stringify(CONSENT_SETUP_FLAG);
|
|
118
|
+
// Right after the default is pushed and before EITHER storage read below (this one, and the
|
|
119
|
+
// `consentGateScript` that is concatenated after this whole IIFE) — an adopted decision must
|
|
120
|
+
// already be in storage by the time anything reads it, so `gtm.js`'s own `page_view` never sees
|
|
121
|
+
// the parameter and a granted decision loads the tag on arrival. A page with no `opts.linker`
|
|
122
|
+
// gets an empty string here, unchanged from before this existed.
|
|
123
|
+
const linker = opts?.linker != null ? `${consentLinkerScript(opts)};` : '';
|
|
117
124
|
return `(function(w,d){` +
|
|
118
125
|
`w.dataLayer=w.dataLayer||[];function g(){w.dataLayer.push(arguments)}` +
|
|
119
126
|
`if(w[${flag}])return;g('consent','default',${defaults});w[${flag}]=true;` +
|
|
127
|
+
linker +
|
|
120
128
|
`var raw=null;try{raw=w.localStorage.getItem(${storageKey})}catch(e){}` +
|
|
121
129
|
`if(!raw){var p=('; '+d.cookie).split('; '+${storageKey}+'=');` +
|
|
122
130
|
`if(p.length===2){raw=p.pop().split(';').shift()}}` +
|
package/build/gtm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtm.js","sourceRoot":"","sources":["../src/gtm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EACvE,0BAA0B,GAC3B,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"gtm.js","sourceRoot":"","sources":["../src/gtm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EACvE,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAQjD,MAAM,MAAM,GAAG,GAAyB,EAAE,CACxC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAkC,CAAC,CAAC,CAAC,IAAI,CAAA;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,KAAgB;IAC7C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,OAAM;IACR,CAAC;IACD,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAA;IACnC,iGAAiG;IACjG,iDAAiD;IACjD,8CAA8C;IAC9C,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,IAAqB,EAAqB,EAAE,CAChE,IAAI,EAAE,UAAU,IAAI,0BAA0B,CAAA;AAEhD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAA8B,EACQ,EAAE;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,0BAA0B,CAAC;SAC5D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAA;IAE/C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC;SAC9D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAe,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAqB,EAAE,UAA8B,EACf,EAAE;IACxC,MAAM,MAAM,GAAyC,EAAE,CAAA;IACvD,KAAK,MAAM,QAAQ,IAAI,UAAU,IAAI,0BAA0B,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;QAC3E,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5C,8EAA8E;YAC9E,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;QAChF,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAqB,EAAQ,EAAE;IACjE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7E,OAAM;IACR,CAAC;IACD,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACtE,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;AAChC,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAqB,EAAE,IAAqB,EAAQ,EAAE;IACjF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;QACzC,OAAM;IACR,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAErC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;QACvF,CAAC;IACH,CAAC;IAED,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAEnE,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5F,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAA;YACnC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,gGAAgG;IAChG,kEAAkE;IAClE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU;WAC1E,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACvC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAA4B,EAAE,UAAU,GAAsB,0BAA0B,EAC/E,EAAE,CAAC,MAAM,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,CAC7C,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CACvG,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAqB,EAAU,EAAE;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpE,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI;QACpC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;KACtC,CAAC,CAAC,CAAC,CAAA;IACJ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,WAAW,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAC/C,4FAA4F;IAC5F,6FAA6F;IAC7F,gGAAgG;IAChG,8FAA8F;IAC9F,iEAAiE;IACjE,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAE1E,OAAO,iBAAiB;QACtB,uEAAuE;QACvE,QAAQ,IAAI,kCAAkC,QAAQ,OAAO,IAAI,SAAS;QAC1E,MAAM;QACN,+CAA+C,UAAU,cAAc;QACvE,6CAA6C,UAAU,QAAQ;QAC/D,mDAAmD;QACnD,6DAA6D;QAC7D,UAAU,UAAU,QAAQ;QAC5B,8EAA8E;QAC9E,oCAAoC;QACpC,yDAAyD;QACzD,+CAA+C;QAC/C,4CAA4C,CAAA;AAChD,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAkB,EAAE,IAA0D,EACtE,EAAE;IACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9D,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI;QACpC,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;KAC/C,CAAC,CAAC,CAAC,CAAA;IACJ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,WAAW,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAE3C,OAAO,iBAAiB;QACtB,4CAA4C,IAAI,GAAG;QACnD,2CAA2C;QAC3C,wEAAwE;QACxE,mBAAmB,UAAU,GAAG;QAChC,+CAA+C,UAAU,cAAc;QACvE,6CAA6C,UAAU,QAAQ;QAC/D,mDAAmD;QACnD,4DAA4D;QAC5D,0BAA0B;QAC1B,yDAAyD;QACzD,yBAAyB,KAAK,cAAc;QAC5C,sBAAsB,KAAK,KAAK;QAChC,qBAAqB,CAAA;AACzB,CAAC,CAAA"}
|
package/build/i18n/be.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
"description": "Мы выкарыстоўваем файлы cookie, каб палепшыць ваш досвед прагляду, паказваць персаналізаваную рэкламу ці змесціва і аналізаваць наш трафік. Націскаючы «Прыняць усе», вы пагаджаецеся на выкарыстанне файлаў cookie.",
|
|
4
4
|
"essential": "Неабходныя файлы cookie",
|
|
5
5
|
"essentialDesc": "Патрэбныя для працы сайта — уваход, бяспека і захаванне гэтых налад. Іх нельга адключыць.",
|
|
6
|
+
"functional": "Функцыянальныя файлы cookie",
|
|
7
|
+
"functionalDesc": "Запамінаюць вашы налады, напрыклад мову інтэрфейсу, каб вам не даводзілася задаваць іх зноў.",
|
|
6
8
|
"analytics": "Аналітычныя файлы cookie",
|
|
7
9
|
"analyticsDesc": "Дапамагаюць нам паляпшаць наш вэб-сайт, збіраючы і паведамляючы інфармацыю пра яго выкарыстанне.",
|
|
8
10
|
"marketing": "Маркетынгавыя файлы cookie",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Файлы cookie",
|
|
31
33
|
"policyServicePrivacy": "Палітыка прыватнасці: {{provider}}",
|
|
32
34
|
"privacy": "Палітыка прыватнасці",
|
|
33
|
-
"terms": "Умовы карыстання"
|
|
35
|
+
"terms": "Умовы карыстання",
|
|
36
|
+
"domains": "Гэты выбар распаўсюджваецца на {{domains}}.",
|
|
37
|
+
"policyDomains": "Гэты выбар распаўсюджваецца на наступныя дамены:"
|
|
34
38
|
}
|
package/build/i18n/de.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
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
5
|
"essentialDesc": "Erforderlich, damit die Website funktioniert — Anmeldung, Sicherheit und das Speichern dieser Einstellungen. Sie lassen sich nicht abschalten.",
|
|
6
|
+
"functional": "Funktionale Cookies",
|
|
7
|
+
"functionalDesc": "Merken sich Ihre Auswahl, etwa die Oberflächensprache, damit Sie nicht erneut wählen müssen.",
|
|
6
8
|
"analytics": "Analyse-Cookies",
|
|
7
9
|
"analyticsDesc": "Helfen uns, unsere Website zu verbessern, indem sie Informationen zur Nutzung sammeln und melden.",
|
|
8
10
|
"marketing": "Marketing-Cookies",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Cookies",
|
|
31
33
|
"policyServicePrivacy": "Datenschutzerklärung von {{provider}}",
|
|
32
34
|
"privacy": "Datenschutzerklärung",
|
|
33
|
-
"terms": "Nutzungsbedingungen"
|
|
35
|
+
"terms": "Nutzungsbedingungen",
|
|
36
|
+
"domains": "Diese Wahl gilt für {{domains}}.",
|
|
37
|
+
"policyDomains": "Diese Wahl gilt für die folgenden Domains:"
|
|
34
38
|
}
|
package/build/i18n/en.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
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
5
|
"essentialDesc": "Required for the site to work — signing in, security and remembering these preferences. They cannot be switched off.",
|
|
6
|
+
"functional": "Functional Cookies",
|
|
7
|
+
"functionalDesc": "Remember your choices, such as the interface language, so you do not have to make them again.",
|
|
6
8
|
"analytics": "Analytics Cookies",
|
|
7
9
|
"analyticsDesc": "Help us improve our website by collecting and reporting information on its usage.",
|
|
8
10
|
"marketing": "Marketing Cookies",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Cookies",
|
|
31
33
|
"policyServicePrivacy": "{{provider}} privacy policy",
|
|
32
34
|
"privacy": "Privacy Policy",
|
|
33
|
-
"terms": "Terms & Conditions"
|
|
35
|
+
"terms": "Terms & Conditions",
|
|
36
|
+
"domains": "This choice applies to {{domains}}.",
|
|
37
|
+
"policyDomains": "This choice applies across these domains:"
|
|
34
38
|
}
|
package/build/i18n/es.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
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
5
|
"essentialDesc": "Necesarias para que el sitio funcione: inicio de sesión, seguridad y recordar estas preferencias. No se pueden desactivar.",
|
|
6
|
+
"functional": "Cookies funcionales",
|
|
7
|
+
"functionalDesc": "Recuerdan tus preferencias, como el idioma de la interfaz, para que no tengas que elegirlas de nuevo.",
|
|
6
8
|
"analytics": "Cookies analíticas",
|
|
7
9
|
"analyticsDesc": "Nos ayudan a mejorar nuestro sitio web recopilando e informando sobre su uso.",
|
|
8
10
|
"marketing": "Cookies de marketing",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Cookies",
|
|
31
33
|
"policyServicePrivacy": "Política de privacidad de {{provider}}",
|
|
32
34
|
"privacy": "Política de privacidad",
|
|
33
|
-
"terms": "Términos y condiciones"
|
|
35
|
+
"terms": "Términos y condiciones",
|
|
36
|
+
"domains": "Esta elección se aplica a {{domains}}.",
|
|
37
|
+
"policyDomains": "Esta elección se aplica a los siguientes dominios:"
|
|
34
38
|
}
|
package/build/i18n/fr.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
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
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.",
|
|
6
|
+
"functional": "Cookies fonctionnels",
|
|
7
|
+
"functionalDesc": "Mémorisent vos choix, comme la langue de l'interface, afin que vous n'ayez pas à les refaire.",
|
|
6
8
|
"analytics": "Cookies analytiques",
|
|
7
9
|
"analyticsDesc": "Nous aident à améliorer notre site en recueillant et en analysant des informations sur son utilisation.",
|
|
8
10
|
"marketing": "Cookies marketing",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Cookies",
|
|
31
33
|
"policyServicePrivacy": "Politique de confidentialité de {{provider}}",
|
|
32
34
|
"privacy": "Politique de confidentialité",
|
|
33
|
-
"terms": "Conditions générales"
|
|
35
|
+
"terms": "Conditions générales",
|
|
36
|
+
"domains": "Ce choix s'applique à {{domains}}.",
|
|
37
|
+
"policyDomains": "Ce choix s'applique aux domaines suivants :"
|
|
34
38
|
}
|
package/build/i18n/pl.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
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
5
|
"essentialDesc": "Wymagane do działania witryny — logowanie, bezpieczeństwo i zapamiętanie tych ustawień. Nie można ich wyłączyć.",
|
|
6
|
+
"functional": "Funkcjonalne pliki cookie",
|
|
7
|
+
"functionalDesc": "Zapamiętują Twoje wybory, np. język interfejsu, aby nie trzeba było wybierać od nowa.",
|
|
6
8
|
"analytics": "Analityczne pliki cookie",
|
|
7
9
|
"analyticsDesc": "Pomagają nam ulepszać naszą witrynę internetową, zbierając i raportując informacje o jej użytkowaniu.",
|
|
8
10
|
"marketing": "Marketingowe pliki cookie",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Pliki cookie",
|
|
31
33
|
"policyServicePrivacy": "Polityka prywatności: {{provider}}",
|
|
32
34
|
"privacy": "Polityka prywatności",
|
|
33
|
-
"terms": "Regulamin"
|
|
35
|
+
"terms": "Regulamin",
|
|
36
|
+
"domains": "Ten wybór dotyczy: {{domains}}.",
|
|
37
|
+
"policyDomains": "Ten wybór dotyczy następujących domen:"
|
|
34
38
|
}
|
package/build/i18n/ru.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
"description": "Мы используем файлы cookie, чтобы улучшить ваш опыт просмотра, показывать персонализированную рекламу или контент и анализировать наш трафик. Нажимая «Принять все», вы соглашаетесь на использование файлов cookie.",
|
|
4
4
|
"essential": "Необходимые файлы cookie",
|
|
5
5
|
"essentialDesc": "Нужны для работы сайта — вход, безопасность и сохранение этих настроек. Их нельзя отключить.",
|
|
6
|
+
"functional": "Функциональные файлы cookie",
|
|
7
|
+
"functionalDesc": "Запоминают ваши настройки, например язык интерфейса, чтобы не приходилось задавать их заново.",
|
|
6
8
|
"analytics": "Аналитические файлы cookie",
|
|
7
9
|
"analyticsDesc": "Помогают нам улучшать наш сайт, собирая и предоставляя информацию о его использовании.",
|
|
8
10
|
"marketing": "Маркетинговые файлы cookie",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Файлы cookie",
|
|
31
33
|
"policyServicePrivacy": "Политика конфиденциальности: {{provider}}",
|
|
32
34
|
"privacy": "Политика конфиденциальности",
|
|
33
|
-
"terms": "Условия использования"
|
|
35
|
+
"terms": "Условия использования",
|
|
36
|
+
"domains": "Этот выбор применяется к {{domains}}.",
|
|
37
|
+
"policyDomains": "Этот выбор применяется к следующим доменам:"
|
|
34
38
|
}
|
package/build/i18n/uk.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
"description": "Ми використовуємо файли cookie, щоб покращити ваш досвід перегляду, показувати персоналізовану рекламу чи вміст і аналізувати наш трафік. Натискаючи «Прийняти всі», ви погоджуєтеся на використання файлів cookie.",
|
|
4
4
|
"essential": "Необхідні файли cookie",
|
|
5
5
|
"essentialDesc": "Потрібні для роботи сайту — вхід, безпека та збереження цих налаштувань. Їх не можна вимкнути.",
|
|
6
|
+
"functional": "Функціональні файли cookie",
|
|
7
|
+
"functionalDesc": "Запам’ятовують ваші налаштування, наприклад мову інтерфейсу, щоб вам не доводилося вибирати їх знову.",
|
|
6
8
|
"analytics": "Аналітичні файли cookie",
|
|
7
9
|
"analyticsDesc": "Допомагають нам покращувати наш вебсайт, збираючи та надаючи інформацію про його використання.",
|
|
8
10
|
"marketing": "Маркетингові файли cookie",
|
|
@@ -30,5 +32,7 @@
|
|
|
30
32
|
"policyCookies": "Файли cookie",
|
|
31
33
|
"policyServicePrivacy": "Політика конфіденційності: {{provider}}",
|
|
32
34
|
"privacy": "Політика конфіденційності",
|
|
33
|
-
"terms": "Умови користування"
|
|
35
|
+
"terms": "Умови користування",
|
|
36
|
+
"domains": "Цей вибір застосовується до {{domains}}.",
|
|
37
|
+
"policyDomains": "Цей вибір застосовується до таких доменів:"
|
|
34
38
|
}
|
package/build/index.d.ts
CHANGED
|
@@ -3,5 +3,10 @@ export * from './consts.js';
|
|
|
3
3
|
export * from './storage.js';
|
|
4
4
|
export * from './gtm.js';
|
|
5
5
|
export * from './store.js';
|
|
6
|
+
export * from './functional.js';
|
|
6
7
|
export * from './i18n.js';
|
|
8
|
+
export type { ConsentPlugin } from './plugins.js';
|
|
9
|
+
export { registerConsentPlugin, consentPlugins, decorateConsentUrl, consentDomains, adoptConsent, startConsentPlugins, adoptConsentLanguage, } from './plugins.js';
|
|
10
|
+
export type { ConsentLinkPayload } from './linker.js';
|
|
11
|
+
export { consentLinker, encodeConsentLink, decodeConsentLink, stripConsentLinkParam, consentLinkerScript, writeConsentLanguage, CONSENT_LINK_PARAM, CONSENT_LINK_MAX_AGE, CONSENT_LINK_SKEW, } from './linker.js';
|
|
7
12
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -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"}
|
|
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,iBAAiB,CAAA;AAC/B,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
|
@@ -2,5 +2,8 @@ export * from './consts.js';
|
|
|
2
2
|
export * from './storage.js';
|
|
3
3
|
export * from './gtm.js';
|
|
4
4
|
export * from './store.js';
|
|
5
|
+
export * from './functional.js';
|
|
5
6
|
export * from './i18n.js';
|
|
7
|
+
export { registerConsentPlugin, consentPlugins, decorateConsentUrl, consentDomains, adoptConsent, startConsentPlugins, adoptConsentLanguage, } from './plugins.js';
|
|
8
|
+
export { consentLinker, encodeConsentLink, decodeConsentLink, stripConsentLinkParam, consentLinkerScript, writeConsentLanguage, CONSENT_LINK_PARAM, CONSENT_LINK_MAX_AGE, CONSENT_LINK_SKEW, } from './linker.js';
|
|
6
9
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -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"}
|
|
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,iBAAiB,CAAA;AAC/B,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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ConsentPlugin } from './plugins.js';
|
|
2
|
+
import type { ConsentOptions, ConsentRecord } from './types.js';
|
|
3
|
+
/** The URL parameter a decorated link carries the decision in, absent an override. */
|
|
4
|
+
export declare const CONSENT_LINK_PARAM = "owlcc";
|
|
5
|
+
/** How old a decorated link's timestamp may be and still be trusted, in seconds, absent an override. */
|
|
6
|
+
export declare const CONSENT_LINK_MAX_AGE = 300;
|
|
7
|
+
/** Clock skew allowed the OTHER way — a timestamp up to this far in the future is still trusted. */
|
|
8
|
+
export declare const CONSENT_LINK_SKEW = 60;
|
|
9
|
+
declare const CONSENT_LINK_VERSION = 2;
|
|
10
|
+
/** The decoded, not-yet-validated payload a decorated link's parameter carries. */
|
|
11
|
+
export interface ConsentLinkPayload {
|
|
12
|
+
v: typeof CONSENT_LINK_VERSION;
|
|
13
|
+
/** One entry per OPTIONAL category this site knows, `1` granted / `0` denied. */
|
|
14
|
+
c: Record<string, 0 | 1>;
|
|
15
|
+
/** Unix seconds the link was decorated at. */
|
|
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;
|
|
23
|
+
}
|
|
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;
|
|
30
|
+
/** Parse-only — no trust decision here, that is `consentLinker(opts).adopt`'s job. Never throws. */
|
|
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 — and only while the visitor has GRANTED
|
|
35
|
+
* `functional` on this document (a stored record, or the one adopted from the very link that
|
|
36
|
+
* carried the language). Without that grant nothing is written and `false` comes back: remembering
|
|
37
|
+
* a preference on a visitor's device is storage like any other, and a refusal ("reject all") is an
|
|
38
|
+
* answer, not a gap to fill. The gate lives here, not in the callers, so no caller can forget it.
|
|
39
|
+
*
|
|
40
|
+
* It overwrites what is there on purpose: the carried language is the one the visitor was reading a
|
|
41
|
+
* moment ago, which outranks a choice they made on this domain some other day. Storage that refuses
|
|
42
|
+
* the write is not an error. Returns whether the language was written.
|
|
43
|
+
*/
|
|
44
|
+
export declare const writeConsentLanguage: (language: string, opts?: ConsentOptions) => boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Cross-domain consent: share this decision, and adopt one, between the domains named in
|
|
47
|
+
* `opts.linker.domains`.
|
|
48
|
+
*
|
|
49
|
+
* `start` decorates outgoing first-party links; `adopt` reads and validates an incoming one;
|
|
50
|
+
* `domains` discloses the list a dialog or policy page names. `decorate` is generic (a bare `URL`,
|
|
51
|
+
* no DOM) so the same trust rule serves a real anchor click and a programmatic navigation
|
|
52
|
+
* (`decorateConsentUrl`) alike — the `rel="noreferrer"` exemption is a DOM-only concept and is
|
|
53
|
+
* therefore checked by `start`'s click handler, never here.
|
|
54
|
+
*/
|
|
55
|
+
export declare const consentLinker: () => ConsentPlugin;
|
|
56
|
+
/**
|
|
57
|
+
* Remove the link parameter from the visible URL, keeping every other parameter and the hash — the
|
|
58
|
+
* real-TS equivalent of what {@link consentLinkerScript}'s embedded fragment already did inline.
|
|
59
|
+
* Idempotent: a page with no head script calls this from `consentStore.init` and it strips once; a
|
|
60
|
+
* page that ALSO carried the head script finds the parameter already gone and does nothing.
|
|
61
|
+
*/
|
|
62
|
+
export declare const stripConsentLinkParam: (opts: ConsentOptions) => void;
|
|
63
|
+
/**
|
|
64
|
+
* The inline `<head>` fragment that adopts a decorated link's decision and strips the parameter —
|
|
65
|
+
* standalone, so a page can stamp it even where nothing else here runs (a legal page with no tag
|
|
66
|
+
* script). `@owlmeans/web-gtm`'s `consentBootstrapScript` embeds this SAME fragment right after
|
|
67
|
+
* pushing Consent Mode's defaults, so a page that has both never runs it twice with different
|
|
68
|
+
* effect — the second attempt finds the parameter already gone and does nothing.
|
|
69
|
+
*
|
|
70
|
+
* Mirrors `consentLinker().adopt` exactly (v2, referrer + freshness/skew + full optional coverage +
|
|
71
|
+
* no existing record), but as hand-rolled JS text rather than a call into this module — the same
|
|
72
|
+
* discipline `consentBootstrapScript`/`consentGateScript` already follow, because this has to run
|
|
73
|
+
* before any bundle (this module included) has loaded. The parameter is ALWAYS stripped via
|
|
74
|
+
* `history.replaceState`, whether or not the trust rule accepts it: a stale or foreign `owlcc` is
|
|
75
|
+
* exactly as much noise as an adopted one, and neither belongs in the visible URL or in what a page
|
|
76
|
+
* reload, a shared link or a browser history entry carries forward.
|
|
77
|
+
*/
|
|
78
|
+
export declare const consentLinkerScript: (opts: ConsentOptions) => string;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=linker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"AAKA,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;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,aAAc,MAAM,SAAS,cAAc,KAAG,OAY9E,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,MAoE1D,CAAA"}
|