@wix/web5-core 1.63.44 → 1.63.45
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/dist/cjs/index.js +4 -12
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/privacy/consentGate.js +32 -178
- package/dist/cjs/privacy/consentGate.js.map +1 -1
- package/dist/cjs/privacy/index.js +2 -9
- package/dist/cjs/privacy/index.js.map +1 -1
- package/dist/cjs/utils/analyticsEvents.js +16 -37
- package/dist/cjs/utils/analyticsEvents.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/privacy/consentGate.js +30 -173
- package/dist/esm/privacy/consentGate.js.map +1 -1
- package/dist/esm/privacy/index.js +1 -1
- package/dist/esm/privacy/index.js.map +1 -1
- package/dist/esm/utils/analyticsEvents.js +16 -36
- package/dist/esm/utils/analyticsEvents.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/privacy/consentGate.d.ts +28 -61
- package/dist/types/privacy/consentGate.d.ts.map +1 -1
- package/dist/types/privacy/index.d.ts +1 -1
- package/dist/types/privacy/index.d.ts.map +1 -1
- package/dist/types/utils/analyticsEvents.d.ts +0 -10
- package/dist/types/utils/analyticsEvents.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,36 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The consent gate — DL #218.
|
|
2
|
+
* The consent gate — DL #218 (revised).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* API is not on the page by default and has to be requested, and the fedops
|
|
8
|
-
* app-load pair fires inside that window. A boolean checked at each call site
|
|
9
|
-
* can only ever drop an event that is already in flight; the gate can hold it.
|
|
4
|
+
* Legal cleared analytics/BI transmission to need no consent gate, so the old
|
|
5
|
+
* `transmit()` + buffer machinery is gone. What analytics emitters used to route
|
|
6
|
+
* through the gate now goes straight to the wire.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
8
|
+
* Analytics AND performance telemetry both go straight to the wire now, so there
|
|
9
|
+
* is nothing left to "transmit"-gate. What remains is the consent SIGNAL —
|
|
10
|
+
* snapshot, engagement, provider — behind a single predicate:
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* | denied | yes | still nothing |
|
|
12
|
+
* - `mayPersistToken()` — whether the visitor's OAuth token may be written to
|
|
13
|
+
* localStorage. Persisting the token persists a cross-visit visitor identity
|
|
14
|
+
* (its refresh token), which is the one thing consent still governs. Truth
|
|
15
|
+
* table: granted → yes; denied → never; unknown → only once the visitor
|
|
16
|
+
* engaged.
|
|
19
17
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* Engagement (`unlockOnUserAction`, fired when the visitor submits a prompt)
|
|
19
|
+
* resolves the `unknown` case — typing a question is a reason to remember this
|
|
20
|
+
* visitor for the session — but it never overrides a `denied`.
|
|
22
21
|
*/
|
|
23
22
|
|
|
24
23
|
import { UNKNOWN_CONSENT } from './types.js';
|
|
25
|
-
|
|
26
|
-
/** Held events are dropped past this many — a runaway emitter must not become a leak. */
|
|
27
|
-
const DEFAULT_BUFFER_LIMIT = 50;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* One prefix for the whole consent trail, so `[w5-consent]` in the console
|
|
31
|
-
* filter shows the full story: which CMP was found, what it answered, and for
|
|
32
|
-
* every event whether it was sent, held, dropped or replayed.
|
|
33
|
-
*/
|
|
34
24
|
const LOG_PREFIX = '[w5-consent]';
|
|
35
25
|
const log = function () {
|
|
36
26
|
try {
|
|
@@ -39,55 +29,36 @@ const log = function () {
|
|
|
39
29
|
}
|
|
40
30
|
console.debug(LOG_PREFIX, ...args);
|
|
41
31
|
} catch {
|
|
42
|
-
// A console that throws must never break
|
|
32
|
+
// A console that throws must never break anything.
|
|
43
33
|
}
|
|
44
34
|
};
|
|
45
35
|
const describe = s => `analytics=${s.analytics} performance=${s.performance} marketing=${s.marketing}`;
|
|
46
36
|
let snapshot = UNKNOWN_CONSENT;
|
|
47
37
|
let engaged = false;
|
|
48
|
-
let provider = null;
|
|
49
38
|
let unsubscribeProvider = null;
|
|
50
|
-
let buffer = [];
|
|
51
|
-
let bufferLimit = DEFAULT_BUFFER_LIMIT;
|
|
52
|
-
let droppedFromOverflow = 0;
|
|
53
39
|
const listeners = new Set();
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Cached so `getGateView` is referentially stable between changes —
|
|
57
|
-
* `useSyncExternalStore` re-renders forever if the snapshot is a fresh object
|
|
58
|
-
* on every read.
|
|
59
|
-
*/
|
|
60
|
-
let view = Object.freeze({
|
|
61
|
-
consent: UNKNOWN_CONSENT,
|
|
62
|
-
engaged: false
|
|
63
|
-
});
|
|
64
|
-
const rebuildView = () => {
|
|
65
|
-
view = Object.freeze({
|
|
66
|
-
consent: snapshot,
|
|
67
|
-
engaged
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
40
|
const notify = () => {
|
|
71
41
|
for (const listener of listeners) {
|
|
72
42
|
try {
|
|
73
43
|
listener();
|
|
74
44
|
} catch {
|
|
75
|
-
// A subscriber that throws must not stop the others
|
|
45
|
+
// A subscriber that throws must not stop the others.
|
|
76
46
|
}
|
|
77
47
|
}
|
|
78
48
|
};
|
|
79
49
|
|
|
80
50
|
/**
|
|
81
|
-
* Whether
|
|
51
|
+
* Whether the visitor's OAuth token may be persisted to `localStorage`.
|
|
82
52
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
53
|
+
* Persisting the token persists a cross-visit visitor identity (the refresh
|
|
54
|
+
* token re-identifies the visitor on their next visit), so it answers to
|
|
55
|
+
* consent — the one thing that still does. Explicit consent wins in both
|
|
56
|
+
* directions; engagement resolves only the `unknown` case. The token still
|
|
57
|
+
* lives in memory for the session regardless — only the write to storage is
|
|
58
|
+
* gated.
|
|
85
59
|
*/
|
|
86
|
-
export const
|
|
87
|
-
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
const state = snapshot[purpose];
|
|
60
|
+
export const mayPersistToken = () => {
|
|
61
|
+
const state = snapshot.analytics;
|
|
91
62
|
if (state === 'denied') {
|
|
92
63
|
return false;
|
|
93
64
|
}
|
|
@@ -98,112 +69,19 @@ export const mayTransmit = purpose => {
|
|
|
98
69
|
};
|
|
99
70
|
|
|
100
71
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* Order is preserved among released events, but a flush necessarily emits them
|
|
105
|
-
* later than they were raised — a held app-load event reaches the wire after
|
|
106
|
-
* the prompt that unlocked it. Anything reading these as a timeline has to
|
|
107
|
-
* know that.
|
|
108
|
-
*/
|
|
109
|
-
const settleBuffer = () => {
|
|
110
|
-
if (buffer.length === 0) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const stillHeld = [];
|
|
114
|
-
const releasing = [];
|
|
115
|
-
for (const held of buffer) {
|
|
116
|
-
if (mayTransmit(held.purpose)) {
|
|
117
|
-
releasing.push(held);
|
|
118
|
-
} else if (snapshot[held.purpose] === 'denied') {
|
|
119
|
-
// dropped on the floor, deliberately and permanently
|
|
120
|
-
} else {
|
|
121
|
-
stillHeld.push(held);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
const dropped = buffer.length - stillHeld.length - releasing.length;
|
|
125
|
-
buffer = stillHeld;
|
|
126
|
-
if (releasing.length || dropped) {
|
|
127
|
-
log(`settle — releasing ${releasing.length}` + (dropped ? `, dropping ${dropped} (refused)` : '') + (stillHeld.length ? `, still holding ${stillHeld.length}` : ''));
|
|
128
|
-
}
|
|
129
|
-
for (const held of releasing) {
|
|
130
|
-
try {
|
|
131
|
-
log(` ↳ REPLAY ${held.label} (${held.purpose})`);
|
|
132
|
-
held.send();
|
|
133
|
-
} catch {
|
|
134
|
-
// A failed send must not strand the rest of the flush.
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* The single entry point for anything that would put a request on the wire.
|
|
141
|
-
*
|
|
142
|
-
* Allowed → sent now. Refused → dropped. Not yet known → held until an unlock
|
|
143
|
-
* settles it, or discarded with the page.
|
|
144
|
-
*/
|
|
145
|
-
export const transmit = function (purpose, send, label) {
|
|
146
|
-
if (label === void 0) {
|
|
147
|
-
label = 'event';
|
|
148
|
-
}
|
|
149
|
-
if (mayTransmit(purpose)) {
|
|
150
|
-
log(`SEND ${label} (${purpose}) — allowed`);
|
|
151
|
-
send();
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
if (purpose !== 'necessary' && snapshot[purpose] === 'denied') {
|
|
155
|
-
log(`DROP ${label} (${purpose}) — visitor refused`);
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
if (buffer.length >= bufferLimit) {
|
|
159
|
-
droppedFromOverflow += 1;
|
|
160
|
-
log(`DROP ${label} (${purpose}) — buffer full at ${bufferLimit}, ${droppedFromOverflow} lost`);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
buffer.push({
|
|
164
|
-
purpose: purpose,
|
|
165
|
-
send,
|
|
166
|
-
label
|
|
167
|
-
});
|
|
168
|
-
log(`HOLD ${label} (${purpose}) — no answer yet, ${buffer.length} held`);
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* The visitor did something deliberate — submitted a prompt — so the session
|
|
173
|
-
* may be measured even though no CMP has answered.
|
|
174
|
-
*
|
|
175
|
-
* This is the unlock that keeps web5 measurable at all: on a Shopify store
|
|
176
|
-
* with no privacy configuration the consent API never loads, consent stays
|
|
177
|
-
* `unknown` forever, and without this every store would report nothing.
|
|
178
|
-
*
|
|
179
|
-
* It unlocks **transmission only**. Persistent identity stays gated on real
|
|
180
|
-
* consent (see `mayPersistIdentity`) — typing a question is a reason to
|
|
181
|
-
* measure the session, not a reason to persist an identifier across visits.
|
|
182
|
-
* It also cannot override a `denied`.
|
|
72
|
+
* The visitor did something deliberate — submitted a prompt — so we may remember
|
|
73
|
+
* them for the session even though no CMP has answered. Unlocks the `unknown`
|
|
74
|
+
* case only; it cannot override a `denied`.
|
|
183
75
|
*/
|
|
184
76
|
export const unlockOnUserAction = () => {
|
|
185
77
|
if (engaged) {
|
|
186
78
|
return;
|
|
187
79
|
}
|
|
188
80
|
engaged = true;
|
|
189
|
-
log(
|
|
190
|
-
rebuildView();
|
|
191
|
-
settleBuffer();
|
|
81
|
+
log('UNLOCK — visitor submitted a prompt');
|
|
192
82
|
notify();
|
|
193
83
|
};
|
|
194
|
-
|
|
195
|
-
/** Whether the visitor has taken the deliberate action that unlocks the session. */
|
|
196
|
-
export const isUserEngaged = () => engaged;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Persistent, cross-visit storage of a visitor identifier requires real
|
|
200
|
-
* consent — engagement is deliberately not enough.
|
|
201
|
-
*/
|
|
202
|
-
export const mayPersistIdentity = () => snapshot.analytics === 'granted';
|
|
203
84
|
export const getConsentSnapshot = () => snapshot;
|
|
204
|
-
|
|
205
|
-
/** Referentially stable between changes, for `useSyncExternalStore`. */
|
|
206
|
-
export const getGateView = () => view;
|
|
207
85
|
export const subscribeToConsent = listener => {
|
|
208
86
|
listeners.add(listener);
|
|
209
87
|
return () => {
|
|
@@ -218,8 +96,6 @@ const applySnapshot = next => {
|
|
|
218
96
|
snapshot = Object.freeze({
|
|
219
97
|
...next
|
|
220
98
|
});
|
|
221
|
-
rebuildView();
|
|
222
|
-
settleBuffer();
|
|
223
99
|
notify();
|
|
224
100
|
};
|
|
225
101
|
|
|
@@ -231,35 +107,16 @@ const applySnapshot = next => {
|
|
|
231
107
|
*/
|
|
232
108
|
export const installConsentProvider = next => {
|
|
233
109
|
unsubscribeProvider == null || unsubscribeProvider();
|
|
234
|
-
provider = next;
|
|
235
110
|
const initial = next.read();
|
|
236
111
|
log(`provider installed: ${next.name} — reads ${describe(initial)}`);
|
|
237
112
|
applySnapshot(initial);
|
|
238
113
|
unsubscribeProvider = next.subscribe(applySnapshot);
|
|
239
114
|
};
|
|
240
|
-
export const getInstalledProviderName = () => {
|
|
241
|
-
var _provider;
|
|
242
|
-
return ((_provider = provider) == null ? void 0 : _provider.name) ?? null;
|
|
243
|
-
};
|
|
244
|
-
export const setConsentBufferLimit = limit => {
|
|
245
|
-
bufferLimit = Math.max(0, limit);
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
/** Diagnostics only — how much the gate is holding, and what it had to drop. */
|
|
249
|
-
export const getConsentGateStats = () => ({
|
|
250
|
-
held: buffer.length,
|
|
251
|
-
droppedFromOverflow
|
|
252
|
-
});
|
|
253
115
|
export const resetConsentGateForTests = () => {
|
|
254
116
|
unsubscribeProvider == null || unsubscribeProvider();
|
|
255
117
|
unsubscribeProvider = null;
|
|
256
|
-
provider = null;
|
|
257
118
|
snapshot = UNKNOWN_CONSENT;
|
|
258
119
|
engaged = false;
|
|
259
|
-
buffer = [];
|
|
260
|
-
bufferLimit = DEFAULT_BUFFER_LIMIT;
|
|
261
|
-
droppedFromOverflow = 0;
|
|
262
120
|
listeners.clear();
|
|
263
|
-
rebuildView();
|
|
264
121
|
};
|
|
265
122
|
//# sourceMappingURL=consentGate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["UNKNOWN_CONSENT","DEFAULT_BUFFER_LIMIT","LOG_PREFIX","log","_len","arguments","length","args","Array","_key","console","debug","describe","s","analytics","performance","marketing","snapshot","engaged","provider","unsubscribeProvider","buffer","bufferLimit","droppedFromOverflow","listeners","Set","view","Object","freeze","consent","rebuildView","notify","listener","mayTransmit","purpose","state","settleBuffer","stillHeld","releasing","held","push","dropped","label","send","transmit","unlockOnUserAction","isUserEngaged","mayPersistIdentity","getConsentSnapshot","getGateView","subscribeToConsent","add","delete","applySnapshot","next","installConsentProvider","initial","read","name","subscribe","getInstalledProviderName","_provider","setConsentBufferLimit","limit","Math","max","getConsentGateStats","resetConsentGateForTests","clear"],"sources":["../../../src/privacy/consentGate.ts"],"sourcesContent":["/**\n * The consent gate — DL #218.\n *\n * Every BI, telemetry and analytics emitter in web5 goes through `transmit()`\n * instead of calling its transport directly. The gate exists because the\n * consent signal resolves *after* the events that need it: Shopify's consent\n * API is not on the page by default and has to be requested, and the fedops\n * app-load pair fires inside that window. A boolean checked at each call site\n * can only ever drop an event that is already in flight; the gate can hold it.\n *\n * Two independent unlocks, and they do not compose as a plain \"either/or\":\n *\n * | consent | engaged | result |\n * |-----------|---------|---------------------------------|\n * | granted | either | transmit |\n * | unknown | no | hold in the buffer |\n * | unknown | yes | transmit, and flush what's held |\n * | denied | yes | still nothing |\n *\n * Denied outranks engaged. A visitor who refused analytics in the banner does\n * not re-enable tracking by typing a question.\n */\n\nimport {\n UNKNOWN_CONSENT,\n type ConsentProvider,\n type ConsentPurpose,\n type ConsentSnapshot,\n type GatedPurpose,\n} from './types';\n\n/** Held events are dropped past this many — a runaway emitter must not become a leak. */\nconst DEFAULT_BUFFER_LIMIT = 50;\n\n/**\n * One prefix for the whole consent trail, so `[w5-consent]` in the console\n * filter shows the full story: which CMP was found, what it answered, and for\n * every event whether it was sent, held, dropped or replayed.\n */\nconst LOG_PREFIX = '[w5-consent]';\n\nconst log = (...args: unknown[]): void => {\n try {\n console.debug(LOG_PREFIX, ...args);\n } catch {\n // A console that throws must never break a send.\n }\n};\n\nconst describe = (s: ConsentSnapshot): string =>\n `analytics=${s.analytics} performance=${s.performance} marketing=${s.marketing}`;\n\ninterface HeldEvent {\n purpose: GatedPurpose;\n send: () => void;\n label: string;\n}\n\nexport interface GateView {\n consent: ConsentSnapshot;\n engaged: boolean;\n}\n\ntype Listener = () => void;\n\nlet snapshot: ConsentSnapshot = UNKNOWN_CONSENT;\nlet engaged = false;\nlet provider: ConsentProvider | null = null;\nlet unsubscribeProvider: (() => void) | null = null;\nlet buffer: HeldEvent[] = [];\nlet bufferLimit = DEFAULT_BUFFER_LIMIT;\nlet droppedFromOverflow = 0;\n\nconst listeners = new Set<Listener>();\n\n/**\n * Cached so `getGateView` is referentially stable between changes —\n * `useSyncExternalStore` re-renders forever if the snapshot is a fresh object\n * on every read.\n */\nlet view: GateView = Object.freeze({\n consent: UNKNOWN_CONSENT,\n engaged: false,\n});\n\nconst rebuildView = (): void => {\n view = Object.freeze({ consent: snapshot, engaged });\n};\n\nconst notify = (): void => {\n for (const listener of listeners) {\n try {\n listener();\n } catch {\n // A subscriber that throws must not stop the others, or stop a flush.\n }\n }\n};\n\n/**\n * Whether an event for `purpose` may go on the wire right now.\n *\n * `necessary` is always allowed. For everything else: explicit consent wins in\n * both directions, and engagement resolves only the `unknown` case.\n */\nexport const mayTransmit = (purpose: ConsentPurpose): boolean => {\n if (purpose === 'necessary') {\n return true;\n }\n const state = snapshot[purpose];\n if (state === 'denied') {\n return false;\n }\n if (state === 'granted') {\n return true;\n }\n return engaged;\n};\n\n/**\n * Release everything the gate is holding that is now allowed, and drop\n * everything that is now refused. Anything still `unknown` stays held.\n *\n * Order is preserved among released events, but a flush necessarily emits them\n * later than they were raised — a held app-load event reaches the wire after\n * the prompt that unlocked it. Anything reading these as a timeline has to\n * know that.\n */\nconst settleBuffer = (): void => {\n if (buffer.length === 0) {\n return;\n }\n const stillHeld: HeldEvent[] = [];\n const releasing: HeldEvent[] = [];\n\n for (const held of buffer) {\n if (mayTransmit(held.purpose)) {\n releasing.push(held);\n } else if (snapshot[held.purpose] === 'denied') {\n // dropped on the floor, deliberately and permanently\n } else {\n stillHeld.push(held);\n }\n }\n\n const dropped = buffer.length - stillHeld.length - releasing.length;\n buffer = stillHeld;\n\n if (releasing.length || dropped) {\n log(\n `settle — releasing ${releasing.length}` +\n (dropped ? `, dropping ${dropped} (refused)` : '') +\n (stillHeld.length ? `, still holding ${stillHeld.length}` : ''),\n );\n }\n\n for (const held of releasing) {\n try {\n log(` ↳ REPLAY ${held.label} (${held.purpose})`);\n held.send();\n } catch {\n // A failed send must not strand the rest of the flush.\n }\n }\n};\n\n/**\n * The single entry point for anything that would put a request on the wire.\n *\n * Allowed → sent now. Refused → dropped. Not yet known → held until an unlock\n * settles it, or discarded with the page.\n */\nexport const transmit = (\n purpose: ConsentPurpose,\n send: () => void,\n label = 'event',\n): void => {\n if (mayTransmit(purpose)) {\n log(`SEND ${label} (${purpose}) — allowed`);\n send();\n return;\n }\n if (purpose !== 'necessary' && snapshot[purpose] === 'denied') {\n log(`DROP ${label} (${purpose}) — visitor refused`);\n return;\n }\n if (buffer.length >= bufferLimit) {\n droppedFromOverflow += 1;\n log(\n `DROP ${label} (${purpose}) — buffer full at ${bufferLimit}, ${droppedFromOverflow} lost`,\n );\n return;\n }\n buffer.push({ purpose: purpose as GatedPurpose, send, label });\n log(`HOLD ${label} (${purpose}) — no answer yet, ${buffer.length} held`);\n};\n\n/**\n * The visitor did something deliberate — submitted a prompt — so the session\n * may be measured even though no CMP has answered.\n *\n * This is the unlock that keeps web5 measurable at all: on a Shopify store\n * with no privacy configuration the consent API never loads, consent stays\n * `unknown` forever, and without this every store would report nothing.\n *\n * It unlocks **transmission only**. Persistent identity stays gated on real\n * consent (see `mayPersistIdentity`) — typing a question is a reason to\n * measure the session, not a reason to persist an identifier across visits.\n * It also cannot override a `denied`.\n */\nexport const unlockOnUserAction = (): void => {\n if (engaged) {\n return;\n }\n engaged = true;\n log(\n `UNLOCK — visitor submitted a prompt; ${buffer.length} held event(s) to settle`,\n );\n rebuildView();\n settleBuffer();\n notify();\n};\n\n/** Whether the visitor has taken the deliberate action that unlocks the session. */\nexport const isUserEngaged = (): boolean => engaged;\n\n/**\n * Persistent, cross-visit storage of a visitor identifier requires real\n * consent — engagement is deliberately not enough.\n */\nexport const mayPersistIdentity = (): boolean =>\n snapshot.analytics === 'granted';\n\nexport const getConsentSnapshot = (): ConsentSnapshot => snapshot;\n\n/** Referentially stable between changes, for `useSyncExternalStore`. */\nexport const getGateView = (): GateView => view;\n\nexport const subscribeToConsent = (listener: Listener): (() => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n};\n\nconst applySnapshot = (next: ConsentSnapshot): void => {\n if (\n next.analytics === snapshot.analytics &&\n next.marketing === snapshot.marketing &&\n next.performance === snapshot.performance\n ) {\n return;\n }\n log(`ANSWER — ${describe(snapshot)} → ${describe(next)}`);\n snapshot = Object.freeze({ ...next });\n rebuildView();\n settleBuffer();\n notify();\n};\n\n/**\n * Install the host's provider. Reads its current state immediately, *then*\n * subscribes — DL #217: a listener registered into an already-rendered page is\n * bound to an event that may have fired long before the bundle executed, so\n * subscribing alone would leave the gate permanently at `unknown`.\n */\nexport const installConsentProvider = (next: ConsentProvider): void => {\n unsubscribeProvider?.();\n provider = next;\n const initial = next.read();\n log(`provider installed: ${next.name} — reads ${describe(initial)}`);\n applySnapshot(initial);\n unsubscribeProvider = next.subscribe(applySnapshot);\n};\n\nexport const getInstalledProviderName = (): string | null =>\n provider?.name ?? null;\n\nexport const setConsentBufferLimit = (limit: number): void => {\n bufferLimit = Math.max(0, limit);\n};\n\n/** Diagnostics only — how much the gate is holding, and what it had to drop. */\nexport const getConsentGateStats = (): {\n held: number;\n droppedFromOverflow: number;\n} => ({ held: buffer.length, droppedFromOverflow });\n\nexport const resetConsentGateForTests = (): void => {\n unsubscribeProvider?.();\n unsubscribeProvider = null;\n provider = null;\n snapshot = UNKNOWN_CONSENT;\n engaged = false;\n buffer = [];\n bufferLimit = DEFAULT_BUFFER_LIMIT;\n droppedFromOverflow = 0;\n listeners.clear();\n rebuildView();\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["UNKNOWN_CONSENT","LOG_PREFIX","log","_len","arguments","length","args","Array","_key","console","debug","describe","s","analytics","performance","marketing","snapshot","engaged","unsubscribeProvider","listeners","Set","notify","listener","mayPersistToken","state","unlockOnUserAction","getConsentSnapshot","subscribeToConsent","add","delete","applySnapshot","next","Object","freeze","installConsentProvider","initial","read","name","subscribe","resetConsentGateForTests","clear"],"sources":["../../../src/privacy/consentGate.ts"],"sourcesContent":["/**\n * The consent gate — DL #218 (revised).\n *\n * Legal cleared analytics/BI transmission to need no consent gate, so the old\n * `transmit()` + buffer machinery is gone. What analytics emitters used to route\n * through the gate now goes straight to the wire.\n *\n * Analytics AND performance telemetry both go straight to the wire now, so there\n * is nothing left to \"transmit\"-gate. What remains is the consent SIGNAL —\n * snapshot, engagement, provider — behind a single predicate:\n *\n * - `mayPersistToken()` — whether the visitor's OAuth token may be written to\n * localStorage. Persisting the token persists a cross-visit visitor identity\n * (its refresh token), which is the one thing consent still governs. Truth\n * table: granted → yes; denied → never; unknown → only once the visitor\n * engaged.\n *\n * Engagement (`unlockOnUserAction`, fired when the visitor submits a prompt)\n * resolves the `unknown` case — typing a question is a reason to remember this\n * visitor for the session — but it never overrides a `denied`.\n */\n\nimport {\n UNKNOWN_CONSENT,\n type ConsentProvider,\n type ConsentSnapshot,\n} from './types';\n\nconst LOG_PREFIX = '[w5-consent]';\n\nconst log = (...args: unknown[]): void => {\n try {\n console.debug(LOG_PREFIX, ...args);\n } catch {\n // A console that throws must never break anything.\n }\n};\n\nconst describe = (s: ConsentSnapshot): string =>\n `analytics=${s.analytics} performance=${s.performance} marketing=${s.marketing}`;\n\ntype Listener = () => void;\n\nlet snapshot: ConsentSnapshot = UNKNOWN_CONSENT;\nlet engaged = false;\nlet unsubscribeProvider: (() => void) | null = null;\n\nconst listeners = new Set<Listener>();\n\nconst notify = (): void => {\n for (const listener of listeners) {\n try {\n listener();\n } catch {\n // A subscriber that throws must not stop the others.\n }\n }\n};\n\n/**\n * Whether the visitor's OAuth token may be persisted to `localStorage`.\n *\n * Persisting the token persists a cross-visit visitor identity (the refresh\n * token re-identifies the visitor on their next visit), so it answers to\n * consent — the one thing that still does. Explicit consent wins in both\n * directions; engagement resolves only the `unknown` case. The token still\n * lives in memory for the session regardless — only the write to storage is\n * gated.\n */\nexport const mayPersistToken = (): boolean => {\n const state = snapshot.analytics;\n if (state === 'denied') {\n return false;\n }\n if (state === 'granted') {\n return true;\n }\n return engaged;\n};\n\n/**\n * The visitor did something deliberate — submitted a prompt — so we may remember\n * them for the session even though no CMP has answered. Unlocks the `unknown`\n * case only; it cannot override a `denied`.\n */\nexport const unlockOnUserAction = (): void => {\n if (engaged) {\n return;\n }\n engaged = true;\n log('UNLOCK — visitor submitted a prompt');\n notify();\n};\n\nexport const getConsentSnapshot = (): ConsentSnapshot => snapshot;\n\nexport const subscribeToConsent = (listener: Listener): (() => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n};\n\nconst applySnapshot = (next: ConsentSnapshot): void => {\n if (\n next.analytics === snapshot.analytics &&\n next.marketing === snapshot.marketing &&\n next.performance === snapshot.performance\n ) {\n return;\n }\n log(`ANSWER — ${describe(snapshot)} → ${describe(next)}`);\n snapshot = Object.freeze({ ...next });\n notify();\n};\n\n/**\n * Install the host's provider. Reads its current state immediately, *then*\n * subscribes — DL #217: a listener registered into an already-rendered page is\n * bound to an event that may have fired long before the bundle executed, so\n * subscribing alone would leave the gate permanently at `unknown`.\n */\nexport const installConsentProvider = (next: ConsentProvider): void => {\n unsubscribeProvider?.();\n const initial = next.read();\n log(`provider installed: ${next.name} — reads ${describe(initial)}`);\n applySnapshot(initial);\n unsubscribeProvider = next.subscribe(applySnapshot);\n};\n\nexport const resetConsentGateForTests = (): void => {\n unsubscribeProvider?.();\n unsubscribeProvider = null;\n snapshot = UNKNOWN_CONSENT;\n engaged = false;\n listeners.clear();\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { UNKNOWN_CONSENT } from './types.js';
|
|
2
|
-
export {
|
|
2
|
+
export { unlockOnUserAction, mayPersistToken, getConsentSnapshot, subscribeToConsent, installConsentProvider, resetConsentGateForTests } from './consentGate.js';
|
|
3
3
|
export { detectConsentProvider, initConsentGate } from './detectProvider.js';
|
|
4
4
|
export { CONSENT_OVERRIDE_KEY, CONSENT_OVERRIDE_QUERY_PARAM, getConsentOverride, setConsentOverride } from './consentOverride.js';
|
|
5
5
|
export { createShopifyConsentProvider, isShopifyHost } from './providers/shopifyProvider.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["UNKNOWN_CONSENT","
|
|
1
|
+
{"version":3,"names":["UNKNOWN_CONSENT","unlockOnUserAction","mayPersistToken","getConsentSnapshot","subscribeToConsent","installConsentProvider","resetConsentGateForTests","detectConsentProvider","initConsentGate","CONSENT_OVERRIDE_KEY","CONSENT_OVERRIDE_QUERY_PARAM","getConsentOverride","setConsentOverride","createShopifyConsentProvider","isShopifyHost","createOneTrustConsentProvider","isOneTrustHost","HOST_CONSENT_GLOBAL","createHostSuppliedConsentProvider","hasHostSuppliedConsent","publishHostConsent"],"sources":["../../../src/privacy/index.ts"],"sourcesContent":["export {\n type ConsentState,\n type ConsentPurpose,\n type GatedPurpose,\n type ConsentSnapshot,\n type ConsentProvider,\n UNKNOWN_CONSENT,\n} from './types';\n\nexport {\n unlockOnUserAction,\n mayPersistToken,\n getConsentSnapshot,\n subscribeToConsent,\n installConsentProvider,\n resetConsentGateForTests,\n} from './consentGate';\n\nexport { detectConsentProvider, initConsentGate } from './detectProvider';\n\nexport {\n CONSENT_OVERRIDE_KEY,\n CONSENT_OVERRIDE_QUERY_PARAM,\n getConsentOverride,\n setConsentOverride,\n} from './consentOverride';\n\nexport {\n createShopifyConsentProvider,\n isShopifyHost,\n} from './providers/shopifyProvider';\nexport {\n createOneTrustConsentProvider,\n isOneTrustHost,\n} from './providers/oneTrustProvider';\nexport {\n type HostConsentInput,\n HOST_CONSENT_GLOBAL,\n createHostSuppliedConsentProvider,\n hasHostSuppliedConsent,\n publishHostConsent,\n} from './providers/hostSuppliedProvider';\n"],"mappings":"AAAA,SAMEA,eAAe,QACV,SAAS;AAEhB,SACEC,kBAAkB,EAClBC,eAAe,EACfC,kBAAkB,EAClBC,kBAAkB,EAClBC,sBAAsB,EACtBC,wBAAwB,QACnB,eAAe;AAEtB,SAASC,qBAAqB,EAAEC,eAAe,QAAQ,kBAAkB;AAEzE,SACEC,oBAAoB,EACpBC,4BAA4B,EAC5BC,kBAAkB,EAClBC,kBAAkB,QACb,mBAAmB;AAE1B,SACEC,4BAA4B,EAC5BC,aAAa,QACR,6BAA6B;AACpC,SACEC,6BAA6B,EAC7BC,cAAc,QACT,8BAA8B;AACrC,SAEEC,mBAAmB,EACnBC,iCAAiC,EACjCC,sBAAsB,EACtBC,kBAAkB,QACb,kCAAkC","ignoreList":[]}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
import { mayTransmit, transmit } from '../privacy/consentGate.js';
|
|
2
|
-
/**
|
|
3
|
-
* Whether analytics may go on the wire right now.
|
|
4
|
-
*
|
|
5
|
-
* DL #218: this used to read OneTrust directly and return `true` when OneTrust
|
|
6
|
-
* was absent, which on a Shopify storefront — where no host loads OneTrust —
|
|
7
|
-
* meant unconditional default-allow. It now defers to the consent gate, which
|
|
8
|
-
* reads whichever CMP the host actually has and, in the absence of any answer,
|
|
9
|
-
* holds until the visitor does something deliberate.
|
|
10
|
-
*/
|
|
11
|
-
export function hasAnalyticsConsent() {
|
|
12
|
-
if (typeof window === 'undefined') {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
return mayTransmit('analytics');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
1
|
/**
|
|
19
2
|
* Universal event dispatch: auto-detects GTM vs standalone gtag.js.
|
|
20
3
|
*
|
|
@@ -30,27 +13,24 @@ export function pushEvent(eventName, params) {
|
|
|
30
13
|
return;
|
|
31
14
|
}
|
|
32
15
|
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
16
|
+
// Analytics is not consent-gated (DL #218 revised) — send straight to whichever
|
|
17
|
+
// host SDK is present.
|
|
18
|
+
// GTM mode
|
|
19
|
+
if (window.google_tag_manager && window.dataLayer) {
|
|
20
|
+
window.dataLayer.push({
|
|
21
|
+
event: eventName,
|
|
22
|
+
...params
|
|
23
|
+
});
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
45
26
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
27
|
+
// Standalone gtag.js mode
|
|
28
|
+
if (typeof window.gtag === 'function') {
|
|
29
|
+
window.gtag('event', eventName, params);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
51
32
|
|
|
52
|
-
|
|
53
|
-
}, `ga ${eventName}`);
|
|
33
|
+
// No analytics SDK loaded — no-op
|
|
54
34
|
}
|
|
55
35
|
export function pushPromptSubmit(promptType, promptText) {
|
|
56
36
|
pushEvent('web5_prompt_submit', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["pushEvent","eventName","params","window","google_tag_manager","dataLayer","push","event","gtag","pushPromptSubmit","promptType","promptText","prompt_type","prompt_text","pushLinkClick","linkUrl","linkType","linkText","link_url","link_type","link_text","pushError","errorType","statusCode","errorMessage","error_type","status_code","error_message","pushExit","exitUrl","exitType","exit_url","exit_type","pushEntityFiltered","reason","entityType","entityId","entity_type","entity_id"],"sources":["../../../src/utils/analyticsEvents.ts"],"sourcesContent":["declare global {\n interface Window {\n dataLayer?: Record<string, unknown>[];\n gtag?: (...args: unknown[]) => void;\n google_tag_manager?: Record<string, unknown>;\n OnetrustActiveGroups?: string;\n }\n}\n\n/**\n * Universal event dispatch: auto-detects GTM vs standalone gtag.js.\n *\n * GTM is checked first via `google_tag_manager` because when GTM has a GA4\n * tag configured it also creates `window.gtag`. Using dataLayer.push()\n * ensures GTM triggers/tags still process the event.\n */\nexport function pushEvent(\n eventName: string,\n params: Record<string, unknown> = {},\n): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n // Analytics is not consent-gated (DL #218 revised) — send straight to whichever\n // host SDK is present.\n // GTM mode\n if (window.google_tag_manager && window.dataLayer) {\n window.dataLayer.push({ event: eventName, ...params });\n return;\n }\n\n // Standalone gtag.js mode\n if (typeof window.gtag === 'function') {\n window.gtag('event', eventName, params);\n return;\n }\n\n // No analytics SDK loaded — no-op\n}\n\nexport function pushPromptSubmit(\n promptType: 'text' | 'chip',\n promptText: string,\n): void {\n pushEvent('web5_prompt_submit', {\n prompt_type: promptType,\n prompt_text: promptText,\n });\n}\n\nexport function pushLinkClick(\n linkUrl: string,\n linkType: 'web5' | 'external' | 'internal',\n linkText?: string,\n): void {\n pushEvent('web5_link_click', {\n link_url: linkUrl,\n link_type: linkType,\n link_text: linkText ?? '',\n });\n}\n\nexport function pushError(\n errorType: string,\n statusCode: number,\n errorMessage?: string,\n): void {\n pushEvent('web5_error', {\n error_type: errorType,\n status_code: statusCode,\n error_message: errorMessage ?? '',\n });\n}\n\nexport function pushExit(\n exitUrl: string,\n linkText: string,\n exitType: 'external' | 'internal',\n): void {\n pushEvent('web5_exit', {\n exit_url: exitUrl,\n link_text: linkText,\n exit_type: exitType,\n });\n}\n\nexport type EntityFilteredReason = 'no_data' | 'no_url';\n\nexport function pushEntityFiltered(\n reason: EntityFilteredReason,\n entityType: string,\n entityId: string,\n): void {\n pushEvent('web5_entity_filtered', {\n reason,\n entity_type: entityType,\n entity_id: entityId,\n });\n}\n"],"mappings":"AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,SAASA,CACvBC,SAAiB,EACjBC,MAA+B,EACzB;EAAA,IADNA,MAA+B;IAA/BA,MAA+B,GAAG,CAAC,CAAC;EAAA;EAEpC,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC;EACF;;EAEA;EACA;EACA;EACA,IAAIA,MAAM,CAACC,kBAAkB,IAAID,MAAM,CAACE,SAAS,EAAE;IACjDF,MAAM,CAACE,SAAS,CAACC,IAAI,CAAC;MAAEC,KAAK,EAAEN,SAAS;MAAE,GAAGC;IAAO,CAAC,CAAC;IACtD;EACF;;EAEA;EACA,IAAI,OAAOC,MAAM,CAACK,IAAI,KAAK,UAAU,EAAE;IACrCL,MAAM,CAACK,IAAI,CAAC,OAAO,EAAEP,SAAS,EAAEC,MAAM,CAAC;IACvC;EACF;;EAEA;AACF;AAEA,OAAO,SAASO,gBAAgBA,CAC9BC,UAA2B,EAC3BC,UAAkB,EACZ;EACNX,SAAS,CAAC,oBAAoB,EAAE;IAC9BY,WAAW,EAAEF,UAAU;IACvBG,WAAW,EAAEF;EACf,CAAC,CAAC;AACJ;AAEA,OAAO,SAASG,aAAaA,CAC3BC,OAAe,EACfC,QAA0C,EAC1CC,QAAiB,EACX;EACNjB,SAAS,CAAC,iBAAiB,EAAE;IAC3BkB,QAAQ,EAAEH,OAAO;IACjBI,SAAS,EAAEH,QAAQ;IACnBI,SAAS,EAAEH,QAAQ,IAAI;EACzB,CAAC,CAAC;AACJ;AAEA,OAAO,SAASI,SAASA,CACvBC,SAAiB,EACjBC,UAAkB,EAClBC,YAAqB,EACf;EACNxB,SAAS,CAAC,YAAY,EAAE;IACtByB,UAAU,EAAEH,SAAS;IACrBI,WAAW,EAAEH,UAAU;IACvBI,aAAa,EAAEH,YAAY,IAAI;EACjC,CAAC,CAAC;AACJ;AAEA,OAAO,SAASI,QAAQA,CACtBC,OAAe,EACfZ,QAAgB,EAChBa,QAAiC,EAC3B;EACN9B,SAAS,CAAC,WAAW,EAAE;IACrB+B,QAAQ,EAAEF,OAAO;IACjBT,SAAS,EAAEH,QAAQ;IACnBe,SAAS,EAAEF;EACb,CAAC,CAAC;AACJ;AAIA,OAAO,SAASG,kBAAkBA,CAChCC,MAA4B,EAC5BC,UAAkB,EAClBC,QAAgB,EACV;EACNpC,SAAS,CAAC,sBAAsB,EAAE;IAChCkC,MAAM;IACNG,WAAW,EAAEF,UAAU;IACvBG,SAAS,EAAEF;EACb,CAAC,CAAC;AACJ","ignoreList":[]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -56,8 +56,8 @@ export { normalizeImageUrl, getResizedImageUrl } from './utils/image-utils';
|
|
|
56
56
|
export { analyzeBackdrop, computeContentBBox, buildProbeUrl, loadImagePixels, loadBackdropAnalysis, type BackdropAnalysis, type ContentBBox, type ImagePixels, } from './utils/imageBackdrop';
|
|
57
57
|
export { stripMarkdown } from './component/componentDefinitions/parse-utils';
|
|
58
58
|
export { type RGB, rgbToHsl, hslToRgb, ensureMinLightness, toRgb, deriveDarkColor, deriveDarkGradient, deriveLightColor, } from './color/colorUtils';
|
|
59
|
-
export { pushEvent, pushPromptSubmit, pushLinkClick, pushError, pushExit, pushEntityFiltered,
|
|
60
|
-
export { type ConsentState, type ConsentPurpose, type GatedPurpose, type ConsentSnapshot, type ConsentProvider, type
|
|
59
|
+
export { pushEvent, pushPromptSubmit, pushLinkClick, pushError, pushExit, pushEntityFiltered, type EntityFilteredReason, } from './utils/analyticsEvents';
|
|
60
|
+
export { type ConsentState, type ConsentPurpose, type GatedPurpose, type ConsentSnapshot, type ConsentProvider, type HostConsentInput, UNKNOWN_CONSENT, HOST_CONSENT_GLOBAL, unlockOnUserAction, mayPersistToken, getConsentSnapshot, subscribeToConsent, installConsentProvider, resetConsentGateForTests, detectConsentProvider, initConsentGate, CONSENT_OVERRIDE_KEY, CONSENT_OVERRIDE_QUERY_PARAM, getConsentOverride, setConsentOverride, createShopifyConsentProvider, isShopifyHost, createOneTrustConsentProvider, isOneTrustHost, createHostSuppliedConsentProvider, hasHostSuppliedConsent, publishHostConsent, } from './privacy';
|
|
61
61
|
export { type ConversationErrorType, ERROR_MARKDOWN, getErrorTypeFromStatus, createErrorMarkdown, STREAMING_TIMEOUT_MS, type ErrorActionType, type ErrorIconType, type ErrorTemplateButton, type ErrorTemplate, type ErrorTemplateOverrides, DEFAULT_ERROR_TEMPLATES, resolveErrorTemplate, } from './errors';
|
|
62
62
|
export { getForwardStack, setForwardStack, clearForwardStack, pushToForwardStack, popFromForwardStack, } from './utils/navigationStack';
|
|
63
63
|
export { UserQuery, type UserQueryProps, type ProductBackContext, } from './components/ui/UserQuery';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|