5 Alternatives to Express.js (2024)

`),[e.width,e.height]=y[r.size_id].split("x").map((e=>Number(e)))),e.rubiconTargeting=(Array.isArray(r.targeting)?r.targeting:[]).reduce(((e,t)=>(e[t.key]=t.values[0],e)),{rpfl_elemid:a.adUnitCode}),t.push(e)}else(0,u.logError)(`Rubicon: bidRequest undefined at index position:${n}`,s,e);var p;return t}),[]).sort(((e,t)=>(t.cpm||0)-(e.cpm||0)))},getUserSyncs:function(e,t,r,i,n){if(!I&&e.iframeEnabled){let e={};return r&&("boolean"==typeof r.gdprApplies&&(e.gdpr=Number(r.gdprApplies)),"string"==typeof r.consentString&&(e.gdpr_consent=r.consentString)),i&&(e.us_privacy=encodeURIComponent(i)),n?.gppString&&(e.gpp=n.gppString,e.gpp_sid=n.applicableSections?.toString()),e=Object.keys(e).length?`?${(0,u.formatQS)(e)}`:"",I=!0,{type:"iframe",url:`https://${b.syncHost||"eus"}.rubiconproject.com/usync.html`+e}}},transformBidParams:function(e,t){return(0,f.u)({accountId:"number",siteId:"number",zoneId:"number"},e)}};function _(e,t){let r;return r=e.params.referrer?e.params.referrer:t.refererInfo.page,e.params.secure?r.replace(/^http:/i,"https:"):r}function k(e){const t=document.getElementById(e.adUnitCode);!function(e){const t=e.querySelector("div[id^='google_ads']");t&&t.style.setProperty("display","none")}(t),function(e){const t=e.querySelector("script[id^='sas_script']"),r=t&&t.nextSibling;r&&"iframe"===r.localName&&r.style.setProperty("display","none")}(t);const r=e.renderer.getConfig();e.renderer.push((()=>{window.MagniteApex.renderAd({width:e.width,height:e.height,vastUrl:e.vastUrl,placement:{attachTo:t,align:r.align||"center",position:r.position||"append"},closeButton:r.closeButton||!1,label:r.label||void 0,collapse:r.collapse||!0})}))}function j(e,t){let r=e.params;if(t===d.pX){let t=[];return r.video&&r.video.playerWidth&&r.video.playerHeight?t=[r.video.playerWidth,r.video.playerHeight]:Array.isArray((0,m.Z)(e,"mediaTypes.video.playerSize"))&&1===e.mediaTypes.video.playerSize.length?t=e.mediaTypes.video.playerSize[0]:Array.isArray(e.sizes)&&e.sizes.length>0&&Array.isArray(e.sizes[0])&&e.sizes[0].length>1&&(t=e.sizes[0]),t}let i=[];return Array.isArray(r.sizes)?i=r.sizes:void 0!==(0,m.Z)(e,"mediaTypes.banner.sizes")?i=S(e.mediaTypes.banner.sizes):Array.isArray(e.sizes)&&e.sizes.length>0?i=S(e.sizes):(0,u.logWarn)("Rubicon: no sizes are setup or found"),function(e){const t=[15,2,9];return e.sort(((e,r)=>{const i=t.indexOf(e),n=t.indexOf(r);return i>-1||n>-1?-1===i?1:-1===n?-1:i-n:e-r}))}(i)}function S(e){return(0,u.parseSizesInput)(e).reduce(((e,t)=>{let r=parseInt(y[t],10);return r&&e.push(r),e}),[])}function C(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=[];if(function(e){let t=void 0!==(0,m.Z)(e,`mediaTypes.${d.pX}`),r=void 0!==(0,m.Z)(e,`mediaTypes.${d.Mk}`),i=void 0!==(0,m.Z)(e,"params.bidonmultiformat"),n="object"!=typeof(0,m.Z)(e,"params.video");return!(!t||!i)||(r&&n&&(t=!1),t&&n&&(0,l.N)(e,"params.video",{}),t)}(e)){if(-1===["outstream","instream"].indexOf((0,m.Z)(e,`mediaTypes.${d.pX}.context`)))return t&&(0,u.logError)("Rubicon: mediaTypes.video.context must be outstream or instream"),r;if(j(e,d.pX).length<2)return t&&(0,u.logError)("Rubicon: could not determine the playerSize of the video"),r;t&&(0,u.logMessage)("Rubicon: making video request for adUnit",e.adUnitCode),r.push(d.pX)}if(void 0!==(0,m.Z)(e,`mediaTypes.${d.B5}`)&&r.push(d.B5),void 0!==(0,m.Z)(e,`mediaTypes.${d.Mk}`)){if(0===j(e,d.Mk).length)return t&&(0,u.logError)("Rubicon: could not determine the sizes for banner request"),r;t&&(0,u.logMessage)("Rubicon: making banner request for adUnit",e.adUnitCode),r.push(d.Mk)}return r}function R(e){let t=!1;const r=["asi","sid","hp"];return e.nodes?(t=e.nodes.reduce(((e,t)=>e?r.every((e=>t.hasOwnProperty(e))):e),!0),t||(0,u.logError)("Rubicon: required schain params missing"),t):t}function A(e,t){return"rp_schain"===e?`rp_schain=${t}`:`${e}=${encodeURIComponent(t)}`}var I=!1;(0,s.dX)(v),(0,i.z)("rubiconBidAdapter")},26372:(e,t,r)=>{r.d(t,{DZ:()=>o,Px:()=>s,TP:()=>d,YC:()=>a,Z:()=>n,f8:()=>u,fP:()=>l,gm:()=>i,md:()=>p});const i=["request","imp","bidResponse","response"],[n,o,s,a]=i,[d,p]=["default","pbs"],c=new Set(i);const{registerOrtbProcessor:u,getProcessors:l}=function(){const e={};return{registerOrtbProcessor(t){let{type:r,name:n,fn:o,priority:s=0,dialects:a=[d]}=t;if(!c.has(r))throw new Error(`ORTB processor type must be one of: ${i.join(", ")}`);a.forEach((t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(r)||(e[t][r]={}),e[t][r][n]={priority:s,fn:o}}))},getProcessors:t=>e[t]||{}}}()}},e=>{e.O(0,[85279,33402,93157,70951],(()=>{return t=40060,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[92972],{54834:(e,o,t)=>{var n=t(78640),r=t(64358),d=t(92797),i=t(34516),a=t(15164),u=t(9633),c=t(81694);const l=(0,a.df)({moduleType:u.y2,moduleName:"sharedId"}),s="cookie",m="html5",f="_pubcid_optout",g="PublisherCommonId";function p(e,o){if(o===s)return l.getCookie(e);if(o===m&&l.hasLocalStorage()){const o=l.getDataFromLocalStorage(`${e}_exp`);if(!o)return l.getDataFromLocalStorage(e);if(new Date(o).getTime()-Date.now()>0)return l.getDataFromLocalStorage(e)}}function I(e,o){return function(t,n){o?b(o,e,(()=>{t(n()||e)}))():t(e)}}function b(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;if(!e)return;const n=(0,r.parseUrl)(e);n.search.id=encodeURIComponent("pubcid:"+o);const d=(0,r.buildUrl)(n);return function(){(0,r.triggerPixel)(d,t)}}function h(){return!!(l.cookiesAreEnabled()&&p(f,s)||l.hasLocalStorage()&&p(f,m))}const v={name:"sharedId",aliasName:"pubCommonId",gvlid:i.$P,decode(e,o){if(h())return void(0,r.logInfo)("PubCommonId decode: Has opted-out");(0,r.logInfo)(" Decoded value PubCommonId "+e);return{pubcid:e}},getId:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>2?arguments[2]:void 0;if(h())return void(0,r.logInfo)("PubCommonId: Has opted-out");if(i.VP.getCoppa())return void(0,r.logInfo)("PubCommonId: IDs not provided for coppa requests, exiting PubCommonId");const{params:{create:t=!0,pixelUrl:n}={}}=e;let d=o;if(!d){try{"object"==typeof window[g]&&(d=window[g].getId())}catch(e){}d||(d=t&&(0,r.hasDeviceAccess)()?(0,r.generateUUID)():void 0)}return{id:d,callback:I(d,n)}},extendId:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>2?arguments[2]:void 0;if(h())return(0,r.logInfo)("PubCommonId: Has opted-out"),{id:void 0};if(i.VP.getCoppa())return void(0,r.logInfo)("PubCommonId: IDs not provided for coppa requests, exiting PubCommonId");const{params:{extend:t=!1,pixelUrl:n}={}}=e;if(t){if(n){return{callback:b(n,o)}}return{id:o}}},domainOverride:(0,c.U)(l,"sharedId"),eids:{pubcid:{source:"pubcid.org",atype:1}}};(0,d.Bx)("userId",v),(0,n.z)("sharedIdSystem")}},e=>{e.O(0,[57748],(()=>{return o=54834,e(e.s=o);var o}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[88029],{76401:(e,t,n)=>{var r=n(78640),i=n(64358),o=n(20265),a=n(14699),d=n(15164);const s="teads",c=12,p=11,u=0,l=22,m=(0,d.df)({bidderCode:s}),g={code:s,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let n=b((0,i.getValue)(e.params,"placementId")),r=b((0,i.getValue)(e.params,"pageId"));t=n&&r}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const n=e.map(S),r={referrer:y(t),pageReferrer:document.referrer,pageTitle:f().slice(0,300),pageDescription:v().slice(0,300),networkBandwidth:(i=window.navigator,i&&i.connection&&i.connection.downlink>=0?i.connection.downlink.toString():""),timeToFirstByte:h(window),data:n,deviceWidth:screen.width,hb_version:"8.20.0",...I(e),...q(e)};var i;const a=e[0];a.schain&&(r.schain=a.schain);let d=t.gdprConsent;if(t&&d){let e="boolean"==typeof d.gdprApplies,t="string"==typeof d.consentString,n=e?function(e,t){let n=c;e?t&&!t.isServiceSpecific&&(n=p):n=u;return n}(d.gdprApplies,d.vendorData):l;r.gdpr_iab={consent:t?d.consentString:"",status:n,apiVersion:d.apiVersion}}t&&t.uspConsent&&(r.us_privacy=t.uspConsent);const s=(0,o.Z)(a,"ortb2.device.sua");s&&(r.userAgentClientHints=s);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(r)}},interpretResponse:function(e,t){const n=[];return(e=e.body).responses&&e.responses.forEach((function(e){const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};e.dealId&&(t.dealId=e.dealId),n.push(t)})),n}};function I(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let n={};for(const r in t){const i=t[r],a=(0,o.Z)(e,`0.userId.${i}`);a&&(n[r]=a)}return n}function y(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function f(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function v(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function h(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,n=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(n)return n.toString();const r=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return r?r.toString():""}function S(e){const t={};let n=(0,i.getValue)(e.params,"placementId"),r=(0,i.getValue)(e.params,"pageId");const a=(0,o.Z)(e,"ortb2Imp.ext.gpid"),d=(0,o.Z)(e,"mediaTypes.video.plcmt");return t.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.Z)(e,"mediaTypes.video.playerSize"),n=(0,o.Z)(e,"mediaTypes.video.sizes"),r=(0,o.Z)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(r)||(0,i.isArray)(t)||(0,i.isArray)(n)){return[r,n,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),t.bidId=(0,i.getBidIdParameter)("bidId",e),t.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),t.placementId=parseInt(n,10),t.pageId=parseInt(r,10),t.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),t.transactionId=e.ortb2Imp?.ext?.tid||"",a&&(t.gpid=a),d&&(t.videoPlcmt=d),t}function b(e){return parseInt(e)>0}function q(e){const t=(0,o.Z)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.dX)(g),(0,r.z)("teadsBidAdapter")}},e=>{var t;t=76401,e(e.s=t)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[82599],{70789:(e,t,r)=>{var i=r(78640),n=r(64358),o=r(24679),a=r(14699),s=r(3193),d=r(15164),l=r(29865);const c="triplelift";let p=null,u=null;const m=(0,d.df)({bidderCode:c}),f={gvlid:28,code:c,supportedMediaTypes:[o.Mk,o.pX],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",i=function(e,t){let r={},{schain:i}=e[0];const o=function(e){const t={},r={},i={},o=e.ortb2||{},a=function(){const e=m.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,n.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},o.site),d=Object.assign({},o.user);if(a){d.data=d.data||[];try{d.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,n.logError)("Triplelift: error adding 1plusX segments: ",e)}}v(r,s),v(i,d),(0,n.isEmpty)(r)||(t.context=r);(0,n.isEmpty)(i)||(t.user=i);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return g(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,n.logWarn)("Video size not defined",e)}"instream"===t.context&&(t.placement||(t.placement=1));"outstream"===t.context&&(t.placement?-1===[3,4,5].indexOf(t.placement)&&((0,n.logMessage)(`video.placement value of ${t.placement} is invalid for outstream context. Setting placement to 3`),t.placement=3):t.placement=3);t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!b(e)&&(r.banner={format:O(e.sizes)}),(0,n.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};v(r,e.ext),(0,n.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,n.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let a=[...x([e[0]]),...E([e[0]]),...I([e[0]]),...S([e[0]]),..._(e[0])];a.length>0&&(r.user={ext:{eids:a}});let s=function(e,t){let r={};(0,n.isEmpty)(e)||(r.schain={...e});(0,n.isEmpty)(t)||(r.fpd={...t});return r}(i,o);(0,n.isEmpty)(s)||(r.ext=s);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.t)(r,"lib","prebid"),r=(0,l.t)(r,"v","8.20.0"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.t)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.t)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(p=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.t)(r,"gdpr",p.toString()),void 0!==t.gdprConsent.consentString&&(u=t.gdprConsent.consentString,r=(0,l.t)(r,"cmp_cs",u))),t&&t.uspConsent&&(r=(0,l.t)(r,"us_privacy",t.uspConsent)),t&&t.fledgeEnabled&&(r=(0,l.t)(r,"fledge",t.fledgeEnabled)),!0===s.config.getConfig("coppa")&&(r=(0,l.t)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,n.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:i,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,i=e.body.bids||[];const o=e.body.paapi||[];if(i=i.map((e=>function(e,t){let r={},i=t.width||1,n=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:i,height:n,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},g(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(g(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),o.length>0){const e=o.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,n.logMessage)("Response with FLEDGE:",{bids:i,fledgeAuctionConfigs:e}),{bids:i,fledgeAuctionConfigs:e}}return i},getUserSyncs:function(e,t,r,i,n){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.t)(a,"px",1),a=(0,l.t)(a,"src","prebid")),(null!==u||p)&&(a=(0,l.t)(a,"gdpr",p),a=(0,l.t)(a,"cmp_cs",u)),i&&(a=(0,l.t)(a,"us_privacy",i)),n&&(n.gppString&&(a=(0,l.t)(a,"gpp",n.gppString)),n.applicableSections&&0!==n.applicableSections.length&&(a=(0,l.t)(a,"gpp_sid",n.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function g(e){return y(e)&&(b(e)||function(e){return y(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function b(e){return y(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function y(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function h(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:g(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,n.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function v(e,t){(0,n.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function x(e){return C(e,"tdid","adserver.org","TDID")}function E(e){return C(e,"idl_env","liveramp.com","idl")}function I(e){return C(e,"criteoId","criteo.com","criteoId")}function S(e){return C(e,"pubcid","pubcid.org","pubcid")}function _(e){let t=["adserver.org","liveramp.com","criteo.com","pubcid.org"],r=[];return e.userIdAsEids&&e.userIdAsEids.forEach((e=>{try{if(-1===t.indexOf(e.source)){let t=e.uids.map((t=>({id:t.id,ext:{rtiPartner:e.source}})));r.push({source:e.source,uids:t})}}catch(t){(0,n.logWarn)(`Triplelift: Error attempting to add ${e} to bid request`,t)}})),r}function C(e,t,r,i){return e.map(function(e){return t=>t&&t.userId&&t.userId[e]}(t)).filter(T(t)).map(function(e,t){return r=>({source:e,uids:[{id:r.id?r.id:r,ext:{rtiPartner:t}}]})}(r,i))}const T=e=>(t,r,i)=>{let o=!!t&&((0,n.isStr)(t)?!!t:(0,n.isPlainObject)(t)&&!(0,n.isArray)(t)&&!(0,n.isEmpty)(t)&&t.id&&(0,n.isStr)(t.id)&&!!t.id);return o||void 0===i[0]||(0,n.logWarn)(`Triplelift: invalid ${e} userId format`),o};function O(e){return e.filter(w).map((function(e){return{w:e[0],h:e[1]}}))}function w(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,a.dX)(f),(0,i.z)("tripleliftBidAdapter")}},e=>{e.O(0,[54213],(()=>{return t=70789,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[34579],{98709:(r,e,t)=>{var d=t(78640),n=t(64358),o=t(48928),s=t(92797);const i="unifiedId",u={name:i,gvlid:21,decode:r=>r&&"string"==typeof r.TDID?{tdid:r.TDID}:void 0,getId(r){const e=r&&r.params||{};if(!e||"string"!=typeof e.partner&&"string"!=typeof e.url)return void(0,n.logError)("User ID - unifiedId submodule requires either partner or url to be defined");const t=e.url||`https://match.adsrvr.org/track/rid?ttd_pid=${e.partner}&fmt=json`;return{callback:function(r){const e={success:e=>{let t;if(e)try{t=JSON.parse(e)}catch(r){(0,n.logError)(r)}r(t)},error:e=>{(0,n.logError)(`${i}: ID fetch encountered an error`,e),r()}};(0,o.hj)(t,e,void 0,{method:"GET",withCredentials:!0})}}},eids:{tdid:{source:"adserver.org",atype:1,getUidExt:function(){return{rtiPartner:"TDID"}}}}};(0,s.Bx)("userId",u),(0,d.z)("unifiedIdSystem")}},r=>{var e;e=98709,r(r.s=e)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[69039],{83806:(e,r,n)=>{var t=n(78640),i=n(20265),d=n(64358),o=n(35706),s=n(14699),a=n(24679);const u=(e,r,n)=>{const{bids:t,bidderRequestId:d,bidderCode:o,...s}=n,a=n.bids.length-r.length;let u={};r.forEach((e=>{const r=e.params.siteId;(e=>{Object.keys(e.mediaTypes).forEach((r=>{let n;n="function"==typeof e.getFloor?e.getFloor({currency:"USD",mediaType:r,size:"*"}).floor||0:e.params.floor||0,e.mediaTypes[r].floor=n}))})(e),(e=>{let r=(0,i.Z)(e,"mediaTypes.banner");if(r){let e={},n=[];r.sizes.forEach((r=>{e[r.toString()]||(e[r.toString()]=!0,n.push(r))})),r.sizes=n}})(e),u[r]=u[r]||[],u[r].push(e)}));let l=[];return Object.keys(u).forEach((r=>{let n={bidderRequest:Object.assign({},{bids:u[r],invalidBidsCount:a,...s})};l.push(Object.assign({},{data:n,...e}))})),l},l=e=>{if(e.ad)return e;(0,d.logError)(new Error("UnrulyBidAdapter: Missing ad config."))},p=e=>{if(e.vastUrl||e.vastXml)return e;(0,d.logError)(new Error("UnrulyBidAdapter: Missing vastUrl or vastXml config."))},c=e=>{const r=!!(0,i.Z)(e,"ext.renderer.config"),n=!!(0,i.Z)(e,"ext.renderer.config.siteId");if(!r)return void(0,d.logError)(new Error("UnrulyBidAdapter: Missing renderer config."));if(!n)return void(0,d.logError)(new Error("UnrulyBidAdapter: Missing renderer siteId."));const t=(0,i.Z)(e,"ext.renderer");!function(e,r){if(!e.config)throw new Error("UnrulyBidAdapter: Missing renderer config.");if(!e.config.siteId)throw new Error("UnrulyBidAdapter: Missing renderer siteId.");parent.window.unruly=parent.window.unruly||{},parent.window.unruly.native=parent.window.unruly.native||{},parent.window.unruly.native.siteId=parent.window.unruly.native.siteId||e.config.siteId,parent.window.unruly.native.adSlotId=r,parent.window.unruly.native.supplyMode="prebid"}(t,e.requestId),parent.window.unruly.native.prebid=parent.window.unruly.native.prebid||{},parent.window.unruly.native.prebid.uq=parent.window.unruly.native.prebid.uq||[];const s=o.Th.install(Object.assign({},t)),a=Object.assign({},e,{renderer:s,adUnitCode:(0,i.Z)(e,"ext.adUnitCode")});return s.setRender((()=>{var e;e=a,parent.window.unruly.native.prebid.uq.push(["render",e])})),e.renderer=e.renderer||s,e},y=e=>{if(!e.context)return!1;return-1!==["outstream","instream"].indexOf(e.context)},f=e=>e.sizes,w={code:"unruly",supportedMediaTypes:[a.pX,a.Mk],gvlid:36,isBidRequestValid:function(e){let r=(0,i.Z)(e,"params.siteId")&&(e=>{const r=(0,i.Z)(e,"mediaTypes.video"),n=(0,i.Z)(e,"mediaTypes.banner");let t=!(!r&&!n);return t&&r&&(t=y(r)),t&&n&&(t=f(n)),t})(e);return!!r},buildRequests:function(e,r){let n="https://targeting.unrulymedia.com/unruly_prebid";e[0]&&(n=(0,i.Z)(e[0],"params.endpoint")||n);return u({url:n,method:"POST",options:{contentType:"application/json"}},e,r)},interpretResponse:function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).body;return!e||!e.bids?[]:(e=>{let r=[];return e.forEach((e=>{let n,t=(0,i.Z)(e,"meta.mediaType");if(t&&"banner"===t.toLowerCase())e.mediaType=a.Mk,n=l(e);else if(t&&"video"===t.toLowerCase()){let r=(0,i.Z)(e,"meta.videoContext");e.mediaType=a.pX,"instream"===r?n=p(e):"outstream"===r&&(n=c(e))}n&&r.push(n)})),r})(e.bids)}};(0,s.dX)(w),(0,t.z)("unrulyBidAdapter")}},e=>{var r;r=83806,e(e.s=r)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[9215],{82547:(e,t,n)=>{var o=n(78640),r=n(34614),s=n(3193),i=n(52021),a=n(34516),c=n(86104),u=n(5644),l=n(92797),d=n(64358),g=n(20265);const f=new Map;function m(e){const t={};function n(e){const n=JSON.stringify([e.source?.toLowerCase(),e.ext]);t.hasOwnProperty(n)?t[n].uids.push(...e.uids):t[n]=e}return Object.entries(e).forEach((e=>{let[t,o]=e;o=Array.isArray(o)?o:[o];("pubProvidedId"===t?o:o.map((e=>function(e,t){const n=f.get(t);if(n&&e){let t={};t.source=(0,d.isFn)(n.getSource)?n.getSource(e):n.source;const o=(0,d.isFn)(n.getValue)?n.getValue(e):e;if((0,d.isStr)(o)){const r={id:o,atype:n.atype};if((0,d.isFn)(n.getUidExt)){const t=n.getUidExt(e);t&&(r.ext=t)}if(t.uids=[r],(0,d.isFn)(n.getEidExt)){const o=n.getEidExt(e);o&&(t.ext=o)}return t}}return null}(e,t)))).filter((e=>null!=e)).forEach(n)})),Object.values(t)}var b=n(15164),h=n(96475),y=n(7563),p=n(68792),E=n(26372),I=n(99128),w=n(38196),S=n(9633),D=n(50571),O=n(74947),v=n(10286);const j="User ID",P=b.c$,k=b.Dp,$="_pbjs_id_optout",A=(0,b.eA)("userId"),C={isAllowed:D.xD};let N,T,x,U,R,L,_=!1,F=[],Z=[],q={},G=[];const M=(()=>{let e;return()=>(null==e&&(e=(0,I.V6)()),e)})();function B(e){return M().fork().renameWith((t=>[`userId.mod.${t}`,`userId.mods.${e}.${t}`]))}function W(e,t){t=t||e.storageMgr;const n="function"==typeof e.submodule.domainOverride?e.submodule.domainOverride():null,o=e.config.storage.name;return function(e,r,s){t.setCookie(o+(e||""),r,s,"Lax",n)}}function J(e,t){const n=e.config.storage,o=e.storageMgr;try{const r=new Date(Date.now()+864e5*n.expires).toUTCString(),s=(0,d.isPlainObject)(t)?JSON.stringify(t):t;if(n.type===P){const t=W(e);t(null,s,r),t("_cst",ge(),r),"number"==typeof n.refreshInSeconds&&t("_last",(new Date).toUTCString(),r)}else n.type===k&&(o.setDataInLocalStorage(`${n.name}_exp`,r),o.setDataInLocalStorage(`${n.name}_cst`,ge()),o.setDataInLocalStorage(n.name,encodeURIComponent(s)),"number"==typeof n.refreshInSeconds&&o.setDataInLocalStorage(`${n.name}_last`,(new Date).toUTCString()))}catch(e){(0,d.logError)(e)}}function V(e){let t=(0,d.getPrebidInternal)().setEidPermissions;"function"==typeof t&&(0,d.isArray)(e)&&t(function(e){let t=[];return e.filter((e=>(0,d.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length)).forEach((e=>{Object.keys(e.idObj).forEach((n=>{const o=f.get(n)||{};(0,g.Z)(e,"config.bidders")&&Array.isArray(e.config.bidders)&&o.source&&t.push({source:o.source,bidders:e.config.bidders})}))})),t}(e))}function z(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;const n=e.storageMgr,o=e.config.storage,r=t?`${o.name}_${t}`:o.name;let s;try{if(o.type===P)s=n.getCookie(r);else if(o.type===k){const e=n.getDataFromLocalStorage(`${o.name}_exp`);""===e?s=n.getDataFromLocalStorage(r):e&&new Date(e).getTime()-Date.now()>0&&(s=decodeURIComponent(n.getDataFromLocalStorage(r)))}"string"==typeof s&&"{"===s.trim().charAt(0)&&(s=JSON.parse(s))}catch(e){(0,d.logError)(e)}return s}function Y(e,t,n){t=M().fork().startTiming("userId.callbacks.total").stopBefore(t);const o=(0,d.delayExecution)((()=>{clearTimeout(T),t()}),e.length);e.forEach((function(e){const t=B(e.submodule.name).startTiming("callback").stopBefore(o);try{e.callback((function(o){o?(e.config.storage&&J(e,o),e.idObj=e.submodule.decode(o,e.config),me(H(n))):(0,d.logInfo)(`${j}: ${e.submodule.name} - request id responded with an empty value`),t()}),z.bind(null,e))}catch(n){(0,d.logError)(`Error in userID module '${e.submodule.name}':`,n),t()}e.callback=void 0}))}function H(e){return Array.isArray(e)&&e.length?Q(e):{}}function K(e,t,n){return Object.fromEntries(Object.entries(e.reduce(((e,o)=>{const r=t(o);return r&&Object.keys(r).forEach((t=>{const s=q[t]?.indexOf(n(o)),i={priority:(0,d.isNumber)(s)?s:-1,value:r[t]};if(e[t]){const n=i.priority>e[t].priority?i:e[t];e[t]=n}else e[t]=i})),e}),{})).map((e=>{let[t,n]=e;return[t,n.value]})))}function Q(e){return K(e.filter((e=>(0,d.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length)),(e=>e.idObj),(e=>e.submodule.name))}function X(e,t){[e].some((e=>!Array.isArray(e)||!e.length))||e.forEach((e=>{e.bids&&(0,d.isArray)(e.bids)&&e.bids.forEach((e=>{const n=function(e,t){return Array.isArray(e)&&e.length&&t?Q(e.filter((e=>!e.config.bidders||!(0,d.isArray)(e.config.bidders)||(0,r.q9)(e.config.bidders,t)))):{}}(t,e.bidder);Object.keys(n).length&&(e.userId=n,e.userIdAsEids=m(n))}))}))}const ee={};let te;function ne(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:se()||[];const t=R&&e.find((e=>e.source===R));if(t&&"string"==typeof(0,g.Z)(t,"uids.0.id")){const e=t.uids[0].id.replace(/[\W_]/g,"");if(e.length>=32&&e.length<=150)return e;(0,d.logWarn)(`User ID - Googletag Publisher Provided ID for ${R} is not between 32 and 150 characters - ${e}`)}}const oe=(0,I.g3)("userId",(function(e,t){let{delay:n=p.Z.timeout,getIds:r=de}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};p.Z.race([r().catch((()=>null)),n(U)]).then((()=>{X(t.adUnits||(0,o.R)().adUnits,N),M().join((0,I.Bf)(t.metrics),{propagate:!1,includeGroups:!0}),e.call(this,t)}))}));function re(){return H(N)}function se(){return m(re())}function ie(e){return m(function(e,t){if(!Array.isArray(e)||!e.length)return{};const n=Q(e),o=Object.keys(n).find((e=>{const n=f.get(e);return n?.source===t||(0,d.isFn)(n?.getSource)&&n.getSource()===t}));return o?{[o]:n[o]}:[]}(N,e))[0]}function ae(e,t,n){return te().then((()=>{let o={};if((0,d.isFn)(n)){(0,d.logInfo)(`${j} - Getting encrypted signal from custom function : ${n.name} & source : ${e} `);const t=n(e);o[e]=t?ce(t):null}else{const n=ie(e);(0,d.logInfo)(`${j} - Getting encrypted signal for eids :${JSON.stringify(n)}`),(0,d.isEmpty)(n)||(o[n.source]=!0===t?ce(n):n.uids[0].id)}return(0,d.logInfo)(`${j} - Fetching encrypted eids: ${o[e]}`),o[e]}))}function ce(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n="";if(1===t)n="object"==typeof e?window.btoa(JSON.stringify(e)):window.btoa(e);return`${t}||${n}`}function ue(){if(!(0,d.isGptPubadsDefined)())return;window.googletag.secureSignalProviders=window.googletag.secureSignalProviders||[];const e=s.config.getConfig("userSync.encryptedSignalSources");if(e){const t=e.registerDelay||0;setTimeout((()=>{e.sources&&e.sources.forEach((e=>{let{source:t,encrypt:n,customFunc:o}=e;t.forEach((e=>{window.googletag.secureSignalProviders.push({id:e,collectorFunction:()=>ae(e,n,o)})}))}))}),t)}else(0,d.logWarn)(`${j} - ESP : encryptedSignalSources config not defined under userSync Object`)}function le(){let{submoduleNames:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return te({refresh:!0,submoduleNames:e}).then((()=>(t&&(0,d.isFn)(t)&&t(),re())))}function de(){return te().then((()=>re()),(e=>e===ee?Promise.resolve().then(de):((0,d.logError)("Error initializing userId",e),p.Z.reject(e))))}function ge(){let e=Number(a.NO.hash);const t=[];for(;e>0;)t.push(String.fromCharCode(255&e)),e>>>=8;return btoa(t.join())}function fe(e,t,n){const o=a.rp.getConsentData();if(e.config.storage){let n,r=z(e),s=!1;if("number"==typeof e.config.storage.refreshInSeconds){const t=new Date(z(e,"last"));s=t&&Date.now()-t.getTime()>1e3*e.config.storage.refreshInSeconds}!r||s||t||function(e){const t=z(e,"cst");return!t||t!==ge()}(e)?n=e.submodule.getId(e.config,o,r):"function"==typeof e.submodule.extendId&&(n=e.submodule.extendId(e.config,o,r)),(0,d.isPlainObject)(n)&&(n.id&&(J(e,n.id),r=n.id),"function"==typeof n.callback&&(e.callback=n.callback)),r&&(e.idObj=e.submodule.decode(r,e.config))}else if(e.config.value)e.idObj=e.config.value;else{const t=e.submodule.getId(e.config,o,void 0);(0,d.isPlainObject)(t)&&("function"==typeof t.callback&&(e.callback=t.callback),t.id&&(e.idObj=e.submodule.decode(t.id,e.config)))}me(H(n))}function me(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re();if(e&&R){const t=ne(m(e));t&&((0,d.isGptPubadsDefined)()?window.googletag.pubads().setPublisherProvidedId(t):(window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.googletag.cmd.push((function(){window.googletag.pubads().setPublisherProvidedId(t)}))))}}function be(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return M().fork().measureTime("userId.init.modules",(function(){if(!t.length)return[];if(!(t=t.filter((e=>(!e.config.storage||function(e){switch(e.config?.storage?.type){case k:if(e.storageMgr.localStorageIsEnabled())return!A.getDataFromLocalStorage($)||((0,d.logInfo)(`${j} - opt-out localStorage found, storage disabled`),!1);break;case P:if(e.storageMgr.cookiesAreEnabled())return!A.getCookie($)||((0,d.logInfo)(`${j} - opt-out cookie found, storage disabled`),!1)}return!1}(e))&&C.isAllowed(O.EL,(0,v.T)(S.y2,e.config.name))))).length)return(0,d.logWarn)(`${j} - no ID module configured`),[];const o=t.reduce(((e,o)=>B(o.submodule.name).measureTime("init",(()=>{try{fe(o,n,t),e.push(o)}catch(e){(0,d.logError)(`Error in userID module '${o.submodule.name}':`,e)}return e}))),[]);return o.length&&V(o),o.forEach(he.bind(null,e)),o}))}function he(e,t){let n=!1;for(let o=0;oe.eids),(e=>e.name))).forEach((e=>{let[t,n]=e;return f.set(t,n)}))}function Ee(){pe(G);const e=function(e,t){return Array.isArray(e)?e.reduce(((e,t)=>(!t||(0,d.isEmptyStr)(t.name)||(t.storage&&!(0,d.isEmptyStr)(t.storage.type)&&!(0,d.isEmptyStr)(t.storage.name)&&ye.has(t.storage.type)||(0,d.isPlainObject)(t.value)?e.push(t):t.storage||t.value||e.push(t)),e)),[]):[]}(Z);if(!e.length)return;const t=G.filter((e=>!(0,r.sE)(F,(t=>t.name===e.name))));F.splice(0,F.length),t.map((t=>{const n=(0,r.sE)(e,(e=>e.name&&(e.name.toLowerCase()===t.name.toLowerCase()||t.aliasName&&e.name.toLowerCase()===t.aliasName.toLowerCase())));return n&&t.name!==n.name&&(n.name=t.name),t.findRootDomain=w.W,n?{submodule:t,config:n,callback:void 0,idObj:void 0,storageMgr:(0,b.df)({moduleType:S.y2,moduleName:n.name})}:null})).filter((e=>null!==e)).forEach((e=>F.push(e))),!_&&F.length&&((0,o.R)().requestBids.before(oe,40),c.ZP.callDataDeletionRequest.before(Ie),y.G.after((e=>e(ne()))),(0,d.logInfo)(`${j} - usersync config updated for ${F.length} submodules: `,F.map((e=>e.submodule.name))),_=!0)}function Ie(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o{if("function"==typeof e.submodule.onDataDeletionRequest)try{e.submodule.onDataDeletionRequest(e.config,e.idObj,...n)}catch(t){(0,d.logError)(`Error calling onDataDeletionRequest for ID submodule ${e.submodule.name}`,t)}!function(e){let t,n;switch(e.config?.storage?.type){case P:const o=W(e,A),r=new Date(Date.now()-864e5).toUTCString();t=e=>o(e,"",r),n=["","_last","_cst"];break;case k:t=t=>A.removeDataFromLocalStorage(e.config.storage.name+t),n=["","_last","_exp","_cst"]}t&&n.forEach((e=>{try{t(e)}catch(e){(0,d.logError)(e)}}))}(e)})),e.apply(this,n)}function we(e){return function(){return Promise.resolve(e.apply(this,arguments))}}!function(e){let{delay:t=p.Z.timeout}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};R=void 0,F=[],Z=[],_=!1,N=[],te=function(){let{delay:e=p.Z.timeout}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=(0,p.P)(),n=(0,p.P)();let o,r,s=!1;function c(e){return r=M().fork(),null!=o&&o.reject(ee),o=(0,p.P)(),p.Z.race([e,o.promise]).finally(r.startTiming("userId.total"))}let g=N,f=F;function m(e){return function(){if(g===N&&f===F)return e(...arguments)}}function b(){return a.NO.promise.finally(r.startTiming("userId.init.consent"))}let h=c(p.Z.all([l.Cd,t.promise]).then(b).then(m((()=>{be(g,f)}))).then((()=>n.promise.finally(r.startTiming("userId.callbacks.pending")))).then(m((()=>{const e=g.filter((e=>(0,d.isFn)(e.callback)));if(e.length)return new p.Z((t=>Y(e,t,g)))}))));return function(){let{refresh:o=!1,submoduleNames:r=null,ready:a=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a&&!s&&(s=!0,t.resolve(),U>0?n.resolve():i.on(u.EVENTS.AUCTION_END,(function t(){i.off(u.EVENTS.AUCTION_END,t),e(x).then(n.resolve)}))),o&&s&&(h=c(h.catch((()=>null)).then(b).then(m((()=>{const e=be(g,f.filter((e=>null==r||r.includes(e.submodule.name))),!0).filter((e=>null!=e.callback));if(e.length)return new p.Z((t=>Y(e,t,g)))}))))),h}}({delay:t}),null!=L&&L(),G=[],L=e.getConfig("userSync",(e=>{const t=e.userSync;t&&(R=t.ppid,t.userIds&&(Z=t.userIds,x=(0,d.isNumber)(t.syncDelay)?t.syncDelay:500,U=(0,d.isNumber)(t.auctionDelay)?t.auctionDelay:0,Ee(),function(e,t){if(e){const n={},o=new Map(t.map((e=>e.submodule.aliasName?[e.submodule.aliasName,e.submodule.name]:[])));Object.keys(e).forEach((t=>{const r=(0,d.isArray)(e[t])?[...e[t]].reverse():[];n[t]=r.map((e=>o.has(e)?o.get(e):e))})),q=n}else q={}}(t.idPriority,F),te({ready:!0})))})),(0,o.R)().getUserIds=re,(0,o.R)().getUserIdsAsEids=se,(0,o.R)().getEncryptedEidsForSource=we(ae),(0,o.R)().registerSignalSources=ue,(0,o.R)().refreshUserIds=we(le),(0,o.R)().getUserIdsAsync=we(de),(0,o.R)().getUserIdsAsEidBySource=ie}(s.config),(0,l.bA)("userId",(function(e){(0,r.sE)(G,(t=>t.name===e.name))||(G.push(e),a.qh.register(S.y2,e.name,e.gvlid),Ee(),te({refresh:!0,submoduleNames:[e.name]}))})),(0,E.f8)({type:E.Z,name:"userExtEids",fn:function(e,t,n){const o=(0,g.Z)(n,"bidRequests.0.userIdAsEids");o&&Object.keys(o).length>0&&(0,h.N)(e,"user.ext.eids",o)}}),(0,o.z)("userId")},7563:(e,t,n)=>{n.d(t,{G:()=>o});const o=(0,n(92797).z3)("sync",(()=>{}))},26372:(e,t,n)=>{n.d(t,{DZ:()=>s,Px:()=>i,TP:()=>c,YC:()=>a,Z:()=>r,f8:()=>d,fP:()=>g,gm:()=>o,md:()=>u});const o=["request","imp","bidResponse","response"],[r,s,i,a]=o,[c,u]=["default","pbs"],l=new Set(o);const{registerOrtbProcessor:d,getProcessors:g}=function(){const e={};return{registerOrtbProcessor(t){let{type:n,name:r,fn:s,priority:i=0,dialects:a=[c]}=t;if(!l.has(n))throw new Error(`ORTB processor type must be one of: ${o.join(", ")}`);a.forEach((t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(n)||(e[t][n]={}),e[t][n][r]={priority:i,fn:s}}))},getProcessors:t=>e[t]||{}}}()}},e=>{var t;t=82547,e(e.s=t)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[66635],{63273:(e,t,n)=>{var i=n(78640),r=n(64358),o=n(20265),s=n(14699),d=n(24679),a=n(15164),c=n(55975),p=n(3193),u=n(26296);const g="prebid",l="vidazoo",b="1.0.0",f=9e5,m=36e5,h="vidSid",I="vdzwopt",S="wsid_"+parseInt(Date.now()*Math.random()),C=(0,a.df)({bidderCode:l});function y(){try{return(0,r.parseUrl)(window.top.document.URL,{decodeSearchAsString:!0}).search}catch(e){return""}}function v(){return`https://${arguments.length>0&&void 0!==arguments[0]?arguments[0]:g}.cootlogix.com`}function D(e){return e.cId||e.CID||e.cID||e.CId||e.cid||e.ciD||e.Cid||e.CiD}function R(e){return e.pId||e.PID||e.pID||e.PId||e.pid||e.piD||e.Pid||e.PiD}function w(e){return e.subDomain||e.SubDomain||e.Subdomain||e.subdomain||e.SUBDOMAIN||e.subDOMAIN}function $(e,t,n,i,s){const{params:d,bidId:a,userId:p,adUnitCode:u,schain:g,mediaTypes:v,ortb2Imp:D,bidderRequestId:w,bidRequestsCount:$,bidderRequestsCount:z,bidderWinsCount:T}=e,{ext:k}=d;let{bidFloor:O}=d;const x=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"_";const n=e.length;let i=0,r=0;if(n>0)for(;r1&&void 0!==arguments[1]?arguments[1]:f;try{const n=U(e);let i,r=0;n&&n.value&&Date.now()-n.created1&&void 0!==arguments[1]?arguments[1]:m;const n=`u_${e}`,i=Date.now(),r=U(n);let o;!r||!r.value||i-r.created>t?(o=`${e}_${i.toString()}`,q(n,o)):o=r.value;return o}(x),_=U(h)||"",j=R(d),Z=function(){let e=C.getDataFromLocalStorage(I);e||(e=String(Date.now()),C.setDataInLocalStorage(I,e));return e}(),F=c.S.get(l,"storageAllowed"),P=(0,o.Z)(e,"ortb2Imp.ext.gpid",(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot","")),L=(0,o.Z)(i,"ortb2.site.cat",[]),E=(0,o.Z)(i,"ortb2.site.pagecat",[]);if((0,r.isFn)(e.getFloor)){const t=e.getFloor({currency:"USD",mediaType:"*",size:"*"});"USD"===t.currency&&(O=t.floor)}let X={url:encodeURIComponent(t),uqs:y(),cb:Date.now(),bidFloor:O,bidId:a,referrer:i.refererInfo.ref,adUnitCode:u,publisherId:j,sessionId:_,sizes:n,dealId:A,uniqueDealId:M,bidderVersion:b,prebidVersion:"8.20.0",res:`${screen.width}x${screen.height}`,schain:g,mediaTypes:v,ptrace:Z,isStorageAllowed:F,gpid:P,cat:L,pagecat:E,transactionId:D?.ext?.tid,bidderRequestId:w,bidRequestsCount:$,bidderRequestsCount:z,bidderWinsCount:T,bidderTimeout:s,webSessionId:S};!function(e,t){let n;(0,r._each)(t,((t,i)=>{switch(n=`uid.${i}`,i){case"digitrustid":e[n]=(0,o.Z)(t,"data.id");break;case"lipb":e[n]=t.lipbid;break;case"parrableId":e[n]=t.eid;break;case"id5id":e[n]=t.uid;break;default:e[n]=t}}))}(X,p);const N=(0,o.Z)(i,"ortb2.device.sua");return N&&(X.sua=N),i.gdprConsent&&(i.gdprConsent.consentString&&(X.gdprConsent=i.gdprConsent.consentString),void 0!==i.gdprConsent.gdprApplies&&(X.gdpr=i.gdprConsent.gdprApplies?1:0)),i.uspConsent&&(X.usPrivacy=i.uspConsent),i.gppConsent?(X.gppString=i.gppConsent.gppString,X.gppSid=i.gppConsent.applicableSections):i.ortb2?.regs?.gpp&&(X.gppString=i.ortb2.regs.gpp,X.gppSid=i.ortb2.regs.gpp_sid),(0,r._each)(k,((e,t)=>{X["ext."+t]=e})),X}function z(e,t,n,i,r){const{params:o}=e,s=D(o),d=w(o),a=$(e,t,n,i,r);return{method:"POST",url:`${v(d)}/prebid/multi/${s}`,data:a}}function U(e){try{return function(e){try{return JSON.parse(e)}catch(t){return e}}(C.getDataFromLocalStorage(e))}catch(e){}return null}function q(e,t,n){try{const i=n||Date.now(),r=JSON.stringify({value:t,created:i});C.setDataInLocalStorage(e,r)}catch(e){}}const T={code:l,version:b,gvlid:744,supportedMediaTypes:[d.Mk,d.pX],isBidRequestValid:function(e){const t=e.params||{};return!(!D(t)||!R(t))},buildRequests:function(e,t){const n=t.refererInfo.page||t.refererInfo.topmostLocation,i=p.config.getConfig("bidderTimeout"),o=p.config.getConfig("vidazoo.singleRequest"),s=[];if(o){const o=e.filter((e=>(0,r.isArray)(e.mediaTypes)?e.mediaTypes.includes(d.Mk):void 0!==e.mediaTypes[d.Mk]));if(o.length>0){const e=function(e,t,n,i){const{params:o}=e[0],s=D(o),d=w(o),a=e.map((e=>{const o=(0,r.parseSizesInput)(e.sizes);return $(e,n,o,t,i)})),c=Math.min(20,p.config.getConfig("vidazoo.chunkSize")||10);return(0,u.y)(a,c).map((e=>({method:"POST",url:`${v(d)}/prebid/multi/${s}`,data:{bids:e}})))}(o,t,n,i);s.push(...e)}e.filter((e=>void 0!==e.mediaTypes[d.pX])).forEach((e=>{const o=(0,r.parseSizesInput)(e.sizes),d=z(e,n,o,t,i);s.push(d)}))}else e.forEach((e=>{const o=(0,r.parseSizesInput)(e.sizes),d=z(e,n,o,t,i);s.push(d)}));return s},interpretResponse:function(e,t){if(!e||!e.body)return[];const n=p.config.getConfig("vidazoo.singleRequest"),i=(0,o.Z)(t,"data.bidId"),{results:r}=e.body;let s=[];try{return r.forEach(((e,t)=>{const{creativeId:r,ad:o,price:a,exp:c,width:p,height:u,currency:g,bidId:l,advertiserDomains:b,metaData:f,mediaType:m=d.Mk}=e;if(!o||!a)return;const h={requestId:n&&l?l:i,cpm:a,width:p,height:u,creativeId:r,currency:g||"USD",netRevenue:!0,ttl:c||300};f?Object.assign(h,{meta:f}):Object.assign(h,{meta:{advertiserDomains:b||[]}}),m===d.Mk?Object.assign(h,{ad:o}):Object.assign(h,{vastXml:o,mediaType:d.pX}),s.push(h)})),s}catch(e){return[]}},getUserSyncs:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},d=[];const{iframeEnabled:a,pixelEnabled:c}=e,{gdprApplies:p,consentString:u=""}=n,{gppString:g,applicableSections:l}=s,b=t.filter((e=>(0,o.Z)(e,"body.cid"))).map((e=>e.body.cid)).filter(r.uniques);let f=`?cid=${encodeURIComponent(b.join(","))}&gdpr=${p?1:0}&gdpr_consent=${encodeURIComponent(u||"")}&us_privacy=${encodeURIComponent(i||"")}`;return g&&l?.length&&(f+="&gpp="+encodeURIComponent(g),f+="&gpp_sid="+encodeURIComponent(l.join(","))),a&&d.push({type:"iframe",url:`https://sync.cootlogix.com/api/sync/iframe/${f}`}),c&&d.push({type:"image",url:`https://sync.cootlogix.com/api/sync/image/${f}`}),d}};(0,s.dX)(T),(0,i.z)("vidazooBidAdapter")}},e=>{e.O(0,[2284],(()=>{return t=63273,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[15337],{55511:(e,t,r)=>{var i=r(78640),n=r(64358),o=r(20265),a=r(96475),d=r(24679),s=r(14699),p=r(35706),c=r(34614);const u="USD",m=300,l=!0,f="https://prebid-outstream.yieldmo.com/bundle.js",g=["mimes","startdelay","placement","startdelay","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],y=["name","domain","cat","keywords"],b=(0,n.getWindowTop)(),h=2,v=0,I=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[d.Mk,d.pX],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(w(e)||Z(e))&&function(e){if(!Z(e))return!0;const t=(e,t,r)=>{let i=`"${e}" is required`;throw r&&(i+=" when "+r),new Error(i)},r=(e,t,r)=>{throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error(`"${e}"=${t} is invalid${r}`)},i=e=>void 0!==e,a=(t,r,i,n)=>{if(0===t.indexOf("video")){const a="params."+t,d="mediaTypes."+t,s=(0,o.Z)(e,a),p=(0,o.Z)(e,d),c=r(s),u=r(p);return c?s:u||(c?u||i(d,p,n):i(a,s,n),s||p)}{const a=(0,o.Z)(e,t);return r(a)||i(t,a,n),a}};try{a("video.context",(e=>!(0,n.isEmpty)(e)),t),a("params.placementId",(e=>!(0,n.isEmpty)(e)),t),a("video.playerSize",(e=>(0,n.isArrayOfNums)(e,2)||(0,n.isArray)(e)&&e.every((e=>(0,n.isArrayOfNums)(e,2)))),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),a("video.mimes",(e=>i(e)),t),a("video.mimes",(e=>(0,n.isArray)(e)&&e.every((e=>(0,n.isStr)(e)))),r,'array of strings, ex: ["video/mp4"]');const e=a("video.placement",(e=>i(e)),t);return a("video.placement",(e=>e>=1&&e<=5),r),1===e&&(a("video.startdelay",(e=>i(e)),((e,r)=>t(e,r,"placement == 1"))),a("video.startdelay",(e=>(0,n.isNumber)(e)),r,"number, ex: 5")),a("video.protocols",(e=>i(e)),t),a("video.protocols",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=12&&9!=e&&10!=e))),r,"array of numbers between 1 and 12 except for 9 or 10 , ex: [2,3, 7, 11]"),a("video.api",(e=>i(e)),t),a("video.api",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=6))),r,"array of numbers, ex: [2,3]"),a("video.playbackmethod",(e=>!i(e)||(0,n.isArrayOfNums)(e)),r,"array of integers, ex: [2,6]"),a("video.maxduration",(e=>i(e)),t),a("video.maxduration",(e=>(0,n.isInteger)(e)),r),a("video.minduration",(e=>!i(e)||(0,n.isNumber)(e)),r),a("video.skippable",(e=>!i(e)||(0,n.isBoolean)(e)),r),a("video.skipafter",(e=>!i(e)||(0,n.isNumber)(e)),r),a("video.pos",(e=>!i(e)||(0,n.isNumber)(e)),r),a("params.badv",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["ford.com","pepsi.com"]'),a("params.bcat",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,n.logError)(e.message),!1}}(e))},buildRequests:function(e,t){const r=function(e){return!!e.refererInfo?.referer?.includes("pb_force_a")}(t),i=_("/exchange/prebid",r),s=_("/exchange/prebidvideo",r),p=e.filter((e=>w(e))),u=e.filter((e=>Z(e)));let m=[];const l=function(e){if((0,o.Z)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[];if(p.length>0){let e={pbav:"8.20.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:k(),userConsent:JSON.stringify({gdprApplies:(0,o.Z)(t,"gdprConsent.gdprApplies")||"",cmp:(0,o.Z)(t,"gdprConsent.consentString")||"",gpp:(0,o.Z)(t,"gppConsent.gppString")||"",gpp_sid:(0,o.Z)(t,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.Z)(t,"uspConsent")||""};(function(){try{if((0,n.getWindowTop)().location.href)return!0}catch(e){return!1}})()&&(e.pr=b.document&&b.document.referrer||"",e.scrd=b.devicePixelRatio||0,e.title=b.document.title||"",e.w=b.innerWidth,e.h=b.innerHeight);const r=window.navigator.maxTouchPoints;r&&(e.mtp=r),p.forEach((t=>{e.p.push(function(e){const t=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot"),r={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(r.ym_placement_id=e.params.placementId);const t=S(e,d.Mk);t&&(r.bidFloor=t)}t&&(r.gpid=t);const i=(0,o.Z)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(t));const r=N(t,"pubcid");r?e.pubcid=r:t.crumbs&&t.crumbs.pubcid&&(e.pubcid=t.crumbs.pubcid);const i=N(t,"tdid");i&&(e.tdid=i);const n=N(t,"criteoId");n&&(e.cri_prebid=n),t.schain&&(e.schain=JSON.stringify(t.schain)),(0,o.Z)(t,"params.lr_env")&&(e.ats_envelope=t.params.lr_env)})),e.p="["+e.p.toString()+"]",l.length&&(e.eids=JSON.stringify(l));let a=`${i}?${(0,n.parseQueryStringParameters)(e)}`.length-8e3;if(a>0)for(let t=0;t0){const e=function(e,t){const r=e[0].schain;let i={id:e[0].bidderRequestId,tmax:t.timeout||400,at:1,imp:e.map((e=>function(e){const t=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){const t=(0,o.Z)(e,"mediaTypes.video.playerSize");if((0,n.isArrayOfNums)(t,2))return t;if((0,n.isArray)(t)&&(0,n.isArrayOfNums)(t[0],2))return t[0];return null}(e),i={id:e.bidId,tagid:e.adUnitCode,bidfloor:S(e,d.pX),ext:{placement_id:e.params.placementId,tid:(0,o.Z)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},a=(0,o.Z)(e,"mediaTypes.video",{});Object.keys(a).filter((e=>(0,c.q9)(g,e))).forEach((e=>i.video[e]=a[e]));const s=(0,o.Z)(e,"params.video",{});Object.keys(s).filter((e=>(0,c.q9)(g,e))).forEach((e=>i.video[e]=s[e])),i.video.skippable&&(i.video.skip=1,delete i.video.skippable);1!==i.video.placement&&(i.video.startdelay=v,i.video.playbackmethod=[h]);t&&(i.ext.gpid=t);return i}(e))),site:A(e[0],t),device:(0,o.Z)(t,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.Z)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"8.20.0"},ats_envelope:e[0].params.lr_env};r&&(i.schain=r);e[0].auctionId&&(i.auctionId=e[0].auctionId);return function(e,t){const r=t.gdprConsent,i=(0,o.Z)(t,"gppConsent.gppString"),n=(0,o.Z)(t,"gppConsent.applicableSections");i?(0,a.N)(e,"regs.ext.gpp",i):((0,a.N)(e,"regs.ext.gdpr",r&&r.gdprApplies?1:0),(0,a.N)(e,"user.ext.consent",r&&r.consentString?r.consentString:""));n&&n.length>0&&(0,a.N)(e,"regs.ext.gpp_sid",n);const d=(0,o.Z)(t,"uspConsent");!i&&d&&(0,a.N)(e,"regs.ext.us_privacy",d)}(i,t),i}(u,t);l.length&&(e.user={eids:l}),m.push({method:"POST",url:s,data:e})}return m},interpretResponse:function(e,t){let r=[];const i=e.body;if(i.length>0&&i.forEach((e=>{e.cpm>0&&r.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:u,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:d.Mk}}}(e))})),i.seatbid){i.seatbid.reduce(((e,t)=>e.concat(t.bid)),[]).forEach((e=>r.push(function(e,t){const r=(0,c.sE)((0,o.Z)(t,"data.imp")||[],(t=>t.id===e.impid));let i={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:u,netRevenue:l,mediaType:d.pX,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:d.pX}};if(r.video.placement&&1!==r.video.placement){const e=p.Th.install({url:f,config:{width:i.width,height:i.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});e.setRender((function(e){e.renderer.push((()=>{const{id:t,config:r}=e.renderer;window.YMoutstreamPlayer(e,t,r)}))})),i.renderer=e}return i}(e,t))))}return r},getUserSyncs:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const n=[],o="&gdpr="+(r.gdprApplies?1:0),a=`&gdpr_consent=${encodeURIComponent(r.consentString||"")}`,d=`https://ads.yieldmo.com/pbcas?${`us_privacy=${encodeURIComponent(i)}`}${o}${a}`;return e.iframeEnabled?n.push({type:"iframe",url:d+"&type=iframe"}):e.pixelEnabled&&n.push({type:"image",url:d+"&type=image"}),n}};function w(e){return!!(0,o.Z)(e,"mediaTypes.banner")}function Z(e){return!!(0,o.Z)(e,"mediaTypes.video")}function k(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function N(e,t){return"object"==typeof(0,o.Z)(e,"userId")?e.userId[t]:void 0}function S(e,t){let r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:u,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function A(e,t){let r={};const i=(0,n.parseUrl)((0,o.Z)(t,"refererInfo.page"));(0,n.isEmpty)(i)||(r.page=`${i.protocol}://${i.hostname}${i.pathname}`),t.refererInfo?.ref&&(r.ref=t.refererInfo.ref);const a=document.getElementsByTagName("meta").keywords;a&&a.content&&(r.keywords=a.content);const d=(0,o.Z)(e,"params.site");return d&&Object.keys(d).filter((e=>(0,c.q9)(y,e))).forEach((e=>r[e]=d[e])),r}function T(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;const i=e-t[r].length;return t[r]="",i}function _(e,t){return`${t?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com"}${e}`}(0,s.dX)(x),(0,i.z)("yieldmoBidAdapter")}},e=>{var t;t=55511,e(e.s=t)}]);})(),pbjs.processQueue();

5 Alternatives to Express.js (2024)

FAQs

What is the alternative to ExpressJS? ›

Some alternatives to ExpressJS can be used, like Koa, Hapi, Sails, Feather, etc. These are the most popular alternatives to ExpressJS.

Is ExpressJS still used in 2024? ›

Yes, the Express module is good for mobile application development too. It is scalable, speedy, and provides great performance for enterprise-level apps that may need to handle a lot of requests and notifications from users.

What are the alternatives to NodeJS? ›

  • Deno. Deno is a relatively new JavaScript runtime environment that, like Node. ...
  • Go. Go is a popular language for building web applications and backend services. ...
  • Elixir. Elixir is a functional programming language focusing on scalability and fault tolerance. ...
  • Rust. ...
  • Scala. ...
  • Python. ...
  • Ruby. ...
  • ASP.NET.
Feb 19, 2024

Can Next.js replace Express? ›

While ExpressJs is a Node. js-based web application framework to build APIs and server-side applications, NextJs on the other hand is a react-based framework used for creating static websites and SEO optimizations. Therefore, they are not intended to replace one another in any means or ways.

Is nestjs better than Express? ›

Developers may choose Nestjs over Expressjs for its built-in support for TypeScript, dependency injection, and modular architecture, making it suitable for building scalable and large-scale applications.

Do people still use ExpressJS? ›

This framework is one of the most widely used node. js tools, and there's good reason for its immense popularity. Not only is express. js fast, but it is also unopinionated and minimalist, making it ideal for developers seeking flexibility and control over their applications.

Is NodeJS declining? ›

The rumors of Node. js' decline have been greatly exaggerated. This deep dive into the metrics paints a clear picture: Node. js is not only here to stay, but it's actively evolving to meet the demands of modern web development.

Is Fastify better than Express? ›

If you value stability, a wealth of resources, and a vast community, Express is the way to go. However, if you're looking for a faster, more efficient alternative with built-in validation and serialization, Fastify is an excellent option.

Is NodeJS better than ExpressJS? ›

Node JS has an edge in terms of testing libraries, whereas Express's simplicity can make it easier to set up and run tests. Your choice will depend on your testing preferences and project requirements. NodeJS provides a solid foundation for building distinct types of applications, from real-time applications to APIs.

What will replace Node JS? ›

  • Python — #1 alternative to Node.js.
  • ASP.NET Core — #2 alternative to Node.js.
  • Java — #3 alternative to Node.js.
  • Ruby on Rails — #4 alternative to Node.js.
  • Deno — #5 alternative to Node.js.
  • Conclusion.

Where is Node JS not recommended? ›

Not Suitable for Heavy-Computing Apps

Node. js doesn't support multi-threaded programming yet. It is able to serve way more complicated applications than Ruby, but it's not suitable for performing long-running calculations. Heavy computations block the incoming requests, which can lead to decrease of performance .

Is Node JS discontinued? ›

Following the Node. js 16 end of life on September 11, 2023, we are deprecating Node. js 16 for Builds and Functions on January 31, 2025.

Is Flask better than Express? ›

Ultimately, the choice between Flask and Express. js depends on your specific project requirements and development preferences. Here's a reiteration to solidify your decision: For lightweight, performant web applications or rapid prototyping, Flask shines.

Should I learn Express or next? ›

Express is a minimalistic and flexible framework suitable for building lightweight and highly customizable web applications, while Next. js excels at server-side rendering and static site generation, making it a great choice for complex React-based applications.

Is Express JS in demand? ›

It is widely used in the Node. js ecosystem and is known for its simplicity, speed, and ease of use. Express. js is suitable for both small projects as well as large-scale applications, making it a popular choice for web development.

Which is better Node or Express? ›

Your choice will depend on your testing preferences and project requirements. NodeJS provides a solid foundation for building distinct types of applications, from real-time applications to APIs. Expressjs, being a web application framework, excels in structuring web applications with its middleware system.

Is ExpressJS the best framework? ›

Yes, Express. js is a popular and widely used framework for building backend applications with Node. js. It is known for its simplicity, flexibility, and scalability, making it a good choice for many developers and projects.

What is the Python equivalent of ExpressJS? ›

A well-known and unique Python-based web framework, Flask, which was built on minimalist principles, is lightweight. It adheres to the philosophy of little frameworks that provide only the essentials for web development such as routing, templating, and request handling.

Top Articles
How To Check Your Bank Account Balance | Bankrate
FLPSX - Fidelity ® Low-Priced Stock Fund
Fighter Torso Ornament Kit
Maxtrack Live
Lowe's Garden Fence Roll
Nybe Business Id
What happened to Lori Petty? What is she doing today? Wiki
Academic Integrity
Hotels Near 500 W Sunshine St Springfield Mo 65807
Bellinghamcraigslist
Ecers-3 Cheat Sheet Free
Edgar And Herschel Trivia Questions
Herbalism Guide Tbc
Missing 2023 Showtimes Near Landmark Cinemas Peoria
Vanessa West Tripod Jeffrey Dahmer
Mflwer
Classic | Cyclone RakeAmerica's #1 Lawn and Leaf Vacuum
Webcentral Cuny
eHerkenning (eID) | KPN Zakelijk
Pokemon Unbound Shiny Stone Location
Morristown Daily Record Obituary
The Largest Banks - ​​How to Transfer Money With Only Card Number and CVV (2024)
Litter Robot 3 RED SOLID LIGHT
Southwest Flight 238
Cowboy Pozisyon
Joann Fabrics Lexington Sc
Penn State Service Management
031515 828
60 Second Burger Run Unblocked
Craigslist Free Puppy
Dreamcargiveaways
Max 80 Orl
Kokomo Mugshots Busted
De beste uitvaartdiensten die goede rituele diensten aanbieden voor de laatste rituelen
Ewwwww Gif
The Vélodrome d'Hiver (Vél d'Hiv) Roundup
20 Best Things to Do in Thousand Oaks, CA - Travel Lens
159R Bus Schedule Pdf
SF bay area cars & trucks "chevrolet 50" - craigslist
Appraisalport Com Dashboard Orders
062203010
The Angel Next Door Spoils Me Rotten Gogoanime
Craigslist Antique
UWPD investigating sharing of 'sensitive' photos, video of Wisconsin volleyball team
Zipformsonline Plus Login
Raley Scrubs - Midtown
Hkx File Compatibility Check Skyrim/Sse
Suzanne Olsen Swift River
Anthony Weary Obituary Erie Pa
Fishing Hook Memorial Tattoo
Latest Posts
Article information

Author: Ms. Lucile Johns

Last Updated:

Views: 6414

Rating: 4 / 5 (61 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Ms. Lucile Johns

Birthday: 1999-11-16

Address: Suite 237 56046 Walsh Coves, West Enid, VT 46557

Phone: +59115435987187

Job: Education Supervisor

Hobby: Genealogy, Stone skipping, Skydiving, Nordic skating, Couponing, Coloring, Gardening

Introduction: My name is Ms. Lucile Johns, I am a successful, friendly, friendly, homely, adventurous, handsome, delightful person who loves writing and wants to share my knowledge and understanding with you.