@hanzo/event 0.3.50 → 0.3.52
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/consent.d.ts +19 -0
- package/dist/consent.d.ts.map +1 -1
- package/dist/index.cjs +67 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +62 -22
- package/dist/index.mjs.map +1 -1
- package/dist/org.d.ts +10 -0
- package/dist/org.d.ts.map +1 -1
- package/dist/react.cjs +41 -10
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.mjs +41 -10
- package/dist/react.mjs.map +1 -1
- package/dist/tags.d.ts +0 -7
- package/dist/tags.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/consent.test.ts +60 -3
- package/src/consent.ts +67 -9
- package/src/index.ts +4 -4
- package/src/link.test.ts +4 -3
- package/src/org.test.ts +25 -5
- package/src/org.ts +38 -0
- package/src/react.tsx +6 -2
- package/src/tags.ts +5 -26
package/dist/consent.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export declare const CONSENT_COOKIE = "hz_consent";
|
|
2
|
+
/** The policy version the stored choice was made under. */
|
|
3
|
+
export declare const CONSENT_VERSION_COOKIE = "hz_consent_v";
|
|
4
|
+
/** Fired on `window` when cloud's rule for this visitor arrives. */
|
|
5
|
+
export declare const POLICY_EVENT = "hzpolicy";
|
|
2
6
|
/** Fired on `window` whenever a choice is stored. */
|
|
3
7
|
export declare const CONSENT_EVENT = "hzconsent";
|
|
4
8
|
export interface Choice {
|
|
@@ -7,6 +11,19 @@ export interface Choice {
|
|
|
7
11
|
ads: boolean;
|
|
8
12
|
}
|
|
9
13
|
export type Region = 'opt-in' | 'opt-out';
|
|
14
|
+
/** The rule cloud resolved for this visitor. */
|
|
15
|
+
export interface Policy {
|
|
16
|
+
region: string;
|
|
17
|
+
mode: Region;
|
|
18
|
+
defaults: Choice;
|
|
19
|
+
gpc: boolean;
|
|
20
|
+
version: number;
|
|
21
|
+
notice?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Takes cloud's rule for this visitor and tells the page, so a banner drawn early redraws. */
|
|
24
|
+
export declare function serve(p: unknown): void;
|
|
25
|
+
/** The rule cloud resolved, once it has answered. */
|
|
26
|
+
export declare const policy: () => Policy | undefined;
|
|
10
27
|
/** Whether the browser sends Global Privacy Control. */
|
|
11
28
|
export declare function gpc(): boolean;
|
|
12
29
|
/** Whether the browser sends Global Privacy Control or Do Not Track. */
|
|
@@ -19,6 +36,8 @@ export declare function stored(): boolean;
|
|
|
19
36
|
export declare function read(): Choice;
|
|
20
37
|
/** Whether the consent banner must be shown: an opt-in visitor who has not chosen. */
|
|
21
38
|
export declare function asks(): boolean;
|
|
39
|
+
/** Whether a small notice must be shown: an opt-out visitor who has not yet seen it. */
|
|
40
|
+
export declare function notices(): boolean;
|
|
22
41
|
/** The choice as the `consent` property and the cookie spell it. */
|
|
23
42
|
export declare function render(c: Choice): string;
|
|
24
43
|
/**
|
package/dist/consent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,cAAc,eAAe,CAAA;AAE1C,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,iBAAiB,CAAA;AAEpD,oEAAoE;AACpE,eAAO,MAAM,YAAY,aAAa,CAAA;AAEtC,qDAAqD;AACrD,eAAO,MAAM,aAAa,cAAc,CAAA;AAExC,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEzC,gDAAgD;AAChD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,+FAA+F;AAC/F,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAgBtC;AAED,qDAAqD;AACrD,eAAO,MAAM,MAAM,QAAO,MAAM,GAAG,SAAmB,CAAA;AAOtD,wDAAwD;AACxD,wBAAgB,GAAG,IAAI,OAAO,CAG7B;AAED,wEAAwE;AACxE,wBAAgB,OAAO,IAAI,OAAO,CAKjC;AAED,0CAA0C;AAC1C,wBAAgB,MAAM,IAAI,MAAM,CAQ/B;AAED,+CAA+C;AAC/C,wBAAgB,MAAM,IAAI,OAAO,CAGhC;AAED,yFAAyF;AACzF,wBAAgB,IAAI,IAAI,MAAM,CAc7B;AAED,sFAAsF;AACtF,wBAAgB,IAAI,IAAI,OAAO,CAE9B;AAED,wFAAwF;AACxF,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,oEAAoE;AACpE,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAKpC;AAED,6BAA6B;AAC7B,eAAO,MAAM,SAAS,QAAO,IAA6D,CAAA;AAE1F,sCAAsC;AACtC,eAAO,MAAM,SAAS,QAAO,IAAgE,CAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -115,6 +115,30 @@ var ORG_KEY = Object.freeze({
|
|
|
115
115
|
lux: "pk-gUZp6ZVfhJzSwK-rb4oLbVkpCnMBx5uSCpxf_5yEhQk",
|
|
116
116
|
zoo: "pk-3TKpKnERV9AQSsBUERWkZejC1O1mUxc1jRzsP3MPbs4"
|
|
117
117
|
});
|
|
118
|
+
var SITE_KEY = Object.freeze({
|
|
119
|
+
"hanzo.ai": "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
120
|
+
"www.hanzo.ai": "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
121
|
+
"hanzo.app": "pk-wlnXN2a9_vmCm60yTFtQ629Q8TyuaxBNZbY1RWT72gQ",
|
|
122
|
+
"hanzo.team": "pk-NCzD2FiHpZv8KUpkCX4olT1LJOJsMxBC_Z8NkiQsOFQ",
|
|
123
|
+
"pay.hanzo.ai": "pk-eX6kv7JZNoiYn1WkeJH3tT_8OvkVYScmCXnLMwxTKf8",
|
|
124
|
+
"platform.hanzo.ai": "pk-My1RpZLEUnTj8vAdPbWKYdDUuhxZJ4dVjHcwjZN4rZ8",
|
|
125
|
+
"docs.hanzo.ai": "pk-jukhtjMT2ymoeBDAeFjINQWlBv-v9sNn1TPztiCrrwk",
|
|
126
|
+
"hanzo.bot": "pk-W5d7Mn7ZukT7igyscIy6Pqe8JpA0Ge604Yn4xNR4JCU",
|
|
127
|
+
"hanzo.chat": "pk-ATxWeB2jNyRSxDgqnkGoDj3CCbzrmTxSktUh9zlrO-E",
|
|
128
|
+
"hanzo.id": "pk-_GVF3KlaqprlPHDumBMRFeFU1lIGOaarQfgimNVDIo8",
|
|
129
|
+
"hanzo.industries": "pk-Vh1wvL2HqIAv9qpVvmrznTI9uMHrTD-jyIC-vnlBsgY",
|
|
130
|
+
"hanzo.market": "pk-DN3xQFa0H61epUVg9OkiOYLzCdteNt9hE6f-S-ednjQ",
|
|
131
|
+
"hanzo.network": "pk-YJ2eiA_7ckLStMPte8Ar8FsmRp_ycmeIeRbpGprZYmM",
|
|
132
|
+
"hanzo.agency": "pk-26a2clOaJFe24aKJZ0PkI-GWR9F4EEa8rthHzgy_Efw",
|
|
133
|
+
"console.hanzo.ai": "pk-oFNXoiO1wOD8PqGdHYyiSq6jaNCdrd7TpztGpwM2ZiQ",
|
|
134
|
+
"admin.hanzo.ai": "pk-RYZwxkomW-tlAnEu2DKo_kAzcxFbSF2YiYcsUY48QL0",
|
|
135
|
+
"bot.hanzo.ai": "pk-W5d7Mn7ZukT7igyscIy6Pqe8JpA0Ge604Yn4xNR4JCU",
|
|
136
|
+
"cloud.hanzo.ai": "pk-RAfEGHPoNdCEU9fnA_cPd_Xo9Tci44rlYQV9xuJ1Ob0"
|
|
137
|
+
});
|
|
138
|
+
function siteKey(host) {
|
|
139
|
+
const h = normalize(host).replace(/^www\./, "");
|
|
140
|
+
return SITE_KEY[h] ?? (h.endsWith(".hanzo.app") ? SITE_KEY["hanzo.app"] : void 0);
|
|
141
|
+
}
|
|
118
142
|
var PUBLISHABLE = "pk-";
|
|
119
143
|
var normalize = (host) => host.trim().toLowerCase().replace(/\.$/, "").split(":")[0] ?? "";
|
|
120
144
|
function orgOf(host) {
|
|
@@ -133,6 +157,10 @@ function orgOf(host) {
|
|
|
133
157
|
return best;
|
|
134
158
|
}
|
|
135
159
|
function keyFor(host, keyring = ORG_KEY) {
|
|
160
|
+
if (keyring === ORG_KEY) {
|
|
161
|
+
const site = siteKey(host);
|
|
162
|
+
if (site) return site;
|
|
163
|
+
}
|
|
136
164
|
const org = orgOf(host);
|
|
137
165
|
if (!org) return void 0;
|
|
138
166
|
const key = keyring[org];
|
|
@@ -633,7 +661,7 @@ function stripLink(href) {
|
|
|
633
661
|
}
|
|
634
662
|
|
|
635
663
|
// package.json
|
|
636
|
-
var version = "0.3.
|
|
664
|
+
var version = "0.3.52";
|
|
637
665
|
|
|
638
666
|
// src/version.ts
|
|
639
667
|
var VERSION = version;
|
|
@@ -1108,7 +1136,28 @@ function set(name, value, days) {
|
|
|
1108
1136
|
|
|
1109
1137
|
// src/consent.ts
|
|
1110
1138
|
var CONSENT_COOKIE = "hz_consent";
|
|
1139
|
+
var CONSENT_VERSION_COOKIE = "hz_consent_v";
|
|
1140
|
+
var POLICY_EVENT = "hzpolicy";
|
|
1111
1141
|
var CONSENT_EVENT = "hzconsent";
|
|
1142
|
+
var served;
|
|
1143
|
+
function serve(p) {
|
|
1144
|
+
if (p == null) {
|
|
1145
|
+
served = void 0;
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
const d = p;
|
|
1149
|
+
if (d.mode !== "opt-in" && d.mode !== "opt-out" || !d.defaults) return;
|
|
1150
|
+
served = {
|
|
1151
|
+
region: String(d.region ?? ""),
|
|
1152
|
+
mode: d.mode,
|
|
1153
|
+
defaults: { analytics: !!d.defaults.analytics, marketing: !!d.defaults.marketing, ads: !!d.defaults.ads },
|
|
1154
|
+
gpc: d.gpc === true,
|
|
1155
|
+
version: Number(d.version) || 0,
|
|
1156
|
+
notice: typeof d.notice === "string" ? d.notice : void 0
|
|
1157
|
+
};
|
|
1158
|
+
if (typeof window !== "undefined") window.dispatchEvent(new Event(POLICY_EVENT));
|
|
1159
|
+
}
|
|
1160
|
+
var policy = () => served;
|
|
1112
1161
|
var US = /^(America\/(New_York|Chicago|Denver|Los_Angeles|Phoenix|Anchorage|Adak|Boise|Detroit|Juneau|Sitka|Nome|Yakutat|Menominee|Metlakatla|Indiana\/.*|Kentucky\/.*|North_Dakota\/.*)|Pacific\/Honolulu|US\/.*)$/;
|
|
1113
1162
|
function gpc() {
|
|
1114
1163
|
if (typeof navigator === "undefined") return false;
|
|
@@ -1121,6 +1170,7 @@ function refused() {
|
|
|
1121
1170
|
return gpc() || dnt === "1" || dnt === "yes";
|
|
1122
1171
|
}
|
|
1123
1172
|
function region() {
|
|
1173
|
+
if (served) return served.mode;
|
|
1124
1174
|
try {
|
|
1125
1175
|
const zone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? "";
|
|
1126
1176
|
return US.test(zone) ? "opt-out" : "opt-in";
|
|
@@ -1129,23 +1179,28 @@ function region() {
|
|
|
1129
1179
|
}
|
|
1130
1180
|
}
|
|
1131
1181
|
function stored() {
|
|
1132
|
-
|
|
1182
|
+
if (get(CONSENT_COOKIE) === void 0) return false;
|
|
1183
|
+
return !served || get(CONSENT_VERSION_COOKIE) === String(served.version);
|
|
1133
1184
|
}
|
|
1134
1185
|
function read2() {
|
|
1135
|
-
const kept = get(CONSENT_COOKIE);
|
|
1136
|
-
const on = kept !== void 0 ? kept.split(",") : region() === "opt-in"
|
|
1186
|
+
const kept = stored() ? get(CONSENT_COOKIE) : void 0;
|
|
1187
|
+
const on = kept !== void 0 ? kept.split(",") : served ? ["analytics", "marketing", "ads"].filter((k) => served.defaults[k]) : region() === "opt-in" ? [] : gpc() ? ["analytics"] : ["analytics", "marketing", "ads"];
|
|
1137
1188
|
const has = (k) => on.includes(k);
|
|
1138
1189
|
return { analytics: has("analytics"), marketing: has("marketing") && !gpc(), ads: has("ads") && !gpc() };
|
|
1139
1190
|
}
|
|
1140
1191
|
function asks() {
|
|
1141
1192
|
return typeof document !== "undefined" && region() === "opt-in" && !stored();
|
|
1142
1193
|
}
|
|
1194
|
+
function notices() {
|
|
1195
|
+
return typeof document !== "undefined" && region() === "opt-out" && !stored();
|
|
1196
|
+
}
|
|
1143
1197
|
function render(c) {
|
|
1144
1198
|
return ["analytics", "marketing", "ads"].filter((k) => c[k]).join(",");
|
|
1145
1199
|
}
|
|
1146
1200
|
function save(c) {
|
|
1147
1201
|
const out = { analytics: c.analytics, marketing: c.marketing && !gpc(), ads: c.ads && !gpc() };
|
|
1148
1202
|
set(CONSENT_COOKIE, render(out), 395);
|
|
1203
|
+
set(CONSENT_VERSION_COOKIE, String(served?.version ?? 0), 395);
|
|
1149
1204
|
if (typeof window !== "undefined") window.dispatchEvent(new Event(CONSENT_EVENT));
|
|
1150
1205
|
}
|
|
1151
1206
|
var acceptAll = () => save({ analytics: true, marketing: true, ads: true });
|
|
@@ -1193,22 +1248,6 @@ function touch(c) {
|
|
|
1193
1248
|
}
|
|
1194
1249
|
return out;
|
|
1195
1250
|
}
|
|
1196
|
-
var SITE_KEY = Object.freeze({
|
|
1197
|
-
"hanzo.ai": "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
1198
|
-
"www.hanzo.ai": "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
1199
|
-
"hanzo.app": "pk-wlnXN2a9_vmCm60yTFtQ629Q8TyuaxBNZbY1RWT72gQ",
|
|
1200
|
-
"hanzo.team": "pk-NCzD2FiHpZv8KUpkCX4olT1LJOJsMxBC_Z8NkiQsOFQ",
|
|
1201
|
-
"pay.hanzo.ai": "pk-eX6kv7JZNoiYn1WkeJH3tT_8OvkVYScmCXnLMwxTKf8",
|
|
1202
|
-
"platform.hanzo.ai": "pk-My1RpZLEUnTj8vAdPbWKYdDUuhxZJ4dVjHcwjZN4rZ8",
|
|
1203
|
-
"docs.hanzo.ai": "pk-jukhtjMT2ymoeBDAeFjINQWlBv-v9sNn1TPztiCrrwk",
|
|
1204
|
-
"hanzo.bot": "pk-W5d7Mn7ZukT7igyscIy6Pqe8JpA0Ge604Yn4xNR4JCU",
|
|
1205
|
-
"hanzo.chat": "pk-ATxWeB2jNyRSxDgqnkGoDj3CCbzrmTxSktUh9zlrO-E",
|
|
1206
|
-
"hanzo.id": "pk-_GVF3KlaqprlPHDumBMRFeFU1lIGOaarQfgimNVDIo8",
|
|
1207
|
-
"hanzo.industries": "pk-Vh1wvL2HqIAv9qpVvmrznTI9uMHrTD-jyIC-vnlBsgY",
|
|
1208
|
-
"hanzo.market": "pk-DN3xQFa0H61epUVg9OkiOYLzCdteNt9hE6f-S-ednjQ",
|
|
1209
|
-
"hanzo.network": "pk-YJ2eiA_7ckLStMPte8Ar8FsmRp_ycmeIeRbpGprZYmM",
|
|
1210
|
-
"cloud.hanzo.ai": "pk-RAfEGHPoNdCEU9fnA_cPd_Xo9Tci44rlYQV9xuJ1Ob0"
|
|
1211
|
-
});
|
|
1212
1251
|
var page = () => window;
|
|
1213
1252
|
var tags = [];
|
|
1214
1253
|
var configured = false;
|
|
@@ -1402,7 +1441,7 @@ function start(o = {}) {
|
|
|
1402
1441
|
const base = (o.base ?? "https://api.hanzo.ai").replace(/\/$/, "");
|
|
1403
1442
|
const q = new URLSearchParams();
|
|
1404
1443
|
const host = o.host ?? window.location.hostname;
|
|
1405
|
-
const key = o.key ??
|
|
1444
|
+
const key = o.key ?? siteKey(host);
|
|
1406
1445
|
if (key) q.set("key", key);
|
|
1407
1446
|
q.set("host", host);
|
|
1408
1447
|
const answer = (list) => {
|
|
@@ -1413,6 +1452,7 @@ function start(o = {}) {
|
|
|
1413
1452
|
const cap = setTimeout(() => answer([]), 3e3);
|
|
1414
1453
|
fetch(`${base}/v1/project/tags?${q}`).then((r) => r.ok ? r.json() : { tags: [] }).then((j) => {
|
|
1415
1454
|
clearTimeout(cap);
|
|
1455
|
+
serve(j.consent);
|
|
1416
1456
|
answer(Array.isArray(j.tags) ? j.tags : []);
|
|
1417
1457
|
}).catch(() => {
|
|
1418
1458
|
clearTimeout(cap);
|
|
@@ -1645,16 +1685,19 @@ exports.CLICK_IDS = CLICK_IDS;
|
|
|
1645
1685
|
exports.COHORTS = COHORTS;
|
|
1646
1686
|
exports.CONSENT_COOKIE = CONSENT_COOKIE;
|
|
1647
1687
|
exports.CONSENT_EVENT = CONSENT_EVENT;
|
|
1688
|
+
exports.CONSENT_VERSION_COOKIE = CONSENT_VERSION_COOKIE;
|
|
1648
1689
|
exports.GOALS = GOALS;
|
|
1649
1690
|
exports.LINK_PARAMS = LINK_PARAMS;
|
|
1650
1691
|
exports.ORG_DOMAIN = ORG_DOMAIN;
|
|
1651
1692
|
exports.ORG_KEY = ORG_KEY;
|
|
1693
|
+
exports.POLICY_EVENT = POLICY_EVENT;
|
|
1652
1694
|
exports.SITE_KEY = SITE_KEY;
|
|
1653
1695
|
exports.VERSION = VERSION;
|
|
1654
1696
|
exports.acceptAll = acceptAll;
|
|
1655
1697
|
exports.asks = asks;
|
|
1656
1698
|
exports.captureClick = capture;
|
|
1657
1699
|
exports.commerceItem = commerceItem;
|
|
1700
|
+
exports.consentPolicy = policy;
|
|
1658
1701
|
exports.createAnalytics = createAnalytics;
|
|
1659
1702
|
exports.deriveChannel = deriveChannel;
|
|
1660
1703
|
exports.digest = digest;
|
|
@@ -1672,6 +1715,7 @@ exports.keyFor = keyFor;
|
|
|
1672
1715
|
exports.keyForPage = keyForPage;
|
|
1673
1716
|
exports.linkUrl = linkUrl;
|
|
1674
1717
|
exports.mirror = mirror;
|
|
1718
|
+
exports.notices = notices;
|
|
1675
1719
|
exports.orgOf = orgOf;
|
|
1676
1720
|
exports.parseAttribution = parseAttribution;
|
|
1677
1721
|
exports.reach = reach;
|
|
@@ -1686,6 +1730,8 @@ exports.resetClients = resetClients;
|
|
|
1686
1730
|
exports.saveConsent = save;
|
|
1687
1731
|
exports.scrubPII = scrubPII;
|
|
1688
1732
|
exports.scrubText = scrubText;
|
|
1733
|
+
exports.serveConsent = serve;
|
|
1734
|
+
exports.siteKey = siteKey;
|
|
1689
1735
|
exports.startTags = start;
|
|
1690
1736
|
exports.storedConsent = stored;
|
|
1691
1737
|
exports.stripLink = stripLink;
|