@netacea/vercel 0.9.10 → 0.9.11

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("aws4fetch"),t=require("buffer/"),i=require("jose"),a=require("uuid");function o(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}var s,n,r,c=o(i),u=o(a);exports.NetaceaIngestType=void 0,(s=exports.NetaceaIngestType||(exports.NetaceaIngestType={})).ORIGIN="ORIGIN",s.HTTP="HTTP",s.KINESIS="KINESIS",s.NATIVE="NATIVE",exports.NetaceaMitigationType=void 0,(n=exports.NetaceaMitigationType||(exports.NetaceaMitigationType={})).MITIGATE="MITIGATE",n.INJECT="INJECT",n.INGEST="INGEST",function(e){e.CAPTCHA_GET="captcha_get",e.CAPTCHA_POST="captcha_post",e.EXPIRED_SESSION="expired_session",e.FORCED_REVALIDATION="forced_revalidation",e.INVALID_SESSION="invalid_session",e.IP_CHANGE="ip_change",e.NO_SESSION="no_session"}(r||(r={}));const d=3e3;function h(e,t){const i=e.split(";").map((e=>e.trim())).filter((e=>e.toLowerCase().startsWith(t.toLowerCase())))[0];return void 0!==i&&i.length>0?i?.replace(`${t}=`,""):void 0}function p(e,t=!1){return"string"!=typeof e&&(e=e.join("; ")),""===e?"":l(e.split(";"),t).join("; ")}function l(e,t=!1){if(t)return l(e.reverse()).reverse();const i=new Set,a=[];for(let t of e){if(t=t.trimStart(),""===t.trim())continue;const e=t.split("=")[0].toUpperCase();i.has(e)||(i.add(e),a.push(t))}return a}var g=Object.freeze({__proto__:null,configureCookiesDomain:function(e,t){let i=e=p(e??"",!0),a=t=p(t??"",!0);if(void 0!==e&&void 0!==t){const o=h(e,"Domain"),s=h(t,"Domain");void 0!==o&&void 0!==s?a=t.replace(s,o):void 0!==o&&void 0===s?a=t+(""!==t?`; Domain=${o}`:`Domain=${o}`):void 0===o&&void 0!==s&&(i=e+(""!==e?`; Domain=${s}`:`Domain=${s}`))}else if(void 0!==e&&void 0===t){const t=h(e,"Domain");void 0!==t&&(a=`Domain=${t}`)}else if(void 0===e&&void 0!==t){const e=h(t,"Domain");void 0!==e&&(i=`Domain=${e}`)}return{cookieAttributes:""!==i?i:void 0,captchaCookieAttributes:""!==a?a:void 0}},extractAndRemoveCookieAttr:function(e,t){const i=h(e,t);if(void 0!==i){return{extractedAttribute:i,cookieAttributes:e.replace(/ /g,"").replace(`${t}=${i}`,"").split(";").filter((e=>e.length>0)).join("; ")}}return{extractedAttribute:void 0,cookieAttributes:e}},extractCookieAttr:h,removeDuplicateAttrs:p});function f(e){const t=p([e.otherAttributes??"",`Max-Age=${e.maxAgeAttribute??86400}`,"Path=/"].join("; "));return`${e.cookieName}=${e.cookieValue}; ${t}`}var y=Object.freeze({__proto__:null,createNetaceaCaptchaSetCookieString:function(e){return f({...e,cookieName:e.cookieName??"_mitatacaptcha"})},createNetaceaSetCookieString:function(e){return f({...e,cookieName:e.cookieName??"_mitata"})},createSetCookieString:f});var m=Object.freeze({__proto__:null,parseSetCookie:function(e){const t=e.indexOf("=");if(t<0)throw new Error("Could not parse the given set-cookie value.");const i=e.slice(0,t),a=e.slice(t+1),o=a.indexOf(";");if(o<0){return{name:i,value:a,attributes:""}}return{name:i,value:a.slice(0,o),attributes:a.slice(o).trimStart()}}});const C={cookie:{parse:m,attributes:g,netaceaSession:y}},S=globalThis.fetch.bind(globalThis),k={none:"",block:"block",captcha:"captcha",allow:"allow",captchaPass:"captchapass",monetise:"monetise",flag:"flag"},I="x-netacea-mitatacaptcha-value",v="x-netacea-mitatacaptcha-expiry",w={0:"",1:"ua_",2:"ip_",3:"visitor_",4:"datacenter_",5:"customer_session_",6:"organisation_",7:"asn_",8:"country_",9:"combination_",b:"headerFP_",c:"vendorFamily_",d:"vendorName_",e:"vendor_",f:"vendorCrawlerClassification_"},E={0:"",1:"blocked",2:"allow",3:"hardblocked",4:"flagged",5:"monetised"},N={0:"",1:"captcha_serve",2:"captcha_pass",3:"captcha_fail",4:"captcha_cookiepass",5:"captcha_cookiefail",6:"checkpoint_signal",7:"checkpoint_post",a:"checkpoint_serve",b:"checkpoint_pass",c:"checkpoint_fail",d:"checkpoint_cookiepass",e:"checkpoint_cookiefail"},A={0:k.none,1:k.block,2:k.none,3:k.block,4:k.flag,5:k.monetise},b={1:k.captcha,2:k.captchaPass,3:k.captcha,4:k.allow,5:k.captcha,6:k.allow,7:k.captcha,a:k.captcha,b:k.captchaPass,c:k.captcha,d:k.allow,e:k.captcha},_="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),T=/^(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/((\d|[a-z])(\d)(\d|[a-z]))$/i;function O(e=16,t=_){const i=new Uint16Array(e-1);crypto.getRandomValues(i);return`c${Array.from(i).map((e=>t[e%t.length])).join("")}`}async function P(e,t){const i=await async function(e){return await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign","verify"])}(function(e){return"string"==typeof e?(new TextEncoder).encode(e):e}(t));return new Uint8Array(await crypto.subtle.sign("HMAC",i,e))}var R,x="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},K={},M={};Object.defineProperty(M,"__esModule",{value:!0}),M.NetaceaCookieV3IssueReason=void 0,function(e){e.CAPTCHA_GET="captcha_get",e.CAPTCHA_POST="captcha_post",e.EXPIRED_SESSION="expired_session",e.FORCED_REVALIDATION="forced_revalidation",e.INVALID_SESSION="invalid_session",e.IP_CHANGE="ip_change",e.NO_SESSION="no_session",e.UNKNOWN="unknown"}(R||(M.NetaceaCookieV3IssueReason=R={}));var V={},H={},D={};Object.defineProperty(D,"__esModule",{value:!0}),D.netaceaCookieV3OptionalKeyMap=D.netaceaCookieV3KeyMap=D.COOKIEDELIMITER=void 0,D.COOKIEDELIMITER="_/@#/",D.netaceaCookieV3KeyMap={clientIP:"cip",userId:"uid",gracePeriod:"grp",cookieId:"cid",match:"mat",mitigate:"mit",captcha:"cap",issueTimestamp:"ist",issueReason:"isr"},D.netaceaCookieV3OptionalKeyMap={checkAllPostRequests:"fCAPR"},Object.defineProperty(H,"__esModule",{value:!0}),H.defaultInvalidResponse=H.matchNetaceaCookieV3=H.checkNetaceaCookieV3=H.objectIsNetaceaCookieV3=H.cookieIsNetaceaV3Format=H.createNetaceaCookieV3=void 0;const j=M,L=D;function F(e){if(void 0===e||""===e)return;const t=e.split("&"),i={clientIP:"",userId:"",cookieId:"",gracePeriod:0,match:"0",mitigate:"0",captcha:"0",issueTimestamp:0,issueReason:"",checkAllPostRequests:void 0};for(const e of t){const[t,a]=e.split("="),o=decodeURIComponent(a);let s,n=Object.keys(L.netaceaCookieV3KeyMap).find((e=>L.netaceaCookieV3KeyMap[e]===t));void 0===n&&(n=Object.keys(L.netaceaCookieV3OptionalKeyMap).find((e=>L.netaceaCookieV3OptionalKeyMap[e]===t))),s=void 0!==n&&["match","mitigate","captcha"].includes(n)?""===o?void 0:o:""===o?void 0:Number(o),void 0!==s&&"string"!=typeof s&&isNaN(s)&&(s=o),i[n]=s}return i}function q(){return{mitata:void 0,requiresReissue:!1,isExpired:!1,shouldExpire:!1,isSameIP:!1,isPrimaryHashValid:!1,captcha:"0",match:"0",mitigate:"0",issueReason:j.NetaceaCookieV3IssueReason.NO_SESSION}}H.createNetaceaCookieV3=function(e){return Object.entries(e).filter((([e,t])=>void 0!==t)).map((([e,t])=>e in L.netaceaCookieV3OptionalKeyMap?`${L.netaceaCookieV3OptionalKeyMap[e]}=${encodeURIComponent(t)}`:`${L.netaceaCookieV3KeyMap[e]}=${encodeURIComponent(t)}`)).join("&")},H.cookieIsNetaceaV3Format=function(e){if(void 0===e||""===e)return!1;const t=e.split("&").map((e=>e.split("=")[0])).filter((e=>!Object.values(L.netaceaCookieV3OptionalKeyMap).includes(e)));return 0!==t.length&&t.every((e=>Object.values(L.netaceaCookieV3KeyMap).includes(e)))},H.objectIsNetaceaCookieV3=function(e){if("object"!=typeof e||null===e)return!1;for(const t of Object.keys(L.netaceaCookieV3KeyMap)){if(!(t in e))return!1;if(void 0===e[t])return!1}return!0},H.checkNetaceaCookieV3=function(e,t){if(void 0===e||""===e)return q();let i;try{i=F(e)}catch{return q()}if(void 0!==i){const e=Math.floor(Date.now()/1e3),a=i.issueTimestamp+i.gracePeriod<e,o=t===i.clientIP,s=["1","3","5","a","c","e"].includes(i.captcha),n="3"===i.mitigate;return{mitata:i,requiresReissue:a||!o,isExpired:a,shouldExpire:s||n,isSameIP:o,isPrimaryHashValid:!0,match:i.match,mitigate:i.mitigate,captcha:i.captcha,issueReason:i.issueReason}}return q()},H.matchNetaceaCookieV3=F,H.defaultInvalidResponse=q;var $={};Object.defineProperty($,"__esModule",{value:!0}),$.AbstractCookieFactory=void 0;const U=M,B=H,G=D,z="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),W=/^(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/((\d|[a-z])(\d)(\d|[a-z]))$/i;$.AbstractCookieFactory=class{constructor(e){this.config=e}isEncrypted(e){return 5===e.split(".").length}async createCookieValue(e){if(void 0!==this.config.cookieEncryptionKey){const t=(0,B.createNetaceaCookieV3)({clientIP:e.clientIP,userId:e.userId??this.generateUserId(),match:e.match,mitigate:e.mitigate,captcha:e.captcha,gracePeriod:e.gracePeriod,cookieId:e.cookieId,issueTimestamp:Math.floor(Date.now()/1e3),issueReason:e.issueReason??U.NetaceaCookieV3IssueReason.NO_SESSION,checkAllPostRequests:e.checkAllPostRequests});return await this.encrypt(t)}if(void 0===this.config.secretKey)throw new Error("Cannot build cookie without secret key.");const t=[e.match,e.mitigate,e.captcha].join(""),i=Math.floor(Date.now()/1e3)+e.gracePeriod;return await this.buildMitataCookie(e.clientIP,e.userId,i,this.config.secretKey,t)}async retrieveCookieInfo(e,t){if(void 0===e||""===e)return(0,B.defaultInvalidResponse)();let i=e;return this.isEncrypted(e)&&(i=await this.decrypt(e)),(0,B.cookieIsNetaceaV3Format)(i)?(0,B.checkNetaceaCookieV3)(i,t):await this.checkMitataCookie(i,t,this.config.secretKey??"")}async buildMitataCookie(e,t,i,a,o){const s=[i,t??this.generateUserId(),await this.hash(`${e}|${String(i)}`,a),o].join(G.COOKIEDELIMITER);return`${await this.hash(s,a)}${G.COOKIEDELIMITER}${s}`}async checkMitataCookie(e,t,i){const a=function(e){const t=e.match(W);if(null===t)return;const[,i,a,o,s,n,r,c,u]=t;return{signature:i,expiry:a,userId:o,ipHash:s,mitigationType:n,match:r,mitigate:c,captcha:u}}(e);if(void 0===a)return(0,B.defaultInvalidResponse)();const o=Math.floor(Date.now()/1e3),s=parseInt(a.expiry)<o,n=["1","3","5"].includes(a.captcha),r="3"===a.mitigate,c=n||r,u=await this.hash(`${t}|${a.expiry}`,i)===a.ipHash,d=[a.expiry,a.userId,a.ipHash,a.mitigationType].join(G.COOKIEDELIMITER);return{mitata:a,requiresReissue:s||!u,isExpired:s,shouldExpire:c,isSameIP:u,isPrimaryHashValid:await this.hash(d,i)===a.signature,match:a.match,mitigate:a.mitigate,captcha:a.captcha,issueReason:U.NetaceaCookieV3IssueReason.NO_SESSION}}generateUserId(e=16){const t=new Uint16Array(e-1);this.getRandomValues(t);return`c${Array.from(t).map((e=>z[e%z.length])).join("")}`}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NetaceaCookieV3IssueReason=e.COOKIEDELIMITER=e.netaceaCookieV3OptionalKeyMap=e.netaceaCookieV3KeyMap=e.AbstractCookieFactory=e.defaultInvalidResponse=e.objectIsNetaceaCookieV3=e.cookieIsNetaceaV3Format=e.matchNetaceaCookieV3=e.checkNetaceaCookieV3=e.createNetaceaCookieV3=void 0;var t=H;Object.defineProperty(e,"createNetaceaCookieV3",{enumerable:!0,get:function(){return t.createNetaceaCookieV3}}),Object.defineProperty(e,"checkNetaceaCookieV3",{enumerable:!0,get:function(){return t.checkNetaceaCookieV3}}),Object.defineProperty(e,"matchNetaceaCookieV3",{enumerable:!0,get:function(){return t.matchNetaceaCookieV3}}),Object.defineProperty(e,"cookieIsNetaceaV3Format",{enumerable:!0,get:function(){return t.cookieIsNetaceaV3Format}}),Object.defineProperty(e,"objectIsNetaceaCookieV3",{enumerable:!0,get:function(){return t.objectIsNetaceaCookieV3}}),Object.defineProperty(e,"defaultInvalidResponse",{enumerable:!0,get:function(){return t.defaultInvalidResponse}});var i=$;Object.defineProperty(e,"AbstractCookieFactory",{enumerable:!0,get:function(){return i.AbstractCookieFactory}});var a=D;Object.defineProperty(e,"netaceaCookieV3KeyMap",{enumerable:!0,get:function(){return a.netaceaCookieV3KeyMap}}),Object.defineProperty(e,"netaceaCookieV3OptionalKeyMap",{enumerable:!0,get:function(){return a.netaceaCookieV3OptionalKeyMap}}),Object.defineProperty(e,"COOKIEDELIMITER",{enumerable:!0,get:function(){return a.COOKIEDELIMITER}});var o=M;Object.defineProperty(e,"NetaceaCookieV3IssueReason",{enumerable:!0,get:function(){return o.NetaceaCookieV3IssueReason}})}(V);var J={};Object.defineProperty(J,"__esModule",{value:!0}),J.validateRedirectLocation=void 0,J.validateRedirectLocation=function(e){if(""!==(e=e??""))try{return new URL(e).toString()}catch{if(/^https?:\/\//i.test(e))return;return e.startsWith("/")?e:`/${e}`}};var X={},Y={};function Q(e,t){for(const i of Object.keys(e)){if("cookie"!==i&&"Cookie"!==i)continue;const a=e[i]??"",o=ee("string"==typeof a?a:a.join("; "),t);if(void 0!==o)return o}}function Z(e,t){const i=[];for(const a of Object.keys(e)){if("cookie"!==a&&"Cookie"!==a)continue;const o=e[a]??"",s="string"==typeof o?o:o.join("; ");i.push(...te(s,t))}return i}function ee(e,t){const i=t+"=";return e.split(";").map((e=>e.trimStart())).find((e=>e.startsWith(i)))}function te(e,t){const i=t+"=";return e.split(";").map((e=>e.trimStart())).filter((e=>e.startsWith(i)))}Object.defineProperty(Y,"__esModule",{value:!0}),Y.findAllInCookieString=Y.findFirstInCookieString=Y.findAllInHeaders=Y.findFirstInHeaders=Y.findOnlyValueInHeaders=Y.findAllValuesInHeaders=Y.findFirstValueInHeaders=void 0,Y.findFirstValueInHeaders=function(e,t){const i=Q(e,t);if(void 0!==i)return i.slice(t.length+1)},Y.findAllValuesInHeaders=function(e,t){return Z(e,t).map((e=>e.slice(t.length+1)))},Y.findOnlyValueInHeaders=function(e,t){const i=Z(e,t);if(i.length>1)throw new Error(`Found more than one cookie with name ${t}`);return i[0]?.slice(t.length+1)},Y.findFirstInHeaders=Q,Y.findAllInHeaders=Z,Y.findFirstInCookieString=ee,Y.findAllInCookieString=te;var ie={};function ae(e){return"set-cookie"===e||"Set-Cookie"===e}function oe(e,t){const i=t+"=";return e.startsWith(i)}function se(e,t){if(!oe(e,t))throw new Error(`Cookie '${t}' not found in '${e}'`);return e.slice(t.length+1).split(";")[0]}function ne(e,t){const i=e[t]??[];return"string"==typeof i?[i]:i}function re(e,t){for(const i of Object.keys(e)){if(!ae(i))continue;const a=ce(ne(e,i),t);if(void 0!==a)return a}}function ce(e,t){return e.map((e=>e.trimStart())).find((e=>oe(e,t)))}function ue(e,t){const i=[];for(const a of Object.keys(e)){if(!ae(a))continue;const o=ne(e,a);i.push(...de(o,t))}return i}function de(e,t){return e.map((e=>e.trimStart())).filter((e=>oe(e,t)))}Object.defineProperty(ie,"__esModule",{value:!0}),ie.findAllInSetCookieStrings=ie.findAllInHeaders=ie.findValueInSetCookieStrings=ie.findFirstInSetCookieStrings=ie.findFirstInHeaders=ie.findOnlyValueInHeaders=ie.findFirstValueInHeaders=ie.parseValueFromString=void 0,ie.parseValueFromString=se,ie.findFirstValueInHeaders=function(e,t){const i=re(e,t);return void 0!==i?se(i,t):void 0},ie.findOnlyValueInHeaders=function(e,t){const i=ue(e,t);if(i.length>1)throw new Error(`Found more than one set-cookie with name ${t}`);return void 0!==i[0]?se(i[0],t):void 0},ie.findFirstInHeaders=re,ie.findFirstInSetCookieStrings=ce,ie.findValueInSetCookieStrings=function(e,t){const i=ce(e,t);if(void 0!==i)return se(i,t)},ie.findAllInHeaders=ue,ie.findAllInSetCookieStrings=de;var he=x&&x.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var o=Object.getOwnPropertyDescriptor(t,i);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,o)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),pe=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),le=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&he(t,e,i);return pe(t,e),t};Object.defineProperty(X,"__esModule",{value:!0}),X.setCookie=X.cookie=void 0,X.cookie=le(Y),X.setCookie=le(ie);var ge={},fe={},ye={};Object.defineProperty(ye,"__esModule",{value:!0}),ye.KINESIS_URL=ye.API_VERSION=ye.REGION=ye.PAYLOAD_TYPE=ye.STATE=void 0,ye.STATE={ACTIVE:"ACTIVE",UPDATING:"UPDATING",CREATING:"CREATING",DELETING:"DELETING"},ye.PAYLOAD_TYPE="string",ye.REGION="eu-west-1",ye.API_VERSION="2013-12-02",ye.KINESIS_URL="https://kinesis.eu-west-1.amazonaws.com";var me={};Object.defineProperty(me,"__esModule",{value:!0}),me.headersToRecord=me.increaseBatchSize=me.handleFailedLogs=me.batchArrayForKinesis=me.sleep=void 0,me.sleep=async function(e){await new Promise((t=>{setTimeout(t,e)}))},me.batchArrayForKinesis=function(e,t,i){const a=[];for(let o=0;o<e.length;o+=t){const s=e.slice(o,o+t);a.push({Data:i.from(JSON.stringify(s)).toString("base64"),PartitionKey:Date.now().toString()})}return a},me.handleFailedLogs=function(e,t,i){const a=2*i,o=[...e,...t],s=o.length-a;return s>0&&(console.error(`Netacea Error :: failed to send ${s} log(s) to Kinesis ingest.`),o.splice(0,s)),o},me.increaseBatchSize=function(e,t){return e!==t?Math.min(t,2*e):e},me.headersToRecord=function(e){const t={};return e.forEach(((e,i)=>{t[i]=e})),t},Object.defineProperty(fe,"__esModule",{value:!0}),fe.WebStandardKinesis=void 0;const Ce=ye,Se=me;fe.WebStandardKinesis=class{constructor({deps:e,kinesisIngestArgs:t}){if(this.maxLogBatchSize=20,this.maxLogAgeSeconds=10,this.logBatchSize=20,this.logCache=[],this.intervalSet=!1,this.deps=e,void 0===t.kinesisAccessKey)throw new Error("kinesisAccessKey is required for kinesis ingest");if(void 0===t.kinesisSecretKey)throw new Error("kinesisSecretKey is required for kinesis ingest");this.kinesisStreamName=t.kinesisStreamName,this.kinesisAccessKey=t.kinesisAccessKey,this.kinesisSecretKey=t.kinesisSecretKey,this.maxAwaitTimePerIngestCallMs=t.maxAwaitTimePerIngestCallMs,void 0!==t.maxLogAgeSeconds&&t.maxLogAgeSeconds<this.maxLogAgeSeconds&&t.maxLogAgeSeconds>0&&(this.maxLogAgeSeconds=t.maxLogAgeSeconds),void 0!==t.logBatchSize&&(this.maxLogBatchSize=t.logBatchSize),this.logBatchSize=!0===t.rampUpBatchSize?1:this.maxLogBatchSize}async putToKinesis(){if(0===this.logCache.length)return;const e=[...this.logCache];this.logCache=[];try{const t=new this.deps.AwsClient({accessKeyId:this.kinesisAccessKey,secretAccessKey:this.kinesisSecretKey}),i=await this.signRequest(t,{streamName:this.kinesisStreamName,accessKeyId:this.kinesisAccessKey,secretAccessKey:this.kinesisSecretKey},e,this.logBatchSize);await this.deps.makeRequest({headers:(0,Se.headersToRecord)(i.headers),host:Ce.KINESIS_URL,method:"POST",path:"/",body:i.body}),this.logBatchSize=(0,Se.increaseBatchSize)(this.logBatchSize,this.maxLogBatchSize)}catch(t){this.logCache=(0,Se.handleFailedLogs)(this.logCache,e,this.maxLogBatchSize)}}async ingest(e){if(this.logCache.push(e),this.logCache.length>=this.logBatchSize){const e=[];e.push(this.putToKinesis()),void 0!==this.maxAwaitTimePerIngestCallMs&&e.push((0,Se.sleep)(this.maxAwaitTimePerIngestCallMs)),await Promise.race(e)}else if(!this.intervalSet){this.intervalSet=!0;const e=(0,Se.sleep)(1e3*this.maxLogAgeSeconds).then((async()=>{await this.putToKinesis(),this.intervalSet=!1})).catch((()=>{}));void 0===this.maxAwaitTimePerIngestCallMs&&await e}}async signRequest(e,t,i,a){const o={Records:(0,Se.batchArrayForKinesis)(i,a,this.deps.Buffer),PartitionKey:Date.now().toString(),StreamName:t.streamName};return await e.sign(Ce.KINESIS_URL,{body:JSON.stringify(o),method:"POST",headers:{"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"Kinesis_20131202.PutRecords"}})}};var ke={};Object.defineProperty(ke,"__esModule",{value:!0}),ke.Kinesis=void 0;const Ie=ye,ve=me;ke.Kinesis=class{constructor({deps:e,kinesisIngestArgs:t}){this.maxLogBatchSize=20,this.maxLogAgeSeconds=10,this.logBatchSize=20,this.logCache=[],this.intervalSet=!1,this.deps=e,this.kinesisStreamName=t.kinesisStreamName,this.kinesisAccessKey=t.kinesisAccessKey,this.kinesisSecretKey=t.kinesisSecretKey,this.maxAwaitTimePerIngestCallMs=t.maxAwaitTimePerIngestCallMs,void 0!==t.maxLogAgeSeconds&&t.maxLogAgeSeconds<this.maxLogAgeSeconds&&t.maxLogAgeSeconds>0&&(this.maxLogAgeSeconds=t.maxLogAgeSeconds),void 0!==t.logBatchSize&&(this.maxLogBatchSize=t.logBatchSize),this.logBatchSize=!0===t.rampUpBatchSize?1:this.maxLogBatchSize}async putToKinesis(){if(0===this.logCache.length)return;const e=[...this.logCache];this.logCache=[];try{const t=this.signRequest({streamName:this.kinesisStreamName,accessKeyId:this.kinesisAccessKey,secretAccessKey:this.kinesisSecretKey},e,this.logBatchSize);if("POST"!==t.method)throw new Error(`Unexpected method. Expected POST but got ${t.method}`);await this.deps.makeRequest({headers:t.headers??{},host:`https://${t.hostname}`,method:t.method,path:t.path??"/",body:t.body}),this.logBatchSize=(0,ve.increaseBatchSize)(this.logBatchSize,this.maxLogBatchSize)}catch(t){this.logCache=(0,ve.handleFailedLogs)(this.logCache,e,this.maxLogBatchSize)}}async ingest(e){if(this.logCache.push(e),this.logCache.length>=this.logBatchSize){const e=[];e.push(this.putToKinesis()),void 0!==this.maxAwaitTimePerIngestCallMs&&e.push((0,ve.sleep)(this.maxAwaitTimePerIngestCallMs)),await Promise.race(e)}else if(!this.intervalSet){this.intervalSet=!0;const e=(0,ve.sleep)(1e3*this.maxLogAgeSeconds).then((async()=>{await this.putToKinesis(),this.intervalSet=!1})).catch((()=>{}));void 0===this.maxAwaitTimePerIngestCallMs&&await e}}signRequest(e,t,i){const{accessKeyId:a,secretAccessKey:o}=e,s={Records:(0,ve.batchArrayForKinesis)(t,i,this.deps.Buffer),PartitionKey:Date.now().toString(),StreamName:e.streamName};return this.deps.aws4.sign({service:"kinesis",body:JSON.stringify(s),headers:{"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"Kinesis_20131202.PutRecords"},region:Ie.REGION},{accessKeyId:a,secretAccessKey:o})}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Kinesis=e.WebStandardKinesis=void 0;var t=fe;Object.defineProperty(e,"WebStandardKinesis",{enumerable:!0,get:function(){return t.WebStandardKinesis}});var i=ke;Object.defineProperty(e,"Kinesis",{enumerable:!0,get:function(){return i.Kinesis}})}(ge);var we={};function Ee(e,t){let i=null;if("number"==typeof e)i=e;else if("string"==typeof e){const t=parseFloat(e);isNaN(t)||(i=t)}if(null===i){if("number"!=typeof t.defaultValue)return t.defaultValue;i=t.defaultValue}return void 0!==t.minValue&&(i=Math.max(t.minValue,i)),void 0!==t.maxValue&&(i=Math.min(t.maxValue,i)),i}Object.defineProperty(we,"__esModule",{value:!0}),we.parseHttpHeaderName=we.stringOrDefault=we.parseIntOrDefault=we.parseNumberOrDefault=void 0,we.parseNumberOrDefault=Ee,we.parseIntOrDefault=function(e,t){const i=Ee(e,t);return"number"==typeof i?Math.floor(i):i},we.stringOrDefault=function(e,t){return"string"==typeof e&&""!==e?e:"number"==typeof e?e.toString():t},we.parseHttpHeaderName=function(e){if("string"!=typeof e)return;return/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(e)?e:void 0};var Ne={};Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.searchParamsFromRecord=void 0,Ne.searchParamsFromRecord=function(e){const t=new URLSearchParams;for(const[i,a]of Object.entries(e))t.append(i,a);return t};var Ae={},be={};Object.defineProperty(be,"__esModule",{value:!0}),be.JweFactory=void 0;be.JweFactory=class{constructor(e){this.jose=e}async encrypt(e,t,i="A128CBC-HS256"){const a=this.jose.base64url.decode(t),o=(new TextEncoder).encode(e);return await new this.jose.CompactEncrypt(o).setProtectedHeader({alg:"dir",enc:i}).encrypt(a)}async decrypt(e,t){const i=this.jose.base64url.decode(t),{plaintext:a}=await this.jose.compactDecrypt(e,i,{keyManagementAlgorithms:["dir"],contentEncryptionAlgorithms:["A256GCM","A128CBC-HS256"]});return(new TextDecoder).decode(a)}static isJweEncrypted(e){return 5===e.split(".").length&&e.includes("..")}};var _e=x&&x.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var o=Object.getOwnPropertyDescriptor(t,i);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,o)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),Te=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oe=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&_e(t,e,i);return Te(t,e),t};Object.defineProperty(Ae,"__esModule",{value:!0}),Ae.jwe=void 0,Ae.jwe=Oe(be);var Pe,Re={};var xe={};Object.defineProperty(xe,"__esModule",{value:!0}),xe.RequestView=xe.AbstractRequestView=void 0;const Ke=we;class Me{get contentLength(){return(0,Ke.parseIntOrDefault)(this.readHeader("content-length")?.[0],{defaultValue:0,minValue:0,maxValue:Number.MAX_SAFE_INTEGER})}get userAgent(){return this.readHeader("user-agent")?.[0]??""}get contentType(){return this.readHeader("content-type")?.[0]}get xForwardedFor(){return this.readHeader("x-forwarded-for")?.[0]}get referer(){return this.readHeader("referer")?.[0]}get accept(){return this.readHeader("accept")?.[0]}get host(){return this.readHeader("host")?.[0]}async getHttpMessageSignatureFields(){const e=this.readJoinedHeader("Signature");return{httpMsgSigSha256:void 0===e?void 0:(await this.sha256Hash(e)).toLowerCase().slice(0,12),httpMsgSigInput:this.readJoinedHeader("Signature-Input"),httpMsgSigAgent:this.readJoinedHeader("Signature-Agent")}}readJoinedHeader(e){const t=this.readHeader(e).join(",");return""!==t?t:void 0}}xe.AbstractRequestView=Me;xe.RequestView=class extends Me{constructor(e,t){super(),this.request=e,this.sha256Digest=t}get method(){return this.request.method}get url(){return new URL(this.request.url)}async getBody(){return void 0===this._body&&(this._body=await this.request.clone().text()??""),this._body}readHeader(e){const t=this.request.headers.get(e)??void 0;return void 0!==t?[t]:[]}async sha256Hash(e){const t=(new TextEncoder).encode(e),i=await this.sha256Digest.digest("SHA-256",t);return Array.from(new Uint8Array(i)).map((e=>e.toString(16).padStart(2,"0"))).join("")}};var Ve={};Object.defineProperty(Ve,"__esModule",{value:!0}),Ve.ProtectorApiResponseView=Ve.AbstractProtectorApiResponseView=void 0;const He=we;class De{get redirectHost(){return this.readHeader("x-netacea-redirect-host")?.[0]}get redirectLocation(){return this.readHeader("x-netacea-redirect-location")?.[0]}get redirectStatus(){return this.readHeader("x-netacea-redirect-status")?.[0]}get redirectStatusCode(){const e=this.readHeader("x-netacea-redirect-status")?.[0];if(void 0===e)return;const t=(0,He.parseIntOrDefault)(e,{defaultValue:0,minValue:0,maxValue:Number.MAX_SAFE_INTEGER});return t>=300&&t<400?t:void 0}get eventId(){return this.readHeader("x-netacea-event-id")?.[0]}get sessionCookieMaxAge(){return(0,He.parseIntOrDefault)(this.readHeader("x-netacea-mitata-expiry")?.[0],{defaultValue:86400,minValue:0,maxValue:Number.MAX_SAFE_INTEGER})}get captchaCookieMaxAge(){const e=this.readHeader("x-netacea-mitatacaptcha-expiry")?.[0];return(0,He.parseIntOrDefault)(e,{defaultValue:86400,minValue:0,maxValue:Number.MAX_SAFE_INTEGER})}getProtectorCodes(e){return{match:this.readHeader("x-netacea-match")?.[0]??e?.match??"0",mitigate:this.readHeader("x-netacea-mitigate")?.[0]??e?.mitigate??"0",captcha:this.readHeader("x-netacea-captcha")?.[0]??e?.captcha??"0"}}getMonetisationRedirectLocation(e,t){const i=this.redirectLocation;if(void 0!==i)return i;const a=this.redirectHost;if(void 0!==a){const i=new URL(`https://${a}`);return i.pathname=e,i.search=t,i.toString()}}getMonetisationRedirect(e,t){const i=this.getMonetisationRedirectLocation(e,t);if(void 0!==i)return{location:i,statusCode:this.redirectStatusCode??303}}async getCaptchaJson(e,t){const i=await this.getBody();let a=this.eventId;if(void 0===a&&"string"==typeof i){a=function(e){if(null==e||"object"!=typeof e)throw new Error("Response body is not a valid object!");const{trackingId:t}=e;if("string"!=typeof t||0===t.length)throw new Error("Response body does not contain a valid trackingId!");return t}(JSON.parse(i))}if(void 0===a)throw new Error("Could not resolve Tracking ID for captcha event.");return function(e,t,i){const a=`${e}?trackingId=${i}`,o=void 0!==t?`https://${t}${a}`:void 0;return JSON.stringify({captchaRelativeURL:a,captchaAbsoluteURL:o})}(e,t,a)}}Ve.AbstractProtectorApiResponseView=De;var je;function Le(){return je||(je=1,function(e){var t=x&&x.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var o=Object.getOwnPropertyDescriptor(t,i);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,o)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),i=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&t(a,e,o);return i(a,e),a},o=x&&x.__exportStar||function(e,i){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(i,a)||t(i,e,a)};Object.defineProperty(e,"__esModule",{value:!0}),e.graphql=e.webcrypto=e.url=e.parsing=e.ingest=e.headers=e.configValidation=e.cookie=e.NetaceaCookieV3IssueReason=void 0;var s=M;Object.defineProperty(e,"NetaceaCookieV3IssueReason",{enumerable:!0,get:function(){return s.NetaceaCookieV3IssueReason}}),e.cookie=a(V),e.configValidation=a(J),e.headers=a(X),e.ingest=a(ge),e.parsing=a(we),e.url=a(Ne),e.webcrypto=a(Ae),e.graphql=a(function(){if(Pe)return Re;Pe=1,Object.defineProperty(Re,"__esModule",{value:!0}),Re.truncateLongFields=Re.parseGraphQl=Re.parseGraphQlRequestBody=Re.getGraphQLParserConfig=void 0;const e=Le();function t(e,t){const i=e.parserRegex;return t.match(i)?.groups??{}}function i(e,t){const i=e.maxValueLength;for(const e of Object.keys(t)){const s=t[e];t[e]=(o=i,(a=s).length<=o?a:a.slice(0,o)+"…")}var a,o;return t}return Re.getGraphQLParserConfig=function(t){const i={includePaths:[],maxParsableBytes:e.parsing.parseIntOrDefault(t?.maxParsableBytes,{defaultValue:1e6,minValue:1e3}),maxValueLength:e.parsing.parseIntOrDefault(t?.maxValueLength,{defaultValue:256,minValue:8}),parserRegex:/^\s*(?<OpType>query|mutation|subscription)\s+(?<OpName>[_A-Za-z][_0-9A-Za-z]+)?/,useStrictAcceptHeaderCheck:t?.useStrictAcceptHeaderCheck??!0};if(Array.isArray(t?.includePaths))for(const e of t.includePaths)"string"==typeof e&&i.includePaths.push(e);try{if(t?.parserRegex instanceof RegExp)i.parserRegex=t?.parserRegex;else if("object"==typeof t?.parserRegex){const{regex:e,flags:a}=t?.parserRegex;"string"==typeof e&&(i.parserRegex=new RegExp(e,a))}}catch{}return i},Re.parseGraphQlRequestBody=function(e,a){if(""===a)throw new Error("Netacea Error: Empty GraphQL body received");const o=JSON.parse(a);if("object"!=typeof o)throw new Error("Netacea Error: Invalid GraphQL JSON");const s={...t(e,o?.query??"")},n=(o?.operationName??"").trim();return""!==n&&(s.OpName=n),i(e,s)},Re.parseGraphQl=t,Re.truncateLongFields=i,Re}()),o(xe,e),o(Ve,e)}(K)),K}Ve.ProtectorApiResponseView=class extends De{constructor(e){super(),this.response=e}get status(){return this.response.status}async getBody(){return void 0===this._body&&(this._body=await this.response.clone().text()??""),this._body}readHeader(e){if("set-cookie"===(e=e.toLowerCase()))return this.response.headers.getSetCookie();const t=this.response.headers.get(e)??void 0;return void 0!==t?[t]:[]}};var Fe=Le();const qe=new Fe.webcrypto.jwe.JweFactory(c);class $e extends Fe.cookie.AbstractCookieFactory{async encrypt(e){if(void 0===this.config.cookieEncryptionKey)throw new Error("VercelCookieFactory.encrypt called without a configured encryption key");return await qe.encrypt(e,this.config.cookieEncryptionKey,"A256GCM")}async decrypt(e){if(void 0===this.config.cookieEncryptionKey)throw new Error("VercelCookieFactory.decrypt called without a configured encryption key");return await qe.decrypt(e,this.config.cookieEncryptionKey)}async hash(e,i){const a=await P(t.Buffer.from(e),i),o=t.Buffer.from(a).toString("hex");return t.Buffer.from(o).toString("base64")}getRandomValues(e){return crypto.getRandomValues(e)}}var Ue;function Be(e){if(void 0===e)return"text/html";const t=e.toLowerCase(),i=t.includes("application/html")||t.includes("text/html"),a=t.includes("application/json");return!i&&a?"application/json":"text/html"}function Ge(e,t,i){if(void 0===i||""===i)return!1;i.startsWith("/")||(i="/"+i);const{pathname:a,search:o}=e;return a.includes(i)&&o.includes("trackingId")&&"get"===t.toLowerCase()}function ze(e,t){return"/AtaVerifyCaptcha"===e.pathname&&"post"===t.toLowerCase()}function We(e,t){if(void 0===t)return e;const i=e.headers.get("set-cookie")??"",a=new Headers(e.headers);if(void 0!==t.setCookie)for(const e of t.setCookie)i.includes(e.split("=")[0])||a.append("set-cookie",e);return new Response(e.body,{headers:a,status:e.status,statusText:e.statusText})}function Je(e){let t="",i="";for(const a in e){const o=e[a];void 0!==o&&(t=`${t}${i}${a}=${o}`,i="; ")}return t}function Xe(e){const t=e.status??403;return new Response("Forbidden",{status:t,statusText:{402:"Payment Required",403:"Forbidden"}[t]??"",headers:e.responseHeaders})}function Ye(e){const t=new Headers(e.responseHeaders);return void 0!==e.config.captchaHeader&&t.append(e.config.captchaHeader.name,e.config.captchaHeader.value),t.has("content-type")||t.append("content-type","text/html; charset=UTF-8"),new Response(e.body,{status:403,headers:t})}function Qe(e,t,i=303){const a=new Headers(e.responseHeaders);return a.append("Location",t),new Response("Forbidden",{status:i,statusText:"",headers:a})}!function(e){e[e.NEW_SESSION=1]="NEW_SESSION",e[e.EXISTING_SESSION=2]="EXISTING_SESSION",e[e.RENEW_SESSION=3]="RENEW_SESSION"}(Ue||(Ue={}));var Ze="@netacea/vercel",et="0.9.10";class tt extends Error{protectorApiResponse;latencyMs;constructor(e,t){super(`Got status ${e.status} when calling protector API with ${t}ms latency.`),this.protectorApiResponse=e,this.latencyMs=t}}const it="unknown";function at(e,t,i){let{match:a,mitigate:o,captcha:s}=t;i||("2"===s?s="4":"3"===s?s="5":"b"===s?s="d":"c"===s&&(s="e"));let n=w[a]??it+"_";n+=E[o]??it;let r=A[o];if("0"!==s){n+=","+(N[s]??it);const e=b[s];void 0!==e&&(r=e)}return e===exports.NetaceaMitigationType.INJECT&&(r=k.none),{sessionStatus:n,mitigation:r,parts:{match:a,mitigate:o,captcha:s}}}function ot(e,t){const i={"x-netacea-match":e.match,"x-netacea-mitigate":e.mitigate,"x-netacea-captcha":e.captcha};return void 0!==t&&(i["x-netacea-event-id"]=t),i}async function st(e){let t="";try{t=await async function(e,t){const i=(new TextEncoder).encode(t),a=await crypto.subtle.digest(e,i);return Array.from(new Uint8Array(a)).map((e=>e.toString(16).padStart(2,"0"))).join("")}("SHA-256",e)}catch(e){t=""}return t}class nt{config;constructor(e){this.config=e}async getNetaceaRequestDetails(e){const t=new URL(e.url),i=e.method,a=await this.readCookie(e,this.config.sessionCookieName),o=await this.readCookie(e,this.config.captchaCookieName),s=e.headers.get("x-forwarded-for")??void 0;let n,r=s?.split(/, ?/)[0]??"";void 0!==this.config.ipHeaderName&&(n=e.headers.get(this.config.ipHeaderName)??void 0,r=n??r);const{sessionCookieDetails:c,sessionCookieStatus:u,sessionStatus:d,userId:h}=await async function(e,t,i,a,o){const s=await e.cookieFactory.retrieveCookieInfo(a,o),n={userId:void 0!==s.mitata?s.mitata.userId:void 0,requiresReissue:s.requiresReissue,isExpired:s.isExpired,shouldExpire:s.shouldExpire,isSameIP:s.isSameIP,isPrimaryHashValid:s.isPrimaryHashValid,protectorCheckCodes:{match:s.match,mitigate:s.mitigate,captcha:s.captcha},issueReason:s.issueReason};if(void 0!==n.userId&&n.isPrimaryHashValid){const a=n.userId,{isExpired:o,shouldExpire:s,isSameIP:r}=n,c=o||s||!r&&e.mitigationType!==exports.NetaceaMitigationType.INGEST?Ue.RENEW_SESSION:Ue.EXISTING_SESSION,{sessionStatus:u}=at(e.mitigationType,n.protectorCheckCodes,ze(t,i));return{userId:a,sessionCookieStatus:c,sessionStatus:u,sessionCookieDetails:n}}return{sessionStatus:"",userId:O(),sessionCookieStatus:Ue.NEW_SESSION,sessionCookieDetails:void 0}}(this.config,t,i,a,r),p={sessionStatus:d,captchaToken:o,sessionCookieDetails:c,sessionCookieStatus:u,userId:h},l=Fe.parsing.parseIntOrDefault(e.headers.get("x-vercel-id"),{defaultValue:void 0});return{clientIp:r,fingerprints:await rt(e),ipHeader:void 0!==n?`${this.config.ipHeaderName}: ${n}`:void 0,method:i,protocol:void 0,requestId:e.headers.get("x-vercel-id")??"",sessionDetails:p,url:t,userAgent:e.headers.get("user-agent")??"",referer:e.headers.get("referer")??void 0,contentLength:l,contentType:e.headers.get("content-type")??void 0,xForwardedFor:s}}async readCookie(e,t){const i=e.headers.get("Cookie");if(null==i)return;const a=i.split(/; ?/g),o=`${t}=`;for(const e of a)if(e.startsWith(o)){const i=e.slice(o.length),a=this.config.encryptedCookies??[];if(void 0!==this.config.cookieEncryptionKey&&a.includes(t))try{return await qe.decrypt(i,this.config.cookieEncryptionKey)}catch(e){return}return i}}}async function rt(e){const{headers:t}=e,i=await async function(e){const t=function(e){const t=[];return e.forEach(((e,i)=>{const a=i.toLowerCase();"cookie"===a||"referer"===a||a.startsWith("x-netacea-")||t.push(i)})),t.join(",")}(e);return await st(t)}(t),a=function(e,t){return e.get(t)?.split(/; ?/)??[]}(t,"cookie").map((e=>e.split("=")[0])).flat(),o=await async function(e){const t=e.join(",");return await st(t)}(a);return{headerFingerprint:""===i?i:`h_${i.substring(1,15)}`,cookieFingerprint:""===o?o:`c_${o.substring(1,15)}`}}const{configureCookiesDomain:ct}=C.cookie.attributes;class ut{apiKey;captchaHeader;captchaSecretKey;captchaSiteKey;cookieEncryptionKey;enableDynamicCaptchaContentType=!1;encryptedCookies=[];ingestServiceUrl;ingestType;ipHeaderName;kinesisConfigArgs;mitataCookieExpirySeconds;mitigationServiceTimeoutMs;mitigationServiceUrl;mitigationType;netaceaCaptchaCookieAttributes;netaceaCaptchaCookieName;netaceaCaptchaPath;netaceaCheckpointSignalPath;netaceaCookieAttributes;netaceaCookieName;secretKey;timeout;constructor(e){if(null===e.apiKey||void 0===e.apiKey)throw new Error("apiKey is a required parameter");if(this.apiKey=e.apiKey,null===e.secretKey||void 0===e.secretKey)throw new Error("secretKey is a required parameter");this.secretKey=e.secretKey;const{mitigationServiceUrl:t="https://mitigations.netacea.net"}=e;var i;this.mitigationServiceUrl=t.endsWith("/")?t.slice(0,-1):t,this.ingestServiceUrl=e.ingestServiceUrl??"https://ingest.netacea.net",this.mitigationType=e.mitigationType??exports.NetaceaMitigationType.INGEST,this.ingestType=e.ingestType??exports.NetaceaIngestType.KINESIS,this.kinesisConfigArgs=e.kinesis,void 0===e.captchaSiteKey&&void 0===e.captchaSecretKey||(this.captchaSiteKey=e.captchaSiteKey,this.captchaSecretKey=e.captchaSecretKey),this.timeout=(i=e.timeout??3e3)<=0?d:i,this.mitigationServiceTimeoutMs=Fe.parsing.parseIntOrDefault(e.mitigationServiceTimeoutMs,{defaultValue:1e3,minValue:100,maxValue:1e4}),this.netaceaCookieName=Fe.parsing.stringOrDefault(e.netaceaCookieName,"_mitata"),this.netaceaCaptchaCookieName=Fe.parsing.stringOrDefault(e.netaceaCaptchaCookieName,"_mitatacaptcha");const{cookieAttributes:a,captchaCookieAttributes:o}=ct(e.netaceaCookieAttributes,e.netaceaCaptchaCookieAttributes);var s,n;this.netaceaCookieAttributes=a??"",this.netaceaCaptchaCookieAttributes=o??"",this.encryptedCookies=[this.netaceaCookieName,this.netaceaCaptchaCookieName],this.mitataCookieExpirySeconds=(s=this.mitigationType,void 0===(n=e.netaceaCookieExpirySeconds??e.mitataCookieExpirySeconds)?s===exports.NetaceaMitigationType.INGEST?3600:60:n),this.cookieEncryptionKey=e.cookieEncryptionKey,this.netaceaCaptchaPath=function(e){if(Boolean(e)&&"string"==typeof e)return e.startsWith("/")?e:`/${e}`}(e.netaceaCaptchaPath),this.netaceaCheckpointSignalPath=e.netaceaCheckpointSignalPath,void 0!==this.netaceaCaptchaPath&&(this.enableDynamicCaptchaContentType="boolean"==typeof e.enableDynamicCaptchaContentType?e.enableDynamicCaptchaContentType:"true"===e.enableDynamicCaptchaContentType),this.captchaHeader=e.captchaHeader,this.ipHeaderName=e.ipHeaderName}}class dt{config;kinesis;requestAnalyser;cookieFactory;workerInstanceId;constructor(i){this.config=new ut(i),this.cookieFactory=new $e({cookieEncryptionKey:this.config.cookieEncryptionKey,secretKey:this.config.secretKey,expirySeconds:this.config.mitataCookieExpirySeconds}),this.config.ingestType===exports.NetaceaIngestType.KINESIS&&(void 0===this.config.kinesisConfigArgs?console.warn(`NETACEA WARN: no kinesis args provided, when ingestType is ${this.config.ingestType}`):this.kinesis=new Fe.ingest.WebStandardKinesis({deps:{AwsClient:e.AwsClient,Buffer:t.Buffer,makeRequest:this.makeRequest.bind(this)},kinesisIngestArgs:{...this.config.kinesisConfigArgs,apiKey:this.config.apiKey}})),this.requestAnalyser=new nt({cookieEncryptionKey:this.config.cookieEncryptionKey,encryptedCookies:this.config.encryptedCookies,mitigationType:this.config.mitigationType,secretKey:this.config.secretKey,sessionCookieName:this.config.netaceaCookieName,captchaCookieName:this.config.netaceaCaptchaCookieName,ipHeaderName:this.config.ipHeaderName,cookieFactory:this.cookieFactory}),this.workerInstanceId=""}async run(e,t){""===this.workerInstanceId&&(this.workerInstanceId=u.v4());const i=new Request(e.request);if(function(e,t,i){let a=e;try{a=new URL(e).pathname}catch(e){}return void 0!==i&&i.length>0&&a.endsWith(i)&&"get"===t.toLowerCase()}(i.url,i.method,this.config.netaceaCheckpointSignalPath)){const e={sessionStatus:",checkpoint_signal"};return await this.handleResponse(i,e,t)}const a=await this.requestAnalyser.getNetaceaRequestDetails(i);let o=await async function(e,t){const i=new Promise(((e,i)=>{const a=Date.now();setTimeout((()=>{const t=Date.now()-a;e(t)}),t)}));return await Promise.race([e,i])}(this.runMitigation(i,a),this.config.mitigationServiceTimeoutMs);return"number"==typeof o&&(o={sessionStatus:"error_open",apiCallLatency:o}),await this.handleResponse(i,o,t)}async inject(e,t){const i=await this.getMitigationResponse(e,t);return{injectHeaders:i.injectHeaders,sessionStatus:i.sessionStatus,setCookie:i.setCookie,apiCallLatency:i.apiCallLatency,apiCallStatus:i.apiCallStatus}}async mitigate(e,t){const i=await this.getMitigationResponse(e,t),a=ze(t.url,e.method),o=a&&i.sessionStatus.includes("checkpoint_post"),s=!a&&Ge(t.url,e.method,this.config.netaceaCaptchaPath),n=()=>{const e=new Headers;if(!s&&!o)for(const t of i.setCookie)e.append("set-cookie",t);return e};if(i.mitigated&&!o){if("captcha"===i.mitigation){const e=n();return"application/json"===i.captchaPageContentType&&e.set("content-type","application/json"),{...i,response:Ye({config:this.config,responseHeaders:e,body:i.body})}}return{...i,response:Xe({responseHeaders:n()})}}return"5"===i.protectorCheckCodes.mitigate?void 0===i.redirect?{...i,response:Xe({status:402,responseHeaders:n()})}:{...i,response:Qe({config:this.config,responseHeaders:n()},i.redirect.location,i.redirect.statusCode)}:a?{...i,response:new Response(i.body,{status:200,statusText:"OK",headers:n()})}:i}async getNetaceaSession(e,t){const i=(void 0!==t?await this.getNetaceaCookieFromResponse(t):void 0)??await this.getNetaceaCookieFromRequest(e),{protectorCheckCodes:a,userId:o}=function(e){if(void 0===e)return;const t=e.match(T);if(null!=t){const[,e,i,a,o,s,n,r,c]=t;return{signature:e,expiry:i,userId:a,ipHash:o,mitigationType:s,protectorCheckCodes:{match:n,mitigate:r,captcha:c}}}}(i??"")??{userId:"",protectorCheckCodes:{match:"0",mitigate:"0",captcha:"0"}},{sessionStatus:s}=at(this.config.mitigationType,a,ze(new URL(e.url),e.method));return{userId:o,sessionStatus:s,netaceaCookie:i}}getResponseDetails(e){return e instanceof Response?{rawResponse:e}:{rawResponse:e.response,mitigationLatency:e.protectorLatencyMs,mitigationStatus:e.protectorStatus,sessionStatus:e.sessionStatus}}async ingest(e,t){""===this.workerInstanceId&&(this.workerInstanceId=u.v4());const i=this.getResponseDetails(t),a=await this.requestAnalyser.getNetaceaRequestDetails(e),o=function(e,t,i,a){const o=i.sessionStatus??t.sessionDetails.sessionStatus,s=t.method,n=t.url.pathname,r=t.protocol??null,c=Date.now(),u=t.referer??"",d=Fe.parsing.parseIntOrDefault(i.rawResponse.headers.get("content-length"),{defaultValue:0});return{BytesReceived:t.contentLength,BytesSent:d,Query:t.url.search.slice(1),IntegrationType:Ze?.replace("@netacea/","")??"",IntegrationVersion:et,NetaceaMitigationApplied:o??"",UserId:t.sessionDetails.userId,NetaceaUserIdCookieStatus:t.sessionDetails.sessionCookieStatus,ProtectionMode:e.mitigationType??"",ProtectorLatencyMs:i.mitigationLatency,ProtectorStatus:i.mitigationStatus,RealIp:t.clientIp,Referer:""===u?"-":u,Request:`${s} ${n} ${r}`,RequestHost:t.url.host,RequestId:t.requestId,RequestTime:"0",Status:i.rawResponse.status.toString(),TimeLocal:new Date(c).toUTCString(),TimeUnixMsUTC:c,UserAgent:t.userAgent,WorkerInstanceId:a,XForwardedFor:t.xForwardedFor,optional:{headerFingerprint:t.fingerprints.headerFingerprint,cookieFingerprint:t.fingerprints.cookieFingerprint}}}(this.config,a,i,this.workerInstanceId);if(this.config.ingestType===exports.NetaceaIngestType.KINESIS){if(void 0===this.kinesis)return void console.error("Netacea Error: Unable to log as Kinesis has not been defined.");try{await this.kinesis.ingest({...o})}catch(e){console.error("NETACEA Error: ",e.message)}}else{const e={"X-Netacea-API-Key":this.config.apiKey,"content-type":"application/json"},t=await this.makeIngestApiCall(e,o);if(200!==t.status)throw function(e){let t="Unknown error";switch(e.status){case 403:t="Invalid credentials";break;case 500:t="Server error";break;case 502:t="Bad Gateway";break;case 503:t="Service Unavailable";break;case 400:t="Invalid request"}return new Error(`Error reaching Netacea API (${t}), status: ${e.status}`)}(t)}}async handleGetCaptchaRequest(e,t,i){if(void 0===this.config.secretKey)throw new Error("Secret key is required to mitigate");const a=await this.makeMitigateAPICall(e,t,!0,i),{match:o,mitigate:s,captcha:n}=a.responseView.getProtectorCodes();return{body:a.body,apiCallStatus:a.status,apiCallLatency:a.latency,setCookie:[],sessionStatus:",captcha_serve",mitigation:"captcha",mitigated:!0,protectorCheckCodes:{match:o,mitigate:s,captcha:n},captchaPageContentType:t}}async makeRequest({host:e,method:t,path:i,headers:a,body:o}){const s=`${e}${i}`,n=new Request(s,{...{method:t,body:o,headers:a},duplex:"half"}),r=await S(s,n),c={};return r.headers.forEach(((e,t)=>{null!==e&&(c[t]=e)})),{status:r.status,body:await r.clone().text(),headers:c,fetchResponse:r}}async handleResponse(e,t,i){if(this.config.mitigationType===exports.NetaceaMitigationType.MITIGATE&&void 0!==t?.response)return{sessionStatus:t?.sessionStatus??"",response:t.response,protectorLatencyMs:t?.apiCallLatency,protectorStatus:t?.apiCallStatus};if(void 0!==t&&"injectHeaders"in t){e=function(e,t){if(void 0===t.injectHeaders)return e;const i=new Headers(e.headers);for(const[e,a]of Object.entries(t.injectHeaders))i.set(e,a);return new Request(e,{headers:i})}(e,t)}if(this.config.ingestType===exports.NetaceaIngestType.ORIGIN){const{sessionStatus:i,userId:a}=await this.getNetaceaSession(e,t);!function(e,t,i){e.headers.set("x-netacea-integration-type",Ze.replace("@netacea/","")),e.headers.set("x-netacea-integration-version",et),e.headers.set("x-netacea-userid",i),e.headers.set("x-netacea-bc-type",t)}(e,i,a)}const a=await i(e);return{sessionStatus:t?.sessionStatus??"",response:We(a,t),protectorLatencyMs:t?.apiCallLatency,protectorStatus:t?.apiCallStatus}}async getMitigationResponse(e,t){const i=this.config.enableDynamicCaptchaContentType?Be(e.headers.get("Accept")??void 0):Be();return await this.processMitigateRequest({getBodyFn:async()=>await Promise.resolve(e.body)??void 0,requestDetails:t,captchaPageContentType:i})}async runMitigation(e,t){try{switch(this.config.mitigationType){case exports.NetaceaMitigationType.MITIGATE:return await this.mitigate(e,t);case exports.NetaceaMitigationType.INJECT:return await this.inject(e,t);case exports.NetaceaMitigationType.INGEST:return await this.processIngest(t);default:throw new Error(`Netacea Error: Mitigation type ${String(this.config.mitigationType)} not recognised`)}}catch(i){let a,o;i instanceof Error&&console.error("Netacea FAILOPEN Error:",i,i.stack),i instanceof tt&&(o=i.latencyMs,a=i.protectorApiResponse?.status);return{response:ze(t.url,e.method)?new Response("",{status:500,statusText:"Internal Server Error",headers:{}}):void 0,injectHeaders:ot({match:"0",mitigate:"0",captcha:"0"}),sessionStatus:"error_open",apiCallLatency:o,apiCallStatus:a}}}async readCookie(e,t){if(null==t)return;if("string"==typeof t)return await this.readCookie(e,t.split(";"));const i=`${e}=`;for(const a of t){const t=a.split(";")[0].trimStart();if(t.startsWith(i)){const a=t.slice(i.length);if(void 0!==this.config.cookieEncryptionKey&&this.config.encryptedCookies.includes(e))try{return await qe.decrypt(a,this.config.cookieEncryptionKey)}catch(e){return}return a}}}async getNetaceaCookieFromResponse(e){if(void 0===e)return;const t=e instanceof Response?e.headers.getSetCookie():e.setCookie;if(void 0!==t){const e=`${this.config.netaceaCookieName}=`;for(const i of t)if(i.startsWith(e))return await this.readCookie(this.config.netaceaCookieName,i)}}async getNetaceaCookieFromRequest(e){const t=function(e,t,i=""){return e.get(t)??i}(e.headers,"cookie");return await this.readCookie(this.config.netaceaCookieName,t)??""}async makeIngestApiCall(e,t){return await this.makeRequest({host:this.config.ingestServiceUrl,method:"POST",path:"/",headers:e,body:JSON.stringify(t),timeout:this.config.timeout})}async check(e,t){if(void 0===this.config.secretKey)throw new Error("Secret key is required to mitigate");if([Ue.NEW_SESSION,Ue.RENEW_SESSION].includes(e.sessionDetails.sessionCookieStatus)){const i=e.sessionDetails.userId,a=await this.makeMitigateAPICall(e,t,!1,null),o=a.responseView.getProtectorCodes(),{match:s,mitigate:n,captcha:r}=o,c=[await this.createMitata(e.clientIp,i,s,n,r,a.mitataMaxAge,void 0,ht(e))],u={match:s,mitigate:n,captcha:r},d=at(this.config.mitigationType,u,!1),h={body:a.body,apiCallStatus:a.status,apiCallLatency:a.latency,setCookie:c,sessionStatus:d.sessionStatus,mitigation:d.mitigation,mitigated:[k.block,k.captcha].includes(d.mitigation),redirect:"5"===n?a.responseView.getMonetisationRedirect(e.url.pathname,e.url.search):void 0,protectorCheckCodes:d.parts,captchaPageContentType:t};return this.config.mitigationType!==exports.NetaceaMitigationType.INJECT&&d.mitigation!==k.flag||(h.injectHeaders=ot(d.parts,a.eventId)),h}{const i=e.sessionDetails.sessionCookieDetails?.protectorCheckCodes,a={match:i?.match??"0",mitigate:i?.mitigate??"0",captcha:i?.captcha??"0"},o=at(this.config.mitigationType,a,!1),s={body:void 0,apiCallStatus:void 0,apiCallLatency:void 0,setCookie:[],sessionStatus:o.sessionStatus,mitigation:o.mitigation,mitigated:[k.block,k.captcha].includes(o.mitigation),redirect:void 0,protectorCheckCodes:o.parts,captchaPageContentType:t};return this.config.mitigationType!==exports.NetaceaMitigationType.INJECT&&o.mitigation!==k.flag||(s.injectHeaders=ot(o.parts)),s}}async createMitata(e,t,i,a,o,s=86400,n=void 0,c=r.NO_SESSION){const u=["1","3","5","a","c","e"].includes(o)||"3"===a||"5"===a?-60:this.config.mitataCookieExpirySeconds,d=void 0!==n?n-Math.floor(Date.now()/1e3):u,h=await this.cookieFactory.createCookieValue({clientIP:e,userId:t,match:i,mitigate:a,captcha:o,gracePeriod:d,cookieId:"",issueReason:c});return C.cookie.netaceaSession.createNetaceaSetCookieString({cookieName:this.config.netaceaCookieName,cookieValue:h,otherAttributes:this.config.netaceaCookieAttributes})}async processCaptcha(e,t){const{status:i,match:a,mitigate:o,captcha:s,body:n,setCookie:r,latency:c}=await this.makeCaptchaAPICall(e,t),u={match:a,mitigate:o,captcha:s},d=at(this.config.mitigationType,u,!0);return{body:n,apiCallStatus:i,apiCallLatency:c,setCookie:r,sessionStatus:d.sessionStatus,mitigation:d.mitigation,mitigated:[k.block,k.captcha].includes(d.mitigation),protectorCheckCodes:{match:d.parts.match.toString(),mitigate:d.parts.mitigate.toString(),captcha:d.parts.captcha.toString()}}}async getMitataCaptchaFromHeaders(e){let t=e[I];const i=parseInt(e[v]);if(void 0!==t)return void 0!==this.config.cookieEncryptionKey&&this.config.encryptedCookies.includes(this.config.netaceaCaptchaCookieName)&&(t=await qe.encrypt(t,this.config.cookieEncryptionKey,"A256GCM")),C.cookie.netaceaSession.createNetaceaCaptchaSetCookieString({cookieName:this.config.netaceaCaptchaCookieName,cookieValue:t,maxAgeAttribute:String(i),otherAttributes:this.config.netaceaCaptchaCookieAttributes})}parseCaptchaAPICallBody(e,t){let i;if(null!=e)if("string"==typeof e){const a=e.trim();if(a.length>0)if(t.includes("application/json"))try{JSON.parse(a),i=a}catch(e){console.warn("Invalid JSON in captcha data, attempting to serialize:",e),i=JSON.stringify({data:a})}else i=e}else if(e instanceof ReadableStream)i=e;else if(t.includes("application/json"))try{i=JSON.stringify(e)}catch(t){console.warn("Failed to stringify captcha object, wrapping generic container"),i=JSON.stringify({data:e})}else try{i=JSON.stringify(e)}catch{i=String(e)}return i}async makeCaptchaAPICall(e,t){const i={"X-Netacea-API-Key":this.config.apiKey,"X-Netacea-Client-IP":e.clientIp,"user-agent":e.userAgent,"Content-Type":e.contentType??"application/x-www-form-urlencoded; charset=UTF-8"},a=e.sessionDetails.userId;e.sessionDetails.sessionCookieStatus!==Ue.NEW_SESSION&&(i["X-Netacea-UserId"]=a),void 0!==this.config.captchaSiteKey&&void 0!==this.config.captchaSecretKey&&(i["X-Netacea-Captcha-Site-Key"]=this.config.captchaSiteKey,i["X-Netacea-Captcha-Secret-Key"]=this.config.captchaSecretKey),i["X-Netacea-Request-Id"]=e.requestId;const o=new URLSearchParams;o.append("headerFP",e.fingerprints.headerFingerprint),o.append("netaceaHeaders","request-id");const s=Date.now(),n=e.contentType??"application/x-www-form-urlencoded; charset=UTF-8",r=this.parseCaptchaAPICallBody(t,n),c=await this.makeRequest({host:this.config.mitigationServiceUrl,path:`/AtaVerifyCaptcha?${o.toString()}`,headers:i,method:"POST",body:r,timeout:this.config.mitigationServiceTimeoutMs}),u=Date.now()-s;if(200!==c.status)throw new tt(c,u);const d=new Fe.ProtectorApiResponseView(c.fetchResponse),{match:h,mitigate:p,captcha:l}=d.getProtectorCodes(),g=d.sessionCookieMaxAge,f=[await this.createMitata(e.clientIp,e.sessionDetails.userId,h,p,l,g,void 0,ht(e)),await this.getMitataCaptchaFromHeaders(c.headers)].filter((e=>void 0!==e)),y=d.eventId;return{status:c.status,match:h,mitigate:p,captcha:l,setCookie:f,body:c.body,eventId:y,mitataMaxAge:g,latency:u}}async makeMitigateAPICall(e,t,i,a){const o={"X-Netacea-API-Key":this.config.apiKey,"X-Netacea-Client-IP":e.clientIp,"user-agent":e.userAgent,cookie:Je({_mitatacaptcha:e.sessionDetails.captchaToken})};e.sessionDetails.sessionCookieStatus!==Ue.NEW_SESSION&&(o["X-Netacea-UserId"]=e.sessionDetails.userId),void 0!==this.config.captchaSiteKey&&void 0!==this.config.captchaSecretKey&&(o["X-Netacea-Captcha-Site-Key"]=this.config.captchaSiteKey,o["X-Netacea-Captcha-Secret-Key"]=this.config.captchaSecretKey),o["X-Netacea-Captcha-Content-Type"]=t,o["X-Netacea-Request-Id"]=e.requestId;let s="/";const n=new URLSearchParams;n.append("headerFP",e.fingerprints.headerFingerprint),n.append("netaceaHeaders","request-id"),i&&(s="/captcha",null!==a&&n.append("trackingId",a));const r=Date.now(),c=await this.makeRequest({host:this.config.mitigationServiceUrl,path:`${s}?${n.toString()}`,headers:o,method:"GET",timeout:this.config.mitigationServiceTimeoutMs}),u=Date.now()-r;if(200!==c.status)throw new tt(c,u);const d=new Fe.ProtectorApiResponseView(c.fetchResponse),{match:h,mitigate:p,captcha:l}=d.getProtectorCodes(),g=[await this.createMitata(e.clientIp,e.sessionDetails.userId,h,p,l,d.sessionCookieMaxAge,void 0,ht(e)),await this.getMitataCaptchaFromHeaders(c.headers)].filter((e=>void 0!==e));if("application/json"===c.headers["content-type"]?.toLowerCase()){if(void 0===this.config.netaceaCaptchaPath)throw new Error("netaceaCaptchaPath and URL must be defined to handle JSON captcha");c.body=await d.getCaptchaJson(this.config.netaceaCaptchaPath,e.url.host)}return{responseView:d,status:c.status,setCookie:g,body:c.body,eventId:d.eventId,mitataMaxAge:d.sessionCookieMaxAge,latency:u}}async processMitigateRequest(e){if(Ge(e.requestDetails.url,e.requestDetails.method,this.config.netaceaCaptchaPath)){const t=await async function(e){try{const{searchParams:t}=e;return t.get("trackingId")}catch(e){return null}}(e.requestDetails.url);return await this.handleGetCaptchaRequest(e.requestDetails,e.captchaPageContentType,t)}if(ze(e.requestDetails.url,e.requestDetails.method)){const t=await e.getBodyFn()??"";return await this.processCaptcha(e.requestDetails,t)}return await this.check(e.requestDetails,e.captchaPageContentType)}async setIngestOnlyMitataCookie(e){return{sessionStatus:"",setCookie:[await this.createMitata("ignored",e.sessionDetails.userId,"0","0","0",86400,void 0,ht(e))]}}async processIngest(e){if(void 0===this.config.secretKey)throw new Error("Secret key is required for ingest");const t=e.sessionDetails.sessionCookieStatus,i=t===Ue.NEW_SESSION,a=t===Ue.RENEW_SESSION;return i||a?await this.setIngestOnlyMitataCookie(e):{sessionStatus:"",setCookie:[]}}}function ht(e){if(void 0===e.sessionDetails.sessionCookieDetails)return r.NO_SESSION;const{isSameIP:t,isExpired:i}=e.sessionDetails.sessionCookieDetails;return t?i?r.EXPIRED_SESSION:r.NO_SESSION:r.IP_CHANGE}const pt=e=>Fe.parsing.parseIntOrDefault(e,{defaultValue:void 0});function lt(e){return Object.fromEntries(Object.entries(e).filter((([e,t])=>void 0!==t)))}function gt(e,t,i){if("string"==typeof i)return e[`${t}_${i}`]?.trimEnd();for(const a of i){const i=gt(e,t,a);if(void 0!==i)return i}}function ft(e,t){const i=gt(e,t,"CAPTCHA_HEADER_NAME"),a=gt(e,t,"CAPTCHA_HEADER_VALUE");if(void 0!==i&&void 0!==a)return{name:i,value:a}}function yt(e,t){const i=gt(e,t,"KINESIS_STREAM_NAME"),a=gt(e,t,"KINESIS_ACCESS_KEY"),o=gt(e,t,"KINESIS_SECRET_KEY"),s=lt({logBatchSize:pt(gt(e,t,"KINESIS_LOG_BATCH_SIZE")),maxLogAgeSeconds:pt(gt(e,t,"KINESIS_MAX_LOG_AGE_SECONDS"))});if(void 0!==i&&void 0!==a&&void 0!==o)return{kinesisStreamName:i,kinesisAccessKey:a,kinesisSecretKey:o,...s}}exports.NetaceaVercelIntegration=dt,exports.default=dt,exports.getNetaceaArgsFromEnv=function(e,t="NETACEA"){return lt({apiKey:gt(e,t,"API_KEY"),captchaHeader:ft(e,t),captchaSecretKey:gt(e,t,"CAPTCHA_SECRET_KEY"),captchaSiteKey:gt(e,t,"CAPTCHA_SITE_KEY"),cookieEncryptionKey:gt(e,t,"COOKIE_ENCRYPTION_KEY"),enableDynamicCaptchaContentType:gt(e,t,"ENABLE_DYNAMIC_CAPTCHA_CONTENT_TYPE"),ingestServiceUrl:gt(e,t,"INGEST_SERVICE_URL"),ingestType:gt(e,t,"INGEST_TYPE"),ipHeaderName:gt(e,t,"IP_HEADER_NAME"),kinesis:yt(e,t),mitataCookieExpirySeconds:pt(gt(e,t,"MITATA_COOKIE_EXPIRY_SECONDS")),mitigationServiceTimeoutMs:gt(e,t,"MITIGATION_SERVICE_TIMEOUT_MS"),mitigationServiceUrl:gt(e,t,["PROTECTOR_API_URL","MITIGATION_SERVICE_URL"]),mitigationType:gt(e,t,["PROTECTION_MODE","MITIGATION_TYPE"]),netaceaCaptchaCookieAttributes:gt(e,t,"CAPTCHA_COOKIE_ATTRIBUTES"),netaceaCaptchaCookieName:gt(e,t,"CAPTCHA_COOKIE_NAME"),netaceaCaptchaPath:gt(e,t,"CAPTCHA_PATH"),netaceaCheckpointSignalPath:gt(e,t,"CHECKPOINT_SIGNAL_PATH"),netaceaCookieAttributes:gt(e,t,"COOKIE_ATTRIBUTES"),netaceaCookieExpirySeconds:pt(gt(e,t,"COOKIE_EXPIRY_SECONDS")),netaceaCookieName:gt(e,t,"COOKIE_NAME"),secretKey:gt(e,t,"SECRET_KEY"),timeout:pt(gt(e,t,"TIMEOUT"))})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("aws4fetch"),t=require("buffer/"),i=require("jose"),a=require("uuid");function s(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}var o,n,r,c=s(i),u=s(a);exports.NetaceaIngestType=void 0,(o=exports.NetaceaIngestType||(exports.NetaceaIngestType={})).ORIGIN="ORIGIN",o.HTTP="HTTP",o.KINESIS="KINESIS",o.NATIVE="NATIVE",exports.NetaceaMitigationType=void 0,(n=exports.NetaceaMitigationType||(exports.NetaceaMitigationType={})).MITIGATE="MITIGATE",n.INJECT="INJECT",n.INGEST="INGEST",function(e){e.CAPTCHA_GET="captcha_get",e.CAPTCHA_POST="captcha_post",e.EXPIRED_SESSION="expired_session",e.FORCED_REVALIDATION="forced_revalidation",e.INVALID_SESSION="invalid_session",e.IP_CHANGE="ip_change",e.NO_SESSION="no_session"}(r||(r={}));const d=3e3;function h(e,t){const i=e.split(";").map((e=>e.trim())).filter((e=>e.toLowerCase().startsWith(t.toLowerCase())))[0];return void 0!==i&&i.length>0?i?.replace(`${t}=`,""):void 0}function p(e,t=!1){return"string"!=typeof e&&(e=e.join("; ")),""===e?"":l(e.split(";"),t).join("; ")}function l(e,t=!1){if(t)return l(e.reverse()).reverse();const i=new Set,a=[];for(let t of e){if(t=t.trimStart(),""===t.trim())continue;const e=t.split("=")[0].toUpperCase();i.has(e)||(i.add(e),a.push(t))}return a}var g=Object.freeze({__proto__:null,configureCookiesDomain:function(e,t){let i=e=p(e??"",!0),a=t=p(t??"",!0);if(void 0!==e&&void 0!==t){const s=h(e,"Domain"),o=h(t,"Domain");void 0!==s&&void 0!==o?a=t.replace(o,s):void 0!==s&&void 0===o?a=t+(""!==t?`; Domain=${s}`:`Domain=${s}`):void 0===s&&void 0!==o&&(i=e+(""!==e?`; Domain=${o}`:`Domain=${o}`))}else if(void 0!==e&&void 0===t){const t=h(e,"Domain");void 0!==t&&(a=`Domain=${t}`)}else if(void 0===e&&void 0!==t){const e=h(t,"Domain");void 0!==e&&(i=`Domain=${e}`)}return{cookieAttributes:""!==i?i:void 0,captchaCookieAttributes:""!==a?a:void 0}},extractAndRemoveCookieAttr:function(e,t){const i=h(e,t);if(void 0!==i){return{extractedAttribute:i,cookieAttributes:e.replace(/ /g,"").replace(`${t}=${i}`,"").split(";").filter((e=>e.length>0)).join("; ")}}return{extractedAttribute:void 0,cookieAttributes:e}},extractCookieAttr:h,removeDuplicateAttrs:p});function f(e){const t=p([e.otherAttributes??"",`Max-Age=${e.maxAgeAttribute??86400}`,"Path=/"].join("; "));return`${e.cookieName}=${e.cookieValue}; ${t}`}var y=Object.freeze({__proto__:null,createNetaceaCaptchaSetCookieString:function(e){return f({...e,cookieName:e.cookieName??"_mitatacaptcha"})},createNetaceaSetCookieString:function(e){return f({...e,cookieName:e.cookieName??"_mitata"})},createSetCookieString:f});var m=Object.freeze({__proto__:null,parseSetCookie:function(e){const t=e.indexOf("=");if(t<0)throw new Error("Could not parse the given set-cookie value.");const i=e.slice(0,t),a=e.slice(t+1),s=a.indexOf(";");if(s<0){return{name:i,value:a,attributes:""}}return{name:i,value:a.slice(0,s),attributes:a.slice(s).trimStart()}}});const C={cookie:{parse:m,attributes:g,netaceaSession:y}},S=globalThis.fetch.bind(globalThis),k={none:"",block:"block",captcha:"captcha",allow:"allow",captchaPass:"captchapass",monetise:"monetise",flag:"flag"},v="x-netacea-mitatacaptcha-value",I="x-netacea-mitatacaptcha-expiry",w={0:"",1:"ua_",2:"ip_",3:"visitor_",4:"datacenter_",5:"customer_session_",6:"organisation_",7:"asn_",8:"country_",9:"combination_",b:"headerFP_",c:"vendorFamily_",d:"vendorName_",e:"vendor_",f:"vendorCrawlerClassification_"},E={0:"",1:"blocked",2:"allow",3:"hardblocked",4:"flagged",5:"monetised"},N={0:"",1:"captcha_serve",2:"captcha_pass",3:"captcha_fail",4:"captcha_cookiepass",5:"captcha_cookiefail",6:"checkpoint_signal",7:"checkpoint_post",a:"checkpoint_serve",b:"checkpoint_pass",c:"checkpoint_fail",d:"checkpoint_cookiepass",e:"checkpoint_cookiefail"},b={0:k.none,1:k.block,2:k.none,3:k.block,4:k.flag,5:k.monetise},A={1:k.captcha,2:k.captchaPass,3:k.captcha,4:k.allow,5:k.captcha,6:k.allow,7:k.captcha,a:k.captcha,b:k.captchaPass,c:k.captcha,d:k.allow,e:k.captcha},_="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),T=/^(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/((\d|[a-z])(\d)(\d|[a-z]))$/i;function O(e=16,t=_){const i=new Uint16Array(e-1);crypto.getRandomValues(i);return`c${Array.from(i).map((e=>t[e%t.length])).join("")}`}async function R(e,t){const i=await async function(e){return await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign","verify"])}(function(e){return"string"==typeof e?(new TextEncoder).encode(e):e}(t));return new Uint8Array(await crypto.subtle.sign("HMAC",i,e))}var P,x="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},M={},K={};Object.defineProperty(K,"__esModule",{value:!0}),K.NetaceaCookieV3IssueReason=void 0,function(e){e.CAPTCHA_GET="captcha_get",e.CAPTCHA_POST="captcha_post",e.EXPIRED_SESSION="expired_session",e.FORCED_REVALIDATION="forced_revalidation",e.INVALID_SESSION="invalid_session",e.IP_CHANGE="ip_change",e.NO_SESSION="no_session",e.UNKNOWN="unknown"}(P||(K.NetaceaCookieV3IssueReason=P={}));var V={},H={},j={};Object.defineProperty(j,"__esModule",{value:!0}),j.netaceaCookieV3OptionalKeyMap=j.netaceaCookieV3KeyMap=j.COOKIEDELIMITER=void 0,j.COOKIEDELIMITER="_/@#/",j.netaceaCookieV3KeyMap={clientIP:"cip",userId:"uid",gracePeriod:"grp",cookieId:"cid",match:"mat",mitigate:"mit",captcha:"cap",issueTimestamp:"ist",issueReason:"isr"},j.netaceaCookieV3OptionalKeyMap={checkAllPostRequests:"fCAPR"},Object.defineProperty(H,"__esModule",{value:!0}),H.defaultInvalidResponse=H.matchNetaceaCookieV3=H.checkNetaceaCookieV3=H.objectIsNetaceaCookieV3=H.cookieIsNetaceaV3Format=H.createNetaceaCookieV3=void 0;const D=K,L=j;function F(e){if(void 0===e||""===e)return;const t=e.split("&"),i={clientIP:"",userId:"",cookieId:"",gracePeriod:0,match:"0",mitigate:"0",captcha:"0",issueTimestamp:0,issueReason:"",checkAllPostRequests:void 0};for(const e of t){const[t,a]=e.split("="),s=decodeURIComponent(a);let o,n=Object.keys(L.netaceaCookieV3KeyMap).find((e=>L.netaceaCookieV3KeyMap[e]===t));void 0===n&&(n=Object.keys(L.netaceaCookieV3OptionalKeyMap).find((e=>L.netaceaCookieV3OptionalKeyMap[e]===t))),o=void 0!==n&&["match","mitigate","captcha"].includes(n)?""===s?void 0:s:""===s?void 0:Number(s),void 0!==o&&"string"!=typeof o&&isNaN(o)&&(o=s),i[n]=o}return i}function q(){return{mitata:void 0,requiresReissue:!1,isExpired:!1,shouldExpire:!1,isSameIP:!1,isPrimaryHashValid:!1,captcha:"0",match:"0",mitigate:"0",issueReason:D.NetaceaCookieV3IssueReason.NO_SESSION}}H.createNetaceaCookieV3=function(e){return Object.entries(e).filter((([e,t])=>void 0!==t)).map((([e,t])=>e in L.netaceaCookieV3OptionalKeyMap?`${L.netaceaCookieV3OptionalKeyMap[e]}=${encodeURIComponent(t)}`:`${L.netaceaCookieV3KeyMap[e]}=${encodeURIComponent(t)}`)).join("&")},H.cookieIsNetaceaV3Format=function(e){if(void 0===e||""===e)return!1;const t=e.split("&").map((e=>e.split("=")[0])).filter((e=>!Object.values(L.netaceaCookieV3OptionalKeyMap).includes(e)));return 0!==t.length&&t.every((e=>Object.values(L.netaceaCookieV3KeyMap).includes(e)))},H.objectIsNetaceaCookieV3=function(e){if("object"!=typeof e||null===e)return!1;for(const t of Object.keys(L.netaceaCookieV3KeyMap)){if(!(t in e))return!1;if(void 0===e[t])return!1}return!0},H.checkNetaceaCookieV3=function(e,t){if(void 0===e||""===e)return q();let i;try{i=F(e)}catch{return q()}if(void 0!==i){const e=Math.floor(Date.now()/1e3),a=i.issueTimestamp+i.gracePeriod<e,s=t===i.clientIP,o=["1","3","5","a","c","e"].includes(i.captcha),n="3"===i.mitigate;return{mitata:i,requiresReissue:a||!s,isExpired:a,shouldExpire:o||n,isSameIP:s,isPrimaryHashValid:!0,match:i.match,mitigate:i.mitigate,captcha:i.captcha,issueReason:i.issueReason}}return q()},H.matchNetaceaCookieV3=F,H.defaultInvalidResponse=q;var $={};Object.defineProperty($,"__esModule",{value:!0}),$.AbstractCookieFactory=void 0;const U=K,B=H,G=j,z="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),W=/^(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/((\d|[a-z])(\d)(\d|[a-z]))$/i;$.AbstractCookieFactory=class{constructor(e){this.config=e}isEncrypted(e){return 5===e.split(".").length}async createCookieValue(e){if(void 0!==this.config.cookieEncryptionKey){const t=(0,B.createNetaceaCookieV3)({clientIP:e.clientIP,userId:e.userId??this.generateUserId(),match:e.match,mitigate:e.mitigate,captcha:e.captcha,gracePeriod:e.gracePeriod,cookieId:e.cookieId,issueTimestamp:Math.floor(Date.now()/1e3),issueReason:e.issueReason??U.NetaceaCookieV3IssueReason.NO_SESSION,checkAllPostRequests:e.checkAllPostRequests});return await this.encrypt(t)}if(void 0===this.config.secretKey)throw new Error("Cannot build cookie without secret key.");const t=[e.match,e.mitigate,e.captcha].join(""),i=Math.floor(Date.now()/1e3)+e.gracePeriod;return await this.buildMitataCookie(e.clientIP,e.userId,i,this.config.secretKey,t)}async retrieveCookieInfo(e,t){if(void 0===e||""===e)return(0,B.defaultInvalidResponse)();let i=e;return this.isEncrypted(e)&&(i=await this.decrypt(e)),(0,B.cookieIsNetaceaV3Format)(i)?(0,B.checkNetaceaCookieV3)(i,t):await this.checkMitataCookie(i,t,this.config.secretKey??"")}async buildMitataCookie(e,t,i,a,s){const o=[i,t??this.generateUserId(),await this.hash(`${e}|${String(i)}`,a),s].join(G.COOKIEDELIMITER);return`${await this.hash(o,a)}${G.COOKIEDELIMITER}${o}`}async checkMitataCookie(e,t,i){const a=function(e){const t=e.match(W);if(null===t)return;const[,i,a,s,o,n,r,c,u]=t;return{signature:i,expiry:a,userId:s,ipHash:o,mitigationType:n,match:r,mitigate:c,captcha:u}}(e);if(void 0===a)return(0,B.defaultInvalidResponse)();const s=Math.floor(Date.now()/1e3),o=parseInt(a.expiry)<s,n=["1","3","5"].includes(a.captcha),r="3"===a.mitigate,c=n||r,u=await this.hash(`${t}|${a.expiry}`,i)===a.ipHash,d=[a.expiry,a.userId,a.ipHash,a.mitigationType].join(G.COOKIEDELIMITER);return{mitata:a,requiresReissue:o||!u,isExpired:o,shouldExpire:c,isSameIP:u,isPrimaryHashValid:await this.hash(d,i)===a.signature,match:a.match,mitigate:a.mitigate,captcha:a.captcha,issueReason:U.NetaceaCookieV3IssueReason.NO_SESSION}}generateUserId(e=16){const t=new Uint16Array(e-1);this.getRandomValues(t);return`c${Array.from(t).map((e=>z[e%z.length])).join("")}`}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NetaceaCookieV3IssueReason=e.COOKIEDELIMITER=e.netaceaCookieV3OptionalKeyMap=e.netaceaCookieV3KeyMap=e.AbstractCookieFactory=e.defaultInvalidResponse=e.objectIsNetaceaCookieV3=e.cookieIsNetaceaV3Format=e.matchNetaceaCookieV3=e.checkNetaceaCookieV3=e.createNetaceaCookieV3=void 0;var t=H;Object.defineProperty(e,"createNetaceaCookieV3",{enumerable:!0,get:function(){return t.createNetaceaCookieV3}}),Object.defineProperty(e,"checkNetaceaCookieV3",{enumerable:!0,get:function(){return t.checkNetaceaCookieV3}}),Object.defineProperty(e,"matchNetaceaCookieV3",{enumerable:!0,get:function(){return t.matchNetaceaCookieV3}}),Object.defineProperty(e,"cookieIsNetaceaV3Format",{enumerable:!0,get:function(){return t.cookieIsNetaceaV3Format}}),Object.defineProperty(e,"objectIsNetaceaCookieV3",{enumerable:!0,get:function(){return t.objectIsNetaceaCookieV3}}),Object.defineProperty(e,"defaultInvalidResponse",{enumerable:!0,get:function(){return t.defaultInvalidResponse}});var i=$;Object.defineProperty(e,"AbstractCookieFactory",{enumerable:!0,get:function(){return i.AbstractCookieFactory}});var a=j;Object.defineProperty(e,"netaceaCookieV3KeyMap",{enumerable:!0,get:function(){return a.netaceaCookieV3KeyMap}}),Object.defineProperty(e,"netaceaCookieV3OptionalKeyMap",{enumerable:!0,get:function(){return a.netaceaCookieV3OptionalKeyMap}}),Object.defineProperty(e,"COOKIEDELIMITER",{enumerable:!0,get:function(){return a.COOKIEDELIMITER}});var s=K;Object.defineProperty(e,"NetaceaCookieV3IssueReason",{enumerable:!0,get:function(){return s.NetaceaCookieV3IssueReason}})}(V);var J={};Object.defineProperty(J,"__esModule",{value:!0}),J.validateRedirectLocation=void 0,J.validateRedirectLocation=function(e){if(""!==(e=e??""))try{return new URL(e).toString()}catch{if(/^https?:\/\//i.test(e))return;return e.startsWith("/")?e:`/${e}`}};var X={},Y={};function Q(e,t){for(const i of Object.keys(e)){if("cookie"!==i&&"Cookie"!==i)continue;const a=e[i]??"",s=ee("string"==typeof a?a:a.join("; "),t);if(void 0!==s)return s}}function Z(e,t){const i=[];for(const a of Object.keys(e)){if("cookie"!==a&&"Cookie"!==a)continue;const s=e[a]??"",o="string"==typeof s?s:s.join("; ");i.push(...te(o,t))}return i}function ee(e,t){const i=t+"=";return e.split(";").map((e=>e.trimStart())).find((e=>e.startsWith(i)))}function te(e,t){const i=t+"=";return e.split(";").map((e=>e.trimStart())).filter((e=>e.startsWith(i)))}Object.defineProperty(Y,"__esModule",{value:!0}),Y.findAllInCookieString=Y.findFirstInCookieString=Y.findAllInHeaders=Y.findFirstInHeaders=Y.findOnlyValueInHeaders=Y.findAllValuesInHeaders=Y.findFirstValueInHeaders=void 0,Y.findFirstValueInHeaders=function(e,t){const i=Q(e,t);if(void 0!==i)return i.slice(t.length+1)},Y.findAllValuesInHeaders=function(e,t){return Z(e,t).map((e=>e.slice(t.length+1)))},Y.findOnlyValueInHeaders=function(e,t){const i=Z(e,t);if(i.length>1)throw new Error(`Found more than one cookie with name ${t}`);return i[0]?.slice(t.length+1)},Y.findFirstInHeaders=Q,Y.findAllInHeaders=Z,Y.findFirstInCookieString=ee,Y.findAllInCookieString=te;var ie={};function ae(e){return"set-cookie"===e||"Set-Cookie"===e}function se(e,t){const i=t+"=";return e.startsWith(i)}function oe(e,t){if(!se(e,t))throw new Error(`Cookie '${t}' not found in '${e}'`);return e.slice(t.length+1).split(";")[0]}function ne(e,t){const i=e[t]??[];return"string"==typeof i?[i]:i}function re(e,t){for(const i of Object.keys(e)){if(!ae(i))continue;const a=ce(ne(e,i),t);if(void 0!==a)return a}}function ce(e,t){return e.map((e=>e.trimStart())).find((e=>se(e,t)))}function ue(e,t){const i=[];for(const a of Object.keys(e)){if(!ae(a))continue;const s=ne(e,a);i.push(...de(s,t))}return i}function de(e,t){return e.map((e=>e.trimStart())).filter((e=>se(e,t)))}Object.defineProperty(ie,"__esModule",{value:!0}),ie.findAllInSetCookieStrings=ie.findAllInHeaders=ie.findValueInSetCookieStrings=ie.findFirstInSetCookieStrings=ie.findFirstInHeaders=ie.findOnlyValueInHeaders=ie.findFirstValueInHeaders=ie.parseValueFromString=void 0,ie.parseValueFromString=oe,ie.findFirstValueInHeaders=function(e,t){const i=re(e,t);return void 0!==i?oe(i,t):void 0},ie.findOnlyValueInHeaders=function(e,t){const i=ue(e,t);if(i.length>1)throw new Error(`Found more than one set-cookie with name ${t}`);return void 0!==i[0]?oe(i[0],t):void 0},ie.findFirstInHeaders=re,ie.findFirstInSetCookieStrings=ce,ie.findValueInSetCookieStrings=function(e,t){const i=ce(e,t);if(void 0!==i)return oe(i,t)},ie.findAllInHeaders=ue,ie.findAllInSetCookieStrings=de;var he=x&&x.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,s)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),pe=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),le=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&he(t,e,i);return pe(t,e),t};Object.defineProperty(X,"__esModule",{value:!0}),X.setCookie=X.cookie=void 0,X.cookie=le(Y),X.setCookie=le(ie);var ge={},fe={},ye={};Object.defineProperty(ye,"__esModule",{value:!0}),ye.KINESIS_URL=ye.API_VERSION=ye.REGION=ye.PAYLOAD_TYPE=ye.STATE=void 0,ye.STATE={ACTIVE:"ACTIVE",UPDATING:"UPDATING",CREATING:"CREATING",DELETING:"DELETING"},ye.PAYLOAD_TYPE="string",ye.REGION="eu-west-1",ye.API_VERSION="2013-12-02",ye.KINESIS_URL="https://kinesis.eu-west-1.amazonaws.com";var me={};Object.defineProperty(me,"__esModule",{value:!0}),me.headersToRecord=me.increaseBatchSize=me.handleFailedLogs=me.batchArrayForKinesis=me.sleep=void 0,me.sleep=async function(e){await new Promise((t=>{setTimeout(t,e)}))},me.batchArrayForKinesis=function(e,t,i){const a=[];for(let s=0;s<e.length;s+=t){const o=e.slice(s,s+t);a.push({Data:i.from(JSON.stringify(o)).toString("base64"),PartitionKey:Date.now().toString()})}return a},me.handleFailedLogs=function(e,t,i){const a=2*i,s=[...e,...t],o=s.length-a;return o>0&&(console.error(`Netacea Error :: failed to send ${o} log(s) to Kinesis ingest.`),s.splice(0,o)),s},me.increaseBatchSize=function(e,t){return e!==t?Math.min(t,2*e):e},me.headersToRecord=function(e){const t={};return e.forEach(((e,i)=>{t[i]=e})),t},Object.defineProperty(fe,"__esModule",{value:!0}),fe.WebStandardKinesis=void 0;const Ce=ye,Se=me;fe.WebStandardKinesis=class{constructor({deps:e,kinesisIngestArgs:t}){if(this.maxLogBatchSize=20,this.maxLogAgeSeconds=10,this.logBatchSize=20,this.logCache=[],this.intervalSet=!1,this.deps=e,void 0===t.kinesisAccessKey)throw new Error("kinesisAccessKey is required for kinesis ingest");if(void 0===t.kinesisSecretKey)throw new Error("kinesisSecretKey is required for kinesis ingest");this.kinesisStreamName=t.kinesisStreamName,this.kinesisAccessKey=t.kinesisAccessKey,this.kinesisSecretKey=t.kinesisSecretKey,this.maxAwaitTimePerIngestCallMs=t.maxAwaitTimePerIngestCallMs,void 0!==t.maxLogAgeSeconds&&t.maxLogAgeSeconds<this.maxLogAgeSeconds&&t.maxLogAgeSeconds>0&&(this.maxLogAgeSeconds=t.maxLogAgeSeconds),void 0!==t.logBatchSize&&(this.maxLogBatchSize=t.logBatchSize),this.logBatchSize=!0===t.rampUpBatchSize?1:this.maxLogBatchSize}async putToKinesis(){if(0===this.logCache.length)return;const e=[...this.logCache];this.logCache=[];try{const t=new this.deps.AwsClient({accessKeyId:this.kinesisAccessKey,secretAccessKey:this.kinesisSecretKey}),i=await this.signRequest(t,{streamName:this.kinesisStreamName,accessKeyId:this.kinesisAccessKey,secretAccessKey:this.kinesisSecretKey},e,this.logBatchSize);await this.deps.makeRequest({headers:(0,Se.headersToRecord)(i.headers),host:Ce.KINESIS_URL,method:"POST",path:"/",body:i.body}),this.logBatchSize=(0,Se.increaseBatchSize)(this.logBatchSize,this.maxLogBatchSize)}catch(t){this.logCache=(0,Se.handleFailedLogs)(this.logCache,e,this.maxLogBatchSize)}}async ingest(e){if(this.logCache.push(e),this.logCache.length>=this.logBatchSize){const e=[];e.push(this.putToKinesis()),void 0!==this.maxAwaitTimePerIngestCallMs&&e.push((0,Se.sleep)(this.maxAwaitTimePerIngestCallMs)),await Promise.race(e)}else if(!this.intervalSet){this.intervalSet=!0;const e=(0,Se.sleep)(1e3*this.maxLogAgeSeconds).then((async()=>{await this.putToKinesis(),this.intervalSet=!1})).catch((()=>{}));void 0===this.maxAwaitTimePerIngestCallMs&&await e}}async signRequest(e,t,i,a){const s={Records:(0,Se.batchArrayForKinesis)(i,a,this.deps.Buffer),PartitionKey:Date.now().toString(),StreamName:t.streamName};return await e.sign(Ce.KINESIS_URL,{body:JSON.stringify(s),method:"POST",headers:{"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"Kinesis_20131202.PutRecords"}})}};var ke={};Object.defineProperty(ke,"__esModule",{value:!0}),ke.Kinesis=void 0;const ve=ye,Ie=me;ke.Kinesis=class{constructor({deps:e,kinesisIngestArgs:t}){this.maxLogBatchSize=20,this.maxLogAgeSeconds=10,this.logBatchSize=20,this.logCache=[],this.intervalSet=!1,this.deps=e,this.kinesisStreamName=t.kinesisStreamName,this.kinesisAccessKey=t.kinesisAccessKey,this.kinesisSecretKey=t.kinesisSecretKey,this.maxAwaitTimePerIngestCallMs=t.maxAwaitTimePerIngestCallMs,void 0!==t.maxLogAgeSeconds&&t.maxLogAgeSeconds<this.maxLogAgeSeconds&&t.maxLogAgeSeconds>0&&(this.maxLogAgeSeconds=t.maxLogAgeSeconds),void 0!==t.logBatchSize&&(this.maxLogBatchSize=t.logBatchSize),this.logBatchSize=!0===t.rampUpBatchSize?1:this.maxLogBatchSize}async putToKinesis(){if(0===this.logCache.length)return;const e=[...this.logCache];this.logCache=[];try{const t=this.signRequest({streamName:this.kinesisStreamName,accessKeyId:this.kinesisAccessKey,secretAccessKey:this.kinesisSecretKey},e,this.logBatchSize);if("POST"!==t.method)throw new Error(`Unexpected method. Expected POST but got ${t.method}`);await this.deps.makeRequest({headers:t.headers??{},host:`https://${t.hostname}`,method:t.method,path:t.path??"/",body:t.body}),this.logBatchSize=(0,Ie.increaseBatchSize)(this.logBatchSize,this.maxLogBatchSize)}catch(t){this.logCache=(0,Ie.handleFailedLogs)(this.logCache,e,this.maxLogBatchSize)}}async ingest(e){if(this.logCache.push(e),this.logCache.length>=this.logBatchSize){const e=[];e.push(this.putToKinesis()),void 0!==this.maxAwaitTimePerIngestCallMs&&e.push((0,Ie.sleep)(this.maxAwaitTimePerIngestCallMs)),await Promise.race(e)}else if(!this.intervalSet){this.intervalSet=!0;const e=(0,Ie.sleep)(1e3*this.maxLogAgeSeconds).then((async()=>{await this.putToKinesis(),this.intervalSet=!1})).catch((()=>{}));void 0===this.maxAwaitTimePerIngestCallMs&&await e}}signRequest(e,t,i){const{accessKeyId:a,secretAccessKey:s}=e,o={Records:(0,Ie.batchArrayForKinesis)(t,i,this.deps.Buffer),PartitionKey:Date.now().toString(),StreamName:e.streamName};return this.deps.aws4.sign({service:"kinesis",body:JSON.stringify(o),headers:{"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"Kinesis_20131202.PutRecords"},region:ve.REGION},{accessKeyId:a,secretAccessKey:s})}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Kinesis=e.WebStandardKinesis=void 0;var t=fe;Object.defineProperty(e,"WebStandardKinesis",{enumerable:!0,get:function(){return t.WebStandardKinesis}});var i=ke;Object.defineProperty(e,"Kinesis",{enumerable:!0,get:function(){return i.Kinesis}})}(ge);var we={};function Ee(e,t){let i=null;if("number"==typeof e&&Number.isFinite(e))i=e;else if("string"==typeof e&&""!==e.trim()){const t=Number(e);Number.isFinite(t)&&(i=t)}if(null===i){if("number"!=typeof t.defaultValue)return t.defaultValue;i=t.defaultValue}return void 0!==t.minValue&&(i=Math.max(t.minValue,i)),void 0!==t.maxValue&&(i=Math.min(t.maxValue,i)),i}Object.defineProperty(we,"__esModule",{value:!0}),we.parseHttpHeaderName=we.stringOrDefault=we.parseIntOrDefault=we.parseNumberOrDefault=void 0,we.parseNumberOrDefault=Ee,we.parseIntOrDefault=function(e,t){const i=Ee(e,t);return"number"==typeof i?Math.floor(i):i},we.stringOrDefault=function(e,t){return"string"==typeof e&&""!==e?e:"number"==typeof e?e.toString():t},we.parseHttpHeaderName=function(e){if("string"!=typeof e)return;return/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(e)?e:void 0};var Ne={};Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.searchParamsFromRecord=void 0,Ne.searchParamsFromRecord=function(e){const t=new URLSearchParams;for(const[i,a]of Object.entries(e))t.append(i,a);return t};var be={},Ae={};Object.defineProperty(Ae,"__esModule",{value:!0}),Ae.JweFactory=void 0;Ae.JweFactory=class{constructor(e){this.jose=e}async encrypt(e,t,i="A128CBC-HS256"){const a=this.jose.base64url.decode(t),s=(new TextEncoder).encode(e);return await new this.jose.CompactEncrypt(s).setProtectedHeader({alg:"dir",enc:i}).encrypt(a)}async decrypt(e,t){const i=this.jose.base64url.decode(t),{plaintext:a}=await this.jose.compactDecrypt(e,i,{keyManagementAlgorithms:["dir"],contentEncryptionAlgorithms:["A256GCM","A128CBC-HS256"]});return(new TextDecoder).decode(a)}static isJweEncrypted(e){return 5===e.split(".").length&&e.includes("..")}};var _e=x&&x.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,s)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),Te=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oe=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&_e(t,e,i);return Te(t,e),t};Object.defineProperty(be,"__esModule",{value:!0}),be.jwe=void 0,be.jwe=Oe(Ae);var Re={};Object.defineProperty(Re,"__esModule",{value:!0}),Re.truncateLongFields=Re.parseGraphQl=Re.parseGraphQlRequestBody=Re.getGraphQLParserConfig=void 0;const Pe=we;function xe(e,t){const i=e.parserRegex;return t.match(i)?.groups??{}}function Me(e,t){const i=e.maxValueLength;for(const e of Object.keys(t)){const o=t[e];t[e]=(s=i,(a=o).length<=s?a:a.slice(0,s)+"…")}var a,s;return t}Re.getGraphQLParserConfig=function(e){const t={includePaths:[],maxParsableBytes:(0,Pe.parseIntOrDefault)(e?.maxParsableBytes,{defaultValue:1e6,minValue:1e3}),maxValueLength:(0,Pe.parseIntOrDefault)(e?.maxValueLength,{defaultValue:256,minValue:8}),parserRegex:/^\s*(?<OpType>query|mutation|subscription)\s+(?<OpName>[_A-Za-z][_0-9A-Za-z]+)?/,useStrictAcceptHeaderCheck:e?.useStrictAcceptHeaderCheck??!0};if(Array.isArray(e?.includePaths))for(const i of e.includePaths)"string"==typeof i&&t.includePaths.push(i);try{if(e?.parserRegex instanceof RegExp)t.parserRegex=e?.parserRegex;else if("object"==typeof e?.parserRegex){const{regex:i,flags:a}=e?.parserRegex;"string"==typeof i&&(t.parserRegex=new RegExp(i,a))}}catch{}return t},Re.parseGraphQlRequestBody=function(e,t){if(""===t)throw new Error("Netacea Error: Empty GraphQL body received");const i=JSON.parse(t);if("object"!=typeof i)throw new Error("Netacea Error: Invalid GraphQL JSON");const a={...xe(e,i?.query??"")},s=(i?.operationName??"").trim();return""!==s&&(a.OpName=s),Me(e,a)},Re.parseGraphQl=xe,Re.truncateLongFields=Me;var Ke={},Ve={};Object.defineProperty(Ve,"__esModule",{value:!0}),Ve.ResponseView=Ve.AbstractResponseView=void 0;class He{constructor(e){this.cacheStatus=e}get contentType(){return this.readHeader("content-type")?.[0]}get contentLength(){return this.readHeader("content-length")?.[0]}get location(){return this.readHeader("location")?.[0]}get setCookie(){return this.readHeader("set-cookie")}}Ve.AbstractResponseView=He;Ve.ResponseView=class extends He{constructor(e,t){super(t),this.response=e}get status(){return this.response.status}async getBody(){return void 0===this._body&&(this._body=await this.response.clone().text()??""),this._body}readHeader(e){if("set-cookie"===(e=e.toLowerCase()))return this.response.headers.getSetCookie();const t=this.response.headers.get(e)??void 0;return void 0!==t?[t]:[]}readHeaders(){const e={};return this.response.headers.forEach(((t,i)=>{e[i]=[t]})),e["set-cookie"]=this.response.headers.getSetCookie(),e}},Object.defineProperty(Ke,"__esModule",{value:!0}),Ke.HttpClient=Ke.AbstractHttpClient=void 0;const je=Ve;class De{constructor(e){this.fetchFn=e.fetch,this.cache=e.cache}async request(e,t){const i=this.cache?.get(e,t);if(void 0!==i)return this.createResponseView(i,"HIT");const a=await this.fetchFn(e,t),s=this.createResponseView(a,"MISS");return await this.populateCache(e,t,s),s}async populateCache(e,t,i){void 0!==this.cache&&await this.cache.set(e,t,i).catch((()=>{}))}async get(e,t){return await this.request(e,{...t,method:"GET"})}async post(e,t,i){return await this.request(e,{...i,method:"POST",body:t})}}Ke.AbstractHttpClient=De;Ke.HttpClient=class extends De{createResponseView(e,t){return new je.ResponseView(e,t)}};var Le={},Fe={};Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.LruCache=void 0;Fe.LruCache=class{constructor(e){if(this.capacity=e,this.entries=new Map,!Number.isInteger(e)||e<=0)throw new RangeError("LruCache capacity must be a positive integer")}get size(){return this.entries.size}get(e){if(!this.entries.has(e))return;const t=this.entries.get(e);return this.entries.delete(e),this.entries.set(e,t),t}set(e,t){if(this.entries.delete(e),this.entries.set(e,t),this.entries.size>this.capacity){const e=Array.from(this.entries.keys());e.length>0&&this.entries.delete(e[0])}}find(e){for(const[t,i]of this.entries)if(e(i,t))return this.get(t)}delete(e){return this.entries.delete(e)}clear(){this.entries.clear()}},Object.defineProperty(Le,"__esModule",{value:!0}),Le.HttpCache=void 0;const qe=Fe,$e=we,Ue=1048576;function Be(e){const t={};if(void 0===e)return t;if(Array.isArray(e)){for(const[i,a]of e)t[i.toLowerCase()]=a;return t}if("function"==typeof e.forEach)return e.forEach(((e,i)=>{"string"==typeof i&&"string"==typeof e&&(t[i.toLowerCase()]=e)})),t;for(const[i,a]of Object.entries(e))t[i.toLowerCase()]=a;return t}function Ge(e){if(void 0===e||""===e.trim())return{};const t={};for(const i of e.split(",")){const e=i.trim();if(""===e)continue;const a=e.indexOf("=");if(-1===a){t[e.toLowerCase()]=!0;continue}t[e.slice(0,a).trim().toLowerCase()]=e.slice(a+1).trim().replace(/^"(.+)"$/,"$1")}return t}function ze(e){const t=(0,$e.parseNumberOrDefault)(e,{defaultValue:void 0});return"number"==typeof t&&t>=0?t:void 0}function We(e){if(void 0===e)return;const t=Date.parse(e);return Number.isNaN(t)?void 0:t}function Je(e,t){return{method:(i=t?.method,(i??"GET").toUpperCase()),url:e,headers:Be(t?.headers)};var i}function Xe(e){if("GET"!==e.method)return`method=${e.method}`;if(void 0!==e.headers.authorization)return"authorization header present";if(void 0!==e.headers.range)return"range header present";if(void 0!==e.headers["if-match"])return"if-match header present";if(void 0!==e.headers["if-none-match"])return"if-none-match header present";if(void 0!==e.headers["if-modified-since"])return"if-modified-since header present";if(void 0!==e.headers["if-unmodified-since"])return"if-unmodified-since header present";if(void 0!==e.headers["if-range"])return"if-range header present";return void 0!==Ge(e.headers["cache-control"])["no-store"]?"request cache-control=no-store":void 0}function Ye(e,t){return!t.vary.includes("*")&&t.vary.every((i=>(e.headers[i]??"")===(t.varyRequestHeaders[i]??"")))}function Qe(e){const t=ze(e.cacheControl["s-maxage"]);if(void 0!==t)return t;const i=ze(e.cacheControl["max-age"]);if(void 0!==i)return i;const a=We(e.headers.expires);return void 0===a?0:Math.max(0,Math.floor((a-(e.dateHeaderMs??e.storedAt))/1e3))}function Ze(e){return JSON.stringify([e.url,e.vary.map((t=>[t,e.varyRequestHeaders[t]??""]))])}Le.HttpCache=class{constructor(e={}){this.entries=new qe.LruCache(10),this.defaultCacheControl=e.defaultCacheControl,this.now=e.now??(()=>Date.now())}get(e,t){const i=Je(e,t);if("GET"!==i.method)return new Response("Not Found",{status:404,statusText:"Not Found"});if(void 0!==Xe(i))return;const a=Ge(i.headers["cache-control"]);if(void 0!==a["no-cache"])return;const s=this.entries.find((e=>e.url===i.url&&Ye(i,e)));if(void 0===s)return;if(void 0!==s.cacheControl["no-cache"])return;const o=ze(a["max-age"]),n=void 0===o?Qe(s):Math.min(Qe(s),o),r=function(e,t){return Math.max(0,Math.floor((t-e.storedAt)/1e3))+e.ageSeconds}(s,this.now());return r>=n?void 0:new Response(s.body,{headers:{...s.headers,age:String(r)},status:s.status})}async set(e,t,i){const a=Je(e,t);if(void 0!==Xe(a))return;const s=this.entries.find((e=>e.url===a.url&&Ye(a,e))),o=function(e){const t={};for(const[i,a]of Object.entries(e.readHeaders()))a.length>0&&(t[i.toLowerCase()]=a.join(", "));return t}(i),n=Ge(o["cache-control"]??this.defaultCacheControl);if(200!==i.status||void 0!==n["no-store"]||void 0!==n.private||i.setCookie.length>0)return void this.removeEntry(s);const r=function(e){return void 0===e.vary?[]:e.vary.split(",").map((e=>e.trim().toLowerCase())).filter((e=>""!==e))}(o);if(r.includes("*"))return void this.removeEntry(s);const c=Number(o["content-length"]);if(Number.isFinite(c)&&c>Ue)return void this.removeEntry(s);const u=await i.getBody();if((new TextEncoder).encode(u).byteLength>Ue)return void this.removeEntry(s);const d=this.now(),h=Number(o.age??"0"),p=We(o.date),l=void 0===p?0:Math.max(0,Math.floor((d-p)/1e3)),g={body:u,headers:o,status:i.status,storedAt:d,url:a.url,vary:r,varyRequestHeaders:Object.fromEntries(r.map((e=>[e,a.headers[e]??""]))),cacheControl:n,dateHeaderMs:p,ageSeconds:Math.max(Number.isFinite(h)&&h>=0?h:0,l)};void 0!==s&&this.entries.delete(Ze(s)),this.entries.set(Ze(g),g)}removeEntry(e){void 0!==e&&this.entries.delete(Ze(e))}};var et={};Object.defineProperty(et,"__esModule",{value:!0}),et.RequestView=et.AbstractRequestView=void 0;const tt=we;class it{get contentLength(){return(0,tt.parseIntOrDefault)(this.readHeader("content-length")?.[0],{defaultValue:0,minValue:0,maxValue:Number.MAX_SAFE_INTEGER})}get userAgent(){return this.readHeader("user-agent")?.[0]??""}get contentType(){return this.readHeader("content-type")?.[0]}get xForwardedFor(){return this.readHeader("x-forwarded-for")?.[0]}get referer(){return this.readHeader("referer")?.[0]}get accept(){return this.readHeader("accept")?.[0]}get host(){return this.readHeader("host")?.[0]}async getHttpMessageSignatureFields(){const e=this.readJoinedHeader("Signature");return{httpMsgSigSha256:void 0===e?void 0:(await this.sha256Hash(e)).toLowerCase().slice(0,12),httpMsgSigInput:this.readJoinedHeader("Signature-Input"),httpMsgSigAgent:this.readJoinedHeader("Signature-Agent")}}readJoinedHeader(e){const t=this.readHeader(e).join(",");return""!==t?t:void 0}}et.AbstractRequestView=it;et.RequestView=class extends it{constructor(e,t){super(),this.request=e,this.sha256Digest=t}get method(){return this.request.method}get url(){return new URL(this.request.url)}async getBody(){return void 0===this._body&&(this._body=await this.request.clone().text()??""),this._body}readHeader(e){const t=this.request.headers.get(e)??void 0;return void 0!==t?[t]:[]}async sha256Hash(e){const t=(new TextEncoder).encode(e),i=await this.sha256Digest.digest("SHA-256",t);return Array.from(new Uint8Array(i)).map((e=>e.toString(16).padStart(2,"0"))).join("")}};var at={};Object.defineProperty(at,"__esModule",{value:!0}),at.ProtectorApiResponseView=at.AbstractProtectorApiResponseView=void 0;const st=we;class ot{get redirectHost(){return this.readHeader("x-netacea-redirect-host")?.[0]}get redirectLocation(){return this.readHeader("x-netacea-redirect-location")?.[0]}get redirectStatus(){return this.readHeader("x-netacea-redirect-status")?.[0]}get redirectStatusCode(){const e=this.readHeader("x-netacea-redirect-status")?.[0];if(void 0===e)return;const t=(0,st.parseIntOrDefault)(e,{defaultValue:0,minValue:0,maxValue:Number.MAX_SAFE_INTEGER});return t>=300&&t<400?t:void 0}get eventId(){return this.readHeader("x-netacea-event-id")?.[0]}get sessionCookieMaxAge(){return(0,st.parseIntOrDefault)(this.readHeader("x-netacea-mitata-expiry")?.[0],{defaultValue:86400,minValue:0,maxValue:Number.MAX_SAFE_INTEGER})}get captchaCookieMaxAge(){const e=this.readHeader("x-netacea-mitatacaptcha-expiry")?.[0];return(0,st.parseIntOrDefault)(e,{defaultValue:86400,minValue:0,maxValue:Number.MAX_SAFE_INTEGER})}getProtectorCodes(e){return{match:this.readHeader("x-netacea-match")?.[0]??e?.match??"0",mitigate:this.readHeader("x-netacea-mitigate")?.[0]??e?.mitigate??"0",captcha:this.readHeader("x-netacea-captcha")?.[0]??e?.captcha??"0"}}getMonetisationRedirectLocation(e,t){const i=this.redirectLocation;if(void 0!==i)return i;const a=this.redirectHost;if(void 0!==a){const i=new URL(`https://${a}`);return i.pathname=e,i.search=t,i.toString()}}getMonetisationRedirect(e,t){const i=this.getMonetisationRedirectLocation(e,t);if(void 0!==i)return{location:i,statusCode:this.redirectStatusCode??303}}async getCaptchaJson(e,t){const i=await this.getBody();let a=this.eventId;if(void 0===a&&"string"==typeof i){a=function(e){if(null==e||"object"!=typeof e)throw new Error("Response body is not a valid object!");const{trackingId:t}=e;if("string"!=typeof t||0===t.length)throw new Error("Response body does not contain a valid trackingId!");return t}(JSON.parse(i))}if(void 0===a)throw new Error("Could not resolve Tracking ID for captcha event.");return function(e,t,i){const a=`${e}?trackingId=${i}`,s=void 0!==t?`https://${t}${a}`:void 0;return JSON.stringify({captchaRelativeURL:a,captchaAbsoluteURL:s})}(e,t,a)}}at.AbstractProtectorApiResponseView=ot;at.ProtectorApiResponseView=class extends ot{constructor(e){super(),this.response=e}get status(){return this.response.status}async getBody(){return void 0===this._body&&(this._body=await this.response.clone().text()??""),this._body}readHeader(e){if("set-cookie"===(e=e.toLowerCase()))return this.response.headers.getSetCookie();const t=this.response.headers.get(e)??void 0;return void 0!==t?[t]:[]}},function(e){var t=x&&x.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,s)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),i=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(a,e,s);return i(a,e),a},s=x&&x.__exportStar||function(e,i){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(i,a)||t(i,e,a)};Object.defineProperty(e,"__esModule",{value:!0}),e.graphql=e.webcrypto=e.url=e.parsing=e.ingest=e.headers=e.configValidation=e.cookie=e.NetaceaCookieV3IssueReason=void 0;var o=K;Object.defineProperty(e,"NetaceaCookieV3IssueReason",{enumerable:!0,get:function(){return o.NetaceaCookieV3IssueReason}}),e.cookie=a(V),e.configValidation=a(J),e.headers=a(X),e.ingest=a(ge),e.parsing=a(we),e.url=a(Ne),e.webcrypto=a(be),e.graphql=a(Re),s(Ke,e),s(Le,e),s(Fe,e),s(et,e),s(Ve,e),s(at,e)}(M);const nt=new M.webcrypto.jwe.JweFactory(c);class rt extends M.cookie.AbstractCookieFactory{async encrypt(e){if(void 0===this.config.cookieEncryptionKey)throw new Error("VercelCookieFactory.encrypt called without a configured encryption key");return await nt.encrypt(e,this.config.cookieEncryptionKey,"A256GCM")}async decrypt(e){if(void 0===this.config.cookieEncryptionKey)throw new Error("VercelCookieFactory.decrypt called without a configured encryption key");return await nt.decrypt(e,this.config.cookieEncryptionKey)}async hash(e,i){const a=await R(t.Buffer.from(e),i),s=t.Buffer.from(a).toString("hex");return t.Buffer.from(s).toString("base64")}getRandomValues(e){return crypto.getRandomValues(e)}}var ct;function ut(e){if(void 0===e)return"text/html";const t=e.toLowerCase(),i=t.includes("application/html")||t.includes("text/html"),a=t.includes("application/json");return!i&&a?"application/json":"text/html"}function dt(e,t,i){if(void 0===i||""===i)return!1;i.startsWith("/")||(i="/"+i);const{pathname:a,search:s}=e;return a.includes(i)&&s.includes("trackingId")&&"get"===t.toLowerCase()}function ht(e,t){return"/AtaVerifyCaptcha"===e.pathname&&"post"===t.toLowerCase()}function pt(e,t){if(void 0===t)return e;const i=e.headers.get("set-cookie")??"",a=new Headers(e.headers);if(void 0!==t.setCookie)for(const e of t.setCookie)i.includes(e.split("=")[0])||a.append("set-cookie",e);return new Response(e.body,{headers:a,status:e.status,statusText:e.statusText})}function lt(e){let t="",i="";for(const a in e){const s=e[a];void 0!==s&&(t=`${t}${i}${a}=${s}`,i="; ")}return t}function gt(e){const t=e.status??403;return new Response("Forbidden",{status:t,statusText:{402:"Payment Required",403:"Forbidden"}[t]??"",headers:e.responseHeaders})}function ft(e){const t=new Headers(e.responseHeaders);return void 0!==e.config.captchaHeader&&t.append(e.config.captchaHeader.name,e.config.captchaHeader.value),t.has("content-type")||t.append("content-type","text/html; charset=UTF-8"),new Response(e.body,{status:403,headers:t})}function yt(e,t,i=303){const a=new Headers(e.responseHeaders);return a.append("Location",t),new Response("Forbidden",{status:i,statusText:"",headers:a})}!function(e){e[e.NEW_SESSION=1]="NEW_SESSION",e[e.EXISTING_SESSION=2]="EXISTING_SESSION",e[e.RENEW_SESSION=3]="RENEW_SESSION"}(ct||(ct={}));var mt="@netacea/vercel",Ct="0.9.11";class St extends Error{protectorApiResponse;latencyMs;constructor(e,t){super(`Got status ${e.status} when calling protector API with ${t}ms latency.`),this.protectorApiResponse=e,this.latencyMs=t}}const kt="unknown";function vt(e,t,i){let{match:a,mitigate:s,captcha:o}=t;i||("2"===o?o="4":"3"===o?o="5":"b"===o?o="d":"c"===o&&(o="e"));let n=w[a]??kt+"_";n+=E[s]??kt;let r=b[s];if("0"!==o){n+=","+(N[o]??kt);const e=A[o];void 0!==e&&(r=e)}return e===exports.NetaceaMitigationType.INJECT&&(r=k.none),{sessionStatus:n,mitigation:r,parts:{match:a,mitigate:s,captcha:o}}}function It(e,t){const i={"x-netacea-match":e.match,"x-netacea-mitigate":e.mitigate,"x-netacea-captcha":e.captcha};return void 0!==t&&(i["x-netacea-event-id"]=t),i}async function wt(e){let t="";try{t=await async function(e,t){const i=(new TextEncoder).encode(t),a=await crypto.subtle.digest(e,i);return Array.from(new Uint8Array(a)).map((e=>e.toString(16).padStart(2,"0"))).join("")}("SHA-256",e)}catch(e){t=""}return t}class Et{config;constructor(e){this.config=e}async getNetaceaRequestDetails(e){const t=new URL(e.url),i=e.method,a=await this.readCookie(e,this.config.sessionCookieName),s=await this.readCookie(e,this.config.captchaCookieName),o=e.headers.get("x-forwarded-for")??void 0;let n,r=o?.split(/, ?/)[0]??"";void 0!==this.config.ipHeaderName&&(n=e.headers.get(this.config.ipHeaderName)??void 0,r=n??r);const{sessionCookieDetails:c,sessionCookieStatus:u,sessionStatus:d,userId:h}=await async function(e,t,i,a,s){const o=await e.cookieFactory.retrieveCookieInfo(a,s),n={userId:void 0!==o.mitata?o.mitata.userId:void 0,requiresReissue:o.requiresReissue,isExpired:o.isExpired,shouldExpire:o.shouldExpire,isSameIP:o.isSameIP,isPrimaryHashValid:o.isPrimaryHashValid,protectorCheckCodes:{match:o.match,mitigate:o.mitigate,captcha:o.captcha},issueReason:o.issueReason};if(void 0!==n.userId&&n.isPrimaryHashValid){const a=n.userId,{isExpired:s,shouldExpire:o,isSameIP:r}=n,c=s||o||!r&&e.mitigationType!==exports.NetaceaMitigationType.INGEST?ct.RENEW_SESSION:ct.EXISTING_SESSION,{sessionStatus:u}=vt(e.mitigationType,n.protectorCheckCodes,ht(t,i));return{userId:a,sessionCookieStatus:c,sessionStatus:u,sessionCookieDetails:n}}return{sessionStatus:"",userId:O(),sessionCookieStatus:ct.NEW_SESSION,sessionCookieDetails:void 0}}(this.config,t,i,a,r),p={sessionStatus:d,captchaToken:s,sessionCookieDetails:c,sessionCookieStatus:u,userId:h},l=M.parsing.parseIntOrDefault(e.headers.get("x-vercel-id"),{defaultValue:void 0});return{clientIp:r,fingerprints:await Nt(e),ipHeader:void 0!==n?`${this.config.ipHeaderName}: ${n}`:void 0,method:i,protocol:void 0,requestId:e.headers.get("x-vercel-id")??"",sessionDetails:p,url:t,userAgent:e.headers.get("user-agent")??"",referer:e.headers.get("referer")??void 0,contentLength:l,contentType:e.headers.get("content-type")??void 0,xForwardedFor:o}}async readCookie(e,t){const i=e.headers.get("Cookie");if(null==i)return;const a=i.split(/; ?/g),s=`${t}=`;for(const e of a)if(e.startsWith(s)){const i=e.slice(s.length),a=this.config.encryptedCookies??[];if(void 0!==this.config.cookieEncryptionKey&&a.includes(t))try{return await nt.decrypt(i,this.config.cookieEncryptionKey)}catch(e){return}return i}}}async function Nt(e){const{headers:t}=e,i=await async function(e){const t=function(e){const t=[];return e.forEach(((e,i)=>{const a=i.toLowerCase();"cookie"===a||"referer"===a||a.startsWith("x-netacea-")||t.push(i)})),t.join(",")}(e);return await wt(t)}(t),a=function(e,t){return e.get(t)?.split(/; ?/)??[]}(t,"cookie").map((e=>e.split("=")[0])).flat(),s=await async function(e){const t=e.join(",");return await wt(t)}(a);return{headerFingerprint:""===i?i:`h_${i.substring(1,15)}`,cookieFingerprint:""===s?s:`c_${s.substring(1,15)}`}}const{configureCookiesDomain:bt}=C.cookie.attributes;class At{apiKey;captchaHeader;captchaSecretKey;captchaSiteKey;cookieEncryptionKey;enableDynamicCaptchaContentType=!1;encryptedCookies=[];ingestServiceUrl;ingestType;ipHeaderName;kinesisConfigArgs;mitataCookieExpirySeconds;mitigationServiceTimeoutMs;mitigationServiceUrl;mitigationType;netaceaCaptchaCookieAttributes;netaceaCaptchaCookieName;netaceaCaptchaPath;netaceaCheckpointSignalPath;netaceaCookieAttributes;netaceaCookieName;secretKey;timeout;constructor(e){if(null===e.apiKey||void 0===e.apiKey)throw new Error("apiKey is a required parameter");if(this.apiKey=e.apiKey,null===e.secretKey||void 0===e.secretKey)throw new Error("secretKey is a required parameter");this.secretKey=e.secretKey;const{mitigationServiceUrl:t="https://mitigations.netacea.net"}=e;var i;this.mitigationServiceUrl=t.endsWith("/")?t.slice(0,-1):t,this.ingestServiceUrl=e.ingestServiceUrl??"https://ingest.netacea.net",this.mitigationType=e.mitigationType??exports.NetaceaMitigationType.INGEST,this.ingestType=e.ingestType??exports.NetaceaIngestType.KINESIS,this.kinesisConfigArgs=e.kinesis,void 0===e.captchaSiteKey&&void 0===e.captchaSecretKey||(this.captchaSiteKey=e.captchaSiteKey,this.captchaSecretKey=e.captchaSecretKey),this.timeout=(i=e.timeout??3e3)<=0?d:i,this.mitigationServiceTimeoutMs=M.parsing.parseIntOrDefault(e.mitigationServiceTimeoutMs,{defaultValue:1e3,minValue:100,maxValue:1e4}),this.netaceaCookieName=M.parsing.stringOrDefault(e.netaceaCookieName,"_mitata"),this.netaceaCaptchaCookieName=M.parsing.stringOrDefault(e.netaceaCaptchaCookieName,"_mitatacaptcha");const{cookieAttributes:a,captchaCookieAttributes:s}=bt(e.netaceaCookieAttributes,e.netaceaCaptchaCookieAttributes);var o,n;this.netaceaCookieAttributes=a??"",this.netaceaCaptchaCookieAttributes=s??"",this.encryptedCookies=[this.netaceaCookieName,this.netaceaCaptchaCookieName],this.mitataCookieExpirySeconds=(o=this.mitigationType,void 0===(n=e.netaceaCookieExpirySeconds??e.mitataCookieExpirySeconds)?o===exports.NetaceaMitigationType.INGEST?3600:60:n),this.cookieEncryptionKey=e.cookieEncryptionKey,this.netaceaCaptchaPath=function(e){if(Boolean(e)&&"string"==typeof e)return e.startsWith("/")?e:`/${e}`}(e.netaceaCaptchaPath),this.netaceaCheckpointSignalPath=e.netaceaCheckpointSignalPath,void 0!==this.netaceaCaptchaPath&&(this.enableDynamicCaptchaContentType="boolean"==typeof e.enableDynamicCaptchaContentType?e.enableDynamicCaptchaContentType:"true"===e.enableDynamicCaptchaContentType),this.captchaHeader=e.captchaHeader,this.ipHeaderName=e.ipHeaderName}}class _t{config;kinesis;requestAnalyser;cookieFactory;workerInstanceId;constructor(i){this.config=new At(i),this.cookieFactory=new rt({cookieEncryptionKey:this.config.cookieEncryptionKey,secretKey:this.config.secretKey,expirySeconds:this.config.mitataCookieExpirySeconds}),this.config.ingestType===exports.NetaceaIngestType.KINESIS&&(void 0===this.config.kinesisConfigArgs?console.warn(`NETACEA WARN: no kinesis args provided, when ingestType is ${this.config.ingestType}`):this.kinesis=new M.ingest.WebStandardKinesis({deps:{AwsClient:e.AwsClient,Buffer:t.Buffer,makeRequest:this.makeRequest.bind(this)},kinesisIngestArgs:{...this.config.kinesisConfigArgs,apiKey:this.config.apiKey}})),this.requestAnalyser=new Et({cookieEncryptionKey:this.config.cookieEncryptionKey,encryptedCookies:this.config.encryptedCookies,mitigationType:this.config.mitigationType,secretKey:this.config.secretKey,sessionCookieName:this.config.netaceaCookieName,captchaCookieName:this.config.netaceaCaptchaCookieName,ipHeaderName:this.config.ipHeaderName,cookieFactory:this.cookieFactory}),this.workerInstanceId=""}async run(e,t){""===this.workerInstanceId&&(this.workerInstanceId=u.v4());const i=new Request(e.request);if(function(e,t,i){let a=e;try{a=new URL(e).pathname}catch(e){}return void 0!==i&&i.length>0&&a.endsWith(i)&&"get"===t.toLowerCase()}(i.url,i.method,this.config.netaceaCheckpointSignalPath)){const e={sessionStatus:",checkpoint_signal"};return await this.handleResponse(i,e,t)}const a=await this.requestAnalyser.getNetaceaRequestDetails(i);let s=await async function(e,t){const i=new Promise(((e,i)=>{const a=Date.now();setTimeout((()=>{const t=Date.now()-a;e(t)}),t)}));return await Promise.race([e,i])}(this.runMitigation(i,a),this.config.mitigationServiceTimeoutMs);return"number"==typeof s&&(s={sessionStatus:"error_open",apiCallLatency:s}),await this.handleResponse(i,s,t)}async inject(e,t){const i=await this.getMitigationResponse(e,t);return{injectHeaders:i.injectHeaders,sessionStatus:i.sessionStatus,setCookie:i.setCookie,apiCallLatency:i.apiCallLatency,apiCallStatus:i.apiCallStatus}}async mitigate(e,t){const i=await this.getMitigationResponse(e,t),a=ht(t.url,e.method),s=a&&i.sessionStatus.includes("checkpoint_post"),o=!a&&dt(t.url,e.method,this.config.netaceaCaptchaPath),n=()=>{const e=new Headers;if(!o&&!s)for(const t of i.setCookie)e.append("set-cookie",t);return e};if(i.mitigated&&!s){if("captcha"===i.mitigation){const e=n();return"application/json"===i.captchaPageContentType&&e.set("content-type","application/json"),{...i,response:ft({config:this.config,responseHeaders:e,body:i.body})}}return{...i,response:gt({responseHeaders:n()})}}return"5"===i.protectorCheckCodes.mitigate?void 0===i.redirect?{...i,response:gt({status:402,responseHeaders:n()})}:{...i,response:yt({config:this.config,responseHeaders:n()},i.redirect.location,i.redirect.statusCode)}:a?{...i,response:new Response(i.body,{status:200,statusText:"OK",headers:n()})}:i}async getNetaceaSession(e,t){const i=(void 0!==t?await this.getNetaceaCookieFromResponse(t):void 0)??await this.getNetaceaCookieFromRequest(e),{protectorCheckCodes:a,userId:s}=function(e){if(void 0===e)return;const t=e.match(T);if(null!=t){const[,e,i,a,s,o,n,r,c]=t;return{signature:e,expiry:i,userId:a,ipHash:s,mitigationType:o,protectorCheckCodes:{match:n,mitigate:r,captcha:c}}}}(i??"")??{userId:"",protectorCheckCodes:{match:"0",mitigate:"0",captcha:"0"}},{sessionStatus:o}=vt(this.config.mitigationType,a,ht(new URL(e.url),e.method));return{userId:s,sessionStatus:o,netaceaCookie:i}}getResponseDetails(e){return e instanceof Response?{rawResponse:e}:{rawResponse:e.response,mitigationLatency:e.protectorLatencyMs,mitigationStatus:e.protectorStatus,sessionStatus:e.sessionStatus}}async ingest(e,t){""===this.workerInstanceId&&(this.workerInstanceId=u.v4());const i=this.getResponseDetails(t),a=await this.requestAnalyser.getNetaceaRequestDetails(e),s=function(e,t,i,a){const s=i.sessionStatus??t.sessionDetails.sessionStatus,o=t.method,n=t.url.pathname,r=t.protocol??null,c=Date.now(),u=t.referer??"",d=M.parsing.parseIntOrDefault(i.rawResponse.headers.get("content-length"),{defaultValue:0});return{BytesReceived:t.contentLength,BytesSent:d,Query:t.url.search.slice(1),IntegrationType:mt?.replace("@netacea/","")??"",IntegrationVersion:Ct,NetaceaMitigationApplied:s??"",UserId:t.sessionDetails.userId,NetaceaUserIdCookieStatus:t.sessionDetails.sessionCookieStatus,ProtectionMode:e.mitigationType??"",ProtectorLatencyMs:i.mitigationLatency,ProtectorStatus:i.mitigationStatus,RealIp:t.clientIp,Referer:""===u?"-":u,Request:`${o} ${n} ${r}`,RequestHost:t.url.host,RequestId:t.requestId,RequestTime:"0",Status:i.rawResponse.status.toString(),TimeLocal:new Date(c).toUTCString(),TimeUnixMsUTC:c,UserAgent:t.userAgent,WorkerInstanceId:a,XForwardedFor:t.xForwardedFor,optional:{headerFingerprint:t.fingerprints.headerFingerprint,cookieFingerprint:t.fingerprints.cookieFingerprint}}}(this.config,a,i,this.workerInstanceId);if(this.config.ingestType===exports.NetaceaIngestType.KINESIS){if(void 0===this.kinesis)return void console.error("Netacea Error: Unable to log as Kinesis has not been defined.");try{await this.kinesis.ingest({...s})}catch(e){console.error("NETACEA Error: ",e.message)}}else{const e={"X-Netacea-API-Key":this.config.apiKey,"content-type":"application/json"},t=await this.makeIngestApiCall(e,s);if(200!==t.status)throw function(e){let t="Unknown error";switch(e.status){case 403:t="Invalid credentials";break;case 500:t="Server error";break;case 502:t="Bad Gateway";break;case 503:t="Service Unavailable";break;case 400:t="Invalid request"}return new Error(`Error reaching Netacea API (${t}), status: ${e.status}`)}(t)}}async handleGetCaptchaRequest(e,t,i){if(void 0===this.config.secretKey)throw new Error("Secret key is required to mitigate");const a=await this.makeMitigateAPICall(e,t,!0,i),{match:s,mitigate:o,captcha:n}=a.responseView.getProtectorCodes();return{body:a.body,apiCallStatus:a.status,apiCallLatency:a.latency,setCookie:[],sessionStatus:",captcha_serve",mitigation:"captcha",mitigated:!0,protectorCheckCodes:{match:s,mitigate:o,captcha:n},captchaPageContentType:t}}async makeRequest({host:e,method:t,path:i,headers:a,body:s}){const o=`${e}${i}`,n=new Request(o,{...{method:t,body:s,headers:a},duplex:"half"}),r=await S(o,n),c={};return r.headers.forEach(((e,t)=>{null!==e&&(c[t]=e)})),{status:r.status,body:await r.clone().text(),headers:c,fetchResponse:r}}async handleResponse(e,t,i){if(this.config.mitigationType===exports.NetaceaMitigationType.MITIGATE&&void 0!==t?.response)return{sessionStatus:t?.sessionStatus??"",response:t.response,protectorLatencyMs:t?.apiCallLatency,protectorStatus:t?.apiCallStatus};if(void 0!==t&&"injectHeaders"in t){e=function(e,t){if(void 0===t.injectHeaders)return e;const i=new Headers(e.headers);for(const[e,a]of Object.entries(t.injectHeaders))i.set(e,a);return new Request(e,{headers:i})}(e,t)}if(this.config.ingestType===exports.NetaceaIngestType.ORIGIN){const{sessionStatus:i,userId:a}=await this.getNetaceaSession(e,t);!function(e,t,i){e.headers.set("x-netacea-integration-type",mt.replace("@netacea/","")),e.headers.set("x-netacea-integration-version",Ct),e.headers.set("x-netacea-userid",i),e.headers.set("x-netacea-bc-type",t)}(e,i,a)}const a=await i(e);return{sessionStatus:t?.sessionStatus??"",response:pt(a,t),protectorLatencyMs:t?.apiCallLatency,protectorStatus:t?.apiCallStatus}}async getMitigationResponse(e,t){const i=this.config.enableDynamicCaptchaContentType?ut(e.headers.get("Accept")??void 0):ut();return await this.processMitigateRequest({getBodyFn:async()=>await Promise.resolve(e.body)??void 0,requestDetails:t,captchaPageContentType:i})}async runMitigation(e,t){try{switch(this.config.mitigationType){case exports.NetaceaMitigationType.MITIGATE:return await this.mitigate(e,t);case exports.NetaceaMitigationType.INJECT:return await this.inject(e,t);case exports.NetaceaMitigationType.INGEST:return await this.processIngest(t);default:throw new Error(`Netacea Error: Mitigation type ${String(this.config.mitigationType)} not recognised`)}}catch(i){let a,s;i instanceof Error&&console.error("Netacea FAILOPEN Error:",i,i.stack),i instanceof St&&(s=i.latencyMs,a=i.protectorApiResponse?.status);return{response:ht(t.url,e.method)?new Response("",{status:500,statusText:"Internal Server Error",headers:{}}):void 0,injectHeaders:It({match:"0",mitigate:"0",captcha:"0"}),sessionStatus:"error_open",apiCallLatency:s,apiCallStatus:a}}}async readCookie(e,t){if(null==t)return;if("string"==typeof t)return await this.readCookie(e,t.split(";"));const i=`${e}=`;for(const a of t){const t=a.split(";")[0].trimStart();if(t.startsWith(i)){const a=t.slice(i.length);if(void 0!==this.config.cookieEncryptionKey&&this.config.encryptedCookies.includes(e))try{return await nt.decrypt(a,this.config.cookieEncryptionKey)}catch(e){return}return a}}}async getNetaceaCookieFromResponse(e){if(void 0===e)return;const t=e instanceof Response?e.headers.getSetCookie():e.setCookie;if(void 0!==t){const e=`${this.config.netaceaCookieName}=`;for(const i of t)if(i.startsWith(e))return await this.readCookie(this.config.netaceaCookieName,i)}}async getNetaceaCookieFromRequest(e){const t=function(e,t,i=""){return e.get(t)??i}(e.headers,"cookie");return await this.readCookie(this.config.netaceaCookieName,t)??""}async makeIngestApiCall(e,t){return await this.makeRequest({host:this.config.ingestServiceUrl,method:"POST",path:"/",headers:e,body:JSON.stringify(t),timeout:this.config.timeout})}async check(e,t){if(void 0===this.config.secretKey)throw new Error("Secret key is required to mitigate");if([ct.NEW_SESSION,ct.RENEW_SESSION].includes(e.sessionDetails.sessionCookieStatus)){const i=e.sessionDetails.userId,a=await this.makeMitigateAPICall(e,t,!1,null),s=a.responseView.getProtectorCodes(),{match:o,mitigate:n,captcha:r}=s,c=[await this.createMitata(e.clientIp,i,o,n,r,a.mitataMaxAge,void 0,Tt(e))],u={match:o,mitigate:n,captcha:r},d=vt(this.config.mitigationType,u,!1),h={body:a.body,apiCallStatus:a.status,apiCallLatency:a.latency,setCookie:c,sessionStatus:d.sessionStatus,mitigation:d.mitigation,mitigated:[k.block,k.captcha].includes(d.mitigation),redirect:"5"===n?a.responseView.getMonetisationRedirect(e.url.pathname,e.url.search):void 0,protectorCheckCodes:d.parts,captchaPageContentType:t};return this.config.mitigationType!==exports.NetaceaMitigationType.INJECT&&d.mitigation!==k.flag||(h.injectHeaders=It(d.parts,a.eventId)),h}{const i=e.sessionDetails.sessionCookieDetails?.protectorCheckCodes,a={match:i?.match??"0",mitigate:i?.mitigate??"0",captcha:i?.captcha??"0"},s=vt(this.config.mitigationType,a,!1),o={body:void 0,apiCallStatus:void 0,apiCallLatency:void 0,setCookie:[],sessionStatus:s.sessionStatus,mitigation:s.mitigation,mitigated:[k.block,k.captcha].includes(s.mitigation),redirect:void 0,protectorCheckCodes:s.parts,captchaPageContentType:t};return this.config.mitigationType!==exports.NetaceaMitigationType.INJECT&&s.mitigation!==k.flag||(o.injectHeaders=It(s.parts)),o}}async createMitata(e,t,i,a,s,o=86400,n=void 0,c=r.NO_SESSION){const u=["1","3","5","a","c","e"].includes(s)||"3"===a||"5"===a?-60:this.config.mitataCookieExpirySeconds,d=void 0!==n?n-Math.floor(Date.now()/1e3):u,h=await this.cookieFactory.createCookieValue({clientIP:e,userId:t,match:i,mitigate:a,captcha:s,gracePeriod:d,cookieId:"",issueReason:c});return C.cookie.netaceaSession.createNetaceaSetCookieString({cookieName:this.config.netaceaCookieName,cookieValue:h,otherAttributes:this.config.netaceaCookieAttributes})}async processCaptcha(e,t){const{status:i,match:a,mitigate:s,captcha:o,body:n,setCookie:r,latency:c}=await this.makeCaptchaAPICall(e,t),u={match:a,mitigate:s,captcha:o},d=vt(this.config.mitigationType,u,!0);return{body:n,apiCallStatus:i,apiCallLatency:c,setCookie:r,sessionStatus:d.sessionStatus,mitigation:d.mitigation,mitigated:[k.block,k.captcha].includes(d.mitigation),protectorCheckCodes:{match:d.parts.match.toString(),mitigate:d.parts.mitigate.toString(),captcha:d.parts.captcha.toString()}}}async getMitataCaptchaFromHeaders(e){let t=e[v];const i=parseInt(e[I]);if(void 0!==t)return void 0!==this.config.cookieEncryptionKey&&this.config.encryptedCookies.includes(this.config.netaceaCaptchaCookieName)&&(t=await nt.encrypt(t,this.config.cookieEncryptionKey,"A256GCM")),C.cookie.netaceaSession.createNetaceaCaptchaSetCookieString({cookieName:this.config.netaceaCaptchaCookieName,cookieValue:t,maxAgeAttribute:String(i),otherAttributes:this.config.netaceaCaptchaCookieAttributes})}parseCaptchaAPICallBody(e,t){let i;if(null!=e)if("string"==typeof e){const a=e.trim();if(a.length>0)if(t.includes("application/json"))try{JSON.parse(a),i=a}catch(e){console.warn("Invalid JSON in captcha data, attempting to serialize:",e),i=JSON.stringify({data:a})}else i=e}else if(e instanceof ReadableStream)i=e;else if(t.includes("application/json"))try{i=JSON.stringify(e)}catch(t){console.warn("Failed to stringify captcha object, wrapping generic container"),i=JSON.stringify({data:e})}else try{i=JSON.stringify(e)}catch{i=String(e)}return i}async makeCaptchaAPICall(e,t){const i={"X-Netacea-API-Key":this.config.apiKey,"X-Netacea-Client-IP":e.clientIp,"user-agent":e.userAgent,"Content-Type":e.contentType??"application/x-www-form-urlencoded; charset=UTF-8"},a=e.sessionDetails.userId;e.sessionDetails.sessionCookieStatus!==ct.NEW_SESSION&&(i["X-Netacea-UserId"]=a),void 0!==this.config.captchaSiteKey&&void 0!==this.config.captchaSecretKey&&(i["X-Netacea-Captcha-Site-Key"]=this.config.captchaSiteKey,i["X-Netacea-Captcha-Secret-Key"]=this.config.captchaSecretKey),i["X-Netacea-Request-Id"]=e.requestId;const s=new URLSearchParams;s.append("headerFP",e.fingerprints.headerFingerprint),s.append("netaceaHeaders","request-id");const o=Date.now(),n=e.contentType??"application/x-www-form-urlencoded; charset=UTF-8",r=this.parseCaptchaAPICallBody(t,n),c=await this.makeRequest({host:this.config.mitigationServiceUrl,path:`/AtaVerifyCaptcha?${s.toString()}`,headers:i,method:"POST",body:r,timeout:this.config.mitigationServiceTimeoutMs}),u=Date.now()-o;if(200!==c.status)throw new St(c,u);const d=new M.ProtectorApiResponseView(c.fetchResponse),{match:h,mitigate:p,captcha:l}=d.getProtectorCodes(),g=d.sessionCookieMaxAge,f=[await this.createMitata(e.clientIp,e.sessionDetails.userId,h,p,l,g,void 0,Tt(e)),await this.getMitataCaptchaFromHeaders(c.headers)].filter((e=>void 0!==e)),y=d.eventId;return{status:c.status,match:h,mitigate:p,captcha:l,setCookie:f,body:c.body,eventId:y,mitataMaxAge:g,latency:u}}async makeMitigateAPICall(e,t,i,a){const s={"X-Netacea-API-Key":this.config.apiKey,"X-Netacea-Client-IP":e.clientIp,"user-agent":e.userAgent,cookie:lt({_mitatacaptcha:e.sessionDetails.captchaToken})};e.sessionDetails.sessionCookieStatus!==ct.NEW_SESSION&&(s["X-Netacea-UserId"]=e.sessionDetails.userId),void 0!==this.config.captchaSiteKey&&void 0!==this.config.captchaSecretKey&&(s["X-Netacea-Captcha-Site-Key"]=this.config.captchaSiteKey,s["X-Netacea-Captcha-Secret-Key"]=this.config.captchaSecretKey),s["X-Netacea-Captcha-Content-Type"]=t,s["X-Netacea-Request-Id"]=e.requestId;let o="/";const n=new URLSearchParams;n.append("headerFP",e.fingerprints.headerFingerprint),n.append("netaceaHeaders","request-id"),i&&(o="/captcha",null!==a&&n.append("trackingId",a));const r=Date.now(),c=await this.makeRequest({host:this.config.mitigationServiceUrl,path:`${o}?${n.toString()}`,headers:s,method:"GET",timeout:this.config.mitigationServiceTimeoutMs}),u=Date.now()-r;if(200!==c.status)throw new St(c,u);const d=new M.ProtectorApiResponseView(c.fetchResponse),{match:h,mitigate:p,captcha:l}=d.getProtectorCodes(),g=[await this.createMitata(e.clientIp,e.sessionDetails.userId,h,p,l,d.sessionCookieMaxAge,void 0,Tt(e)),await this.getMitataCaptchaFromHeaders(c.headers)].filter((e=>void 0!==e));if("application/json"===c.headers["content-type"]?.toLowerCase()){if(void 0===this.config.netaceaCaptchaPath)throw new Error("netaceaCaptchaPath and URL must be defined to handle JSON captcha");c.body=await d.getCaptchaJson(this.config.netaceaCaptchaPath,e.url.host)}return{responseView:d,status:c.status,setCookie:g,body:c.body,eventId:d.eventId,mitataMaxAge:d.sessionCookieMaxAge,latency:u}}async processMitigateRequest(e){if(dt(e.requestDetails.url,e.requestDetails.method,this.config.netaceaCaptchaPath)){const t=await async function(e){try{const{searchParams:t}=e;return t.get("trackingId")}catch(e){return null}}(e.requestDetails.url);return await this.handleGetCaptchaRequest(e.requestDetails,e.captchaPageContentType,t)}if(ht(e.requestDetails.url,e.requestDetails.method)){const t=await e.getBodyFn()??"";return await this.processCaptcha(e.requestDetails,t)}return await this.check(e.requestDetails,e.captchaPageContentType)}async setIngestOnlyMitataCookie(e){return{sessionStatus:"",setCookie:[await this.createMitata("ignored",e.sessionDetails.userId,"0","0","0",86400,void 0,Tt(e))]}}async processIngest(e){if(void 0===this.config.secretKey)throw new Error("Secret key is required for ingest");const t=e.sessionDetails.sessionCookieStatus,i=t===ct.NEW_SESSION,a=t===ct.RENEW_SESSION;return i||a?await this.setIngestOnlyMitataCookie(e):{sessionStatus:"",setCookie:[]}}}function Tt(e){if(void 0===e.sessionDetails.sessionCookieDetails)return r.NO_SESSION;const{isSameIP:t,isExpired:i}=e.sessionDetails.sessionCookieDetails;return t?i?r.EXPIRED_SESSION:r.NO_SESSION:r.IP_CHANGE}const Ot=e=>M.parsing.parseIntOrDefault(e,{defaultValue:void 0});function Rt(e){return Object.fromEntries(Object.entries(e).filter((([e,t])=>void 0!==t)))}function Pt(e,t,i){if("string"==typeof i)return e[`${t}_${i}`]?.trimEnd();for(const a of i){const i=Pt(e,t,a);if(void 0!==i)return i}}function xt(e,t){const i=Pt(e,t,"CAPTCHA_HEADER_NAME"),a=Pt(e,t,"CAPTCHA_HEADER_VALUE");if(void 0!==i&&void 0!==a)return{name:i,value:a}}function Mt(e,t){const i=Pt(e,t,"KINESIS_STREAM_NAME"),a=Pt(e,t,"KINESIS_ACCESS_KEY"),s=Pt(e,t,"KINESIS_SECRET_KEY"),o=Rt({logBatchSize:Ot(Pt(e,t,"KINESIS_LOG_BATCH_SIZE")),maxLogAgeSeconds:Ot(Pt(e,t,"KINESIS_MAX_LOG_AGE_SECONDS"))});if(void 0!==i&&void 0!==a&&void 0!==s)return{kinesisStreamName:i,kinesisAccessKey:a,kinesisSecretKey:s,...o}}exports.NetaceaVercelIntegration=_t,exports.default=_t,exports.getNetaceaArgsFromEnv=function(e,t="NETACEA"){return Rt({apiKey:Pt(e,t,"API_KEY"),captchaHeader:xt(e,t),captchaSecretKey:Pt(e,t,"CAPTCHA_SECRET_KEY"),captchaSiteKey:Pt(e,t,"CAPTCHA_SITE_KEY"),cookieEncryptionKey:Pt(e,t,"COOKIE_ENCRYPTION_KEY"),enableDynamicCaptchaContentType:Pt(e,t,"ENABLE_DYNAMIC_CAPTCHA_CONTENT_TYPE"),ingestServiceUrl:Pt(e,t,"INGEST_SERVICE_URL"),ingestType:Pt(e,t,"INGEST_TYPE"),ipHeaderName:Pt(e,t,"IP_HEADER_NAME"),kinesis:Mt(e,t),mitataCookieExpirySeconds:Ot(Pt(e,t,"MITATA_COOKIE_EXPIRY_SECONDS")),mitigationServiceTimeoutMs:Pt(e,t,"MITIGATION_SERVICE_TIMEOUT_MS"),mitigationServiceUrl:Pt(e,t,["PROTECTOR_API_URL","MITIGATION_SERVICE_URL"]),mitigationType:Pt(e,t,["PROTECTION_MODE","MITIGATION_TYPE"]),netaceaCaptchaCookieAttributes:Pt(e,t,"CAPTCHA_COOKIE_ATTRIBUTES"),netaceaCaptchaCookieName:Pt(e,t,"CAPTCHA_COOKIE_NAME"),netaceaCaptchaPath:Pt(e,t,"CAPTCHA_PATH"),netaceaCheckpointSignalPath:Pt(e,t,"CHECKPOINT_SIGNAL_PATH"),netaceaCookieAttributes:Pt(e,t,"COOKIE_ATTRIBUTES"),netaceaCookieExpirySeconds:Ot(Pt(e,t,"COOKIE_EXPIRY_SECONDS")),netaceaCookieName:Pt(e,t,"COOKIE_NAME"),secretKey:Pt(e,t,"SECRET_KEY"),timeout:Ot(Pt(e,t,"TIMEOUT"))})};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netacea/vercel",
3
- "version": "0.9.10",
3
+ "version": "0.9.11",
4
4
  "description": "Netacea Vercel CDN Integration",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,5 +22,5 @@
22
22
  "jose": "^4.15.9",
23
23
  "uuid": "^10.0.0"
24
24
  },
25
- "gitHead": "ce3cae14851f9e8ba87608f21e535a1067e1488b"
25
+ "gitHead": "4cf76821cf681f644c28fc65d9b5ba2925b2a917"
26
26
  }