@jitsu/js 1.10.3 → 1.11.0-canary.20251124.3ff4617

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/jitsu.cjs.js CHANGED
@@ -185,9 +185,6 @@ function insertTags(code, event, opts = {}) {
185
185
  }
186
186
  }
187
187
  }
188
- //This weird code is used to mask eval() usage.
189
- //Although the code can be executed in the browser, some server side bundlers (like Vercel) fails
190
- //the build if a direct reference to eval() is found.
191
188
  let al = "al";
192
189
  let ev = "ve".split("").reverse().join("");
193
190
  const execF = globalThis[ev + al];
@@ -317,14 +314,11 @@ const gtmPlugin = {
317
314
  }
318
315
  yield initGtmIfNeeded(config, payload);
319
316
  const dataLayer = window[config.dataLayerName || "dataLayer"];
320
- //traits could be in both nodes, context.traits takes precedence
321
317
  const traits = Object.assign(Object.assign({}, ((payload === null || payload === void 0 ? void 0 : payload.traits) || {})), (((_a = payload === null || payload === void 0 ? void 0 : payload.context) === null || _a === void 0 ? void 0 : _a.traits) || {}));
322
- //remove properties that defined separately
323
318
  const idsFromTraits = omit(traits, "id", "userId", "user_id", "anonymousId", "userId");
324
319
  if (debug) {
325
320
  console.debug("GTM plugin will be applied to following payload", payload);
326
321
  }
327
- // See https://developers.google.com/tag-platform/tag-manager/server-side/common-event-data
328
322
  const userData = {
329
323
  email_address: traits.email,
330
324
  };
@@ -448,7 +442,6 @@ const ga4Plugin = {
448
442
  };
449
443
  const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
450
444
  if (payload.userId) {
451
- // @ts-ignore
452
445
  gtag("set", { user_id: payload.userId });
453
446
  }
454
447
  switch (payload.type) {
@@ -459,19 +452,16 @@ const ga4Plugin = {
459
452
  }
460
453
  const { properties: pageProperties, context } = payload;
461
454
  const pageEvent = Object.assign({ page_location: pageProperties.url, page_title: pageProperties.title, page_path: pageProperties.path, page_hash: pageProperties.hash, page_search: pageProperties.search, page_referrer: (_b = (_a = context === null || context === void 0 ? void 0 : context.page) === null || _a === void 0 ? void 0 : _a.referrer) !== null && _b !== void 0 ? _b : "" }, ids);
462
- // @ts-ignore
463
455
  gtag("event", "page_view", pageEvent);
464
456
  break;
465
457
  case "track":
466
458
  const { properties: trackProperties } = payload;
467
459
  const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);
468
- // @ts-ignore
469
460
  gtag("event", payload.event, trackEvent);
470
461
  break;
471
462
  case "identify":
472
463
  const { traits } = payload;
473
464
  const identifyEvent = Object.assign(Object.assign({}, traits), ids);
474
- // @ts-ignore
475
465
  gtag("event", "identify", identifyEvent);
476
466
  break;
477
467
  }
@@ -492,17 +482,13 @@ function initGa4IfNeeded(config, payload) {
492
482
  setGa4State("loading");
493
483
  const dlName = config.dataLayerName || "dataLayer";
494
484
  const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
495
- // to work with both GA4 and GTM
496
485
  const tagId = config.measurementIds;
497
486
  window[dlName] = window[dlName] || [];
498
487
  const gtag = function () {
499
488
  window[dlName].push(arguments);
500
489
  };
501
- // @ts-ignore
502
490
  gtag("js", new Date());
503
- gtag(
504
- // @ts-ignore
505
- "config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
491
+ gtag("config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
506
492
  loadScript(buildTagUrl(), { query: `id=${tagId}${dlParam}`, www: true })
507
493
  .then(() => {
508
494
  setGa4State("loaded");
@@ -550,11 +536,86 @@ const internalDestinationPlugins = {
550
536
  [logrocketPlugin.id]: logrocketPlugin,
551
537
  };
552
538
 
553
- const jitsuVersion = "2.0.0";
539
+ var name = "@jitsu/js";
540
+ var version = "1.11.0-canary.20251124.3ff4617";
541
+ var description = "";
542
+ var author = "Jitsu Dev Team <dev@jitsu.com>";
543
+ var main = "dist/jitsu.cjs.js";
544
+ var files = [
545
+ "dist"
546
+ ];
547
+ var module$1 = "dist/jitsu.es.js";
548
+ var types = "dist/jitsu.d.ts";
549
+ var publishConfig = {
550
+ access: "public"
551
+ };
552
+ var license = "MIT";
553
+ var scripts = {
554
+ clean: "rm -rf ./dist ./compiled",
555
+ "test:node": "vitest run",
556
+ "test:playwright": "playwright test ./__tests__/playwright",
557
+ test: "pnpm run test:node",
558
+ "//typecheck": "Build is required because types are generated during build",
559
+ typecheck: "pnpm run build",
560
+ build: "pnpm run clean && tsc -p . && rollup -c",
561
+ "//build-deps": "Required by turbo ^build-deps - builds dist/ for workspace packages that import this",
562
+ "build-deps": "pnpm run build"
563
+ };
564
+ var devDependencies = {
565
+ "@jitsu/common-config": "workspace:*",
566
+ tslib: "catalog:",
567
+ "@playwright/test": "1.39.0",
568
+ "@rollup/plugin-commonjs": "^28.0.2",
569
+ "rollup-plugin-dts": "^6.2.1",
570
+ "@rollup/plugin-json": "^5.0.1",
571
+ "@rollup/plugin-multi-entry": "^6.0.0",
572
+ "@rollup/plugin-node-resolve": "^16.0.0",
573
+ "@rollup/plugin-replace": "^5.0.1",
574
+ "@rollup/plugin-terser": "^0.1.0",
575
+ "@segment/analytics-next": "^1.75.0",
576
+ "@types/chalk": "^2.2.0",
577
+ "@types/node": "catalog:",
578
+ "@vitest/ui": "catalog:",
579
+ chalk: "^4.1.2",
580
+ "cookie-parser": "^1.4.7",
581
+ ejs: "^3.1.8",
582
+ express: "^4.21.2",
583
+ "node-fetch-commonjs": "^3.3.2",
584
+ "node-forge": "^1.3.1",
585
+ "raw-loader": "^4.0.2",
586
+ rollup: "^3.29.5",
587
+ typescript: "catalog:",
588
+ vitest: "catalog:",
589
+ jsondiffpatch: "workspace:*"
590
+ };
591
+ var peerDependencies = {
592
+ "@jitsu/protocols": "workspace:*"
593
+ };
594
+ var dependencies = {
595
+ analytics: "0.8.9"
596
+ };
597
+ var pkg = {
598
+ name: name,
599
+ version: version,
600
+ description: description,
601
+ author: author,
602
+ main: main,
603
+ files: files,
604
+ module: module$1,
605
+ types: types,
606
+ publishConfig: publishConfig,
607
+ license: license,
608
+ "private": false,
609
+ scripts: scripts,
610
+ devDependencies: devDependencies,
611
+ peerDependencies: peerDependencies,
612
+ dependencies: dependencies
613
+ };
614
+
615
+ const jitsuVersion = pkg.version ;
554
616
  const jitsuLibraryName = "@jitsu/js";
555
617
 
556
- const publicSuffixes = "myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,aéroport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,māori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw".split(",");
557
- //convert to Map
618
+ const publicSuffixes = "webflow.io,vercel.app,myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,aéroport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,māori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw".split(",");
558
619
  const _publicSuffixesMap = {};
559
620
  publicSuffixes.forEach(tld => {
560
621
  _publicSuffixesMap[tld] = true;
@@ -1041,7 +1102,6 @@ function create(options) {
1041
1102
  return new DiffPatcher(options);
1042
1103
  }
1043
1104
 
1044
- /* global analytics */
1045
1105
  var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1046
1106
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1047
1107
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -1053,9 +1113,7 @@ var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _argu
1053
1113
  };
1054
1114
  const diff = create();
1055
1115
  const defaultConfig = {
1056
- /* Your segment writeKey */
1057
1116
  writeKey: null,
1058
- /* Disable anonymous MTU */
1059
1117
  host: null,
1060
1118
  debug: false,
1061
1119
  fetch: null,
@@ -1076,7 +1134,6 @@ const defaultConfig = {
1076
1134
  consentCategories: {},
1077
1135
  },
1078
1136
  };
1079
- // mergeConfig merges newConfig into currentConfig also making sure that all undefined values are replaced with defaultConfig values
1080
1137
  const mergeConfig = (current, newConfig) => {
1081
1138
  for (const key of Object.keys(defaultConfig)) {
1082
1139
  const value = newConfig[key];
@@ -1086,16 +1143,12 @@ const mergeConfig = (current, newConfig) => {
1086
1143
  }
1087
1144
  else if (typeof value === "undefined") {
1088
1145
  if (newConfig.hasOwnProperty("privacy") || !current.hasOwnProperty("privacy")) {
1089
- // explicitly set to undefined - reset to default
1090
- // or was not set at all - set to default
1091
1146
  current.privacy = Object.assign(Object.assign({}, defaultConfig.privacy), { consentCategories: Object.assign({}, defaultConfig.privacy.consentCategories) });
1092
1147
  }
1093
1148
  }
1094
1149
  }
1095
1150
  else if (typeof value === "undefined") {
1096
1151
  if (newConfig.hasOwnProperty(key) || !current.hasOwnProperty(key)) {
1097
- // explicitly set to undefined - reset to default
1098
- // or was not set at all - set to default
1099
1152
  current[key] = defaultConfig[key];
1100
1153
  }
1101
1154
  }
@@ -1164,6 +1217,18 @@ function getClientIds(runtime, customCookieCapture) {
1164
1217
  }, {});
1165
1218
  return Object.assign(Object.assign({}, clientIds), getGa4Ids(runtime));
1166
1219
  }
1220
+ function parseGa4SessionId(cookieValue) {
1221
+ if (typeof cookieValue !== "string") {
1222
+ return undefined;
1223
+ }
1224
+ if (cookieValue.startsWith("GA1") || cookieValue.startsWith("GS1")) {
1225
+ return cookieValue.split(".")[2];
1226
+ }
1227
+ else {
1228
+ const match = cookieValue.match(/^GS\d+\.\d+\.(?:[\w_-]+[$])*s(\d+)(?:$|[$])/);
1229
+ return match ? match[1] : undefined;
1230
+ }
1231
+ }
1167
1232
  function getGa4Ids(runtime) {
1168
1233
  var _a;
1169
1234
  const allCookies = runtime.getCookies();
@@ -1172,14 +1237,11 @@ function getGa4Ids(runtime) {
1172
1237
  const sessionIds = gaSessionCookies.length > 0
1173
1238
  ? Object.fromEntries(gaSessionCookies
1174
1239
  .map(([key, value]) => {
1175
- if (typeof value !== "string") {
1240
+ const sessionId = parseGa4SessionId(value);
1241
+ if (!sessionId) {
1176
1242
  return null;
1177
1243
  }
1178
- const parts = value.split(".");
1179
- if (parts.length < 3) {
1180
- return null;
1181
- }
1182
- return [key.substring("_ga_".length), parts[2]];
1244
+ return [key.substring("_ga_".length), sessionId];
1183
1245
  })
1184
1246
  .filter(v => v !== null))
1185
1247
  : undefined;
@@ -1242,11 +1304,9 @@ const cookieStorage = (cookieDomain, key2cookie) => {
1242
1304
  const cookieName = key2cookie(key) || key;
1243
1305
  const result = getCookie(cookieName);
1244
1306
  if (key === "__anon_id") {
1245
- //anonymous id must always be a string, so we don't parse it to preserve its exact value
1246
1307
  return result;
1247
1308
  }
1248
1309
  if (typeof result === "undefined" && key === "__user_id") {
1249
- //backward compatibility with old jitsu cookie. get user id if from traits
1250
1310
  const traits = parse(getCookie(key2cookie("__user_traits") || "__eventn_id_usr")) || {};
1251
1311
  return traits.internal_id || traits.user_id || traits.id || traits.userId;
1252
1312
  }
@@ -1403,6 +1463,15 @@ const emptyRuntime = (config) => ({
1403
1463
  return undefined;
1404
1464
  },
1405
1465
  });
1466
+ function deepCopy(o) {
1467
+ if (typeof o !== "object") {
1468
+ return o;
1469
+ }
1470
+ if (!o) {
1471
+ return o;
1472
+ }
1473
+ return JSON.parse(JSON.stringify(o));
1474
+ }
1406
1475
  function deepMerge(target, source) {
1407
1476
  if (typeof source !== "object" || source === null) {
1408
1477
  return source;
@@ -1418,10 +1487,6 @@ function deepMerge(target, source) {
1418
1487
  function isInBrowser() {
1419
1488
  return typeof document !== "undefined" && typeof window !== "undefined";
1420
1489
  }
1421
- /**
1422
- * Fixes a weird bug in analytics URL where path
1423
- * of https://test.com becomes //test.com
1424
- */
1425
1490
  function fixPath(path) {
1426
1491
  if (path.indexOf("//") === 0 && path.lastIndexOf("/") === 1) {
1427
1492
  return "/";
@@ -1429,16 +1494,30 @@ function fixPath(path) {
1429
1494
  return path;
1430
1495
  }
1431
1496
  const hashRegex = /#.*$/;
1432
- /**
1433
- * for compatibility with path produced by analytics.js
1434
- * @param url
1435
- */
1436
1497
  function urlPath(url) {
1437
1498
  const regex = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g;
1438
1499
  const matches = regex.exec(url);
1439
1500
  const pathMatch = matches && matches[3] ? matches[3].split("?")[0].replace(hashRegex, "") : "";
1440
1501
  return "/" + pathMatch;
1441
1502
  }
1503
+ function canonicalUrl() {
1504
+ if (!isInBrowser())
1505
+ return;
1506
+ const tags = document.getElementsByTagName("link");
1507
+ for (var i = 0, tag; (tag = tags[i]); i++) {
1508
+ if (tag.getAttribute("rel") === "canonical") {
1509
+ return tag.getAttribute("href");
1510
+ }
1511
+ }
1512
+ }
1513
+ function analyticsJsUrl() {
1514
+ if (!isInBrowser())
1515
+ return;
1516
+ const canonical = canonicalUrl();
1517
+ if (!canonical)
1518
+ return window.location.href.replace(hashRegex, "");
1519
+ return canonical.match(/\?/) ? canonical : canonical + window.location.search;
1520
+ }
1442
1521
  function adjustPayload(payload, config, storage, s2s) {
1443
1522
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
1444
1523
  const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));
@@ -1447,7 +1526,10 @@ function adjustPayload(payload, config, storage, s2s) {
1447
1526
  const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
1448
1527
  const properties = payload.properties || {};
1449
1528
  if (payload.type === "page" && (properties.url || url)) {
1450
- const targetUrl = properties.url || url;
1529
+ let targetUrl = url || properties.url;
1530
+ if (properties.url && properties.url !== analyticsJsUrl()) {
1531
+ targetUrl = properties.url;
1532
+ }
1451
1533
  properties.url = targetUrl.replace(hashRegex, "");
1452
1534
  properties.path = fixPath(urlPath(targetUrl));
1453
1535
  }
@@ -1503,15 +1585,18 @@ function processDestinations(destinations, method, originalEvent, debug, analyti
1503
1585
  return __awaiter$1(this, void 0, void 0, function* () {
1504
1586
  const promises = [];
1505
1587
  for (const destination of destinations) {
1506
- let newEvents = [originalEvent];
1588
+ let newEvents = [];
1507
1589
  if (destination.newEvents) {
1508
1590
  try {
1509
- newEvents = destination.newEvents.map(e => e === "same" ? originalEvent : isDiff(e) ? diff.patch(originalEvent, e.__diff) : e);
1591
+ newEvents = destination.newEvents.map(e => e === "same" ? deepCopy(originalEvent) : isDiff(e) ? diff.patch(deepCopy(originalEvent), e.__diff) : e);
1510
1592
  }
1511
1593
  catch (e) {
1512
1594
  console.error(`[JITSU] Error applying '${destination.id}' changes to event: ${e === null || e === void 0 ? void 0 : e.message}`, e);
1513
1595
  }
1514
1596
  }
1597
+ else {
1598
+ newEvents = [deepCopy(originalEvent)];
1599
+ }
1515
1600
  const credentials = Object.assign(Object.assign({}, destination.credentials), destination.options);
1516
1601
  if (destination.deviceOptions.type === "internal-plugin") {
1517
1602
  const plugin = internalDestinationPlugins[destination.deviceOptions.name];
@@ -1603,7 +1688,6 @@ function getErrorHandler(opts) {
1603
1688
  }
1604
1689
  else if (configuredHandler === "rethrow") {
1605
1690
  return (msg, ...args) => {
1606
- //ignore args, not clear what to do with them
1607
1691
  throw new Error(msg);
1608
1692
  };
1609
1693
  }
@@ -1626,7 +1710,6 @@ function send(method, payload, jitsuConfig, instance, store) {
1626
1710
  const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;
1627
1711
  const fetch = jitsuConfig.fetch || globalThis.fetch;
1628
1712
  if (!fetch) {
1629
- //don't run it through error handler since error is critical and should be addressed
1630
1713
  throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
1631
1714
  }
1632
1715
  const abortController = jitsuConfig.fetchTimeoutMs ? new AbortController() : undefined;
@@ -1682,7 +1765,6 @@ function send(method, payload, jitsuConfig, instance, store) {
1682
1765
  console.warn(`[JITSU] ${payload.type} responded with list of ${responseJson.destinations.length} destinations. However, this code is running in server-to-server mode, so destinations will be ignored`, jitsuConfig.debug ? JSON.stringify(responseJson.destinations, null, 2) : undefined);
1683
1766
  }
1684
1767
  else {
1685
- //double protection, ingest should not return destinations in s2s mode
1686
1768
  if (isInBrowser()) {
1687
1769
  if (jitsuConfig.debug) {
1688
1770
  console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));
@@ -1695,23 +1777,14 @@ function send(method, payload, jitsuConfig, instance, store) {
1695
1777
  });
1696
1778
  }
1697
1779
  const controllingTraits = ["$doNotSend"];
1698
- /**
1699
- * Remove all members of traits that controls identify/group behavior (see analytics.d.ts), and should not be recorded. Returns
1700
- * copy of the object with these members removed.
1701
- *
1702
- * Do not modify traits object, but creates one
1703
- * @param traits
1704
- */
1705
1780
  function stripControllingTraits(traits) {
1706
1781
  const res = Object.assign({}, traits);
1707
- // see Traits definition in analytics.d.ts. We cannot define const here, so here's a little code duplication
1708
1782
  for (const key of controllingTraits) {
1709
1783
  delete res[key];
1710
1784
  }
1711
1785
  return res;
1712
1786
  }
1713
1787
  const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1714
- // just to make sure that all undefined values are replaced with defaultConfig values
1715
1788
  mergeConfig(jitsuOptions, jitsuOptions);
1716
1789
  return {
1717
1790
  name: "jitsu",
@@ -1773,7 +1846,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1773
1846
  if (((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = config.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
1774
1847
  return;
1775
1848
  }
1776
- // Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.
1777
1849
  storage.setItem("__user_id", payload.userId);
1778
1850
  const doNotSend = (_c = payload.traits) === null || _c === void 0 ? void 0 : _c.$doNotSend;
1779
1851
  if (payload.traits && typeof payload.traits === "object") {
@@ -1793,7 +1865,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1793
1865
  }
1794
1866
  },
1795
1867
  methods: {
1796
- //analytics doesn't support group as a base method, so we need to add it manually
1797
1868
  configure(newOptions) {
1798
1869
  var _a, _b, _c, _d;
1799
1870
  const idsWasDisabled = ((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.dontSend);
@@ -1819,7 +1890,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1819
1890
  return;
1820
1891
  }
1821
1892
  if (typeof groupId === "number") {
1822
- //fix potential issues with group id being used incorrectly
1823
1893
  groupId = groupId + "";
1824
1894
  }
1825
1895
  const instance = this.instance;
@@ -1926,9 +1996,6 @@ const emptyAnalytics = {
1926
1996
  function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1927
1997
  var _a, _b, _c;
1928
1998
  const storageCache = {};
1929
- // AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
1930
- // 'page' call will load traits from storage before 'identify' call had a change to save them.
1931
- // to avoid that we use in-memory cache for storage
1932
1999
  const cachingStorageWrapper = (persistentStorage) => ({
1933
2000
  setItem(key, val) {
1934
2001
  var _a, _b;
@@ -1981,24 +2048,17 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1981
2048
  }
1982
2049
  }, identify: (...args) => {
1983
2050
  if (args[0] && typeof args[0] !== "object" && typeof args[0] !== "string") {
1984
- //fix the quirk of analytics.js: if you pass number as first argument, it will be converted to string
1985
2051
  args[0] = args[0] + "";
1986
2052
  }
1987
- //analytics.js sets userId and traits asynchronously, so if
1988
- //we want them to be available immediately after identify call in subsequent page() calls,
1989
- //we need to put them into storage manually
1990
2053
  const storage = analytics.storage;
1991
2054
  const storageWrapper = cachingStorageWrapper(storage);
1992
2055
  if (typeof args[0] === "string") {
1993
- //first argument is user id
1994
2056
  storageWrapper.setItem("__user_id", args[0]);
1995
2057
  }
1996
2058
  else if (typeof args[0] === "object") {
1997
- //first argument is traits
1998
2059
  storageWrapper.setItem("__user_traits", args[0]);
1999
2060
  }
2000
2061
  if (args.length === 2 && typeof args[1] === "object") {
2001
- //first argument is user id, second is traits
2002
2062
  storageWrapper.setItem("__user_traits", args[1]);
2003
2063
  }
2004
2064
  return analytics.identify(...args);
@@ -2025,8 +2085,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
2025
2085
  if (opts.debug) {
2026
2086
  console.log("[JITSU DEBUG] Setting anonymous id to " + id);
2027
2087
  }
2028
- //Workaround for analytics.js bug. Underlying setAnonymousId doesn't set the id immediately,
2029
- //so we got to it manually here. See https://github.com/jitsucom/jitsu/issues/1060
2030
2088
  storage.setItem("__anon_id", id);
2031
2089
  const userState = analytics.user();
2032
2090
  if (userState) {
@@ -2070,8 +2128,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
2070
2128
  results.push(yield plugin["group"](groupId, traits, options, callback));
2071
2129
  }
2072
2130
  }
2073
- //It's incorrect at many levels. First, it's not a dispatched event. Second, we take a first result
2074
- //However, since returned values are used for debugging purposes only, it's ok
2075
2131
  return results[0];
2076
2132
  });
2077
2133
  },
@@ -2083,10 +2139,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
2083
2139
  }
2084
2140
  return a;
2085
2141
  }
2086
- /**
2087
- * Fix common mistakes in jitsu configuration
2088
- * @param opts
2089
- */
2090
2142
  function fixOptions(opts) {
2091
2143
  var _a, _b;
2092
2144
  return Object.assign(Object.assign({}, opts), { host: ((_a = opts.host) !== null && _a !== void 0 ? _a : "").indexOf("https://") !== 0 && ((_b = opts.host) !== null && _b !== void 0 ? _b : "").indexOf("http://") !== 0
@@ -2098,28 +2150,6 @@ function jitsuAnalytics(_opts) {
2098
2150
  const inBrowser = isInBrowser();
2099
2151
  const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));
2100
2152
  return createUnderlyingAnalyticsInstance(opts, rt);
2101
- // if (inBrowser) {
2102
- // const fetch = opts.fetch || globalThis.fetch;
2103
- // if (!fetch) {
2104
- // throw new Error(
2105
- // "Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope"
2106
- // );
2107
- // }
2108
- // const url = `${opts.host}/api/s/cfg`;
2109
- // const authHeader = {};
2110
- // const debugHeader = opts.debug ? { "X-Enable-Debug": "true" } : {};
2111
- // fetch(url)
2112
- // .then(res => res.json())
2113
- // .then(res => {
2114
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt, []));
2115
- // })
2116
- // .catch(e => {
2117
- // console.warn(`[JITSU] error getting device-destinations from ${url}`, e);
2118
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
2119
- // });
2120
- // } else {
2121
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
2122
- // }
2123
2153
  }
2124
2154
 
2125
2155
  exports.createInMemoryStorage = createInMemoryStorage;