@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 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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,cAAc,eAAe,CAAA;AAE1C,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;AAOzC,wDAAwD;AACxD,wBAAgB,GAAG,IAAI,OAAO,CAG7B;AAED,wEAAwE;AACxE,wBAAgB,OAAO,IAAI,OAAO,CAKjC;AAED,0CAA0C;AAC1C,wBAAgB,MAAM,IAAI,MAAM,CAO/B;AAED,+CAA+C;AAC/C,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED,yFAAyF;AACzF,wBAAgB,IAAI,IAAI,MAAM,CAU7B;AAED,sFAAsF;AACtF,wBAAgB,IAAI,IAAI,OAAO,CAE9B;AAED,oEAAoE;AACpE,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAIpC;AAED,6BAA6B;AAC7B,eAAO,MAAM,SAAS,QAAO,IAA6D,CAAA;AAE1F,sCAAsC;AACtC,eAAO,MAAM,SAAS,QAAO,IAAgE,CAAA"}
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"}
@@ -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;AA4JlB,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,CAmC1B;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"}
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-rM_CdaF2MQckGCrla113SrR1oH4zvqN8xh2I95Z9tY8",
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.49";
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.ingestKey ?? opts.token;
727
+ const bearer = simple ? void 0 : opts.token ?? opts.ingestKey;
699
728
  if (bearer) headers.Authorization = `Bearer ${bearer}`;
700
- void fetch(simple ? appendQuery(url, "ingest_key", opts.ingestKey) : url, {
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 = token ? void 0 : this.cfg.ingestKey?.trim() || void 0;
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
- return get(CONSENT_COOKIE) !== void 0;
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" || refused() ? [] : ["analytics", "marketing", "ads"];
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 ?? SITE_KEY[host];
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;