@void/platform 0.27.0 → 1.0.3

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.
@@ -1,13 +1,13 @@
1
- var $n=Object.defineProperty;var o=(e,t)=>$n(e,"name",{value:t,configurable:!0});var Fn=["github","google","oidc","cloudflare-access"];var Kn={ai:!0,customDomains:!1,email:!1,githubActions:!1,githubOAuth:!0,googleOAuth:!1,managedBuilds:!1,sandbox:!1},jn={apiHostname:null,dashboardHostname:null,proxyHostname:null};function Qe(e,t){if(typeof e!="string"||e.trim()==="")throw new Error(`${t} must be a non-empty string.`);return e}o(Qe,"requiredString$1");function fr(e){let t=e.trim().toLowerCase().replaceAll(/[^a-z0-9-]+/g,"-").replaceAll(/^-+|-+$/g,"").replaceAll(/-{2,}/g,"-");if(!t)throw new Error("The installation name must contain a letter or number.");if(t.length>40)throw new Error("The installation name must be 40 characters or fewer after normalization.");return t}o(fr,"normalizeInstallationSlug");function de(e){let t=e.trim().toLowerCase();if(t.endsWith(".")&&(t=t.slice(0,-1)),t.length>253||!t.includes(".")||t.split(".").some(r=>!/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(r)))throw new Error(`Invalid domain: ${JSON.stringify(e)}.`);return t}o(de,"normalizeApplicationDomain");function Vn(e){let t=e.trim(),r;try{r=new URL(t)}catch{throw new Error("The dashboard URL must be an HTTPS origin.")}if(!/^https:\/\/[^/?#]+\/?$/i.test(t)||/[\s\\]/.test(t)||r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error("The dashboard URL must be an HTTPS origin without credentials, a path, query, or fragment.");return r.hostname=de(r.hostname),r.origin}o(Vn,"normalizePlatformDashboardUrl");function Wn(e){let t=`void-${fr(e)}`,r=t.replaceAll("-","_");return{aiGateway:t,apiWorker:`${t}-api`,assetsBucket:`${t}-assets`,cronQueue:`${t}-cron-fires`,deploymentQueue:`${t}-deployments`,dashboardWorker:`${t}-dashboard`,dispatchNamespace:`${t}-users`,dispatchWorker:`${t}-dispatch`,emailGatewayWorker:`${t}-email-gateway`,hyperdrive:`${t}-database`,isrCacheKv:`${t}-isr-cache`,legacyAssetsKv:`${t}-legacy-assets`,logsDataset:`${r}_logs`,proxyWorker:`${t}-proxy`,requestsDataset:`${r}_requests`,routingKv:`${t}-routing`,tailWorker:`${t}-tail`,usageQueue:`${t}-usage-events`}}o(Wn,"createPlatformResourceNames");function Jn(e){if(!e.zoneName&&e.workersDev){if(e.dedicatedZone)throw new Error("workers.dev cannot use a dedicated-zone catch-all.");return[]}let t=de(e.baseDomain),r=de(e.zoneName);if(t!==r&&!t.endsWith(`.${r}`))throw new Error(`Application domain ${t} is not inside zone ${r}.`);let n=[{pattern:`*.${t}/*`,zoneName:r},{pattern:`*.${t}`,zoneName:r}];if(e.dedicatedZone){if(t!==r)throw new Error("A dedicated-zone catch-all requires the application domain to be the zone.");n.push({pattern:"*/*",zoneName:r},{pattern:"*",zoneName:r})}return n}o(Jn,"createApplicationRoutes");function Bn(e){if(e.emailSharedZoneId===void 0!=(e.emailSenderDomain===void 0))throw new Error("Shared email configuration requires both emailSenderDomain and emailSharedZoneId.");let t=fr(e.installationSlug),r=de(e.application.baseDomain),n=e.application.workersDev;if(n&&(!/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(n.subdomain)||!/^[a-z0-9][a-z0-9-]{0,80}$/.test(n.installationId)))throw new Error("Invalid workers.dev installation identity.");let s=n&&e.application.zoneName===""?"":de(e.application.zoneName);if(!s&&r!==`${n.subdomain}.workers.dev`)throw new Error("workers.dev application domain must match its account subdomain.");let i={...Wn(t),...e.resources},c={...Kn,...e.capabilities};if(c.managedBuilds&&!c.githubActions)throw new Error("Managed builds require the GitHub Actions capability.");if(e.appAccess!==void 0&&!["public","platform","custom"].includes(e.appAccess))throw new Error("appAccess must be public, platform, or custom.");let u=e.authentication?.providers??["github"];if(u.some(f=>!Fn.includes(f))||new Set(u).size!==u.length)throw new Error("Authentication providers must be unique supported login kinds.");let p=e.authentication?.configurable===!0||e.authentication?.accessProtection===!0||u.some(f=>f==="oidc"||f==="cloudflare-access");if(u.length===0)throw new Error("At least one authentication provider is required.");if(u.includes("github")!==c.githubOAuth)throw new Error("The GitHub provider and githubOAuth capability must agree.");if(u.includes("google")!==c.googleOAuth)throw new Error("The Google provider and googleOAuth capability must agree.");let d=e.controlPlane?.dashboardUrl===void 0?void 0:Vn(e.controlPlane.dashboardUrl),a={...e.appAccess!==void 0?{appAccess:e.appAccess}:{},application:{baseDomain:r,dedicatedZone:e.application.dedicatedZone??!1,zoneName:s,...n?{workersDev:{...n}}:{},...e.application.zoneId?{zoneId:Qe(e.application.zoneId,"application.zoneId")}:{}},authentication:{providers:[...u],...p?{configurable:!0}:{},...e.authentication?.accessProtection?{accessProtection:!0}:{}},capabilities:c,...e.emailSharedZoneId!==void 0?{emailSharedZoneId:Qe(e.emailSharedZoneId,"emailSharedZoneId")}:{},...e.emailSenderDomain!==void 0?{emailSenderDomain:de(e.emailSenderDomain)}:{},controlPlane:{...jn,...e.controlPlane,...d!==void 0?{dashboardUrl:d,dashboardHostname:e.controlPlane?.dashboardHostname??new URL(d).hostname}:{}},displayName:Qe(e.displayName,"displayName").trim(),installationSlug:t,resources:i,schemaVersion:e.appAccess!==void 0?4:p?3:n?2:1};Jn(a.application);for(let[f,l]of Object.entries(a.controlPlane))f!=="dashboardUrl"&&l!==null&&de(l);if(a.controlPlane.dashboardUrl){let f=new URL(a.controlPlane.dashboardUrl).hostname;if(a.controlPlane.dashboardHostname!==f)throw new Error("The dashboard URL and dashboard hostname must agree.")}for(let[f,l]of Object.entries(a.resources))Qe(l,`resources.${f}`);return a}o(Bn,"createPlatformDeploymentManifest");var mr=2;function ye(e){let t=e.SITE_DOMAIN??e.BASE_HOSTNAME??"void.app";return e.PLATFORM_APPLICATION?Bn({installationSlug:"runtime",displayName:"Runtime",application:JSON.parse(e.PLATFORM_APPLICATION)}).application:{baseDomain:t,zoneName:t,dedicatedZone:!1}}o(ye,"readPlatformApplication");function hr(e){return`workers-dev:${e}`}o(hr,"platformWorkersDevAliasKey");var zn="__void/platform/application/v1";async function gr(e){if(!e.PLATFORM_APPLICATION)return e;let t=await e.ROUTING.get(zn);if(!t)return e;let r=ye(e),n=ye({PLATFORM_APPLICATION:t});if(!r.workersDev||!n.workersDev||r.workersDev.installationId!==n.workersDev.installationId||r.workersDev.subdomain!==n.workersDev.subdomain)throw new Error("Application routing belongs to another platform installation.");return{...e,PLATFORM_APPLICATION:t,SITE_DOMAIN:n.baseDomain,BASE_HOSTNAME:n.baseDomain,...n.zoneId?{CF_ZONE_ID:n.zoneId}:{}}}o(gr,"resolvePlatformApplicationEnvironment");function qn(e){return`void-${e.installationId.slice(-12)}-`}o(qn,"platformProjectIngressPrefix");function Gn(e,t){if(!/^proj_[a-z0-9]{1,32}$/.test(e.id)||!/^[a-z0-9][a-z0-9-]*$/.test(e.slug))throw new Error("Invalid platform project identity.");let r=qn(t),n=`-${e.id.slice(5)}`;return`${r}${e.slug.slice(0,63-r.length-n.length).replace(/-+$/,"")}${n}`}o(Gn,"platformProjectIngressName");function yr(e,t){return`${Gn(e,t)}.${t.subdomain}.workers.dev`}o(yr,"platformProjectWorkersDevHostname");var At="void-platform-health";function wr(e){return e.zoneName?`${At}.${e.baseDomain}`:null}o(wr,"platformHealthHostname");var Xe=new TextEncoder,Ze=new TextDecoder,et=new TextDecoder("utf-8",{fatal:!0}),Ss=2**32;function br(...e){let t=e.reduce((s,{length:i})=>s+i,0),r=new Uint8Array(t),n=0;for(let s of e)r.set(s,n),n+=s.length;return r}o(br,"concat");var Yn=/[^\x00-\x7f]/;function we(e){if(typeof e=="string"&&e.length>=128){if(Yn.test(e))throw new TypeError("non-ASCII string encountered in encode()");return Xe.encode(e)}let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw new TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}o(we,"encode");function Ar(e,t=!1){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e,{alphabet:t?"base64url":"base64"});if(t){if(e.includes("+")||e.includes("/"))throw new TypeError("Invalid base64url");e=e.replace(/-/g,"+").replace(/_/g,"/")}let r=atob(e),n=new Uint8Array(r.length);for(let s=0;s<r.length;s++)n[s]=r.charCodeAt(s);return n}o(Ar,"decodeBase64");var K=class extends Error{static{o(this,"JOSEError")}static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(t,r){super(t,r),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}},te=class extends K{static{o(this,"JWTClaimValidationFailed")}static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(t,r,n="unspecified",s="unspecified"){super(t,{cause:{claim:n,reason:s,payload:r}}),this.claim=n,this.reason=s,this.payload=r}},De=class extends K{static{o(this,"JWTExpired")}static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(t,r,n="unspecified",s="unspecified"){super(t,{cause:{claim:n,reason:s,payload:r}}),this.claim=n,this.reason=s,this.payload=r}},tt=class extends K{static{o(this,"JOSEAlgNotAllowed")}static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"},q=class extends K{static{o(this,"JOSENotSupported")}static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"};var F=class extends K{static{o(this,"JWSInvalid")}static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},be=class extends K{static{o(this,"JWTInvalid")}static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"};var Oe=class extends K{static{o(this,"JWKSInvalid")}static code="ERR_JWKS_INVALID";code="ERR_JWKS_INVALID"},Ae=class extends K{static{o(this,"JWKSNoMatchingKey")}static code="ERR_JWKS_NO_MATCHING_KEY";code="ERR_JWKS_NO_MATCHING_KEY";constructor(t="no applicable key found in the JSON Web Key Set",r){super(t,r)}},rt=class extends K{static{o(this,"JWKSMultipleMatchingKeys")}[Symbol.asyncIterator]=async function*(){};static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(t="multiple matching keys found in the JSON Web Key Set",r){super(t,r)}},nt=class extends K{static{o(this,"JWKSTimeout")}static code="ERR_JWKS_TIMEOUT";code="ERR_JWKS_TIMEOUT";constructor(t="request timed out",r){super(t,r)}},ot=class extends K{static{o(this,"JWSSignatureVerificationFailed")}static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(t="signature verification failed",r){super(t,r)}};var Qn="The input to be decoded is not correctly encoded.";function Le(e){try{return Ar(typeof e=="string"?e:Ze.decode(e),!0)}catch(t){throw new TypeError(Qn,{cause:t})}}o(Le,"decode");function ae(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||Object.getPrototypeOf(t)===null}o(ae,"isObject");function st(e){return ae(e)&&Array.isArray(e.keys)&&Array.from(e.keys).every(ae)}o(st,"isJwkSet");function Rr(...e){let t=new Set;for(let r of e)if(r)for(let n of Object.keys(r)){if(t.has(n))return!1;t.add(n)}return!0}o(Rr,"isDisjoint");function Rt(e,t,r){try{return Le(e)}catch{throw new r(`Failed to base64url decode the ${t}`)}}o(Rt,"decodeBase64url");function Er(e,t,r){try{return we(e)}catch{throw new r(`The ${t} is not a valid base64url string`)}}o(Er,"encodeBase64url");function Sr(e,t,r){let n;try{n=JSON.parse(et.decode(Le(e)))}catch{throw new t(r)}if(!ae(n))throw new t(r);return n}o(Sr,"parseJoseHeader");var Ir={__proto__:null,b64:!0};function Pr(e,t){if(t!==void 0&&(!Array.isArray(t)||t.some(r=>typeof r!="string")))throw new TypeError(`"${e}" option must be an array of strings`);return t===void 0?void 0:new Set(t)}o(Pr,"validateAlgorithms");function _r(e,t,r,n,s){if(s.crit!==void 0&&n?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return[];if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(c=>typeof c!="string"||c.length===0))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let i=r===void 0?t:{__proto__:null,...r,...t};for(let c of n.crit){if(!(c in i))throw new q(`Extension Header Parameter "${c}" is not recognized`);if(!Object.hasOwn(s,c)||s[c]===void 0)throw new e(`Extension Header Parameter "${c}" is missing`);if(i[c]&&(!Object.hasOwn(n,c)||n[c]===void 0))throw new e(`Extension Header Parameter "${c}" MUST be integrity protected`)}return n.crit}o(_r,"validateCrit");function Tr(e,t){if(t.includes("b64")){let r=e.b64;if(typeof r!="boolean")throw new F('The "b64" (base64url-encode payload) Header Parameter must be a boolean');return r}return!0}o(Tr,"validateB64");var Xn=o(e=>e[Symbol.toStringTag],"tag"),Zn=o((e,t,r)=>{let{alg:n}=e;if(t.use!==void 0){let s=r==="sign"||r==="verify"?"sig":"enc";if(t.use!==s)throw new TypeError(`Invalid key for this operation, its "use" must be "${s}" when present`)}if(t.alg!==void 0&&t.alg!==n)throw new TypeError(`Invalid key for this operation, its "alg" must be "${n}" when present`);if(Array.isArray(t.key_ops)){let s=r==="encrypt"||r==="decrypt"?e.ops?.[r==="encrypt"?0:1]:r;if(s&&!t.key_ops.includes(s))throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${s}" when present`)}},"jwkMatchesOp");async function vr(e,t,r){let{alg:n,secret:s}=e,i=r==="decrypt"||r==="sign";if(s&&t instanceof Uint8Array)return t;let c,u;if(ae(t)){if(c=io(t),typeof c.kty!="string")throw Cr(n,t,s);if(!(s?c.kty==="oct"&&typeof c.k=="string":c.kty!=="oct"&&(i?c.kty==="AKP"&&typeof c.priv=="string"||typeof c.d=="string":c.d===void 0&&c.priv===void 0)))throw new TypeError(s?'JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present':`JSON Web Key for this operation must be a ${i?"private":"public"} JWK`);if(Zn(e,c,r),c.kty==="oct")return Le(c.k);if(!Object.isFrozen(t)){let{key_ops:a}=t;Array.isArray(a)&&Object.freeze(a),Object.freeze(t)}}else{if(!ro(t))throw Cr(n,t,s);let a=s?"secret":i?"private":"public";if(t.type!==a&&(s||["secret","public","private"].includes(t.type)))throw new TypeError(`${Xn(t)} instances must be of type "${a}" for the ${n} algorithm`);if(xr(t))return t;if(u=t,u.type==="secret")return u.export()}Et||=new WeakMap;let p=t,d=Et.get(p);if(d?.[n])return d[n];if(d||Et.set(p,d={}),u&&typeof u.toCryptoKey=="function"){let a=u.type==="public",f=eo[u.asymmetricKeyDetails?.namedCurve],l=e.resolve?.({crv:f,asymmetricKeyType:u.asymmetricKeyType})??e.subtle;return d[n]=u.toCryptoKey(l,a,e.usages[a?0:1])}return c??=u.export({format:"jwk"}),c.alg=n,d[n]=await It(e,c)}o(vr,"prepareKey");var Et,eo={__proto__:null,prime256v1:"P-256",secp384r1:"P-384",secp521r1:"P-521"};var xr=o(e=>{if(e?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return e instanceof CryptoKey}catch{return!1}},"isCryptoKey"),to=o(e=>e?.[Symbol.toStringTag]==="KeyObject","isKeyObject"),ro=o(e=>xr(e)||to(e),"isKeyLike");function no(e,t,...r){if(r.length>2){let n=r.pop();e+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return t==null?e+=` Received ${t}`:typeof t=="function"&&t.name?e+=` Received function ${t.name}`:typeof t=="object"&&t!=null&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}o(no,"message");function Cr(e,t,r){let n=["CryptoKey","KeyObject","JSON Web Key"];return r&&n.push("Uint8Array"),new TypeError(no(`Key for the ${e} algorithm must be `,t,...n))}o(Cr,"invalidKeyType");var it=o((e,t="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`),"unusable");function oo(e,t){if(t&&!e.usages.includes(t))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}o(oo,"checkUsage");function kr(e,t){let{modulusLength:r}=t.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}o(kr,"checkModulusLength");function so(e,t,r){let n=e.algorithm;if(n.name!==t.name)throw it(t.name);if(t.hash&&n.hash?.name!==t.hash)throw it(t.hash,"algorithm.hash");if(t.namedCurve&&n.namedCurve!==t.namedCurve)throw it(t.namedCurve,"algorithm.namedCurve");if(t.length!==void 0&&n.length!==t.length)throw it(t.length,"algorithm.length");oo(e,r)}o(so,"checkCryptoKey");function St(e){return{__proto__:null,...e}}o(St,"snapshotJwk");function io(e){let t=St(e);if(t.ext!==void 0&&typeof t.ext!="boolean")throw new TypeError('"ext" (Extractable) Parameter must be a boolean');if(t.key_ops!==void 0){let r=t.key_ops,n=Array.isArray(r)?[...r]:void 0;if(!n||n.some(s=>typeof s!="string")||new Set(n).size!==n.length)throw new TypeError('"key_ops" (Key Operations) Parameter must be an array of unique strings');t.key_ops=n}return t}o(io,"normalizeJwk");async function It(e,t,r){if(!e.kty.includes(t.kty))throw new q('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');let n=e.resolve?.({kty:t.kty,crv:t.crv})??e.subtle,s=!!(t.d||t.priv),i={...t,ext:r??t.ext};return i.kty!=="AKP"&&delete i.alg,delete i.use,crypto.subtle.importKey("jwk",i,n,i.ext??!s,t.key_ops??e.usages[s?1:0])}o(It,"jwkToKey");async function Dr(e,t,r,n=!1){return e instanceof Uint8Array&&(e=await crypto.subtle.importKey("raw",e,t,n,[r])),so(e,t,r),e}o(Dr,"rawKey");function Or(e){let t={__proto__:null};for(let r in e)t[r]={...e[r],alg:r};return t}o(Or,"table");var Ne=[["verify"],["sign"]];function Pt(e){let t={name:"HMAC",hash:`SHA-${e}`};return{kty:["oct"],secret:!0,subtle:t,signing:t,usages:Ne}}o(Pt,"hmac");function Re(e,t){let r={name:t?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:`SHA-${e}`};return{kty:["RSA"],subtle:r,signing:t?{...r,saltLength:t}:r,usages:Ne,minRsaBits:2048}}o(Re,"rsa");function _t(e,t){return{kty:["EC"],crv:e,subtle:{name:"ECDSA",namedCurve:e},signing:{name:"ECDSA",hash:`SHA-${t}`},usages:Ne}}o(_t,"ecdsa");function Lr(){let e={name:"Ed25519"};return{kty:["OKP"],crv:"Ed25519",subtle:e,signing:e,usages:Ne}}o(Lr,"eddsa");function Tt(e){let t={name:`ML-DSA-${e}`};return{kty:["AKP"],subtle:t,signing:t,usages:Ne}}o(Tt,"mldsa");var Ct=Or({HS256:Pt(256),HS384:Pt(384),HS512:Pt(512),RS256:Re(256),RS384:Re(384),RS512:Re(512),PS256:Re(256,32),PS384:Re(384,48),PS512:Re(512,64),ES256:_t("P-256",256),ES384:_t("P-384",384),ES512:_t("P-521",512),EdDSA:Lr(),Ed25519:Lr(),"ML-DSA-44":Tt(44),"ML-DSA-65":Tt(65),"ML-DSA-87":Tt(87)});function Nr(e){let t=typeof e=="string"?Ct[e]:void 0;if(!t)throw new q(`alg ${e} is not supported either by JOSE or your javascript runtime`);return t}o(Nr,"jwsAlgorithm");function Ur(e){return[e&&Pr("algorithms",e.algorithms),e?.crit]}o(Ur,"prepareVerify");function ao(e){return e===void 0?{}:Sr(e,F,"JWS Protected Header is invalid")}o(ao,"parseProtectedHeader");function co(e){try{return we(e)}catch{throw new F("JWS Compact Serialization payload must use only ASCII characters")}}o(co,"encodeCompactUnencodedPayload");async function lo(e,t,r,n,s){let{protected:i,header:c,payload:u}=e,p=s??ao(i);if(!Rr(p,c))throw new F("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let d={...p,...c},a=Tr(p,_r(F,Ir,t[1],p,d)),{alg:f}=d;if(typeof f!="string"||!f)throw new F('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(t[0]&&!t[0].has(f))throw new tt('"alg" (Algorithm) Header Parameter value not allowed');if(a){if(typeof u!="string")throw new F("JWS Payload must be a string")}else if(typeof u!="string"&&!(u instanceof Uint8Array))throw new F("JWS Payload must be a string or an Uint8Array instance");let l=a||typeof u!="string"?u:n(u),A=!1;typeof r=="function"&&(r=await r(p,e),A=!0);let h=Nr(f),y=br(i!==void 0?we(i):new Uint8Array,we("."),typeof l=="string"?t[2]??=Er(l,"payload",F):l),b=Rt(e.signature,"signature",F),U=await vr(h,r,"verify"),P=await Dr(U,h.subtle,"verify");h.minRsaBits&&kr(h.alg,P);let v=!1;try{v=await crypto.subtle.verify(h.signing,P,b,y)}catch{}if(!v)throw new ot;let M={payload:typeof l=="string"?Rt(l,"payload",F):l};return i!==void 0&&(M.protectedHeader=p),c!==void 0&&(M.unprotectedHeader=c),A?[{...M,key:U},a]:[M,a]}o(lo,"verifySignature");async function Mr(e,t,r){if(e instanceof Uint8Array&&(e=Ze.decode(e)),typeof e!="string")throw new F("Compact JWS must be a string or Uint8Array");let{0:n,1:s,2:i,length:c}=e.split(".");if(c!==3)throw new F("Invalid Compact JWS");return lo({payload:s,protected:n,signature:i},t,r,co)}o(Mr,"verifyCompact");var uo=o(e=>Math.floor(e.getTime()/1e3),"epoch"),po={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},fo=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,Ee="check_failed";function vt(){throw new TypeError("Invalid time period format")}o(vt,"invalidDuration");function Hr(e){typeof e!="string"&&vt();let t=fo.exec(e);(!t||t[4]&&t[1])&&vt();let r=parseFloat(t[2]),n=Math.round(r*po[t[3][0].toLowerCase()]);return Number.isFinite(n)||vt(),t[1]==="-"||t[4]==="ago"?-n:n}o(Hr,"secs");function xt(e,t){if(!Number.isFinite(t))throw new TypeError(`Invalid ${e} input`);return t}o(xt,"validateInput");var $r=o(e=>{let t=e.toLowerCase();return e.includes("/")?t:`application/${t}`},"normalizeTyp"),mo=o((e,t)=>typeof e=="string"?t.includes(e):Array.isArray(e)?t.some(r=>e.includes(r)):!1,"checkAudiencePresence");function kt(e,t,r=!1){let n=e[t];if(!(n===void 0&&!r)){if(typeof n!="number")throw new te(`"${t}" claim must be a number`,e,t,"invalid");return n}}o(kt,"validateNumericDate");function Dt(e,t){throw new te(`unexpected "${t}" claim value`,e,t,Ee)}o(Dt,"unexpectedClaim");function Fr(e,t,r={}){let n;try{n=JSON.parse(et.decode(t))}catch{}if(!ae(n))throw new be("JWT Claims Set must be a top-level JSON object");let{typ:s}=r;if(s!==void 0&&(typeof e.typ!="string"||$r(e.typ)!==$r(s)))throw new te('unexpected "typ" JWT header value',n,"typ",Ee);let{requiredClaims:i=[],issuer:c,subject:u,audience:p,maxTokenAge:d}=r,a=[...i];d!==void 0&&a.push("iat"),p!==void 0&&a.push("aud"),u!==void 0&&a.push("sub"),c!==void 0&&a.push("iss");for(let P of new Set(a.reverse()))if(!Object.hasOwn(n,P))throw new te(`missing required "${P}" claim`,n,P,"missing");c!==void 0&&!(Array.isArray(c)?c:[c]).includes(n.iss)&&Dt(n,"iss"),u!==void 0&&n.sub!==u&&Dt(n,"sub"),p!==void 0&&!mo(n.aud,typeof p=="string"?[p]:p)&&Dt(n,"aud");let{clockTolerance:f}=r,l=0;if(typeof f=="string")l=Hr(f);else if(f!==void 0){if(typeof f!="number")throw new TypeError("Invalid clockTolerance option type");l=f}xt("clockTolerance option",l);let{currentDate:A}=r,h=xt("currentDate option",uo(A===void 0?new Date:A)),y=kt(n,"iat",d!==void 0),b=kt(n,"nbf");if(b!==void 0&&b>h+l)throw new te('"nbf" claim timestamp check failed',n,"nbf",Ee);let U=kt(n,"exp");if(U!==void 0&&U<=h-l)throw new De('"exp" claim timestamp check failed',n,"exp",Ee);if(d!==void 0){let P=h-y,v=xt("maxTokenAge option",typeof d=="number"?d:Hr(d));if(P-l>v)throw new De('"iat" claim timestamp check failed (too far in the past)',n,"iat",Ee);if(P<-l)throw new te('"iat" claim timestamp check failed (it should be in the past)',n,"iat",Ee)}return n}o(Fr,"validateClaimsSet");async function Ot(e,t,r){let[n,s]=await Mr(e,Ur(r),t);if(!s)throw new be("JWTs MUST NOT use unencoded payload");let i=Fr(n.protectedHeader,n.payload,r);return{...n,payload:i}}o(Ot,"jwtVerify");function ho(e,t,r,n){let{kty:s,key_ops:i,ext:c,kid:u,alg:p,use:d,crv:a}=e;return(c===void 0||typeof c=="boolean")&&(i===void 0||Array.isArray(i)&&i.every((f,l)=>typeof f=="string"&&i.indexOf(f)===l)&&i.includes("verify"))&&t.kty.includes(s)&&(n===void 0||typeof n=="string"&&n===u)&&(p===void 0?s!=="AKP":r===p)&&(d===void 0||d==="sig")&&(!t.crv||a===t.crv)}o(ho,"isUsableJWK");async function Kr(e,t,r){let n=e.get(t)||e.set(t,{}).get(t),{alg:s}=r;if(n[s]===void 0){let i=It(r,t,!0).then(c=>{if(c.type!=="public")throw new Oe("JSON Web Key Set members must be public keys");return n[s]=c,c}).catch(c=>{throw n[s]===i&&delete n[s],c});n[s]=i}return n[s]}o(Kr,"importWithAlgCache");function Lt(e){let t;try{t=structuredClone(e)}catch{}if(!st(t))throw new Oe("JSON Web Key Set malformed");let r=t.keys.map(s=>{let i=St(s);return Array.isArray(i.key_ops)&&(i.key_ops=[...i.key_ops]),i}),n=new WeakMap;return Object.defineProperty(async(s,i)=>{let{alg:c,kid:u}={...s,...i?.header},p=typeof c=="string"?Ct[c]:void 0;if(!p||p.secret)throw new q('Unsupported "alg" value for a JSON Web Key Set');let d=t.keys.filter((l,A)=>ho(r[A],p,c,u)),{0:a,length:f}=d;if(!f)throw new Ae;if(f!==1){let l=new rt;throw l[Symbol.asyncIterator]=async function*(){for(let A of d)try{yield await Kr(n,A,p)}catch{}},l}return Kr(n,a,p)},"jwks",{value:o(()=>structuredClone(t),"value")})}o(Lt,"createLocalJWKSet");function go(){return typeof WebSocketPair<"u"||typeof navigator<"u"&&!0||typeof EdgeRuntime<"u"&&EdgeRuntime==="vercel"}o(go,"isCloudflareWorkers");var Nt;(typeof navigator>"u"||!"Cloudflare-Workers"?.startsWith?.("Mozilla/5.0 "))&&(Nt="jose/v6.2.12");var at=Symbol();async function yo(e,t,r,n=fetch){let s=await n(e,{method:"GET",signal:r,redirect:"manual",headers:t}).catch(i=>{throw i.name==="TimeoutError"?new nt:i});if(s.status!==200)throw new K("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await s.json()}catch{throw new K("Failed to parse the JSON Web Key Set HTTP response as JSON")}}o(yo,"fetchJwks");var Vr=Symbol();function Ue(e,t){return Number.isFinite(e)&&Date.now()<e+t}o(Ue,"isFreshFor");function jr(e,t,r){if(Number.isNaN(e))throw new TypeError(`"${r}" option must not be NaN`);return typeof e=="number"?e:t}o(jr,"validateDuration");function Ut(e,t){if(!(e instanceof URL))throw new TypeError("url must be an instance of URL");let r=new URL(e.href).href,n=t??{},s=n.timeoutDuration;if(typeof s=="number"&&(!Number.isInteger(s)||s<0))throw new TypeError('"timeoutDuration" option must be a non-negative integer');let i=typeof s=="number"?s:5e3,c=jr(n.cooldownDuration,3e4,"cooldownDuration"),u=jr(n.cacheMaxAge,6e5,"cacheMaxAge"),p=new Headers(n.headers);Nt&&!p.has("User-Agent")&&p.set("User-Agent",Nt),p.has("accept")||p.set("accept","application/json, application/jwk-set+json");let d=n[at],a=n[Vr],f,l,A=0,h=0,y;if(a&&typeof a=="object"){let{uat:U,jwks:P}=a;Ue(U,u)&&st(P)&&(f=U,y=Lt(P))}let b=o(async()=>{if(l&&go()&&(l=void 0),!l){let U=++A,P=l=yo(r,p,AbortSignal.timeout(i),d).then(v=>{let M=Lt(v);if(U<=h)return;y=M;let W=Date.now();a&&(a.uat=W,a.jwks=v),f=W,h=U}).finally(()=>{l===P&&(l=void 0)})}await l},"reload");return Object.defineProperties(async(U,P)=>{(!y||!Ue(f,u))&&await b();try{return await y(U,P)}catch(v){if(v instanceof Ae&&!Ue(f,c))return await b(),y(U,P);throw v}},{coolingDown:{get:o(()=>Ue(f,c),"get"),enumerable:!0},fresh:{get:o(()=>Ue(f,u),"get"),enumerable:!0},reload:{value:b,enumerable:!0},reloading:{get:o(()=>!!l,"get"),enumerable:!0},jwks:{value:o(()=>y?.jwks(),"value"),enumerable:!0}})}o(Ut,"createRemoteJWKSet");function Wr(e,t){let r=e.toLowerCase(),n=t.toLowerCase(),s=r.indexOf("*");if(s===-1)return r===n;let i=r.slice(0,s),c=r.slice(s+1);if(i.includes(".")||!c.startsWith(".")||c.includes("*")||!n.startsWith(i)||!n.endsWith(c))return!1;let u=n.slice(0,-c.length);return u.length>0&&!u.includes(".")}o(Wr,"matchesHostname");function wo(e,t){let r=t.audiences.find(n=>!n.hostname.includes("*")&&Wr(n.hostname,e));return r?r.audience:t.audiences.find(n=>Wr(n.hostname,e))?.audience??null}o(wo,"resolveAccessAudience");var Mt=class{constructor(t=(r,n)=>fetch(r,n)){this.request=t}request;static{o(this,"ProjectAccessVerifier")}keys=new Map;async verify(t,r,n){try{let s=wo(t,n);if(!s||!r||r.length>32*1024)return!1;let i=n.teamDomain.replace(/\/+$/,""),c=new URL(i);if(c.protocol!=="https:"||!c.hostname.endsWith(".cloudflareaccess.com")||c.origin!==i)return!1;let u=this.keys.get(i);u||(this.keys.size>=16&&this.keys.delete(this.keys.keys().next().value),u=Ut(new URL(`${i}/cdn-cgi/access/certs`),{timeoutDuration:1e4,[at]:async(d,a)=>{let f=await this.request(d,{...a,redirect:"manual"});if(f.status>=300&&f.status<400)throw await f.body?.cancel(),new Error("Access key endpoint redirected.");return f}}),this.keys.set(i,u));let{payload:p}=await Ot(r,u,{issuer:i,audience:s,algorithms:["RS256"],requiredClaims:["iss","aud","iat","exp","type"]});return p.type==="app"&&typeof p.iat=="number"&&p.iat<=Date.now()/1e3+30}catch{return!1}}},Jr=new Mt;function Me(e){return e.slice(e.lastIndexOf("/")+1).includes(".")}o(Me,"hasExtension");function G(e){return e==="/api"||e.startsWith("/api/")}o(G,"isApiPath");function Ht(e,t,r=!1){return G(e)?"api":t&&(!Me(e)||r)?"ssr":null}o(Ht,"classifyDynamicRequestType");var $t='system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif';function Ft(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}o(Ft,"escapeHtml");function Br(e,t,r=!1){let n=`${e}: ${t}`,s=`${e}: `;return`<!doctype html>
1
+ var Xn=Object.defineProperty;var o=(e,t)=>Xn(e,"name",{value:t,configurable:!0});function Pt(e,t){let r=e.get(t);return r!==void 0&&(e.delete(t),e.set(t,r)),r}o(Pt,"lruGet");function Tt(e,t,r){if(e.size>=256){let n=e.keys().next();n.done||e.delete(n.value)}e.set(t,r)}o(Tt,"lruSet");function Zn(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95}o(Zn,"isNameChar");function St(e,t){return e==="seg"?t!==47:t!==10&&t!==13&&t!==8232&&t!==8233}o(St,"accepts");function Oe(e,t){if(!t)return;let r=e[e.length-1];r?.kind==="text"?r.text+=t:e.push({kind:"text",text:t})}o(Oe,"pushText");function Rr(e){let t=[],r=[],n=!1,s=0;for(;s<e.length;){let i=e[s];if(i===":"){let c=s+1;for(;c<e.length&&Zn(e.charCodeAt(c));)c++;if(c===s+1){Oe(t,":"),s++;continue}let l=e.slice(s+1,c);r.push(l);let p=e[c]==="*";t.push({kind:p?"any":"seg",name:l}),s=p?c+1:c}else if(i==="*")n?t.push({kind:"any"}):(r.push("splat"),t.push({kind:"any",name:"splat"}),n=!0),s++;else{let c=s+1;for(;c<e.length&&e[c]!==":"&&e[c]!=="*";)c++;Oe(t,e.slice(s,c)),s=c}}return{tokens:t,paramNames:r}}o(Rr,"parseCapture");function Ir(e,t){let r=t.split("*");Oe(e,r[0]);for(let n=1;n<r.length;n++)e.push({kind:"any"}),Oe(e,r[n])}o(Ir,"parseStars");function eo(e){let t=[],r=e.split("/");for(let n=0;n<r.length;n++){let s=r[n];n>0&&Oe(t,"/");let i=s.slice(1,-4);s[0]!==":"||s.length<2?Ir(t,s):s.length>5&&s.endsWith("{.+}")&&!i.includes("{")&&!i.includes("}")?t.push({kind:"plus"}):t.push({kind:"seg"})}return t}o(eo,"parseSegments");function Ct(e){let t=[];for(let n of e)n.kind==="any"&&t[t.length-1]?.kind==="any"||t.push(n);let r=new Int32Array(t.length+1);return t.forEach((n,s)=>{let i=n.kind==="text"?n.text.length:n.kind==="any"?0:1;r[s+1]=r[s]+i}),{steps:t,starts:r,minLength:r[t.length]}}o(Ct,"prepare");function _t(e,t,r,n,s){let i=0;if(e.kind==="text"){for(let p=s.length-1;p>=0;p--){let d=n[p]===1&&t.startsWith(e.text,r+p)?1:0;s[p]=d,i|=d}return i===1}let c=e.kind,l=0;for(let p=s.length-1;p>=0;p--){let d=c==="any"?n[p]===1||l===1&&St(c,t.charCodeAt(r+p)):(n[p]===1||l===1)&&St(c,t.charCodeAt(r+p));s[p]=d?1:0,l=s[p],i|=l}return i===1}o(_t,"stepBack");function It(e){let t=new Uint8Array(e);return t[e-1]=1,t}o(It,"endRow");function Pr({steps:e,minLength:t},r){let n=e[0],s=e[e.length-1];return r.length<t||n?.kind==="text"&&!r.startsWith(n.text)||s?.kind==="text"&&!r.endsWith(s.text)}o(Pr,"quickReject");function vt(e,t){if(Pr(e,t))return!1;let{steps:r,starts:n,minLength:s}=e,i=It(t.length-s+1),c=new Uint8Array(i.length),l=r[0]?.kind==="text"?1:0;for(let p=r.length-1;p>=l;p--){if(!_t(r[p],t,n[p],i,c))return!1;let d=i;i=c,c=d}return i[0]===1}o(vt,"matches");function to(e,t,r,n,s){if(e.kind==="text")return r+e.text.length;let i=e.kind==="any"?0:1,c=s.length-1-n+i,l=0;for(;l<c&&St(e.kind,t.charCodeAt(r+l));)l++;for(;l>i&&s[n+l-i]!==1;)l--;return r+l}o(to,"greedyEnd");function ro(e,t,r){if(Pr(e,t))return null;let{steps:n,starts:s,minLength:i}=e,c=n.length,l=t.length-i+1,p=c*l<=65536?1:Math.ceil(Math.sqrt(c)),d=new Map([[c,It(l)]]),a=It(l),f=new Uint8Array(l),u=n[0]?.kind==="text"?1:0;for(let y=c-1;y>=u;y--){if(!_t(n[y],t,s[y],a,f))return null;y%p===0&&d.set(y,f.slice());let R=a;a=f,f=R}if(a[0]!==1)return null;let E=Array.from({length:p},()=>new Uint8Array(l)),h=0,g=o(y=>y===h?d.get(y):E[y%p],"rowAt"),A=new Int32Array(r+1),k=0;for(let y=0;y<=r;y++){if(y+1>h){h=Math.min(c,Math.ceil((y+1)/p)*p);for(let R=h-1;R>y;R--)_t(n[R],t,s[R],g(R+1),E[R%p])}k=to(n[y],t,k,k-s[y],g(y+1)),A[y]=k}return A}o(ro,"greedyEnds");function no(e){let t="";for(let r of e)r.kind==="text"?t+=r.text.replace(/[.+?^${}()|[\]\\:]/g,"\\$&"):r.kind==="seg"?t+=`(?<${r.name}>[^/]+)`:t+=r.name?`(?<${r.name}>.*)`:".*";return new RegExp(`^${t}$`)}o(no,"toRegExp");var Er=new Map;function Tr(e){let t=Pt(Er,e);if(t)return t;let{tokens:r,paramNames:n}=Rr(e),s,i=new Set;for(let a of n)i.has(a)?s??=`Duplicate capture group name "${a}"`:a.charCodeAt(0)>=48&&a.charCodeAt(0)<=57&&(s??=`Invalid capture group name "${a}"`),i.add(a);let c=Ct(r),l=-1;c.steps.forEach((a,f)=>{a.kind!=="text"&&a.name&&(l=f)});let p,d={...c,paramNames:n,error:s,lastNamed:l,get regex(){return p??=no(Rr(e).tokens)}};return Tt(Er,e,d),d}o(Tr,"compile");function et(e){let t=Tr(e);if(t.error)throw new SyntaxError(t.error);return t}o(et,"compilePattern");function tt(e,t){let r=Tr(e);if(r.error)return null;let{steps:n,lastNamed:s}=r,i=s===-1?void 0:ro(r,t,s);if(i===null||i===void 0&&!vt(r,t))return null;let c=Object.create(null);for(let l of r.paramNames)c[l]="";for(let l=0;i&&l<=s;l++){let p=n[l];p.kind!=="text"&&p.name&&(c[p.name]=t.slice(l===0?0:i[l-1],i[l]))}return c}o(tt,"matchPatternCaptures");var Sr=new Map;function ue(e,t){let r=Pt(Sr,e);if(!r){let n=[];Ir(n,e),r=Ct(n),Tt(Sr,e,r)}return vt(r,t)}o(ue,"matchLiteralPattern");var _r=new Map;function q(e,t){let r=Pt(_r,e);return r||(r=Ct(eo(e)),Tt(_r,e,r)),vt(r,t)}o(q,"matchSegmentPattern");function rt(e,t){let r=e.replace(/:([A-Za-z0-9_]+)\*?/g,(n,s)=>t[s]??n);return/^[/\\]{2}/.test(r)&&!/^[/\\]{2}/.test(e)?"/"+r.replace(/^[/\\]+/,""):r}o(rt,"substituteParams");var oo=new Set(["set-cookie"]);function so(e){if(e.length<2||e[0]!=='"'||e[e.length-1]!=='"')return null;let t="";for(let r=1;r<e.length-1;r+=1){let n=e[r];if(n==="\\"){if(r+=1,r>=e.length-1)return null;t+=e[r]}else{if(n==='"')return null;t+=n}}return t}o(so,"parseQuotedString");function kt(e){let t=[],r=o(i=>{let c=i.trim();c.length>0&&t.push({raw:c,directive:so(c)})},"pushMember"),n=0,s=!1;for(let i=0;i<e.length;i+=1){let c=e[i];s?c==="\\"?i+=1:c==='"'&&(s=!1):c==='"'?s=!0:c===","&&(r(e.slice(n,i)),n=i+1)}return r(e.slice(n)),t}o(kt,"parseClearSiteData");function nt(e){let t=[];for(let{raw:r,directive:n}of kt(e)){let s=n?.toLowerCase();if(s==="*")return null;n===null||s==="cookies"||t.push(r)}return t.length>0?t.join(", "):null}o(nt,"sanitizeClearSiteData");function G(e,t,r,n){if(!r||r.length===0)return e;let s=[];for(let d of r)ue(d.pattern,t)&&s.push(...d.headers);if(s.length===0)return e;let i=new Response(e.body,e),c=n?.cookieIsolation!=="origin",l=c?e.headers.get("clear-site-data"):null,p=l===null?null:nt(l);for(let[d,a]of s){let f=d.toLowerCase();if(!(c&&oo.has(f))){if(c&&f==="clear-site-data"){let u=nt(a);u!==null?i.headers.set(d,u):p!==null?i.headers.set(d,p):i.headers.delete(d);continue}i.headers.set(d,a)}}return i}o(G,"applyHeaderRules");function ne(e,t,r){if(!t?.length)return null;for(let n of t){if(n.host&&n.host!==r)continue;try{et(n.source)}catch(c){console.warn(`[dispatch] skipping routing rule with invalid source ${JSON.stringify(n.source)}: ${c instanceof Error?c.message:String(c)}`);continue}let s=tt(n.source,e);if(!s)continue;let i=rt(n.destination,s);return n.status===200?{type:"rewrite",destination:i}:{type:"redirect",destination:i,status:n.status}}return null}o(ne,"applyRoutingRules");function Le(e,t){if(!t||t==="?")return e;let r=e.indexOf("#"),n=r===-1?e:e.slice(0,r),s=r===-1?"":e.slice(r),i=n.indexOf("?");if(i===-1)return n+t+s;if(i===n.length-1)return n.slice(0,i)+s;let c=new URLSearchParams(t),l=new URLSearchParams(n.slice(i+1));for(let[p,d]of c)l.has(p)||l.append(p,d);return n.slice(0,i)+"?"+l.toString()+s}o(Le,"mergeQueryIntoLocation");function we(e){let t;try{t=decodeURIComponent(e)}catch{return e}if(t===e)return e;let r=kr(t);return r===null?e:Cr(r)===Cr(e)?t:e}o(we,"safeDecodePathname");function Cr(e){return e.replace(/%[0-9a-fA-F]{2}/g,t=>t.toUpperCase())}o(Cr,"normalizePercentCase");function kr(e){try{let t=new URL("https://void.invalid/");return t.pathname=e,t.pathname}catch{return null}}o(kr,"reencodePathname");function vr(e,t,r){if(t[e])return{path:e,hash:t[e]};switch(r){case"auto-trailing-slash":{let n=e+".html";if(t[n])return{path:n,hash:t[n]};let s=(e.endsWith("/")?e:e+"/")+"index.html";if(t[s])return{path:s,hash:t[s]};break}case"force-trailing-slash":{if(!e.endsWith("/")&&e!=="/"){let s=e+"/index.html";if(t[s])return{path:s,hash:t[s],redirect:e+"/"}}let n=e+"index.html";if(t[n])return{path:n,hash:t[n]};break}case"drop-trailing-slash":{if(e==="/"){if(t["/index.html"])return{path:"/index.html",hash:t["/index.html"]};break}if(e.endsWith("/")){let s=e.slice(0,-1),i=s+".html";if(t[i])return{path:i,hash:t[i],redirect:s}}let n=e+".html";if(t[n])return{path:n,hash:t[n]};break}case"none":break}return null}o(vr,"matchManifestEntry");function pe(e,t,r){let n=r.html_handling??"auto-trailing-slash",s=vr(e,t,n);if(!s){let i=we(e);if(i!==e&&(s=vr(i,t,n),s?.redirect!==void 0)){let c=kr(s.redirect);c!==null&&(s={...s,redirect:c})}}if(s)return s;switch(r.not_found_handling??"none"){case"single-page-application":if(t["/index.html"])return{path:"/index.html",hash:t["/index.html"],spa:!0};break;case"404-page":if(t["/404.html"])return{path:"/404.html",hash:t["/404.html"],notFound:!0};break}return null}o(pe,"resolveStaticPath");var io={html:"text/html; charset=utf-8",htm:"text/html; charset=utf-8",css:"text/css; charset=utf-8",js:"text/javascript; charset=utf-8",mjs:"text/javascript; charset=utf-8",json:"application/json; charset=utf-8",xml:"application/xml; charset=utf-8",svg:"image/svg+xml; charset=utf-8",txt:"text/plain; charset=utf-8",csv:"text/csv; charset=utf-8",md:"text/markdown; charset=utf-8",markdown:"text/markdown; charset=utf-8",yaml:"text/yaml; charset=utf-8",yml:"text/yaml; charset=utf-8",toml:"application/toml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",ico:"image/x-icon",webp:"image/webp",avif:"image/avif",woff:"font/woff",woff2:"font/woff2",ttf:"font/ttf",otf:"font/otf",eot:"application/vnd.ms-fontobject",pdf:"application/pdf",wasm:"application/wasm",webmanifest:"application/manifest+json; charset=utf-8",map:"application/json; charset=utf-8",mp4:"video/mp4",webm:"video/webm",mp3:"audio/mpeg",ogg:"audio/ogg"};function xt(e){let t=e.split(".").pop()?.toLowerCase()??"";return io[t]??"application/octet-stream"}o(xt,"getContentType");function Ne(e,t){if(e!=="application/null")return!e||e==="application/octet-stream"?xt(t):e}o(Ne,"resolveAssetContentType");function Dt(e){let t=new Headers({"Cache-Control":"no-store"});return e.retryAt&&Number.isFinite(Date.parse(e.retryAt))&&t.set("Retry-After",String(Math.max(0,Math.ceil((Date.parse(e.retryAt)-Date.now())/1e3)))),Response.json(e,{status:429,headers:t})}o(Dt,"usageLimitResponse");var xr="x-void-shared-cache-policy";var Dr=200;var co="public, max-age=0, must-revalidate";function Y(e){let t=new Response(e.body,e);return t.headers.set("Cache-Control",co),t.headers.delete(xr),t}o(Y,"clientRevalidateResponse");function lo(e){return e.headers.get("content-type")?.toLowerCase().split(";",1)[0]?.trim()}o(lo,"mediaType");function K(e){return lo(e)==="text/event-stream"}o(K,"isEventStreamResponse");function Ue(e,t){if(typeof e!="string"||e.trim()==="")throw new Error(`${t} must be a non-empty string.`);return e}o(Ue,"requiredString");var oe=1073741824,fo={free:{requestsPerMonth:3e6,cpuMsPerRequest:10,maxCpuMsPerRequest:10,subRequestsPerInvocation:50,deploysPerDay:100,d1StorageBytes:1*oe,r2StorageBytes:5*oe,kvStorageBytes:1*oe,aiNeuronsPerMonth:1e5,retainedDeployments:1,sandboxRuntimeSecondsPerMonth:1,sandboxMaxConcurrentInstances:1,concurrentBuilds:1,buildTimeoutMinutes:10},solo:{requestsPerMonth:1e7,cpuMsPerRequest:30,maxCpuMsPerRequest:3e4,subRequestsPerInvocation:50,deploysPerDay:500,d1StorageBytes:5*oe,r2StorageBytes:25*oe,kvStorageBytes:5*oe,aiNeuronsPerMonth:3e5,retainedDeployments:5,sandboxRuntimeSecondsPerMonth:108e3,sandboxMaxConcurrentInstances:2,concurrentBuilds:2,buildTimeoutMinutes:15},pro:{requestsPerMonth:1e8,cpuMsPerRequest:50,maxCpuMsPerRequest:3e4,subRequestsPerInvocation:1e3,deploysPerDay:3e3,d1StorageBytes:10*oe,r2StorageBytes:100*oe,kvStorageBytes:25*oe,aiNeuronsPerMonth:5e5,retainedDeployments:25,sandboxRuntimeSecondsPerMonth:72e4,sandboxMaxConcurrentInstances:10,concurrentBuilds:3,buildTimeoutMinutes:15},sponsored:{requestsPerMonth:0,cpuMsPerRequest:50,maxCpuMsPerRequest:3e4,subRequestsPerInvocation:1e3,deploysPerDay:0,d1StorageBytes:0,r2StorageBytes:0,kvStorageBytes:0,aiNeuronsPerMonth:0,retainedDeployments:0,sandboxRuntimeSecondsPerMonth:0,sandboxMaxConcurrentInstances:0,concurrentBuilds:6,buildTimeoutMinutes:20},custom:{requestsPerMonth:0,cpuMsPerRequest:0,maxCpuMsPerRequest:0,subRequestsPerInvocation:0,deploysPerDay:0,d1StorageBytes:0,r2StorageBytes:0,kvStorageBytes:0,aiNeuronsPerMonth:0,retainedDeployments:0,sandboxRuntimeSecondsPerMonth:0,sandboxMaxConcurrentInstances:0,concurrentBuilds:0,buildTimeoutMinutes:0}};var mo=["github","google","oidc","cloudflare-access"];var ho={ai:!0,customDomains:!1,email:!1,githubActions:!1,githubOAuth:!0,googleOAuth:!1,managedBuilds:!1,sandbox:!1},go={apiHostname:null,dashboardHostname:null,proxyHostname:null};function Or(e){let t=e.trim().toLowerCase().replaceAll(/[^a-z0-9-]+/g,"-").replaceAll(/^-+|-+$/g,"").replaceAll(/-{2,}/g,"-");if(!t)throw new Error("The installation name must contain a letter or number.");if(t.length>40)throw new Error("The installation name must be 40 characters or fewer after normalization.");return t}o(Or,"normalizeInstallationSlug");function fe(e){let t=e.trim().toLowerCase();if(t.endsWith(".")&&(t=t.slice(0,-1)),t.length>253||!t.includes(".")||t.split(".").some(r=>!/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(r)))throw new Error(`Invalid domain: ${JSON.stringify(e)}.`);return t}o(fe,"normalizeApplicationDomain");function yo(e){let t=e.trim(),r;try{r=new URL(t)}catch{throw new Error("The dashboard URL must be an HTTPS origin.")}if(!/^https:\/\/[^/?#]+\/?$/i.test(t)||/[\s\\]/.test(t)||r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error("The dashboard URL must be an HTTPS origin without credentials, a path, query, or fragment.");return r.hostname=fe(r.hostname),r.origin}o(yo,"normalizePlatformDashboardUrl");function wo(e){let t=`void-${Or(e)}`,r=t.replaceAll("-","_");return{aiGateway:t,apiWorker:`${t}-api`,assetsBucket:`${t}-assets`,cronQueue:`${t}-cron-fires`,deploymentQueue:`${t}-deployments`,dashboardWorker:`${t}-dashboard`,dispatchNamespace:`${t}-users`,dispatchWorker:`${t}-dispatch`,emailGatewayWorker:`${t}-email-gateway`,hyperdrive:`${t}-database`,isrCacheKv:`${t}-isr-cache`,legacyAssetsKv:`${t}-legacy-assets`,logsDataset:`${r}_logs`,proxyWorker:`${t}-proxy`,requestsDataset:`${r}_requests`,routingKv:`${t}-routing`,tailWorker:`${t}-tail`,usageQueue:`${t}-usage-events`}}o(wo,"createPlatformResourceNames");function Ao(e){if(!e.zoneName&&e.workersDev){if(e.dedicatedZone)throw new Error("workers.dev cannot use a dedicated-zone catch-all.");return[]}let t=fe(e.baseDomain),r=fe(e.zoneName);if(t!==r&&!t.endsWith(`.${r}`))throw new Error(`Application domain ${t} is not inside zone ${r}.`);let n=[{pattern:`*.${t}/*`,zoneName:r},{pattern:`*.${t}`,zoneName:r}];if(e.dedicatedZone){if(t!==r)throw new Error("A dedicated-zone catch-all requires the application domain to be the zone.");n.push({pattern:"*/*",zoneName:r},{pattern:"*",zoneName:r})}return n}o(Ao,"createApplicationRoutes");function bo(e){if(e.emailSharedZoneId===void 0!=(e.emailSenderDomain===void 0))throw new Error("Shared email configuration requires both emailSenderDomain and emailSharedZoneId.");let t=Or(e.installationSlug),r=fe(e.application.baseDomain),n=e.application.workersDev;if(n&&(!/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(n.subdomain)||!/^[a-z0-9][a-z0-9-]{0,80}$/.test(n.installationId)))throw new Error("Invalid workers.dev installation identity.");let s=n&&e.application.zoneName===""?"":fe(e.application.zoneName);if(!s&&r!==`${n.subdomain}.workers.dev`)throw new Error("workers.dev application domain must match its account subdomain.");let i={...wo(t),...e.resources},c={...ho,...e.capabilities};if(c.managedBuilds&&!c.githubActions)throw new Error("Managed builds require the GitHub Actions capability.");if(e.appAccess!==void 0&&!["public","platform","custom"].includes(e.appAccess))throw new Error("appAccess must be public, platform, or custom.");let l=e.authentication?.providers??["github"];if(l.some(f=>!mo.includes(f))||new Set(l).size!==l.length)throw new Error("Authentication providers must be unique supported login kinds.");let p=e.authentication?.configurable===!0||e.authentication?.accessProtection===!0||l.some(f=>f==="oidc"||f==="cloudflare-access");if(l.length===0)throw new Error("At least one authentication provider is required.");if(l.includes("github")!==c.githubOAuth)throw new Error("The GitHub provider and githubOAuth capability must agree.");if(l.includes("google")!==c.googleOAuth)throw new Error("The Google provider and googleOAuth capability must agree.");let d=e.controlPlane?.dashboardUrl===void 0?void 0:yo(e.controlPlane.dashboardUrl),a={...e.appAccess!==void 0?{appAccess:e.appAccess}:{},application:{baseDomain:r,dedicatedZone:e.application.dedicatedZone??!1,zoneName:s,...n?{workersDev:{...n}}:{},...e.application.zoneId?{zoneId:Ue(e.application.zoneId,"application.zoneId")}:{}},authentication:{providers:[...l],...p?{configurable:!0}:{},...e.authentication?.accessProtection?{accessProtection:!0}:{}},capabilities:c,...e.emailSharedZoneId!==void 0?{emailSharedZoneId:Ue(e.emailSharedZoneId,"emailSharedZoneId")}:{},...e.emailSenderDomain!==void 0?{emailSenderDomain:fe(e.emailSenderDomain)}:{},controlPlane:{...go,...e.controlPlane,...d!==void 0?{dashboardUrl:d,dashboardHostname:e.controlPlane?.dashboardHostname??new URL(d).hostname}:{}},displayName:Ue(e.displayName,"displayName").trim(),installationSlug:t,resources:i,schemaVersion:e.appAccess!==void 0?4:p?3:n?2:1};Ao(a.application);for(let[f,u]of Object.entries(a.controlPlane))f!=="dashboardUrl"&&u!==null&&fe(u);if(a.controlPlane.dashboardUrl){let f=new URL(a.controlPlane.dashboardUrl).hostname;if(a.controlPlane.dashboardHostname!==f)throw new Error("The dashboard URL and dashboard hostname must agree.")}for(let[f,u]of Object.entries(a.resources))Ue(u,`resources.${f}`);return a}o(bo,"createPlatformDeploymentManifest");var Lr=2;function Ae(e){let t=e.SITE_DOMAIN??e.BASE_HOSTNAME??"void.app";return e.PLATFORM_APPLICATION?Ro(JSON.parse(e.PLATFORM_APPLICATION)):{baseDomain:t,zoneName:t,dedicatedZone:!1}}o(Ae,"readPlatformApplication");function Ro(e){return bo({installationSlug:"runtime",displayName:"Runtime",application:e}).application}o(Ro,"parsePlatformApplication");function Nr(e){return`workers-dev:${e}`}o(Nr,"platformWorkersDevAliasKey");var Eo="__void/platform/application/v1";async function Ur(e){if(!e.PLATFORM_APPLICATION)return e;let t=await e.ROUTING.get(Eo);if(!t)return e;let r=Ae(e),n=Ae({PLATFORM_APPLICATION:t});if(!r.workersDev||!n.workersDev||r.workersDev.installationId!==n.workersDev.installationId||r.workersDev.subdomain!==n.workersDev.subdomain)throw new Error("Application routing belongs to another platform installation.");return{...e,PLATFORM_APPLICATION:t,SITE_DOMAIN:n.baseDomain,BASE_HOSTNAME:n.baseDomain,...n.zoneId?{CF_ZONE_ID:n.zoneId}:{}}}o(Ur,"resolvePlatformApplicationEnvironment");function So(e){return`void-${e.installationId.slice(-12)}-`}o(So,"platformProjectIngressPrefix");function _o(e,t){if(!/^proj_[a-z0-9]{1,32}$/.test(e.id)||!/^[a-z0-9][a-z0-9-]*$/.test(e.slug))throw new Error("Invalid platform project identity.");let r=So(t),n=`-${e.id.slice(5)}`;return`${r}${e.slug.slice(0,63-r.length-n.length).replace(/-+$/,"")}${n}`}o(_o,"platformProjectIngressName");function Mr(e,t){return`${_o(e,t)}.${t.subdomain}.workers.dev`}o(Mr,"platformProjectWorkersDevHostname");var Ot="void-platform-health";function Hr(e){return e.zoneName?`${Ot}.${e.baseDomain}`:null}o(Hr,"platformHealthHostname");var ot=new TextEncoder,st=new TextDecoder,it=new TextDecoder("utf-8",{fatal:!0}),sa=2**32;function $r(...e){let t=e.reduce((s,{length:i})=>s+i,0),r=new Uint8Array(t),n=0;for(let s of e)r.set(s,n),n+=s.length;return r}o($r,"concat");var Io=/[^\x00-\x7f]/;function be(e){if(typeof e=="string"&&e.length>=128){if(Io.test(e))throw new TypeError("non-ASCII string encountered in encode()");return ot.encode(e)}let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw new TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}o(be,"encode");function Fr(e,t=!1){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e,{alphabet:t?"base64url":"base64"});if(t){if(e.includes("+")||e.includes("/"))throw new TypeError("Invalid base64url");e=e.replace(/-/g,"+").replace(/_/g,"/")}let r=atob(e),n=new Uint8Array(r.length);for(let s=0;s<r.length;s++)n[s]=r.charCodeAt(s);return n}o(Fr,"decodeBase64");var V=class extends Error{static{o(this,"JOSEError")}static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(t,r){super(t,r),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}},se=class extends V{static{o(this,"JWTClaimValidationFailed")}static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(t,r,n="unspecified",s="unspecified"){super(t,{cause:{claim:n,reason:s,payload:r}}),this.claim=n,this.reason=s,this.payload=r}},Me=class extends V{static{o(this,"JWTExpired")}static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(t,r,n="unspecified",s="unspecified"){super(t,{cause:{claim:n,reason:s,payload:r}}),this.claim=n,this.reason=s,this.payload=r}},at=class extends V{static{o(this,"JOSEAlgNotAllowed")}static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"},Q=class extends V{static{o(this,"JOSENotSupported")}static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"};var F=class extends V{static{o(this,"JWSInvalid")}static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},Re=class extends V{static{o(this,"JWTInvalid")}static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"};var He=class extends V{static{o(this,"JWKSInvalid")}static code="ERR_JWKS_INVALID";code="ERR_JWKS_INVALID"},Ee=class extends V{static{o(this,"JWKSNoMatchingKey")}static code="ERR_JWKS_NO_MATCHING_KEY";code="ERR_JWKS_NO_MATCHING_KEY";constructor(t="no applicable key found in the JSON Web Key Set",r){super(t,r)}},ct=class extends V{static{o(this,"JWKSMultipleMatchingKeys")}[Symbol.asyncIterator]=async function*(){};static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(t="multiple matching keys found in the JSON Web Key Set",r){super(t,r)}},lt=class extends V{static{o(this,"JWKSTimeout")}static code="ERR_JWKS_TIMEOUT";code="ERR_JWKS_TIMEOUT";constructor(t="request timed out",r){super(t,r)}},dt=class extends V{static{o(this,"JWSSignatureVerificationFailed")}static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(t="signature verification failed",r){super(t,r)}};var Po="The input to be decoded is not correctly encoded.";function $e(e){try{return Fr(typeof e=="string"?e:st.decode(e),!0)}catch(t){throw new TypeError(Po,{cause:t})}}o($e,"decode");function ce(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||Object.getPrototypeOf(t)===null}o(ce,"isObject");function ut(e){return ce(e)&&Array.isArray(e.keys)&&Array.from(e.keys).every(ce)}o(ut,"isJwkSet");function Vr(...e){let t=new Set;for(let r of e)if(r)for(let n of Object.keys(r)){if(t.has(n))return!1;t.add(n)}return!0}o(Vr,"isDisjoint");function Lt(e,t,r){try{return $e(e)}catch{throw new r(`Failed to base64url decode the ${t}`)}}o(Lt,"decodeBase64url");function Kr(e,t,r){try{return be(e)}catch{throw new r(`The ${t} is not a valid base64url string`)}}o(Kr,"encodeBase64url");function jr(e,t,r){let n;try{n=JSON.parse(it.decode($e(e)))}catch{throw new t(r)}if(!ce(n))throw new t(r);return n}o(jr,"parseJoseHeader");var Wr={__proto__:null,b64:!0};function Jr(e,t){if(t!==void 0&&(!Array.isArray(t)||t.some(r=>typeof r!="string")))throw new TypeError(`"${e}" option must be an array of strings`);return t===void 0?void 0:new Set(t)}o(Jr,"validateAlgorithms");function zr(e,t,r,n,s){if(s.crit!==void 0&&n?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return[];if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(c=>typeof c!="string"||c.length===0))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let i=r===void 0?t:{__proto__:null,...r,...t};for(let c of n.crit){if(!(c in i))throw new Q(`Extension Header Parameter "${c}" is not recognized`);if(!Object.hasOwn(s,c)||s[c]===void 0)throw new e(`Extension Header Parameter "${c}" is missing`);if(i[c]&&(!Object.hasOwn(n,c)||n[c]===void 0))throw new e(`Extension Header Parameter "${c}" MUST be integrity protected`)}return n.crit}o(zr,"validateCrit");function Br(e,t){if(t.includes("b64")){let r=e.b64;if(typeof r!="boolean")throw new F('The "b64" (base64url-encode payload) Header Parameter must be a boolean');return r}return!0}o(Br,"validateB64");var To=o(e=>e[Symbol.toStringTag],"tag"),Co=o((e,t,r)=>{let{alg:n}=e;if(t.use!==void 0){let s=r==="sign"||r==="verify"?"sig":"enc";if(t.use!==s)throw new TypeError(`Invalid key for this operation, its "use" must be "${s}" when present`)}if(t.alg!==void 0&&t.alg!==n)throw new TypeError(`Invalid key for this operation, its "alg" must be "${n}" when present`);if(Array.isArray(t.key_ops)){let s=r==="encrypt"||r==="decrypt"?e.ops?.[r==="encrypt"?0:1]:r;if(s&&!t.key_ops.includes(s))throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${s}" when present`)}},"jwkMatchesOp");async function Gr(e,t,r){let{alg:n,secret:s}=e,i=r==="decrypt"||r==="sign";if(s&&t instanceof Uint8Array)return t;let c,l;if(ce(t)){if(c=No(t),typeof c.kty!="string")throw qr(n,t,s);if(!(s?c.kty==="oct"&&typeof c.k=="string":c.kty!=="oct"&&(i?c.kty==="AKP"&&typeof c.priv=="string"||typeof c.d=="string":c.d===void 0&&c.priv===void 0)))throw new TypeError(s?'JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present':`JSON Web Key for this operation must be a ${i?"private":"public"} JWK`);if(Co(e,c,r),c.kty==="oct")return $e(c.k);if(!Object.isFrozen(t)){let{key_ops:a}=t;Array.isArray(a)&&Object.freeze(a),Object.freeze(t)}}else{if(!xo(t))throw qr(n,t,s);let a=s?"secret":i?"private":"public";if(t.type!==a&&(s||["secret","public","private"].includes(t.type)))throw new TypeError(`${To(t)} instances must be of type "${a}" for the ${n} algorithm`);if(Yr(t))return t;if(l=t,l.type==="secret")return l.export()}Nt||=new WeakMap;let p=t,d=Nt.get(p);if(d?.[n])return d[n];if(d||Nt.set(p,d={}),l&&typeof l.toCryptoKey=="function"){let a=l.type==="public",f=vo[l.asymmetricKeyDetails?.namedCurve],u=e.resolve?.({crv:f,asymmetricKeyType:l.asymmetricKeyType})??e.subtle;return d[n]=l.toCryptoKey(u,a,e.usages[a?0:1])}return c??=l.export({format:"jwk"}),c.alg=n,d[n]=await Mt(e,c)}o(Gr,"prepareKey");var Nt,vo={__proto__:null,prime256v1:"P-256",secp384r1:"P-384",secp521r1:"P-521"};var Yr=o(e=>{if(e?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return e instanceof CryptoKey}catch{return!1}},"isCryptoKey"),ko=o(e=>e?.[Symbol.toStringTag]==="KeyObject","isKeyObject"),xo=o(e=>Yr(e)||ko(e),"isKeyLike");function Do(e,t,...r){if(r.length>2){let n=r.pop();e+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return t==null?e+=` Received ${t}`:typeof t=="function"&&t.name?e+=` Received function ${t.name}`:typeof t=="object"&&t!=null&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}o(Do,"message");function qr(e,t,r){let n=["CryptoKey","KeyObject","JSON Web Key"];return r&&n.push("Uint8Array"),new TypeError(Do(`Key for the ${e} algorithm must be `,t,...n))}o(qr,"invalidKeyType");var pt=o((e,t="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`),"unusable");function Oo(e,t){if(t&&!e.usages.includes(t))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}o(Oo,"checkUsage");function Qr(e,t){let{modulusLength:r}=t.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}o(Qr,"checkModulusLength");function Lo(e,t,r){let n=e.algorithm;if(n.name!==t.name)throw pt(t.name);if(t.hash&&n.hash?.name!==t.hash)throw pt(t.hash,"algorithm.hash");if(t.namedCurve&&n.namedCurve!==t.namedCurve)throw pt(t.namedCurve,"algorithm.namedCurve");if(t.length!==void 0&&n.length!==t.length)throw pt(t.length,"algorithm.length");Oo(e,r)}o(Lo,"checkCryptoKey");function Ut(e){return{__proto__:null,...e}}o(Ut,"snapshotJwk");function No(e){let t=Ut(e);if(t.ext!==void 0&&typeof t.ext!="boolean")throw new TypeError('"ext" (Extractable) Parameter must be a boolean');if(t.key_ops!==void 0){let r=t.key_ops,n=Array.isArray(r)?[...r]:void 0;if(!n||n.some(s=>typeof s!="string")||new Set(n).size!==n.length)throw new TypeError('"key_ops" (Key Operations) Parameter must be an array of unique strings');t.key_ops=n}return t}o(No,"normalizeJwk");async function Mt(e,t,r){if(!e.kty.includes(t.kty))throw new Q('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');let n=e.resolve?.({kty:t.kty,crv:t.crv})??e.subtle,s=!!(t.d||t.priv),i={...t,ext:r??t.ext};return i.kty!=="AKP"&&delete i.alg,delete i.use,crypto.subtle.importKey("jwk",i,n,i.ext??!s,t.key_ops??e.usages[s?1:0])}o(Mt,"jwkToKey");async function Xr(e,t,r,n=!1){return e instanceof Uint8Array&&(e=await crypto.subtle.importKey("raw",e,t,n,[r])),Lo(e,t,r),e}o(Xr,"rawKey");function Zr(e){let t={__proto__:null};for(let r in e)t[r]={...e[r],alg:r};return t}o(Zr,"table");var Fe=[["verify"],["sign"]];function Ht(e){let t={name:"HMAC",hash:`SHA-${e}`};return{kty:["oct"],secret:!0,subtle:t,signing:t,usages:Fe}}o(Ht,"hmac");function Se(e,t){let r={name:t?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:`SHA-${e}`};return{kty:["RSA"],subtle:r,signing:t?{...r,saltLength:t}:r,usages:Fe,minRsaBits:2048}}o(Se,"rsa");function $t(e,t){return{kty:["EC"],crv:e,subtle:{name:"ECDSA",namedCurve:e},signing:{name:"ECDSA",hash:`SHA-${t}`},usages:Fe}}o($t,"ecdsa");function en(){let e={name:"Ed25519"};return{kty:["OKP"],crv:"Ed25519",subtle:e,signing:e,usages:Fe}}o(en,"eddsa");function Ft(e){let t={name:`ML-DSA-${e}`};return{kty:["AKP"],subtle:t,signing:t,usages:Fe}}o(Ft,"mldsa");var Vt=Zr({HS256:Ht(256),HS384:Ht(384),HS512:Ht(512),RS256:Se(256),RS384:Se(384),RS512:Se(512),PS256:Se(256,32),PS384:Se(384,48),PS512:Se(512,64),ES256:$t("P-256",256),ES384:$t("P-384",384),ES512:$t("P-521",512),EdDSA:en(),Ed25519:en(),"ML-DSA-44":Ft(44),"ML-DSA-65":Ft(65),"ML-DSA-87":Ft(87)});function tn(e){let t=typeof e=="string"?Vt[e]:void 0;if(!t)throw new Q(`alg ${e} is not supported either by JOSE or your javascript runtime`);return t}o(tn,"jwsAlgorithm");function rn(e){return[e&&Jr("algorithms",e.algorithms),e?.crit]}o(rn,"prepareVerify");function Uo(e){return e===void 0?{}:jr(e,F,"JWS Protected Header is invalid")}o(Uo,"parseProtectedHeader");function Mo(e){try{return be(e)}catch{throw new F("JWS Compact Serialization payload must use only ASCII characters")}}o(Mo,"encodeCompactUnencodedPayload");async function Ho(e,t,r,n,s){let{protected:i,header:c,payload:l}=e,p=s??Uo(i);if(!Vr(p,c))throw new F("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let d={...p,...c},a=Br(p,zr(F,Wr,t[1],p,d)),{alg:f}=d;if(typeof f!="string"||!f)throw new F('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(t[0]&&!t[0].has(f))throw new at('"alg" (Algorithm) Header Parameter value not allowed');if(a){if(typeof l!="string")throw new F("JWS Payload must be a string")}else if(typeof l!="string"&&!(l instanceof Uint8Array))throw new F("JWS Payload must be a string or an Uint8Array instance");let u=a||typeof l!="string"?l:n(l),E=!1;typeof r=="function"&&(r=await r(p,e),E=!0);let h=tn(f),g=$r(i!==void 0?be(i):new Uint8Array,be("."),typeof u=="string"?t[2]??=Kr(u,"payload",F):u),A=Lt(e.signature,"signature",F),k=await Gr(h,r,"verify"),y=await Xr(k,h.subtle,"verify");h.minRsaBits&&Qr(h.alg,y);let R=!1;try{R=await crypto.subtle.verify(h.signing,y,A,g)}catch{}if(!R)throw new dt;let M={payload:typeof u=="string"?Lt(u,"payload",F):u};return i!==void 0&&(M.protectedHeader=p),c!==void 0&&(M.unprotectedHeader=c),E?[{...M,key:k},a]:[M,a]}o(Ho,"verifySignature");async function nn(e,t,r){if(e instanceof Uint8Array&&(e=st.decode(e)),typeof e!="string")throw new F("Compact JWS must be a string or Uint8Array");let{0:n,1:s,2:i,length:c}=e.split(".");if(c!==3)throw new F("Invalid Compact JWS");return Ho({payload:s,protected:n,signature:i},t,r,Mo)}o(nn,"verifyCompact");var $o=o(e=>Math.floor(e.getTime()/1e3),"epoch"),Fo={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},Vo=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,_e="check_failed";function Kt(){throw new TypeError("Invalid time period format")}o(Kt,"invalidDuration");function on(e){typeof e!="string"&&Kt();let t=Vo.exec(e);(!t||t[4]&&t[1])&&Kt();let r=parseFloat(t[2]),n=Math.round(r*Fo[t[3][0].toLowerCase()]);return Number.isFinite(n)||Kt(),t[1]==="-"||t[4]==="ago"?-n:n}o(on,"secs");function jt(e,t){if(!Number.isFinite(t))throw new TypeError(`Invalid ${e} input`);return t}o(jt,"validateInput");var sn=o(e=>{let t=e.toLowerCase();return e.includes("/")?t:`application/${t}`},"normalizeTyp"),Ko=o((e,t)=>typeof e=="string"?t.includes(e):Array.isArray(e)?t.some(r=>e.includes(r)):!1,"checkAudiencePresence");function Wt(e,t,r=!1){let n=e[t];if(!(n===void 0&&!r)){if(typeof n!="number")throw new se(`"${t}" claim must be a number`,e,t,"invalid");return n}}o(Wt,"validateNumericDate");function Jt(e,t){throw new se(`unexpected "${t}" claim value`,e,t,_e)}o(Jt,"unexpectedClaim");function an(e,t,r={}){let n;try{n=JSON.parse(it.decode(t))}catch{}if(!ce(n))throw new Re("JWT Claims Set must be a top-level JSON object");let{typ:s}=r;if(s!==void 0&&(typeof e.typ!="string"||sn(e.typ)!==sn(s)))throw new se('unexpected "typ" JWT header value',n,"typ",_e);let{requiredClaims:i=[],issuer:c,subject:l,audience:p,maxTokenAge:d}=r,a=[...i];d!==void 0&&a.push("iat"),p!==void 0&&a.push("aud"),l!==void 0&&a.push("sub"),c!==void 0&&a.push("iss");for(let y of new Set(a.reverse()))if(!Object.hasOwn(n,y))throw new se(`missing required "${y}" claim`,n,y,"missing");c!==void 0&&!(Array.isArray(c)?c:[c]).includes(n.iss)&&Jt(n,"iss"),l!==void 0&&n.sub!==l&&Jt(n,"sub"),p!==void 0&&!Ko(n.aud,typeof p=="string"?[p]:p)&&Jt(n,"aud");let{clockTolerance:f}=r,u=0;if(typeof f=="string")u=on(f);else if(f!==void 0){if(typeof f!="number")throw new TypeError("Invalid clockTolerance option type");u=f}jt("clockTolerance option",u);let{currentDate:E}=r,h=jt("currentDate option",$o(E===void 0?new Date:E)),g=Wt(n,"iat",d!==void 0),A=Wt(n,"nbf");if(A!==void 0&&A>h+u)throw new se('"nbf" claim timestamp check failed',n,"nbf",_e);let k=Wt(n,"exp");if(k!==void 0&&k<=h-u)throw new Me('"exp" claim timestamp check failed',n,"exp",_e);if(d!==void 0){let y=h-g,R=jt("maxTokenAge option",typeof d=="number"?d:on(d));if(y-u>R)throw new Me('"iat" claim timestamp check failed (too far in the past)',n,"iat",_e);if(y<-u)throw new se('"iat" claim timestamp check failed (it should be in the past)',n,"iat",_e)}return n}o(an,"validateClaimsSet");async function zt(e,t,r){let[n,s]=await nn(e,rn(r),t);if(!s)throw new Re("JWTs MUST NOT use unencoded payload");let i=an(n.protectedHeader,n.payload,r);return{...n,payload:i}}o(zt,"jwtVerify");function jo(e,t,r,n){let{kty:s,key_ops:i,ext:c,kid:l,alg:p,use:d,crv:a}=e;return(c===void 0||typeof c=="boolean")&&(i===void 0||Array.isArray(i)&&i.every((f,u)=>typeof f=="string"&&i.indexOf(f)===u)&&i.includes("verify"))&&t.kty.includes(s)&&(n===void 0||typeof n=="string"&&n===l)&&(p===void 0?s!=="AKP":r===p)&&(d===void 0||d==="sig")&&(!t.crv||a===t.crv)}o(jo,"isUsableJWK");async function cn(e,t,r){let n=e.get(t)||e.set(t,{}).get(t),{alg:s}=r;if(n[s]===void 0){let i=Mt(r,t,!0).then(c=>{if(c.type!=="public")throw new He("JSON Web Key Set members must be public keys");return n[s]=c,c}).catch(c=>{throw n[s]===i&&delete n[s],c});n[s]=i}return n[s]}o(cn,"importWithAlgCache");function Bt(e){let t;try{t=structuredClone(e)}catch{}if(!ut(t))throw new He("JSON Web Key Set malformed");let r=t.keys.map(s=>{let i=Ut(s);return Array.isArray(i.key_ops)&&(i.key_ops=[...i.key_ops]),i}),n=new WeakMap;return Object.defineProperty(async(s,i)=>{let{alg:c,kid:l}={...s,...i?.header},p=typeof c=="string"?Vt[c]:void 0;if(!p||p.secret)throw new Q('Unsupported "alg" value for a JSON Web Key Set');let d=t.keys.filter((u,E)=>jo(r[E],p,c,l)),{0:a,length:f}=d;if(!f)throw new Ee;if(f!==1){let u=new ct;throw u[Symbol.asyncIterator]=async function*(){for(let E of d)try{yield await cn(n,E,p)}catch{}},u}return cn(n,a,p)},"jwks",{value:o(()=>structuredClone(t),"value")})}o(Bt,"createLocalJWKSet");function Wo(){return typeof WebSocketPair<"u"||typeof navigator<"u"&&!0||typeof EdgeRuntime<"u"&&EdgeRuntime==="vercel"}o(Wo,"isCloudflareWorkers");var qt;(typeof navigator>"u"||!"Cloudflare-Workers"?.startsWith?.("Mozilla/5.0 "))&&(qt="jose/v6.2.12");var ft=Symbol();async function Jo(e,t,r,n=fetch){let s=await n(e,{method:"GET",signal:r,redirect:"manual",headers:t}).catch(i=>{throw i.name==="TimeoutError"?new lt:i});if(s.status!==200)throw new V("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await s.json()}catch{throw new V("Failed to parse the JSON Web Key Set HTTP response as JSON")}}o(Jo,"fetchJwks");var dn=Symbol();function Ve(e,t){return Number.isFinite(e)&&Date.now()<e+t}o(Ve,"isFreshFor");function ln(e,t,r){if(Number.isNaN(e))throw new TypeError(`"${r}" option must not be NaN`);return typeof e=="number"?e:t}o(ln,"validateDuration");function Gt(e,t){if(!(e instanceof URL))throw new TypeError("url must be an instance of URL");let r=new URL(e.href).href,n=t??{},s=n.timeoutDuration;if(typeof s=="number"&&(!Number.isInteger(s)||s<0))throw new TypeError('"timeoutDuration" option must be a non-negative integer');let i=typeof s=="number"?s:5e3,c=ln(n.cooldownDuration,3e4,"cooldownDuration"),l=ln(n.cacheMaxAge,6e5,"cacheMaxAge"),p=new Headers(n.headers);qt&&!p.has("User-Agent")&&p.set("User-Agent",qt),p.has("accept")||p.set("accept","application/json, application/jwk-set+json");let d=n[ft],a=n[dn],f,u,E=0,h=0,g;if(a&&typeof a=="object"){let{uat:k,jwks:y}=a;Ve(k,l)&&ut(y)&&(f=k,g=Bt(y))}let A=o(async()=>{if(u&&Wo()&&(u=void 0),!u){let k=++E,y=u=Jo(r,p,AbortSignal.timeout(i),d).then(R=>{let M=Bt(R);if(k<=h)return;g=M;let W=Date.now();a&&(a.uat=W,a.jwks=R),f=W,h=k}).finally(()=>{u===y&&(u=void 0)})}await u},"reload");return Object.defineProperties(async(k,y)=>{(!g||!Ve(f,l))&&await A();try{return await g(k,y)}catch(R){if(R instanceof Ee&&!Ve(f,c))return await A(),g(k,y);throw R}},{coolingDown:{get:o(()=>Ve(f,c),"get"),enumerable:!0},fresh:{get:o(()=>Ve(f,l),"get"),enumerable:!0},reload:{value:A,enumerable:!0},reloading:{get:o(()=>!!u,"get"),enumerable:!0},jwks:{value:o(()=>g?.jwks(),"value"),enumerable:!0}})}o(Gt,"createRemoteJWKSet");function un(e,t){let r=e.toLowerCase(),n=t.toLowerCase(),s=r.indexOf("*");if(s===-1)return r===n;let i=r.slice(0,s),c=r.slice(s+1);if(i.includes(".")||!c.startsWith(".")||c.includes("*")||!n.startsWith(i)||!n.endsWith(c))return!1;let l=n.slice(0,-c.length);return l.length>0&&!l.includes(".")}o(un,"matchesHostname");function zo(e,t){let r=t.audiences.find(n=>!n.hostname.includes("*")&&un(n.hostname,e));return r?r.audience:t.audiences.find(n=>un(n.hostname,e))?.audience??null}o(zo,"resolveAccessAudience");var Yt=class{constructor(t=(r,n)=>fetch(r,n)){this.request=t}request;static{o(this,"ProjectAccessVerifier")}keys=new Map;async verify(t,r,n){try{let s=zo(t,n);if(!s||!r||r.length>32*1024)return!1;let i=n.teamDomain.replace(/\/+$/,""),c=new URL(i);if(c.protocol!=="https:"||!c.hostname.endsWith(".cloudflareaccess.com")||c.origin!==i)return!1;let l=this.keys.get(i);l||(this.keys.size>=16&&this.keys.delete(this.keys.keys().next().value),l=Gt(new URL(`${i}/cdn-cgi/access/certs`),{timeoutDuration:1e4,[ft]:async(d,a)=>{let f=await this.request(d,{...a,redirect:"manual"});if(f.status>=300&&f.status<400)throw await f.body?.cancel(),new Error("Access key endpoint redirected.");return f}}),this.keys.set(i,l));let{payload:p}=await zt(r,l,{issuer:i,audience:s,algorithms:["RS256"],requiredClaims:["iss","aud","iat","exp","type"]});return p.type==="app"&&typeof p.iat=="number"&&p.iat<=Date.now()/1e3+30}catch{return!1}}},pn=new Yt;function Ke(e){return e.slice(e.lastIndexOf("/")+1).includes(".")}o(Ke,"hasExtension");function X(e){return e==="/api"||e.startsWith("/api/")}o(X,"isApiPath");function Qt(e,t,r=!1){return X(e)?"api":t&&(!Ke(e)||r)?"ssr":null}o(Qt,"classifyDynamicRequestType");var Xt='system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif';function Zt(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}o(Zt,"escapeHtml");function fn(e,t,r=!1){let n=`${e}: ${t}`,s=`${e}: `;return`<!doctype html>
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>${Ft(n)}</title>
6
+ <title>${Zt(n)}</title>
7
7
  <style>
8
8
  :root {
9
9
  color-scheme: light;
10
- font-family: ${$t};
10
+ font-family: ${Xt};
11
11
  background: #f5f5f5;
12
12
  color: #171717;
13
13
  }
@@ -25,7 +25,7 @@ var $n=Object.defineProperty;var o=(e,t)=>$n(e,"name",{value:t,configurable:!0})
25
25
  background:
26
26
  radial-gradient(circle at top, rgba(255, 255, 255, 0.96), rgba(245, 245, 245, 0.96) 52%),
27
27
  linear-gradient(180deg, #fafafa 0%, #f1f1f1 100%);
28
- font: 500 16px/1.5 ${$t};
28
+ font: 500 16px/1.5 ${Xt};
29
29
  }
30
30
 
31
31
  main {
@@ -41,7 +41,7 @@ var $n=Object.defineProperty;var o=(e,t)=>$n(e,"name",{value:t,configurable:!0})
41
41
 
42
42
  h1 {
43
43
  margin: 0;
44
- font: 400 clamp(1.5rem, 1.2rem + 1vw, 2rem) / 1.1 ${$t};
44
+ font: 400 clamp(1.5rem, 1.2rem + 1vw, 2rem) / 1.1 ${Xt};
45
45
  letter-spacing: -0.03em;
46
46
  }
47
47
 
@@ -59,7 +59,7 @@ var $n=Object.defineProperty;var o=(e,t)=>$n(e,"name",{value:t,configurable:!0})
59
59
  ${r?`<h1>Temporarily unavailable</h1>
60
60
  <p>This service is undergoing maintenance. Please try again in a moment.</p>
61
61
  <a href="">Try again</a>
62
- <small>If you submitted a form, check whether it succeeded before submitting it again.</small>`:`<h1><strong>${Ft(s)}</strong>${Ft(t)}</h1>`}
62
+ <small>If you submitted a form, check whether it succeeded before submitting it again.</small>`:`<h1><strong>${Zt(s)}</strong>${Zt(t)}</h1>`}
63
63
  </main>
64
64
  </body>
65
- </html>`}o(Br,"renderDefaultErrorPage");function zr(e){let t=new Headers({"Cache-Control":"no-store","Retry-After":"30"});return ct(e)?(t.set("Content-Type","text/html; charset=utf-8"),new Response(e.method==="HEAD"?null:Br(503,"Temporarily unavailable",!0),{status:503,headers:t})):new Response(e.method==="HEAD"?null:"Platform disabled",{status:503,headers:t})}o(zr,"createMaintenanceResponse");function ct(e){if(e.method!=="GET"&&e.method!=="HEAD")return!1;let t=new URL(e.url);if(G(t.pathname)||/\/[^/]+\.[^/]+$/.test(t.pathname))return!1;let r=e.headers.get("sec-fetch-dest");if(r&&r!=="document"&&r!=="empty")return!1;let n=e.headers.get("accept");return!n||n.includes("text/html")||n.includes("*/*")}o(ct,"shouldServeHtmlErrorPage");function J(e,t,r,n){if(!ct(e))return new Response(r,{status:t,headers:n});let s=new Headers(n);return s.set("content-type","text/html; charset=utf-8"),new Response(e.method==="HEAD"?null:Br(t,r),{status:t,headers:s})}o(J,"createErrorResponse");var qr=new Map,bo=/[.+?^${}()|[\]\\]/,Ao=/[A-Za-z0-9_]/;function Kt(e,t){let r=e.get(t);return r!==void 0&&(e.delete(t),e.set(t,r)),r}o(Kt,"lruGet");function jt(e,t,r){if(e.size>=256){let n=e.keys().next();n.done||e.delete(n.value)}e.set(t,r)}o(jt,"lruSet");function lt(e){let t=Kt(qr,e);if(t)return t;let r=[],n=!1,s="",i=0;for(;i<e.length;){let u=e[i];if(u===":"){let p=i+1;for(;p<e.length&&Ao.test(e[p]);)p++;let d=e.slice(i+1,p);if(!d){s+="\\:",i++;continue}r.push(d),e[p]==="*"?(s+=`(?<${d}>.*)`,i=p+1):(s+=`(?<${d}>[^/]+)`,i=p)}else u==="*"?(n?s+=".*":(r.push("splat"),s+="(?<splat>.*)",n=!0),i++):(bo.test(u)&&(s+="\\"),s+=u,i++)}let c={regex:new RegExp(`^${s}$`),paramNames:r};return jt(qr,e,c),c}o(lt,"compilePattern");var Gr=new Map;function Se(e,t){let r=Kt(Gr,e);if(!r){try{let n=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replaceAll("*",".*");r=new RegExp(`^${n}$`)}catch{return!1}jt(Gr,e,r)}try{return r.test(t)}catch{return!1}}o(Se,"matchLiteralPattern");var Yr=new Map;function re(e,t){let r=Kt(Yr,e);if(!r){try{let n=e.replace(/(^|\/):[^/{}]+\{\.\+\}(?=\/|$)/g,"$1\uE001").replace(/(^|\/):[^/]+(?=\/|$)/g,"$1\uE000").replace(/[.+?^${}()|[\]\\]/g,"\\$&").replaceAll("*",".*").replaceAll("\uE000","[^/]+").replaceAll("\uE001",".+");r=new RegExp(`^${n}$`)}catch{return!1}jt(Yr,e,r)}try{return r.test(t)}catch{return!1}}o(re,"matchSegmentPattern");function dt(e,t){let r=e.replace(/:([A-Za-z0-9_]+)\*?/g,(n,s)=>t[s]??n);return/^[/\\]{2}/.test(r)&&!/^[/\\]{2}/.test(e)?"/"+r.replace(/^[/\\]+/,""):r}o(dt,"substituteParams");var Ro=new Set(["set-cookie"]);function Eo(e){if(e.length<2||e[0]!=='"'||e[e.length-1]!=='"')return null;let t="";for(let r=1;r<e.length-1;r+=1){let n=e[r];if(n==="\\"){if(r+=1,r>=e.length-1)return null;t+=e[r]}else{if(n==='"')return null;t+=n}}return t}o(Eo,"parseQuotedString");function Vt(e){let t=[],r=o(i=>{let c=i.trim();c.length>0&&t.push({raw:c,directive:Eo(c)})},"pushMember"),n=0,s=!1;for(let i=0;i<e.length;i+=1){let c=e[i];s?c==="\\"?i+=1:c==='"'&&(s=!1):c==='"'?s=!0:c===","&&(r(e.slice(n,i)),n=i+1)}return r(e.slice(n)),t}o(Vt,"parseClearSiteData");function ut(e){let t=[];for(let{raw:r,directive:n}of Vt(e)){let s=n?.toLowerCase();if(s==="*")return null;n===null||s==="cookies"||t.push(r)}return t.length>0?t.join(", "):null}o(ut,"sanitizeClearSiteData");function Y(e,t,r,n){if(!r||r.length===0)return e;let s=[];for(let d of r)Se(d.pattern,t)&&s.push(...d.headers);if(s.length===0)return e;let i=new Response(e.body,e),c=n?.cookieIsolation!=="origin",u=c?e.headers.get("clear-site-data"):null,p=u===null?null:ut(u);for(let[d,a]of s){let f=d.toLowerCase();if(!(c&&Ro.has(f))){if(c&&f==="clear-site-data"){let l=ut(a);l!==null?i.headers.set(d,l):p!==null?i.headers.set(d,p):i.headers.delete(d);continue}i.headers.set(d,a)}}return i}o(Y,"applyHeaderRules");function ne(e,t,r){if(!t?.length)return null;for(let n of t){if(n.host&&n.host!==r)continue;let s;try{({regex:s}=lt(n.source))}catch(u){console.warn(`[dispatch] skipping routing rule with invalid source ${JSON.stringify(n.source)}: ${u instanceof Error?u.message:String(u)}`);continue}let i=s.exec(e);if(!i)continue;let c=dt(n.destination,i.groups??{});return n.status===200?{type:"rewrite",destination:c}:{type:"redirect",destination:c,status:n.status}}return null}o(ne,"applyRoutingRules");function He(e,t){if(!t||t==="?")return e;let r=e.indexOf("#"),n=r===-1?e:e.slice(0,r),s=r===-1?"":e.slice(r),i=n.indexOf("?");if(i===-1)return n+t+s;if(i===n.length-1)return n.slice(0,i)+s;let c=new URLSearchParams(t),u=new URLSearchParams(n.slice(i+1));for(let[p,d]of c)u.has(p)||u.append(p,d);return n.slice(0,i)+"?"+u.toString()+s}o(He,"mergeQueryIntoLocation");function Ie(e){let t;try{t=decodeURIComponent(e)}catch{return e}if(t===e)return e;let r=Zr(t);return r===null?e:Qr(r)===Qr(e)?t:e}o(Ie,"safeDecodePathname");function Qr(e){return e.replace(/%[0-9a-fA-F]{2}/g,t=>t.toUpperCase())}o(Qr,"normalizePercentCase");function Zr(e){try{let t=new URL("https://void.invalid/");return t.pathname=e,t.pathname}catch{return null}}o(Zr,"reencodePathname");function Xr(e,t,r){if(t[e])return{path:e,hash:t[e]};switch(r){case"auto-trailing-slash":{let n=e+".html";if(t[n])return{path:n,hash:t[n]};let s=(e.endsWith("/")?e:e+"/")+"index.html";if(t[s])return{path:s,hash:t[s]};break}case"force-trailing-slash":{if(!e.endsWith("/")&&e!=="/"){let s=e+"/index.html";if(t[s])return{path:s,hash:t[s],redirect:e+"/"}}let n=e+"index.html";if(t[n])return{path:n,hash:t[n]};break}case"drop-trailing-slash":{if(e==="/"){if(t["/index.html"])return{path:"/index.html",hash:t["/index.html"]};break}if(e.endsWith("/")){let s=e.slice(0,-1),i=s+".html";if(t[i])return{path:i,hash:t[i],redirect:s}}let n=e+".html";if(t[n])return{path:n,hash:t[n]};break}case"none":break}return null}o(Xr,"matchManifestEntry");function ue(e,t,r){let n=r.html_handling??"auto-trailing-slash",s=Xr(e,t,n);if(!s){let i=Ie(e);if(i!==e&&(s=Xr(i,t,n),s?.redirect!==void 0)){let c=Zr(s.redirect);c!==null&&(s={...s,redirect:c})}}if(s)return s;switch(r.not_found_handling??"none"){case"single-page-application":if(t["/index.html"])return{path:"/index.html",hash:t["/index.html"],spa:!0};break;case"404-page":if(t["/404.html"])return{path:"/404.html",hash:t["/404.html"],notFound:!0};break}return null}o(ue,"resolveStaticPath");var So={html:"text/html; charset=utf-8",htm:"text/html; charset=utf-8",css:"text/css; charset=utf-8",js:"text/javascript; charset=utf-8",mjs:"text/javascript; charset=utf-8",json:"application/json; charset=utf-8",xml:"application/xml; charset=utf-8",svg:"image/svg+xml; charset=utf-8",txt:"text/plain; charset=utf-8",csv:"text/csv; charset=utf-8",md:"text/markdown; charset=utf-8",markdown:"text/markdown; charset=utf-8",yaml:"text/yaml; charset=utf-8",yml:"text/yaml; charset=utf-8",toml:"application/toml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",ico:"image/x-icon",webp:"image/webp",avif:"image/avif",woff:"font/woff",woff2:"font/woff2",ttf:"font/ttf",otf:"font/otf",eot:"application/vnd.ms-fontobject",pdf:"application/pdf",wasm:"application/wasm",webmanifest:"application/manifest+json; charset=utf-8",map:"application/json; charset=utf-8",mp4:"video/mp4",webm:"video/webm",mp3:"audio/mpeg",ogg:"audio/ogg"};function Wt(e){let t=e.split(".").pop()?.toLowerCase()??"";return So[t]??"application/octet-stream"}o(Wt,"getContentType");function $e(e,t){if(e!=="application/null")return!e||e==="application/octet-stream"?Wt(t):e}o($e,"resolveAssetContentType");function Jt(e){let t=new Headers({"Cache-Control":"no-store"});return e.retryAt&&Number.isFinite(Date.parse(e.retryAt))&&t.set("Retry-After",String(Math.max(0,Math.ceil((Date.parse(e.retryAt)-Date.now())/1e3)))),Response.json(e,{status:429,headers:t})}o(Jt,"usageLimitResponse");function Bt(e){let t=e;return t==="/"?t="__index__":(t=t.startsWith("/")?t.slice(1):t,t.endsWith("/")&&(t=t.slice(0,-1))),t}o(Bt,"normalizeIsrPath");function _o(e){return e==="__index__"?"/":`/${e}`}o(_o,"denormalizeIsrPath");function To(e){return _o(Bt(e))}o(To,"canonicalIsrPathname");function Co(e,t,r){return r!==void 0?`${e}/isr/${t}/${r}/`:`${e}/isr/`}o(Co,"versionedIsrCachePrefix");function tn(e,t){return Co(e,"v3",t)}o(tn,"isrCachePrefix");var rn="#rw=";function Fe(e,t,r,n,s){let i=`${tn(e,t)}${r}/${Bt(n)}`;return s?`${i}${rn}${on(s)}`:i}o(Fe,"isrCacheKey");function nn(e,t,r,n){return`${tn(e,t)}${r}/${Bt(n)}${rn}`}o(nn,"isrCacheVariantPrefix");var vo=0xcbf29ce484222325n,xo=0x100000001b3n,en=0xffffffffffffffffn;function on(e){let t=new TextEncoder().encode(e),r=vo;for(let n=0;n<t.length;n++)r=(r^BigInt(t[n]))&en,r=r*xo&en;return r.toString(16).padStart(16,"0")}o(on,"hashOriginalUrl");function zt(e,t,r,n,s){return ko(e,t,r,n,s?on(s):null)}o(zt,"isrEdgeCacheUrl");function ko(e,t,r,n,s){let i=To(t),c=new URL(`https://${e}${i}`);return n==="json"&&c.searchParams.set("__void","json"),c.searchParams.set("__void_isr",r),s&&c.searchParams.set("__void_orig",s),c.toString()}o(ko,"buildIsrEdgeCacheUrl");var Pe=3,pe="x-void-shared-cache-policy";function z(e){e.set(pe,String(Pe))}o(z,"markSharedCachePolicy");function je(e){return e.headers.get(pe)===String(Pe)}o(je,"hasCurrentSharedCachePolicy");var Do=/<script\b[^>]*\bid=(["'])__VOID_PAGE_DATA__\1[^>]*>([\s\S]*?)<\/script>/i,Oo=new Set(["cache-control","x-isr-cache","x-void-page-data","set-cookie"]);function _e(e,t,r){let n=new URL(e);if(!n.search)return n.toString();let s=sn(r,t);if(s.size===0)return n.search="",n.toString();let i=[...new Set(n.searchParams.keys())].filter(p=>s.has(p)).sort(),c=new URLSearchParams;for(let p of i)for(let d of n.searchParams.getAll(p))c.append(p,d);let u=c.toString();return n.search=u?`?${u}`:"",n.toString()}o(_e,"buildVariantOriginalUrl");function qt(e,t,r){let n=new URL(e);if(!n.search)return!1;let s=sn(r,t);for(let i of n.searchParams.keys())if(!s.has(i))return!0;return!1}o(qt,"hasUnlistedQueryParams");function Gt(e){if(!e)return;let t=Object.fromEntries(Object.entries(e).filter(([r])=>!r.includes("*")));return Object.keys(t).length>0?t:void 0}o(Gt,"exactQueryAllowlist");function sn(e,t){if(!e)return new Set;for(let[r,n]of Object.entries(e))if(Se(r,t))return new Set(n);return new Set}o(sn,"resolveQueryAllowlist");function Yt(e,t){let r=new TextEncoder().encode(JSON.stringify(e)),n=new ArrayBuffer(4+r.byteLength+t.byteLength);return new DataView(n).setUint32(0,r.byteLength,!0),new Uint8Array(n,4,r.byteLength).set(r),new Uint8Array(n,4+r.byteLength).set(new Uint8Array(t)),n}o(Yt,"packIsrValue");function an(e){if(e.byteLength<4)return null;let r=new DataView(e).getUint32(0,!0);if(e.byteLength<4+r)return null;try{let n=new Uint8Array(e,4,r),s=JSON.parse(new TextDecoder().decode(n));if(!s||typeof s!="object"||Array.isArray(s))return null;let i={};for(let[c,u]of Object.entries(s)){if(typeof u!="string")return null;i[c]=u}return{headers:i,body:e.slice(4+r)}}catch{return null}}o(an,"unpackIsrValue");function cn(e,t){if(!e||!t)return null;let r=an(e);if(!r||!Number.isInteger(t.s)||t.s<200||t.s>599||!Number.isFinite(t.c)||t.c<=0||!Number.isFinite(t.t)||t.t<=0||t.p!==Pe)return null;try{new Headers(r.headers)}catch{return null}return{body:new ReadableStream({start(n){n.enqueue(new Uint8Array(r.body)),n.close()}}),status:t.s,headers:r.headers,createdAt:t.c,ttl:t.t}}o(cn,"decodeIsrCacheEntry");function Qt(e,t=Date.now()){return t-e.createdAt>e.ttl*1e3}o(Qt,"isStale");function Xt(e,t,r=Date.now()){let n=new Headers(e.headers);if(n.set("x-isr-cache",t?"STALE":"HIT"),t)n.set("Cache-Control",`public, s-maxage=${Math.min(10,e.ttl)}, max-age=0, must-revalidate`);else{let s=Math.max(0,Math.floor((e.createdAt+e.ttl*1e3-r)/1e3));n.set("Cache-Control",`public, s-maxage=${s}, max-age=0, must-revalidate`)}return z(n),new Response(e.body,{status:e.status,headers:n})}o(Xt,"isrCacheResponse");function Te(e,t){let r=e.headers.get("x-revalidate");if(r===null)return t;let n=Number.parseInt(r,10);return Number.isNaN(n)||n<0?t:n}o(Te,"resolveRevalidateTtl");function Lo(e){return e.headers.get("Accept")?.toLowerCase().split(",").some(t=>t.split(";",1)[0]?.trim()==="text/event-stream")??!1}o(Lo,"acceptsEventStream");function Ve(e){return e.headers.has("Cookie")||e.headers.has("Authorization")||e.headers.has("Cf-Access-Jwt-Assertion")||Lo(e)}o(Ve,"shouldBypassIsr");function pt(e){if(e.method!=="GET"||e.headers.has("X-VoidPages")||new URL(e.url).pathname.startsWith("/__void/")||!e.headers.get("accept")?.split(",").some(s=>s.trim().toLowerCase().split(";",1)[0]==="text/html"))return!1;let r=e.headers.get("sec-fetch-mode")?.toLowerCase();if(r&&r!=="navigate")return!1;let n=e.headers.get("sec-fetch-dest")?.toLowerCase();return!(n&&n!=="document"||e.headers.has("rsc")||e.headers.has("x-nextjs-data"))}o(pt,"isFrameworkDocumentRequest");function oe(e){if(e.headers.get("Vary")?.split(",").some(r=>{let n=r.trim().toLowerCase();return n!==""&&n!=="x-voidpages"})||e.headers.has("Set-Cookie"))return!0;let t=e.headers.get("Cache-Control");return t?t.split(",").some(r=>{let n=r.split("=",1)[0]?.trim().toLowerCase();return n==="private"||n==="no-store"||n==="no-cache"}):!1}o(oe,"hasSharedCacheOptOut");function Ke(e,t){if(e==null)return 0;if(typeof e=="number")return e;for(let[r,n]of Object.entries(e))if(re(r,t))return n;return 0}o(Ke,"resolvePathTtl");function We(e,t,r,n){if(e){for(let s of e)if(re(s.pattern,n))return s.revalidate===void 0?Ke(r,n):s.revalidate>0?s.revalidate:0}return Ke(t,n)}o(We,"resolvePageTtl");function Zt(e){let t={};return e.headers.forEach((r,n)=>{Oo.has(n.toLowerCase())||(t[n]=r)}),t}o(Zt,"serializeHeaders");function ft(e){try{let t=JSON.parse(e);return t.deferred===void 0&&t.deferredKeys===void 0?e:null}catch{return null}}o(ft,"normalizePageDataForJsonCache");function er(e){let t=e.match(Do);return t?ft(t[2]):null}o(er,"extractPageDataFromHtml");var No=200;async function dn(e,t,r,n,s,i){let c=Fe(t,r,n,s,i);try{let{value:u,metadata:p}=await e.ISR_CACHE.getWithMetadata(c,"arrayBuffer");return cn(u,p)}catch{return null}}o(dn,"readIsrCache");async function tr(e,t,r,n,s,i){let c=Fe(t,r,n,s,i);await e.ISR_CACHE.delete(c)}o(tr,"deleteIsrCache");async function mt(e,t,r,n,s,i,c,u){let p=Fe(t,r,n,s,u),d=i.clone(),a=Zt(d),f=d.status;if(u&&!await Uo(e,t,r,n,s,p))return;let l=await d.arrayBuffer(),A=Yt(a,l);await e.ISR_CACHE.put(p,A,{metadata:{s:f,c:Date.now(),t:c,p:Pe}})}o(mt,"writeIsrCache");async function Uo(e,t,r,n,s,i){let c=nn(t,r,n,s),u=await e.ISR_CACHE.list({prefix:c,limit:1e3});return u.keys.length<No?!0:u.keys.some(p=>p.name===i)}o(Uo,"isVariantWriteAllowed");function un(e,t,r){return e.revalidate===void 0?Ke(t,r):e.revalidate>0?e.revalidate:0}o(un,"matchedPageTtl");function Mo(e){return!/[:{*]/.test(e)}o(Mo,"isLiteralPattern");function pn(e,t,r){if(!e)return!1;for(let n of e)if(re(n.pattern,t))return Mo(n.pattern)&&un(n,r,t)>0;return!1}o(pn,"matchesLiteralPage");function ln(e){return e.includes("*")||e.includes("{.+}")}o(ln,"isBroadCatchAll");function fn(e,t,r,n){if(e&&e.length>0){for(let s of e)if(re(s.pattern,n))return un(s,r,n)>0&&!ln(s.pattern)}if(t&&typeof t=="object"){for(let[s,i]of Object.entries(t))if(re(s,n))return i>0&&!ln(s)}return!1}o(fn,"isDottedPathIsrEligible");function mn(e,t,r,n){return new Request(zt(new URL(e.url).hostname,t,r,"html",n),{method:"GET"})}o(mn,"isrEdgeCacheKey");function rr(e,t,r,n){return new Request(zt(new URL(e.url).hostname,t,r,"json",n),{method:"GET"})}o(rr,"isrEdgeCacheKeyJson");async function hn(e,t,r){let n=new Headers({"Cache-Control":"no-store",Vary:"Accept, Sec-Fetch-Dest, X-VoidPages"}),s=Jt(t),i=s.headers.get("retry-after");if(i&&n.set("Retry-After",i),e.headers.get("X-VoidPages")==="true"||!ct(e))return n.set("Content-Type","application/json"),new Response(e.method==="HEAD"?null:s.body,{status:429,headers:n});try{let c=await r?.();if(c?.ok&&c.headers.get("content-type")?.includes("text/html"))return n.set("Content-Type","text/html; charset=utf-8"),n.set("X-Content-Type-Options","nosniff"),n.set("Content-Security-Policy","default-src 'none'; style-src 'unsafe-inline'; img-src data:; base-uri 'none'; form-action 'none'"),e.method==="HEAD"&&await c.body?.cancel(),new Response(e.method==="HEAD"?null:c.body,{status:429,headers:n});await c?.body?.cancel()}catch{}return J(e,429,t.message,n)}o(hn,"createLimitResponse");var gn=mr,Ho="__void:usage-signing-key:v1",ka=11520*6e4,yn=new TextEncoder;function $o(e){let t="";for(let r of new Uint8Array(e))t+=String.fromCharCode(r);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}o($o,"base64url");async function Fo(e,t){let r=await crypto.subtle.importKey("raw",yn.encode(t),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",r,yn.encode(e))}o(Fo,"hmac");async function wn(e){return e.get(Ho,{cacheTtl:60})}o(wn,"readUsageSigningKey");function Ko(e,t,r,n){return JSON.stringify([e,t,r,n])}o(Ko,"signedPayload");async function bn(e,t,r,n){return{version:gn,source:t,eventId:r,event:n,signature:$o(await Fo(Ko(gn,t,r,n),e))}}o(bn,"signUsageEvent");function Rn(e,t){e.ANALYTICS.writeDataPoint({indexes:[t.projectId],blobs:[t.projectId,t.type,t.method,String(t.status),t.slug,t.failureKind??""],doubles:[1,t.responseBytes,t.durationMs]})}o(Rn,"recordRequest");function jo(e){if(!e.startsWith("user-"))return null;let t=e.lastIndexOf("-dpl_");return t>4?{projectKey:e.slice(0,t),deployId:e.slice(t+1)}:{projectKey:e,deployId:""}}o(jo,"splitWorkerName");var Vo=2048,Wo=1024;function An(e,t){let r=new TextEncoder().encode(e);if(r.length<=t)return e;let n="\u2026";if(t<3)return"";let s=t-3;for(;s>0&&(r[s]&192)===128;)s--;return new TextDecoder().decode(r.slice(0,s))+n}o(An,"truncateUtf8");function En(e,t){if(!t.workerName)return;let r=jo(t.workerName);if(!r)return;let n=t.url;try{n=new URL(t.url).pathname}catch{}let s=`Void platform: your worker did not respond within ${t.timeoutMs} ms. ${t.method} ${An(n,Wo)} was cut short and returned ${t.status}. The operation may still have side effects; check its outcome before retrying.`;try{e.LOGS.writeDataPoint({indexes:[r.projectKey],blobs:["canceled",JSON.stringify([{level:"error",message:[s],timestamp:Date.now()}]),"[]",An(t.url,Vo),t.method,String(t.status),r.deployId],doubles:[Date.now(),t.status]})}catch{}}o(En,"recordPlatformLog");async function Sn(e,t){let r=await wn(e.ROUTING);if(!r)throw new Error("Usage metering is not initialized. Check the platform API /health endpoint.");let n=crypto.randomUUID();await e.USAGE_QUEUE.send(await bn(r,"dispatch",n,t))}o(Sn,"sendUsageEvent");var nr="__void/platform/disabled/v1",or="disabled";var In="void.app";function Pn(e,t=In){let r=`.${t}`;if(!e.endsWith(r))return null;let n=e.slice(0,-r.length);return!n||n.includes(".")||!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(n)?null:n}o(Pn,"extractSlug");async function _n(e,t){let r=ye(t);if(!(!!r.workersDev&&e.endsWith(`.${r.workersDev.subdomain}.workers.dev`)))return{slug:Pn(e,t.BASE_HOSTNAME),workersDev:!1};let s=await t.ROUTING.get(hr(e));if(s){let i=JSON.parse(s);if(yr(i,r.workersDev)===e)return{slug:i.slug,projectId:i.id,workersDev:!0}}return{slug:null,workersDev:!0}}o(_n,"resolveProjectHostname");function sr(e){return new URL(typeof e=="string"||e instanceof URL?e:e.url).hostname.endsWith(".workers.dev")}o(sr,"isTestHostname");var Q={async match(e,t){return sr(e)?void 0:caches.default.match(e,t)},async put(e,t){sr(e)||await caches.default.put(e,t)},async delete(e,t){return sr(e)?!1:caches.default.delete(e,t)}};var H=class extends Error{static{o(this,"DispatchTimeoutError")}label;constructor(t){super(`Dispatch operation timed out: ${t}`),this.name="DispatchTimeoutError",this.label=t}};function fe(e,t,r){if(!(t>0)||!Number.isFinite(t))return e;let n=null,s=new Promise((i,c)=>{n=setTimeout(()=>{c(new H(r))},t)});return Promise.race([e,s]).finally(()=>{clearTimeout(n)})}o(fe,"withTimeout");async function ir(e,t){let r=t.delayMs>0&&Number.isFinite(t.delayMs),n=t.timeoutMs>0&&Number.isFinite(t.timeoutMs),s=o(async()=>{try{return{ok:!0,value:await e()}}catch(R){return{ok:!1,error:R}}},"run"),i=[],c=o(()=>{let R={id:i.length+1,promise:s()};return i.push(R),R},"startAttempt"),u=null,p=r?new Promise(R=>{u=setTimeout(()=>R({kind:"hedge"}),t.delayMs)}):null,d=null,a=n?new Promise(R=>{d=setTimeout(()=>R({kind:"timeout"}),t.timeoutMs)}):null,f=o(()=>{clearTimeout(u),clearTimeout(d)},"clearTimers"),l=o(R=>{R.promise.then(async $=>{$.ok&&$.value!==null&&await t.discard?.($.value)}).catch(()=>{})},"discardAttempt"),A=o(R=>{f();for(let $ of i)$.id!==R&&l($)},"finish"),h=o(()=>{throw A(),new H(t.label)},"timeout"),y=o(R=>R.promise.then($=>({kind:"attempt",attempt:R,outcome:$})),"waitForAttempt"),b=c(),U=await Promise.race([y(b),...p?[p]:[],...a?[a]:[]]);if(U.kind==="timeout")return h();if(U.kind==="attempt"){if(clearTimeout(u),U.outcome.ok)return A(b.id),U.outcome.value;if(!r)throw A(),U.outcome.error;t.onHedge?.();let R=c(),$=await Promise.race([y(R),...a?[a]:[]]);if($.kind==="timeout")return h();if(A(R.id),$.outcome.ok)return $.outcome.value;throw $.outcome.error}t.onHedge?.();let P=c(),v=await Promise.race([y(b),y(P),...a?[a]:[]]);if(v.kind==="timeout")return h();if(v.outcome.ok&&v.outcome.value!==null)return A(v.attempt.id),v.outcome.value;let M=v.attempt.id===b.id?P:b,W=await Promise.race([y(M),...a?[a]:[]]);if(W.kind==="timeout")return h();if(W.outcome.ok&&W.outcome.value!==null)return A(M.id),W.outcome.value;if(A(),v.outcome.ok||W.outcome.ok)return null;throw v.outcome.error}o(ir,"withDelayedHedge");function Tn(e,t=1e4){return e===void 0?t:Number(e)}o(Tn,"resolveTimeoutMs");async function Jo(e,t){try{return await e.ROUTING.get(`project-suspended:${t}`,{cacheTtl:60})!==null}catch(r){return console.error(`[queue-relay] suspension check failed project="${t}"; relaying`,r),!1}}o(Jo,"isProjectSuspended");var Ln="public, max-age=0, must-revalidate",Nn=1e3,Ce=300,Cn=3600,Bo=120,ie="platform-static-asset-timeout",ce="platform-static-asset-error",he="platform-static-asset-missing",zo=86400;function qo(e,t){return[e.url.replace(/^[a-z][a-z\d+.-]*:\/\/[^/\\?#]*/i,"").replace(/[?#].*$/s,""),t.pathname].some(n=>{let s=n;try{s=decodeURIComponent(n)}catch{}return s.replace(/[\\/]+/g,"/").toLowerCase().startsWith("/health")})}o(qo,"platformHealthExceptionPath");function se(e){let t=new Response(e.body,e);return t.headers.set("Cache-Control",Ln),t.headers.delete(pe),t}o(se,"clientRevalidateResponse");function yt(e,t){return new Response(null,{status:e,headers:{"X-Void-Timeout":t,...e===503?{"Retry-After":"5"}:{}}})}o(yt,"timeoutResponse");function Je(e){return e===ie?yt(503,"static-asset"):new Response(null,{status:503,headers:{"X-Void-Storage-Error":e===he?"static-asset-missing":"static-asset-read","Retry-After":"5"}})}o(Je,"staticAssetFailureResponse");function V(e){return e.headers.get("content-type")?.toLowerCase().split(";",1)[0]?.trim()==="text/event-stream"}o(V,"isEventStreamResponse");function ge(e){return e.headers.get("content-type")?.toLowerCase().split(";",1)[0]?.trim()==="text/html"}o(ge,"isHtmlResponse");function Go(e,t,r){let n=new Response(e,{headers:{"content-type":"application/json","X-VoidPages":"true",Vary:"X-VoidPages","Cache-Control":`public, s-maxage=${t}, max-age=0, must-revalidate`,"x-isr-cache":r}});return z(n.headers),n}o(Go,"jsonCacheResponse");async function cr(e,t,r,n,s){let i=r.headers.get("x-void-page-data"),c=i?ft(i):er(await r.clone().text());c&&await e.put(t,Go(c,n,s))}o(cr,"populateJsonEdgeCache");async function vn(e,t){await Promise.all([tr(e,t.projectId,t.deploymentId,t.host,t.pathname,t.originalUrl),Q.delete(t.htmlKey),Q.delete(t.jsonKey)])}o(vn,"deleteSharedIsrEntry");async function lr(e){let t={response:e.response,pathname:e.pathname,originalUrlVariant:e.originalUrlVariant,applied:!1};if(e.response.status!==404||!e.routing.fallbackRules?.length||e.routing.type==="void"&&e.response.headers.get("X-Void-No-Match")!=="1")return t;let r=ne(e.pathname,e.routing.fallbackRules,e.url.hostname);if(r?.type!=="rewrite")return t;let n=e.originalUrlHeader??e.originalRequestUrl,s=e.originalUrlVariant??_e(e.originalRequestUrl,e.pathname,e.routing.queryAllowlist),i=new URL(e.url.toString());i.pathname=r.destination;let c=ve(e.dispatchReq,i.toString(),u=>u.set("X-Void-Original-URL",n));return{response:e.deadline===void 0?await e.worker.fetch(c):await fe(e.worker.fetch(c),B(e.deadline.startedAt,e.deadline.timeoutMs,"dispatch"),"dispatch"),pathname:r.destination,originalUrlVariant:s,applied:!0}}o(lr,"applyWorkerFallbackRules");function Yo(e,t,r,n,s){if(s)return s;let i=_e(e,t,n.queryAllowlist);return(n.fallbackRules?.length?ne(t,n.fallbackRules,r):void 0)?.type==="rewrite"||new URL(i).search?i:void 0}o(Yo,"buildFallbackOriginalUrlVariant");function ar(e,t,r){let n=ne(e,t.fallbackRules,r);return n?.type==="rewrite"?n.destination:void 0}o(ar,"resolveCachedWfpFallbackPathname");var Qo="Assets have not yet been deployed to this script";function Xo(e){if(e.status!==200||!e.headers.get("content-type")?.toLowerCase()?.startsWith("text/plain"))return!1;let r=e.headers.get("content-length");if(!r)return!1;let n=Number.parseInt(r,10);return n>0&&n<200}o(Xo,"isLikelyCfAssetStub");function B(e,t,r="static-asset"){if(!(t>0&&Number.isFinite(t)))return t;let n=t-(Date.now()-e);if(n<=0)throw new H(r);return n}o(B,"remainingTimeoutBudget");function Un(e){return e>0&&Number.isFinite(e)?Math.min(Nn,e/2):0}o(Un,"staticAssetHedgeDelayMs");async function Be(e,t,r,n){let s=Un(n);try{let i=await ir(()=>e.ROUTING.get(`manifest:${t}`,{cacheTtl:86400}),{delayMs:s,timeoutMs:n,label:"static-asset",onHedge:o(()=>{console.warn(JSON.stringify({event:"wfp-asset-manifest-read-hedge",projectId:r,deploymentId:t,delayMs:s,ts:Date.now()}))},"onHedge")});return i?JSON.parse(i):null}catch(i){throw console.error(JSON.stringify({event:i instanceof H?"wfp-asset-manifest-timeout":"wfp-asset-manifest-read-error",projectId:r,deploymentId:t,error:i instanceof H?void 0:i instanceof Error?i.message:String(i),ts:Date.now()})),i instanceof H?i:new Z(i)}}o(Be,"fetchAssetManifest");async function Zo(e,t,r,n=1e4,s){if(!t.assetManifestId)return null;let i=Date.now(),c=await Be(e,t.assetManifestId,t.projectId,B(i,n));if(!c)return null;let u=t.assetConfig??{not_found_handling:"none"},p=r,d=ue(r,c,u);if((!d||d.notFound)&&s&&s!==r){let f=ue(s,c,u);f&&!f.notFound&&(d=f,p=s)}if(!d)return null;if(d.redirect)return{response:new Response(null,{status:308,headers:{Location:d.redirect}}),pathname:p};let a=await ht(e,d.hash,d.path,t.projectId,t.assetManifestId,B(i,n));return a?{response:new Response(a.body,{status:d.notFound?404:200,headers:a.headers}),pathname:p}:null}o(Zo,"serveWfpAssetFallback");function es(e,t,r){console.log(JSON.stringify({event:"wfp-asset-fallback",projectId:e.projectId,deploymentId:e.assetManifestId,pathname:t,userAgent:r,ts:Date.now()}))}o(es,"logWfpAssetFallback");async function X(e){let t=e.deadline?.startedAt??Date.now(),r=e.deadline?.timeoutMs??e.timeoutMs??1e4;if(V(e.response))return{response:e.response,pathname:e.pathname};if(!Xo(e.response))return{response:e.response,pathname:e.pathname};let n=!1,s;try{if(!(await fe(e.response.clone().text(),B(t,r),"static-asset")).includes(Qo))return{response:e.response,pathname:e.pathname};n=!0,s=await Zo(e.env,e.routing,e.pathname,B(t,r),e.fallbackPathname)}catch(i){if(i instanceof H)return n?{response:Je(ie),failureKind:ie,pathname:e.pathname}:{response:yt(503,"dispatch"),pathname:e.pathname};if(i instanceof Z)return{response:Je(ce),failureKind:ce,pathname:e.pathname};throw i}return s?(es(e.routing,s.pathname,e.userAgent),s):(console.error(JSON.stringify({event:"wfp-asset-fallback-missing",projectId:e.routing.projectId,deploymentId:e.routing.assetManifestId,pathname:e.pathname,ts:Date.now()})),{response:Je(he),failureKind:he,pathname:e.pathname})}o(X,"maybeServeWfpAssetFallback");function ve(e,t,r){let n=new Headers(e.headers);r(n);let s=e.cf;return e.bodyUsed||e.body?.locked?(n.delete("content-length"),n.delete("transfer-encoding"),new Request(t,{method:e.method,headers:n,cf:s})):e.method==="GET"||e.method==="HEAD"?new Request(t,{method:e.method,headers:n,cf:s}):new Request(t,{method:e.method,headers:n,body:e.body,cf:s,duplex:"half"})}o(ve,"rebuildRequest");var hc={async fetch(e,t,r){t=await gr(t);let n=new URL(e.url);if(!t.PLATFORM_INSTALLATION_ID&&n.pathname==="/health"&&e.headers.get("X-Health-Check")==="void-admin")return Response.json({ok:!0});if(t.PLATFORM_HEALTH_PROBE_TOKEN&&n.pathname==="/health"&&e.headers.get("X-Void-Platform-Probe")===t.PLATFORM_HEALTH_PROBE_TOKEN)return Response.json({ok:!0,...t.PLATFORM_APPLICATION?{installationId:t.PLATFORM_INSTALLATION_ID}:{}});if(n.hostname.startsWith(`${At}.`)&&n.hostname===wr(ye(t))&&qo(e,n))return J(e,404,"Not Found",{"Cache-Control":"no-store"});if(t.PLATFORM_TRAFFIC_STATE==="staging"||t.PLATFORM_TRAFFIC_STATE==="sandbox-drain"||t.PLATFORM_INSTALLATION_ID&&await t.ROUTING.get(nr)===or)return zr(e);let s=Date.now(),i=Tn(t.DISPATCH_TIMEOUT_MS);if(n.pathname.startsWith("/__void/")||n.pathname==="/__scheduled"||n.pathname==="/__queue")return J(e,404,"Not Found");let c=await _n(n.hostname,t),u=c.slug;if(c.workersDev&&!c.projectId)return J(e,404,"Not Found");let p=u??`domain:${n.hostname}`,d=await t.ROUTING.get(p,{cacheTtl:60});if(!d)return J(e,404,"Not Found",{"Cache-Control":"public, max-age=30"});let a=JSON.parse(d);if(c.projectId&&c.projectId!==a.projectId)return J(e,404,"Not Found");if(a.zeroTrust&&!await Jr.verify(n.hostname,e.headers.get("Cf-Access-Jwt-Assertion"),a.zeroTrust))return J(e,403,"Cloudflare Access authentication required",{"Cache-Control":"no-store"});let f=o(g=>hn(e,{code:"usage_limit",resource:g,reason:g==="requests"?"monthly_quota":"cpu",message:g==="requests"?"This app has reached its usage allowance. Please contact the app owner or try again later.":"This request exceeded its execution limit. Please try again."},async()=>{let _=a.staticDeploymentId??a.assetManifestId;if(!_)return null;let x=g==="requests"?"/usage-limit.html":"/execution-limit.html",m=(await Be(t,_,a.projectId,2e3))?.[x];return m?ht(t,m,x,a.projectId,_,2e3):null}),"limitResponse");if(a.suspended==="requests_exceeded")return f("requests");if(a.suspended)return Response.json({error:"usage limit exceeded",reason:a.suspended},{status:429,headers:{"Cache-Control":"public, s-maxage=30, max-age=0"}});e.headers.has("X-Void-Original-URL")&&(e=ve(e,e.url,g=>g.delete("X-Void-Original-URL")));let l=n.pathname,A,h=e.headers.get("upgrade")?.toLowerCase()==="websocket"?"websocket":"static",y=o((g,_)=>{let x=V(g)?0:Number(g.headers.get("content-length")??0);Rn(t,{projectId:a.projectId,type:h,method:e.method,status:g.status,responseBytes:x,durationMs:Date.now()-s,slug:u??n.hostname,..._&&{failureKind:_}}),a.userId&&r.waitUntil(Sn(t,{projectId:a.projectId,userId:a.userId,slug:u??n.hostname,requests:1,responseBytes:x,...g.status>=500&&{status:g.status},..._&&{failureKind:_}}));let k=new Response(g.body,g);return k.headers.delete("X-Void-No-Match"),k.headers.delete(pe),k.headers.set("X-Hosted-By","void.cloud"),k},"meter"),b=o(g=>y(Je(g),g),"meterStaticAssetFailure"),U=o(()=>(En(t,{workerName:a.workerName,method:e.method,url:e.url,status:503,timeoutMs:i}),y(yt(503,"dispatch"))),"meterWorkerTimeout"),P,v;if(a.redirectRules?.length){let g=ne(l,a.redirectRules,n.hostname);if(g?.type==="redirect"){let _=He(g.destination,n.search);return y(new Response(null,{status:g.status,headers:{Location:_}}))}g?.type==="rewrite"&&(v=e.url,P=_e(e.url,l,a.queryAllowlist),l=g.destination,n.pathname=l)}let M=e;if(v&&(M=ve(e,n.toString(),g=>g.set("X-Void-Original-URL",v))),a.hashedAssetsPrefix&&ur(e)){let g="/"+a.hashedAssetsPrefix+"/";if(l.startsWith(g)){let _=new URL(n.toString());_.search="",_.searchParams.set("_p",a.projectId);let x=new Request(_.toString()),k=["cache-control","content-type","content-encoding","content-length","content-range","accept-ranges","transfer-encoding"],m=o((E,T)=>{let D=Y(E,l,a.headerRules);if(D!==E)for(let S of k){let C=E.headers.get(S);C===null?D.headers.delete(S):D.headers.set(S,C)}return y(D,T)},"finalizeAsset"),L=Q,N=await L.match(x);if(N?.headers.get("Cache-Control")?.includes("immutable")&&On(N)){if(!a.staticDeploymentId){let E=await X({env:t,routing:a,pathname:l,response:N,userAgent:e.headers.get("user-agent"),timeoutMs:i});if(E.response!==N){if(me(E.response)){let T=new Response(E.response.body,E.response);T.headers.set("Cache-Control","public, max-age=31536000, immutable"),z(T.headers);let D=T.clone();return r.waitUntil(L.delete(x).then(()=>L.put(x,D))),m(T,E.failureKind)}return r.waitUntil(L.delete(x)),m(E.response,E.failureKind)}}return m(N)}if(N&&await L.delete(x),a.staticDeploymentId){let E=Date.now(),T;try{T=await Be(t,a.staticDeploymentId,a.projectId,B(E,i))}catch(w){if(w instanceof H)return b(ie);if(w instanceof Z)return b(ce);throw w}if(!T)return b(he);let D=l,S=T[l];if(!S){let w=Ie(l);w!==l&&T[w]&&(D=w,S=T[w])}let C;if(S)try{let w=await ht(t,S,D,a.projectId,a.staticDeploymentId,B(E,i));if(!w)return xn(a,D,S),b(he);C=w}catch(w){if(w instanceof H)return b(ie);if(w instanceof Z)return b(ce);throw w}else C=J(e,404,"Not Found");if(me(C)){let w=new Response(C.body,C);return w.headers.set("Cache-Control","public, max-age=31536000, immutable"),z(w.headers),r.waitUntil(L.put(x,w.clone())),m(w)}return m(C)}try{let E=gt(t,a),T=Date.now(),D=await fe(E.fetch(M),B(T,i),"static-asset"),S=await X({env:t,routing:a,pathname:l,response:D,userAgent:e.headers.get("user-agent"),deadline:{startedAt:T,timeoutMs:i}});D=S.response;let C=S.failureKind;if(me(D)){let w=new Response(D.body,D);return w.headers.set("Cache-Control","public, max-age=31536000, immutable"),z(w.headers),r.waitUntil(L.put(x,w.clone())),m(w,C)}return m(D,C)}catch(E){if(E instanceof H)return b(ie);if(E instanceof Error&&E.message.includes("Worker exceeded"))return y(await f("execution"));throw E}}}if(a.ssr===!0&&(a.type!=="framework"||pt(e))&&ns(l,a.pages,a.revalidate,a.pathRevalidate)&&(a.revalidate||a.pages?.length)){let g=We(a.pages,a.revalidate,a.pathRevalidate,l);if(g>0&&e.method==="GET"&&!e.headers.has("Range")&&!Ve(e)){let _=e.headers.has("X-VoidPages"),x=a.version??"legacy",k=Q,m=Yo(e.url,l,n.hostname,a,P),L=qt(e.url,new URL(e.url).pathname,a.queryAllowlist),N=mn(e,l,x,m),E=rr(e,l,x,m);if(A={projectId:a.projectId,deploymentId:x,host:n.hostname,pathname:l,originalUrl:m,htmlKey:N,jsonKey:E},_){let T=await k.match(E);if(T&&je(T))return h="isr",y(se(T));T&&await k.delete(E)}else{let T=o(async()=>{await vn(t,A)},"purgePoisonedIsrEntry"),D=await k.match(N);if(D&&je(D)){h="isr";let O=await X({env:t,routing:a,pathname:l,response:D,userAgent:e.headers.get("user-agent"),timeoutMs:i,fallbackPathname:ar(l,a,n.hostname)});return O.response!==D?(r.waitUntil(T()),y(O.response.ok?se(O.response):O.response,O.failureKind)):y(se(D))}D&&await k.delete(N);let S=await dn(t,a.projectId,x,n.hostname,l,m);if(S){let O=Qt(S),j=Xt(S,O),le=await X({env:t,routing:a,pathname:l,response:j,userAgent:e.headers.get("user-agent"),timeoutMs:i,fallbackPathname:ar(l,a,n.hostname)});if(le.response!==j)return r.waitUntil(T()),h="isr",y(le.response.ok?se(le.response):le.response,le.failureKind);if(O){let ke=j.clone(),Ge=M;if(L){let Ye=new URL(M.url);Ye.search=m?new URL(m).search:"",Ge=ve(M,Ye.toString(),Hn=>{v&&m&&Hn.set("X-Void-Original-URL",m)})}r.waitUntil(rs(t,a,Ge,n.hostname,l,g,N,E,S.createdAt+S.ttl*1e3,m,i).then(async Ye=>{Ye||await k.put(N,ke)}))}return h="isr",O||r.waitUntil(k.put(N,j.clone())),y(se(j))}h="isr";let C=gt(t,a),w=Date.now(),I;try{I=await fe(C.fetch(M),B(w,i,"dispatch"),"dispatch")}catch(O){if(O instanceof H)return U();throw O}let ee=V(I),qe,wt=l,bt=!1;if(!ee){let O=await X({env:t,routing:a,pathname:l,response:I,userAgent:e.headers.get("user-agent"),deadline:{startedAt:w,timeoutMs:i}});I=O.response,qe=O.failureKind,ee=V(I)}if(!ee){let O;try{O=await lr({response:I,worker:C,dispatchReq:M,routing:a,pathname:l,url:n,originalRequestUrl:e.url,originalUrlHeader:v,originalUrlVariant:m,deadline:{startedAt:w,timeoutMs:i}})}catch(j){if(j instanceof H)return U();throw j}if(O.applied&&(bt=!0,wt=O.pathname,I=O.response,ee=V(I),!ee)){let j=await X({env:t,routing:a,pathname:O.pathname,response:I,userAgent:e.headers.get("user-agent"),deadline:{startedAt:w,timeoutMs:i}});I=j.response,qe=j.failureKind,ee=V(I)}}if(ee)return y(I);let xe=Te(I,g);if(!L&&xe>0&&I.status===200&&(a.type!=="framework"||ge(I))&&!G(wt)&&!oe(I)&&(!bt||dr(a.pages,wt,I,a.pathRevalidate))){r.waitUntil(mt(t,a.projectId,x,n.hostname,l,I,xe,m)),r.waitUntil(cr(k,E,I,xe,"HIT"));let O=new Headers(I.headers);O.set("Cache-Control",`public, s-maxage=${xe}, max-age=0, must-revalidate`),O.set("x-isr-cache","MISS"),z(O),O.delete("x-void-page-data"),O.delete("set-cookie");let j=new Headers(O);j.set("x-isr-cache","HIT");let le=new Response(I.clone().body,{status:I.status,headers:j});r.waitUntil(k.put(N,le.clone()));let ke=new Headers(O);ke.set("Cache-Control",Ln),ke.delete(pe);let Ge=new Response(I.body,{status:I.status,headers:ke});return y(Ge,qe)}return I.status===200&&!bt&&(xe===0||oe(I)||a.type==="framework"&&!ge(I))&&r.waitUntil(T()),y(I,qe)}}}let R=l,$=os(e,R,a)?await ss(t,R,a,i):void 0,Mn=$===!0,ze;if(Mn){let g=new URL(_e(e.url,new URL(e.url).pathname,Gt(a.queryAllowlist)));g.searchParams.set("_v",String(a.version));let _=new Request(g.toString());ze=_;let x=Q,k=await x.match(_);if(k&&On(k)){if(h="static",!a.staticDeploymentId){let m=await X({env:t,routing:a,pathname:l,response:k,userAgent:e.headers.get("user-agent"),timeoutMs:i,fallbackPathname:ar(l,a,n.hostname)});if(m.response!==k){if(me(m.response)){let L=Y(m.response,m.pathname,a.headerRules),N=new Response(L.clone().body,L);N.headers.set("Cache-Control","public, s-maxage=31536000, max-age=0, must-revalidate"),z(N.headers);let E=N.clone();return r.waitUntil(x.delete(_).then(()=>x.put(_,E))),y(se(L))}return r.waitUntil(x.delete(_)),y(m.response,m.failureKind)}}return y(se(k))}k&&await x.delete(_)}if(a.staticDeploymentId){let g=Date.now(),_;try{_=await Be(t,a.staticDeploymentId,a.projectId,B(g,i))}catch(S){if(S instanceof H)return b(ie);if(S instanceof Z)return b(ce);throw S}if(!_)return b(he);let x=a.assetConfig??{},k=l,m=ue(l,_,x);if(!m&&a.fallbackRules?.length){let S=ne(l,a.fallbackRules,n.hostname);S?.type==="rewrite"&&(l=S.destination,n.pathname=l,m=ue(l,_,x))}if(!m)return y(J(e,404,"Not Found"));if(m.redirect)return y(new Response(null,{status:308,headers:{Location:m.redirect}}));let L;try{L=await ht(t,m.hash,m.path,a.projectId,a.staticDeploymentId,B(g,i))}catch(S){if(S instanceof H)return y(yt(m.notFound?404:503,"static-asset"),m.notFound?void 0:ie);if(S instanceof Z)return y(m.notFound?J(e,404,"Not Found"):Je(ce),m.notFound?void 0:ce);throw S}if(!L)return m.notFound?y(J(e,404,"Not Found")):(xn(a,m.path,m.hash),b(he));let N=m.notFound?404:200,E=new Response(L.body,{status:N,headers:L.headers}),T=Y(E,l,a.headerRules),D=ze??(ur(e)?new Request(`${n.origin}${k}?_v=${a.staticDeploymentId}`):void 0);if(D&&me(T)){let S=new Response(T.clone().body,T);S.headers.set("Cache-Control","public, s-maxage=31536000, max-age=0, must-revalidate"),z(S.headers),r.waitUntil(Q.put(D,S.clone()))}return y(se(T))}let pr=gt(t,a);try{let g=M;g.bodyUsed&&(g=ve(g,g.url,()=>{}));let x=g.method!=="GET"&&g.method!=="HEAD"&&a.fallbackRules?.length?g.clone():g,k=Date.now(),m=await fe(pr.fetch(g),B(k,i,"dispatch"),"dispatch"),L=V(m),N;if(!L){let C=await X({env:t,routing:a,pathname:l,response:m,userAgent:e.headers.get("user-agent"),deadline:{startedAt:k,timeoutMs:i}});m=C.response,N=C.failureKind,L=V(m)}let E=!1;if(!L){let C=await lr({response:m,worker:pr,dispatchReq:x,routing:a,pathname:l,url:n,originalRequestUrl:e.url,originalUrlHeader:v,originalUrlVariant:P,deadline:{startedAt:k,timeoutMs:i}});if(C.applied&&(E=!0,l=C.pathname,n.pathname=l,P=C.originalUrlVariant,m=C.response,L=V(m),!L)){let w=await X({env:t,routing:a,pathname:l,response:m,userAgent:e.headers.get("user-agent"),deadline:{startedAt:k,timeoutMs:i}});m=w.response,N=w.failureKind,L=V(m)}}if(A&&m.status===200&&!E&&(Te(m,We(a.pages,a.revalidate,a.pathRevalidate,A.pathname))===0||oe(m)||a.type==="framework"&&!ge(m))&&r.waitUntil(vn(t,A)),ze&&!E&&me(m)){let C=new Response(m.body,m);C.headers.delete("x-void-page-data");let w=Y(C,l,a.headerRules),I=new Response(w.clone().body,w);return I.headers.set("Cache-Control","public, s-maxage=31536000, max-age=0, must-revalidate"),z(I.headers),r.waitUntil(Q.put(ze,I.clone())),y(se(w),N)}let T=l===R?$:void 0,D=!N&&Dn(a,T)&&(T===!1||m.status>=500),S=Ht(l,a.ssr,D);if(S&&(h=S),(a.revalidate||a.pages?.length)&&!L&&!e.headers.has("X-VoidPages")&&e.method==="GET"&&!e.headers.has("Range")&&(a.type!=="framework"||pt(e))&&!Ve(e)){let C=We(a.pages,a.revalidate,a.pathRevalidate,l),w=C>0?Te(m,C):0;if(w>0&&m.status===200&&a.ssr&&!G(l)&&!Me(l)&&(a.type!=="framework"||ge(m))&&!oe(m)&&(!E||dr(a.pages,l,m,a.pathRevalidate))){let I=a.version??"legacy";r.waitUntil(mt(t,a.projectId,I,n.hostname,l,m,w,P));let ee=rr(e,l,I,P);r.waitUntil(cr(Q,ee,m,w,"HIT"))}}if(m.headers.has("x-void-page-data")){let C=new Response(m.body,m);return C.headers.delete("x-void-page-data"),y(Y(C,l,a.headerRules),N)}return y(Y(m,l,a.headerRules),N)}catch(g){if(g instanceof H){if(g.label==="static-asset")return b(ie);let _=Ht(l,a.ssr,Dn(a,l===R?$:void 0));return _&&(h=_),U()}if(g instanceof Z)return b(ce);if(g instanceof Error&&g.message.includes("Worker exceeded"))return y(await f("execution"));throw g}},async queue(e,t){if(t.PLATFORM_TRAFFIC_STATE==="staging"||t.PLATFORM_TRAFFIC_STATE==="sandbox-drain"){console.warn(`[queue-relay] platform traffic is staging; retrying queue="${e.queue}" in ${Ce}s`),e.retryAll({delaySeconds:Ce});return}if(t.PLATFORM_INSTALLATION_ID){let d;try{d=await t.ROUTING.get(nr)}catch(a){let f=a instanceof Error?a.message:String(a);console.error(`[queue-relay] platform traffic gate read failed; retrying queue="${e.queue}" in ${Ce}s error=${JSON.stringify(f)}`),e.retryAll({delaySeconds:Ce});return}if(d===or){console.warn(`[queue-relay] platform traffic is disabled; retrying queue="${e.queue}" in ${Ce}s`),e.retryAll({delaySeconds:Ce});return}}let r=await t.ROUTING.get(`queue:${e.queue}`,{cacheTtl:60});if(!r){console.error(`[queue-relay] missing routing entry for queue="${e.queue}"; retrying all messages`),e.retryAll();return}let{workerName:n,projectId:s,queueName:i,proxyToken:c}=JSON.parse(r);if(s&&await Jo(t,s)){console.warn(`[queue-relay] project suspended; retrying queue="${e.queue}" in ${Cn}s`),e.retryAll({delaySeconds:Cn});return}let u=Array.from(e.messages,d=>({id:d.id,timestamp:d.timestamp.toISOString(),body:d.body,attempts:d.attempts})),p=t.DISPATCH.get(n);try{let d=JSON.stringify({queue:i,messages:u}),a={"Content-Type":"application/json"};c&&(a["x-void-internal"]=c);let f=await p.fetch(new Request("https://internal/__void/queue",{method:"POST",headers:a,body:d}));if(f.status===404&&(f=await p.fetch(new Request("https://internal/__queue",{method:"POST",headers:a,body:d}))),!f.ok){let h="";try{h=(await f.clone().text()).slice(0,200)}catch{}console.error(`[queue-relay] relay failed queue="${i}" worker="${n}" status=${f.status} body=${JSON.stringify(h)}`),f.status===401||f.status===403?e.retryAll({delaySeconds:Bo}):e.retryAll();return}let l;try{l=await f.json()}catch{e.ackAll();return}if(!l.decisions){l.ok!==!1?e.ackAll():e.retryAll();return}let A=new Map(e.messages.map(h=>[h.id,h]));for(let[h,y]of Object.entries(l.decisions)){let b=A.get(h);b&&(y.action==="ack"?b.ack():y.action==="retry"&&b.retry(y.delaySeconds!=null?{delaySeconds:y.delaySeconds}:void 0))}l.ok===!1&&e.retryAll()}catch(d){let a=d instanceof Error?d.message:String(d);console.error(`[queue-relay] relay threw queue="${i}" worker="${n}" error=${JSON.stringify(a)}`),e.retryAll()}}},Z=class extends Error{static{o(this,"StaticAssetReadError")}constructor(t){super("Static asset storage read failed",{cause:t}),this.name="StaticAssetReadError"}};function xn(e,t,r){console.error(JSON.stringify({event:"static-asset-missing",store:r.startsWith("!")?"r2":"kv",projectId:e.projectId,deploymentId:e.staticDeploymentId??e.assetManifestId,pathname:t,ts:Date.now()}))}o(xn,"logStaticAssetMissing");async function ht(e,t,r,n,s,i=1e4){let c=Un(i),u=Date.now(),p=!1;try{let d=await ir(()=>ts(e,t,r,n),{delayMs:c,timeoutMs:i,label:"static-asset",discard:o(async a=>{await a.body?.cancel()},"discard"),onHedge:o(()=>{p=!0,console.warn(JSON.stringify({event:"static-asset-read-hedge",store:t.startsWith("!")?"r2":"kv",projectId:n,deploymentId:s,pathname:r,delayMs:c,ts:Date.now()}))},"onHedge")});return p&&console.warn(JSON.stringify({event:"static-asset-read-hedge-result",store:t.startsWith("!")?"r2":"kv",projectId:n,deploymentId:s,pathname:r,outcome:d===null?"miss":"hit",elapsedMs:Date.now()-u,ts:Date.now()})),d}catch(d){throw console.error(JSON.stringify({event:d instanceof H?"static-asset-timeout":"static-asset-read-error",store:t.startsWith("!")?"r2":"kv",projectId:n,deploymentId:s,pathname:r,hedged:p,elapsedMs:Date.now()-u,error:d instanceof H?void 0:d instanceof Error?d.message:String(d),ts:Date.now()})),d instanceof H?d:new Z(d)}}o(ht,"fetchStaticAsset");async function ts(e,t,r,n){let s=t.startsWith("!"),i=s?t.slice(1):t,c=n?`assets/${n}/${i}`:null,u=`assets/${i}`;if(s){let d=c?await e.STATIC_ASSETS_R2.get(c)??await e.STATIC_ASSETS_R2.get(u):await e.STATIC_ASSETS_R2.get(u);if(!d)return null;let a=$e(d.httpMetadata?.contentType,r),f={ETag:d.httpEtag,...d.size?{"Content-Length":String(d.size)}:{}};return a&&(f["Content-Type"]=a),new Response(d.body,{headers:f})}let p=o(async d=>{let{value:a,metadata:f}=await e.STATIC_ASSETS.getWithMetadata(d,{type:"arrayBuffer",cacheTtl:86400});if(!a)return null;let l=$e(f?.ct,r),A={"Content-Length":String(a.byteLength)};return l&&(A["Content-Type"]=l),new Response(a,{headers:A})},"readKvAsset");return(c?await p(c):null)??p(u)}o(ts,"fetchStaticAssetOnce");function gt(e,t){return t.limits?e.DISPATCH.get(t.workerName,{},{limits:t.limits}):e.DISPATCH.get(t.workerName)}o(gt,"getWorker");async function rs(e,t,r,n,s,i,c,u,p,d,a=1e4){try{let f=gt(e,t),l=Date.now(),A=ve(r,r.url,R=>R.delete("X-VoidPages")),h=await fe(f.fetch(A),B(l,a,"dispatch"),"dispatch");if(V(h))return!1;let y=h.status,b=await lr({response:h,worker:f,dispatchReq:A,routing:t,pathname:s,url:new URL(A.url),originalRequestUrl:r.url,originalUrlHeader:r.headers.get("X-Void-Original-URL")??void 0,originalUrlVariant:d??void 0,deadline:{startedAt:l,timeoutMs:a}});if(h=b.response,V(h)||(h=(await X({env:e,routing:t,pathname:b.pathname,response:h,userAgent:r.headers.get("user-agent"),deadline:{startedAt:l,timeoutMs:a}})).response,V(h)))return!1;let P=Te(h,i),v=Q,M=o(async()=>{await tr(e,t.projectId,t.version??"legacy",n,s,d),await v.delete(c),await v.delete(u)},"evictSharedEntry"),W=b.applied?b.pathname:s;if(P>0&&h.status===200&&(t.type!=="framework"||ge(h))&&!G(W)&&!oe(h)&&(!b.applied||dr(t.pages,W,h,t.pathRevalidate))){await mt(e,t.projectId,t.version??"legacy",n,s,h,P,d);let R=new Headers(h.headers);return R.set("x-isr-cache","HIT"),R.set("Cache-Control",`public, s-maxage=${P}, max-age=0, must-revalidate`),z(R),R.delete("set-cookie"),R.delete("x-void-page-data"),await v.put(c,new Response(h.clone().body,{status:h.status,headers:R})),await cr(v,u,h,P,"HIT"),!0}else if(h.status===200&&!G(W)&&!b.applied&&(P===0||oe(h)||t.type==="framework"&&!ge(h))){try{await M()}catch(R){console.error("ISR privacy eviction failed:",R)}return!0}else if((y===404||y===410)&&Date.now()-p>zo*1e3){try{await M()}catch(R){console.error("ISR stale-entry eviction failed:",R)}return!0}return!1}catch(f){return console.error("ISR revalidation failed:",f),!1}}o(rs,"revalidateInBackground");function ns(e,t,r,n){return G(e)?!1:Me(e)?fn(t,r,n,e):!0}o(ns,"isIsrEligiblePath");function dr(e,t,r,n){return ge(r)&&pn(e,t,n)}o(dr,"isFallbackTargetCacheable");function ur(e){return e.method==="GET"&&!e.headers.has("Range")&&!e.headers.has("X-VoidPages")&&!Ve(e)}o(ur,"isSharedStaticCacheRequestEligible");function os(e,t,r){return!!(ur(e)&&r.version&&!G(t)&&(Me(t)||!r.ssr))}o(os,"isStaticCacheRequestEligible");async function ss(e,t,r,n){if(r.staticDeploymentId||!r.ssr)return!0;if(r.assetManifestId)try{let s=await Be(e,r.assetManifestId,r.projectId,Math.min(n,Nn));if(!s)return;if(Object.hasOwn(s,t))return!0;let i=Ie(t);return i!==t&&Object.hasOwn(s,i)?!0:(r.assetConfig?.html_handling??"auto-trailing-slash")!=="none"&&(kn(s,t)||kn(s,i))?void 0:!1}catch{return}}o(ss,"isKnownStaticAssetPath");function kn(e,t){let r=[`${t}.html`,`${t}/index.html`];if(t.endsWith(".html")){let n=t.slice(0,-5);r.push(`${n}/index.html`),n.endsWith("/index")&&r.push(`${n.slice(0,-6)}.html`)}return r.some(n=>Object.hasOwn(e,n))}o(kn,"hasHtmlHandlingSource");function Dn(e,t){if(!e.assetManifestId)return!0;let r=e.assetConfig?.run_worker_first;return r===!0||Array.isArray(r)&&r.includes("/**")?!0:t===!1&&(e.assetConfig?.not_found_handling??"none")==="none"}o(Dn,"workerAnsweredPath");function me(e){return e.status===200&&!V(e)&&!oe(e)}o(me,"isStaticCacheResponseEligible");function On(e){return je(e)&&me(e)}o(On,"isCurrentStaticCacheResponse");export{hc as default,V as isEventStreamResponse,ge as isHtmlResponse,ve as rebuildRequest};
65
+ </html>`}o(fn,"renderDefaultErrorPage");function mn(e){let t=new Headers({"Cache-Control":"no-store","Retry-After":"30"});return mt(e)?(t.set("Content-Type","text/html; charset=utf-8"),new Response(e.method==="HEAD"?null:fn(503,"Temporarily unavailable",!0),{status:503,headers:t})):new Response(e.method==="HEAD"?null:"Platform disabled",{status:503,headers:t})}o(mn,"createMaintenanceResponse");function mt(e){if(e.method!=="GET"&&e.method!=="HEAD")return!1;let t=new URL(e.url);if(X(t.pathname)||/\/[^/]+\.[^/]+$/.test(t.pathname))return!1;let r=e.headers.get("sec-fetch-dest");if(r&&r!=="document"&&r!=="empty")return!1;let n=e.headers.get("accept");return!n||n.includes("text/html")||n.includes("*/*")}o(mt,"shouldServeHtmlErrorPage");function J(e,t,r,n){if(!mt(e))return new Response(r,{status:t,headers:n});let s=new Headers(n);return s.set("content-type","text/html; charset=utf-8"),new Response(e.method==="HEAD"?null:fn(t,r),{status:t,headers:s})}o(J,"createErrorResponse");function er(e){let t=e;return t==="/"?t="__index__":(t=t.startsWith("/")?t.slice(1):t,t.endsWith("/")&&(t=t.slice(0,-1))),t}o(er,"normalizeIsrPath");function Bo(e){return e==="__index__"?"/":`/${e}`}o(Bo,"denormalizeIsrPath");function qo(e){return Bo(er(e))}o(qo,"canonicalIsrPathname");function Go(e,t,r){return r!==void 0?`${e}/isr/${t}/${r}/`:`${e}/isr/`}o(Go,"versionedIsrCachePrefix");function gn(e,t){return Go(e,"v3",t)}o(gn,"isrCachePrefix");var yn="#rw=";function je(e,t,r,n,s){let i=`${gn(e,t)}${r}/${er(n)}`;return s?`${i}${yn}${An(s)}`:i}o(je,"isrCacheKey");function wn(e,t,r,n){return`${gn(e,t)}${r}/${er(n)}${yn}`}o(wn,"isrCacheVariantPrefix");var Yo=0xcbf29ce484222325n,Qo=0x100000001b3n,hn=0xffffffffffffffffn;function An(e){let t=new TextEncoder().encode(e),r=Yo;for(let n=0;n<t.length;n++)r=(r^BigInt(t[n]))&hn,r=r*Qo&hn;return r.toString(16).padStart(16,"0")}o(An,"hashOriginalUrl");function tr(e,t,r,n,s){return Xo(e,t,r,n,s?An(s):null)}o(tr,"isrEdgeCacheUrl");function Xo(e,t,r,n,s){let i=qo(t),c=new URL(`https://${e}${i}`);return n==="json"&&c.searchParams.set("__void","json"),c.searchParams.set("__void_isr",r),s&&c.searchParams.set("__void_orig",s),c.toString()}o(Xo,"buildIsrEdgeCacheUrl");var Ie=3,Pe="x-void-shared-cache-policy";function B(e){e.set(Pe,String(Ie))}o(B,"markSharedCachePolicy");function Je(e){return e.headers.get(Pe)===String(Ie)}o(Je,"hasCurrentSharedCachePolicy");var Zo=/<script\b[^>]*\bid=(["'])__VOID_PAGE_DATA__\1[^>]*>([\s\S]*?)<\/script>/i,es=new Set(["cache-control","x-isr-cache","x-void-page-data","set-cookie"]);function Te(e,t,r){let n=new URL(e);if(!n.search)return n.toString();let s=bn(r,t);if(s.size===0)return n.search="",n.toString();let i=[...new Set(n.searchParams.keys())].filter(p=>s.has(p)).sort(),c=new URLSearchParams;for(let p of i)for(let d of n.searchParams.getAll(p))c.append(p,d);let l=c.toString();return n.search=l?`?${l}`:"",n.toString()}o(Te,"buildVariantOriginalUrl");function rr(e,t,r){let n=new URL(e);if(!n.search)return!1;let s=bn(r,t);for(let i of n.searchParams.keys())if(!s.has(i))return!0;return!1}o(rr,"hasUnlistedQueryParams");function nr(e){if(!e)return;let t=Object.fromEntries(Object.entries(e).filter(([r])=>!r.includes("*")));return Object.keys(t).length>0?t:void 0}o(nr,"exactQueryAllowlist");function bn(e,t){if(!e)return new Set;for(let[r,n]of Object.entries(e))if(ue(r,t))return new Set(n);return new Set}o(bn,"resolveQueryAllowlist");function or(e,t){let r=new TextEncoder().encode(JSON.stringify(e)),n=new ArrayBuffer(4+r.byteLength+t.byteLength);return new DataView(n).setUint32(0,r.byteLength,!0),new Uint8Array(n,4,r.byteLength).set(r),new Uint8Array(n,4+r.byteLength).set(new Uint8Array(t)),n}o(or,"packIsrValue");function Rn(e){if(e.byteLength<4)return null;let r=new DataView(e).getUint32(0,!0);if(e.byteLength<4+r)return null;try{let n=new Uint8Array(e,4,r),s=JSON.parse(new TextDecoder().decode(n));if(!s||typeof s!="object"||Array.isArray(s))return null;let i={};for(let[c,l]of Object.entries(s)){if(typeof l!="string")return null;i[c]=l}return{headers:i,body:e.slice(4+r)}}catch{return null}}o(Rn,"unpackIsrValue");function En(e,t){if(!e||!t)return null;let r=Rn(e);if(!r||!Number.isInteger(t.s)||t.s<200||t.s>599||!Number.isFinite(t.c)||t.c<=0||!Number.isFinite(t.t)||t.t<=0||t.p!==Ie)return null;try{new Headers(r.headers)}catch{return null}return{body:new ReadableStream({start(n){n.enqueue(new Uint8Array(r.body)),n.close()}}),status:t.s,headers:r.headers,createdAt:t.c,ttl:t.t}}o(En,"decodeIsrCacheEntry");function sr(e,t=Date.now()){return t-e.createdAt>e.ttl*1e3}o(sr,"isStale");function ir(e,t,r=Date.now()){let n=new Headers(e.headers);if(n.set("x-isr-cache",t?"STALE":"HIT"),t)n.set("Cache-Control",`public, s-maxage=${Math.min(10,e.ttl)}, max-age=0, must-revalidate`);else{let s=Math.max(0,Math.floor((e.createdAt+e.ttl*1e3-r)/1e3));n.set("Cache-Control",`public, s-maxage=${s}, max-age=0, must-revalidate`)}return B(n),new Response(e.body,{status:e.status,headers:n})}o(ir,"isrCacheResponse");function Ce(e,t){let r=e.headers.get("x-revalidate");if(r===null)return t;let n=Number.parseInt(r,10);return Number.isNaN(n)||n<0?t:n}o(Ce,"resolveRevalidateTtl");function ts(e){return e.headers.get("Accept")?.toLowerCase().split(",").some(t=>t.split(";",1)[0]?.trim()==="text/event-stream")??!1}o(ts,"acceptsEventStream");function ze(e){return e.headers.has("Cookie")||e.headers.has("Authorization")||e.headers.has("Cf-Access-Jwt-Assertion")||ts(e)}o(ze,"shouldBypassIsr");function ht(e){if(e.method!=="GET"||e.headers.has("X-VoidPages")||new URL(e.url).pathname.startsWith("/__void/")||!e.headers.get("accept")?.split(",").some(s=>s.trim().toLowerCase().split(";",1)[0]==="text/html"))return!1;let r=e.headers.get("sec-fetch-mode")?.toLowerCase();if(r&&r!=="navigate")return!1;let n=e.headers.get("sec-fetch-dest")?.toLowerCase();return!(n&&n!=="document"||e.headers.has("rsc")||e.headers.has("x-nextjs-data"))}o(ht,"isFrameworkDocumentRequest");function ie(e){if(e.headers.get("Vary")?.split(",").some(r=>{let n=r.trim().toLowerCase();return n!==""&&n!=="x-voidpages"})||e.headers.has("Set-Cookie"))return!0;let t=e.headers.get("Cache-Control");return t?t.split(",").some(r=>{let n=r.split("=",1)[0]?.trim().toLowerCase();return n==="private"||n==="no-store"||n==="no-cache"}):!1}o(ie,"hasSharedCacheOptOut");function We(e,t){if(e==null)return 0;if(typeof e=="number")return e;for(let[r,n]of Object.entries(e))if(q(r,t))return n;return 0}o(We,"resolvePathTtl");function Be(e,t,r,n){if(e){for(let s of e)if(q(s.pattern,n))return s.revalidate===void 0?We(r,n):s.revalidate>0?s.revalidate:0}return We(t,n)}o(Be,"resolvePageTtl");function ar(e){let t={};return e.headers.forEach((r,n)=>{es.has(n.toLowerCase())||(t[n]=r)}),t}o(ar,"serializeHeaders");function gt(e){try{let t=JSON.parse(e);return t.deferred===void 0&&t.deferredKeys===void 0?e:null}catch{return null}}o(gt,"normalizePageDataForJsonCache");function cr(e){let t=e.match(Zo);return t?gt(t[2]):null}o(cr,"extractPageDataFromHtml");async function _n(e,t,r,n,s,i){let c=je(t,r,n,s,i);try{let{value:l,metadata:p}=await e.ISR_CACHE.getWithMetadata(c,"arrayBuffer");return En(l,p)}catch{return null}}o(_n,"readIsrCache");async function lr(e,t,r,n,s,i){let c=je(t,r,n,s,i);await e.ISR_CACHE.delete(c)}o(lr,"deleteIsrCache");async function yt(e,t,r,n,s,i,c,l){let p=je(t,r,n,s,l),d=i.clone(),a=ar(d),f=d.status;if(l&&!await rs(e,t,r,n,s,p))return;let u=await d.arrayBuffer(),E=or(a,u);await e.ISR_CACHE.put(p,E,{metadata:{s:f,c:Date.now(),t:c,p:Ie}})}o(yt,"writeIsrCache");async function rs(e,t,r,n,s,i){let c=wn(t,r,n,s),l=await e.ISR_CACHE.list({prefix:c,limit:1e3});return l.keys.length<Dr?!0:l.keys.some(p=>p.name===i)}o(rs,"isVariantWriteAllowed");function In(e,t,r){return e.revalidate===void 0?We(t,r):e.revalidate>0?e.revalidate:0}o(In,"matchedPageTtl");function ns(e){return!/[:{*]/.test(e)}o(ns,"isLiteralPattern");function Pn(e,t,r){if(!e)return!1;for(let n of e)if(q(n.pattern,t))return ns(n.pattern)&&In(n,r,t)>0;return!1}o(Pn,"matchesLiteralPage");function Sn(e){return e.includes("*")||e.includes("{.+}")}o(Sn,"isBroadCatchAll");function Tn(e,t,r,n){if(e&&e.length>0){for(let s of e)if(q(s.pattern,n))return In(s,r,n)>0&&!Sn(s.pattern)}if(t&&typeof t=="object"){for(let[s,i]of Object.entries(t))if(q(s,n))return i>0&&!Sn(s)}return!1}o(Tn,"isDottedPathIsrEligible");function Cn(e,t,r,n){return new Request(tr(new URL(e.url).hostname,t,r,"html",n),{method:"GET"})}o(Cn,"isrEdgeCacheKey");function dr(e,t,r,n){return new Request(tr(new URL(e.url).hostname,t,r,"json",n),{method:"GET"})}o(dr,"isrEdgeCacheKeyJson");async function vn(e,t,r){let n=new Headers({"Cache-Control":"no-store",Vary:"Accept, Sec-Fetch-Dest, X-VoidPages"}),s=Dt(t),i=s.headers.get("retry-after");if(i&&n.set("Retry-After",i),e.headers.get("X-VoidPages")==="true"||!mt(e))return n.set("Content-Type","application/json"),new Response(e.method==="HEAD"?null:s.body,{status:429,headers:n});try{let c=await r?.();if(c?.ok&&c.headers.get("content-type")?.includes("text/html"))return n.set("Content-Type","text/html; charset=utf-8"),n.set("X-Content-Type-Options","nosniff"),n.set("Content-Security-Policy","default-src 'none'; style-src 'unsafe-inline'; img-src data:; base-uri 'none'; form-action 'none'"),e.method==="HEAD"&&await c.body?.cancel(),new Response(e.method==="HEAD"?null:c.body,{status:429,headers:n});await c?.body?.cancel()}catch{}return J(e,429,t.message,n)}o(vn,"createLimitResponse");var kn=Lr,os="__void:usage-signing-key:v1",jc=11520*6e4,xn=new TextEncoder;function ss(e){let t="";for(let r of new Uint8Array(e))t+=String.fromCharCode(r);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}o(ss,"base64url");async function is(e,t){let r=await crypto.subtle.importKey("raw",xn.encode(t),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",r,xn.encode(e))}o(is,"hmac");async function Dn(e){return e.get(os,{cacheTtl:60})}o(Dn,"readUsageSigningKey");function as(e,t,r,n){return JSON.stringify([e,t,r,n])}o(as,"signedPayload");async function On(e,t,r,n){return{version:kn,source:t,eventId:r,event:n,signature:ss(await is(as(kn,t,r,n),e))}}o(On,"signUsageEvent");function Nn(e,t){e.ANALYTICS.writeDataPoint({indexes:[t.projectId],blobs:[t.projectId,t.type,t.method,String(t.status),t.slug,t.failureKind??""],doubles:[1,t.responseBytes,t.durationMs]})}o(Nn,"recordRequest");function cs(e){if(!e.startsWith("user-"))return null;let t=e.lastIndexOf("-dpl_");return t>4?{projectKey:e.slice(0,t),deployId:e.slice(t+1)}:{projectKey:e,deployId:""}}o(cs,"splitWorkerName");var ls=2048,ds=1024;function Ln(e,t){let r=new TextEncoder().encode(e);if(r.length<=t)return e;let n="\u2026";if(t<3)return"";let s=t-3;for(;s>0&&(r[s]&192)===128;)s--;return new TextDecoder().decode(r.slice(0,s))+n}o(Ln,"truncateUtf8");function Un(e,t){if(!t.workerName)return;let r=cs(t.workerName);if(!r)return;let n=t.url;try{n=new URL(t.url).pathname}catch{}let s=`Void platform: your worker did not respond within ${t.timeoutMs} ms. ${t.method} ${Ln(n,ds)} was cut short and returned ${t.status}. The operation may still have side effects; check its outcome before retrying.`;try{e.LOGS.writeDataPoint({indexes:[r.projectKey],blobs:["canceled",JSON.stringify([{level:"error",message:[s],timestamp:Date.now()}]),"[]",Ln(t.url,ls),t.method,String(t.status),r.deployId],doubles:[Date.now(),t.status]})}catch{}}o(Un,"recordPlatformLog");async function Mn(e,t){let r=await Dn(e.ROUTING);if(!r)throw new Error("Usage metering is not initialized. Check the platform API /health endpoint.");let n=crypto.randomUUID();await e.USAGE_QUEUE.send(await On(r,"dispatch",n,t))}o(Mn,"sendUsageEvent");var ur="__void/platform/disabled/v1",pr="disabled";var Hn="void.app";function $n(e,t=Hn){let r=`.${t}`;if(!e.endsWith(r))return null;let n=e.slice(0,-r.length);return!n||n.includes(".")||!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(n)?null:n}o($n,"extractSlug");async function Fn(e,t){let r=Ae(t);if(!(!!r.workersDev&&e.endsWith(`.${r.workersDev.subdomain}.workers.dev`)))return{slug:$n(e,t.BASE_HOSTNAME),workersDev:!1};let s=await t.ROUTING.get(Nr(e));if(s){let i=JSON.parse(s);if(Mr(i,r.workersDev)===e)return{slug:i.slug,projectId:i.id,workersDev:!0}}return{slug:null,workersDev:!0}}o(Fn,"resolveProjectHostname");function fr(e){return new URL(typeof e=="string"||e instanceof URL?e:e.url).hostname.endsWith(".workers.dev")}o(fr,"isTestHostname");var Z={async match(e,t){return fr(e)?void 0:caches.default.match(e,t)},async put(e,t){fr(e)||await caches.default.put(e,t)},async delete(e,t){return fr(e)?!1:caches.default.delete(e,t)}};var H=class extends Error{static{o(this,"DispatchTimeoutError")}label;constructor(t){super(`Dispatch operation timed out: ${t}`),this.name="DispatchTimeoutError",this.label=t}};function me(e,t,r){if(!(t>0)||!Number.isFinite(t))return e;let n=null,s=new Promise((i,c)=>{n=setTimeout(()=>{c(new H(r))},t)});return Promise.race([e,s]).finally(()=>{clearTimeout(n)})}o(me,"withTimeout");async function mr(e,t){let r=t.delayMs>0&&Number.isFinite(t.delayMs),n=t.timeoutMs>0&&Number.isFinite(t.timeoutMs),s=o(async()=>{try{return{ok:!0,value:await e()}}catch(S){return{ok:!1,error:S}}},"run"),i=[],c=o(()=>{let S={id:i.length+1,promise:s()};return i.push(S),S},"startAttempt"),l=null,p=r?new Promise(S=>{l=setTimeout(()=>S({kind:"hedge"}),t.delayMs)}):null,d=null,a=n?new Promise(S=>{d=setTimeout(()=>S({kind:"timeout"}),t.timeoutMs)}):null,f=o(()=>{clearTimeout(l),clearTimeout(d)},"clearTimers"),u=o(S=>{S.promise.then(async $=>{$.ok&&$.value!==null&&await t.discard?.($.value)}).catch(()=>{})},"discardAttempt"),E=o(S=>{f();for(let $ of i)$.id!==S&&u($)},"finish"),h=o(()=>{throw E(),new H(t.label)},"timeout"),g=o(S=>S.promise.then($=>({kind:"attempt",attempt:S,outcome:$})),"waitForAttempt"),A=c(),k=await Promise.race([g(A),...p?[p]:[],...a?[a]:[]]);if(k.kind==="timeout")return h();if(k.kind==="attempt"){if(clearTimeout(l),k.outcome.ok)return E(A.id),k.outcome.value;if(!r)throw E(),k.outcome.error;t.onHedge?.();let S=c(),$=await Promise.race([g(S),...a?[a]:[]]);if($.kind==="timeout")return h();if(E(S.id),$.outcome.ok)return $.outcome.value;throw $.outcome.error}t.onHedge?.();let y=c(),R=await Promise.race([g(A),g(y),...a?[a]:[]]);if(R.kind==="timeout")return h();if(R.outcome.ok&&R.outcome.value!==null)return E(R.attempt.id),R.outcome.value;let M=R.attempt.id===A.id?y:A,W=await Promise.race([g(M),...a?[a]:[]]);if(W.kind==="timeout")return h();if(W.outcome.ok&&W.outcome.value!==null)return E(M.id),W.outcome.value;if(E(),R.outcome.ok||W.outcome.ok)return null;throw R.outcome.error}o(mr,"withDelayedHedge");function Vn(e,t=1e4){return e===void 0?t:Number(e)}o(Vn,"resolveTimeoutMs");async function us(e,t){try{return await e.ROUTING.get(`project-suspended:${t}`,{cacheTtl:60})!==null}catch(r){return console.error(`[queue-relay] suspension check failed project="${t}"; relaying`,r),!1}}o(us,"isProjectSuspended");var ps="public, max-age=0, must-revalidate",qn=1e3,ve=300,Kn=3600,fs=120,ae="platform-static-asset-timeout",le="platform-static-asset-error",ge="platform-static-asset-missing",ms=86400;function hs(e,t){return[e.url.replace(/^[a-z][a-z\d+.-]*:\/\/[^/\\?#]*/i,"").replace(/[?#].*$/s,""),t.pathname].some(n=>{let s=n;try{s=decodeURIComponent(n)}catch{}return s.replace(/[\\/]+/g,"/").toLowerCase().startsWith("/health")})}o(hs,"platformHealthExceptionPath");function bt(e,t){return new Response(null,{status:e,headers:{"X-Void-Timeout":t,...e===503?{"Retry-After":"5"}:{}}})}o(bt,"timeoutResponse");function qe(e){return e===ae?bt(503,"static-asset"):new Response(null,{status:503,headers:{"X-Void-Storage-Error":e===ge?"static-asset-missing":"static-asset-read","Retry-After":"5"}})}o(qe,"staticAssetFailureResponse");function ye(e){return e.headers.get("content-type")?.toLowerCase().split(";",1)[0]?.trim()==="text/html"}o(ye,"isHtmlResponse");function gs(e,t,r){let n=new Response(e,{headers:{"content-type":"application/json","X-VoidPages":"true",Vary:"X-VoidPages","Cache-Control":`public, s-maxage=${t}, max-age=0, must-revalidate`,"x-isr-cache":r}});return B(n.headers),n}o(gs,"jsonCacheResponse");async function gr(e,t,r,n,s){let i=r.headers.get("x-void-page-data"),c=i?gt(i):cr(await r.clone().text());c&&await e.put(t,gs(c,n,s))}o(gr,"populateJsonEdgeCache");async function jn(e,t){await Promise.all([lr(e,t.projectId,t.deploymentId,t.host,t.pathname,t.originalUrl),Z.delete(t.htmlKey),Z.delete(t.jsonKey)])}o(jn,"deleteSharedIsrEntry");async function yr(e){let t={response:e.response,pathname:e.pathname,originalUrlVariant:e.originalUrlVariant,applied:!1};if(e.response.status!==404||!e.routing.fallbackRules?.length||e.routing.type==="void"&&e.response.headers.get("X-Void-No-Match")!=="1")return t;let r=ne(e.pathname,e.routing.fallbackRules,e.url.hostname);if(r?.type!=="rewrite")return t;let n=e.originalUrlHeader??e.originalRequestUrl,s=e.originalUrlVariant??Te(e.originalRequestUrl,e.pathname,e.routing.queryAllowlist),i=new URL(e.url.toString());i.pathname=r.destination;let c=ke(e.dispatchReq,i.toString(),l=>l.set("X-Void-Original-URL",n));return{response:e.deadline===void 0?await e.worker.fetch(c):await me(e.worker.fetch(c),z(e.deadline.startedAt,e.deadline.timeoutMs,"dispatch"),"dispatch"),pathname:r.destination,originalUrlVariant:s,applied:!0}}o(yr,"applyWorkerFallbackRules");function ys(e,t,r,n,s){if(s)return s;let i=Te(e,t,n.queryAllowlist);return(n.fallbackRules?.length?ne(t,n.fallbackRules,r):void 0)?.type==="rewrite"||new URL(i).search?i:void 0}o(ys,"buildFallbackOriginalUrlVariant");function hr(e,t,r){let n=ne(e,t.fallbackRules,r);return n?.type==="rewrite"?n.destination:void 0}o(hr,"resolveCachedWfpFallbackPathname");var ws="Assets have not yet been deployed to this script";function As(e){if(e.status!==200||!e.headers.get("content-type")?.toLowerCase()?.startsWith("text/plain"))return!1;let r=e.headers.get("content-length");if(!r)return!1;let n=Number.parseInt(r,10);return n>0&&n<200}o(As,"isLikelyCfAssetStub");function z(e,t,r="static-asset"){if(!(t>0&&Number.isFinite(t)))return t;let n=t-(Date.now()-e);if(n<=0)throw new H(r);return n}o(z,"remainingTimeoutBudget");function Gn(e){return e>0&&Number.isFinite(e)?Math.min(qn,e/2):0}o(Gn,"staticAssetHedgeDelayMs");async function Ge(e,t,r,n){let s=Gn(n);try{let i=await mr(()=>e.ROUTING.get(`manifest:${t}`,{cacheTtl:86400}),{delayMs:s,timeoutMs:n,label:"static-asset",onHedge:o(()=>{console.warn(JSON.stringify({event:"wfp-asset-manifest-read-hedge",projectId:r,deploymentId:t,delayMs:s,ts:Date.now()}))},"onHedge")});return i?JSON.parse(i):null}catch(i){throw console.error(JSON.stringify({event:i instanceof H?"wfp-asset-manifest-timeout":"wfp-asset-manifest-read-error",projectId:r,deploymentId:t,error:i instanceof H?void 0:i instanceof Error?i.message:String(i),ts:Date.now()})),i instanceof H?i:new te(i)}}o(Ge,"fetchAssetManifest");async function bs(e,t,r,n=1e4,s){if(!t.assetManifestId)return null;let i=Date.now(),c=await Ge(e,t.assetManifestId,t.projectId,z(i,n));if(!c)return null;let l=t.assetConfig??{not_found_handling:"none"},p=r,d=pe(r,c,l);if((!d||d.notFound)&&s&&s!==r){let f=pe(s,c,l);f&&!f.notFound&&(d=f,p=s)}if(!d)return null;if(d.redirect)return{response:new Response(null,{status:308,headers:{Location:d.redirect}}),pathname:p};let a=await wt(e,d.hash,d.path,t.projectId,t.assetManifestId,z(i,n));return a?{response:new Response(a.body,{status:d.notFound?404:200,headers:a.headers}),pathname:p}:null}o(bs,"serveWfpAssetFallback");function Rs(e,t,r){console.log(JSON.stringify({event:"wfp-asset-fallback",projectId:e.projectId,deploymentId:e.assetManifestId,pathname:t,userAgent:r,ts:Date.now()}))}o(Rs,"logWfpAssetFallback");async function ee(e){let t=e.deadline?.startedAt??Date.now(),r=e.deadline?.timeoutMs??e.timeoutMs??1e4;if(K(e.response))return{response:e.response,pathname:e.pathname};if(!As(e.response))return{response:e.response,pathname:e.pathname};let n=!1,s;try{if(!(await me(e.response.clone().text(),z(t,r),"static-asset")).includes(ws))return{response:e.response,pathname:e.pathname};n=!0,s=await bs(e.env,e.routing,e.pathname,z(t,r),e.fallbackPathname)}catch(i){if(i instanceof H)return n?{response:qe(ae),failureKind:ae,pathname:e.pathname}:{response:bt(503,"dispatch"),pathname:e.pathname};if(i instanceof te)return{response:qe(le),failureKind:le,pathname:e.pathname};throw i}return s?(Rs(e.routing,s.pathname,e.userAgent),s):(console.error(JSON.stringify({event:"wfp-asset-fallback-missing",projectId:e.routing.projectId,deploymentId:e.routing.assetManifestId,pathname:e.pathname,ts:Date.now()})),{response:qe(ge),failureKind:ge,pathname:e.pathname})}o(ee,"maybeServeWfpAssetFallback");function ke(e,t,r){let n=new Headers(e.headers);r(n);let s=e.cf;return e.bodyUsed||e.body?.locked?(n.delete("content-length"),n.delete("transfer-encoding"),new Request(t,{method:e.method,headers:n,cf:s})):e.method==="GET"||e.method==="HEAD"?new Request(t,{method:e.method,headers:n,cf:s}):new Request(t,{method:e.method,headers:n,body:e.body,cf:s,duplex:"half"})}o(ke,"rebuildRequest");var Cl={async fetch(e,t,r){t=await Ur(t);let n=new URL(e.url);if(!t.PLATFORM_INSTALLATION_ID&&n.pathname==="/health"&&e.headers.get("X-Health-Check")==="void-admin")return Response.json({ok:!0});if(t.PLATFORM_HEALTH_PROBE_TOKEN&&n.pathname==="/health"&&e.headers.get("X-Void-Platform-Probe")===t.PLATFORM_HEALTH_PROBE_TOKEN)return Response.json({ok:!0,...t.PLATFORM_APPLICATION?{installationId:t.PLATFORM_INSTALLATION_ID}:{}});if(n.hostname.startsWith(`${Ot}.`)&&n.hostname===Hr(Ae(t))&&hs(e,n))return J(e,404,"Not Found",{"Cache-Control":"no-store"});if(t.PLATFORM_TRAFFIC_STATE==="staging"||t.PLATFORM_TRAFFIC_STATE==="sandbox-drain"||t.PLATFORM_INSTALLATION_ID&&await t.ROUTING.get(ur)===pr)return mn(e);let s=Date.now(),i=Vn(t.DISPATCH_TIMEOUT_MS);if(n.pathname.startsWith("/__void/")||n.pathname==="/__scheduled"||n.pathname==="/__queue")return J(e,404,"Not Found");let c=await Fn(n.hostname,t),l=c.slug;if(c.workersDev&&!c.projectId)return J(e,404,"Not Found");let p=l??`domain:${n.hostname}`,d=await t.ROUTING.get(p,{cacheTtl:60});if(!d)return J(e,404,"Not Found",{"Cache-Control":"public, max-age=30"});let a=JSON.parse(d);if(c.projectId&&c.projectId!==a.projectId)return J(e,404,"Not Found");if(a.zeroTrust&&!await pn.verify(n.hostname,e.headers.get("Cf-Access-Jwt-Assertion"),a.zeroTrust))return J(e,403,"Cloudflare Access authentication required",{"Cache-Control":"no-store"});let f=o(w=>vn(e,{code:"usage_limit",resource:w,reason:w==="requests"?"monthly_quota":"cpu",message:w==="requests"?"This app has reached its usage allowance. Please contact the app owner or try again later.":"This request exceeded its execution limit. Please try again."},async()=>{let T=a.staticDeploymentId??a.assetManifestId;if(!T)return null;let x=w==="requests"?"/usage-limit.html":"/execution-limit.html",m=(await Ge(t,T,a.projectId,2e3))?.[x];return m?wt(t,m,x,a.projectId,T,2e3):null}),"limitResponse");if(a.suspended==="requests_exceeded")return f("requests");if(a.suspended)return Response.json({error:"usage limit exceeded",reason:a.suspended},{status:429,headers:{"Cache-Control":"public, s-maxage=30, max-age=0"}});e.headers.has("X-Void-Original-URL")&&(e=ke(e,e.url,w=>w.delete("X-Void-Original-URL")));let u=n.pathname,E,h=e.headers.get("upgrade")?.toLowerCase()==="websocket"?"websocket":"static",g=o((w,T)=>{let x=K(w)?0:Number(w.headers.get("content-length")??0);Nn(t,{projectId:a.projectId,type:h,method:e.method,status:w.status,responseBytes:x,durationMs:Date.now()-s,slug:l??n.hostname,...T&&{failureKind:T}}),a.userId&&r.waitUntil(Mn(t,{projectId:a.projectId,userId:a.userId,slug:l??n.hostname,requests:1,responseBytes:x,...w.status>=500&&{status:w.status},...T&&{failureKind:T}}));let D=new Response(w.body,w);return D.headers.delete("X-Void-No-Match"),D.headers.delete(Pe),D.headers.set("X-Hosted-By","void.cloud"),D},"meter"),A=o(w=>g(qe(w),w),"meterStaticAssetFailure"),k=o(()=>(Un(t,{workerName:a.workerName,method:e.method,url:e.url,status:503,timeoutMs:i}),g(bt(503,"dispatch"))),"meterWorkerTimeout"),y,R;if(a.redirectRules?.length){let w=ne(u,a.redirectRules,n.hostname);if(w?.type==="redirect"){let T=Le(w.destination,n.search);return g(new Response(null,{status:w.status,headers:{Location:T}}))}w?.type==="rewrite"&&(R=e.url,y=Te(e.url,u,a.queryAllowlist),u=w.destination,n.pathname=u)}let M=e;if(R&&(M=ke(e,n.toString(),w=>w.set("X-Void-Original-URL",R))),a.hashedAssetsPrefix&&Ar(e)){let w="/"+a.hashedAssetsPrefix+"/";if(u.startsWith(w)){let T=new URL(n.toString());T.search="",T.searchParams.set("_p",a.projectId);let x=new Request(T.toString()),D=["cache-control","content-type","content-encoding","content-length","content-range","accept-ranges","transfer-encoding"],m=o((_,C)=>{let O=G(_,u,a.headerRules);if(O!==_)for(let I of D){let v=_.headers.get(I);v===null?O.headers.delete(I):O.headers.set(I,v)}return g(O,C)},"finalizeAsset"),N=Z,U=await N.match(x);if(U?.headers.get("Cache-Control")?.includes("immutable")&&Bn(U)){if(!a.staticDeploymentId){let _=await ee({env:t,routing:a,pathname:u,response:U,userAgent:e.headers.get("user-agent"),timeoutMs:i});if(_.response!==U){if(he(_.response)){let C=new Response(_.response.body,_.response);C.headers.set("Cache-Control","public, max-age=31536000, immutable"),B(C.headers);let O=C.clone();return r.waitUntil(N.delete(x).then(()=>N.put(x,O))),m(C,_.failureKind)}return r.waitUntil(N.delete(x)),m(_.response,_.failureKind)}}return m(U)}if(U&&await N.delete(x),a.staticDeploymentId){let _=Date.now(),C;try{C=await Ge(t,a.staticDeploymentId,a.projectId,z(_,i))}catch(b){if(b instanceof H)return A(ae);if(b instanceof te)return A(le);throw b}if(!C)return A(ge);let O=u,I=C[u];if(!I){let b=we(u);b!==u&&C[b]&&(O=b,I=C[b])}let v;if(I)try{let b=await wt(t,I,O,a.projectId,a.staticDeploymentId,z(_,i));if(!b)return Wn(a,O,I),A(ge);v=b}catch(b){if(b instanceof H)return A(ae);if(b instanceof te)return A(le);throw b}else v=J(e,404,"Not Found");if(he(v)){let b=new Response(v.body,v);return b.headers.set("Cache-Control","public, max-age=31536000, immutable"),B(b.headers),r.waitUntil(N.put(x,b.clone())),m(b)}return m(v)}try{let _=At(t,a),C=Date.now(),O=await me(_.fetch(M),z(C,i),"static-asset"),I=await ee({env:t,routing:a,pathname:u,response:O,userAgent:e.headers.get("user-agent"),deadline:{startedAt:C,timeoutMs:i}});O=I.response;let v=I.failureKind;if(he(O)){let b=new Response(O.body,O);return b.headers.set("Cache-Control","public, max-age=31536000, immutable"),B(b.headers),r.waitUntil(N.put(x,b.clone())),m(b,v)}return m(O,v)}catch(_){if(_ instanceof H)return A(ae);if(_ instanceof Error&&_.message.includes("Worker exceeded"))return g(await f("execution"));throw _}}}if(a.ssr===!0&&(a.type!=="framework"||ht(e))&&_s(u,a.pages,a.revalidate,a.pathRevalidate)&&(a.revalidate||a.pages?.length)){let w=Be(a.pages,a.revalidate,a.pathRevalidate,u);if(w>0&&e.method==="GET"&&!e.headers.has("Range")&&!ze(e)){let T=e.headers.has("X-VoidPages"),x=a.version??"legacy",D=Z,m=ys(e.url,u,n.hostname,a,y),N=rr(e.url,new URL(e.url).pathname,a.queryAllowlist),U=Cn(e,u,x,m),_=dr(e,u,x,m);if(E={projectId:a.projectId,deploymentId:x,host:n.hostname,pathname:u,originalUrl:m,htmlKey:U,jsonKey:_},T){let C=await D.match(_);if(C&&Je(C))return h="isr",g(Y(C));C&&await D.delete(_)}else{let C=o(async()=>{await jn(t,E)},"purgePoisonedIsrEntry"),O=await D.match(U);if(O&&Je(O)){h="isr";let L=await ee({env:t,routing:a,pathname:u,response:O,userAgent:e.headers.get("user-agent"),timeoutMs:i,fallbackPathname:hr(u,a,n.hostname)});return L.response!==O?(r.waitUntil(C()),g(L.response.ok?Y(L.response):L.response,L.failureKind)):g(Y(O))}O&&await D.delete(U);let I=await _n(t,a.projectId,x,n.hostname,u,m);if(I){let L=sr(I),j=ir(I,L),de=await ee({env:t,routing:a,pathname:u,response:j,userAgent:e.headers.get("user-agent"),timeoutMs:i,fallbackPathname:hr(u,a,n.hostname)});if(de.response!==j)return r.waitUntil(C()),h="isr",g(de.response.ok?Y(de.response):de.response,de.failureKind);if(L){let De=j.clone(),Xe=M;if(N){let Ze=new URL(M.url);Ze.search=m?new URL(m).search:"",Xe=ke(M,Ze.toString(),Qn=>{R&&m&&Qn.set("X-Void-Original-URL",m)})}r.waitUntil(Ss(t,a,Xe,n.hostname,u,w,U,_,I.createdAt+I.ttl*1e3,m,i).then(async Ze=>{Ze||await D.put(U,De)}))}return h="isr",L||r.waitUntil(D.put(U,j.clone())),g(Y(j))}h="isr";let v=At(t,a),b=Date.now(),P;try{P=await me(v.fetch(M),z(b,i,"dispatch"),"dispatch")}catch(L){if(L instanceof H)return k();throw L}let re=K(P),Qe,Rt=u,Et=!1;if(!re){let L=await ee({env:t,routing:a,pathname:u,response:P,userAgent:e.headers.get("user-agent"),deadline:{startedAt:b,timeoutMs:i}});P=L.response,Qe=L.failureKind,re=K(P)}if(!re){let L;try{L=await yr({response:P,worker:v,dispatchReq:M,routing:a,pathname:u,url:n,originalRequestUrl:e.url,originalUrlHeader:R,originalUrlVariant:m,deadline:{startedAt:b,timeoutMs:i}})}catch(j){if(j instanceof H)return k();throw j}if(L.applied&&(Et=!0,Rt=L.pathname,P=L.response,re=K(P),!re)){let j=await ee({env:t,routing:a,pathname:L.pathname,response:P,userAgent:e.headers.get("user-agent"),deadline:{startedAt:b,timeoutMs:i}});P=j.response,Qe=j.failureKind,re=K(P)}}if(re)return g(P);let xe=Ce(P,w);if(!N&&xe>0&&P.status===200&&(a.type!=="framework"||ye(P))&&!X(Rt)&&!ie(P)&&(!Et||wr(a.pages,Rt,P,a.pathRevalidate))){r.waitUntil(yt(t,a.projectId,x,n.hostname,u,P,xe,m)),r.waitUntil(gr(D,_,P,xe,"HIT"));let L=new Headers(P.headers);L.set("Cache-Control",`public, s-maxage=${xe}, max-age=0, must-revalidate`),L.set("x-isr-cache","MISS"),B(L),L.delete("x-void-page-data"),L.delete("set-cookie");let j=new Headers(L);j.set("x-isr-cache","HIT");let de=new Response(P.clone().body,{status:P.status,headers:j});r.waitUntil(D.put(U,de.clone()));let De=new Headers(L);De.set("Cache-Control",ps),De.delete(Pe);let Xe=new Response(P.body,{status:P.status,headers:De});return g(Xe,Qe)}return P.status===200&&!Et&&(xe===0||ie(P)||a.type==="framework"&&!ye(P))&&r.waitUntil(C()),g(P,Qe)}}}let S=u,$=Is(e,S,a)?await Ps(t,S,a,i):void 0,Yn=$===!0,Ye;if(Yn){let w=new URL(Te(e.url,new URL(e.url).pathname,nr(a.queryAllowlist)));w.searchParams.set("_v",String(a.version));let T=new Request(w.toString());Ye=T;let x=Z,D=await x.match(T);if(D&&Bn(D)){if(h="static",!a.staticDeploymentId){let m=await ee({env:t,routing:a,pathname:u,response:D,userAgent:e.headers.get("user-agent"),timeoutMs:i,fallbackPathname:hr(u,a,n.hostname)});if(m.response!==D){if(he(m.response)){let N=G(m.response,m.pathname,a.headerRules),U=new Response(N.clone().body,N);U.headers.set("Cache-Control","public, s-maxage=31536000, max-age=0, must-revalidate"),B(U.headers);let _=U.clone();return r.waitUntil(x.delete(T).then(()=>x.put(T,_))),g(Y(N))}return r.waitUntil(x.delete(T)),g(m.response,m.failureKind)}}return g(Y(D))}D&&await x.delete(T)}if(a.staticDeploymentId){let w=Date.now(),T;try{T=await Ge(t,a.staticDeploymentId,a.projectId,z(w,i))}catch(I){if(I instanceof H)return A(ae);if(I instanceof te)return A(le);throw I}if(!T)return A(ge);let x=a.assetConfig??{},D=u,m=pe(u,T,x);if((!m||m.notFound)&&a.fallbackRules?.length){let I=ne(u,a.fallbackRules,n.hostname);I?.type==="rewrite"&&(u=I.destination,n.pathname=u,m=pe(u,T,x))}if(!m)return g(J(e,404,"Not Found"));if(m.redirect)return g(new Response(null,{status:308,headers:{Location:m.redirect}}));let N;try{N=await wt(t,m.hash,m.path,a.projectId,a.staticDeploymentId,z(w,i))}catch(I){if(I instanceof H)return g(bt(m.notFound?404:503,"static-asset"),m.notFound?void 0:ae);if(I instanceof te)return g(m.notFound?J(e,404,"Not Found"):qe(le),m.notFound?void 0:le);throw I}if(!N)return m.notFound?g(J(e,404,"Not Found")):(Wn(a,m.path,m.hash),A(ge));let U=m.notFound?404:200,_=new Response(N.body,{status:U,headers:N.headers}),C=G(_,u,a.headerRules),O=Ye??(Ar(e)?new Request(`${n.origin}${D}?_v=${a.staticDeploymentId}`):void 0);if(O&&he(C)){let I=new Response(C.clone().body,C);I.headers.set("Cache-Control","public, s-maxage=31536000, max-age=0, must-revalidate"),B(I.headers),r.waitUntil(Z.put(O,I.clone()))}return g(Y(C))}let br=At(t,a);try{let w=M;w.bodyUsed&&(w=ke(w,w.url,()=>{}));let x=w.method!=="GET"&&w.method!=="HEAD"&&a.fallbackRules?.length?w.clone():w,D=Date.now(),m=await me(br.fetch(w),z(D,i,"dispatch"),"dispatch"),N=K(m),U;if(!N){let v=await ee({env:t,routing:a,pathname:u,response:m,userAgent:e.headers.get("user-agent"),deadline:{startedAt:D,timeoutMs:i}});m=v.response,U=v.failureKind,N=K(m)}let _=!1;if(!N){let v=await yr({response:m,worker:br,dispatchReq:x,routing:a,pathname:u,url:n,originalRequestUrl:e.url,originalUrlHeader:R,originalUrlVariant:y,deadline:{startedAt:D,timeoutMs:i}});if(v.applied&&(_=!0,u=v.pathname,n.pathname=u,y=v.originalUrlVariant,m=v.response,N=K(m),!N)){let b=await ee({env:t,routing:a,pathname:u,response:m,userAgent:e.headers.get("user-agent"),deadline:{startedAt:D,timeoutMs:i}});m=b.response,U=b.failureKind,N=K(m)}}if(E&&m.status===200&&!_&&(Ce(m,Be(a.pages,a.revalidate,a.pathRevalidate,E.pathname))===0||ie(m)||a.type==="framework"&&!ye(m))&&r.waitUntil(jn(t,E)),Ye&&!_&&he(m)){let v=new Response(m.body,m);v.headers.delete("x-void-page-data");let b=G(v,u,a.headerRules),P=new Response(b.clone().body,b);return P.headers.set("Cache-Control","public, s-maxage=31536000, max-age=0, must-revalidate"),B(P.headers),r.waitUntil(Z.put(Ye,P.clone())),g(Y(b),U)}let C=u===S?$:void 0,O=!U&&zn(a,C)&&(C===!1||m.status>=500),I=Qt(u,a.ssr,O);if(I&&(h=I),(a.revalidate||a.pages?.length)&&!N&&!e.headers.has("X-VoidPages")&&e.method==="GET"&&!e.headers.has("Range")&&(a.type!=="framework"||ht(e))&&!ze(e)){let v=Be(a.pages,a.revalidate,a.pathRevalidate,u),b=v>0?Ce(m,v):0;if(b>0&&m.status===200&&a.ssr&&!X(u)&&!Ke(u)&&(a.type!=="framework"||ye(m))&&!ie(m)&&(!_||wr(a.pages,u,m,a.pathRevalidate))){let P=a.version??"legacy";r.waitUntil(yt(t,a.projectId,P,n.hostname,u,m,b,y));let re=dr(e,u,P,y);r.waitUntil(gr(Z,re,m,b,"HIT"))}}if(m.headers.has("x-void-page-data")){let v=new Response(m.body,m);return v.headers.delete("x-void-page-data"),g(G(v,u,a.headerRules),U)}return g(G(m,u,a.headerRules),U)}catch(w){if(w instanceof H){if(w.label==="static-asset")return A(ae);let T=Qt(u,a.ssr,zn(a,u===S?$:void 0));return T&&(h=T),k()}if(w instanceof te)return A(le);if(w instanceof Error&&w.message.includes("Worker exceeded"))return g(await f("execution"));throw w}},async queue(e,t){if(t.PLATFORM_TRAFFIC_STATE==="staging"||t.PLATFORM_TRAFFIC_STATE==="sandbox-drain"){console.warn(`[queue-relay] platform traffic is staging; retrying queue="${e.queue}" in ${ve}s`),e.retryAll({delaySeconds:ve});return}if(t.PLATFORM_INSTALLATION_ID){let d;try{d=await t.ROUTING.get(ur)}catch(a){let f=a instanceof Error?a.message:String(a);console.error(`[queue-relay] platform traffic gate read failed; retrying queue="${e.queue}" in ${ve}s error=${JSON.stringify(f)}`),e.retryAll({delaySeconds:ve});return}if(d===pr){console.warn(`[queue-relay] platform traffic is disabled; retrying queue="${e.queue}" in ${ve}s`),e.retryAll({delaySeconds:ve});return}}let r=await t.ROUTING.get(`queue:${e.queue}`,{cacheTtl:60});if(!r){console.error(`[queue-relay] missing routing entry for queue="${e.queue}"; retrying all messages`),e.retryAll();return}let{workerName:n,projectId:s,queueName:i,proxyToken:c}=JSON.parse(r);if(s&&await us(t,s)){console.warn(`[queue-relay] project suspended; retrying queue="${e.queue}" in ${Kn}s`),e.retryAll({delaySeconds:Kn});return}let l=Array.from(e.messages,d=>({id:d.id,timestamp:d.timestamp.toISOString(),body:d.body,attempts:d.attempts})),p=t.DISPATCH.get(n);try{let d=JSON.stringify({queue:i,messages:l}),a={"Content-Type":"application/json"};c&&(a["x-void-internal"]=c);let f=await p.fetch(new Request("https://internal/__void/queue",{method:"POST",headers:a,body:d}));if(f.status===404&&(f=await p.fetch(new Request("https://internal/__queue",{method:"POST",headers:a,body:d}))),!f.ok){let h="";try{h=(await f.clone().text()).slice(0,200)}catch{}console.error(`[queue-relay] relay failed queue="${i}" worker="${n}" status=${f.status} body=${JSON.stringify(h)}`),f.status===401||f.status===403?e.retryAll({delaySeconds:fs}):e.retryAll();return}let u;try{u=await f.json()}catch{e.ackAll();return}if(!u.decisions){u.ok!==!1?e.ackAll():e.retryAll();return}let E=new Map(e.messages.map(h=>[h.id,h]));for(let[h,g]of Object.entries(u.decisions)){let A=E.get(h);A&&(g.action==="ack"?A.ack():g.action==="retry"&&A.retry(g.delaySeconds!=null?{delaySeconds:g.delaySeconds}:void 0))}u.ok===!1&&e.retryAll()}catch(d){let a=d instanceof Error?d.message:String(d);console.error(`[queue-relay] relay threw queue="${i}" worker="${n}" error=${JSON.stringify(a)}`),e.retryAll()}}},te=class extends Error{static{o(this,"StaticAssetReadError")}constructor(t){super("Static asset storage read failed",{cause:t}),this.name="StaticAssetReadError"}};function Wn(e,t,r){console.error(JSON.stringify({event:"static-asset-missing",store:r.startsWith("!")?"r2":"kv",projectId:e.projectId,deploymentId:e.staticDeploymentId??e.assetManifestId,pathname:t,ts:Date.now()}))}o(Wn,"logStaticAssetMissing");async function wt(e,t,r,n,s,i=1e4){let c=Gn(i),l=Date.now(),p=!1;try{let d=await mr(()=>Es(e,t,r,n),{delayMs:c,timeoutMs:i,label:"static-asset",discard:o(async a=>{await a.body?.cancel()},"discard"),onHedge:o(()=>{p=!0,console.warn(JSON.stringify({event:"static-asset-read-hedge",store:t.startsWith("!")?"r2":"kv",projectId:n,deploymentId:s,pathname:r,delayMs:c,ts:Date.now()}))},"onHedge")});return p&&console.warn(JSON.stringify({event:"static-asset-read-hedge-result",store:t.startsWith("!")?"r2":"kv",projectId:n,deploymentId:s,pathname:r,outcome:d===null?"miss":"hit",elapsedMs:Date.now()-l,ts:Date.now()})),d}catch(d){throw console.error(JSON.stringify({event:d instanceof H?"static-asset-timeout":"static-asset-read-error",store:t.startsWith("!")?"r2":"kv",projectId:n,deploymentId:s,pathname:r,hedged:p,elapsedMs:Date.now()-l,error:d instanceof H?void 0:d instanceof Error?d.message:String(d),ts:Date.now()})),d instanceof H?d:new te(d)}}o(wt,"fetchStaticAsset");async function Es(e,t,r,n){let s=t.startsWith("!"),i=s?t.slice(1):t,c=n?`assets/${n}/${i}`:null,l=`assets/${i}`;if(s){let d=c?await e.STATIC_ASSETS_R2.get(c)??await e.STATIC_ASSETS_R2.get(l):await e.STATIC_ASSETS_R2.get(l);if(!d)return null;let a=Ne(d.httpMetadata?.contentType,r),f={ETag:d.httpEtag,...d.size?{"Content-Length":String(d.size)}:{}};return a&&(f["Content-Type"]=a),new Response(d.body,{headers:f})}let p=o(async d=>{let{value:a,metadata:f}=await e.STATIC_ASSETS.getWithMetadata(d,{type:"arrayBuffer",cacheTtl:86400});if(!a)return null;let u=Ne(f?.ct,r),E={"Content-Length":String(a.byteLength)};return u&&(E["Content-Type"]=u),new Response(a,{headers:E})},"readKvAsset");return(c?await p(c):null)??p(l)}o(Es,"fetchStaticAssetOnce");function At(e,t){return t.limits?e.DISPATCH.get(t.workerName,{},{limits:t.limits}):e.DISPATCH.get(t.workerName)}o(At,"getWorker");async function Ss(e,t,r,n,s,i,c,l,p,d,a=1e4){try{let f=At(e,t),u=Date.now(),E=ke(r,r.url,S=>S.delete("X-VoidPages")),h=await me(f.fetch(E),z(u,a,"dispatch"),"dispatch");if(K(h))return!1;let g=h.status,A=await yr({response:h,worker:f,dispatchReq:E,routing:t,pathname:s,url:new URL(E.url),originalRequestUrl:r.url,originalUrlHeader:r.headers.get("X-Void-Original-URL")??void 0,originalUrlVariant:d??void 0,deadline:{startedAt:u,timeoutMs:a}});if(h=A.response,K(h)||(h=(await ee({env:e,routing:t,pathname:A.pathname,response:h,userAgent:r.headers.get("user-agent"),deadline:{startedAt:u,timeoutMs:a}})).response,K(h)))return!1;let y=Ce(h,i),R=Z,M=o(async()=>{await lr(e,t.projectId,t.version??"legacy",n,s,d),await R.delete(c),await R.delete(l)},"evictSharedEntry"),W=A.applied?A.pathname:s;if(y>0&&h.status===200&&(t.type!=="framework"||ye(h))&&!X(W)&&!ie(h)&&(!A.applied||wr(t.pages,W,h,t.pathRevalidate))){await yt(e,t.projectId,t.version??"legacy",n,s,h,y,d);let S=new Headers(h.headers);return S.set("x-isr-cache","HIT"),S.set("Cache-Control",`public, s-maxage=${y}, max-age=0, must-revalidate`),B(S),S.delete("set-cookie"),S.delete("x-void-page-data"),await R.put(c,new Response(h.clone().body,{status:h.status,headers:S})),await gr(R,l,h,y,"HIT"),!0}else if(h.status===200&&!X(W)&&!A.applied&&(y===0||ie(h)||t.type==="framework"&&!ye(h))){try{await M()}catch(S){console.error("ISR privacy eviction failed:",S)}return!0}else if((g===404||g===410)&&Date.now()-p>ms*1e3){try{await M()}catch(S){console.error("ISR stale-entry eviction failed:",S)}return!0}return!1}catch(f){return console.error("ISR revalidation failed:",f),!1}}o(Ss,"revalidateInBackground");function _s(e,t,r,n){return X(e)?!1:Ke(e)?Tn(t,r,n,e):!0}o(_s,"isIsrEligiblePath");function wr(e,t,r,n){return ye(r)&&Pn(e,t,n)}o(wr,"isFallbackTargetCacheable");function Ar(e){return e.method==="GET"&&!e.headers.has("Range")&&!e.headers.has("X-VoidPages")&&!ze(e)}o(Ar,"isSharedStaticCacheRequestEligible");function Is(e,t,r){return!!(Ar(e)&&r.version&&!X(t)&&(Ke(t)||!r.ssr))}o(Is,"isStaticCacheRequestEligible");async function Ps(e,t,r,n){if(r.staticDeploymentId||!r.ssr)return!0;if(r.assetManifestId)try{let s=await Ge(e,r.assetManifestId,r.projectId,Math.min(n,qn));if(!s)return;if(Object.hasOwn(s,t))return!0;let i=we(t);return i!==t&&Object.hasOwn(s,i)?!0:(r.assetConfig?.html_handling??"auto-trailing-slash")!=="none"&&(Jn(s,t)||Jn(s,i))?void 0:!1}catch{return}}o(Ps,"isKnownStaticAssetPath");function Jn(e,t){let r=[`${t}.html`,`${t}/index.html`];if(t.endsWith(".html")){let n=t.slice(0,-5);r.push(`${n}/index.html`),n.endsWith("/index")&&r.push(`${n.slice(0,-6)}.html`)}return r.some(n=>Object.hasOwn(e,n))}o(Jn,"hasHtmlHandlingSource");function zn(e,t){if(!e.assetManifestId)return!0;let r=e.assetConfig?.run_worker_first;return r===!0||Array.isArray(r)&&r.includes("/**")?!0:t===!1&&(e.assetConfig?.not_found_handling??"none")==="none"}o(zn,"workerAnsweredPath");function he(e){return e.status===200&&!K(e)&&!ie(e)}o(he,"isStaticCacheResponseEligible");function Bn(e){return Je(e)&&he(e)}o(Bn,"isCurrentStaticCacheResponse");export{Cl as default,ye as isHtmlResponse,ke as rebuildRequest};
@@ -0,0 +1,44 @@
1
+ CREATE TABLE "oauth_clients" (
2
+ "id" text PRIMARY KEY NOT NULL,
3
+ "name" text NOT NULL,
4
+ "operator" text NOT NULL,
5
+ "redirect_uris" jsonb NOT NULL,
6
+ "scopes" jsonb NOT NULL,
7
+ "secret_hash" text NOT NULL,
8
+ "enabled" boolean DEFAULT true NOT NULL,
9
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
10
+ );
11
+ --> statement-breakpoint
12
+ CREATE TABLE "oauth_grants" (
13
+ "id" text PRIMARY KEY NOT NULL,
14
+ "client_id" text NOT NULL,
15
+ "user_id" text NOT NULL,
16
+ "session" jsonb NOT NULL,
17
+ "token_hash" text NOT NULL,
18
+ "expires_at" timestamp with time zone NOT NULL,
19
+ "revoked_at" timestamp with time zone,
20
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
21
+ );
22
+ --> statement-breakpoint
23
+ CREATE TABLE "oauth_requests" (
24
+ "id" text PRIMARY KEY NOT NULL,
25
+ "client_id" text,
26
+ "user_id" text,
27
+ "browser_hash" text NOT NULL,
28
+ "data" jsonb NOT NULL,
29
+ "code_hash" text,
30
+ "code_expires_at" timestamp with time zone,
31
+ "approved_at" timestamp with time zone,
32
+ "consumed_at" timestamp with time zone,
33
+ "expires_at" timestamp with time zone NOT NULL
34
+ );
35
+ --> statement-breakpoint
36
+ ALTER TABLE "oauth_grants" ADD CONSTRAINT "oauth_grants_client_id_oauth_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."oauth_clients"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
37
+ ALTER TABLE "oauth_grants" ADD CONSTRAINT "oauth_grants_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
38
+ ALTER TABLE "oauth_requests" ADD CONSTRAINT "oauth_requests_client_id_oauth_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."oauth_clients"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
39
+ ALTER TABLE "oauth_requests" ADD CONSTRAINT "oauth_requests_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
40
+ CREATE UNIQUE INDEX "oauth_grants_token" ON "oauth_grants" USING btree ("token_hash");--> statement-breakpoint
41
+ CREATE INDEX "oauth_grants_user" ON "oauth_grants" USING btree ("user_id");--> statement-breakpoint
42
+ CREATE INDEX "oauth_grants_expiry" ON "oauth_grants" USING btree ("expires_at");--> statement-breakpoint
43
+ CREATE UNIQUE INDEX "oauth_requests_code" ON "oauth_requests" USING btree ("code_hash");--> statement-breakpoint
44
+ CREATE INDEX "oauth_requests_expiry" ON "oauth_requests" USING btree ("expires_at");
@@ -65,6 +65,10 @@
65
65
  {
66
66
  "platformVersion": "0.26.0",
67
67
  "schemaDigest": "7581930465664b7c578518bea54f36a83d20fcc47d9528183419033930d7ff4a"
68
+ },
69
+ {
70
+ "platformVersion": "0.27.0",
71
+ "schemaDigest": "8580c6074cecbe15a7078428bd7f3ac4f5009f922bb8d2f300c58dcb717bfea3"
68
72
  }
69
73
  ]
70
74
  }
@@ -365,6 +365,13 @@
365
365
  "when": 1791311435335,
366
366
  "tag": "0058_project_proxy_token_gen",
367
367
  "breakpoints": true
368
+ },
369
+ {
370
+ "idx": 59,
371
+ "version": "7",
372
+ "when": 1791783766121,
373
+ "tag": "0059_oauth_clients",
374
+ "breakpoints": true
368
375
  }
369
376
  ]
370
377
  }