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