@jitsu/js 1.10.4 → 1.11.0-canary.20251124.3ff4617
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jitsu-no-ext.cjs.js +78 -85
- package/dist/jitsu-no-ext.es.js +78 -85
- package/dist/jitsu.cjs.js +79 -100
- package/dist/jitsu.es.js +79 -100
- package/dist/web/p.js.txt +79 -105
- package/package.json +21 -18
- package/LICENSE +0 -21
package/dist/jitsu.es.js
CHANGED
|
@@ -183,9 +183,6 @@ function insertTags(code, event, opts = {}) {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
//This weird code is used to mask eval() usage.
|
|
187
|
-
//Although the code can be executed in the browser, some server side bundlers (like Vercel) fails
|
|
188
|
-
//the build if a direct reference to eval() is found.
|
|
189
186
|
let al = "al";
|
|
190
187
|
let ev = "ve".split("").reverse().join("");
|
|
191
188
|
const execF = globalThis[ev + al];
|
|
@@ -315,14 +312,11 @@ const gtmPlugin = {
|
|
|
315
312
|
}
|
|
316
313
|
yield initGtmIfNeeded(config, payload);
|
|
317
314
|
const dataLayer = window[config.dataLayerName || "dataLayer"];
|
|
318
|
-
//traits could be in both nodes, context.traits takes precedence
|
|
319
315
|
const traits = Object.assign(Object.assign({}, ((payload === null || payload === void 0 ? void 0 : payload.traits) || {})), (((_a = payload === null || payload === void 0 ? void 0 : payload.context) === null || _a === void 0 ? void 0 : _a.traits) || {}));
|
|
320
|
-
//remove properties that defined separately
|
|
321
316
|
const idsFromTraits = omit(traits, "id", "userId", "user_id", "anonymousId", "userId");
|
|
322
317
|
if (debug) {
|
|
323
318
|
console.debug("GTM plugin will be applied to following payload", payload);
|
|
324
319
|
}
|
|
325
|
-
// See https://developers.google.com/tag-platform/tag-manager/server-side/common-event-data
|
|
326
320
|
const userData = {
|
|
327
321
|
email_address: traits.email,
|
|
328
322
|
};
|
|
@@ -446,7 +440,6 @@ const ga4Plugin = {
|
|
|
446
440
|
};
|
|
447
441
|
const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
|
|
448
442
|
if (payload.userId) {
|
|
449
|
-
// @ts-ignore
|
|
450
443
|
gtag("set", { user_id: payload.userId });
|
|
451
444
|
}
|
|
452
445
|
switch (payload.type) {
|
|
@@ -457,19 +450,16 @@ const ga4Plugin = {
|
|
|
457
450
|
}
|
|
458
451
|
const { properties: pageProperties, context } = payload;
|
|
459
452
|
const pageEvent = Object.assign({ page_location: pageProperties.url, page_title: pageProperties.title, page_path: pageProperties.path, page_hash: pageProperties.hash, page_search: pageProperties.search, page_referrer: (_b = (_a = context === null || context === void 0 ? void 0 : context.page) === null || _a === void 0 ? void 0 : _a.referrer) !== null && _b !== void 0 ? _b : "" }, ids);
|
|
460
|
-
// @ts-ignore
|
|
461
453
|
gtag("event", "page_view", pageEvent);
|
|
462
454
|
break;
|
|
463
455
|
case "track":
|
|
464
456
|
const { properties: trackProperties } = payload;
|
|
465
457
|
const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);
|
|
466
|
-
// @ts-ignore
|
|
467
458
|
gtag("event", payload.event, trackEvent);
|
|
468
459
|
break;
|
|
469
460
|
case "identify":
|
|
470
461
|
const { traits } = payload;
|
|
471
462
|
const identifyEvent = Object.assign(Object.assign({}, traits), ids);
|
|
472
|
-
// @ts-ignore
|
|
473
463
|
gtag("event", "identify", identifyEvent);
|
|
474
464
|
break;
|
|
475
465
|
}
|
|
@@ -490,17 +480,13 @@ function initGa4IfNeeded(config, payload) {
|
|
|
490
480
|
setGa4State("loading");
|
|
491
481
|
const dlName = config.dataLayerName || "dataLayer";
|
|
492
482
|
const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
|
|
493
|
-
// to work with both GA4 and GTM
|
|
494
483
|
const tagId = config.measurementIds;
|
|
495
484
|
window[dlName] = window[dlName] || [];
|
|
496
485
|
const gtag = function () {
|
|
497
486
|
window[dlName].push(arguments);
|
|
498
487
|
};
|
|
499
|
-
// @ts-ignore
|
|
500
488
|
gtag("js", new Date());
|
|
501
|
-
gtag(
|
|
502
|
-
// @ts-ignore
|
|
503
|
-
"config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
|
|
489
|
+
gtag("config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
|
|
504
490
|
loadScript(buildTagUrl(), { query: `id=${tagId}${dlParam}`, www: true })
|
|
505
491
|
.then(() => {
|
|
506
492
|
setGa4State("loaded");
|
|
@@ -548,11 +534,86 @@ const internalDestinationPlugins = {
|
|
|
548
534
|
[logrocketPlugin.id]: logrocketPlugin,
|
|
549
535
|
};
|
|
550
536
|
|
|
551
|
-
|
|
537
|
+
var name = "@jitsu/js";
|
|
538
|
+
var version = "1.11.0-canary.20251124.3ff4617";
|
|
539
|
+
var description = "";
|
|
540
|
+
var author = "Jitsu Dev Team <dev@jitsu.com>";
|
|
541
|
+
var main = "dist/jitsu.cjs.js";
|
|
542
|
+
var files = [
|
|
543
|
+
"dist"
|
|
544
|
+
];
|
|
545
|
+
var module = "dist/jitsu.es.js";
|
|
546
|
+
var types = "dist/jitsu.d.ts";
|
|
547
|
+
var publishConfig = {
|
|
548
|
+
access: "public"
|
|
549
|
+
};
|
|
550
|
+
var license = "MIT";
|
|
551
|
+
var scripts = {
|
|
552
|
+
clean: "rm -rf ./dist ./compiled",
|
|
553
|
+
"test:node": "vitest run",
|
|
554
|
+
"test:playwright": "playwright test ./__tests__/playwright",
|
|
555
|
+
test: "pnpm run test:node",
|
|
556
|
+
"//typecheck": "Build is required because types are generated during build",
|
|
557
|
+
typecheck: "pnpm run build",
|
|
558
|
+
build: "pnpm run clean && tsc -p . && rollup -c",
|
|
559
|
+
"//build-deps": "Required by turbo ^build-deps - builds dist/ for workspace packages that import this",
|
|
560
|
+
"build-deps": "pnpm run build"
|
|
561
|
+
};
|
|
562
|
+
var devDependencies = {
|
|
563
|
+
"@jitsu/common-config": "workspace:*",
|
|
564
|
+
tslib: "catalog:",
|
|
565
|
+
"@playwright/test": "1.39.0",
|
|
566
|
+
"@rollup/plugin-commonjs": "^28.0.2",
|
|
567
|
+
"rollup-plugin-dts": "^6.2.1",
|
|
568
|
+
"@rollup/plugin-json": "^5.0.1",
|
|
569
|
+
"@rollup/plugin-multi-entry": "^6.0.0",
|
|
570
|
+
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
571
|
+
"@rollup/plugin-replace": "^5.0.1",
|
|
572
|
+
"@rollup/plugin-terser": "^0.1.0",
|
|
573
|
+
"@segment/analytics-next": "^1.75.0",
|
|
574
|
+
"@types/chalk": "^2.2.0",
|
|
575
|
+
"@types/node": "catalog:",
|
|
576
|
+
"@vitest/ui": "catalog:",
|
|
577
|
+
chalk: "^4.1.2",
|
|
578
|
+
"cookie-parser": "^1.4.7",
|
|
579
|
+
ejs: "^3.1.8",
|
|
580
|
+
express: "^4.21.2",
|
|
581
|
+
"node-fetch-commonjs": "^3.3.2",
|
|
582
|
+
"node-forge": "^1.3.1",
|
|
583
|
+
"raw-loader": "^4.0.2",
|
|
584
|
+
rollup: "^3.29.5",
|
|
585
|
+
typescript: "catalog:",
|
|
586
|
+
vitest: "catalog:",
|
|
587
|
+
jsondiffpatch: "workspace:*"
|
|
588
|
+
};
|
|
589
|
+
var peerDependencies = {
|
|
590
|
+
"@jitsu/protocols": "workspace:*"
|
|
591
|
+
};
|
|
592
|
+
var dependencies = {
|
|
593
|
+
analytics: "0.8.9"
|
|
594
|
+
};
|
|
595
|
+
var pkg = {
|
|
596
|
+
name: name,
|
|
597
|
+
version: version,
|
|
598
|
+
description: description,
|
|
599
|
+
author: author,
|
|
600
|
+
main: main,
|
|
601
|
+
files: files,
|
|
602
|
+
module: module,
|
|
603
|
+
types: types,
|
|
604
|
+
publishConfig: publishConfig,
|
|
605
|
+
license: license,
|
|
606
|
+
"private": false,
|
|
607
|
+
scripts: scripts,
|
|
608
|
+
devDependencies: devDependencies,
|
|
609
|
+
peerDependencies: peerDependencies,
|
|
610
|
+
dependencies: dependencies
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
const jitsuVersion = pkg.version ;
|
|
552
614
|
const jitsuLibraryName = "@jitsu/js";
|
|
553
615
|
|
|
554
|
-
const publicSuffixes = "myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,aéroport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,māori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw".split(",");
|
|
555
|
-
//convert to Map
|
|
616
|
+
const publicSuffixes = "webflow.io,vercel.app,myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,aéroport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,māori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw".split(",");
|
|
556
617
|
const _publicSuffixesMap = {};
|
|
557
618
|
publicSuffixes.forEach(tld => {
|
|
558
619
|
_publicSuffixesMap[tld] = true;
|
|
@@ -1039,7 +1100,6 @@ function create(options) {
|
|
|
1039
1100
|
return new DiffPatcher(options);
|
|
1040
1101
|
}
|
|
1041
1102
|
|
|
1042
|
-
/* global analytics */
|
|
1043
1103
|
var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1044
1104
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1045
1105
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -1051,9 +1111,7 @@ var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _argu
|
|
|
1051
1111
|
};
|
|
1052
1112
|
const diff = create();
|
|
1053
1113
|
const defaultConfig = {
|
|
1054
|
-
/* Your segment writeKey */
|
|
1055
1114
|
writeKey: null,
|
|
1056
|
-
/* Disable anonymous MTU */
|
|
1057
1115
|
host: null,
|
|
1058
1116
|
debug: false,
|
|
1059
1117
|
fetch: null,
|
|
@@ -1074,7 +1132,6 @@ const defaultConfig = {
|
|
|
1074
1132
|
consentCategories: {},
|
|
1075
1133
|
},
|
|
1076
1134
|
};
|
|
1077
|
-
// mergeConfig merges newConfig into currentConfig also making sure that all undefined values are replaced with defaultConfig values
|
|
1078
1135
|
const mergeConfig = (current, newConfig) => {
|
|
1079
1136
|
for (const key of Object.keys(defaultConfig)) {
|
|
1080
1137
|
const value = newConfig[key];
|
|
@@ -1084,16 +1141,12 @@ const mergeConfig = (current, newConfig) => {
|
|
|
1084
1141
|
}
|
|
1085
1142
|
else if (typeof value === "undefined") {
|
|
1086
1143
|
if (newConfig.hasOwnProperty("privacy") || !current.hasOwnProperty("privacy")) {
|
|
1087
|
-
// explicitly set to undefined - reset to default
|
|
1088
|
-
// or was not set at all - set to default
|
|
1089
1144
|
current.privacy = Object.assign(Object.assign({}, defaultConfig.privacy), { consentCategories: Object.assign({}, defaultConfig.privacy.consentCategories) });
|
|
1090
1145
|
}
|
|
1091
1146
|
}
|
|
1092
1147
|
}
|
|
1093
1148
|
else if (typeof value === "undefined") {
|
|
1094
1149
|
if (newConfig.hasOwnProperty(key) || !current.hasOwnProperty(key)) {
|
|
1095
|
-
// explicitly set to undefined - reset to default
|
|
1096
|
-
// or was not set at all - set to default
|
|
1097
1150
|
current[key] = defaultConfig[key];
|
|
1098
1151
|
}
|
|
1099
1152
|
}
|
|
@@ -1170,7 +1223,6 @@ function parseGa4SessionId(cookieValue) {
|
|
|
1170
1223
|
return cookieValue.split(".")[2];
|
|
1171
1224
|
}
|
|
1172
1225
|
else {
|
|
1173
|
-
// parse new GA4 cookie format, e.g.: GS2.1.s1747323152$o28$g0$t1747323152$j60$l0$h69286059
|
|
1174
1226
|
const match = cookieValue.match(/^GS\d+\.\d+\.(?:[\w_-]+[$])*s(\d+)(?:$|[$])/);
|
|
1175
1227
|
return match ? match[1] : undefined;
|
|
1176
1228
|
}
|
|
@@ -1250,11 +1302,9 @@ const cookieStorage = (cookieDomain, key2cookie) => {
|
|
|
1250
1302
|
const cookieName = key2cookie(key) || key;
|
|
1251
1303
|
const result = getCookie(cookieName);
|
|
1252
1304
|
if (key === "__anon_id") {
|
|
1253
|
-
//anonymous id must always be a string, so we don't parse it to preserve its exact value
|
|
1254
1305
|
return result;
|
|
1255
1306
|
}
|
|
1256
1307
|
if (typeof result === "undefined" && key === "__user_id") {
|
|
1257
|
-
//backward compatibility with old jitsu cookie. get user id if from traits
|
|
1258
1308
|
const traits = parse(getCookie(key2cookie("__user_traits") || "__eventn_id_usr")) || {};
|
|
1259
1309
|
return traits.internal_id || traits.user_id || traits.id || traits.userId;
|
|
1260
1310
|
}
|
|
@@ -1435,10 +1485,6 @@ function deepMerge(target, source) {
|
|
|
1435
1485
|
function isInBrowser() {
|
|
1436
1486
|
return typeof document !== "undefined" && typeof window !== "undefined";
|
|
1437
1487
|
}
|
|
1438
|
-
/**
|
|
1439
|
-
* Fixes a weird bug in analytics URL where path
|
|
1440
|
-
* of https://test.com becomes //test.com
|
|
1441
|
-
*/
|
|
1442
1488
|
function fixPath(path) {
|
|
1443
1489
|
if (path.indexOf("//") === 0 && path.lastIndexOf("/") === 1) {
|
|
1444
1490
|
return "/";
|
|
@@ -1446,10 +1492,6 @@ function fixPath(path) {
|
|
|
1446
1492
|
return path;
|
|
1447
1493
|
}
|
|
1448
1494
|
const hashRegex = /#.*$/;
|
|
1449
|
-
/**
|
|
1450
|
-
* for compatibility with path produced by analytics.js
|
|
1451
|
-
* @param url
|
|
1452
|
-
*/
|
|
1453
1495
|
function urlPath(url) {
|
|
1454
1496
|
const regex = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g;
|
|
1455
1497
|
const matches = regex.exec(url);
|
|
@@ -1466,10 +1508,6 @@ function canonicalUrl() {
|
|
|
1466
1508
|
}
|
|
1467
1509
|
}
|
|
1468
1510
|
}
|
|
1469
|
-
/**
|
|
1470
|
-
* bugged analytics.js logic that produces 'url' parameter by concating canonical URL with current search part
|
|
1471
|
-
* I produces broken results in some cases like SPA where path is changed but canonical URL is not updated
|
|
1472
|
-
*/
|
|
1473
1511
|
function analyticsJsUrl() {
|
|
1474
1512
|
if (!isInBrowser())
|
|
1475
1513
|
return;
|
|
@@ -1486,16 +1524,12 @@ function adjustPayload(payload, config, storage, s2s) {
|
|
|
1486
1524
|
const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
|
|
1487
1525
|
const properties = payload.properties || {};
|
|
1488
1526
|
if (payload.type === "page" && (properties.url || url)) {
|
|
1489
|
-
// we don't trust analytics.js URL logic since it's sticks with canonical URL on SPA pages
|
|
1490
1527
|
let targetUrl = url || properties.url;
|
|
1491
1528
|
if (properties.url && properties.url !== analyticsJsUrl()) {
|
|
1492
|
-
// properties.url is not the same as provided by analytics.js
|
|
1493
|
-
// it means that it was not overridden by user and we should use it
|
|
1494
1529
|
targetUrl = properties.url;
|
|
1495
1530
|
}
|
|
1496
1531
|
properties.url = targetUrl.replace(hashRegex, "");
|
|
1497
1532
|
properties.path = fixPath(urlPath(targetUrl));
|
|
1498
|
-
// other properties are correctly based on window.location in analytics.js
|
|
1499
1533
|
}
|
|
1500
1534
|
const customContext = deepMerge(config.defaultPayloadContext, ((_a = payload.properties) === null || _a === void 0 ? void 0 : _a.context) || ((_b = payload.options) === null || _b === void 0 ? void 0 : _b.context) || {});
|
|
1501
1535
|
(_c = payload.properties) === null || _c === void 0 ? true : delete _c.context;
|
|
@@ -1652,7 +1686,6 @@ function getErrorHandler(opts) {
|
|
|
1652
1686
|
}
|
|
1653
1687
|
else if (configuredHandler === "rethrow") {
|
|
1654
1688
|
return (msg, ...args) => {
|
|
1655
|
-
//ignore args, not clear what to do with them
|
|
1656
1689
|
throw new Error(msg);
|
|
1657
1690
|
};
|
|
1658
1691
|
}
|
|
@@ -1675,7 +1708,6 @@ function send(method, payload, jitsuConfig, instance, store) {
|
|
|
1675
1708
|
const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;
|
|
1676
1709
|
const fetch = jitsuConfig.fetch || globalThis.fetch;
|
|
1677
1710
|
if (!fetch) {
|
|
1678
|
-
//don't run it through error handler since error is critical and should be addressed
|
|
1679
1711
|
throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
|
|
1680
1712
|
}
|
|
1681
1713
|
const abortController = jitsuConfig.fetchTimeoutMs ? new AbortController() : undefined;
|
|
@@ -1731,7 +1763,6 @@ function send(method, payload, jitsuConfig, instance, store) {
|
|
|
1731
1763
|
console.warn(`[JITSU] ${payload.type} responded with list of ${responseJson.destinations.length} destinations. However, this code is running in server-to-server mode, so destinations will be ignored`, jitsuConfig.debug ? JSON.stringify(responseJson.destinations, null, 2) : undefined);
|
|
1732
1764
|
}
|
|
1733
1765
|
else {
|
|
1734
|
-
//double protection, ingest should not return destinations in s2s mode
|
|
1735
1766
|
if (isInBrowser()) {
|
|
1736
1767
|
if (jitsuConfig.debug) {
|
|
1737
1768
|
console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));
|
|
@@ -1744,23 +1775,14 @@ function send(method, payload, jitsuConfig, instance, store) {
|
|
|
1744
1775
|
});
|
|
1745
1776
|
}
|
|
1746
1777
|
const controllingTraits = ["$doNotSend"];
|
|
1747
|
-
/**
|
|
1748
|
-
* Remove all members of traits that controls identify/group behavior (see analytics.d.ts), and should not be recorded. Returns
|
|
1749
|
-
* copy of the object with these members removed.
|
|
1750
|
-
*
|
|
1751
|
-
* Do not modify traits object, but creates one
|
|
1752
|
-
* @param traits
|
|
1753
|
-
*/
|
|
1754
1778
|
function stripControllingTraits(traits) {
|
|
1755
1779
|
const res = Object.assign({}, traits);
|
|
1756
|
-
// see Traits definition in analytics.d.ts. We cannot define const here, so here's a little code duplication
|
|
1757
1780
|
for (const key of controllingTraits) {
|
|
1758
1781
|
delete res[key];
|
|
1759
1782
|
}
|
|
1760
1783
|
return res;
|
|
1761
1784
|
}
|
|
1762
1785
|
const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
|
|
1763
|
-
// just to make sure that all undefined values are replaced with defaultConfig values
|
|
1764
1786
|
mergeConfig(jitsuOptions, jitsuOptions);
|
|
1765
1787
|
return {
|
|
1766
1788
|
name: "jitsu",
|
|
@@ -1822,7 +1844,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
|
|
|
1822
1844
|
if (((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = config.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
|
|
1823
1845
|
return;
|
|
1824
1846
|
}
|
|
1825
|
-
// Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.
|
|
1826
1847
|
storage.setItem("__user_id", payload.userId);
|
|
1827
1848
|
const doNotSend = (_c = payload.traits) === null || _c === void 0 ? void 0 : _c.$doNotSend;
|
|
1828
1849
|
if (payload.traits && typeof payload.traits === "object") {
|
|
@@ -1842,7 +1863,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
|
|
|
1842
1863
|
}
|
|
1843
1864
|
},
|
|
1844
1865
|
methods: {
|
|
1845
|
-
//analytics doesn't support group as a base method, so we need to add it manually
|
|
1846
1866
|
configure(newOptions) {
|
|
1847
1867
|
var _a, _b, _c, _d;
|
|
1848
1868
|
const idsWasDisabled = ((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.dontSend);
|
|
@@ -1868,7 +1888,6 @@ const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
|
|
|
1868
1888
|
return;
|
|
1869
1889
|
}
|
|
1870
1890
|
if (typeof groupId === "number") {
|
|
1871
|
-
//fix potential issues with group id being used incorrectly
|
|
1872
1891
|
groupId = groupId + "";
|
|
1873
1892
|
}
|
|
1874
1893
|
const instance = this.instance;
|
|
@@ -1975,9 +1994,6 @@ const emptyAnalytics = {
|
|
|
1975
1994
|
function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
1976
1995
|
var _a, _b, _c;
|
|
1977
1996
|
const storageCache = {};
|
|
1978
|
-
// AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
|
|
1979
|
-
// 'page' call will load traits from storage before 'identify' call had a change to save them.
|
|
1980
|
-
// to avoid that we use in-memory cache for storage
|
|
1981
1997
|
const cachingStorageWrapper = (persistentStorage) => ({
|
|
1982
1998
|
setItem(key, val) {
|
|
1983
1999
|
var _a, _b;
|
|
@@ -2030,24 +2046,17 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
|
2030
2046
|
}
|
|
2031
2047
|
}, identify: (...args) => {
|
|
2032
2048
|
if (args[0] && typeof args[0] !== "object" && typeof args[0] !== "string") {
|
|
2033
|
-
//fix the quirk of analytics.js: if you pass number as first argument, it will be converted to string
|
|
2034
2049
|
args[0] = args[0] + "";
|
|
2035
2050
|
}
|
|
2036
|
-
//analytics.js sets userId and traits asynchronously, so if
|
|
2037
|
-
//we want them to be available immediately after identify call in subsequent page() calls,
|
|
2038
|
-
//we need to put them into storage manually
|
|
2039
2051
|
const storage = analytics.storage;
|
|
2040
2052
|
const storageWrapper = cachingStorageWrapper(storage);
|
|
2041
2053
|
if (typeof args[0] === "string") {
|
|
2042
|
-
//first argument is user id
|
|
2043
2054
|
storageWrapper.setItem("__user_id", args[0]);
|
|
2044
2055
|
}
|
|
2045
2056
|
else if (typeof args[0] === "object") {
|
|
2046
|
-
//first argument is traits
|
|
2047
2057
|
storageWrapper.setItem("__user_traits", args[0]);
|
|
2048
2058
|
}
|
|
2049
2059
|
if (args.length === 2 && typeof args[1] === "object") {
|
|
2050
|
-
//first argument is user id, second is traits
|
|
2051
2060
|
storageWrapper.setItem("__user_traits", args[1]);
|
|
2052
2061
|
}
|
|
2053
2062
|
return analytics.identify(...args);
|
|
@@ -2074,8 +2083,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
|
2074
2083
|
if (opts.debug) {
|
|
2075
2084
|
console.log("[JITSU DEBUG] Setting anonymous id to " + id);
|
|
2076
2085
|
}
|
|
2077
|
-
//Workaround for analytics.js bug. Underlying setAnonymousId doesn't set the id immediately,
|
|
2078
|
-
//so we got to it manually here. See https://github.com/jitsucom/jitsu/issues/1060
|
|
2079
2086
|
storage.setItem("__anon_id", id);
|
|
2080
2087
|
const userState = analytics.user();
|
|
2081
2088
|
if (userState) {
|
|
@@ -2119,8 +2126,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
|
2119
2126
|
results.push(yield plugin["group"](groupId, traits, options, callback));
|
|
2120
2127
|
}
|
|
2121
2128
|
}
|
|
2122
|
-
//It's incorrect at many levels. First, it's not a dispatched event. Second, we take a first result
|
|
2123
|
-
//However, since returned values are used for debugging purposes only, it's ok
|
|
2124
2129
|
return results[0];
|
|
2125
2130
|
});
|
|
2126
2131
|
},
|
|
@@ -2132,10 +2137,6 @@ function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
|
2132
2137
|
}
|
|
2133
2138
|
return a;
|
|
2134
2139
|
}
|
|
2135
|
-
/**
|
|
2136
|
-
* Fix common mistakes in jitsu configuration
|
|
2137
|
-
* @param opts
|
|
2138
|
-
*/
|
|
2139
2140
|
function fixOptions(opts) {
|
|
2140
2141
|
var _a, _b;
|
|
2141
2142
|
return Object.assign(Object.assign({}, opts), { host: ((_a = opts.host) !== null && _a !== void 0 ? _a : "").indexOf("https://") !== 0 && ((_b = opts.host) !== null && _b !== void 0 ? _b : "").indexOf("http://") !== 0
|
|
@@ -2147,28 +2148,6 @@ function jitsuAnalytics(_opts) {
|
|
|
2147
2148
|
const inBrowser = isInBrowser();
|
|
2148
2149
|
const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));
|
|
2149
2150
|
return createUnderlyingAnalyticsInstance(opts, rt);
|
|
2150
|
-
// if (inBrowser) {
|
|
2151
|
-
// const fetch = opts.fetch || globalThis.fetch;
|
|
2152
|
-
// if (!fetch) {
|
|
2153
|
-
// throw new Error(
|
|
2154
|
-
// "Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope"
|
|
2155
|
-
// );
|
|
2156
|
-
// }
|
|
2157
|
-
// const url = `${opts.host}/api/s/cfg`;
|
|
2158
|
-
// const authHeader = {};
|
|
2159
|
-
// const debugHeader = opts.debug ? { "X-Enable-Debug": "true" } : {};
|
|
2160
|
-
// fetch(url)
|
|
2161
|
-
// .then(res => res.json())
|
|
2162
|
-
// .then(res => {
|
|
2163
|
-
// result.loaded(createUnderlyingAnalyticsInstance(opts, rt, []));
|
|
2164
|
-
// })
|
|
2165
|
-
// .catch(e => {
|
|
2166
|
-
// console.warn(`[JITSU] error getting device-destinations from ${url}`, e);
|
|
2167
|
-
// result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
|
|
2168
|
-
// });
|
|
2169
|
-
// } else {
|
|
2170
|
-
// result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
|
|
2171
|
-
// }
|
|
2172
2151
|
}
|
|
2173
2152
|
|
|
2174
2153
|
export { createInMemoryStorage, emptyAnalytics, emptyRuntime, isInBrowser, jitsuAnalytics, jitsuAnalyticsPlugin, parseQuery, randomId, uuid, windowRuntime };
|