@transcend-io/airgap.js-types 13.0.0 → 14.0.0
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/LICENSE +201 -21
- package/dist/index.d.mts +2510 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +1018 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +41 -41
- package/.yarn/sdks/eslint/package.json +0 -14
- package/.yarn/sdks/prettier/package.json +0 -7
- package/.yarn/sdks/typescript/package.json +0 -10
- package/README.md +0 -12
- package/build/constants.d.ts +0 -16
- package/build/constants.d.ts.map +0 -1
- package/build/constants.js +0 -46
- package/build/constants.js.map +0 -1
- package/build/core.d.ts +0 -1083
- package/build/core.d.ts.map +0 -1
- package/build/core.js +0 -226
- package/build/core.js.map +0 -1
- package/build/enums/browserLanguage.d.ts +0 -311
- package/build/enums/browserLanguage.d.ts.map +0 -1
- package/build/enums/browserLanguage.js +0 -314
- package/build/enums/browserLanguage.js.map +0 -1
- package/build/enums/consentExpiry.d.ts +0 -14
- package/build/enums/consentExpiry.d.ts.map +0 -1
- package/build/enums/consentExpiry.js +0 -16
- package/build/enums/consentExpiry.js.map +0 -1
- package/build/enums/experience.d.ts +0 -12
- package/build/enums/experience.d.ts.map +0 -1
- package/build/enums/experience.js +0 -15
- package/build/enums/experience.js.map +0 -1
- package/build/enums/index.d.ts +0 -7
- package/build/enums/index.d.ts.map +0 -1
- package/build/enums/index.js +0 -23
- package/build/enums/index.js.map +0 -1
- package/build/enums/privacyRegime.d.ts +0 -25
- package/build/enums/privacyRegime.d.ts.map +0 -1
- package/build/enums/privacyRegime.js +0 -29
- package/build/enums/privacyRegime.js.map +0 -1
- package/build/enums/purpose.d.ts +0 -88
- package/build/enums/purpose.d.ts.map +0 -1
- package/build/enums/purpose.js +0 -62
- package/build/enums/purpose.js.map +0 -1
- package/build/enums/viewState.d.ts +0 -197
- package/build/enums/viewState.d.ts.map +0 -1
- package/build/enums/viewState.js +0 -98
- package/build/enums/viewState.js.map +0 -1
- package/build/experience.d.ts +0 -63
- package/build/experience.d.ts.map +0 -1
- package/build/experience.js +0 -136
- package/build/experience.js.map +0 -1
- package/build/iab.d.ts +0 -320
- package/build/iab.d.ts.map +0 -1
- package/build/iab.js +0 -188
- package/build/iab.js.map +0 -1
- package/build/index.d.ts +0 -8
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -24
- package/build/index.js.map +0 -1
- package/build/mobile.d.ts +0 -44
- package/build/mobile.d.ts.map +0 -1
- package/build/mobile.js +0 -46
- package/build/mobile.js.map +0 -1
- package/build/tsbuildinfo +0 -1
- package/build/ui.d.ts +0 -645
- package/build/ui.d.ts.map +0 -1
- package/build/ui.js +0 -159
- package/build/ui.js.map +0 -1
- package/build-esm/constants.d.ts +0 -16
- package/build-esm/constants.d.ts.map +0 -1
- package/build-esm/constants.js +0 -43
- package/build-esm/constants.js.map +0 -1
- package/build-esm/core.d.ts +0 -1083
- package/build-esm/core.d.ts.map +0 -1
- package/build-esm/core.js +0 -200
- package/build-esm/core.js.map +0 -1
- package/build-esm/enums/browserLanguage.d.ts +0 -311
- package/build-esm/enums/browserLanguage.d.ts.map +0 -1
- package/build-esm/enums/browserLanguage.js +0 -311
- package/build-esm/enums/browserLanguage.js.map +0 -1
- package/build-esm/enums/consentExpiry.d.ts +0 -14
- package/build-esm/enums/consentExpiry.d.ts.map +0 -1
- package/build-esm/enums/consentExpiry.js +0 -13
- package/build-esm/enums/consentExpiry.js.map +0 -1
- package/build-esm/enums/experience.d.ts +0 -12
- package/build-esm/enums/experience.d.ts.map +0 -1
- package/build-esm/enums/experience.js +0 -12
- package/build-esm/enums/experience.js.map +0 -1
- package/build-esm/enums/index.d.ts +0 -7
- package/build-esm/enums/index.d.ts.map +0 -1
- package/build-esm/enums/index.js +0 -7
- package/build-esm/enums/index.js.map +0 -1
- package/build-esm/enums/privacyRegime.d.ts +0 -25
- package/build-esm/enums/privacyRegime.d.ts.map +0 -1
- package/build-esm/enums/privacyRegime.js +0 -26
- package/build-esm/enums/privacyRegime.js.map +0 -1
- package/build-esm/enums/purpose.d.ts +0 -88
- package/build-esm/enums/purpose.d.ts.map +0 -1
- package/build-esm/enums/purpose.js +0 -59
- package/build-esm/enums/purpose.js.map +0 -1
- package/build-esm/enums/viewState.d.ts +0 -197
- package/build-esm/enums/viewState.d.ts.map +0 -1
- package/build-esm/enums/viewState.js +0 -95
- package/build-esm/enums/viewState.js.map +0 -1
- package/build-esm/experience.d.ts +0 -63
- package/build-esm/experience.d.ts.map +0 -1
- package/build-esm/experience.js +0 -132
- package/build-esm/experience.js.map +0 -1
- package/build-esm/iab.d.ts +0 -320
- package/build-esm/iab.d.ts.map +0 -1
- package/build-esm/iab.js +0 -162
- package/build-esm/iab.js.map +0 -1
- package/build-esm/index.d.ts +0 -8
- package/build-esm/index.d.ts.map +0 -1
- package/build-esm/index.js +0 -8
- package/build-esm/index.js.map +0 -1
- package/build-esm/mobile.d.ts +0 -44
- package/build-esm/mobile.d.ts.map +0 -1
- package/build-esm/mobile.js +0 -20
- package/build-esm/mobile.js.map +0 -1
- package/build-esm/ui.d.ts +0 -645
- package/build-esm/ui.d.ts.map +0 -1
- package/build-esm/ui.js +0 -133
- package/build-esm/ui.js.map +0 -1
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,1018 @@
|
|
|
1
|
+
import { FixedLengthArray, applyEnum, makeEnum, valuesOf } from "@transcend-io/type-utils";
|
|
2
|
+
import * as t from "io-ts";
|
|
3
|
+
import "@transcend-io/privacy-types";
|
|
4
|
+
//#region src/enums/purpose.ts
|
|
5
|
+
/**
|
|
6
|
+
* The options for the type of purpose that airgap classifies requests into
|
|
7
|
+
*/
|
|
8
|
+
const SpecialTrackingPurpose = makeEnum({
|
|
9
|
+
Unknown: "Unknown",
|
|
10
|
+
Essential: "Essential"
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Possible values for the default consent that can be given to a tracking purpose
|
|
14
|
+
*/
|
|
15
|
+
const DefaultConsentValue = makeEnum({
|
|
16
|
+
Off: "off",
|
|
17
|
+
Auto: "Auto"
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Purposes that can be configured
|
|
21
|
+
*/
|
|
22
|
+
const ConfigurablePurpose = makeEnum({
|
|
23
|
+
Advertising: "Advertising",
|
|
24
|
+
Analytics: "Analytics",
|
|
25
|
+
Functional: "Functional",
|
|
26
|
+
SaleOfInfo: "SaleOfInfo"
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Purposes that can be configured
|
|
30
|
+
*/
|
|
31
|
+
const KnownDefaultPurpose = makeEnum({
|
|
32
|
+
Essential: "Essential",
|
|
33
|
+
...ConfigurablePurpose
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Purposes used by the purpose map
|
|
37
|
+
*/
|
|
38
|
+
const Purpose = makeEnum({
|
|
39
|
+
...SpecialTrackingPurpose,
|
|
40
|
+
...ConfigurablePurpose
|
|
41
|
+
});
|
|
42
|
+
/** User-configurable user agent privacy signal */
|
|
43
|
+
const UserPrivacySignalEnum = makeEnum({
|
|
44
|
+
GPC: "GPC",
|
|
45
|
+
DNT: "DNT"
|
|
46
|
+
});
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/enums/privacyRegime.ts
|
|
49
|
+
/**
|
|
50
|
+
* Potentially applicable data privacy legal regimes
|
|
51
|
+
* NOTE: Please make sure that new entries are compatible with GraphQL Enums
|
|
52
|
+
*/
|
|
53
|
+
let PrivacyRegimeEnum = /* @__PURE__ */ function(PrivacyRegimeEnum) {
|
|
54
|
+
/** Unable to determine any applicable regimes */
|
|
55
|
+
PrivacyRegimeEnum["Unknown"] = "Unknown";
|
|
56
|
+
/** California Privacy Rights Act (and CCPA: California Consumer Privacy Act) */
|
|
57
|
+
PrivacyRegimeEnum["CPRA"] = "CPRA";
|
|
58
|
+
/** EU General Data Protection Regulation */
|
|
59
|
+
PrivacyRegimeEnum["GDPR"] = "GDPR";
|
|
60
|
+
/** Brazil Lei Geral de Proteção de Dados (General Personal Data Protection Law) */
|
|
61
|
+
PrivacyRegimeEnum["LGPD"] = "LGPD";
|
|
62
|
+
/** Virginia Consumer Data Protection Act */
|
|
63
|
+
PrivacyRegimeEnum["CDPA"] = "CDPA";
|
|
64
|
+
/** Colorado Privacy Act */
|
|
65
|
+
PrivacyRegimeEnum["CPA"] = "CPA";
|
|
66
|
+
/** Nevada Senate Bill 220 */
|
|
67
|
+
PrivacyRegimeEnum["NEVADA_SB220"] = "NEVADA_SB220";
|
|
68
|
+
/** Switzerland New Federal Act on Data Protection */
|
|
69
|
+
PrivacyRegimeEnum["nFADP"] = "nFADP";
|
|
70
|
+
/** US Do Not Sell/Share */
|
|
71
|
+
PrivacyRegimeEnum["US_DNSS"] = "US_DNSS";
|
|
72
|
+
return PrivacyRegimeEnum;
|
|
73
|
+
}({});
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/enums/viewState.ts
|
|
76
|
+
/**
|
|
77
|
+
* Consent Manager view state for the Interactive Advertising Bureau
|
|
78
|
+
*/
|
|
79
|
+
const IABViewState = makeEnum({ TCF_EU: "TCF_EU" });
|
|
80
|
+
/**
|
|
81
|
+
* View States for Transcend's Consent Manager UI
|
|
82
|
+
*/
|
|
83
|
+
const InitialTranscendViewState = makeEnum({
|
|
84
|
+
QuickOptions: "QuickOptions",
|
|
85
|
+
QuickOptions3: "QuickOptions3",
|
|
86
|
+
AcceptAll: "AcceptAll",
|
|
87
|
+
AcceptAllRejectAllToggle: "AcceptAllRejectAllToggle",
|
|
88
|
+
AcceptAllOrMoreChoices: "AcceptAllOrMoreChoices",
|
|
89
|
+
AcceptOrRejectAll: "AcceptOrRejectAll",
|
|
90
|
+
AcceptOrRejectAllOrMoreChoices: "AcceptOrRejectAllOrMoreChoices",
|
|
91
|
+
AcceptOrRejectAnalytics: "AcceptOrRejectAnalytics",
|
|
92
|
+
AcceptOrRejectAdvertising: "AcceptOrRejectAdvertising",
|
|
93
|
+
NoticeAndDoNotSell: "NoticeAndDoNotSell",
|
|
94
|
+
DoNotSellExplainer: "DoNotSellExplainer",
|
|
95
|
+
CompleteOptionsToggles: "CompleteOptionsToggles",
|
|
96
|
+
PrivacyPolicyNotice: "PrivacyPolicyNotice",
|
|
97
|
+
PrivacyPolicyNoticeWithCloseButton: "PrivacyPolicyNoticeWithCloseButton",
|
|
98
|
+
CompleteOptions: "CompleteOptions",
|
|
99
|
+
CompleteOptionsInverted: "CompleteOptionsInverted",
|
|
100
|
+
Hidden: "Hidden"
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Consent Manager view states that can be used at launch
|
|
104
|
+
*/
|
|
105
|
+
const InitialViewState = makeEnum({
|
|
106
|
+
...InitialTranscendViewState,
|
|
107
|
+
...IABViewState
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* View states that are displayed in response to a user request (e.g. transcend.doNotSell() or )
|
|
111
|
+
*/
|
|
112
|
+
const ResponseViewState = makeEnum({
|
|
113
|
+
DoNotSellDisclosure: "DoNotSellDisclosure",
|
|
114
|
+
OptOutDisclosure: "OptOutDisclosure"
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* Consent Manager view states that can be navigated to after initial view state
|
|
118
|
+
*/
|
|
119
|
+
const DeepViewState = makeEnum({ LanguageOptions: "LanguageOptions" });
|
|
120
|
+
/**
|
|
121
|
+
* Consent Manager view states after it's been dismissed
|
|
122
|
+
*/
|
|
123
|
+
const DismissedViewState = makeEnum({
|
|
124
|
+
Collapsed: "Collapsed",
|
|
125
|
+
Closed: "Closed"
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* All possible view states of the Consent Manager
|
|
129
|
+
*/
|
|
130
|
+
const ViewState = makeEnum({
|
|
131
|
+
...InitialViewState,
|
|
132
|
+
...ResponseViewState,
|
|
133
|
+
...DeepViewState,
|
|
134
|
+
...DismissedViewState
|
|
135
|
+
});
|
|
136
|
+
//#endregion
|
|
137
|
+
//#region src/enums/browserLanguage.ts
|
|
138
|
+
const BrowserLanguage = makeEnum({
|
|
139
|
+
"(Afan)/Oromoor/Oriya": "om",
|
|
140
|
+
Abkhazian: "ab",
|
|
141
|
+
Afar: "aa",
|
|
142
|
+
Afrikaans: "af",
|
|
143
|
+
Akan: "ak",
|
|
144
|
+
Albanian: "sq",
|
|
145
|
+
Amharic: "am",
|
|
146
|
+
Arabic: "ar",
|
|
147
|
+
"Arabic (Algeria)": "ar-DZ",
|
|
148
|
+
"Arabic (Bahrain)": "ar-BH",
|
|
149
|
+
"Arabic (Egypt)": "ar-EG",
|
|
150
|
+
"Arabic (Iraq)": "ar-IQ",
|
|
151
|
+
"Arabic (Jordan)": "ar-JO",
|
|
152
|
+
"Arabic (Kuwait)": "ar-KW",
|
|
153
|
+
"Arabic (Lebanon)": "ar-LB",
|
|
154
|
+
"Arabic (Morocco)": "ar-MA",
|
|
155
|
+
"Arabic (Oman)": "ar-OM",
|
|
156
|
+
"Arabic (Qatar)": "ar-QA",
|
|
157
|
+
"Arabic (Saudi Arabia)": "ar-SA",
|
|
158
|
+
"Arabic (Syria)": "ar-SY",
|
|
159
|
+
"Arabic (Tunisia)": "ar-TN",
|
|
160
|
+
"Arabic (U.A.E.)": "ar-AE",
|
|
161
|
+
"Arabic (Yemen)": "ar-YE",
|
|
162
|
+
"Arabic (libya)": "ar-LY",
|
|
163
|
+
Aragonese: "an",
|
|
164
|
+
Armenian: "hy",
|
|
165
|
+
Assamese: "as",
|
|
166
|
+
Avaric: "av",
|
|
167
|
+
Avestan: "ae",
|
|
168
|
+
Aymara: "ay",
|
|
169
|
+
Azeri: "az",
|
|
170
|
+
Bambara: "bm",
|
|
171
|
+
Bashkir: "ba",
|
|
172
|
+
Basque: "eu",
|
|
173
|
+
Belarusian: "be",
|
|
174
|
+
Bengali: "bn",
|
|
175
|
+
Bhutani: "dz",
|
|
176
|
+
Bihari: "bh",
|
|
177
|
+
Bislama: "bi",
|
|
178
|
+
Bosnian: "bs",
|
|
179
|
+
Breton: "br",
|
|
180
|
+
"Bulgarian (Bulgaria)": "bg-BG",
|
|
181
|
+
Bulgarian: "bg",
|
|
182
|
+
Burmese: "my",
|
|
183
|
+
Cambodian: "km",
|
|
184
|
+
Catalan: "ca",
|
|
185
|
+
Chamorro: "ch",
|
|
186
|
+
Chechen: "ce",
|
|
187
|
+
Chinese: "zh",
|
|
188
|
+
"Chinese (China)": "zh-CN",
|
|
189
|
+
"Chinese (Hong Kong SAR)": "zh-HK",
|
|
190
|
+
"Chinese (Macau SAR)": "zh-MO",
|
|
191
|
+
"Chinese (Singapore)": "zh-SG",
|
|
192
|
+
"Chinese (Simplified)": "zh-Hans",
|
|
193
|
+
"Chinese (Taiwan)": "zh-TW",
|
|
194
|
+
Chichewa: "ny",
|
|
195
|
+
"Church Slavonic": "cu",
|
|
196
|
+
Cornish: "kw",
|
|
197
|
+
Corsican: "co",
|
|
198
|
+
Cree: "cr",
|
|
199
|
+
"Croatian (Bosnia and Herzegovina)": "hr-BA",
|
|
200
|
+
"Croatian (Croatia)": "hr-HR",
|
|
201
|
+
Croatian: "hr",
|
|
202
|
+
"Czech (Czech Republic)": "cs-CZ",
|
|
203
|
+
Czech: "cs",
|
|
204
|
+
Danish: "da",
|
|
205
|
+
"Danish (Denmark)": "da-DK",
|
|
206
|
+
Divehi: "div",
|
|
207
|
+
DivehiDv: "dv",
|
|
208
|
+
Dutch: "nl",
|
|
209
|
+
"Dutch (Belgium)": "nl-BE",
|
|
210
|
+
"Dutch (Netherlands)": "nl-NL",
|
|
211
|
+
English: "us",
|
|
212
|
+
"English (Australia)": "en-AU",
|
|
213
|
+
"English (Belize)": "en-BZ",
|
|
214
|
+
"English (Canada)": "en-CA",
|
|
215
|
+
"English (Caribbean)": "en-CB",
|
|
216
|
+
"English (Ireland)": "en-IE",
|
|
217
|
+
"English (Jamaica)": "en-JM",
|
|
218
|
+
"English (New Zealand)": "en-NZ",
|
|
219
|
+
"English (Philippines)": "en-PH",
|
|
220
|
+
"English (South Africa)": "en-ZA",
|
|
221
|
+
"English (Switzerland)": "en-CH",
|
|
222
|
+
"English (Trinidad)": "en-TT",
|
|
223
|
+
"English (United Kingdom)": "en-GB",
|
|
224
|
+
"English (United States)": "en-US",
|
|
225
|
+
"English (Zimbabwe)": "en-ZW",
|
|
226
|
+
Esperanto: "eo",
|
|
227
|
+
Estonian: "et",
|
|
228
|
+
"Estonian (Estonia)": "et-EE",
|
|
229
|
+
Ewe: "ee",
|
|
230
|
+
Faeroese: "fo",
|
|
231
|
+
Farsi: "fa",
|
|
232
|
+
Fiji: "fj",
|
|
233
|
+
Finnish: "fi",
|
|
234
|
+
"Finnish (Finland)": "fi-FI",
|
|
235
|
+
French: "fr",
|
|
236
|
+
"French (Belgium)": "fr-BE",
|
|
237
|
+
"French (Canada)": "fr-CA",
|
|
238
|
+
"French (France)": "fr-FR",
|
|
239
|
+
"French (Luxembourg)": "fr-LU",
|
|
240
|
+
"French (Monaco)": "fr-MC",
|
|
241
|
+
"French (Switzerland)": "fr-CH",
|
|
242
|
+
Frisian: "fy",
|
|
243
|
+
"FYRO Macedonian": "mk",
|
|
244
|
+
Gaelic: "gd",
|
|
245
|
+
Galician: "gl",
|
|
246
|
+
Ganda: "lg",
|
|
247
|
+
Georgian: "ka",
|
|
248
|
+
German: "de",
|
|
249
|
+
"German (Austria)": "de-AT",
|
|
250
|
+
"German (Germany)": "de-DE",
|
|
251
|
+
"German (Liechtenstein)": "de-LI",
|
|
252
|
+
"German (Luxembourg)": "de-LU",
|
|
253
|
+
"German (Switzerland)": "de-CH",
|
|
254
|
+
Greek: "el",
|
|
255
|
+
"Greek (Greece)": "el-GR",
|
|
256
|
+
Greenlandic: "kl",
|
|
257
|
+
Guarani: "gn",
|
|
258
|
+
Gujarati: "gu",
|
|
259
|
+
Haitian: "ht",
|
|
260
|
+
Hausa: "ha",
|
|
261
|
+
Hebrew: "iw",
|
|
262
|
+
"Hebrew (Israel)": "he-IL",
|
|
263
|
+
"Hebrew (Modern)": "he",
|
|
264
|
+
Herero: "hz",
|
|
265
|
+
Hindi: "hi",
|
|
266
|
+
"Hiri Motu": "ho",
|
|
267
|
+
Hungarian: "hu",
|
|
268
|
+
"Hungarian (Hungary)": "hu-HU",
|
|
269
|
+
Icelandic: "is",
|
|
270
|
+
"Icelandic (Iceland)": "is-IS",
|
|
271
|
+
Igbo: "ig",
|
|
272
|
+
Ido: "io",
|
|
273
|
+
Indonesian: "in",
|
|
274
|
+
"Indonesian (Modern)": "id",
|
|
275
|
+
Interlingua: "ia",
|
|
276
|
+
Interlingue: "ie",
|
|
277
|
+
Inuktitut: "iu",
|
|
278
|
+
Inupiak: "ik",
|
|
279
|
+
Irish: "ga",
|
|
280
|
+
"Irish (Ireland)": "ga-IE",
|
|
281
|
+
Italian: "it",
|
|
282
|
+
"Italian (Italy)": "it-IT",
|
|
283
|
+
"Italian (Switzerland)": "it-CH",
|
|
284
|
+
Japanese: "ja",
|
|
285
|
+
Javanese: "jw",
|
|
286
|
+
Kannada: "kn",
|
|
287
|
+
Kanuri: "kr",
|
|
288
|
+
Kashmiri: "ks",
|
|
289
|
+
Kazakh: "kk",
|
|
290
|
+
Kikuyu: "ki",
|
|
291
|
+
Kinyarwanda: "rw",
|
|
292
|
+
Kirghiz: "ky",
|
|
293
|
+
Kirundi: "rn",
|
|
294
|
+
Kongo: "kg",
|
|
295
|
+
Konkani: "kok",
|
|
296
|
+
Korean: "ko",
|
|
297
|
+
Komi: "kv",
|
|
298
|
+
Kuanyama: "kj",
|
|
299
|
+
Kurdish: "ku",
|
|
300
|
+
Kyrgyz: "kz",
|
|
301
|
+
Laothian: "lo",
|
|
302
|
+
Latin: "la",
|
|
303
|
+
Latvian: "lv",
|
|
304
|
+
"Latvian (Latvia)": "lv-LV",
|
|
305
|
+
Limburgan: "li",
|
|
306
|
+
Lingala: "ln",
|
|
307
|
+
"Lithuanian (Lithuania)": "lt-LT",
|
|
308
|
+
Lithuanian: "lt",
|
|
309
|
+
"Luba-Katanga": "lu",
|
|
310
|
+
Luxembourgish: "lb",
|
|
311
|
+
Malagasy: "mg",
|
|
312
|
+
Malay: "ms",
|
|
313
|
+
"Malay (Brunei Darussalam)": "ms-BN",
|
|
314
|
+
"Malay (Malaysia)": "ms-MY",
|
|
315
|
+
Malayalam: "ml",
|
|
316
|
+
Maltese: "mt",
|
|
317
|
+
"Maltese (Malta)": "mt-MT",
|
|
318
|
+
Manx: "gv",
|
|
319
|
+
Maori: "mi",
|
|
320
|
+
Marathi: "mr",
|
|
321
|
+
Marshallese: "mh",
|
|
322
|
+
Moldavian: "mo",
|
|
323
|
+
Mongolian: "mn",
|
|
324
|
+
Nauru: "na",
|
|
325
|
+
Navajo: "nv",
|
|
326
|
+
Ndonga: "ng",
|
|
327
|
+
"Nepali (India)": "ne",
|
|
328
|
+
"North Ndebele": "nd",
|
|
329
|
+
"Northern Sotho": "ns",
|
|
330
|
+
Norwegian: "no",
|
|
331
|
+
"Norwegian (Norway)": "no-NO",
|
|
332
|
+
"Norwegian Bokmål": "nb",
|
|
333
|
+
"Norwegian Bokmål (Norway)": "nb-NO",
|
|
334
|
+
"Norwegian Nynorsk": "nn",
|
|
335
|
+
"Norwegian Nynorsk (Norway)": "nn-NO",
|
|
336
|
+
"South Ndebele": "nr",
|
|
337
|
+
Occitan: "oc",
|
|
338
|
+
Ojibwa: "oj",
|
|
339
|
+
Oriya: "or",
|
|
340
|
+
Ossetian: "os",
|
|
341
|
+
Pali: "pi",
|
|
342
|
+
"Pashto/Pushto": "ps",
|
|
343
|
+
Polish: "pl",
|
|
344
|
+
"Polish (Poland)": "pl-PL",
|
|
345
|
+
Portuguese: "pt",
|
|
346
|
+
"Portuguese (Brazil)": "pt-BR",
|
|
347
|
+
"Portuguese (Portugal)": "pt-PT",
|
|
348
|
+
"Portuguese (Switzerland)": "pt-CH",
|
|
349
|
+
Punjabi: "pa",
|
|
350
|
+
Quechua: "qu",
|
|
351
|
+
"Quechua (Bolivia)": "qu-BO",
|
|
352
|
+
"Quechua (Ecuador)": "qu-EC",
|
|
353
|
+
"Quechua (Peru)": "qu-PE",
|
|
354
|
+
"Rhaeto-Romanic": "rm",
|
|
355
|
+
Romanian: "ro",
|
|
356
|
+
"Romanian (Moldova)": "ro-MD",
|
|
357
|
+
"Romanian (Romania)": "ro-RO",
|
|
358
|
+
Russian: "ru",
|
|
359
|
+
"Russian (Moldova)": "ru-MD",
|
|
360
|
+
Sami: "se",
|
|
361
|
+
"Sami (Finland)": "se-FI",
|
|
362
|
+
"Sami (Norway)": "se-NO",
|
|
363
|
+
"Sami (Sweden)": "se-SE",
|
|
364
|
+
Samoan: "sm",
|
|
365
|
+
Sango: "sg",
|
|
366
|
+
Sanskrit: "sa",
|
|
367
|
+
Sardinian: "sc",
|
|
368
|
+
Serbian: "sr",
|
|
369
|
+
"Serbian (Bosnia and Herzegovina)": "sr-BA",
|
|
370
|
+
"Serbian (Serbia and Montenegro)": "sr-SP",
|
|
371
|
+
"Serbo-Croatian": "sh",
|
|
372
|
+
Sesotho: "st",
|
|
373
|
+
Shona: "sn",
|
|
374
|
+
"Sichuan Yi": "ii",
|
|
375
|
+
Sindhi: "sd",
|
|
376
|
+
Singhalese: "si",
|
|
377
|
+
Siswati: "ss",
|
|
378
|
+
Slovak: "sk",
|
|
379
|
+
"Slovak (Slovakia)": "sk-SK",
|
|
380
|
+
Slovenian: "sl",
|
|
381
|
+
"Slovenian (Slovenia)": "sl-SI",
|
|
382
|
+
Somali: "so",
|
|
383
|
+
Sorbian: "sb",
|
|
384
|
+
Spanish: "es",
|
|
385
|
+
"Spanish (Argentina)": "es-AR",
|
|
386
|
+
"Spanish (Bolivia)": "es-BO",
|
|
387
|
+
"Spanish (Chile)": "es-CL",
|
|
388
|
+
"Spanish (Colombia)": "es-CO",
|
|
389
|
+
"Spanish (Costa Rica)": "es-CR",
|
|
390
|
+
"Spanish (Dominican Republic)": "es-DO",
|
|
391
|
+
"Spanish (Ecuador)": "es-EC",
|
|
392
|
+
"Spanish (El Salvador)": "es-SV",
|
|
393
|
+
"Spanish (España)": "es-ES",
|
|
394
|
+
"Spanish (Guatemala)": "es-GT",
|
|
395
|
+
"Spanish (Honduras)": "es-HN",
|
|
396
|
+
"Spanish (Mexico)": "es-MX",
|
|
397
|
+
"Spanish (Nicaragua)": "es-NI",
|
|
398
|
+
"Spanish (Panama)": "es-PA",
|
|
399
|
+
"Spanish (Paraguay)": "es-PY",
|
|
400
|
+
"Spanish (Peru)": "es-PE",
|
|
401
|
+
"Spanish (Puerto Rico)": "es-PR",
|
|
402
|
+
"Spanish (United States)": "es-US",
|
|
403
|
+
"Spanish (Uruguay)": "es-UY",
|
|
404
|
+
"Spanish (Venezuela)": "es-VE",
|
|
405
|
+
Sundanese: "su",
|
|
406
|
+
Sutu: "sx",
|
|
407
|
+
Swahili: "sw",
|
|
408
|
+
Swedish: "sv",
|
|
409
|
+
"Swedish (Finland)": "sv-FI",
|
|
410
|
+
"Swedish (Sweden)": "sv-SE",
|
|
411
|
+
"Swiss German": "gsw",
|
|
412
|
+
"Swiss German (Liechtenstein)": "gsw-LI",
|
|
413
|
+
"Swiss German (Switzerland)": "gsw-CH",
|
|
414
|
+
Syriac: "syr",
|
|
415
|
+
Tagalog: "tl",
|
|
416
|
+
Tahitian: "ty",
|
|
417
|
+
Tajik: "tg",
|
|
418
|
+
Tamil: "ta",
|
|
419
|
+
Tatar: "tt",
|
|
420
|
+
Telugu: "te",
|
|
421
|
+
Thai: "th",
|
|
422
|
+
Tibetan: "bo",
|
|
423
|
+
Tigrinya: "ti",
|
|
424
|
+
Tonga: "to",
|
|
425
|
+
Tsonga: "ts",
|
|
426
|
+
Tswana: "tn",
|
|
427
|
+
Turkish: "tr",
|
|
428
|
+
Turkmen: "tk",
|
|
429
|
+
Twi: "tw",
|
|
430
|
+
Uighur: "ug",
|
|
431
|
+
Ukrainian: "uk",
|
|
432
|
+
Urdu: "ur",
|
|
433
|
+
Uzbek: "uz",
|
|
434
|
+
Venda: "ve",
|
|
435
|
+
Vietnamese: "vi",
|
|
436
|
+
Volapuk: "vo",
|
|
437
|
+
Walloon: "wa",
|
|
438
|
+
Welsh: "cy",
|
|
439
|
+
Wolof: "wo",
|
|
440
|
+
Xhosa: "xh",
|
|
441
|
+
Yiddish: "yi",
|
|
442
|
+
Yoruba: "yo",
|
|
443
|
+
Zhuang: "za",
|
|
444
|
+
Zulu: "zu"
|
|
445
|
+
});
|
|
446
|
+
//#endregion
|
|
447
|
+
//#region src/enums/experience.ts
|
|
448
|
+
/**
|
|
449
|
+
* Describes whether listed countries/country subdivisions are included in an experience
|
|
450
|
+
*/
|
|
451
|
+
const RegionsOperator = makeEnum({
|
|
452
|
+
In: "IN",
|
|
453
|
+
NotIn: "NOT_IN"
|
|
454
|
+
});
|
|
455
|
+
//#endregion
|
|
456
|
+
//#region src/enums/consentExpiry.ts
|
|
457
|
+
/**
|
|
458
|
+
* Enum of options available for behavior to exhibit when the user's consent has expired
|
|
459
|
+
*/
|
|
460
|
+
const OnConsentExpiry = makeEnum({
|
|
461
|
+
Prompt: "Prompt",
|
|
462
|
+
ResetAll: "ResetAll",
|
|
463
|
+
ResetOptIns: "ResetOptIns"
|
|
464
|
+
});
|
|
465
|
+
//#endregion
|
|
466
|
+
//#region src/core.ts
|
|
467
|
+
/** Console-safe log levels */
|
|
468
|
+
const ConsoleSafeLogLevel = t.keyof({
|
|
469
|
+
info: null,
|
|
470
|
+
log: null,
|
|
471
|
+
warn: null,
|
|
472
|
+
debug: null,
|
|
473
|
+
error: null,
|
|
474
|
+
trace: null,
|
|
475
|
+
group: null,
|
|
476
|
+
groupCollapsed: null,
|
|
477
|
+
groupEnd: null
|
|
478
|
+
});
|
|
479
|
+
/** Airgap log levels */
|
|
480
|
+
const LogLevel = t.union([ConsoleSafeLogLevel, t.literal("fatal")]);
|
|
481
|
+
/** A boolean value represented as either `'on'` or `'off'` */
|
|
482
|
+
const BooleanString = t.keyof({
|
|
483
|
+
on: null,
|
|
484
|
+
off: null
|
|
485
|
+
});
|
|
486
|
+
/** Special `defaultConsent` automatic opt-out value for any potential reason */
|
|
487
|
+
const AutoOptOut = t.literal("Auto");
|
|
488
|
+
/** Special `defaultConsent` automatic opt-out value for GDPR-protected users */
|
|
489
|
+
const AutoOptOutForGDPR = t.literal("AutoGDPR");
|
|
490
|
+
/**
|
|
491
|
+
* Special `defaultConsent` automatic opt-out value for users with DNT enabled.
|
|
492
|
+
* Note that DNT is enabled by default for some browsers.
|
|
493
|
+
*/
|
|
494
|
+
const AutoOptOutForDNT = t.literal("AutoDNT");
|
|
495
|
+
/**
|
|
496
|
+
* Special `defaultConsent` automatic opt-out value for users with GPC enabled.
|
|
497
|
+
*/
|
|
498
|
+
const AutoOptOutForGPC = t.literal("AutoGPC");
|
|
499
|
+
/** Potential values for `defaultConsent` config token list */
|
|
500
|
+
const DefaultConsentConfigValue = t.union([
|
|
501
|
+
t.boolean,
|
|
502
|
+
AutoOptOut,
|
|
503
|
+
AutoOptOutForGDPR,
|
|
504
|
+
AutoOptOutForDNT,
|
|
505
|
+
AutoOptOutForGPC,
|
|
506
|
+
BooleanString
|
|
507
|
+
]);
|
|
508
|
+
/** User-configurable user agent privacy signal */
|
|
509
|
+
const UserPrivacySignal = t.union([t.literal("GPC"), t.literal("DNT")]);
|
|
510
|
+
/** Tracking purpose metadata */
|
|
511
|
+
const TrackingPurposeDetails = t.intersection([t.type({
|
|
512
|
+
name: t.string,
|
|
513
|
+
description: t.string,
|
|
514
|
+
defaultConsent: DefaultConsentConfigValue,
|
|
515
|
+
showInConsentManager: t.boolean,
|
|
516
|
+
configurable: t.boolean,
|
|
517
|
+
essential: t.boolean
|
|
518
|
+
}), t.partial({
|
|
519
|
+
trackingType: t.string,
|
|
520
|
+
optOutSignals: t.array(UserPrivacySignal)
|
|
521
|
+
})]);
|
|
522
|
+
/** Tracking purposes types configuration */
|
|
523
|
+
const TrackingPurposesTypes = t.record(t.string, TrackingPurposeDetails);
|
|
524
|
+
/** Fully-resolved `defaultConsent` config */
|
|
525
|
+
const DefaultConsentConfig = t.record(t.string, DefaultConsentConfigValue);
|
|
526
|
+
/** Tracking purposes configuration */
|
|
527
|
+
const TrackingPurposesConfig = t.intersection([t.type({
|
|
528
|
+
useDefault: t.boolean,
|
|
529
|
+
types: TrackingPurposesTypes
|
|
530
|
+
}), t.partial({ defaultConsent: t.union([DefaultConsentConfigValue, DefaultConsentConfig]) })]);
|
|
531
|
+
const TrackingConsent = t.intersection([t.partial({
|
|
532
|
+
Essential: t.literal(true),
|
|
533
|
+
Unknown: t.literal(false)
|
|
534
|
+
}), t.record(t.string, t.union([
|
|
535
|
+
t.boolean,
|
|
536
|
+
t.string,
|
|
537
|
+
t.undefined
|
|
538
|
+
]))]);
|
|
539
|
+
const TrackingConsentWithNulls = t.record(t.string, t.union([
|
|
540
|
+
t.boolean,
|
|
541
|
+
t.undefined,
|
|
542
|
+
t.null
|
|
543
|
+
]));
|
|
544
|
+
const TCFReservedMetadata = t.partial({ tcString: t.string });
|
|
545
|
+
const ReservedMetadataCodec = t.partial({ tcmp: t.partial({ tcf: TCFReservedMetadata }) });
|
|
546
|
+
const CoreTrackingConsentDetails = t.intersection([t.type({
|
|
547
|
+
confirmed: t.boolean,
|
|
548
|
+
timestamp: t.string
|
|
549
|
+
}), t.partial({
|
|
550
|
+
updated: t.boolean,
|
|
551
|
+
prompted: t.boolean,
|
|
552
|
+
metadata: t.intersection([ReservedMetadataCodec, t.UnknownRecord]),
|
|
553
|
+
metadataTimestamp: t.string
|
|
554
|
+
})]);
|
|
555
|
+
const TrackingConsentDetails = t.intersection([CoreTrackingConsentDetails, t.type({ purposes: TrackingConsent })]);
|
|
556
|
+
const TrackingConsentOptionalData = t.partial({
|
|
557
|
+
tcf: t.string,
|
|
558
|
+
usp: t.string,
|
|
559
|
+
gpp: t.string,
|
|
560
|
+
viewState: valuesOf(ViewState),
|
|
561
|
+
airgapVersion: t.string
|
|
562
|
+
});
|
|
563
|
+
const FullTrackingConsentDetails = t.intersection([TrackingConsentDetails, TrackingConsentOptionalData]);
|
|
564
|
+
const FullTrackingConsentDetailsWithNulls = t.intersection([
|
|
565
|
+
CoreTrackingConsentDetails,
|
|
566
|
+
TrackingConsentOptionalData,
|
|
567
|
+
t.type({ purposes: TrackingConsentWithNulls })
|
|
568
|
+
]);
|
|
569
|
+
const ConsentPreferencesBody = t.type({
|
|
570
|
+
token: t.string,
|
|
571
|
+
partition: t.string,
|
|
572
|
+
consent: TrackingConsentDetails
|
|
573
|
+
});
|
|
574
|
+
const ConsentTokenPayload = t.intersection([t.type({ encryptedIdentifier: t.string }), t.partial({ deprecatedEncryptedIdentifiers: t.array(t.string) })]);
|
|
575
|
+
/** Tracking purpose */
|
|
576
|
+
const TrackingPurpose = t.union([t.keyof(SpecialTrackingPurpose), t.string]);
|
|
577
|
+
/** Tracking consent change diffs */
|
|
578
|
+
const ConsentChange = t.record(TrackingPurpose, t.boolean);
|
|
579
|
+
/** Regime purpose scopes configuration */
|
|
580
|
+
const RegimePurposeScopesConfig = t.array(FixedLengthArray(2, 2, t.array(t.string)));
|
|
581
|
+
//#endregion
|
|
582
|
+
//#region src/iab.ts
|
|
583
|
+
/**
|
|
584
|
+
* TCF purpose configuration
|
|
585
|
+
*/
|
|
586
|
+
const TcfPurpose = t.type({
|
|
587
|
+
id: t.number,
|
|
588
|
+
name: t.string,
|
|
589
|
+
description: t.string,
|
|
590
|
+
descriptionLegal: t.string
|
|
591
|
+
});
|
|
592
|
+
/**
|
|
593
|
+
* TCF stack configuration
|
|
594
|
+
*/
|
|
595
|
+
const TcfStack = t.type({
|
|
596
|
+
id: t.number,
|
|
597
|
+
purposes: t.array(t.number),
|
|
598
|
+
specialFeatures: t.array(t.number),
|
|
599
|
+
name: t.string,
|
|
600
|
+
description: t.string
|
|
601
|
+
});
|
|
602
|
+
/**
|
|
603
|
+
* TCF stack configuration
|
|
604
|
+
*/
|
|
605
|
+
const TcfVendor = t.intersection([t.type({
|
|
606
|
+
id: t.number,
|
|
607
|
+
name: t.string,
|
|
608
|
+
purposes: t.array(t.number),
|
|
609
|
+
legIntPurposes: t.array(t.number),
|
|
610
|
+
flexiblePurposes: t.array(t.number),
|
|
611
|
+
specialPurposes: t.array(t.number),
|
|
612
|
+
features: t.array(t.number),
|
|
613
|
+
specialFeatures: t.array(t.number),
|
|
614
|
+
policyUrl: t.string,
|
|
615
|
+
cookieMaxAgeSeconds: t.union([t.number, t.null]),
|
|
616
|
+
usesCookies: t.boolean
|
|
617
|
+
}), t.partial({
|
|
618
|
+
deletedDate: t.string,
|
|
619
|
+
overflow: t.type({ httpGetLimit: t.number }),
|
|
620
|
+
cookieRefresh: t.boolean,
|
|
621
|
+
usesNonCookieAccess: t.boolean,
|
|
622
|
+
deviceStorageDisclosureUrl: t.string
|
|
623
|
+
})]);
|
|
624
|
+
const TcfVendorListVersion = t.type({
|
|
625
|
+
gvlSpecificationVersion: t.number,
|
|
626
|
+
vendorListVersion: t.number,
|
|
627
|
+
tcfPolicyVersion: t.number,
|
|
628
|
+
lastUpdated: t.string
|
|
629
|
+
});
|
|
630
|
+
/**
|
|
631
|
+
* TCF global vendor list version 2
|
|
632
|
+
*/
|
|
633
|
+
const TcfV2VendorList = t.intersection([TcfVendorListVersion, t.type({
|
|
634
|
+
purposes: t.record(t.string, TcfPurpose),
|
|
635
|
+
specialPurposes: t.record(t.string, TcfPurpose),
|
|
636
|
+
features: t.record(t.string, TcfPurpose),
|
|
637
|
+
specialFeatures: t.record(t.string, TcfPurpose),
|
|
638
|
+
stacks: t.record(t.string, TcfStack),
|
|
639
|
+
vendors: t.record(t.string, TcfVendor)
|
|
640
|
+
})]);
|
|
641
|
+
/**
|
|
642
|
+
* TCF GVL v3 purpose configuration (TCF features share the same type)
|
|
643
|
+
*/
|
|
644
|
+
const TcfGvlV3Purpose = t.type({
|
|
645
|
+
id: t.number,
|
|
646
|
+
name: t.string,
|
|
647
|
+
description: t.string,
|
|
648
|
+
illustrations: t.array(t.string)
|
|
649
|
+
});
|
|
650
|
+
/**
|
|
651
|
+
* TCF GVL v3 data categories configuration
|
|
652
|
+
*/
|
|
653
|
+
const TcfGvlV3DataCategory = t.type({
|
|
654
|
+
id: t.number,
|
|
655
|
+
name: t.string,
|
|
656
|
+
description: t.string
|
|
657
|
+
});
|
|
658
|
+
/**
|
|
659
|
+
* TCF GVL v3 URL configuration
|
|
660
|
+
*/
|
|
661
|
+
const TcfGvlV3Url = t.intersection([t.type({
|
|
662
|
+
langId: t.string,
|
|
663
|
+
privacy: t.string
|
|
664
|
+
}), t.partial({ legIntClaim: t.string })]);
|
|
665
|
+
/**
|
|
666
|
+
* TCF GVL v3 data retention configuration
|
|
667
|
+
*/
|
|
668
|
+
const TcfGvlV3DataRetention = t.intersection([t.type({
|
|
669
|
+
purposes: t.record(t.string, t.number),
|
|
670
|
+
specialPurposes: t.record(t.string, t.number)
|
|
671
|
+
}), t.partial({ stdRetention: t.union([t.number, t.null]) })]);
|
|
672
|
+
/**
|
|
673
|
+
* TCF GVL v3 vendor configuration
|
|
674
|
+
*/
|
|
675
|
+
const TcfGvlV3Vendor = t.intersection([t.type({
|
|
676
|
+
id: t.number,
|
|
677
|
+
name: t.string,
|
|
678
|
+
purposes: t.array(t.number),
|
|
679
|
+
legIntPurposes: t.array(t.number),
|
|
680
|
+
flexiblePurposes: t.array(t.number),
|
|
681
|
+
specialPurposes: t.array(t.number),
|
|
682
|
+
features: t.array(t.number),
|
|
683
|
+
specialFeatures: t.array(t.number),
|
|
684
|
+
cookieMaxAgeSeconds: t.union([t.number, t.null]),
|
|
685
|
+
usesCookies: t.boolean,
|
|
686
|
+
cookieRefresh: t.boolean,
|
|
687
|
+
usesNonCookieAccess: t.boolean,
|
|
688
|
+
dataRetention: TcfGvlV3DataRetention,
|
|
689
|
+
urls: t.array(TcfGvlV3Url),
|
|
690
|
+
deviceStorageDisclosureUrl: t.string
|
|
691
|
+
}), t.partial({
|
|
692
|
+
deletedDate: t.string,
|
|
693
|
+
overflow: t.type({ httpGetLimit: t.number }),
|
|
694
|
+
dataDeclaration: t.array(t.number)
|
|
695
|
+
})]);
|
|
696
|
+
/**
|
|
697
|
+
* TCF global vendor list version 3
|
|
698
|
+
*/
|
|
699
|
+
const TcfV3VendorList = t.intersection([TcfVendorListVersion, t.type({
|
|
700
|
+
purposes: t.record(t.string, TcfGvlV3Purpose),
|
|
701
|
+
specialPurposes: t.record(t.string, TcfGvlV3Purpose),
|
|
702
|
+
features: t.record(t.string, TcfGvlV3Purpose),
|
|
703
|
+
specialFeatures: t.record(t.string, TcfGvlV3Purpose),
|
|
704
|
+
stacks: t.record(t.string, TcfStack),
|
|
705
|
+
dataCategories: t.record(t.string, TcfGvlV3DataCategory),
|
|
706
|
+
vendors: t.record(t.string, TcfGvlV3Vendor)
|
|
707
|
+
})]);
|
|
708
|
+
const NonTcfVendor = t.intersection([t.type({
|
|
709
|
+
name: t.string,
|
|
710
|
+
purposes: t.array(t.string)
|
|
711
|
+
}), t.partial({
|
|
712
|
+
description: t.string,
|
|
713
|
+
privacyPolicyUrl: t.string
|
|
714
|
+
})]);
|
|
715
|
+
//#endregion
|
|
716
|
+
//#region src/ui.ts
|
|
717
|
+
/**
|
|
718
|
+
* Customer theming
|
|
719
|
+
*/
|
|
720
|
+
const ConsentManagerTheme = t.type({
|
|
721
|
+
primaryColor: t.string,
|
|
722
|
+
fontColor: t.string
|
|
723
|
+
});
|
|
724
|
+
/**
|
|
725
|
+
* Mobile-first responsive breakpoints
|
|
726
|
+
* No media query for mobile, which is the default
|
|
727
|
+
*/
|
|
728
|
+
const ConsentManagerBreakpoints = t.type({
|
|
729
|
+
tablet: t.string,
|
|
730
|
+
desktop: t.string
|
|
731
|
+
});
|
|
732
|
+
/**
|
|
733
|
+
* TODO: https://transcend.height.app/T-19149 - remove
|
|
734
|
+
* @deprecated
|
|
735
|
+
*/
|
|
736
|
+
const PrivacyRegimeToInitialViewStateInput = t.partial(applyEnum(PrivacyRegimeEnum, () => valuesOf(InitialTranscendViewState)));
|
|
737
|
+
/**
|
|
738
|
+
* TODO: https://transcend.height.app/T-19149 - remove
|
|
739
|
+
* @deprecated
|
|
740
|
+
*/
|
|
741
|
+
const PrivacyRegimeToInitialViewState = t.record(valuesOf(PrivacyRegimeEnum), valuesOf(InitialTranscendViewState));
|
|
742
|
+
const ExperienceToInitialViewState = t.record(t.string, valuesOf(InitialViewState));
|
|
743
|
+
const RequiredConsentManagerConfig = t.type({
|
|
744
|
+
theme: ConsentManagerTheme,
|
|
745
|
+
breakpoints: ConsentManagerBreakpoints,
|
|
746
|
+
privacyPolicy: t.string,
|
|
747
|
+
secondaryPolicy: t.string,
|
|
748
|
+
css: t.string,
|
|
749
|
+
messages: t.string,
|
|
750
|
+
initialViewStateByPrivacyRegime: ExperienceToInitialViewState,
|
|
751
|
+
dismissedViewState: valuesOf(DismissedViewState)
|
|
752
|
+
});
|
|
753
|
+
const OptionalConsentManagerConfig = t.partial({
|
|
754
|
+
languages: t.string,
|
|
755
|
+
uiZIndex: t.string,
|
|
756
|
+
uiShadowRoot: t.string,
|
|
757
|
+
autofocus: BooleanString
|
|
758
|
+
});
|
|
759
|
+
/** Consent manager UI configuration */
|
|
760
|
+
const ConsentManagerConfig = t.intersection([RequiredConsentManagerConfig, OptionalConsentManagerConfig]);
|
|
761
|
+
/** Input for Consent manager UI configuration */
|
|
762
|
+
const ConsentManagerConfigInput = t.partial({
|
|
763
|
+
...OptionalConsentManagerConfig.props,
|
|
764
|
+
...RequiredConsentManagerConfig.props
|
|
765
|
+
});
|
|
766
|
+
const TCFConfig = t.type({
|
|
767
|
+
vendorList: t.string,
|
|
768
|
+
css: t.string,
|
|
769
|
+
messages: t.string
|
|
770
|
+
});
|
|
771
|
+
/** Configuration that are passed directly to the TCF module, not via airgap.j */
|
|
772
|
+
const TCFBundledDataConfig = t.partial({
|
|
773
|
+
purposeMap: t.array(t.tuple([t.number, t.array(t.string)])),
|
|
774
|
+
restrictLegitimateInterestPurposes: t.array(t.number),
|
|
775
|
+
nonTcfVendors: t.array(NonTcfVendor),
|
|
776
|
+
languages: t.string,
|
|
777
|
+
locale: t.string,
|
|
778
|
+
enableAdvertiserConsentMode: t.boolean
|
|
779
|
+
});
|
|
780
|
+
/** Input for Consent manager UI configuration */
|
|
781
|
+
const TCFConfigInput = t.partial(TCFConfig.props);
|
|
782
|
+
const DEFAULT_VIEW_STATE_BY_PRIVACY_REGIME = {
|
|
783
|
+
GDPR: InitialViewState.QuickOptions,
|
|
784
|
+
LGPD: InitialViewState.QuickOptions,
|
|
785
|
+
nFADP: InitialViewState.QuickOptions,
|
|
786
|
+
CPRA: InitialViewState.Hidden,
|
|
787
|
+
CDPA: InitialViewState.Hidden,
|
|
788
|
+
CPA: InitialViewState.Hidden,
|
|
789
|
+
NEVADA_SB220: InitialViewState.Hidden,
|
|
790
|
+
Unknown: InitialViewState.Hidden,
|
|
791
|
+
US_DNSS: InitialViewState.Hidden
|
|
792
|
+
};
|
|
793
|
+
//#endregion
|
|
794
|
+
//#region src/constants.ts
|
|
795
|
+
const UNKNOWN_DEFAULT_EXPERIENCE = "Unknown";
|
|
796
|
+
const GDPR_PURPOSES = [[
|
|
797
|
+
"GDPR",
|
|
798
|
+
"LGPD",
|
|
799
|
+
"nFADP"
|
|
800
|
+
], [
|
|
801
|
+
"Advertising",
|
|
802
|
+
"Analytics",
|
|
803
|
+
"Functional"
|
|
804
|
+
]];
|
|
805
|
+
const DEFAULT_REGIME_TRACKING_PURPOSE_SCOPES = [
|
|
806
|
+
GDPR_PURPOSES,
|
|
807
|
+
[[
|
|
808
|
+
"CPRA",
|
|
809
|
+
"CDPA",
|
|
810
|
+
"CPA",
|
|
811
|
+
"NEVADA_SB220",
|
|
812
|
+
"US_DNSS"
|
|
813
|
+
], ["SaleOfInfo"]],
|
|
814
|
+
[[UNKNOWN_DEFAULT_EXPERIENCE], []]
|
|
815
|
+
];
|
|
816
|
+
const DEFAULT_REGIME_PURPOSE_OPT_OUTS = [GDPR_PURPOSES];
|
|
817
|
+
const DEFAULT_EXPERIENCE_PURPOSE_OPT_OUTS = Object.fromEntries(DEFAULT_REGIME_PURPOSE_OPT_OUTS.map(([regimes, purposes]) => regimes.map((regime) => [regime, purposes])).flat());
|
|
818
|
+
const DEFAULT_EXPERIENCE_PURPOSE_SCOPES = Object.fromEntries(DEFAULT_REGIME_TRACKING_PURPOSE_SCOPES.map(([regimes, purposes]) => regimes.map((regime) => [regime, purposes])).flat());
|
|
819
|
+
const REGIME_TIMEZONES = {};
|
|
820
|
+
const REGIME_DISPLAY_PRIORITY = {
|
|
821
|
+
GDPR: 10,
|
|
822
|
+
Unknown: 100
|
|
823
|
+
};
|
|
824
|
+
/**
|
|
825
|
+
* These TCF Purposes cannot be allowed to process under legitimate interest legal basis
|
|
826
|
+
* Source:
|
|
827
|
+
* https://iabeurope.eu/iab-europe-transparency-consent-framework-policies/#:~:text=Appendix%20A:%20Definitions%20Of%20Purposes,%20Features%20And%20Categories%20Of%20Data
|
|
828
|
+
*/
|
|
829
|
+
const DEFAULT_RESTRICT_LEGIT_INTEREST_PROCESSING = [
|
|
830
|
+
1,
|
|
831
|
+
3,
|
|
832
|
+
4,
|
|
833
|
+
5,
|
|
834
|
+
6
|
|
835
|
+
];
|
|
836
|
+
//#endregion
|
|
837
|
+
//#region src/experience.ts
|
|
838
|
+
const REGIME_REGIONS = {
|
|
839
|
+
CPRA: [{
|
|
840
|
+
country: "US",
|
|
841
|
+
countrySubDivision: "US-CA"
|
|
842
|
+
}],
|
|
843
|
+
GDPR: [
|
|
844
|
+
{ country: "EU" },
|
|
845
|
+
{ country: "GB" },
|
|
846
|
+
{ country: "NO" },
|
|
847
|
+
{ country: "IS" },
|
|
848
|
+
{ country: "LI" }
|
|
849
|
+
],
|
|
850
|
+
LGPD: [{ country: "BR" }],
|
|
851
|
+
CDPA: [{
|
|
852
|
+
country: "US",
|
|
853
|
+
countrySubDivision: "US-VA"
|
|
854
|
+
}],
|
|
855
|
+
CPA: [{
|
|
856
|
+
country: "US",
|
|
857
|
+
countrySubDivision: "US-CO"
|
|
858
|
+
}],
|
|
859
|
+
UCPA: [{
|
|
860
|
+
country: "US",
|
|
861
|
+
countrySubDivision: "US-UT"
|
|
862
|
+
}],
|
|
863
|
+
NEVADA_SB220: [{
|
|
864
|
+
country: "US",
|
|
865
|
+
countrySubDivision: "US-NV"
|
|
866
|
+
}],
|
|
867
|
+
nFADP: [{ country: "CH" }],
|
|
868
|
+
US_DNSS: [
|
|
869
|
+
{
|
|
870
|
+
country: "US",
|
|
871
|
+
countrySubDivision: "US-CA"
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
country: "US",
|
|
875
|
+
countrySubDivision: "US-VA"
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
country: "US",
|
|
879
|
+
countrySubDivision: "US-CO"
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
country: "US",
|
|
883
|
+
countrySubDivision: "US-NV"
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
country: "US",
|
|
887
|
+
countrySubDivision: "US-TX"
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
country: "US",
|
|
891
|
+
countrySubDivision: "US-CT"
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
country: "US",
|
|
895
|
+
countrySubDivision: "US-OR"
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
country: "US",
|
|
899
|
+
countrySubDivision: "US-MT"
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
country: "US",
|
|
903
|
+
countrySubDivision: "US-UT"
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
country: "US",
|
|
907
|
+
countrySubDivision: "US-IA"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
country: "US",
|
|
911
|
+
countrySubDivision: "US-DE"
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
country: "US",
|
|
915
|
+
countrySubDivision: "US-NH"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
country: "US",
|
|
919
|
+
countrySubDivision: "US-NE"
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
country: "US",
|
|
923
|
+
countrySubDivision: "US-NJ"
|
|
924
|
+
}
|
|
925
|
+
]
|
|
926
|
+
};
|
|
927
|
+
const REGIME_LANGUAGES = {
|
|
928
|
+
GDPR: [
|
|
929
|
+
BrowserLanguage["Bulgarian (Bulgaria)"],
|
|
930
|
+
BrowserLanguage["Croatian (Croatia)"],
|
|
931
|
+
BrowserLanguage["Czech (Czech Republic)"],
|
|
932
|
+
BrowserLanguage["Danish (Denmark)"],
|
|
933
|
+
BrowserLanguage["Dutch (Belgium)"],
|
|
934
|
+
BrowserLanguage["Dutch (Netherlands)"],
|
|
935
|
+
BrowserLanguage["English (Ireland)"],
|
|
936
|
+
BrowserLanguage["Estonian (Estonia)"],
|
|
937
|
+
BrowserLanguage["Finnish (Finland)"],
|
|
938
|
+
BrowserLanguage["French (Belgium)"],
|
|
939
|
+
BrowserLanguage["French (France)"],
|
|
940
|
+
BrowserLanguage["French (Luxembourg)"],
|
|
941
|
+
BrowserLanguage["German (Austria)"],
|
|
942
|
+
BrowserLanguage["German (Germany)"],
|
|
943
|
+
BrowserLanguage["German (Liechtenstein)"],
|
|
944
|
+
BrowserLanguage["German (Luxembourg)"],
|
|
945
|
+
BrowserLanguage["Greek (Greece)"],
|
|
946
|
+
BrowserLanguage["Hungarian (Hungary)"],
|
|
947
|
+
BrowserLanguage["Icelandic (Iceland)"],
|
|
948
|
+
BrowserLanguage["Irish (Ireland)"],
|
|
949
|
+
BrowserLanguage["Italian (Italy)"],
|
|
950
|
+
BrowserLanguage["Latvian (Latvia)"],
|
|
951
|
+
BrowserLanguage["Lithuanian (Lithuania)"],
|
|
952
|
+
BrowserLanguage["Maltese (Malta)"],
|
|
953
|
+
BrowserLanguage["Norwegian (Norway)"],
|
|
954
|
+
BrowserLanguage["Norwegian Bokmål (Norway)"],
|
|
955
|
+
BrowserLanguage["Norwegian Nynorsk (Norway)"],
|
|
956
|
+
BrowserLanguage["Polish (Poland)"],
|
|
957
|
+
BrowserLanguage["Portuguese (Portugal)"],
|
|
958
|
+
BrowserLanguage["Romanian (Romania)"],
|
|
959
|
+
BrowserLanguage["Slovak (Slovakia)"],
|
|
960
|
+
BrowserLanguage["Slovenian (Slovenia)"],
|
|
961
|
+
BrowserLanguage["Spanish (España)"],
|
|
962
|
+
BrowserLanguage["Swedish (Finland)"],
|
|
963
|
+
BrowserLanguage["Swedish (Finland)"],
|
|
964
|
+
BrowserLanguage["Swedish (Sweden)"]
|
|
965
|
+
],
|
|
966
|
+
LGPD: [BrowserLanguage["Portuguese (Brazil)"]],
|
|
967
|
+
nFADP: [
|
|
968
|
+
BrowserLanguage["German (Switzerland)"],
|
|
969
|
+
BrowserLanguage["French (Switzerland)"],
|
|
970
|
+
BrowserLanguage["Italian (Switzerland)"],
|
|
971
|
+
BrowserLanguage["English (Switzerland)"],
|
|
972
|
+
BrowserLanguage["Portuguese (Switzerland)"],
|
|
973
|
+
BrowserLanguage["Swiss German (Switzerland)"]
|
|
974
|
+
]
|
|
975
|
+
};
|
|
976
|
+
const REGIME_CONSENT_EXPIRY = { GDPR: 12 };
|
|
977
|
+
const REGIME_ON_CONSENT_EXPIRY = { GDPR: OnConsentExpiry.ResetOptIns };
|
|
978
|
+
/**
|
|
979
|
+
* construct default experience for regime
|
|
980
|
+
* @param regime - regime
|
|
981
|
+
* @returns ExperienceInput
|
|
982
|
+
*/
|
|
983
|
+
function defaultExperience(regime) {
|
|
984
|
+
const isUnknown = regime === "Unknown";
|
|
985
|
+
const regimeEnum = PrivacyRegimeEnum[regime];
|
|
986
|
+
return {
|
|
987
|
+
name: regime,
|
|
988
|
+
displayName: regime,
|
|
989
|
+
regions: REGIME_REGIONS[regime] ?? [],
|
|
990
|
+
operator: isUnknown ? RegionsOperator.NotIn : RegionsOperator.In,
|
|
991
|
+
displayPriority: REGIME_DISPLAY_PRIORITY[regime] ?? 20,
|
|
992
|
+
viewState: DEFAULT_VIEW_STATE_BY_PRIVACY_REGIME[regimeEnum] ?? InitialViewState.Hidden,
|
|
993
|
+
browserLanguages: REGIME_LANGUAGES[regime] ?? [],
|
|
994
|
+
browserTimeZones: REGIME_TIMEZONES[regime] ?? [],
|
|
995
|
+
experiencePurposeInputs: DEFAULT_EXPERIENCE_PURPOSE_SCOPES[regime].map((purpose) => ({
|
|
996
|
+
purpose,
|
|
997
|
+
defaultOptOut: DEFAULT_EXPERIENCE_PURPOSE_OPT_OUTS[regime]?.includes(purpose) ?? false
|
|
998
|
+
})),
|
|
999
|
+
consentExpiry: REGIME_CONSENT_EXPIRY[regime] ?? 0,
|
|
1000
|
+
onConsentExpiry: REGIME_ON_CONSENT_EXPIRY[regime] ?? OnConsentExpiry.Prompt
|
|
1001
|
+
};
|
|
1002
|
+
}
|
|
1003
|
+
const DEFAULT_EXPERIENCES = applyEnum(PrivacyRegimeEnum, defaultExperience);
|
|
1004
|
+
//#endregion
|
|
1005
|
+
//#region src/mobile.ts
|
|
1006
|
+
const ConsentSDK = t.type({
|
|
1007
|
+
id: t.string,
|
|
1008
|
+
purposes: t.array(t.string)
|
|
1009
|
+
});
|
|
1010
|
+
const ConsentService = t.intersection([t.type({ name: t.string }), t.partial({
|
|
1011
|
+
sdks: t.array(ConsentSDK),
|
|
1012
|
+
tcfId: t.number
|
|
1013
|
+
})]);
|
|
1014
|
+
const MobileConfig = t.type({ services: t.array(ConsentService) });
|
|
1015
|
+
//#endregion
|
|
1016
|
+
export { AutoOptOut, AutoOptOutForDNT, AutoOptOutForGDPR, AutoOptOutForGPC, BooleanString, BrowserLanguage, ConfigurablePurpose, ConsentChange, ConsentManagerBreakpoints, ConsentManagerConfig, ConsentManagerConfigInput, ConsentManagerTheme, ConsentPreferencesBody, ConsentSDK, ConsentService, ConsentTokenPayload, ConsoleSafeLogLevel, CoreTrackingConsentDetails, DEFAULT_EXPERIENCES, DEFAULT_EXPERIENCE_PURPOSE_OPT_OUTS, DEFAULT_EXPERIENCE_PURPOSE_SCOPES, DEFAULT_REGIME_PURPOSE_OPT_OUTS, DEFAULT_REGIME_TRACKING_PURPOSE_SCOPES, DEFAULT_RESTRICT_LEGIT_INTEREST_PROCESSING, DEFAULT_VIEW_STATE_BY_PRIVACY_REGIME, DeepViewState, DefaultConsentConfig, DefaultConsentConfigValue, DefaultConsentValue, DismissedViewState, ExperienceToInitialViewState, FullTrackingConsentDetails, FullTrackingConsentDetailsWithNulls, GDPR_PURPOSES, IABViewState, InitialTranscendViewState, InitialViewState, KnownDefaultPurpose, LogLevel, MobileConfig, NonTcfVendor, OnConsentExpiry, OptionalConsentManagerConfig, PrivacyRegimeEnum, PrivacyRegimeToInitialViewState, PrivacyRegimeToInitialViewStateInput, Purpose, REGIME_CONSENT_EXPIRY, REGIME_DISPLAY_PRIORITY, REGIME_LANGUAGES, REGIME_ON_CONSENT_EXPIRY, REGIME_REGIONS, REGIME_TIMEZONES, RegimePurposeScopesConfig, RegionsOperator, RequiredConsentManagerConfig, ResponseViewState, SpecialTrackingPurpose, TCFBundledDataConfig, TCFConfig, TCFConfigInput, TcfGvlV3DataCategory, TcfGvlV3DataRetention, TcfGvlV3Purpose, TcfGvlV3Url, TcfGvlV3Vendor, TcfPurpose, TcfStack, TcfV2VendorList, TcfV3VendorList, TcfVendor, TcfVendorListVersion, TrackingConsent, TrackingConsentDetails, TrackingConsentOptionalData, TrackingConsentWithNulls, TrackingPurpose, TrackingPurposeDetails, TrackingPurposesConfig, TrackingPurposesTypes, UNKNOWN_DEFAULT_EXPERIENCE, UserPrivacySignal, UserPrivacySignalEnum, ViewState, defaultExperience };
|
|
1017
|
+
|
|
1018
|
+
//# sourceMappingURL=index.mjs.map
|