c15t 2.0.0-rc.2 → 2.0.0-rc.4
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/CHANGELOG.md +17 -0
- package/dist/0~299.js +56 -0
- package/dist/0~417.js +274 -0
- package/dist/0~798.js +274 -0
- package/dist/0~859.js +431 -0
- package/dist/1~299.cjs +56 -0
- package/dist/1~417.cjs +274 -0
- package/dist/1~622.cjs +431 -0
- package/dist/1~798.cjs +274 -0
- package/dist/client/c15t/init.d.ts.map +1 -1
- package/dist/client/offline/init.d.ts.map +1 -1
- package/dist/index.cjs +100 -758
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +108 -749
- package/dist/libs/iab-tcf/cmp-defaults.d.ts +1 -1
- package/dist/libs/init-consent-manager/iab-initializer.d.ts.map +1 -1
- package/dist/libs/init-consent-manager/store-updater.d.ts +1 -1
- package/dist/libs/init-consent-manager/store-updater.d.ts.map +1 -1
- package/dist/libs/init-consent-manager/types.d.ts +3 -0
- package/dist/libs/init-consent-manager/types.d.ts.map +1 -1
- package/dist/libs/save-consents.d.ts.map +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# c15t
|
|
2
2
|
|
|
3
|
+
## 2.0.0-rc.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 29819bc: feat: add an IAB subpath export and lazy-load IAB internals
|
|
8
|
+
- Updated dependencies [06ee724]
|
|
9
|
+
- @c15t/translations@2.0.0-rc.4
|
|
10
|
+
|
|
11
|
+
## 2.0.0-rc.3
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 1c813bc: feat(dev-tools): add GPC to dev-tools with an override
|
|
16
|
+
- 0f10f3e: fix(react): react compiler compatability
|
|
17
|
+
- Updated dependencies [0a18fb6]
|
|
18
|
+
- @c15t/backend@2.0.0-rc.3
|
|
19
|
+
|
|
3
20
|
## 2.0.0-rc.2
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/dist/0~299.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export const __rspack_esm_id = "299";
|
|
2
|
+
export const __rspack_esm_ids = [
|
|
3
|
+
"299"
|
|
4
|
+
];
|
|
5
|
+
export const __webpack_modules__ = {
|
|
6
|
+
"./src/libs/iab-tcf/fetch-gvl.ts" (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
fetchGVL: ()=>fetchGVL
|
|
9
|
+
});
|
|
10
|
+
var _types__rspack_import_0 = __webpack_require__("./src/libs/iab-tcf/types.ts");
|
|
11
|
+
const inflightRequests = new Map();
|
|
12
|
+
async function fetchGVL(vendorIds, options = {}) {
|
|
13
|
+
const windowMockGVL = 'undefined' != typeof window ? window.__c15t_mock_gvl : void 0;
|
|
14
|
+
if (void 0 !== windowMockGVL) return windowMockGVL;
|
|
15
|
+
if (void 0 !== mockGVLData) return mockGVLData;
|
|
16
|
+
const { endpoint = _types__rspack_import_0.w, headers } = options;
|
|
17
|
+
const sortedVendorIds = vendorIds ? [
|
|
18
|
+
...vendorIds
|
|
19
|
+
].sort((a, b)=>a - b) : [];
|
|
20
|
+
const headersKey = headers ? JSON.stringify(headers) : '';
|
|
21
|
+
const cacheKey = `${endpoint}|${sortedVendorIds.join(',')}|${headersKey}`;
|
|
22
|
+
const existingRequest = inflightRequests.get(cacheKey);
|
|
23
|
+
if (existingRequest) return existingRequest;
|
|
24
|
+
const url = new URL(endpoint);
|
|
25
|
+
if (sortedVendorIds.length > 0) url.searchParams.set('vendorIds', sortedVendorIds.join(','));
|
|
26
|
+
const promise = (async ()=>{
|
|
27
|
+
try {
|
|
28
|
+
const response = await fetch(url.toString(), {
|
|
29
|
+
headers
|
|
30
|
+
});
|
|
31
|
+
if (204 === response.status) return null;
|
|
32
|
+
if (!response.ok) throw new Error(`Failed to fetch GVL: ${response.status} ${response.statusText}`);
|
|
33
|
+
const gvl = await response.json();
|
|
34
|
+
if (!gvl.vendorListVersion || !gvl.purposes || !gvl.vendors) throw new Error('Invalid GVL response: missing required fields');
|
|
35
|
+
return gvl;
|
|
36
|
+
} finally{
|
|
37
|
+
inflightRequests.delete(cacheKey);
|
|
38
|
+
}
|
|
39
|
+
})();
|
|
40
|
+
inflightRequests.set(cacheKey, promise);
|
|
41
|
+
return promise;
|
|
42
|
+
}
|
|
43
|
+
let mockGVLData;
|
|
44
|
+
},
|
|
45
|
+
"./src/libs/iab-tcf/types.ts" (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
46
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
47
|
+
Y: ()=>IAB_STORAGE_KEYS,
|
|
48
|
+
w: ()=>GVL_ENDPOINT
|
|
49
|
+
});
|
|
50
|
+
const IAB_STORAGE_KEYS = {
|
|
51
|
+
TC_STRING_COOKIE: 'euconsent-v2',
|
|
52
|
+
TC_STRING_LOCAL: 'euconsent-v2'
|
|
53
|
+
};
|
|
54
|
+
const GVL_ENDPOINT = 'https://gvl.consent.io';
|
|
55
|
+
}
|
|
56
|
+
};
|
package/dist/0~417.js
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
export const __rspack_esm_id = "417";
|
|
2
|
+
export const __rspack_esm_ids = [
|
|
3
|
+
"417"
|
|
4
|
+
];
|
|
5
|
+
export const __webpack_modules__ = {
|
|
6
|
+
"./src/libs/iab-tcf/cmp-defaults.ts" (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
D: ()=>CMP_ID,
|
|
9
|
+
I: ()=>CMP_VERSION
|
|
10
|
+
});
|
|
11
|
+
var _version__rspack_import_0 = __webpack_require__("./src/version.ts");
|
|
12
|
+
const CMP_ID = 0;
|
|
13
|
+
const CMP_VERSION = _version__rspack_import_0.r;
|
|
14
|
+
},
|
|
15
|
+
"./src/libs/iab-tcf/store.ts" (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
16
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
17
|
+
createIABManager: ()=>createIABManager
|
|
18
|
+
});
|
|
19
|
+
var _cookie__rspack_import_0 = __webpack_require__("./src/libs/cookie/index.ts");
|
|
20
|
+
var _generate_subject_id__rspack_import_1 = __webpack_require__("./src/libs/generate-subject-id.ts");
|
|
21
|
+
var _cmp_defaults__rspack_import_2 = __webpack_require__("./src/libs/iab-tcf/cmp-defaults.ts");
|
|
22
|
+
function createInitialIABState(config) {
|
|
23
|
+
return {
|
|
24
|
+
config,
|
|
25
|
+
gvl: null,
|
|
26
|
+
isLoadingGVL: false,
|
|
27
|
+
nonIABVendors: [],
|
|
28
|
+
tcString: null,
|
|
29
|
+
vendorConsents: {},
|
|
30
|
+
vendorLegitimateInterests: {},
|
|
31
|
+
purposeConsents: {},
|
|
32
|
+
purposeLegitimateInterests: {},
|
|
33
|
+
specialFeatureOptIns: {},
|
|
34
|
+
vendorsDisclosed: {},
|
|
35
|
+
cmpApi: null,
|
|
36
|
+
preferenceCenterTab: 'purposes'
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function createIABActions(getState, setState, manager) {
|
|
40
|
+
const updateState = (updates)=>{
|
|
41
|
+
const { iab } = getState();
|
|
42
|
+
if (!iab) return;
|
|
43
|
+
setState({
|
|
44
|
+
iab: {
|
|
45
|
+
...iab,
|
|
46
|
+
...updates
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
_updateState: updateState,
|
|
52
|
+
setPurposeConsent: (purposeId, value)=>{
|
|
53
|
+
const { iab } = getState();
|
|
54
|
+
if (!iab) return;
|
|
55
|
+
updateState({
|
|
56
|
+
purposeConsents: {
|
|
57
|
+
...iab.purposeConsents,
|
|
58
|
+
[purposeId]: value
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
setPurposeLegitimateInterest: (purposeId, value)=>{
|
|
63
|
+
const { iab } = getState();
|
|
64
|
+
if (!iab) return;
|
|
65
|
+
updateState({
|
|
66
|
+
purposeLegitimateInterests: {
|
|
67
|
+
...iab.purposeLegitimateInterests,
|
|
68
|
+
[purposeId]: value
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
setVendorConsent: (vendorId, value)=>{
|
|
73
|
+
const { iab } = getState();
|
|
74
|
+
if (!iab) return;
|
|
75
|
+
updateState({
|
|
76
|
+
vendorConsents: {
|
|
77
|
+
...iab.vendorConsents,
|
|
78
|
+
[String(vendorId)]: value
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
setVendorLegitimateInterest: (vendorId, value)=>{
|
|
83
|
+
const { iab } = getState();
|
|
84
|
+
if (!iab) return;
|
|
85
|
+
updateState({
|
|
86
|
+
vendorLegitimateInterests: {
|
|
87
|
+
...iab.vendorLegitimateInterests,
|
|
88
|
+
[String(vendorId)]: value
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
setSpecialFeatureOptIn: (featureId, value)=>{
|
|
93
|
+
const { iab } = getState();
|
|
94
|
+
if (!iab) return;
|
|
95
|
+
updateState({
|
|
96
|
+
specialFeatureOptIns: {
|
|
97
|
+
...iab.specialFeatureOptIns,
|
|
98
|
+
[featureId]: value
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
setPreferenceCenterTab: (tab)=>{
|
|
103
|
+
updateState({
|
|
104
|
+
preferenceCenterTab: tab
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
acceptAll: ()=>{
|
|
108
|
+
const { iab } = getState();
|
|
109
|
+
if (!iab?.gvl) return;
|
|
110
|
+
const { purposeConsents, purposeLegitimateInterests } = buildAllPurposeConsents(iab.gvl, true);
|
|
111
|
+
const { vendorConsents, vendorLegitimateInterests } = buildAllVendorConsents(iab.gvl, iab.nonIABVendors, true);
|
|
112
|
+
const specialFeatureOptIns = buildAllSpecialFeatureOptIns(iab.gvl, true);
|
|
113
|
+
updateState({
|
|
114
|
+
purposeConsents,
|
|
115
|
+
purposeLegitimateInterests,
|
|
116
|
+
vendorConsents,
|
|
117
|
+
vendorLegitimateInterests,
|
|
118
|
+
specialFeatureOptIns
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
rejectAll: ()=>{
|
|
122
|
+
const { iab } = getState();
|
|
123
|
+
if (!iab?.gvl) return;
|
|
124
|
+
const purposeConsents = {
|
|
125
|
+
1: true
|
|
126
|
+
};
|
|
127
|
+
const purposeLegitimateInterests = {};
|
|
128
|
+
for (const purposeId of Object.keys(iab.gvl.purposes))if (1 !== Number(purposeId)) {
|
|
129
|
+
purposeConsents[Number(purposeId)] = false;
|
|
130
|
+
purposeLegitimateInterests[Number(purposeId)] = false;
|
|
131
|
+
}
|
|
132
|
+
const { vendorConsents, vendorLegitimateInterests } = buildAllVendorConsents(iab.gvl, iab.nonIABVendors, false);
|
|
133
|
+
const specialFeatureOptIns = buildAllSpecialFeatureOptIns(iab.gvl, false);
|
|
134
|
+
updateState({
|
|
135
|
+
purposeConsents,
|
|
136
|
+
purposeLegitimateInterests,
|
|
137
|
+
vendorConsents,
|
|
138
|
+
vendorLegitimateInterests,
|
|
139
|
+
specialFeatureOptIns
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
save: async ()=>{
|
|
143
|
+
const { iab, locationInfo, user, callbacks } = getState();
|
|
144
|
+
if (!iab?.cmpApi || !iab.gvl) return;
|
|
145
|
+
const { config: iabConfig, gvl, cmpApi, purposeConsents, purposeLegitimateInterests, vendorConsents, vendorLegitimateInterests, specialFeatureOptIns } = iab;
|
|
146
|
+
const { generateTCString, iabPurposesToC15tConsents } = await __webpack_require__.e("859").then(__webpack_require__.bind(__webpack_require__, "./src/libs/iab-tcf/index.ts"));
|
|
147
|
+
const vendorsDisclosed = {};
|
|
148
|
+
for (const vendorId of Object.keys(gvl.vendors))vendorsDisclosed[Number(vendorId)] = true;
|
|
149
|
+
const tcString = await generateTCString({
|
|
150
|
+
purposeConsents,
|
|
151
|
+
purposeLegitimateInterests,
|
|
152
|
+
vendorConsents,
|
|
153
|
+
vendorLegitimateInterests,
|
|
154
|
+
specialFeatureOptIns,
|
|
155
|
+
vendorsDisclosed
|
|
156
|
+
}, gvl, {
|
|
157
|
+
cmpId: iabConfig.cmpId ?? _cmp_defaults__rspack_import_2.D,
|
|
158
|
+
cmpVersion: iabConfig.cmpVersion ?? _cmp_defaults__rspack_import_2.I,
|
|
159
|
+
publisherCountryCode: iabConfig.publisherCountryCode ?? 'GB',
|
|
160
|
+
isServiceSpecific: iabConfig.isServiceSpecific ?? true
|
|
161
|
+
});
|
|
162
|
+
cmpApi.saveToStorage(tcString);
|
|
163
|
+
cmpApi.updateConsent(tcString);
|
|
164
|
+
const c15tConsents = iabPurposesToC15tConsents(purposeConsents);
|
|
165
|
+
const givenAt = Date.now();
|
|
166
|
+
updateState({
|
|
167
|
+
tcString,
|
|
168
|
+
vendorsDisclosed
|
|
169
|
+
});
|
|
170
|
+
let subjectId = getState().consentInfo?.subjectId;
|
|
171
|
+
if (!subjectId) subjectId = (0, _generate_subject_id__rspack_import_1.L)();
|
|
172
|
+
setState({
|
|
173
|
+
consents: c15tConsents,
|
|
174
|
+
selectedConsents: c15tConsents,
|
|
175
|
+
activeUI: 'none',
|
|
176
|
+
consentInfo: {
|
|
177
|
+
time: givenAt,
|
|
178
|
+
subjectId,
|
|
179
|
+
externalId: user?.id,
|
|
180
|
+
identityProvider: user?.identityProvider
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
const customVendorConsents = {};
|
|
184
|
+
const customVendorLegitimateInterests = {};
|
|
185
|
+
for (const vendor of iab.nonIABVendors){
|
|
186
|
+
const vendorKey = String(vendor.id);
|
|
187
|
+
if (vendor.purposes && vendor.purposes.length > 0) customVendorConsents[vendorKey] = vendorConsents[vendorKey] ?? false;
|
|
188
|
+
if (vendor.legIntPurposes && vendor.legIntPurposes.length > 0) customVendorLegitimateInterests[vendorKey] = vendorLegitimateInterests[vendorKey] ?? true;
|
|
189
|
+
}
|
|
190
|
+
(0, _cookie__rspack_import_0._y)({
|
|
191
|
+
consents: c15tConsents,
|
|
192
|
+
consentInfo: {
|
|
193
|
+
time: givenAt,
|
|
194
|
+
subjectId,
|
|
195
|
+
externalId: user?.id,
|
|
196
|
+
identityProvider: user?.identityProvider
|
|
197
|
+
},
|
|
198
|
+
iabCustomVendorConsents: customVendorConsents,
|
|
199
|
+
iabCustomVendorLegitimateInterests: customVendorLegitimateInterests
|
|
200
|
+
}, void 0, getState().storageConfig);
|
|
201
|
+
getState().updateScripts();
|
|
202
|
+
const consent = await manager.setConsent({
|
|
203
|
+
body: {
|
|
204
|
+
subjectId,
|
|
205
|
+
givenAt,
|
|
206
|
+
type: 'cookie_banner',
|
|
207
|
+
domain: 'undefined' != typeof window ? window.location.hostname : '',
|
|
208
|
+
preferences: c15tConsents,
|
|
209
|
+
externalSubjectId: user?.id,
|
|
210
|
+
identityProvider: user?.identityProvider,
|
|
211
|
+
tcString,
|
|
212
|
+
jurisdiction: locationInfo?.jurisdiction ?? void 0,
|
|
213
|
+
jurisdictionModel: 'iab',
|
|
214
|
+
metadata: {
|
|
215
|
+
source: 'iab_tcf',
|
|
216
|
+
acceptanceMethod: 'iab'
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
if (!consent.ok) {
|
|
221
|
+
const errorMsg = consent.error?.message ?? 'Failed to save IAB consents';
|
|
222
|
+
callbacks.onError?.({
|
|
223
|
+
error: errorMsg
|
|
224
|
+
});
|
|
225
|
+
if (!callbacks.onError) console.error(errorMsg);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function createIABManager(config, getState, setState, manager) {
|
|
231
|
+
const state = createInitialIABState(config);
|
|
232
|
+
const actions = createIABActions(getState, setState, manager);
|
|
233
|
+
return {
|
|
234
|
+
...state,
|
|
235
|
+
...actions
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function buildAllPurposeConsents(gvl, value) {
|
|
239
|
+
const purposeConsents = {};
|
|
240
|
+
const purposeLegitimateInterests = {};
|
|
241
|
+
for (const purposeId of Object.keys(gvl.purposes)){
|
|
242
|
+
purposeConsents[Number(purposeId)] = value;
|
|
243
|
+
purposeLegitimateInterests[Number(purposeId)] = value;
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
purposeConsents,
|
|
247
|
+
purposeLegitimateInterests
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function buildAllVendorConsents(gvl, customVendors, value) {
|
|
251
|
+
const vendorConsents = {};
|
|
252
|
+
const vendorLegitimateInterests = {};
|
|
253
|
+
for (const [vendorId, vendor] of Object.entries(gvl.vendors)){
|
|
254
|
+
const id = String(vendorId);
|
|
255
|
+
if (vendor.purposes && vendor.purposes.length > 0) vendorConsents[id] = value;
|
|
256
|
+
if (vendor.legIntPurposes && vendor.legIntPurposes.length > 0) vendorLegitimateInterests[id] = value;
|
|
257
|
+
}
|
|
258
|
+
customVendors.forEach((cv)=>{
|
|
259
|
+
const customVendorId = String(cv.id);
|
|
260
|
+
if (cv.purposes && cv.purposes.length > 0) vendorConsents[customVendorId] = value;
|
|
261
|
+
if (cv.legIntPurposes && cv.legIntPurposes.length > 0) vendorLegitimateInterests[customVendorId] = value;
|
|
262
|
+
});
|
|
263
|
+
return {
|
|
264
|
+
vendorConsents,
|
|
265
|
+
vendorLegitimateInterests
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function buildAllSpecialFeatureOptIns(gvl, value) {
|
|
269
|
+
const specialFeatureOptIns = {};
|
|
270
|
+
for (const featureId of Object.keys(gvl.specialFeatures))specialFeatureOptIns[Number(featureId)] = value;
|
|
271
|
+
return specialFeatureOptIns;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
};
|
package/dist/0~798.js
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
export const __rspack_esm_id = "798";
|
|
2
|
+
export const __rspack_esm_ids = [
|
|
3
|
+
"798"
|
|
4
|
+
];
|
|
5
|
+
export const __webpack_modules__ = {
|
|
6
|
+
"./src/libs/iab-tcf/cmp-defaults.ts" (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
D: ()=>CMP_ID,
|
|
9
|
+
I: ()=>CMP_VERSION
|
|
10
|
+
});
|
|
11
|
+
var _version__rspack_import_0 = __webpack_require__("./src/version.ts");
|
|
12
|
+
const CMP_ID = 0;
|
|
13
|
+
const CMP_VERSION = _version__rspack_import_0.r;
|
|
14
|
+
},
|
|
15
|
+
"./src/libs/iab-tcf/store.ts" (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
16
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
17
|
+
createIABManager: ()=>createIABManager
|
|
18
|
+
});
|
|
19
|
+
var _cookie__rspack_import_0 = __webpack_require__("./src/libs/cookie/index.ts");
|
|
20
|
+
var _generate_subject_id__rspack_import_1 = __webpack_require__("./src/libs/generate-subject-id.ts");
|
|
21
|
+
var _cmp_defaults__rspack_import_2 = __webpack_require__("./src/libs/iab-tcf/cmp-defaults.ts");
|
|
22
|
+
function createInitialIABState(config) {
|
|
23
|
+
return {
|
|
24
|
+
config,
|
|
25
|
+
gvl: null,
|
|
26
|
+
isLoadingGVL: false,
|
|
27
|
+
nonIABVendors: [],
|
|
28
|
+
tcString: null,
|
|
29
|
+
vendorConsents: {},
|
|
30
|
+
vendorLegitimateInterests: {},
|
|
31
|
+
purposeConsents: {},
|
|
32
|
+
purposeLegitimateInterests: {},
|
|
33
|
+
specialFeatureOptIns: {},
|
|
34
|
+
vendorsDisclosed: {},
|
|
35
|
+
cmpApi: null,
|
|
36
|
+
preferenceCenterTab: 'purposes'
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function createIABActions(getState, setState, manager) {
|
|
40
|
+
const updateState = (updates)=>{
|
|
41
|
+
const { iab } = getState();
|
|
42
|
+
if (!iab) return;
|
|
43
|
+
setState({
|
|
44
|
+
iab: {
|
|
45
|
+
...iab,
|
|
46
|
+
...updates
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
_updateState: updateState,
|
|
52
|
+
setPurposeConsent: (purposeId, value)=>{
|
|
53
|
+
const { iab } = getState();
|
|
54
|
+
if (!iab) return;
|
|
55
|
+
updateState({
|
|
56
|
+
purposeConsents: {
|
|
57
|
+
...iab.purposeConsents,
|
|
58
|
+
[purposeId]: value
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
setPurposeLegitimateInterest: (purposeId, value)=>{
|
|
63
|
+
const { iab } = getState();
|
|
64
|
+
if (!iab) return;
|
|
65
|
+
updateState({
|
|
66
|
+
purposeLegitimateInterests: {
|
|
67
|
+
...iab.purposeLegitimateInterests,
|
|
68
|
+
[purposeId]: value
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
setVendorConsent: (vendorId, value)=>{
|
|
73
|
+
const { iab } = getState();
|
|
74
|
+
if (!iab) return;
|
|
75
|
+
updateState({
|
|
76
|
+
vendorConsents: {
|
|
77
|
+
...iab.vendorConsents,
|
|
78
|
+
[String(vendorId)]: value
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
setVendorLegitimateInterest: (vendorId, value)=>{
|
|
83
|
+
const { iab } = getState();
|
|
84
|
+
if (!iab) return;
|
|
85
|
+
updateState({
|
|
86
|
+
vendorLegitimateInterests: {
|
|
87
|
+
...iab.vendorLegitimateInterests,
|
|
88
|
+
[String(vendorId)]: value
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
setSpecialFeatureOptIn: (featureId, value)=>{
|
|
93
|
+
const { iab } = getState();
|
|
94
|
+
if (!iab) return;
|
|
95
|
+
updateState({
|
|
96
|
+
specialFeatureOptIns: {
|
|
97
|
+
...iab.specialFeatureOptIns,
|
|
98
|
+
[featureId]: value
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
setPreferenceCenterTab: (tab)=>{
|
|
103
|
+
updateState({
|
|
104
|
+
preferenceCenterTab: tab
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
acceptAll: ()=>{
|
|
108
|
+
const { iab } = getState();
|
|
109
|
+
if (!iab?.gvl) return;
|
|
110
|
+
const { purposeConsents, purposeLegitimateInterests } = buildAllPurposeConsents(iab.gvl, true);
|
|
111
|
+
const { vendorConsents, vendorLegitimateInterests } = buildAllVendorConsents(iab.gvl, iab.nonIABVendors, true);
|
|
112
|
+
const specialFeatureOptIns = buildAllSpecialFeatureOptIns(iab.gvl, true);
|
|
113
|
+
updateState({
|
|
114
|
+
purposeConsents,
|
|
115
|
+
purposeLegitimateInterests,
|
|
116
|
+
vendorConsents,
|
|
117
|
+
vendorLegitimateInterests,
|
|
118
|
+
specialFeatureOptIns
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
rejectAll: ()=>{
|
|
122
|
+
const { iab } = getState();
|
|
123
|
+
if (!iab?.gvl) return;
|
|
124
|
+
const purposeConsents = {
|
|
125
|
+
1: true
|
|
126
|
+
};
|
|
127
|
+
const purposeLegitimateInterests = {};
|
|
128
|
+
for (const purposeId of Object.keys(iab.gvl.purposes))if (1 !== Number(purposeId)) {
|
|
129
|
+
purposeConsents[Number(purposeId)] = false;
|
|
130
|
+
purposeLegitimateInterests[Number(purposeId)] = false;
|
|
131
|
+
}
|
|
132
|
+
const { vendorConsents, vendorLegitimateInterests } = buildAllVendorConsents(iab.gvl, iab.nonIABVendors, false);
|
|
133
|
+
const specialFeatureOptIns = buildAllSpecialFeatureOptIns(iab.gvl, false);
|
|
134
|
+
updateState({
|
|
135
|
+
purposeConsents,
|
|
136
|
+
purposeLegitimateInterests,
|
|
137
|
+
vendorConsents,
|
|
138
|
+
vendorLegitimateInterests,
|
|
139
|
+
specialFeatureOptIns
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
save: async ()=>{
|
|
143
|
+
const { iab, locationInfo, user, callbacks } = getState();
|
|
144
|
+
if (!iab?.cmpApi || !iab.gvl) return;
|
|
145
|
+
const { config: iabConfig, gvl, cmpApi, purposeConsents, purposeLegitimateInterests, vendorConsents, vendorLegitimateInterests, specialFeatureOptIns } = iab;
|
|
146
|
+
const { generateTCString, iabPurposesToC15tConsents } = await __webpack_require__.e("859").then(__webpack_require__.bind(__webpack_require__, "./src/libs/iab-tcf/index.ts"));
|
|
147
|
+
const vendorsDisclosed = {};
|
|
148
|
+
for (const vendorId of Object.keys(gvl.vendors))vendorsDisclosed[Number(vendorId)] = true;
|
|
149
|
+
const tcString = await generateTCString({
|
|
150
|
+
purposeConsents,
|
|
151
|
+
purposeLegitimateInterests,
|
|
152
|
+
vendorConsents,
|
|
153
|
+
vendorLegitimateInterests,
|
|
154
|
+
specialFeatureOptIns,
|
|
155
|
+
vendorsDisclosed
|
|
156
|
+
}, gvl, {
|
|
157
|
+
cmpId: iabConfig.cmpId ?? _cmp_defaults__rspack_import_2.D,
|
|
158
|
+
cmpVersion: iabConfig.cmpVersion ?? _cmp_defaults__rspack_import_2.I,
|
|
159
|
+
publisherCountryCode: iabConfig.publisherCountryCode ?? 'GB',
|
|
160
|
+
isServiceSpecific: iabConfig.isServiceSpecific ?? true
|
|
161
|
+
});
|
|
162
|
+
cmpApi.saveToStorage(tcString);
|
|
163
|
+
cmpApi.updateConsent(tcString);
|
|
164
|
+
const c15tConsents = iabPurposesToC15tConsents(purposeConsents);
|
|
165
|
+
const givenAt = Date.now();
|
|
166
|
+
updateState({
|
|
167
|
+
tcString,
|
|
168
|
+
vendorsDisclosed
|
|
169
|
+
});
|
|
170
|
+
let subjectId = getState().consentInfo?.subjectId;
|
|
171
|
+
if (!subjectId) subjectId = (0, _generate_subject_id__rspack_import_1.L)();
|
|
172
|
+
setState({
|
|
173
|
+
consents: c15tConsents,
|
|
174
|
+
selectedConsents: c15tConsents,
|
|
175
|
+
activeUI: 'none',
|
|
176
|
+
consentInfo: {
|
|
177
|
+
time: givenAt,
|
|
178
|
+
subjectId,
|
|
179
|
+
externalId: user?.id,
|
|
180
|
+
identityProvider: user?.identityProvider
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
const customVendorConsents = {};
|
|
184
|
+
const customVendorLegitimateInterests = {};
|
|
185
|
+
for (const vendor of iab.nonIABVendors){
|
|
186
|
+
const vendorKey = String(vendor.id);
|
|
187
|
+
if (vendor.purposes && vendor.purposes.length > 0) customVendorConsents[vendorKey] = vendorConsents[vendorKey] ?? false;
|
|
188
|
+
if (vendor.legIntPurposes && vendor.legIntPurposes.length > 0) customVendorLegitimateInterests[vendorKey] = vendorLegitimateInterests[vendorKey] ?? true;
|
|
189
|
+
}
|
|
190
|
+
(0, _cookie__rspack_import_0._y)({
|
|
191
|
+
consents: c15tConsents,
|
|
192
|
+
consentInfo: {
|
|
193
|
+
time: givenAt,
|
|
194
|
+
subjectId,
|
|
195
|
+
externalId: user?.id,
|
|
196
|
+
identityProvider: user?.identityProvider
|
|
197
|
+
},
|
|
198
|
+
iabCustomVendorConsents: customVendorConsents,
|
|
199
|
+
iabCustomVendorLegitimateInterests: customVendorLegitimateInterests
|
|
200
|
+
}, void 0, getState().storageConfig);
|
|
201
|
+
getState().updateScripts();
|
|
202
|
+
const consent = await manager.setConsent({
|
|
203
|
+
body: {
|
|
204
|
+
subjectId,
|
|
205
|
+
givenAt,
|
|
206
|
+
type: 'cookie_banner',
|
|
207
|
+
domain: 'undefined' != typeof window ? window.location.hostname : '',
|
|
208
|
+
preferences: c15tConsents,
|
|
209
|
+
externalSubjectId: user?.id,
|
|
210
|
+
identityProvider: user?.identityProvider,
|
|
211
|
+
tcString,
|
|
212
|
+
jurisdiction: locationInfo?.jurisdiction ?? void 0,
|
|
213
|
+
jurisdictionModel: 'iab',
|
|
214
|
+
metadata: {
|
|
215
|
+
source: 'iab_tcf',
|
|
216
|
+
acceptanceMethod: 'iab'
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
if (!consent.ok) {
|
|
221
|
+
const errorMsg = consent.error?.message ?? 'Failed to save IAB consents';
|
|
222
|
+
callbacks.onError?.({
|
|
223
|
+
error: errorMsg
|
|
224
|
+
});
|
|
225
|
+
if (!callbacks.onError) console.error(errorMsg);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function createIABManager(config, getState, setState, manager) {
|
|
231
|
+
const state = createInitialIABState(config);
|
|
232
|
+
const actions = createIABActions(getState, setState, manager);
|
|
233
|
+
return {
|
|
234
|
+
...state,
|
|
235
|
+
...actions
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function buildAllPurposeConsents(gvl, value) {
|
|
239
|
+
const purposeConsents = {};
|
|
240
|
+
const purposeLegitimateInterests = {};
|
|
241
|
+
for (const purposeId of Object.keys(gvl.purposes)){
|
|
242
|
+
purposeConsents[Number(purposeId)] = value;
|
|
243
|
+
purposeLegitimateInterests[Number(purposeId)] = value;
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
purposeConsents,
|
|
247
|
+
purposeLegitimateInterests
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function buildAllVendorConsents(gvl, customVendors, value) {
|
|
251
|
+
const vendorConsents = {};
|
|
252
|
+
const vendorLegitimateInterests = {};
|
|
253
|
+
for (const [vendorId, vendor] of Object.entries(gvl.vendors)){
|
|
254
|
+
const id = String(vendorId);
|
|
255
|
+
if (vendor.purposes && vendor.purposes.length > 0) vendorConsents[id] = value;
|
|
256
|
+
if (vendor.legIntPurposes && vendor.legIntPurposes.length > 0) vendorLegitimateInterests[id] = value;
|
|
257
|
+
}
|
|
258
|
+
customVendors.forEach((cv)=>{
|
|
259
|
+
const customVendorId = String(cv.id);
|
|
260
|
+
if (cv.purposes && cv.purposes.length > 0) vendorConsents[customVendorId] = value;
|
|
261
|
+
if (cv.legIntPurposes && cv.legIntPurposes.length > 0) vendorLegitimateInterests[customVendorId] = value;
|
|
262
|
+
});
|
|
263
|
+
return {
|
|
264
|
+
vendorConsents,
|
|
265
|
+
vendorLegitimateInterests
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function buildAllSpecialFeatureOptIns(gvl, value) {
|
|
269
|
+
const specialFeatureOptIns = {};
|
|
270
|
+
for (const featureId of Object.keys(gvl.specialFeatures))specialFeatureOptIns[Number(featureId)] = value;
|
|
271
|
+
return specialFeatureOptIns;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
};
|