@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.es.js CHANGED
@@ -183,9 +183,6 @@ function insertTags(code, event, opts = {}) {
183
183
  }
184
184
  }
185
185
  }
186
- //This weird code is used to mask eval() usage.
187
- //Although the code can be executed in the browser, some server side bundlers (like Vercel) fails
188
- //the build if a direct reference to eval() is found.
189
186
  let al = "al";
190
187
  let ev = "ve".split("").reverse().join("");
191
188
  const execF = globalThis[ev + al];
@@ -315,14 +312,11 @@ const gtmPlugin = {
315
312
  }
316
313
  yield initGtmIfNeeded(config, payload);
317
314
  const dataLayer = window[config.dataLayerName || "dataLayer"];
318
- //traits could be in both nodes, context.traits takes precedence
319
315
  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) || {}));
320
- //remove properties that defined separately
321
316
  const idsFromTraits = omit(traits, "id", "userId", "user_id", "anonymousId", "userId");
322
317
  if (debug) {
323
318
  console.debug("GTM plugin will be applied to following payload", payload);
324
319
  }
325
- // See https://developers.google.com/tag-platform/tag-manager/server-side/common-event-data
326
320
  const userData = {
327
321
  email_address: traits.email,
328
322
  };
@@ -446,7 +440,6 @@ const ga4Plugin = {
446
440
  };
447
441
  const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
448
442
  if (payload.userId) {
449
- // @ts-ignore
450
443
  gtag("set", { user_id: payload.userId });
451
444
  }
452
445
  switch (payload.type) {
@@ -457,19 +450,16 @@ const ga4Plugin = {
457
450
  }
458
451
  const { properties: pageProperties, context } = payload;
459
452
  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);
460
- // @ts-ignore
461
453
  gtag("event", "page_view", pageEvent);
462
454
  break;
463
455
  case "track":
464
456
  const { properties: trackProperties } = payload;
465
457
  const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);
466
- // @ts-ignore
467
458
  gtag("event", payload.event, trackEvent);
468
459
  break;
469
460
  case "identify":
470
461
  const { traits } = payload;
471
462
  const identifyEvent = Object.assign(Object.assign({}, traits), ids);
472
- // @ts-ignore
473
463
  gtag("event", "identify", identifyEvent);
474
464
  break;
475
465
  }
@@ -490,17 +480,13 @@ function initGa4IfNeeded(config, payload) {
490
480
  setGa4State("loading");
491
481
  const dlName = config.dataLayerName || "dataLayer";
492
482
  const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
493
- // to work with both GA4 and GTM
494
483
  const tagId = config.measurementIds;
495
484
  window[dlName] = window[dlName] || [];
496
485
  const gtag = function () {
497
486
  window[dlName].push(arguments);
498
487
  };
499
- // @ts-ignore
500
488
  gtag("js", new Date());
501
- gtag(
502
- // @ts-ignore
503
- "config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
489
+ gtag("config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
504
490
  loadScript(buildTagUrl(), { query: `id=${tagId}${dlParam}`, www: true })
505
491
  .then(() => {
506
492
  setGa4State("loaded");
@@ -548,11 +534,86 @@ const internalDestinationPlugins = {
548
534
  [logrocketPlugin.id]: logrocketPlugin,
549
535
  };
550
536
 
551
- const jitsuVersion = "2.0.0";
537
+ var name = "@jitsu/js";
538
+ var version = "1.11.0-canary.20251124.3ff4617";
539
+ var description = "";
540
+ var author = "Jitsu Dev Team <dev@jitsu.com>";
541
+ var main = "dist/jitsu.cjs.js";
542
+ var files = [
543
+ "dist"
544
+ ];
545
+ var module = "dist/jitsu.es.js";
546
+ var types = "dist/jitsu.d.ts";
547
+ var publishConfig = {
548
+ access: "public"
549
+ };
550
+ var license = "MIT";
551
+ var scripts = {
552
+ clean: "rm -rf ./dist ./compiled",
553
+ "test:node": "vitest run",
554
+ "test:playwright": "playwright test ./__tests__/playwright",
555
+ test: "pnpm run test:node",
556
+ "//typecheck": "Build is required because types are generated during build",
557
+ typecheck: "pnpm run build",
558
+ build: "pnpm run clean && tsc -p . && rollup -c",
559
+ "//build-deps": "Required by turbo ^build-deps - builds dist/ for workspace packages that import this",
560
+ "build-deps": "pnpm run build"
561
+ };
562
+ var devDependencies = {
563
+ "@jitsu/common-config": "workspace:*",
564
+ tslib: "catalog:",
565
+ "@playwright/test": "1.39.0",
566
+ "@rollup/plugin-commonjs": "^28.0.2",
567
+ "rollup-plugin-dts": "^6.2.1",
568
+ "@rollup/plugin-json": "^5.0.1",
569
+ "@rollup/plugin-multi-entry": "^6.0.0",
570
+ "@rollup/plugin-node-resolve": "^16.0.0",
571
+ "@rollup/plugin-replace": "^5.0.1",
572
+ "@rollup/plugin-terser": "^0.1.0",
573
+ "@segment/analytics-next": "^1.75.0",
574
+ "@types/chalk": "^2.2.0",
575
+ "@types/node": "catalog:",
576
+ "@vitest/ui": "catalog:",
577
+ chalk: "^4.1.2",
578
+ "cookie-parser": "^1.4.7",
579
+ ejs: "^3.1.8",
580
+ express: "^4.21.2",
581
+ "node-fetch-commonjs": "^3.3.2",
582
+ "node-forge": "^1.3.1",
583
+ "raw-loader": "^4.0.2",
584
+ rollup: "^3.29.5",
585
+ typescript: "catalog:",
586
+ vitest: "catalog:",
587
+ jsondiffpatch: "workspace:*"
588
+ };
589
+ var peerDependencies = {
590
+ "@jitsu/protocols": "workspace:*"
591
+ };
592
+ var dependencies = {
593
+ analytics: "0.8.9"
594
+ };
595
+ var pkg = {
596
+ name: name,
597
+ version: version,
598
+ description: description,
599
+ author: author,
600
+ main: main,
601
+ files: files,
602
+ module: module,
603
+ types: types,
604
+ publishConfig: publishConfig,
605
+ license: license,
606
+ "private": false,
607
+ scripts: scripts,
608
+ devDependencies: devDependencies,
609
+ peerDependencies: peerDependencies,
610
+ dependencies: dependencies
611
+ };
612
+
613
+ const jitsuVersion = pkg.version ;
552
614
  const jitsuLibraryName = "@jitsu/js";
553
615
 
554
- 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(",");
555
- //convert to Map
616
+ 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(",");
556
617
  const _publicSuffixesMap = {};
557
618
  publicSuffixes.forEach(tld => {
558
619
  _publicSuffixesMap[tld] = true;
@@ -1039,7 +1100,6 @@ function create(options) {
1039
1100
  return new DiffPatcher(options);
1040
1101
  }
1041
1102
 
1042
- /* global analytics */
1043
1103
  var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1044
1104
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1045
1105
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -1051,9 +1111,7 @@ var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _argu
1051
1111
  };
1052
1112
  const diff = create();
1053
1113
  const defaultConfig = {
1054
- /* Your segment writeKey */
1055
1114
  writeKey: null,
1056
- /* Disable anonymous MTU */
1057
1115
  host: null,
1058
1116
  debug: false,
1059
1117
  fetch: null,
@@ -1074,7 +1132,6 @@ const defaultConfig = {
1074
1132
  consentCategories: {},
1075
1133
  },
1076
1134
  };
1077
- // mergeConfig merges newConfig into currentConfig also making sure that all undefined values are replaced with defaultConfig values
1078
1135
  const mergeConfig = (current, newConfig) => {
1079
1136
  for (const key of Object.keys(defaultConfig)) {
1080
1137
  const value = newConfig[key];
@@ -1084,16 +1141,12 @@ const mergeConfig = (current, newConfig) => {
1084
1141
  }
1085
1142
  else if (typeof value === "undefined") {
1086
1143
  if (newConfig.hasOwnProperty("privacy") || !current.hasOwnProperty("privacy")) {
1087
- // explicitly set to undefined - reset to default
1088
- // or was not set at all - set to default
1089
1144
  current.privacy = Object.assign(Object.assign({}, defaultConfig.privacy), { consentCategories: Object.assign({}, defaultConfig.privacy.consentCategories) });
1090
1145
  }
1091
1146
  }
1092
1147
  }
1093
1148
  else if (typeof value === "undefined") {
1094
1149
  if (newConfig.hasOwnProperty(key) || !current.hasOwnProperty(key)) {
1095
- // explicitly set to undefined - reset to default
1096
- // or was not set at all - set to default
1097
1150
  current[key] = defaultConfig[key];
1098
1151
  }
1099
1152
  }
@@ -1162,6 +1215,18 @@ function getClientIds(runtime, customCookieCapture) {
1162
1215
  }, {});
1163
1216
  return Object.assign(Object.assign({}, clientIds), getGa4Ids(runtime));
1164
1217
  }
1218
+ function parseGa4SessionId(cookieValue) {
1219
+ if (typeof cookieValue !== "string") {
1220
+ return undefined;
1221
+ }
1222
+ if (cookieValue.startsWith("GA1") || cookieValue.startsWith("GS1")) {
1223
+ return cookieValue.split(".")[2];
1224
+ }
1225
+ else {
1226
+ const match = cookieValue.match(/^GS\d+\.\d+\.(?:[\w_-]+[$])*s(\d+)(?:$|[$])/);
1227
+ return match ? match[1] : undefined;
1228
+ }
1229
+ }
1165
1230
  function getGa4Ids(runtime) {
1166
1231
  var _a;
1167
1232
  const allCookies = runtime.getCookies();
@@ -1170,14 +1235,11 @@ function getGa4Ids(runtime) {
1170
1235
  const sessionIds = gaSessionCookies.length > 0
1171
1236
  ? Object.fromEntries(gaSessionCookies
1172
1237
  .map(([key, value]) => {
1173
- if (typeof value !== "string") {
1238
+ const sessionId = parseGa4SessionId(value);
1239
+ if (!sessionId) {
1174
1240
  return null;
1175
1241
  }
1176
- const parts = value.split(".");
1177
- if (parts.length < 3) {
1178
- return null;
1179
- }
1180
- return [key.substring("_ga_".length), parts[2]];
1242
+ return [key.substring("_ga_".length), sessionId];
1181
1243
  })
1182
1244
  .filter(v => v !== null))
1183
1245
  : undefined;
@@ -1240,11 +1302,9 @@ const cookieStorage = (cookieDomain, key2cookie) => {
1240
1302
  const cookieName = key2cookie(key) || key;
1241
1303
  const result = getCookie(cookieName);
1242
1304
  if (key === "__anon_id") {
1243
- //anonymous id must always be a string, so we don't parse it to preserve its exact value
1244
1305
  return result;
1245
1306
  }
1246
1307
  if (typeof result === "undefined" && key === "__user_id") {
1247
- //backward compatibility with old jitsu cookie. get user id if from traits
1248
1308
  const traits = parse(getCookie(key2cookie("__user_traits") || "__eventn_id_usr")) || {};
1249
1309
  return traits.internal_id || traits.user_id || traits.id || traits.userId;
1250
1310
  }
@@ -1401,6 +1461,15 @@ const emptyRuntime = (config) => ({
1401
1461
  return undefined;
1402
1462
  },
1403
1463
  });
1464
+ function deepCopy(o) {
1465
+ if (typeof o !== "object") {
1466
+ return o;
1467
+ }
1468
+ if (!o) {
1469
+ return o;
1470
+ }
1471
+ return JSON.parse(JSON.stringify(o));
1472
+ }
1404
1473
  function deepMerge(target, source) {
1405
1474
  if (typeof source !== "object" || source === null) {
1406
1475
  return source;
@@ -1416,10 +1485,6 @@ function deepMerge(target, source) {
1416
1485
  function isInBrowser() {
1417
1486
  return typeof document !== "undefined" && typeof window !== "undefined";
1418
1487
  }
1419
- /**
1420
- * Fixes a weird bug in analytics URL where path
1421
- * of https://test.com becomes //test.com
1422
- */
1423
1488
  function fixPath(path) {
1424
1489
  if (path.indexOf("//") === 0 && path.lastIndexOf("/") === 1) {
1425
1490
  return "/";
@@ -1427,16 +1492,30 @@ function fixPath(path) {
1427
1492
  return path;
1428
1493
  }
1429
1494
  const hashRegex = /#.*$/;
1430
- /**
1431
- * for compatibility with path produced by analytics.js
1432
- * @param url
1433
- */
1434
1495
  function urlPath(url) {
1435
1496
  const regex = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g;
1436
1497
  const matches = regex.exec(url);
1437
1498
  const pathMatch = matches && matches[3] ? matches[3].split("?")[0].replace(hashRegex, "") : "";
1438
1499
  return "/" + pathMatch;
1439
1500
  }
1501
+ function canonicalUrl() {
1502
+ if (!isInBrowser())
1503
+ return;
1504
+ const tags = document.getElementsByTagName("link");
1505
+ for (var i = 0, tag; (tag = tags[i]); i++) {
1506
+ if (tag.getAttribute("rel") === "canonical") {
1507
+ return tag.getAttribute("href");
1508
+ }
1509
+ }
1510
+ }
1511
+ function analyticsJsUrl() {
1512
+ if (!isInBrowser())
1513
+ return;
1514
+ const canonical = canonicalUrl();
1515
+ if (!canonical)
1516
+ return window.location.href.replace(hashRegex, "");
1517
+ return canonical.match(/\?/) ? canonical : canonical + window.location.search;
1518
+ }
1440
1519
  function adjustPayload(payload, config, storage, s2s) {
1441
1520
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
1442
1521
  const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));
@@ -1445,7 +1524,10 @@ function adjustPayload(payload, config, storage, s2s) {
1445
1524
  const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
1446
1525
  const properties = payload.properties || {};
1447
1526
  if (payload.type === "page" && (properties.url || url)) {
1448
- const targetUrl = properties.url || url;
1527
+ let targetUrl = url || properties.url;
1528
+ if (properties.url && properties.url !== analyticsJsUrl()) {
1529
+ targetUrl = properties.url;
1530
+ }
1449
1531
  properties.url = targetUrl.replace(hashRegex, "");
1450
1532
  properties.path = fixPath(urlPath(targetUrl));
1451
1533
  }
@@ -1501,15 +1583,18 @@ function processDestinations(destinations, method, originalEvent, debug, analyti
1501
1583
  return __awaiter$1(this, void 0, void 0, function* () {
1502
1584
  const promises = [];
1503
1585
  for (const destination of destinations) {
1504
- let newEvents = [originalEvent];
1586
+ let newEvents = [];
1505
1587
  if (destination.newEvents) {
1506
1588
  try {
1507
- newEvents = destination.newEvents.map(e => e === "same" ? originalEvent : isDiff(e) ? diff.patch(originalEvent, e.__diff) : e);
1589
+ newEvents = destination.newEvents.map(e => e === "same" ? deepCopy(originalEvent) : isDiff(e) ? diff.patch(deepCopy(originalEvent), e.__diff) : e);
1508
1590
  }
1509
1591
  catch (e) {
1510
1592
  console.error(`[JITSU] Error applying '${destination.id}' changes to event: ${e === null || e === void 0 ? void 0 : e.message}`, e);
1511
1593
  }
1512
1594
  }
1595
+ else {
1596
+ newEvents = [deepCopy(originalEvent)];
1597
+ }
1513
1598
  const credentials = Object.assign(Object.assign({}, destination.credentials), destination.options);
1514
1599
  if (destination.deviceOptions.type === "internal-plugin") {
1515
1600
  const plugin = internalDestinationPlugins[destination.deviceOptions.name];
@@ -1601,7 +1686,6 @@ function getErrorHandler(opts) {
1601
1686
  }
1602
1687
  else if (configuredHandler === "rethrow") {
1603
1688
  return (msg, ...args) => {
1604
- //ignore args, not clear what to do with them
1605
1689
  throw new Error(msg);
1606
1690
  };
1607
1691
  }
@@ -1624,7 +1708,6 @@ function send(method, payload, jitsuConfig, instance, store) {
1624
1708
  const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;
1625
1709
  const fetch = jitsuConfig.fetch || globalThis.fetch;
1626
1710
  if (!fetch) {
1627
- //don't run it through error handler since error is critical and should be addressed
1628
1711
  throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
1629
1712
  }
1630
1713
  const abortController = jitsuConfig.fetchTimeoutMs ? new AbortController() : undefined;
@@ -1680,7 +1763,6 @@ function send(method, payload, jitsuConfig, instance, store) {
1680
1763
  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);
1681
1764
  }
1682
1765
  else {
1683
- //double protection, ingest should not return destinations in s2s mode
1684
1766
  if (isInBrowser()) {
1685
1767
  if (jitsuConfig.debug) {
1686
1768
  console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));
@@ -1693,23 +1775,14 @@ function send(method, payload, jitsuConfig, instance, store) {
1693
1775
  });
1694
1776
  }
1695
1777
  const controllingTraits = ["$doNotSend"];
1696
- /**
1697
- * Remove all members of traits that controls identify/group behavior (see analytics.d.ts), and should not be recorded. Returns
1698
- * copy of the object with these members removed.
1699
- *
1700
- * Do not modify traits object, but creates one
1701
- * @param traits
1702
- */
1703
1778
  function stripControllingTraits(traits) {
1704
1779
  const res = Object.assign({}, traits);
1705
- // see Traits definition in analytics.d.ts. We cannot define const here, so here's a little code duplication
1706
1780
  for (const key of controllingTraits) {
1707
1781
  delete res[key];
1708
1782
  }
1709
1783
  return res;
1710
1784
  }
1711
1785
  const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1712
- // just to make sure that all undefined values are replaced with defaultConfig values
1713
1786
  mergeConfig(jitsuOptions, jitsuOptions);
1714
1787
  return {
1715
1788
  name: "jitsu",
@@ -1771,7 +1844,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1771
1844
  if (((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = config.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
1772
1845
  return;
1773
1846
  }
1774
- // Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.
1775
1847
  storage.setItem("__user_id", payload.userId);
1776
1848
  const doNotSend = (_c = payload.traits) === null || _c === void 0 ? void 0 : _c.$doNotSend;
1777
1849
  if (payload.traits && typeof payload.traits === "object") {
@@ -1791,7 +1863,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1791
1863
  }
1792
1864
  },
1793
1865
  methods: {
1794
- //analytics doesn't support group as a base method, so we need to add it manually
1795
1866
  configure(newOptions) {
1796
1867
  var _a, _b, _c, _d;
1797
1868
  const idsWasDisabled = ((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.dontSend);
@@ -1817,7 +1888,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1817
1888
  return;
1818
1889
  }
1819
1890
  if (typeof groupId === "number") {
1820
- //fix potential issues with group id being used incorrectly
1821
1891
  groupId = groupId + "";
1822
1892
  }
1823
1893
  const instance = this.instance;
@@ -1924,9 +1994,6 @@ const emptyAnalytics = {
1924
1994
  function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1925
1995
  var _a, _b, _c;
1926
1996
  const storageCache = {};
1927
- // AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
1928
- // 'page' call will load traits from storage before 'identify' call had a change to save them.
1929
- // to avoid that we use in-memory cache for storage
1930
1997
  const cachingStorageWrapper = (persistentStorage) => ({
1931
1998
  setItem(key, val) {
1932
1999
  var _a, _b;
@@ -1979,24 +2046,17 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1979
2046
  }
1980
2047
  }, identify: (...args) => {
1981
2048
  if (args[0] && typeof args[0] !== "object" && typeof args[0] !== "string") {
1982
- //fix the quirk of analytics.js: if you pass number as first argument, it will be converted to string
1983
2049
  args[0] = args[0] + "";
1984
2050
  }
1985
- //analytics.js sets userId and traits asynchronously, so if
1986
- //we want them to be available immediately after identify call in subsequent page() calls,
1987
- //we need to put them into storage manually
1988
2051
  const storage = analytics.storage;
1989
2052
  const storageWrapper = cachingStorageWrapper(storage);
1990
2053
  if (typeof args[0] === "string") {
1991
- //first argument is user id
1992
2054
  storageWrapper.setItem("__user_id", args[0]);
1993
2055
  }
1994
2056
  else if (typeof args[0] === "object") {
1995
- //first argument is traits
1996
2057
  storageWrapper.setItem("__user_traits", args[0]);
1997
2058
  }
1998
2059
  if (args.length === 2 && typeof args[1] === "object") {
1999
- //first argument is user id, second is traits
2000
2060
  storageWrapper.setItem("__user_traits", args[1]);
2001
2061
  }
2002
2062
  return analytics.identify(...args);
@@ -2023,8 +2083,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
2023
2083
  if (opts.debug) {
2024
2084
  console.log("[JITSU DEBUG] Setting anonymous id to " + id);
2025
2085
  }
2026
- //Workaround for analytics.js bug. Underlying setAnonymousId doesn't set the id immediately,
2027
- //so we got to it manually here. See https://github.com/jitsucom/jitsu/issues/1060
2028
2086
  storage.setItem("__anon_id", id);
2029
2087
  const userState = analytics.user();
2030
2088
  if (userState) {
@@ -2068,8 +2126,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
2068
2126
  results.push(yield plugin["group"](groupId, traits, options, callback));
2069
2127
  }
2070
2128
  }
2071
- //It's incorrect at many levels. First, it's not a dispatched event. Second, we take a first result
2072
- //However, since returned values are used for debugging purposes only, it's ok
2073
2129
  return results[0];
2074
2130
  });
2075
2131
  },
@@ -2081,10 +2137,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
2081
2137
  }
2082
2138
  return a;
2083
2139
  }
2084
- /**
2085
- * Fix common mistakes in jitsu configuration
2086
- * @param opts
2087
- */
2088
2140
  function fixOptions(opts) {
2089
2141
  var _a, _b;
2090
2142
  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
@@ -2096,28 +2148,6 @@ function jitsuAnalytics(_opts) {
2096
2148
  const inBrowser = isInBrowser();
2097
2149
  const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));
2098
2150
  return createUnderlyingAnalyticsInstance(opts, rt);
2099
- // if (inBrowser) {
2100
- // const fetch = opts.fetch || globalThis.fetch;
2101
- // if (!fetch) {
2102
- // throw new Error(
2103
- // "Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope"
2104
- // );
2105
- // }
2106
- // const url = `${opts.host}/api/s/cfg`;
2107
- // const authHeader = {};
2108
- // const debugHeader = opts.debug ? { "X-Enable-Debug": "true" } : {};
2109
- // fetch(url)
2110
- // .then(res => res.json())
2111
- // .then(res => {
2112
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt, []));
2113
- // })
2114
- // .catch(e => {
2115
- // console.warn(`[JITSU] error getting device-destinations from ${url}`, e);
2116
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
2117
- // });
2118
- // } else {
2119
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
2120
- // }
2121
2151
  }
2122
2152
 
2123
2153
  export { createInMemoryStorage, emptyAnalytics, emptyRuntime, isInBrowser, jitsuAnalytics, jitsuAnalyticsPlugin, parseQuery, randomId, uuid, windowRuntime };