@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/web/p.js.txt CHANGED
@@ -186,9 +186,6 @@
186
186
  }
187
187
  }
188
188
  }
189
- //This weird code is used to mask eval() usage.
190
- //Although the code can be executed in the browser, some server side bundlers (like Vercel) fails
191
- //the build if a direct reference to eval() is found.
192
189
  let al = "al";
193
190
  let ev = "ve".split("").reverse().join("");
194
191
  const execF = globalThis[ev + al];
@@ -318,14 +315,11 @@
318
315
  }
319
316
  yield initGtmIfNeeded(config, payload);
320
317
  const dataLayer = window[config.dataLayerName || "dataLayer"];
321
- //traits could be in both nodes, context.traits takes precedence
322
318
  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) || {}));
323
- //remove properties that defined separately
324
319
  const idsFromTraits = omit(traits, "id", "userId", "user_id", "anonymousId", "userId");
325
320
  if (debug) {
326
321
  console.debug("GTM plugin will be applied to following payload", payload);
327
322
  }
328
- // See https://developers.google.com/tag-platform/tag-manager/server-side/common-event-data
329
323
  const userData = {
330
324
  email_address: traits.email,
331
325
  };
@@ -449,7 +443,6 @@
449
443
  };
450
444
  const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
451
445
  if (payload.userId) {
452
- // @ts-ignore
453
446
  gtag("set", { user_id: payload.userId });
454
447
  }
455
448
  switch (payload.type) {
@@ -460,19 +453,16 @@
460
453
  }
461
454
  const { properties: pageProperties, context } = payload;
462
455
  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);
463
- // @ts-ignore
464
456
  gtag("event", "page_view", pageEvent);
465
457
  break;
466
458
  case "track":
467
459
  const { properties: trackProperties } = payload;
468
460
  const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);
469
- // @ts-ignore
470
461
  gtag("event", payload.event, trackEvent);
471
462
  break;
472
463
  case "identify":
473
464
  const { traits } = payload;
474
465
  const identifyEvent = Object.assign(Object.assign({}, traits), ids);
475
- // @ts-ignore
476
466
  gtag("event", "identify", identifyEvent);
477
467
  break;
478
468
  }
@@ -493,17 +483,13 @@
493
483
  setGa4State("loading");
494
484
  const dlName = config.dataLayerName || "dataLayer";
495
485
  const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
496
- // to work with both GA4 and GTM
497
486
  const tagId = config.measurementIds;
498
487
  window[dlName] = window[dlName] || [];
499
488
  const gtag = function () {
500
489
  window[dlName].push(arguments);
501
490
  };
502
- // @ts-ignore
503
491
  gtag("js", new Date());
504
- gtag(
505
- // @ts-ignore
506
- "config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
492
+ gtag("config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
507
493
  loadScript(buildTagUrl(), { query: `id=${tagId}${dlParam}`, www: true })
508
494
  .then(() => {
509
495
  setGa4State("loaded");
@@ -551,11 +537,86 @@
551
537
  [logrocketPlugin.id]: logrocketPlugin,
552
538
  };
553
539
 
554
- const jitsuVersion = "2.0.0";
540
+ var name = "@jitsu/js";
541
+ var version = "1.11.0-canary.20251124.3ff4617";
542
+ var description = "";
543
+ var author = "Jitsu Dev Team <dev@jitsu.com>";
544
+ var main = "dist/jitsu.cjs.js";
545
+ var files = [
546
+ "dist"
547
+ ];
548
+ var module = "dist/jitsu.es.js";
549
+ var types = "dist/jitsu.d.ts";
550
+ var publishConfig = {
551
+ access: "public"
552
+ };
553
+ var license = "MIT";
554
+ var scripts = {
555
+ clean: "rm -rf ./dist ./compiled",
556
+ "test:node": "vitest run",
557
+ "test:playwright": "playwright test ./__tests__/playwright",
558
+ test: "pnpm run test:node",
559
+ "//typecheck": "Build is required because types are generated during build",
560
+ typecheck: "pnpm run build",
561
+ build: "pnpm run clean && tsc -p . && rollup -c",
562
+ "//build-deps": "Required by turbo ^build-deps - builds dist/ for workspace packages that import this",
563
+ "build-deps": "pnpm run build"
564
+ };
565
+ var devDependencies = {
566
+ "@jitsu/common-config": "workspace:*",
567
+ tslib: "catalog:",
568
+ "@playwright/test": "1.39.0",
569
+ "@rollup/plugin-commonjs": "^28.0.2",
570
+ "rollup-plugin-dts": "^6.2.1",
571
+ "@rollup/plugin-json": "^5.0.1",
572
+ "@rollup/plugin-multi-entry": "^6.0.0",
573
+ "@rollup/plugin-node-resolve": "^16.0.0",
574
+ "@rollup/plugin-replace": "^5.0.1",
575
+ "@rollup/plugin-terser": "^0.1.0",
576
+ "@segment/analytics-next": "^1.75.0",
577
+ "@types/chalk": "^2.2.0",
578
+ "@types/node": "catalog:",
579
+ "@vitest/ui": "catalog:",
580
+ chalk: "^4.1.2",
581
+ "cookie-parser": "^1.4.7",
582
+ ejs: "^3.1.8",
583
+ express: "^4.21.2",
584
+ "node-fetch-commonjs": "^3.3.2",
585
+ "node-forge": "^1.3.1",
586
+ "raw-loader": "^4.0.2",
587
+ rollup: "^3.29.5",
588
+ typescript: "catalog:",
589
+ vitest: "catalog:",
590
+ jsondiffpatch: "workspace:*"
591
+ };
592
+ var peerDependencies = {
593
+ "@jitsu/protocols": "workspace:*"
594
+ };
595
+ var dependencies = {
596
+ analytics: "0.8.9"
597
+ };
598
+ var pkg = {
599
+ name: name,
600
+ version: version,
601
+ description: description,
602
+ author: author,
603
+ main: main,
604
+ files: files,
605
+ module: module,
606
+ types: types,
607
+ publishConfig: publishConfig,
608
+ license: license,
609
+ "private": false,
610
+ scripts: scripts,
611
+ devDependencies: devDependencies,
612
+ peerDependencies: peerDependencies,
613
+ dependencies: dependencies
614
+ };
615
+
616
+ const jitsuVersion = pkg.version ;
555
617
  const jitsuLibraryName = "@jitsu/js";
556
618
 
557
- 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(",");
558
- //convert to Map
619
+ 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(",");
559
620
  const _publicSuffixesMap = {};
560
621
  publicSuffixes.forEach(tld => {
561
622
  _publicSuffixesMap[tld] = true;
@@ -1042,7 +1103,6 @@
1042
1103
  return new DiffPatcher(options);
1043
1104
  }
1044
1105
 
1045
- /* global analytics */
1046
1106
  var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1047
1107
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1048
1108
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -1054,9 +1114,7 @@
1054
1114
  };
1055
1115
  const diff = create();
1056
1116
  const defaultConfig = {
1057
- /* Your segment writeKey */
1058
1117
  writeKey: null,
1059
- /* Disable anonymous MTU */
1060
1118
  host: null,
1061
1119
  debug: false,
1062
1120
  fetch: null,
@@ -1077,7 +1135,6 @@
1077
1135
  consentCategories: {},
1078
1136
  },
1079
1137
  };
1080
- // mergeConfig merges newConfig into currentConfig also making sure that all undefined values are replaced with defaultConfig values
1081
1138
  const mergeConfig = (current, newConfig) => {
1082
1139
  for (const key of Object.keys(defaultConfig)) {
1083
1140
  const value = newConfig[key];
@@ -1087,16 +1144,12 @@
1087
1144
  }
1088
1145
  else if (typeof value === "undefined") {
1089
1146
  if (newConfig.hasOwnProperty("privacy") || !current.hasOwnProperty("privacy")) {
1090
- // explicitly set to undefined - reset to default
1091
- // or was not set at all - set to default
1092
1147
  current.privacy = Object.assign(Object.assign({}, defaultConfig.privacy), { consentCategories: Object.assign({}, defaultConfig.privacy.consentCategories) });
1093
1148
  }
1094
1149
  }
1095
1150
  }
1096
1151
  else if (typeof value === "undefined") {
1097
1152
  if (newConfig.hasOwnProperty(key) || !current.hasOwnProperty(key)) {
1098
- // explicitly set to undefined - reset to default
1099
- // or was not set at all - set to default
1100
1153
  current[key] = defaultConfig[key];
1101
1154
  }
1102
1155
  }
@@ -1165,6 +1218,18 @@
1165
1218
  }, {});
1166
1219
  return Object.assign(Object.assign({}, clientIds), getGa4Ids(runtime));
1167
1220
  }
1221
+ function parseGa4SessionId(cookieValue) {
1222
+ if (typeof cookieValue !== "string") {
1223
+ return undefined;
1224
+ }
1225
+ if (cookieValue.startsWith("GA1") || cookieValue.startsWith("GS1")) {
1226
+ return cookieValue.split(".")[2];
1227
+ }
1228
+ else {
1229
+ const match = cookieValue.match(/^GS\d+\.\d+\.(?:[\w_-]+[$])*s(\d+)(?:$|[$])/);
1230
+ return match ? match[1] : undefined;
1231
+ }
1232
+ }
1168
1233
  function getGa4Ids(runtime) {
1169
1234
  var _a;
1170
1235
  const allCookies = runtime.getCookies();
@@ -1173,14 +1238,11 @@
1173
1238
  const sessionIds = gaSessionCookies.length > 0
1174
1239
  ? Object.fromEntries(gaSessionCookies
1175
1240
  .map(([key, value]) => {
1176
- if (typeof value !== "string") {
1241
+ const sessionId = parseGa4SessionId(value);
1242
+ if (!sessionId) {
1177
1243
  return null;
1178
1244
  }
1179
- const parts = value.split(".");
1180
- if (parts.length < 3) {
1181
- return null;
1182
- }
1183
- return [key.substring("_ga_".length), parts[2]];
1245
+ return [key.substring("_ga_".length), sessionId];
1184
1246
  })
1185
1247
  .filter(v => v !== null))
1186
1248
  : undefined;
@@ -1243,11 +1305,9 @@
1243
1305
  const cookieName = key2cookie(key) || key;
1244
1306
  const result = getCookie(cookieName);
1245
1307
  if (key === "__anon_id") {
1246
- //anonymous id must always be a string, so we don't parse it to preserve its exact value
1247
1308
  return result;
1248
1309
  }
1249
1310
  if (typeof result === "undefined" && key === "__user_id") {
1250
- //backward compatibility with old jitsu cookie. get user id if from traits
1251
1311
  const traits = parse(getCookie(key2cookie("__user_traits") || "__eventn_id_usr")) || {};
1252
1312
  return traits.internal_id || traits.user_id || traits.id || traits.userId;
1253
1313
  }
@@ -1404,6 +1464,15 @@
1404
1464
  return undefined;
1405
1465
  },
1406
1466
  });
1467
+ function deepCopy(o) {
1468
+ if (typeof o !== "object") {
1469
+ return o;
1470
+ }
1471
+ if (!o) {
1472
+ return o;
1473
+ }
1474
+ return JSON.parse(JSON.stringify(o));
1475
+ }
1407
1476
  function deepMerge(target, source) {
1408
1477
  if (typeof source !== "object" || source === null) {
1409
1478
  return source;
@@ -1419,10 +1488,6 @@
1419
1488
  function isInBrowser() {
1420
1489
  return typeof document !== "undefined" && typeof window !== "undefined";
1421
1490
  }
1422
- /**
1423
- * Fixes a weird bug in analytics URL where path
1424
- * of https://test.com becomes //test.com
1425
- */
1426
1491
  function fixPath(path) {
1427
1492
  if (path.indexOf("//") === 0 && path.lastIndexOf("/") === 1) {
1428
1493
  return "/";
@@ -1430,16 +1495,30 @@
1430
1495
  return path;
1431
1496
  }
1432
1497
  const hashRegex = /#.*$/;
1433
- /**
1434
- * for compatibility with path produced by analytics.js
1435
- * @param url
1436
- */
1437
1498
  function urlPath(url) {
1438
1499
  const regex = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g;
1439
1500
  const matches = regex.exec(url);
1440
1501
  const pathMatch = matches && matches[3] ? matches[3].split("?")[0].replace(hashRegex, "") : "";
1441
1502
  return "/" + pathMatch;
1442
1503
  }
1504
+ function canonicalUrl() {
1505
+ if (!isInBrowser())
1506
+ return;
1507
+ const tags = document.getElementsByTagName("link");
1508
+ for (var i = 0, tag; (tag = tags[i]); i++) {
1509
+ if (tag.getAttribute("rel") === "canonical") {
1510
+ return tag.getAttribute("href");
1511
+ }
1512
+ }
1513
+ }
1514
+ function analyticsJsUrl() {
1515
+ if (!isInBrowser())
1516
+ return;
1517
+ const canonical = canonicalUrl();
1518
+ if (!canonical)
1519
+ return window.location.href.replace(hashRegex, "");
1520
+ return canonical.match(/\?/) ? canonical : canonical + window.location.search;
1521
+ }
1443
1522
  function adjustPayload(payload, config, storage, s2s) {
1444
1523
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
1445
1524
  const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));
@@ -1448,7 +1527,10 @@
1448
1527
  const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
1449
1528
  const properties = payload.properties || {};
1450
1529
  if (payload.type === "page" && (properties.url || url)) {
1451
- const targetUrl = properties.url || url;
1530
+ let targetUrl = url || properties.url;
1531
+ if (properties.url && properties.url !== analyticsJsUrl()) {
1532
+ targetUrl = properties.url;
1533
+ }
1452
1534
  properties.url = targetUrl.replace(hashRegex, "");
1453
1535
  properties.path = fixPath(urlPath(targetUrl));
1454
1536
  }
@@ -1504,15 +1586,18 @@
1504
1586
  return __awaiter$1(this, void 0, void 0, function* () {
1505
1587
  const promises = [];
1506
1588
  for (const destination of destinations) {
1507
- let newEvents = [originalEvent];
1589
+ let newEvents = [];
1508
1590
  if (destination.newEvents) {
1509
1591
  try {
1510
- newEvents = destination.newEvents.map(e => e === "same" ? originalEvent : isDiff(e) ? diff.patch(originalEvent, e.__diff) : e);
1592
+ newEvents = destination.newEvents.map(e => e === "same" ? deepCopy(originalEvent) : isDiff(e) ? diff.patch(deepCopy(originalEvent), e.__diff) : e);
1511
1593
  }
1512
1594
  catch (e) {
1513
1595
  console.error(`[JITSU] Error applying '${destination.id}' changes to event: ${e === null || e === void 0 ? void 0 : e.message}`, e);
1514
1596
  }
1515
1597
  }
1598
+ else {
1599
+ newEvents = [deepCopy(originalEvent)];
1600
+ }
1516
1601
  const credentials = Object.assign(Object.assign({}, destination.credentials), destination.options);
1517
1602
  if (destination.deviceOptions.type === "internal-plugin") {
1518
1603
  const plugin = internalDestinationPlugins[destination.deviceOptions.name];
@@ -1604,7 +1689,6 @@
1604
1689
  }
1605
1690
  else if (configuredHandler === "rethrow") {
1606
1691
  return (msg, ...args) => {
1607
- //ignore args, not clear what to do with them
1608
1692
  throw new Error(msg);
1609
1693
  };
1610
1694
  }
@@ -1627,7 +1711,6 @@
1627
1711
  const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;
1628
1712
  const fetch = jitsuConfig.fetch || globalThis.fetch;
1629
1713
  if (!fetch) {
1630
- //don't run it through error handler since error is critical and should be addressed
1631
1714
  throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
1632
1715
  }
1633
1716
  const abortController = jitsuConfig.fetchTimeoutMs ? new AbortController() : undefined;
@@ -1683,7 +1766,6 @@
1683
1766
  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);
1684
1767
  }
1685
1768
  else {
1686
- //double protection, ingest should not return destinations in s2s mode
1687
1769
  if (isInBrowser()) {
1688
1770
  if (jitsuConfig.debug) {
1689
1771
  console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));
@@ -1696,23 +1778,14 @@
1696
1778
  });
1697
1779
  }
1698
1780
  const controllingTraits = ["$doNotSend"];
1699
- /**
1700
- * Remove all members of traits that controls identify/group behavior (see analytics.d.ts), and should not be recorded. Returns
1701
- * copy of the object with these members removed.
1702
- *
1703
- * Do not modify traits object, but creates one
1704
- * @param traits
1705
- */
1706
1781
  function stripControllingTraits(traits) {
1707
1782
  const res = Object.assign({}, traits);
1708
- // see Traits definition in analytics.d.ts. We cannot define const here, so here's a little code duplication
1709
1783
  for (const key of controllingTraits) {
1710
1784
  delete res[key];
1711
1785
  }
1712
1786
  return res;
1713
1787
  }
1714
1788
  const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
1715
- // just to make sure that all undefined values are replaced with defaultConfig values
1716
1789
  mergeConfig(jitsuOptions, jitsuOptions);
1717
1790
  return {
1718
1791
  name: "jitsu",
@@ -1774,7 +1847,6 @@
1774
1847
  if (((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = config.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
1775
1848
  return;
1776
1849
  }
1777
- // Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.
1778
1850
  storage.setItem("__user_id", payload.userId);
1779
1851
  const doNotSend = (_c = payload.traits) === null || _c === void 0 ? void 0 : _c.$doNotSend;
1780
1852
  if (payload.traits && typeof payload.traits === "object") {
@@ -1794,7 +1866,6 @@
1794
1866
  }
1795
1867
  },
1796
1868
  methods: {
1797
- //analytics doesn't support group as a base method, so we need to add it manually
1798
1869
  configure(newOptions) {
1799
1870
  var _a, _b, _c, _d;
1800
1871
  const idsWasDisabled = ((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.dontSend);
@@ -1820,7 +1891,6 @@
1820
1891
  return;
1821
1892
  }
1822
1893
  if (typeof groupId === "number") {
1823
- //fix potential issues with group id being used incorrectly
1824
1894
  groupId = groupId + "";
1825
1895
  }
1826
1896
  const instance = this.instance;
@@ -1910,9 +1980,6 @@
1910
1980
  function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1911
1981
  var _a, _b, _c;
1912
1982
  const storageCache = {};
1913
- // AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
1914
- // 'page' call will load traits from storage before 'identify' call had a change to save them.
1915
- // to avoid that we use in-memory cache for storage
1916
1983
  const cachingStorageWrapper = (persistentStorage) => ({
1917
1984
  setItem(key, val) {
1918
1985
  var _a, _b;
@@ -1965,24 +2032,17 @@
1965
2032
  }
1966
2033
  }, identify: (...args) => {
1967
2034
  if (args[0] && typeof args[0] !== "object" && typeof args[0] !== "string") {
1968
- //fix the quirk of analytics.js: if you pass number as first argument, it will be converted to string
1969
2035
  args[0] = args[0] + "";
1970
2036
  }
1971
- //analytics.js sets userId and traits asynchronously, so if
1972
- //we want them to be available immediately after identify call in subsequent page() calls,
1973
- //we need to put them into storage manually
1974
2037
  const storage = analytics.storage;
1975
2038
  const storageWrapper = cachingStorageWrapper(storage);
1976
2039
  if (typeof args[0] === "string") {
1977
- //first argument is user id
1978
2040
  storageWrapper.setItem("__user_id", args[0]);
1979
2041
  }
1980
2042
  else if (typeof args[0] === "object") {
1981
- //first argument is traits
1982
2043
  storageWrapper.setItem("__user_traits", args[0]);
1983
2044
  }
1984
2045
  if (args.length === 2 && typeof args[1] === "object") {
1985
- //first argument is user id, second is traits
1986
2046
  storageWrapper.setItem("__user_traits", args[1]);
1987
2047
  }
1988
2048
  return analytics.identify(...args);
@@ -2009,8 +2069,6 @@
2009
2069
  if (opts.debug) {
2010
2070
  console.log("[JITSU DEBUG] Setting anonymous id to " + id);
2011
2071
  }
2012
- //Workaround for analytics.js bug. Underlying setAnonymousId doesn't set the id immediately,
2013
- //so we got to it manually here. See https://github.com/jitsucom/jitsu/issues/1060
2014
2072
  storage.setItem("__anon_id", id);
2015
2073
  const userState = analytics.user();
2016
2074
  if (userState) {
@@ -2054,8 +2112,6 @@
2054
2112
  results.push(yield plugin["group"](groupId, traits, options, callback));
2055
2113
  }
2056
2114
  }
2057
- //It's incorrect at many levels. First, it's not a dispatched event. Second, we take a first result
2058
- //However, since returned values are used for debugging purposes only, it's ok
2059
2115
  return results[0];
2060
2116
  });
2061
2117
  },
@@ -2067,10 +2123,6 @@
2067
2123
  }
2068
2124
  return a;
2069
2125
  }
2070
- /**
2071
- * Fix common mistakes in jitsu configuration
2072
- * @param opts
2073
- */
2074
2126
  function fixOptions(opts) {
2075
2127
  var _a, _b;
2076
2128
  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
@@ -2082,28 +2134,6 @@
2082
2134
  const inBrowser = isInBrowser();
2083
2135
  const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));
2084
2136
  return createUnderlyingAnalyticsInstance(opts, rt);
2085
- // if (inBrowser) {
2086
- // const fetch = opts.fetch || globalThis.fetch;
2087
- // if (!fetch) {
2088
- // throw new Error(
2089
- // "Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope"
2090
- // );
2091
- // }
2092
- // const url = `${opts.host}/api/s/cfg`;
2093
- // const authHeader = {};
2094
- // const debugHeader = opts.debug ? { "X-Enable-Debug": "true" } : {};
2095
- // fetch(url)
2096
- // .then(res => res.json())
2097
- // .then(res => {
2098
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt, []));
2099
- // })
2100
- // .catch(e => {
2101
- // console.warn(`[JITSU] error getting device-destinations from ${url}`, e);
2102
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
2103
- // });
2104
- // } else {
2105
- // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
2106
- // }
2107
2137
  }
2108
2138
 
2109
2139
  function snakeToCamel(s) {
@@ -2210,12 +2240,7 @@
2210
2240
  }
2211
2241
  }
2212
2242
  window[JITSU_V2_ID] = jitsu;
2213
- /**
2214
- * New callback based queue, see below
2215
- */
2216
- //make a copy of the queue
2217
2243
  const callbackQueue = window[JITSU_V2_ID + "Q"] && window[JITSU_V2_ID + "Q"].length ? [...window[JITSU_V2_ID + "Q"]] : [];
2218
- //replace push with a function that calls callback immediately
2219
2244
  window[JITSU_V2_ID + "Q"] = {
2220
2245
  push: (callback) => {
2221
2246
  if (typeof callback === "function") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jitsu/js",
3
- "version": "1.10.3",
3
+ "version": "1.11.0-canary.20251124.3ff4617",
4
4
  "description": "",
5
5
  "author": "Jitsu Dev Team <dev@jitsu.com>",
6
6
  "main": "dist/jitsu.cjs.js",
@@ -14,8 +14,20 @@
14
14
  },
15
15
  "license": "MIT",
16
16
  "private": false,
17
+ "scripts": {
18
+ "clean": "rm -rf ./dist ./compiled",
19
+ "test:node": "vitest run",
20
+ "test:playwright": "playwright test ./__tests__/playwright",
21
+ "test": "pnpm run test:node",
22
+ "//typecheck": "Build is required because types are generated during build",
23
+ "typecheck": "pnpm run build",
24
+ "build": "pnpm run clean && tsc -p . && rollup -c",
25
+ "//build-deps": "Required by turbo ^build-deps - builds dist/ for workspace packages that import this",
26
+ "build-deps": "pnpm run build"
27
+ },
17
28
  "devDependencies": {
18
- "tslib": "^2.6.3",
29
+ "@jitsu/common-config": "workspace:*",
30
+ "tslib": "catalog:",
19
31
  "@playwright/test": "1.39.0",
20
32
  "@rollup/plugin-commonjs": "^28.0.2",
21
33
  "rollup-plugin-dts": "^6.2.1",
@@ -26,33 +38,24 @@
26
38
  "@rollup/plugin-terser": "^0.1.0",
27
39
  "@segment/analytics-next": "^1.75.0",
28
40
  "@types/chalk": "^2.2.0",
29
- "@types/jest": "^29.2.0",
30
- "@types/node": "^18.15.3",
41
+ "@types/node": "catalog:",
42
+ "@vitest/ui": "catalog:",
31
43
  "chalk": "^4.1.2",
32
44
  "cookie-parser": "^1.4.7",
33
45
  "ejs": "^3.1.8",
34
46
  "express": "^4.21.2",
35
- "jest": "^29.2.2",
36
47
  "node-fetch-commonjs": "^3.3.2",
37
48
  "node-forge": "^1.3.1",
38
49
  "raw-loader": "^4.0.2",
39
50
  "rollup": "^3.29.5",
40
- "ts-jest": "29.0.5",
41
- "typescript": "^5.6.3",
42
- "jsondiffpatch": "1.10.3"
51
+ "typescript": "catalog:",
52
+ "vitest": "catalog:",
53
+ "jsondiffpatch": "workspace:*"
43
54
  },
44
55
  "peerDependencies": {
45
- "@jitsu/protocols": "1.10.3"
56
+ "@jitsu/protocols": "workspace:*"
46
57
  },
47
58
  "dependencies": {
48
59
  "analytics": "0.8.9"
49
- },
50
- "scripts": {
51
- "clean": "rm -rf ./dist ./compiled",
52
- "test:node": "jest",
53
- "test:playwright": "playwright test ./__tests__/playwright",
54
- "test": "pnpm run test:node && pnpm run test:playwright",
55
- "compile": "tsc -p .",
56
- "build": "pnpm run clean && pnpm run compile && rollup -c"
57
60
  }
58
- }
61
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 Jitsu Labs, Inc
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.