@hanzo/event 0.3.49 → 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/core.d.ts.map +1 -1
- package/dist/index.cjs +90 -22
- 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 +84 -23
- 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 +48 -16
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.mjs +48 -16
- package/dist/react.mjs.map +1 -1
- package/dist/tags.d.ts +6 -5
- 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/core.test.ts +5 -5
- package/src/core.ts +15 -17
- package/src/index.ts +4 -4
- package/src/link.test.ts +4 -3
- package/src/org.test.ts +31 -2
- package/src/org.ts +39 -1
- package/src/react.tsx +6 -2
- package/src/tags.ts +28 -21
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/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAoCA,OAAO,EAKL,aAAa,EAEb,SAAS,EAEV,MAAM,WAAW,CAAA;AAGlB,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EACnB,MAAM,EAIN,SAAS,EACV,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,OAAO,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAoCA,OAAO,EAKL,aAAa,EAEb,SAAS,EAEV,MAAM,WAAW,CAAA;AAGlB,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EACnB,MAAM,EAIN,SAAS,EACV,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,OAAO,EAAE,CAAA;AAoKlB,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAGM;IACjB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,QAAQ,CAAC,CAAQ;IACzB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAQ;IACvB,0DAA0D;IAC1D,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAQ;IAEzB,YAAY,MAAM,EAAE,eAAe,EAgClC;IAED;;4HAEwH;IACxH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAGnC;IAED;;;kBAGc;IACd,IAAI,IAAI,IAAI,CA6CX;IAED;;8DAE0D;IAC1D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASxB;IAED;;sBAEkB;IAClB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7B;IAED,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGjE;IAED;6EACyE;IACzE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7D;IAED;;oEAEgE;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAclE;IAED;uFACmF;IACnF,OAAO,CACL,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC,GAC5E,IAAI,CAEN;IAED;;;;;6BAKyB;IACzB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAsB9D;IAED;kCAC8B;IAC9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE7B;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,UAAQ,GAAG,IAAI,CAyB1B;IAID,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,KAAK;IAkEb,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,UAAU;CAMnB;AAiCD;;;;;;;;;;;4DAW4D;AAC5D,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;iEAEiE;AACjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAmBlE;AAID,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -111,10 +111,34 @@ var ORG_DOMAIN = Object.freeze({
|
|
|
111
111
|
zoo: Object.freeze(["zoo.ngo", "zoo.network", "zoolabs.id", "zoolabs.io"])
|
|
112
112
|
});
|
|
113
113
|
var ORG_KEY = Object.freeze({
|
|
114
|
-
hanzo: "pk-
|
|
114
|
+
hanzo: "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
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;
|
|
@@ -657,6 +685,7 @@ function normalizeError2(err) {
|
|
|
657
685
|
const frames = framesFromStack(n.stack).slice(-50).map((f) => ({ function: f.function, file: f.filename, line: f.lineno, column: f.colno }));
|
|
658
686
|
return { type: n.name, message: n.message, stack: n.stack, frames };
|
|
659
687
|
}
|
|
688
|
+
var viewport = () => isBrowser() ? { screen: `${window.screen?.width ?? 0}x${window.screen?.height ?? 0}`, language: navigator.language || "" } : {};
|
|
660
689
|
var isBrowser = () => typeof window !== "undefined" && typeof document !== "undefined";
|
|
661
690
|
function serializeBatch(batch) {
|
|
662
691
|
try {
|
|
@@ -691,13 +720,13 @@ var DefaultTransport = class {
|
|
|
691
720
|
}
|
|
692
721
|
}
|
|
693
722
|
if (typeof fetch !== "function") return;
|
|
694
|
-
const simple = opts.ingestKey !== void 0 && opts.contentType === void 0;
|
|
723
|
+
const simple = opts.ingestKey !== void 0 && opts.token === void 0 && opts.contentType === void 0;
|
|
695
724
|
const headers = {
|
|
696
725
|
"Content-Type": simple ? BEACON_CONTENT_TYPE : opts.contentType ?? "application/json"
|
|
697
726
|
};
|
|
698
|
-
const bearer = simple ? void 0 : opts.
|
|
727
|
+
const bearer = simple ? void 0 : opts.token ?? opts.ingestKey;
|
|
699
728
|
if (bearer) headers.Authorization = `Bearer ${bearer}`;
|
|
700
|
-
void fetch(
|
|
729
|
+
void fetch(opts.ingestKey ? appendQuery(url, "ingest_key", opts.ingestKey) : url, {
|
|
701
730
|
method: "POST",
|
|
702
731
|
headers,
|
|
703
732
|
body,
|
|
@@ -837,7 +866,7 @@ var Analytics = class {
|
|
|
837
866
|
const view = (p ?? "") + "\0" + (isBrowser() ? window.location.href : "");
|
|
838
867
|
if (view === this.counted) return;
|
|
839
868
|
this.counted = view;
|
|
840
|
-
this.enqueue("pageview", events.PAGEVIEW, { path: p, properties });
|
|
869
|
+
this.enqueue("pageview", events.PAGEVIEW, { path: p, properties: { ...viewport(), ...properties } });
|
|
841
870
|
}
|
|
842
871
|
/** capture records a named product event with optional properties. Commerce
|
|
843
872
|
* fields (productId/quantity/revenue/currency) may be passed for order events. */
|
|
@@ -893,7 +922,7 @@ var Analytics = class {
|
|
|
893
922
|
this.queue = [];
|
|
894
923
|
this.clearTimer();
|
|
895
924
|
const token = this.cfg.getToken?.() ?? void 0;
|
|
896
|
-
const key =
|
|
925
|
+
const key = this.cfg.ingestKey?.trim() || void 0;
|
|
897
926
|
const useBeacon = beacon && !token;
|
|
898
927
|
const body = serializeBatch(batch);
|
|
899
928
|
if (body === null) {
|
|
@@ -1107,7 +1136,28 @@ function set(name, value, days) {
|
|
|
1107
1136
|
|
|
1108
1137
|
// src/consent.ts
|
|
1109
1138
|
var CONSENT_COOKIE = "hz_consent";
|
|
1139
|
+
var CONSENT_VERSION_COOKIE = "hz_consent_v";
|
|
1140
|
+
var POLICY_EVENT = "hzpolicy";
|
|
1110
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;
|
|
1111
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\/.*)$/;
|
|
1112
1162
|
function gpc() {
|
|
1113
1163
|
if (typeof navigator === "undefined") return false;
|
|
@@ -1120,6 +1170,7 @@ function refused() {
|
|
|
1120
1170
|
return gpc() || dnt === "1" || dnt === "yes";
|
|
1121
1171
|
}
|
|
1122
1172
|
function region() {
|
|
1173
|
+
if (served) return served.mode;
|
|
1123
1174
|
try {
|
|
1124
1175
|
const zone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? "";
|
|
1125
1176
|
return US.test(zone) ? "opt-out" : "opt-in";
|
|
@@ -1128,23 +1179,28 @@ function region() {
|
|
|
1128
1179
|
}
|
|
1129
1180
|
}
|
|
1130
1181
|
function stored() {
|
|
1131
|
-
|
|
1182
|
+
if (get(CONSENT_COOKIE) === void 0) return false;
|
|
1183
|
+
return !served || get(CONSENT_VERSION_COOKIE) === String(served.version);
|
|
1132
1184
|
}
|
|
1133
1185
|
function read2() {
|
|
1134
|
-
const kept = get(CONSENT_COOKIE);
|
|
1135
|
-
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"];
|
|
1136
1188
|
const has = (k) => on.includes(k);
|
|
1137
1189
|
return { analytics: has("analytics"), marketing: has("marketing") && !gpc(), ads: has("ads") && !gpc() };
|
|
1138
1190
|
}
|
|
1139
1191
|
function asks() {
|
|
1140
1192
|
return typeof document !== "undefined" && region() === "opt-in" && !stored();
|
|
1141
1193
|
}
|
|
1194
|
+
function notices() {
|
|
1195
|
+
return typeof document !== "undefined" && region() === "opt-out" && !stored();
|
|
1196
|
+
}
|
|
1142
1197
|
function render(c) {
|
|
1143
1198
|
return ["analytics", "marketing", "ads"].filter((k) => c[k]).join(",");
|
|
1144
1199
|
}
|
|
1145
1200
|
function save(c) {
|
|
1146
1201
|
const out = { analytics: c.analytics, marketing: c.marketing && !gpc(), ads: c.ads && !gpc() };
|
|
1147
1202
|
set(CONSENT_COOKIE, render(out), 395);
|
|
1203
|
+
set(CONSENT_VERSION_COOKIE, String(served?.version ?? 0), 395);
|
|
1148
1204
|
if (typeof window !== "undefined") window.dispatchEvent(new Event(CONSENT_EVENT));
|
|
1149
1205
|
}
|
|
1150
1206
|
var acceptAll = () => save({ analytics: true, marketing: true, ads: true });
|
|
@@ -1192,17 +1248,6 @@ function touch(c) {
|
|
|
1192
1248
|
}
|
|
1193
1249
|
return out;
|
|
1194
1250
|
}
|
|
1195
|
-
var SITE_KEY = Object.freeze({
|
|
1196
|
-
"hanzo.ai": "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
1197
|
-
"www.hanzo.ai": "pk-CmfLA2K6kvsPflrS9DSkt06H_kSoQB_21sjedt6VJdc",
|
|
1198
|
-
"hanzo.app": "pk-wlnXN2a9_vmCm60yTFtQ629Q8TyuaxBNZbY1RWT72gQ",
|
|
1199
|
-
"hanzo.team": "pk-NCzD2FiHpZv8KUpkCX4olT1LJOJsMxBC_Z8NkiQsOFQ",
|
|
1200
|
-
"pay.hanzo.ai": "pk-eX6kv7JZNoiYn1WkeJH3tT_8OvkVYScmCXnLMwxTKf8",
|
|
1201
|
-
"platform.hanzo.ai": "pk-My1RpZLEUnTj8vAdPbWKYdDUuhxZJ4dVjHcwjZN4rZ8",
|
|
1202
|
-
"docs.hanzo.ai": "pk-jukhtjMT2ymoeBDAeFjINQWlBv-v9sNn1TPztiCrrwk",
|
|
1203
|
-
"hanzo.bot": "pk-W5d7Mn7ZukT7igyscIy6Pqe8JpA0Ge604Yn4xNR4JCU",
|
|
1204
|
-
"cloud.hanzo.ai": "pk-RAfEGHPoNdCEU9fnA_cPd_Xo9Tci44rlYQV9xuJ1Ob0"
|
|
1205
|
-
});
|
|
1206
1251
|
var page = () => window;
|
|
1207
1252
|
var tags = [];
|
|
1208
1253
|
var configured = false;
|
|
@@ -1218,6 +1263,21 @@ function settled() {
|
|
|
1218
1263
|
function flush() {
|
|
1219
1264
|
if (settled() || leaving) held.splice(0).forEach((send) => send());
|
|
1220
1265
|
}
|
|
1266
|
+
function ready(limit = 3e3) {
|
|
1267
|
+
if (typeof window === "undefined") return Promise.resolve();
|
|
1268
|
+
const start2 = Date.now();
|
|
1269
|
+
const meta = () => {
|
|
1270
|
+
const fbq = page().fbq;
|
|
1271
|
+
return ![...loaded].some((k) => k.startsWith("meta:")) || typeof fbq?.callMethod === "function";
|
|
1272
|
+
};
|
|
1273
|
+
return new Promise((resolve) => {
|
|
1274
|
+
const tick = () => {
|
|
1275
|
+
if (configured && settled() && meta() || Date.now() - start2 >= limit) return resolve();
|
|
1276
|
+
setTimeout(tick, 100);
|
|
1277
|
+
};
|
|
1278
|
+
tick();
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
1221
1281
|
function script(src, onload, onerror) {
|
|
1222
1282
|
const s = document.createElement("script");
|
|
1223
1283
|
s.async = true;
|
|
@@ -1381,7 +1441,7 @@ function start(o = {}) {
|
|
|
1381
1441
|
const base = (o.base ?? "https://api.hanzo.ai").replace(/\/$/, "");
|
|
1382
1442
|
const q = new URLSearchParams();
|
|
1383
1443
|
const host = o.host ?? window.location.hostname;
|
|
1384
|
-
const key = o.key ??
|
|
1444
|
+
const key = o.key ?? siteKey(host);
|
|
1385
1445
|
if (key) q.set("key", key);
|
|
1386
1446
|
q.set("host", host);
|
|
1387
1447
|
const answer = (list) => {
|
|
@@ -1392,6 +1452,7 @@ function start(o = {}) {
|
|
|
1392
1452
|
const cap = setTimeout(() => answer([]), 3e3);
|
|
1393
1453
|
fetch(`${base}/v1/project/tags?${q}`).then((r) => r.ok ? r.json() : { tags: [] }).then((j) => {
|
|
1394
1454
|
clearTimeout(cap);
|
|
1455
|
+
serve(j.consent);
|
|
1395
1456
|
answer(Array.isArray(j.tags) ? j.tags : []);
|
|
1396
1457
|
}).catch(() => {
|
|
1397
1458
|
clearTimeout(cap);
|
|
@@ -1624,16 +1685,19 @@ exports.CLICK_IDS = CLICK_IDS;
|
|
|
1624
1685
|
exports.COHORTS = COHORTS;
|
|
1625
1686
|
exports.CONSENT_COOKIE = CONSENT_COOKIE;
|
|
1626
1687
|
exports.CONSENT_EVENT = CONSENT_EVENT;
|
|
1688
|
+
exports.CONSENT_VERSION_COOKIE = CONSENT_VERSION_COOKIE;
|
|
1627
1689
|
exports.GOALS = GOALS;
|
|
1628
1690
|
exports.LINK_PARAMS = LINK_PARAMS;
|
|
1629
1691
|
exports.ORG_DOMAIN = ORG_DOMAIN;
|
|
1630
1692
|
exports.ORG_KEY = ORG_KEY;
|
|
1693
|
+
exports.POLICY_EVENT = POLICY_EVENT;
|
|
1631
1694
|
exports.SITE_KEY = SITE_KEY;
|
|
1632
1695
|
exports.VERSION = VERSION;
|
|
1633
1696
|
exports.acceptAll = acceptAll;
|
|
1634
1697
|
exports.asks = asks;
|
|
1635
1698
|
exports.captureClick = capture;
|
|
1636
1699
|
exports.commerceItem = commerceItem;
|
|
1700
|
+
exports.consentPolicy = policy;
|
|
1637
1701
|
exports.createAnalytics = createAnalytics;
|
|
1638
1702
|
exports.deriveChannel = deriveChannel;
|
|
1639
1703
|
exports.digest = digest;
|
|
@@ -1651,6 +1715,7 @@ exports.keyFor = keyFor;
|
|
|
1651
1715
|
exports.keyForPage = keyForPage;
|
|
1652
1716
|
exports.linkUrl = linkUrl;
|
|
1653
1717
|
exports.mirror = mirror;
|
|
1718
|
+
exports.notices = notices;
|
|
1654
1719
|
exports.orgOf = orgOf;
|
|
1655
1720
|
exports.parseAttribution = parseAttribution;
|
|
1656
1721
|
exports.reach = reach;
|
|
@@ -1665,9 +1730,12 @@ exports.resetClients = resetClients;
|
|
|
1665
1730
|
exports.saveConsent = save;
|
|
1666
1731
|
exports.scrubPII = scrubPII;
|
|
1667
1732
|
exports.scrubText = scrubText;
|
|
1733
|
+
exports.serveConsent = serve;
|
|
1734
|
+
exports.siteKey = siteKey;
|
|
1668
1735
|
exports.startTags = start;
|
|
1669
1736
|
exports.storedConsent = stored;
|
|
1670
1737
|
exports.stripLink = stripLink;
|
|
1738
|
+
exports.tagsReady = ready;
|
|
1671
1739
|
exports.touch = touch;
|
|
1672
1740
|
exports.track = track;
|
|
1673
1741
|
exports.uuidv7 = hzUuidv7;
|