@jitsu/js 1.7.2 → 1.9.0-canary.548.20240108170646

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
@@ -108,7 +108,7 @@ function loadScript(src, attributes) {
108
108
  });
109
109
  }
110
110
 
111
- var __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
111
+ var __awaiter$5 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
112
112
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
113
113
  return new (P || (P = Promise))(function (resolve, reject) {
114
114
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -120,7 +120,7 @@ var __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _argu
120
120
  const tagPlugin = {
121
121
  id: "tag",
122
122
  handle(config, payload) {
123
- return __awaiter$4(this, void 0, void 0, function* () {
123
+ return __awaiter$5(this, void 0, void 0, function* () {
124
124
  if (!applyFilters(payload, config)) {
125
125
  return;
126
126
  }
@@ -189,7 +189,7 @@ function replaceMacro(code, event) {
189
189
  return code.replace(/{{\s*event\s*}}/g, JSON.stringify(event));
190
190
  }
191
191
 
192
- var __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
192
+ var __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
193
193
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
194
194
  return new (P || (P = Promise))(function (resolve, reject) {
195
195
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -201,7 +201,7 @@ var __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _argu
201
201
  const logrocketPlugin = {
202
202
  id: "logrocket",
203
203
  handle(config, payload) {
204
- return __awaiter$3(this, void 0, void 0, function* () {
204
+ return __awaiter$4(this, void 0, void 0, function* () {
205
205
  if (!applyFilters(payload, config)) {
206
206
  return;
207
207
  }
@@ -243,7 +243,7 @@ function flushLogRocketQueue(lr) {
243
243
  }
244
244
  }
245
245
  function initLogrocketIfNeeded(appId) {
246
- return __awaiter$3(this, void 0, void 0, function* () {
246
+ return __awaiter$4(this, void 0, void 0, function* () {
247
247
  if (getLogRocketState() !== "fresh") {
248
248
  return;
249
249
  }
@@ -269,7 +269,7 @@ function initLogrocketIfNeeded(appId) {
269
269
  });
270
270
  }
271
271
 
272
- var __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
272
+ var __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
273
273
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
274
274
  return new (P || (P = Promise))(function (resolve, reject) {
275
275
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -283,7 +283,7 @@ const gtmPlugin = {
283
283
  id: "gtm",
284
284
  handle(config, payload) {
285
285
  var _a, _b;
286
- return __awaiter$2(this, void 0, void 0, function* () {
286
+ return __awaiter$3(this, void 0, void 0, function* () {
287
287
  if (!applyFilters(payload, config)) {
288
288
  return;
289
289
  }
@@ -320,7 +320,7 @@ function setGtmState(s) {
320
320
  window["__jitsuGtmState"] = s;
321
321
  }
322
322
  function initGtmIfNeeded(config, payload) {
323
- return __awaiter$2(this, void 0, void 0, function* () {
323
+ return __awaiter$3(this, void 0, void 0, function* () {
324
324
  if (getGtmState() !== "fresh") {
325
325
  return;
326
326
  }
@@ -354,7 +354,7 @@ function initGtmIfNeeded(config, payload) {
354
354
  });
355
355
  }
356
356
 
357
- var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
357
+ var __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
358
358
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
359
359
  return new (P || (P = Promise))(function (resolve, reject) {
360
360
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -368,7 +368,7 @@ const ga4Plugin = {
368
368
  id: "ga4-tag",
369
369
  handle(config, payload) {
370
370
  var _a, _b;
371
- return __awaiter$1(this, void 0, void 0, function* () {
371
+ return __awaiter$2(this, void 0, void 0, function* () {
372
372
  if (!applyFilters(payload, config)) {
373
373
  return;
374
374
  }
@@ -416,7 +416,7 @@ function setGa4State(s) {
416
416
  window["__jitsuGa4State"] = s;
417
417
  }
418
418
  function initGa4IfNeeded(config, payload) {
419
- return __awaiter$1(this, void 0, void 0, function* () {
419
+ return __awaiter$2(this, void 0, void 0, function* () {
420
420
  if (getGa4State() !== "fresh") {
421
421
  return;
422
422
  }
@@ -482,8 +482,9 @@ const internalDestinationPlugins = {
482
482
  [logrocketPlugin.id]: logrocketPlugin,
483
483
  };
484
484
 
485
- var name = "@jitsu/js";
486
- var version = "0.0.0";
485
+ //import pkg from "../package.json";
486
+ const jitsuVersion = "0.0.0";
487
+ const jitsuLibraryName = "@jitsu/js";
487
488
 
488
489
  const publicSuffixes = "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(",");
489
490
  //convert to Map
@@ -510,7 +511,7 @@ function getTopLevelDomain(hostname) {
510
511
  }
511
512
 
512
513
  /* global analytics */
513
- var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
514
+ var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
514
515
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
515
516
  return new (P || (P = Promise))(function (resolve, reject) {
516
517
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -529,6 +530,7 @@ const defaultConfig = {
529
530
  echoEvents: false,
530
531
  cookieDomain: undefined,
531
532
  runtime: undefined,
533
+ s2s: undefined,
532
534
  };
533
535
  const parseQuery = (qs) => {
534
536
  if (!qs) {
@@ -561,11 +563,21 @@ function safeCall(f, defaultVal) {
561
563
  }
562
564
  }
563
565
  function restoreTraits(storage) {
564
- const val = storage.getItem("__user_traits");
566
+ let val = storage.getItem("__user_traits");
565
567
  if (typeof val === "string") {
566
- return safeCall(() => JSON.parse(val), {});
568
+ val = safeCall(() => JSON.parse(val), {});
569
+ }
570
+ if (typeof val !== "object" || val === null) {
571
+ val = {};
567
572
  }
568
- return val;
573
+ let groupVal = storage.getItem("__group_traits");
574
+ if (typeof groupVal === "string") {
575
+ groupVal = safeCall(() => JSON.parse(groupVal), {});
576
+ }
577
+ if (typeof groupVal !== "object" || groupVal === null) {
578
+ groupVal = {};
579
+ }
580
+ return Object.assign(Object.assign({}, (groupVal || {})), (val || {}));
569
581
  }
570
582
  function getCookie(name) {
571
583
  const value = `; ${document.cookie}`;
@@ -767,20 +779,34 @@ function deepMerge(target, source) {
767
779
  function isInBrowser() {
768
780
  return typeof document !== "undefined" && typeof window !== "undefined";
769
781
  }
770
- function adjustPayload(payload, config, storage) {
782
+ /**
783
+ * Fixes a weird bug in analytics URL where path
784
+ * of https://test.com becomes //test.com
785
+ */
786
+ function fixPath(path) {
787
+ if (path.indexOf("//") === 0 && path.lastIndexOf("/") === 1) {
788
+ return "/";
789
+ }
790
+ return path;
791
+ }
792
+ function adjustPayload(payload, config, storage, s2s) {
771
793
  var _a, _b;
772
794
  const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));
773
795
  const url = runtime.pageUrl();
774
796
  const parsedUrl = safeCall(() => new URL(url), undefined);
775
797
  const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
776
798
  const properties = payload.properties || {};
799
+ if (properties.path) {
800
+ properties.path = fixPath(properties.path);
801
+ }
777
802
  const customContext = ((_a = payload.properties) === null || _a === void 0 ? void 0 : _a.context) || {};
778
803
  (_b = payload.properties) === null || _b === void 0 ? true : delete _b.context;
779
804
  const referrer = runtime.referrer();
780
805
  const context = {
781
806
  library: {
782
- name: name,
783
- version: version,
807
+ name: jitsuLibraryName,
808
+ version: jitsuVersion,
809
+ env: s2s ? "node" : "browser",
784
810
  },
785
811
  userAgent: runtime.userAgent(),
786
812
  locale: runtime.language(),
@@ -799,13 +825,13 @@ function adjustPayload(payload, config, storage) {
799
825
  clientIds: Object.assign({ fbc: runtime.getCookie("_fbc"), fbp: runtime.getCookie("_fbp") }, getGa4Ids(runtime)),
800
826
  campaign: parseUtms(query),
801
827
  };
802
- const withContext = Object.assign(Object.assign({}, payload), { timestamp: new Date().toISOString(), sentAt: new Date().toISOString(), messageId: randomId(properties.path || (parsedUrl && parsedUrl.pathname)), writeKey: maskWriteKey(config.writeKey), context: deepMerge(context, customContext) });
828
+ const withContext = Object.assign(Object.assign({}, payload), { timestamp: new Date().toISOString(), sentAt: new Date().toISOString(), messageId: randomId(properties.path || (parsedUrl && parsedUrl.pathname)), writeKey: maskWriteKey(config.writeKey), groupId: storage.getItem("__group_id"), context: deepMerge(context, customContext) });
803
829
  delete withContext.meta;
804
830
  delete withContext.options;
805
831
  return withContext;
806
832
  }
807
833
  function processDestinations(destinations, method, originalEvent, debug, analyticsInstance) {
808
- return __awaiter(this, void 0, void 0, function* () {
834
+ return __awaiter$1(this, void 0, void 0, function* () {
809
835
  const promises = [];
810
836
  for (const destination of destinations) {
811
837
  let newEvents = [originalEvent];
@@ -897,86 +923,69 @@ function maskWriteKey(writeKey) {
897
923
  return writeKey;
898
924
  }
899
925
  function send(method, payload, jitsuConfig, instance, store) {
900
- if (jitsuConfig.echoEvents) {
901
- console.log(`[JITSU DEBUG] sending '${method}' event:`, payload);
902
- return;
903
- }
904
- const url = `${jitsuConfig.host}/api/s/${method}`;
905
- const fetch = jitsuConfig.fetch || globalThis.fetch;
906
- if (!fetch) {
907
- throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
908
- }
909
- const debugHeader = jitsuConfig.debug ? { "X-Enable-Debug": "true" } : {};
910
- // if (jitsuConfig.debug) {
911
- // console.log(`[JITSU] Sending event to ${url}: `, JSON.stringify(payload, null, 2));
912
- // }
913
- const adjustedPayload = adjustPayload(payload, jitsuConfig, store);
914
- const authHeader = jitsuConfig.writeKey ? { "X-Write-Key": jitsuConfig.writeKey } : {};
915
- return fetch(url, {
916
- method: "POST",
917
- headers: Object.assign(Object.assign({ "Content-Type": "application/json" }, authHeader), debugHeader),
918
- body: JSON.stringify(adjustedPayload),
919
- })
920
- .then(res => {
921
- if (jitsuConfig.debug) {
922
- console.log(`[JITSU] ${url} replied ${res.status}. Original payload: `, JSON.stringify(adjustedPayload, null, 2));
926
+ return __awaiter$1(this, void 0, void 0, function* () {
927
+ if (jitsuConfig.echoEvents) {
928
+ console.log(`[JITSU DEBUG] sending '${method}' event:`, payload);
929
+ return;
923
930
  }
924
- if (res.ok) {
925
- return res.text();
931
+ const s2s = jitsuConfig.s2s === undefined ? !isInBrowser() : jitsuConfig.s2s;
932
+ const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;
933
+ const fetch = jitsuConfig.fetch || globalThis.fetch;
934
+ if (!fetch) {
935
+ throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
926
936
  }
927
- else {
928
- return Promise.reject(res.text());
937
+ const debugHeader = jitsuConfig.debug ? { "X-Enable-Debug": "true" } : {};
938
+ // if (jitsuConfig.debug) {
939
+ // console.log(`[JITSU] Sending event to ${url}: `, JSON.stringify(payload, null, 2));
940
+ // }
941
+ const adjustedPayload = adjustPayload(payload, jitsuConfig, store, s2s);
942
+ const authHeader = jitsuConfig.writeKey ? { "X-Write-Key": jitsuConfig.writeKey } : {};
943
+ let fetchResult;
944
+ try {
945
+ fetchResult = yield fetch(url, {
946
+ method: "POST",
947
+ headers: Object.assign(Object.assign({ "Content-Type": "application/json" }, authHeader), debugHeader),
948
+ body: JSON.stringify(adjustedPayload),
949
+ });
950
+ }
951
+ catch (e) {
952
+ throw new Error(`Calling ${url} failed: ${e.message}`);
953
+ }
954
+ let responseText;
955
+ try {
956
+ responseText = yield fetchResult.text();
929
957
  }
930
- })
931
- .then(responseText => {
932
- let response;
958
+ catch (e) {
959
+ console.warn(`Can't read response text from ${url} (status - ${fetchResult.status} ${fetchResult.statusText}): ${e === null || e === void 0 ? void 0 : e.message}`);
960
+ }
961
+ if (jitsuConfig.debug) {
962
+ console.log(`[JITSU DEBUG] ${url} replied ${fetchResult.status}: ${responseText}. Original payload:\n${JSON.stringify(adjustedPayload, null, 2)}`);
963
+ }
964
+ if (!fetchResult.ok) {
965
+ throw new Error(`Jitsu ${url} replied ${fetchResult.status} - ${fetchResult.statusText}: ${responseText}`);
966
+ }
967
+ let responseJson;
933
968
  try {
934
- response = JSON.parse(responseText);
969
+ responseJson = JSON.parse(responseText);
935
970
  }
936
971
  catch (e) {
937
972
  return Promise.reject(`Can't parse JSON: ${responseText}: ${e === null || e === void 0 ? void 0 : e.message}`);
938
973
  }
939
- if (response.destinations) {
940
- if (jitsuConfig.debug) {
941
- console.log(`[JITSU] Processing device destinations: `, JSON.stringify(response.destinations, null, 2));
974
+ if (responseJson.destinations && responseJson.destinations.length > 0) {
975
+ if (jitsuConfig.s2s) {
976
+ 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);
977
+ }
978
+ else {
979
+ if (jitsuConfig.debug) {
980
+ console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));
981
+ }
982
+ return processDestinations(responseJson.destinations, method, adjustedPayload, !!jitsuConfig.debug, instance);
942
983
  }
943
- return processDestinations(response.destinations, method, adjustedPayload, !!jitsuConfig.debug, instance);
944
- }
945
- })
946
- .catch(err => {
947
- if (jitsuConfig.debug) {
948
- console.error(`Jitsu ${url} failed: `, err);
949
984
  }
985
+ return adjustedPayload;
950
986
  });
951
987
  }
952
988
  const jitsuAnalyticsPlugin = (pluginConfig = {}) => {
953
- const storageCache = {};
954
- // AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
955
- // 'page' call will load traits from storage before 'identify' call had a change to save them.
956
- // to avoid that we use in-memory cache for storage
957
- const cachingStorageWrapper = (persistentStorage) => ({
958
- setItem(key, val) {
959
- if (pluginConfig.debug) {
960
- console.log(`[JITSU DEBUG] Caching storage setItem: ${key}=${val}`);
961
- }
962
- storageCache[key] = val;
963
- persistentStorage.setItem(key, val);
964
- },
965
- getItem(key) {
966
- const value = storageCache[key] || persistentStorage.getItem(key);
967
- if (pluginConfig.debug) {
968
- console.log(`[JITSU DEBUG] Caching storage getItem: ${key}=${value}. Evicted from cache: ${!storageCache[key]}`);
969
- }
970
- return value;
971
- },
972
- removeItem(key) {
973
- if (pluginConfig.debug) {
974
- console.log(`[JITSU DEBUG] Caching storage removeItem: ${key}`);
975
- }
976
- delete storageCache[key];
977
- persistentStorage.removeItem(key);
978
- },
979
- });
980
989
  const instanceConfig = Object.assign(Object.assign({}, defaultConfig), pluginConfig);
981
990
  return {
982
991
  name: "jitsu",
@@ -993,30 +1002,46 @@ const jitsuAnalyticsPlugin = (pluginConfig = {}) => {
993
1002
  },
994
1003
  page: args => {
995
1004
  const { payload, config, instance } = args;
996
- return send("page", payload, config, instance, cachingStorageWrapper(instance.storage));
1005
+ return send("page", payload, config, instance, pluginConfig.storageWrapper ? pluginConfig.storageWrapper(instance.storage) : instance.storage);
997
1006
  },
998
1007
  track: args => {
999
1008
  const { payload, config, instance } = args;
1000
- return send("track", payload, config, instance, cachingStorageWrapper(instance.storage));
1009
+ return send("track", payload, config, instance, pluginConfig.storageWrapper ? pluginConfig.storageWrapper(instance.storage) : instance.storage);
1001
1010
  },
1002
1011
  identify: args => {
1003
1012
  const { payload, config, instance } = args;
1004
1013
  // Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.
1005
- storageCache["__user_traits"] = payload.traits;
1006
- return send("identify", payload, config, instance, cachingStorageWrapper(instance.storage));
1014
+ const storage = pluginConfig.storageWrapper ? pluginConfig.storageWrapper(instance.storage) : instance.storage;
1015
+ storage.setItem("__user_id", payload.userId);
1016
+ if (payload.traits && typeof payload.traits === "object") {
1017
+ storage.setItem("__user_traits", payload.traits);
1018
+ }
1019
+ return send("identify", payload, config, instance, storage);
1007
1020
  },
1008
1021
  reset: args => {
1009
1022
  //clear storage cache
1010
- Object.keys(storageCache).forEach(key => delete storageCache[key]);
1023
+ if (pluginConfig.storageWrapper) {
1024
+ pluginConfig.storageWrapper(args.instance.storage).reset();
1025
+ }
1011
1026
  },
1012
1027
  methods: {
1013
1028
  //analytics doesn't support group as a base method, so we need to add it manually
1014
1029
  group(groupId, traits, options, callback) {
1030
+ if (typeof groupId === "number") {
1031
+ //fix potential issues with group id being used incorrectly
1032
+ groupId = groupId + "";
1033
+ }
1015
1034
  const analyticsInstance = this.instance;
1016
- const cacheWrap = cachingStorageWrapper(analyticsInstance.storage);
1035
+ const cacheWrap = pluginConfig.storageWrapper
1036
+ ? pluginConfig.storageWrapper(analyticsInstance.storage)
1037
+ : analyticsInstance.storage;
1017
1038
  const user = analyticsInstance.user();
1018
1039
  const userId = (options === null || options === void 0 ? void 0 : options.userId) || (user === null || user === void 0 ? void 0 : user.userId);
1019
1040
  const anonymousId = (options === null || options === void 0 ? void 0 : options.anonymousId) || (user === null || user === void 0 ? void 0 : user.anonymousId) || cacheWrap.getItem("__anon_id");
1041
+ cacheWrap.setItem("__group_id", groupId);
1042
+ if (traits && typeof traits === "object") {
1043
+ cacheWrap.setItem("__group_traits", traits);
1044
+ }
1020
1045
  return send("group", Object.assign(Object.assign({ type: "group", groupId, traits }, (anonymousId ? { anonymousId } : {})), (userId ? { userId } : {})), instanceConfig, analyticsInstance, cacheWrap);
1021
1046
  },
1022
1047
  },
@@ -1044,6 +1069,15 @@ function hash(str, seed = 0) {
1044
1069
  return 4294967296 * (2097151 & h2) + (h1 >>> 0);
1045
1070
  }
1046
1071
 
1072
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1073
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1074
+ return new (P || (P = Promise))(function (resolve, reject) {
1075
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1076
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1077
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1078
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1079
+ });
1080
+ };
1047
1081
  function parse(input) {
1048
1082
  let value = input;
1049
1083
  if ((input === null || input === void 0 ? void 0 : input.indexOf("%7B%22")) === 0) {
@@ -1078,22 +1112,75 @@ const emptyAnalytics = {
1078
1112
  };
1079
1113
  function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1080
1114
  const storage = rt.store();
1115
+ const storageCache = {};
1116
+ // AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
1117
+ // 'page' call will load traits from storage before 'identify' call had a change to save them.
1118
+ // to avoid that we use in-memory cache for storage
1119
+ const cachingStorageWrapper = (persistentStorage) => ({
1120
+ setItem(key, val) {
1121
+ if (opts.debug) {
1122
+ console.log(`[JITSU DEBUG] Caching storage setItem: ${key}=${val}`);
1123
+ }
1124
+ storageCache[key] = val;
1125
+ persistentStorage.setItem(key, val);
1126
+ },
1127
+ getItem(key) {
1128
+ const value = storageCache[key] || persistentStorage.getItem(key);
1129
+ if (opts.debug) {
1130
+ console.log(`[JITSU DEBUG] Caching storage getItem: ${key}=${value}. Evicted from cache: ${!storageCache[key]}`);
1131
+ }
1132
+ return value;
1133
+ },
1134
+ reset() {
1135
+ for (const key of [...Object.keys(storageCache)]) {
1136
+ storage.removeItem(key);
1137
+ delete storageCache[key];
1138
+ }
1139
+ },
1140
+ removeItem(key) {
1141
+ if (opts.debug) {
1142
+ console.log(`[JITSU DEBUG] Caching storage removeItem: ${key}`);
1143
+ }
1144
+ delete storageCache[key];
1145
+ persistentStorage.removeItem(key);
1146
+ },
1147
+ });
1081
1148
  const analytics = analyticsLib({
1082
- app: "test",
1083
1149
  debug: !!opts.debug,
1084
1150
  storage,
1085
- plugins: [jitsuAnalyticsPlugin(opts), ...plugins],
1151
+ plugins: [jitsuAnalyticsPlugin(Object.assign(Object.assign({}, opts), { storageWrapper: cachingStorageWrapper })), ...plugins],
1086
1152
  });
1087
- const originalPage = analytics.page;
1088
- analytics.page = (...args) => {
1089
- if (args.length === 2 && typeof args[0] === "string" && typeof args[1] === "object") {
1090
- return originalPage(Object.assign({ name: args[0] }, args[1]));
1091
- }
1092
- else {
1093
- return originalPage(...args);
1094
- }
1095
- };
1096
- return Object.assign(Object.assign({}, analytics), { setAnonymousId: (id) => {
1153
+ return Object.assign(Object.assign({}, analytics), { page: (...args) => {
1154
+ if (args.length === 2 && typeof args[0] === "string" && typeof args[1] === "object") {
1155
+ return analytics.page(Object.assign({ name: args[0] }, args[1]));
1156
+ }
1157
+ else {
1158
+ return analytics.page(...args);
1159
+ }
1160
+ }, identify: (...args) => {
1161
+ if (args[0] && typeof args[0] !== "object" && typeof args[0] !== "string") {
1162
+ //fix the quirk of analytics.js: if you pass number as first argument, it will be converted to string
1163
+ args[0] = args[0] + "";
1164
+ }
1165
+ //analytics.js sets userId and traits asynchronously, so if
1166
+ //we want them to be available immediately after identify call in subsequent page() calls,
1167
+ //we need to put them into storage manually
1168
+ const storage = analytics.storage;
1169
+ const storageWrapper = cachingStorageWrapper(storage);
1170
+ if (typeof args[0] === "string") {
1171
+ //first argument is user id
1172
+ storageWrapper.setItem("__user_id", args[0]);
1173
+ }
1174
+ else if (typeof args[0] === "object") {
1175
+ //first argument is traits
1176
+ storageWrapper.setItem("__user_traits", args[0]);
1177
+ }
1178
+ if (args.length === 2 && typeof args[1] === "object") {
1179
+ //first argument is user id, second is traits
1180
+ storageWrapper.setItem("__user_traits", args[1]);
1181
+ }
1182
+ return analytics.identify(...args);
1183
+ }, setAnonymousId: (id) => {
1097
1184
  if (opts.debug) {
1098
1185
  console.log("[JITSU DEBUG] Setting anonymous id to " + id);
1099
1186
  //Workaround for analytics.js bug. Underlying setAnonymousId doesn't work set the id immediately,
@@ -1106,12 +1193,17 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
1106
1193
  analytics.setAnonymousId(id);
1107
1194
  }
1108
1195
  }, group(groupId, traits, options, callback) {
1109
- for (const plugin of Object.values(analytics.plugins)) {
1110
- if (plugin["group"]) {
1111
- plugin["group"](groupId, traits, options, callback);
1196
+ return __awaiter(this, void 0, void 0, function* () {
1197
+ const results = [];
1198
+ for (const plugin of Object.values(analytics.plugins)) {
1199
+ if (plugin["group"]) {
1200
+ results.push(yield plugin["group"](groupId, traits, options, callback));
1201
+ }
1112
1202
  }
1113
- }
1114
- return Promise.resolve({});
1203
+ //It's incorrect at many levels. First, it's not a dispatched event. Second, we take a first result
1204
+ //However, since returned values are used for debugging purposes only, it's ok
1205
+ return results[0];
1206
+ });
1115
1207
  } });
1116
1208
  }
1117
1209
  function jitsuAnalytics(opts) {
package/dist/version.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- import { name as jitsuLibraryName, version as jitsuVersion } from "../package.json";
1
+ declare const jitsuVersion = "0.0.0";
2
+ declare const jitsuLibraryName = "@jitsu/js";
2
3
  export { jitsuVersion, jitsuLibraryName };