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