@osano/osano-cmp-react-native 0.18.3 → 0.18.5
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/lib/commonjs/ConsentManager.js +105 -1
- package/lib/commonjs/ConsentManager.js.map +1 -1
- package/lib/commonjs/components/Button.js +10 -4
- package/lib/commonjs/components/Button.js.map +1 -1
- package/lib/commonjs/context.js +1 -0
- package/lib/commonjs/context.js.map +1 -1
- package/lib/commonjs/flavors/index.js +4 -1
- package/lib/commonjs/flavors/index.js.map +1 -1
- package/lib/commonjs/flavors/seven.json +11 -0
- package/lib/commonjs/index.js +4 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/locale/af.json +1 -0
- package/lib/commonjs/locale/ar.json +1 -0
- package/lib/commonjs/locale/bg.json +1 -0
- package/lib/commonjs/locale/ca.json +1 -0
- package/lib/commonjs/locale/cs.json +1 -0
- package/lib/commonjs/locale/da.json +1 -0
- package/lib/commonjs/locale/de-at.json +1 -0
- package/lib/commonjs/locale/de.json +1 -0
- package/lib/commonjs/locale/el.json +1 -0
- package/lib/commonjs/locale/en-au.json +1 -0
- package/lib/commonjs/locale/en-ca.json +1 -0
- package/lib/commonjs/locale/en-gb.json +1 -0
- package/lib/commonjs/locale/en.json +1 -0
- package/lib/commonjs/locale/es-mx.json +1 -0
- package/lib/commonjs/locale/es.json +1 -0
- package/lib/commonjs/locale/et.json +1 -0
- package/lib/commonjs/locale/fa.json +1 -0
- package/lib/commonjs/locale/fi.json +1 -0
- package/lib/commonjs/locale/fr-ca.json +1 -0
- package/lib/commonjs/locale/fr.json +1 -0
- package/lib/commonjs/locale/gd.json +1 -0
- package/lib/commonjs/locale/he.json +1 -0
- package/lib/commonjs/locale/hi.json +1 -0
- package/lib/commonjs/locale/hr.json +1 -0
- package/lib/commonjs/locale/hu.json +1 -0
- package/lib/commonjs/locale/hy.json +1 -0
- package/lib/commonjs/locale/id.json +1 -0
- package/lib/commonjs/locale/is.json +1 -0
- package/lib/commonjs/locale/it.json +1 -0
- package/lib/commonjs/locale/ja.json +1 -0
- package/lib/commonjs/locale/kk.json +1 -0
- package/lib/commonjs/locale/ko.json +1 -0
- package/lib/commonjs/locale/lt.json +1 -0
- package/lib/commonjs/locale/lv.json +1 -0
- package/lib/commonjs/locale/mi.json +1 -0
- package/lib/commonjs/locale/ms.json +1 -0
- package/lib/commonjs/locale/nb.json +1 -0
- package/lib/commonjs/locale/nl-be.json +1 -0
- package/lib/commonjs/locale/nl.json +1 -0
- package/lib/commonjs/locale/nn.json +1 -0
- package/lib/commonjs/locale/no.json +1 -0
- package/lib/commonjs/locale/pl.json +1 -0
- package/lib/commonjs/locale/pt-br.json +1 -0
- package/lib/commonjs/locale/pt.json +1 -0
- package/lib/commonjs/locale/ro.json +1 -0
- package/lib/commonjs/locale/ru.json +1 -0
- package/lib/commonjs/locale/sk.json +1 -0
- package/lib/commonjs/locale/sl.json +1 -0
- package/lib/commonjs/locale/sq.json +1 -0
- package/lib/commonjs/locale/sr.json +1 -0
- package/lib/commonjs/locale/sv.json +1 -0
- package/lib/commonjs/locale/th.json +1 -0
- package/lib/commonjs/locale/tl.json +1 -0
- package/lib/commonjs/locale/tr.json +1 -0
- package/lib/commonjs/locale/uk.json +1 -0
- package/lib/commonjs/locale/vi.json +1 -0
- package/lib/commonjs/locale/zh-hk.json +1 -0
- package/lib/commonjs/locale/zh-tw.json +1 -0
- package/lib/commonjs/locale/zh.json +1 -0
- package/lib/commonjs/locale/zu.json +1 -0
- package/lib/commonjs/services/consent.js +146 -32
- package/lib/commonjs/services/consent.js.map +1 -1
- package/lib/commonjs/services/gdprMappings.js +115 -0
- package/lib/commonjs/services/gdprMappings.js.map +1 -0
- package/lib/commonjs/views/Dialog/Message.js +1 -1
- package/lib/commonjs/views/Dialog/Message.js.map +1 -1
- package/lib/commonjs/views/Dialog/index.js +1 -1
- package/lib/commonjs/views/Dialog/index.js.map +1 -1
- package/lib/module/ConsentManager.js +105 -1
- package/lib/module/ConsentManager.js.map +1 -1
- package/lib/module/components/Button.js +10 -4
- package/lib/module/components/Button.js.map +1 -1
- package/lib/module/context.js +1 -0
- package/lib/module/context.js.map +1 -1
- package/lib/module/flavors/index.js +4 -1
- package/lib/module/flavors/index.js.map +1 -1
- package/lib/module/flavors/seven.json +11 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/locale/af.json +1 -0
- package/lib/module/locale/ar.json +1 -0
- package/lib/module/locale/bg.json +1 -0
- package/lib/module/locale/ca.json +1 -0
- package/lib/module/locale/cs.json +1 -0
- package/lib/module/locale/da.json +1 -0
- package/lib/module/locale/de-at.json +1 -0
- package/lib/module/locale/de.json +1 -0
- package/lib/module/locale/el.json +1 -0
- package/lib/module/locale/en-au.json +1 -0
- package/lib/module/locale/en-ca.json +1 -0
- package/lib/module/locale/en-gb.json +1 -0
- package/lib/module/locale/en.json +1 -0
- package/lib/module/locale/es-mx.json +1 -0
- package/lib/module/locale/es.json +1 -0
- package/lib/module/locale/et.json +1 -0
- package/lib/module/locale/fa.json +1 -0
- package/lib/module/locale/fi.json +1 -0
- package/lib/module/locale/fr-ca.json +1 -0
- package/lib/module/locale/fr.json +1 -0
- package/lib/module/locale/gd.json +1 -0
- package/lib/module/locale/he.json +1 -0
- package/lib/module/locale/hi.json +1 -0
- package/lib/module/locale/hr.json +1 -0
- package/lib/module/locale/hu.json +1 -0
- package/lib/module/locale/hy.json +1 -0
- package/lib/module/locale/id.json +1 -0
- package/lib/module/locale/is.json +1 -0
- package/lib/module/locale/it.json +1 -0
- package/lib/module/locale/ja.json +1 -0
- package/lib/module/locale/kk.json +1 -0
- package/lib/module/locale/ko.json +1 -0
- package/lib/module/locale/lt.json +1 -0
- package/lib/module/locale/lv.json +1 -0
- package/lib/module/locale/mi.json +1 -0
- package/lib/module/locale/ms.json +1 -0
- package/lib/module/locale/nb.json +1 -0
- package/lib/module/locale/nl-be.json +1 -0
- package/lib/module/locale/nl.json +1 -0
- package/lib/module/locale/nn.json +1 -0
- package/lib/module/locale/no.json +1 -0
- package/lib/module/locale/pl.json +1 -0
- package/lib/module/locale/pt-br.json +1 -0
- package/lib/module/locale/pt.json +1 -0
- package/lib/module/locale/ro.json +1 -0
- package/lib/module/locale/ru.json +1 -0
- package/lib/module/locale/sk.json +1 -0
- package/lib/module/locale/sl.json +1 -0
- package/lib/module/locale/sq.json +1 -0
- package/lib/module/locale/sr.json +1 -0
- package/lib/module/locale/sv.json +1 -0
- package/lib/module/locale/th.json +1 -0
- package/lib/module/locale/tl.json +1 -0
- package/lib/module/locale/tr.json +1 -0
- package/lib/module/locale/uk.json +1 -0
- package/lib/module/locale/vi.json +1 -0
- package/lib/module/locale/zh-hk.json +1 -0
- package/lib/module/locale/zh-tw.json +1 -0
- package/lib/module/locale/zh.json +1 -0
- package/lib/module/locale/zu.json +1 -0
- package/lib/module/services/consent.js +144 -31
- package/lib/module/services/consent.js.map +1 -1
- package/lib/module/services/gdprMappings.js +109 -0
- package/lib/module/services/gdprMappings.js.map +1 -0
- package/lib/module/views/Dialog/Message.js +1 -1
- package/lib/module/views/Dialog/Message.js.map +1 -1
- package/lib/module/views/Dialog/index.js +1 -1
- package/lib/module/views/Dialog/index.js.map +1 -1
- package/lib/typescript/src/ConsentManager.d.ts +56 -1
- package/lib/typescript/src/ConsentManager.d.ts.map +1 -1
- package/lib/typescript/src/components/Button.d.ts.map +1 -1
- package/lib/typescript/src/context.d.ts +1 -0
- package/lib/typescript/src/context.d.ts.map +1 -1
- package/lib/typescript/src/flavors/index.d.ts +2 -1
- package/lib/typescript/src/flavors/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/services/consent.d.ts +6 -1
- package/lib/typescript/src/services/consent.d.ts.map +1 -1
- package/lib/typescript/src/services/gdprMappings.d.ts +32 -0
- package/lib/typescript/src/services/gdprMappings.d.ts.map +1 -0
- package/lib/typescript/src/views/Dialog/index.d.ts.map +1 -1
- package/package.json +7 -4
- package/src/ConsentManager.ts +136 -2
- package/src/components/Button.tsx +7 -5
- package/src/context.ts +2 -0
- package/src/flavors/index.ts +3 -0
- package/src/flavors/seven.json +11 -0
- package/src/index.tsx +10 -0
- package/src/locale/af.json +1 -0
- package/src/locale/ar.json +1 -0
- package/src/locale/bg.json +1 -0
- package/src/locale/ca.json +1 -0
- package/src/locale/cs.json +1 -0
- package/src/locale/da.json +1 -0
- package/src/locale/de-at.json +1 -0
- package/src/locale/de.json +1 -0
- package/src/locale/el.json +1 -0
- package/src/locale/en-au.json +1 -0
- package/src/locale/en-ca.json +1 -0
- package/src/locale/en-gb.json +1 -0
- package/src/locale/en.json +1 -0
- package/src/locale/es-mx.json +1 -0
- package/src/locale/es.json +1 -0
- package/src/locale/et.json +1 -0
- package/src/locale/fa.json +1 -0
- package/src/locale/fi.json +1 -0
- package/src/locale/fr-ca.json +1 -0
- package/src/locale/fr.json +1 -0
- package/src/locale/gd.json +1 -0
- package/src/locale/he.json +1 -0
- package/src/locale/hi.json +1 -0
- package/src/locale/hr.json +1 -0
- package/src/locale/hu.json +1 -0
- package/src/locale/hy.json +1 -0
- package/src/locale/id.json +1 -0
- package/src/locale/is.json +1 -0
- package/src/locale/it.json +1 -0
- package/src/locale/ja.json +1 -0
- package/src/locale/kk.json +1 -0
- package/src/locale/ko.json +1 -0
- package/src/locale/lt.json +1 -0
- package/src/locale/lv.json +1 -0
- package/src/locale/mi.json +1 -0
- package/src/locale/ms.json +1 -0
- package/src/locale/nb.json +1 -0
- package/src/locale/nl-be.json +1 -0
- package/src/locale/nl.json +1 -0
- package/src/locale/nn.json +1 -0
- package/src/locale/no.json +1 -0
- package/src/locale/pl.json +1 -0
- package/src/locale/pt-br.json +1 -0
- package/src/locale/pt.json +1 -0
- package/src/locale/ro.json +1 -0
- package/src/locale/ru.json +1 -0
- package/src/locale/sk.json +1 -0
- package/src/locale/sl.json +1 -0
- package/src/locale/sq.json +1 -0
- package/src/locale/sr.json +1 -0
- package/src/locale/sv.json +1 -0
- package/src/locale/th.json +1 -0
- package/src/locale/tl.json +1 -0
- package/src/locale/tr.json +1 -0
- package/src/locale/uk.json +1 -0
- package/src/locale/vi.json +1 -0
- package/src/locale/zh-hk.json +1 -0
- package/src/locale/zh-tw.json +1 -0
- package/src/locale/zh.json +1 -0
- package/src/locale/zu.json +1 -0
- package/src/services/consent.ts +190 -38
- package/src/services/gdprMappings.ts +126 -0
- package/src/types/consent-config.d.ts +10 -1
- package/src/types/index.d.ts +9 -0
- package/src/views/Dialog/Message.tsx +1 -1
- package/src/views/Dialog/index.tsx +11 -6
|
@@ -43,7 +43,7 @@ export declare class ConsentConfig extends EventEmitter {
|
|
|
43
43
|
get remoteConsent(): boolean;
|
|
44
44
|
get type(): Flavor;
|
|
45
45
|
set type(value: keyof typeof flavors);
|
|
46
|
-
get variant(): 'one' | 'two' | 'three' | 'four' | 'five' | 'six' | '' | undefined;
|
|
46
|
+
get variant(): 'one' | 'two' | 'three' | 'four' | 'five' | 'six' | 'seven' | '' | undefined;
|
|
47
47
|
get country(): string;
|
|
48
48
|
get region(): string;
|
|
49
49
|
set language(value: string);
|
|
@@ -60,6 +60,37 @@ export declare class ConsentConfig extends EventEmitter {
|
|
|
60
60
|
get managePreferencesRequired(): boolean;
|
|
61
61
|
get forceManagePreferencesButton(): boolean;
|
|
62
62
|
get rejectAllRequired(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* True only for Flavor 7 (the analytics-on-by-default banner). Compared by
|
|
65
|
+
* value, not reference, because `merge()` deep-clones `type` on config load
|
|
66
|
+
* (see `isSameFlavor`).
|
|
67
|
+
*/
|
|
68
|
+
private get isFlavorSeven();
|
|
69
|
+
/**
|
|
70
|
+
* Flavor 7 shows analytics enabled on first load, before the visitor has made
|
|
71
|
+
* a choice. Scoped to Flavor 7 so the other analytics-always banners (4, 5)
|
|
72
|
+
* keep their existing first-load behaviour. Only applies when there is no
|
|
73
|
+
* stored consent, so a prior opt-out is never overridden.
|
|
74
|
+
*/
|
|
75
|
+
get analyticsDefaultsOnAtFirstLoad(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Whether the banner shows a dismiss (X) button. Scoped to hide it for
|
|
78
|
+
* Flavor 7 only; every other flavor keeps its current behaviour (the X is
|
|
79
|
+
* rendered regardless of `canDismissDialog` today, so this intentionally does
|
|
80
|
+
* not gate on `dialogCloseButtonRequired`, which would change Flavors 3/6).
|
|
81
|
+
*/
|
|
82
|
+
get showDismissButton(): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Locale key for the banner body copy. Flavor 7 explains that analytics is
|
|
85
|
+
* loaded by default; every other flavor keeps the standard `messaging.default`.
|
|
86
|
+
*/
|
|
87
|
+
get bannerMessageKey(): string;
|
|
88
|
+
/**
|
|
89
|
+
* Locale key for the reject/deny button label. Flavor 7 uses
|
|
90
|
+
* "Deny Non-Essential"; every other flavor keeps its jurisdiction-specific
|
|
91
|
+
* "Reject All" label.
|
|
92
|
+
*/
|
|
93
|
+
get rejectButtonLabelKey(): string;
|
|
63
94
|
private _iabEnabled?;
|
|
64
95
|
get iabEnabled(): boolean;
|
|
65
96
|
set iabEnabled(value: boolean | undefined);
|
|
@@ -99,8 +130,15 @@ export declare class ConsentManager {
|
|
|
99
130
|
private _translator;
|
|
100
131
|
private _overridePalette?;
|
|
101
132
|
private _googleConsentModeCallback?;
|
|
133
|
+
private _consentExpirationTestingSeconds?;
|
|
102
134
|
private _deviceId;
|
|
103
135
|
get deviceId(): string;
|
|
136
|
+
/**
|
|
137
|
+
* The debug-only consent expiration testing window, in seconds, or
|
|
138
|
+
* `undefined` when testing mode is disabled. Read by the consent service to
|
|
139
|
+
* decide whether stored consent should be treated as expired.
|
|
140
|
+
*/
|
|
141
|
+
get consentExpirationTestingSeconds(): number | undefined;
|
|
104
142
|
get customerId(): string;
|
|
105
143
|
set customerId(value: string);
|
|
106
144
|
get configId(): string;
|
|
@@ -145,6 +183,23 @@ export declare class ConsentManager {
|
|
|
145
183
|
* @returns this ConsentManager instance for method chaining
|
|
146
184
|
*/
|
|
147
185
|
setGoogleConsentModeCallback(callback: GoogleConsentModeCallback): this;
|
|
186
|
+
/**
|
|
187
|
+
* Debug-only. Force stored consent to expire after `expirationSeconds` so the
|
|
188
|
+
* consent banner can be re-triggered quickly during testing. Pass `null` (or a
|
|
189
|
+
* non-positive value) to disable. The value is held in memory only and is
|
|
190
|
+
* never persisted. Outside `__DEV__` this is a no-op (mirrors the Android
|
|
191
|
+
* SDK's `setConsentExpirationTestingMode`, which is only available in debug
|
|
192
|
+
* builds).
|
|
193
|
+
*
|
|
194
|
+
* Note: the expiration check runs while consent is loaded, so setting this at
|
|
195
|
+
* init time (via `overrides.consentExpirationTestingSeconds`) is the reliable
|
|
196
|
+
* path for a reload-and-reprompt test. A runtime call takes effect on the
|
|
197
|
+
* next consent load.
|
|
198
|
+
*
|
|
199
|
+
* @param expirationSeconds - Seconds until consent expires, or `null` to disable.
|
|
200
|
+
* @returns this ConsentManager instance for method chaining
|
|
201
|
+
*/
|
|
202
|
+
setConsentExpirationTestingMode(expirationSeconds: number | null): this;
|
|
148
203
|
/**
|
|
149
204
|
* Trigger Google Consent Mode update with current consent categories
|
|
150
205
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsentManager.d.ts","sourceRoot":"","sources":["../../../src/ConsentManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,mBAAmB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,OAAO,EAAE,EAAiB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,KAAK,EAEX,aAAa,EAEb,MAAM,EAEN,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACX,YAAY,EACZ,YAAY,EAEZ,gBAAgB,EAChB,QAAQ,EACR,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,YAAY,EAA0B,MAAM,sBAAsB,CAAC;AAE5E,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAK5C,eAAO,MAAM,cAAc,EAAE,MAoE5B,CAAC;
|
|
1
|
+
{"version":3,"file":"ConsentManager.d.ts","sourceRoot":"","sources":["../../../src/ConsentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,SAAS,EAGd,KAAK,IAAI,EACT,KAAK,SAAS,EACd,MAAM,cAAc,CAAC;AAWtB,KAAK,WAAW,GAAG,KAAK,CAAC,eAAe,CACvC,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC7B,CACD,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqD5C,CAAC;AAGF,eAAO,MAAM,WAAW;YAGb,MAAM;8BA8BhB,CAAC;AAEF,eAAO,MAAM,UAAU,GACtB,OAAO,cAAc,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,sBAoBD,CAAC;AAGF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAkBzD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmB9C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsB5C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsBjD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,SAAS,EAGd,KAAK,IAAI,EACT,KAAK,SAAS,EACd,MAAM,cAAc,CAAC;AAWtB,KAAK,WAAW,GAAG,KAAK,CAAC,eAAe,CACvC,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC7B,CACD,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqD5C,CAAC;AAGF,eAAO,MAAM,WAAW;YAGb,MAAM;8BA8BhB,CAAC;AAEF,eAAO,MAAM,UAAU,GACtB,OAAO,cAAc,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,sBAoBD,CAAC;AAGF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAkBzD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmB9C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsB5C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsBjD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAajD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAkB5C,CAAC"}
|
|
@@ -16,6 +16,7 @@ type OsanoPublicContextType = {
|
|
|
16
16
|
setLocale: (locale: string) => void;
|
|
17
17
|
showBanner: () => void;
|
|
18
18
|
showDrawer: () => void;
|
|
19
|
+
setConsentExpirationTestingMode: (expirationSeconds: number | null) => void;
|
|
19
20
|
isReady: boolean;
|
|
20
21
|
};
|
|
21
22
|
type OsanoPrivateContextType = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EACX,QAAQ,EACR,cAAc,EACd,KAAK,EACL,aAAa,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAGN,KAAK,mBAAmB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CACX,QAAQ,CAAC,EAAE,mBAAmB,KAC1B,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACrC,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CACR,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,KACjD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC9B,aAAa,EAAE,CACd,CAAC,EAAE,CACF,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,KACjC,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,KACnE,IAAI,CAAC;IACV,gBAAgB,EAAE,CACjB,CAAC,EAAE,CACF,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,KACjC,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,KACnE,IAAI,CAAC;IACV,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1D,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACpD,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,4BAA4B,EAAE,CAAC,QAAQ,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EACX,QAAQ,EACR,cAAc,EACd,KAAK,EACL,aAAa,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAGN,KAAK,mBAAmB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CACX,QAAQ,CAAC,EAAE,mBAAmB,KAC1B,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACrC,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CACR,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,KACjD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,+BAA+B,EAAE,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5E,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC9B,aAAa,EAAE,CACd,CAAC,EAAE,CACF,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,KACjC,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,KACnE,IAAI,CAAC;IACV,gBAAgB,EAAE,CACjB,CAAC,EAAE,CACF,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,KACjC,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,KACnE,IAAI,CAAC;IACV,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1D,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACpD,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,4BAA4B,EAAE,CAAC,QAAQ,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,uCAc7B,CAAC;AAEH,eAAO,MAAM,mBAAmB,wCAe/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/flavors/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,aAAK,UAAU;IACd,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/flavors/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,aAAK,UAAU;IACd,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;CACf;AAUD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQ9C,CAAC;AAEF,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,eAAe,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwD,MAAM,OAAO,CAAC;AA4B7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EACX,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,6BAA6B,CAAC;AAQrC,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAC1C,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwD,MAAM,OAAO,CAAC;AA4B7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EACX,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,6BAA6B,CAAC;AAQrC,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAC1C,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAwPnC,CAAC"}
|
|
@@ -24,9 +24,14 @@ export type ConsentLookupResponseType = {
|
|
|
24
24
|
lastConsentTimestamp: string;
|
|
25
25
|
userConsentId: string;
|
|
26
26
|
};
|
|
27
|
-
export declare const storeConsent: (cmp: ConsentManager, consent?: ConsentCategoryType[], recordedRemotely?: boolean) => Promise<ConsentCategoryType[]>;
|
|
27
|
+
export declare const storeConsent: (cmp: ConsentManager, consent?: ConsentCategoryType[], recordedRemotely?: boolean, consentDate?: string | Date) => Promise<ConsentCategoryType[]>;
|
|
28
28
|
export declare const clearConsent: (cmp: ConsentManager) => Promise<ConsentCategoryType[]>;
|
|
29
29
|
export declare const migrateConsentStorage: (cmp: ConsentManager) => Promise<ConsentCategoryType[] | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Returns true when the locally stored consent has aged past its expiration
|
|
32
|
+
* window (see {@link effectiveExpirationSeconds}).
|
|
33
|
+
*/
|
|
34
|
+
export declare const isConsentExpired: (cmp: ConsentManager) => Promise<boolean>;
|
|
30
35
|
export declare const recordConsent: (cmp: ConsentManager, consent?: ConsentCategoryType[]) => Promise<ConsentCategoryType[]>;
|
|
31
36
|
export declare function hashExtUsrData(customerId: string, configId: string, extUsrData: string | undefined): string;
|
|
32
37
|
export declare const fetchConsent: (cmp: ConsentManager) => Promise<ConsentCategory[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../src/services/consent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACN,eAAe,EACf,KAAK,mBAAmB,EAIxB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../src/services/consent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACN,eAAe,EACf,KAAK,mBAAmB,EAIxB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAsBtD,MAAM,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC;AAsDF,eAAO,MAAM,YAAY,GACxB,KAAK,cAAc,EACnB,UAAU,mBAAmB,EAAE,EAC/B,mBAAmB,OAAO,EAI1B,cAAc,MAAM,GAAG,IAAI,KACzB,OAAO,CAAC,mBAAmB,EAAE,CA6C/B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,KAAK,cAAc,mCAyBrD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GACjC,KAAK,cAAc,KACjB,OAAO,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAgDtC,CAAC;AA6KF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC5B,KAAK,cAAc,KACjB,OAAO,CAAC,OAAO,CAOjB,CAAC;AAEF,eAAO,MAAM,aAAa,GACzB,KAAK,cAAc,EACnB,UAAU,mBAAmB,EAAE,mCAmB/B,CAAC;AAEF,wBAAgB,cAAc,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAqBR;AAED,eAAO,MAAM,YAAY,GAAU,KAAK,cAAc,+BA2FrD,CAAC;AAKF,eAAO,MAAM,eAAe,GAC3B,YAAY,MAAM,EAClB,UAAU,MAAM,KACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAYvB,CAAC;AAEF,eAAO,MAAM,WAAW,GACvB,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,QAAQ,MAAM,KACZ,OAAO,CAAC,IAAI,CAed,CAAC;AAEF,eAAO,MAAM,qBAAqB,GACjC,YAAY,MAAM,EAClB,UAAU,MAAM,KACd,OAAO,CAAC,IAAI,GAAG,IAAI,CAYrB,CAAC;AAEF,eAAO,MAAM,cAAc,GAC1B,YAAY,MAAM,EAClB,UAAU,MAAM,KACd,OAAO,CAAC,OAAO,CAejB,CAAC;AAEF,eAAO,MAAM,aAAa,GACzB,YAAY,MAAM,EAClB,UAAU,MAAM,KACd,OAAO,CAAC,MAAM,GAAG,IAAI,CASvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GACjC,YAAY,MAAM,EAClB,UAAU,MAAM,KACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAUvB,CAAC;AAEF,eAAO,MAAM,WAAW,GACvB,YAAY,MAAM,EAClB,UAAU,MAAM,KACd,OAAO,CAAC,MAAM,CAkHhB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-country GDPR metadata served at `/mappings.json`. Only the fields the SDK
|
|
3
|
+
* consumes are typed here; the document may carry more (e.g. forced
|
|
4
|
+
* classifications) that we intentionally ignore.
|
|
5
|
+
*/
|
|
6
|
+
export type GdprCountryInfo = {
|
|
7
|
+
gdprApplies?: boolean;
|
|
8
|
+
flavor?: string;
|
|
9
|
+
consentExpiration?: number;
|
|
10
|
+
};
|
|
11
|
+
export type GdprMappings = Record<string, GdprCountryInfo>;
|
|
12
|
+
/**
|
|
13
|
+
* Returns the GDPR country mappings, preferring a fresh (<24h) cache and
|
|
14
|
+
* otherwise fetching `${OSANO_ORIGIN}/mappings.json`. On a network/parse error
|
|
15
|
+
* it falls back to any stale cache rather than losing production expiration.
|
|
16
|
+
* Returns null only when there is neither a usable network response nor a
|
|
17
|
+
* cached copy.
|
|
18
|
+
*/
|
|
19
|
+
export declare const fetchGdprMappings: () => Promise<GdprMappings | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Resolves the production consent-expiration interval (in seconds) for a
|
|
22
|
+
* country from the GDPR mappings: the country's own value, falling back to the
|
|
23
|
+
* `defaults` bucket. Returns null when no positive interval is configured — in
|
|
24
|
+
* that case consent has no production expiration.
|
|
25
|
+
*
|
|
26
|
+
* Note: unlike the Android SDK, there is no hardcoded numeric fallback here.
|
|
27
|
+
* Android returns `365` when nothing is configured, but consumes it as seconds
|
|
28
|
+
* (~6 minutes), which would silently expire production consent; failing open is
|
|
29
|
+
* the safer behavior.
|
|
30
|
+
*/
|
|
31
|
+
export declare const getConsentExpirationSeconds: (country: string | undefined) => Promise<number | null>;
|
|
32
|
+
//# sourceMappingURL=gdprMappings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gdprMappings.d.ts","sourceRoot":"","sources":["../../../../src/services/gdprMappings.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AA2B3D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,YAAY,GAAG,IAAI,CAmCrE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,GACvC,SAAS,MAAM,GAAG,SAAS,KACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAUvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Dialog/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,OAAO,EACN,KAAK,EASL,MAAM,cAAc,CAAC;AAiBtB,eAAO,MAAM,MAAM,QAAO,YAAY,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Dialog/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,OAAO,EACN,KAAK,EASL,MAAM,cAAc,CAAC;AAiBtB,eAAO,MAAM,MAAM,QAAO,YAAY,CAAC,KAAK,CAkP3C,CAAC;AAwHF,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osano/osano-cmp-react-native",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.5",
|
|
4
4
|
"description": "Package and example for the react-native Osano CMP SDK",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
],
|
|
32
32
|
"scripts": {
|
|
33
33
|
"example": "yarn workspace osano-cmp-sdk-example",
|
|
34
|
-
"test": "jest src/services/__tests__/consent.test.ts src/services/__tests__/fetchConfig.test.ts src/__tests__/index.test.tsx src/services/__tests__/google-consent-mode.test.ts src/__tests__/OsanoLogger.test.ts src/__tests__/constants.test.ts src/__tests__/reducer.test.ts src/__tests__/selectors.test.ts src/__tests__/ConsentManager.test.ts src/__tests__/ConsentUiBuilder.test.tsx src/utils/__tests__/WebStorage.test.ts src/native/__tests__/OsanoCmp.test.ts",
|
|
35
|
-
"test:legacy": "REACT_NATIVE_NEW_ARCH_ENABLED=false jest src/services/__tests__/consent.test.ts src/services/__tests__/fetchConfig.test.ts src/__tests__/index.test.tsx src/services/__tests__/google-consent-mode.test.ts src/__tests__/OsanoLogger.test.ts src/__tests__/constants.test.ts src/__tests__/reducer.test.ts src/__tests__/selectors.test.ts src/__tests__/ConsentManager.test.ts src/__tests__/ConsentUiBuilder.test.tsx src/utils/__tests__/WebStorage.test.ts src/native/__tests__/OsanoCmp.test.ts",
|
|
36
|
-
"test:newarch": "REACT_NATIVE_NEW_ARCH_ENABLED=true jest src/services/__tests__/consent.test.ts src/services/__tests__/fetchConfig.test.ts src/__tests__/index.test.tsx src/services/__tests__/google-consent-mode.test.ts src/__tests__/OsanoLogger.test.ts src/__tests__/constants.test.ts src/__tests__/reducer.test.ts src/__tests__/selectors.test.ts src/__tests__/ConsentManager.test.ts src/__tests__/ConsentUiBuilder.test.tsx src/utils/__tests__/WebStorage.test.ts src/native/__tests__/OsanoCmp.test.ts",
|
|
34
|
+
"test": "jest src/services/__tests__/consent.test.ts src/services/__tests__/gdprMappings.test.ts src/services/__tests__/fetchConfig.test.ts src/__tests__/index.test.tsx src/services/__tests__/google-consent-mode.test.ts src/__tests__/OsanoLogger.test.ts src/__tests__/constants.test.ts src/__tests__/reducer.test.ts src/__tests__/selectors.test.ts src/__tests__/ConsentManager.test.ts src/__tests__/ConsentUiBuilder.test.tsx src/utils/__tests__/WebStorage.test.ts src/native/__tests__/OsanoCmp.test.ts",
|
|
35
|
+
"test:legacy": "REACT_NATIVE_NEW_ARCH_ENABLED=false jest src/services/__tests__/consent.test.ts src/services/__tests__/gdprMappings.test.ts src/services/__tests__/fetchConfig.test.ts src/__tests__/index.test.tsx src/services/__tests__/google-consent-mode.test.ts src/__tests__/OsanoLogger.test.ts src/__tests__/constants.test.ts src/__tests__/reducer.test.ts src/__tests__/selectors.test.ts src/__tests__/ConsentManager.test.ts src/__tests__/ConsentUiBuilder.test.tsx src/utils/__tests__/WebStorage.test.ts src/native/__tests__/OsanoCmp.test.ts",
|
|
36
|
+
"test:newarch": "REACT_NATIVE_NEW_ARCH_ENABLED=true jest src/services/__tests__/consent.test.ts src/services/__tests__/gdprMappings.test.ts src/services/__tests__/fetchConfig.test.ts src/__tests__/index.test.tsx src/services/__tests__/google-consent-mode.test.ts src/__tests__/OsanoLogger.test.ts src/__tests__/constants.test.ts src/__tests__/reducer.test.ts src/__tests__/selectors.test.ts src/__tests__/ConsentManager.test.ts src/__tests__/ConsentUiBuilder.test.tsx src/utils/__tests__/WebStorage.test.ts src/native/__tests__/OsanoCmp.test.ts",
|
|
37
37
|
"test:google-consent-mode": "jest src/services/__tests__/google-consent-mode.test.ts",
|
|
38
38
|
"typecheck": "tsc --noEmit",
|
|
39
39
|
"lint": "eslint",
|
|
@@ -119,6 +119,9 @@
|
|
|
119
119
|
"documentation"
|
|
120
120
|
],
|
|
121
121
|
"packageManager": "yarn@3.6.4",
|
|
122
|
+
"engines": {
|
|
123
|
+
"node": ">=22.0.0 <23.0.0"
|
|
124
|
+
},
|
|
122
125
|
"jest": {
|
|
123
126
|
"preset": "@react-native/jest-preset",
|
|
124
127
|
"setupFilesAfterEnv": [
|
package/src/ConsentManager.ts
CHANGED
|
@@ -112,6 +112,23 @@ export const DEFAULT_CONFIG: Config = {
|
|
|
112
112
|
iabEnabled: false,
|
|
113
113
|
};
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Compare two flavors by value rather than reference. The resolved `type` is
|
|
117
|
+
* deep-cloned by `merge()` when the config loads (see `ConsentConfig.load`), so
|
|
118
|
+
* `this.type === flavors.seven` stops holding after the first config load even
|
|
119
|
+
* though every field still matches. Every flavor has a unique field signature,
|
|
120
|
+
* so a field-by-field comparison reliably identifies a flavor post-clone.
|
|
121
|
+
*/
|
|
122
|
+
const isSameFlavor = (a: Flavor | undefined, b: Flavor): boolean =>
|
|
123
|
+
!!a &&
|
|
124
|
+
a.timer === b.timer &&
|
|
125
|
+
a.analyticsAlways === b.analyticsAlways &&
|
|
126
|
+
a.categories === b.categories &&
|
|
127
|
+
a.rejectAll === b.rejectAll &&
|
|
128
|
+
a.firstLayerUsage === b.firstLayerUsage &&
|
|
129
|
+
a.managePreferences === b.managePreferences &&
|
|
130
|
+
a.canDismissDialog === b.canDismissDialog;
|
|
131
|
+
|
|
115
132
|
const migrateIabConfig = (
|
|
116
133
|
config: Iab,
|
|
117
134
|
gdprApplies: boolean = false,
|
|
@@ -320,6 +337,7 @@ export class ConsentConfig extends EventEmitter {
|
|
|
320
337
|
| 'four'
|
|
321
338
|
| 'five'
|
|
322
339
|
| 'six'
|
|
340
|
+
| 'seven'
|
|
323
341
|
| ''
|
|
324
342
|
| undefined {
|
|
325
343
|
return this._config.variant;
|
|
@@ -391,6 +409,56 @@ export class ConsentConfig extends EventEmitter {
|
|
|
391
409
|
return this.type.rejectAll;
|
|
392
410
|
}
|
|
393
411
|
|
|
412
|
+
/**
|
|
413
|
+
* True only for Flavor 7 (the analytics-on-by-default banner). Compared by
|
|
414
|
+
* value, not reference, because `merge()` deep-clones `type` on config load
|
|
415
|
+
* (see `isSameFlavor`).
|
|
416
|
+
*/
|
|
417
|
+
private get isFlavorSeven(): boolean {
|
|
418
|
+
return isSameFlavor(this.type, flavors.seven);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Flavor 7 shows analytics enabled on first load, before the visitor has made
|
|
423
|
+
* a choice. Scoped to Flavor 7 so the other analytics-always banners (4, 5)
|
|
424
|
+
* keep their existing first-load behaviour. Only applies when there is no
|
|
425
|
+
* stored consent, so a prior opt-out is never overridden.
|
|
426
|
+
*/
|
|
427
|
+
get analyticsDefaultsOnAtFirstLoad(): boolean {
|
|
428
|
+
return this.isFlavorSeven;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Whether the banner shows a dismiss (X) button. Scoped to hide it for
|
|
433
|
+
* Flavor 7 only; every other flavor keeps its current behaviour (the X is
|
|
434
|
+
* rendered regardless of `canDismissDialog` today, so this intentionally does
|
|
435
|
+
* not gate on `dialogCloseButtonRequired`, which would change Flavors 3/6).
|
|
436
|
+
*/
|
|
437
|
+
get showDismissButton(): boolean {
|
|
438
|
+
return !this.isFlavorSeven;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Locale key for the banner body copy. Flavor 7 explains that analytics is
|
|
443
|
+
* loaded by default; every other flavor keeps the standard `messaging.default`.
|
|
444
|
+
*/
|
|
445
|
+
get bannerMessageKey(): string {
|
|
446
|
+
return this.isFlavorSeven
|
|
447
|
+
? 'messaging.analyticsOnByDefault'
|
|
448
|
+
: 'messaging.default';
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Locale key for the reject/deny button label. Flavor 7 uses
|
|
453
|
+
* "Deny Non-Essential"; every other flavor keeps its jurisdiction-specific
|
|
454
|
+
* "Reject All" label.
|
|
455
|
+
*/
|
|
456
|
+
get rejectButtonLabelKey(): string {
|
|
457
|
+
return this.isFlavorSeven
|
|
458
|
+
? 'buttons.denyNonEssential'
|
|
459
|
+
: `buttons.dialog.denyAll.${this.jurisdiction}`;
|
|
460
|
+
}
|
|
461
|
+
|
|
394
462
|
// IAB
|
|
395
463
|
private _iabEnabled?: boolean;
|
|
396
464
|
get iabEnabled(): boolean {
|
|
@@ -615,12 +683,22 @@ export class ConsentManager {
|
|
|
615
683
|
private _translator: Translator = new Translator(this);
|
|
616
684
|
private _overridePalette?: Palette;
|
|
617
685
|
private _googleConsentModeCallback?: GoogleConsentModeCallback;
|
|
686
|
+
private _consentExpirationTestingSeconds?: number;
|
|
618
687
|
|
|
619
688
|
private _deviceId = '';
|
|
620
689
|
public get deviceId(): string {
|
|
621
690
|
return this._deviceId;
|
|
622
691
|
}
|
|
623
692
|
|
|
693
|
+
/**
|
|
694
|
+
* The debug-only consent expiration testing window, in seconds, or
|
|
695
|
+
* `undefined` when testing mode is disabled. Read by the consent service to
|
|
696
|
+
* decide whether stored consent should be treated as expired.
|
|
697
|
+
*/
|
|
698
|
+
public get consentExpirationTestingSeconds(): number | undefined {
|
|
699
|
+
return this._consentExpirationTestingSeconds;
|
|
700
|
+
}
|
|
701
|
+
|
|
624
702
|
public get customerId(): string {
|
|
625
703
|
return this._config.customerId;
|
|
626
704
|
}
|
|
@@ -659,8 +737,28 @@ export class ConsentManager {
|
|
|
659
737
|
}
|
|
660
738
|
|
|
661
739
|
constructor(options?: OsanoOverrides, extUsrData?: string) {
|
|
662
|
-
const {
|
|
663
|
-
|
|
740
|
+
const {
|
|
741
|
+
locale,
|
|
742
|
+
flavor,
|
|
743
|
+
iabEnabled,
|
|
744
|
+
iabFrameworks,
|
|
745
|
+
iabVersions,
|
|
746
|
+
palette,
|
|
747
|
+
consentExpirationTestingSeconds,
|
|
748
|
+
} = options || {};
|
|
749
|
+
|
|
750
|
+
// Debug-only: allow a short consent expiration window for testing. Held
|
|
751
|
+
// in memory only (never persisted), and ignored outside __DEV__.
|
|
752
|
+
if (
|
|
753
|
+
__DEV__ &&
|
|
754
|
+
consentExpirationTestingSeconds != null &&
|
|
755
|
+
consentExpirationTestingSeconds > 0
|
|
756
|
+
) {
|
|
757
|
+
this._consentExpirationTestingSeconds = consentExpirationTestingSeconds;
|
|
758
|
+
OsanoLogger.warn(
|
|
759
|
+
`⚠️ TESTING MODE - Consent will expire in ${consentExpirationTestingSeconds} seconds`,
|
|
760
|
+
);
|
|
761
|
+
}
|
|
664
762
|
|
|
665
763
|
this._config.iabEnabled = iabEnabled ?? undefined;
|
|
666
764
|
this._config.iabFrameworks = iabFrameworks || this._config.iabFrameworks;
|
|
@@ -926,6 +1024,42 @@ export class ConsentManager {
|
|
|
926
1024
|
return this;
|
|
927
1025
|
}
|
|
928
1026
|
|
|
1027
|
+
/**
|
|
1028
|
+
* Debug-only. Force stored consent to expire after `expirationSeconds` so the
|
|
1029
|
+
* consent banner can be re-triggered quickly during testing. Pass `null` (or a
|
|
1030
|
+
* non-positive value) to disable. The value is held in memory only and is
|
|
1031
|
+
* never persisted. Outside `__DEV__` this is a no-op (mirrors the Android
|
|
1032
|
+
* SDK's `setConsentExpirationTestingMode`, which is only available in debug
|
|
1033
|
+
* builds).
|
|
1034
|
+
*
|
|
1035
|
+
* Note: the expiration check runs while consent is loaded, so setting this at
|
|
1036
|
+
* init time (via `overrides.consentExpirationTestingSeconds`) is the reliable
|
|
1037
|
+
* path for a reload-and-reprompt test. A runtime call takes effect on the
|
|
1038
|
+
* next consent load.
|
|
1039
|
+
*
|
|
1040
|
+
* @param expirationSeconds - Seconds until consent expires, or `null` to disable.
|
|
1041
|
+
* @returns this ConsentManager instance for method chaining
|
|
1042
|
+
*/
|
|
1043
|
+
public setConsentExpirationTestingMode(
|
|
1044
|
+
expirationSeconds: number | null,
|
|
1045
|
+
): this {
|
|
1046
|
+
if (!__DEV__) {
|
|
1047
|
+
// Documented as a no-op outside debug builds — stay completely silent
|
|
1048
|
+
// so production callers see no logging or side effects.
|
|
1049
|
+
return this;
|
|
1050
|
+
}
|
|
1051
|
+
if (expirationSeconds == null || expirationSeconds <= 0) {
|
|
1052
|
+
this._consentExpirationTestingSeconds = undefined;
|
|
1053
|
+
OsanoLogger.info('Consent expiration testing mode disabled');
|
|
1054
|
+
} else {
|
|
1055
|
+
this._consentExpirationTestingSeconds = expirationSeconds;
|
|
1056
|
+
OsanoLogger.warn(
|
|
1057
|
+
`⚠️ TESTING MODE - Consent will expire in ${expirationSeconds} seconds`,
|
|
1058
|
+
);
|
|
1059
|
+
}
|
|
1060
|
+
return this;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
929
1063
|
/**
|
|
930
1064
|
* Trigger Google Consent Mode update with current consent categories
|
|
931
1065
|
*
|
|
@@ -187,7 +187,7 @@ export const AcceptButton: React.FC<ButtonProps> = (props) => {
|
|
|
187
187
|
|
|
188
188
|
export const DenyButton: React.FC<ButtonProps> = (props) => {
|
|
189
189
|
const { cmp, dispatch } = useContext(OsanoPrivateContext);
|
|
190
|
-
const { onPress, ...remain } = props;
|
|
190
|
+
const { onPress, title, defaultPhrase, testID, ...remain } = props;
|
|
191
191
|
|
|
192
192
|
const handleReject = useCallback(() => {
|
|
193
193
|
dispatch(setAllVendorConsent(false));
|
|
@@ -202,9 +202,9 @@ export const DenyButton: React.FC<ButtonProps> = (props) => {
|
|
|
202
202
|
<BaseButton
|
|
203
203
|
{...remain}
|
|
204
204
|
onPress={onPress || handleReject}
|
|
205
|
-
title=
|
|
206
|
-
defaultPhrase=
|
|
207
|
-
testID=
|
|
205
|
+
title={title ?? 'buttons.deny'}
|
|
206
|
+
defaultPhrase={defaultPhrase ?? 'Deny'}
|
|
207
|
+
testID={testID ?? 'Deny'}
|
|
208
208
|
/>
|
|
209
209
|
);
|
|
210
210
|
};
|
|
@@ -236,10 +236,12 @@ export const AcceptAllButton: React.FC<ButtonProps> = (props) => {
|
|
|
236
236
|
export const RejectAllButton: React.FC<ButtonProps> = (props) => {
|
|
237
237
|
const { config } = useContext(OsanoPrivateContext);
|
|
238
238
|
|
|
239
|
+
// Flavor 7 relabels the reject button to "Deny Non-Essential"; every other
|
|
240
|
+
// flavor uses its jurisdiction-specific "Reject All" label.
|
|
239
241
|
return (
|
|
240
242
|
<DenyButton
|
|
241
243
|
{...props}
|
|
242
|
-
title={
|
|
244
|
+
title={config?.rejectButtonLabelKey}
|
|
243
245
|
defaultPhrase="Reject All"
|
|
244
246
|
testID="Reject All"
|
|
245
247
|
/>
|
package/src/context.ts
CHANGED
|
@@ -32,6 +32,7 @@ type OsanoPublicContextType = {
|
|
|
32
32
|
setLocale: (locale: string) => void;
|
|
33
33
|
showBanner: () => void;
|
|
34
34
|
showDrawer: () => void;
|
|
35
|
+
setConsentExpirationTestingMode: (expirationSeconds: number | null) => void;
|
|
35
36
|
isReady: boolean;
|
|
36
37
|
};
|
|
37
38
|
|
|
@@ -70,6 +71,7 @@ export const OsanoPublicContext = React.createContext<OsanoPublicContextType>({
|
|
|
70
71
|
setLocale: noop,
|
|
71
72
|
showBanner: noop,
|
|
72
73
|
showDrawer: noop,
|
|
74
|
+
setConsentExpirationTestingMode: noop,
|
|
73
75
|
isReady: false,
|
|
74
76
|
});
|
|
75
77
|
|
package/src/flavors/index.ts
CHANGED
|
@@ -15,11 +15,13 @@ enum FlavorKeys {
|
|
|
15
15
|
four = 'four',
|
|
16
16
|
five = 'five',
|
|
17
17
|
six = 'six',
|
|
18
|
+
seven = 'seven',
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
import { five } from './five.json';
|
|
21
22
|
import { four } from './four.json';
|
|
22
23
|
import { one } from './one.json';
|
|
24
|
+
import { seven } from './seven.json';
|
|
23
25
|
import { six } from './six.json';
|
|
24
26
|
import { three } from './three.json';
|
|
25
27
|
import { two } from './two.json';
|
|
@@ -31,6 +33,7 @@ export const flavors: Record<FlavorKeys, Flavor> = {
|
|
|
31
33
|
four: four as Flavor,
|
|
32
34
|
five: five as Flavor,
|
|
33
35
|
six: six as Flavor,
|
|
36
|
+
seven: seven as Flavor,
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
export const defaultFlavor = 'two';
|
package/src/index.tsx
CHANGED
|
@@ -161,6 +161,15 @@ export const Osano: React.FunctionComponent<
|
|
|
161
161
|
return consentManager.current.jurisdiction;
|
|
162
162
|
}, []);
|
|
163
163
|
|
|
164
|
+
const handleSetConsentExpirationTestingMode = useCallback(
|
|
165
|
+
(expirationSeconds: number | null) => {
|
|
166
|
+
consentManager.current.setConsentExpirationTestingMode(
|
|
167
|
+
expirationSeconds,
|
|
168
|
+
);
|
|
169
|
+
},
|
|
170
|
+
[],
|
|
171
|
+
);
|
|
172
|
+
|
|
164
173
|
const context = useMemo(() => {
|
|
165
174
|
return {
|
|
166
175
|
locale: consentManager.current.translator.locale,
|
|
@@ -172,6 +181,7 @@ export const Osano: React.FunctionComponent<
|
|
|
172
181
|
setLocale: handleSetLocale,
|
|
173
182
|
showBanner: handleShowDialog,
|
|
174
183
|
showDrawer: handleShowDrawer,
|
|
184
|
+
setConsentExpirationTestingMode: handleSetConsentExpirationTestingMode,
|
|
175
185
|
isReady: consentManager.current.loaded,
|
|
176
186
|
};
|
|
177
187
|
}, [
|
package/src/locale/af.json
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"messaging": {
|
|
52
52
|
"poweredBy": "Aangedryf deur Osano",
|
|
53
53
|
"default": "Hierdie webwerf gebruik tegnologieë soos webkoekies om noodsaaklike werffunksionaliteit te aktiveer, sowel as vir %{analytics}, %{personalization} en %{marketing}.",
|
|
54
|
+
"analyticsOnByDefault": "Hierdie webwerf gebruik tegnologieë soos koekies om noodsaaklike webwerffunksionaliteit moontlik te maak. %{analytics}–tegnologieë word ook standaard gelaai om ons te help om webwerfprestasie te meet. U toestemming is nie nodig nie, maar u kan te eniger tyd uittree. Alle ander kategorieë, insluitend %{marketing} en %{personalization}, sal nie sonder u toestemming geaktiveer word nie.",
|
|
54
55
|
"categories": "Jy kan jou instellings enige tyd verander of die verstekinstellings aanvaar.",
|
|
55
56
|
"cookieQuestion": "Wat is 'n koekie?",
|
|
56
57
|
"timer": "Om meer te wete te kom, sien die volgende skakel:",
|
package/src/locale/ar.json
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"messaging": {
|
|
52
52
|
"poweredBy": "بدعم من Osano",
|
|
53
53
|
"default": "يستخدم هذا الموقع تقنيات مثل ملفات تعريف الارتباط لتمكين وظائف الموقع الأساسية، بالإضافة إلى %{analytics} و%{personalization} و%{marketing}.",
|
|
54
|
+
"analyticsOnByDefault": "يستخدم هذا الموقع تقنيات مثل ملفات تعريف الارتباط لتمكين وظائف الموقع الأساسية. كما يتم تحميل تقنيات %{analytics} افتراضيًا لمساعدتنا في قياس أداء الموقع. موافقتك ليست مطلوبة، ولكن يمكنك إلغاء الاشتراك في أي وقت. لن يتم تفعيل أي فئات أخرى، بما في ذلك %{marketing} و%{personalization}، بدون موافقتك.",
|
|
54
55
|
"categories": "بإمكانك تغيير إعداداتك وقتما تشاء أو قبول الإعدادات الافتراضية.",
|
|
55
56
|
"cookieQuestion": "ما ملف تعريف الارتباط؟",
|
|
56
57
|
"timer": "لمعرفة المزيد، يُرجى زيارة الرابط التالي:",
|
package/src/locale/bg.json
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"messaging": {
|
|
52
52
|
"poweredBy": "Осъществено от Osano",
|
|
53
53
|
"default": "Този уебсайт използва технологии като бисквитки, за да активира основната функционалност на сайта, както и за %{analytics}, %{personalization} и %{marketing}.",
|
|
54
|
+
"analyticsOnByDefault": "Този уебсайт използва технологии като „бисквитки“, за да осигури основна функционалност на сайта. Технологиите %{analytics} също се зареждат по подразбиране, за да ни помогнат да измерим ефективността на сайта. Вашето съгласие не е необходимо, но можете да се откажете по всяко време. Всички останали категории, включително %{marketing} и %{personalization}, няма да бъдат активирани без вашето съгласие.",
|
|
54
55
|
"categories": "Можете да промените настройките си по всяко време или да приемете настройките по подразбиране.",
|
|
55
56
|
"cookieQuestion": "Какво представлява бисквитка?",
|
|
56
57
|
"timer": "За да научите повече, вижте следната връзка:",
|
package/src/locale/ca.json
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"messaging": {
|
|
52
52
|
"poweredBy": "Desenvolupat per Osano",
|
|
53
53
|
"default": "Aquest lloc web utilitza tecnologies com ara galetes per habilitar la funcionalitat essencial del lloc, així com per a %{analytics}, %{personalization} i %{marketing}.",
|
|
54
|
+
"analyticsOnByDefault": "Aquest lloc web utilitza tecnologies com ara les galetes (cookies) per habilitar les funcions essencials del lloc. Les tecnologies %{analytics} també es carreguen per defecte per ajudar–nos a mesurar el rendiment del lloc. No cal el vostre consentiment, però podeu optar per no participar–hi en qualsevol moment. Cap altra categoria, incloses %{marketing} i %{personalization}, no s'activarà sense el vostre consentiment.",
|
|
54
55
|
"categories": "Podeu canviar la configuració en qualsevol moment o acceptar la configuració predeterminada.",
|
|
55
56
|
"cookieQuestion": "Què és una galeta?",
|
|
56
57
|
"timer": "Per obtenir més informació, consulteu el següent enllaç:",
|
package/src/locale/cs.json
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"messaging": {
|
|
52
52
|
"poweredBy": "Běží na Osano",
|
|
53
53
|
"default": "Tento web využívá technologie, jako jsou soubory cookie, aby umožnily základní funkce webu, a také pro %{analytics}, %{personalization} a %{marketing}.",
|
|
54
|
+
"analyticsOnByDefault": "Tyto webové stránky využívají technologie, jako jsou soubory cookie, k zajištění základních funkcí webu. Technologie %{analytics} jsou také standardně načteny, aby nám pomohly měřit výkon webu. Váš souhlas není vyžadován, ale můžete se kdykoli odhlásit. Všechny ostatní kategorie, včetně %{marketing} a %{personalization}, nebudou bez vašeho souhlasu aktivovány.",
|
|
54
55
|
"categories": "Nastavení můžete kdykoli změnit nebo přijmout výchozí nastavení.",
|
|
55
56
|
"cookieQuestion": "Své preference můžete kdykoli změnit nebo přijmout výchozí nastavení.",
|
|
56
57
|
"timer": "Chcete-li se dozvědět více, podívejte se na následující odkaz:",
|
package/src/locale/da.json
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"messaging": {
|
|
52
52
|
"poweredBy": "Drevet af Osano",
|
|
53
53
|
"default": "Dette websted bruger teknologier såsom cookies til at aktivere væsentlige webstedsfunktioner såvel som for %{analytics}, %{personalization} og %{marketing}.",
|
|
54
|
+
"analyticsOnByDefault": "Dette websted bruger teknologier som f.eks. cookies til at muliggøre essentiel webstedsfunktionalitet. %{analytics}–teknologier indlæses også som standard for at hjælpe os med at måle webstedets ydeevne. Dit samtykke er ikke påkrævet, men du kan til enhver tid framelde dig. Alle andre kategorier, herunder %{marketing} og %{personalization}, vil ikke blive aktiveret uden dit samtykke.",
|
|
54
55
|
"categories": "Du kan til enhver tid ændre dine indstillinger eller acceptere standardindstillingerne.",
|
|
55
56
|
"cookieQuestion": "Hvad er en cookie?",
|
|
56
57
|
"timer": "For at lære mere, se følgende link:",
|