UNPKG

azion

Version:

Azion Packages for Edge Computing.

37 lines (32 loc) 79.8 kB
"use strict";var Ve=Object.create;var H=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var qe=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Ye=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Je(t))!He.call(e,i)&&i!==n&&H(e,i,{get:()=>t[i],enumerable:!(r=Xe(t,i))||r.enumerable});return e};var Ge=(e,t,n)=>(n=e!=null?Ve(qe(e)):{},Ye(t||!e||!e.__esModule?H(n,"default",{value:e,enumerable:!0}):n,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("fs"),c=require("path"),W=require("child_process"),V=require("signale"),p=require("fs/promises"),Ze=require("webpack"),Qe=require("pcre-to-regexp/dist/index.js"),Y=require("os"),F=require("semver"),et=require("fast-glob"),G=require("mime-types");var x=typeof document<"u"?document.currentScript:null;const M={IMAGES:["jpg","jpeg","png","gif","bmp","webp","svg","ico"],FONTS:["ttf","otf","woff","woff2","eot"],DOCUMENTS:["pdf","doc","docx","xls","xlsx","ppt","pptx"],MEDIA:["mp4","webm","mp3","wav","ogg"],CODE_AND_DATA:["css","js","json","xml","html","txt","csv"],ARCHIVES:["zip","rar","7z","tar","gz"],OTHER:["webmanifest","map","md","yaml","yml"]},pe=[...M.IMAGES,...M.FONTS,...M.DOCUMENTS,...M.MEDIA,...M.CODE_AND_DATA,...M.ARCHIVES,...M.OTHER];function _(e={}){const{connector:t="name-connector",application:n="name-application",staticExtensions:r=pe}=e;return{request:[{name:"Deliver Static Assets and Set Cache Policy",description:"Deliver static assets directly from storage and set cache policy",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:`\\.(${r.join("|")})$`}]],behaviors:[{type:"set_connector",attributes:{value:t}},{type:"set_cache_policy",attributes:{value:n}},{type:"deliver"}]},{name:"Redirect to index.html",description:"Handle directory requests by rewriting to index.html",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:".*/$"}]],behaviors:[{type:"set_connector",attributes:{value:t}},{type:"rewrite_request",attributes:{value:"${uri}index.html"}}]},{name:"Redirect to index.html for Subpaths",description:"Handle subpath requests by rewriting to index.html",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^(?!.*\\/$)(?![\\s\\S]*\\.[a-zA-Z0-9]+$).*"}]],behaviors:[{type:"set_connector",attributes:{value:t}},{type:"rewrite_request",attributes:{value:"${uri}/index.html"}}]}],response:[]}}function j(e={}){const{connector:t="name-connector",application:n="name-application",staticExtensions:r=pe}=e;return{request:[{name:"Deliver Static Assets and Set Cache Policy",description:"Deliver static assets directly from storage and set cache policy",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:`\\.(${r.join("|")})$`}]],behaviors:[{type:"set_connector",attributes:{value:t}},{type:"set_cache_policy",attributes:{value:n}},{type:"deliver"}]},{name:"Redirect to index.html",description:"Handle all routes by rewriting to index.html for client-side routing",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^\\/"}]],behaviors:[{type:"set_connector",attributes:{value:t}},{type:"rewrite_request",attributes:{value:"/index.html"}}]}],response:[]}}const tt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./dist",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:j({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},A=e=>{const t=new URL(e).pathname,n=t.endsWith("/")?t.slice(0,-1):t,r=/\.[^.]+$/;let i;return n===""?i=new URL("index.html","file:///"):r.test(n)?i=new URL(n.slice(1),"file:///"):i=new URL(`${n.slice(1)}/index.html`,"file:///"),fetch(i)},D=e=>{const t=new URL(e).pathname;let n;return/\.[^.]+$/.test(t)?n=new URL(t.slice(1),"file:///"):n=new URL("index.html","file:///"),fetch(n)},fe={name:"angular",registry:"angular"},nt={fetch:async e=>{try{return await D(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${fe.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};function P(e,t,n){const r=c.resolve(e),i=c.resolve(t);if(r===i)return;g.existsSync(i)||g.mkdirSync(i,{recursive:!0});const a=g.readdirSync(r);for(const s of a){const o=c.join(r,s),u=c.join(i,s);u.startsWith(o)||(g.lstatSync(o).isDirectory()?P(o,u):g.copyFileSync(o,u))}}async function E(e,{scope:t="Azion",verbose:n=!1,interactive:r=!1}={}){const i=new V.Signale({interactive:!0,scope:t});return new Promise((a,s)=>{const o=e.split(" "),u=o.shift();let l="",d="";const f=W.spawn(u,o,{shell:!0,stdio:r?"inherit":"pipe"});r||(f.stdout?.on("data",m=>{const y=m.toString();l+=y,n&&i.info(y)}),f.stderr?.on("data",m=>{const y=m.toString();d+=y,n&&(y.toLowerCase().includes("error")?i.error(y):i.info(y))}),f.on("error",m=>{s(m)})),f.on("close",m=>{m===0?a({stdout:l,stderr:d}):s(new Error(`Command '${e}' failed with code ${m}`))}),f.on("exit",m=>{m===0?a({stdout:l,stderr:d}):s(new Error(`Command '${e}' failed with code ${m}`))})})}const me=process.env.CLEAN_OUTPUT_MODE==="true",ge={displayScope:!1,displayBadge:!1,displayDate:!1,displayFilename:!1,displayLabel:!1,displayTimestamp:!1,underlineLabel:!1,underlineMessage:!1,underlinePrefix:!1,underlineSuffix:!1,uppercaseLabel:!1},T=(e={})=>{const t=new V.Signale({...e});return me&&t.config(ge),Object.assign(t,{breakInteractiveChain:()=>console.log()})},v={deployed:{badge:"🚀",color:"green",label:"forged",logLevel:"info"},option:{badge:"📦",color:"green",label:"",logLevel:"info"}},C=(e="Azion")=>new V.Signale({interactive:!1,scope:e,types:v});me&&C().config(ge);const Z=(e="Azion")=>({...C(e),interactive:{...T({interactive:!0,scope:[e],types:v})},server:{...C(e).scope(e,"Server"),interactive:T({interactive:!0,scope:[e,"Server"],types:v})},runtime:{...C(e).scope(e,"Runtime"),interactive:T({interactive:!0,scope:[e,"Runtime"],types:v})},prebuild:{...C(e).scope(e,"Pre-Build"),interactive:T({interactive:!0,scope:[e,"Pre-Build"],types:v})},build:{...C(e).scope(e,"Build"),interactive:T({interactive:!0,scope:[e,"Build"],types:v})},postbuild:{...C(e).scope(e,"Post-Build"),interactive:T({interactive:!0,scope:[e,"Post-build"],types:v})},storage:{...C(e).scope(e,"Storage"),interactive:T({interactive:!0,scope:[e,"Storage"],types:v})},bindings:{...C(e).scope(e,"Bindings"),interactive:T({interactive:!0,scope:[e,"Bindings"],types:v})},manifest:{...C(e).scope(e,"IaC"),interactive:T({interactive:!0,scope:[e,"IaC"],types:v})}}),h={...Z(),globalScope:e=>({...Z(e)})},Q=process.platform==="win32";function he(e=typeof document>"u"?require("url").pathToFileURL(__filename).href:x&&x.tagName.toUpperCase()==="SCRIPT"&&x.src||new URL("index.cjs",document.baseURI).href,t="bundler"){const n=new RegExp(`(.*${t})(.*)`),r=e.match(n);let i=r?r[1]:"";if(e.includes("edge-functions")&&t==="bundler"){const a=new RegExp("(.*edge-functions)(.*)"),s=e.match(a);i=s?s[1]:i}return Q&&(i=new URL(i).pathname,i.startsWith("/")&&(i=i.slice(1))),Q||(i=i.replace("file://","")),i}const rt={yarn:{fileName:"yarn.lock",pmType:"yarn"},npm:{fileName:"package-lock.json",pmType:"npm"},pnpm:{fileName:"pnpm-lock.yaml",pmType:"pnpm"}},it="npx",at=async e=>{try{return await g.promises.access(e),!0}catch{return!1}},I=new Map,ee=async e=>{const t=`has_global_${e}`;return I.has(t)?I.get(t):new Promise(n=>{W.exec(`${e} --version`,(r,i)=>{const a=!r&&/^\d+\.\d+\.\d+$/.test(i.trim());I.set(t,a),n(a)})})},st=async(e=".")=>{const t=`lockfile_${e}`;if(I.has(t))return I.get(t);const r=(await Promise.all(Object.values(rt).map(async({fileName:a,pmType:s})=>({exists:await at(c.resolve(e,a)),pmType:s})))).find(({exists:a})=>a),i=r?r.pmType:null;return I.set(t,i),i},$=async({cwd:e}={})=>{const t=await st(e);if(t)return t;const[n,r]=await Promise.all([ee("yarn"),ee("pnpm")]);return n?"yarn":r?"pnpm":it};function ot(e){const t=c.join(process.cwd(),"package.json"),n=g.readFileSync(t,"utf8"),r=JSON.parse(n);if(!r.dependencies||!r.dependencies[e])throw new Error(`'${e}' not detected in project dependencies!`);return r.dependencies[e]}async function ct(e,t){try{const n=await g.promises.readdir(e);await Promise.all(n.map(r=>g.promises.rename(c.join(e,r),c.join(t,r)))),await g.promises.rmdir(e)}catch(n){throw console.error("Error moving browser files:",n),n}}async function ut(e,t){try{const n="./dist";if(t.skipFrameworkBuild){await g.promises.mkdir(n,{recursive:!0});return}const r=await $();await E(`${r} run build ${r==="npm"?"--":""} --output-path=${n}`,{scope:"Angular",verbose:!0});const a=c.join(process.cwd(),n,"browser");try{await g.promises.access(a),await ct(a,c.join(process.cwd(),n))}catch{}}catch(n){throw new Error(`Error during Angular prebuild: ${n instanceof Error?n.message:String(n)}`)}}const lt={config:tt,metadata:fe,handler:nt,prebuild:ut},dt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./dist",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},ye={name:"astro",registry:"astro"},pt={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${ye.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}},ft=["astro.config.ts","astro.config.mjs","astro.config.js","astro.config.cjs"];async function mt(){for(const e of ft)try{await p.access(e,g.constants.F_OK);const n=(await p.readFile(e,"utf-8")).match(/outDir\s*:\s*['"`]([^'"`]+)['"`]/);if(n&&n[1])return n[1].trim();break}catch{continue}return"dist"}async function gt(e,t){try{const[n,r]=await Promise.all([$(),mt()]);if(t.skipFrameworkBuild){await p.mkdir(r,{recursive:!0});return}await E(`${n} run build`,{scope:"Astro",verbose:!0})}catch(n){throw new Error(`Error during Astro prebuild: ${n instanceof Error?n.message:String(n)}`)}}const ht={config:dt,metadata:ye,handler:pt,prebuild:gt},yt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./build",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},Ee={name:"docusaurus"},Et={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${Ee.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function Nt(e,t){const n=await $(),r="build";if(t.skipFrameworkBuild){await p.mkdir(r,{recursive:!0});return}await E(`${n} run build`,{scope:"Docusaurus",verbose:!0})}const At={config:yt,metadata:Ee,handler:Et,prebuild:Nt},$t={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./_site",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},Ne={name:"eleventy"},wt={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${Ne.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function bt(e,t){const n="_site";if(t.skipFrameworkBuild){await p.mkdir(n,{recursive:!0});return}await E("npx -y @11ty/eleventy",{scope:"Eleventy",verbose:!0})}const _t={config:$t,metadata:Ne,handler:wt,prebuild:bt},vt={build:{entry:"handler.js",bundler:"webpack",polyfills:!1,extend:e=>(e={...e,optimization:{minimize:!1},performance:{maxEntrypointSize:2097152,maxAssetSize:2097152},module:{rules:[{test:/\.wasm$/,type:"asset/inline"}]},plugins:[new Ze.optimize.LimitChunkCountPlugin({maxChunks:1})]},e)},functions:[{name:"$FUNCTION_NAME",path:"./functions/handler.js"}],applications:[{name:"$APPLICATION_NAME",rules:{request:[{name:"Execute Function",description:"Execute function for all requests",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^/"}]],behaviors:[{type:"run_function",attributes:{value:"$FUNCTION_NAME"}}]}]},functionsInstances:[{name:"$FUNCTION_INSTANCE_NAME",ref:"$FUNCTION_NAME"}]}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},Ae={name:"emscripten"};let U=null;const Ct={fetch:async e=>{try{U||(U=new Promise(r=>{import("./presets/emscripten/build/module").then(i=>{r({fetch_listener:i.cwrap("fetch_listener","string",["object"]),module:i})})}));const n=await(await U).fetch_listener(e);return new Response(n)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${Ae.name} application`,message:t instanceof Error?t.message:String(t),path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function Pt(){const r=`'["cwrap", "setValue"]'`,i=`'["_fetch_listener"]'`,d='"createModule"',m="./build/module",y="./src/main.cpp",N="-lembind";await p.mkdir("./build",{recursive:!0});const w=["emcc","-O2","-s WASM=1","-s ASYNCIFY=1",`-s EXPORTED_RUNTIME_METHODS=${r}`,`-s EXPORTED_FUNCTIONS=${i}`,"-s ALLOW_MEMORY_GROWTH=1","-s DYNAMIC_EXECUTION=0","-s TEXTDECODER=0","-s MODULARIZE=1","-s ENVIRONMENT=web",`-s EXPORT_NAME="${d}"`,"-s SINGLE_FILE=1",N,`-o ${m}`,y].join(" ");await E(w,{scope:"Emscripten",verbose:!0})}const Tt={config:vt,metadata:Ae,handler:Ct,prebuild:Pt},xt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./public",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},$e={name:"gatsby"},Ot={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${$e.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function Mt(e,t){const n=await $(),r="public";if(t.skipFrameworkBuild){await p.mkdir(r,{recursive:!0});return}await E(`${n} run build`,{scope:"Gatsby",verbose:!0})}const It={config:xt,metadata:$e,handler:Ot,prebuild:Mt},Rt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./public",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},we={name:"hexo"},St={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${we.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function Ft(e,t){const n=await $();let r="public";if(t.skipFrameworkBuild){await p.mkdir(r,{recursive:!0});return}const i=await p.readFile("./_config.yml","utf-8"),a=Array.from(i.matchAll(/public_dir:(.*)\n/g),o=>o)[0];a&&(r=a[1].trim().replace(/["']/g,"")),await E(`${n==="npm"?"npx":n} hexo generate`,{scope:"Hexo",verbose:!0})}const jt={config:Rt,metadata:we,handler:St,prebuild:Ft},kt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./www",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},be={name:"html"},Dt={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${be.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}},Lt={config:kt,metadata:be,handler:Dt},Ut={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./public",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},_e={name:"hugo"},Bt={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${_e.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function Kt(e,t){const n=await $(),r="public";if(t.skipFrameworkBuild){await p.mkdir(r,{recursive:!0});return}await E(`${n==="npm"?"npx":n} hugo`,{scope:"Hugo",verbose:!0})}const zt={config:Ut,metadata:_e,handler:Bt,prebuild:Kt},Wt={build:{entry:"index.js"},functions:[{name:"$FUNCTION_NAME",path:"./functions/index.js"}],applications:[{name:"$APPLICATION_NAME",rules:{request:[{name:"Execute Function",description:"Execute function for all requests",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^/"}]],behaviors:[{type:"run_function",attributes:{value:"$FUNCTION_NAME"}}]}]},functionsInstances:[{name:"$FUNCTION_INSTANCE_NAME",ref:"$FUNCTION_NAME"}]}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},Vt={name:"javascript",ext:"js"},Xt={config:Wt,metadata:Vt},Jt={build:{bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:"./_site",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:_({connector:"$CONNECTOR_NAME",application:"$APPLICATION_NAME"})}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]},ve={name:"jekyll",registry:"jekyll"},qt={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:`Failed to mount ${ve.name} application`,message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}};async function Ht(e,t){const n="_site";if(t.skipFrameworkBuild){await p.mkdir(n,{recursive:!0});return}await E("bundle install && bundle exec jekyll build",{scope:"Jekyll",verbose:!0})}const Yt={config:Jt,metadata:ve,handler:qt,prebuild:Ht},Gt={build:{bundler:"esbuild",polyfills:!0},storage:[{name:"$BUCKET_NAME",dir:".edge/next-build-assets",workloadsAccess:"read_only",prefix:"$BUCKET_PREFIX"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],functions:[{name:"$FUNCTION_NAME",path:"./functions/handler.js",bindings:{storage:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:{request:[{name:"Next.js Static Assets and set cache policy",description:"Serve Next.js static assets through edge connector and set cache policy",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^/_next/static/"}]],behaviors:[{type:"set_connector",attributes:{value:"$CONNECTOR_NAME"}},{type:"set_cache_policy",attributes:{value:"$APPLICATION_NAME"}},{type:"deliver"}]},{name:"Deliver Static Assets and set cache policy",description:"Serve static assets through edge connector and set cache policy",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:".(css|js|ttf|woff|woff2|pdf|svg|jpg|jpeg|gif|bmp|png|ico|mp4|json|xml|html)$"}]],behaviors:[{type:"set_connector",attributes:{value:"$CONNECTOR_NAME"}},{type:"set_cache_policy",attributes:{value:"$APPLICATION_NAME"}},{type:"deliver"}]},{name:"Execute Next.js Function",description:"Execute Next.js edge function for all requests",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^/"}]],behaviors:[{type:"run_function",attributes:{value:"$FUNCTION_NAME"}},{type:"forward_cookies"}]}]},functionsInstances:[{name:"$FUNCTION_INSTANCE_NAME",ref:"$FUNCTION_NAME"}]}],workloads:[{name:"$WORKLOAD_NAME",active:!0,infrastructure:1,deployments:[{name:"$DEPLOYMENT_NAME",current:!0,active:!0,strategy:{type:"default",attributes:{application:"$APPLICATION_NAME"}}}]}]};function Zt(e,t,n){const r=n?"":"i",i=[];return{match:Qe(`%${e}%${r}`,i).exec(t),captureGroupKeys:i}}function Ce(e,t,n){return e.replace(/\$([a-zA-Z0-9]+)/g,(i,a)=>{const s=n.indexOf(a);return(s===-1?t[parseInt(a,10)]:t[s+1])||""}).replace(/^(\/)+/,"/")}function Pe(e,t,n){const r=t instanceof Headers?t.entries():Object.entries(t);for(const[i,a]of r){const s=i.toLowerCase(),o=n?.match?Ce(a,n.match,n.captureGroupKeys):a;s==="set-cookie"?e.append(s,o):e.set(s,o)}}function Qt(e){return/^https?:\/\//.test(e)}function Te(e,t){for(const[n,r]of t.entries())if(!e.has(n)||r){e.set(n,r);const i=/^nxtP(.+)$/.exec(n);i?.[1]&&!e.has(i[1])&&e.set(i[1],r)}}function en(e,t){const n=new URL(t,e.url);return Te(n.searchParams,new URL(e.url).searchParams),new Request(n,e)}function xe(e){return new Response(e.body,e)}function tn(e){return e.split(",").map(t=>{const[n,r]=t.split(";"),i=parseFloat((r??"q=1").replace(/q *= */gi,""));return[n.trim(),Number.isNaN(i)?1:i]}).sort((t,n)=>n[1]-t[1]).map(([t])=>t==="*"||t===""?[]:t).flat()}function nn(e){const t=new Headers(e.headers);return e.cf&&(t.append("x-vercel-ip-city","request.cf.city"),t.append("x-vercel-ip-country","request.cf.country"),t.append("x-vercel-ip-country-region","request.cf.region"),t.append("x-vercel-ip-latitude","request.cf.latitude"),t.append("x-vercel-ip-longitude","request.cf.longitude")),new Request(e,{headers:t})}function rn(e,{protocol:t,hostname:n,port:r,pathname:i}){return!(t&&e.protocol.replace(/:$/,"")!==t||!new RegExp(n).test(e.hostname)||r&&!new RegExp(r).test(e.port)||i&&!new RegExp(i).test(e.pathname))}function an(e,t){if(e.method!=="GET")return;const{origin:n,searchParams:r}=new URL(e.url),i=r.get("url"),a=Number.parseInt(r.get("w")??"",10),s=Number.parseInt(r.get("q")??"75",10);if(!i||Number.isNaN(a)||Number.isNaN(s)||!t?.sizes?.includes(a)||s<0||s>100)return;const o=new URL(i,n);if(o.pathname.endsWith(".svg")&&!t?.dangerouslyAllowSVG)return;const u=i.startsWith("/")||i.startsWith("%2F");if(!u&&!t?.domains?.includes(o.hostname)&&!t?.remotePatterns?.find(f=>rn(o,f)))return;const l=e.headers.get("Accept")??"",d=t?.formats?.find(f=>l.includes(f))?.replace("image/","");return{isRelative:u,imageUrl:o,options:{width:a,quality:s,format:d}}}function sn(e,t,n){const r=new Headers;if(n?.contentSecurityPolicy&&r.set("Content-Security-Policy",n.contentSecurityPolicy),n?.contentDispositionType){const a=t.pathname.split("/").pop(),s=a?`${n.contentDispositionType}; filename="${a}"`:n.contentDispositionType;r.set("Content-Disposition",s)}e.headers.has("Cache-Control")||r.set("Cache-Control",`public, max-age=${n?.minimumCacheTTL??60}`);const i=xe(e);return Pe(i.headers,r),i}async function on(e,{buildOutput:t,assetsFetcher:n,imagesConfig:r}){const i=an(e,r);if(!i)return new Response("Invalid image resizing request",{status:400});const{isRelative:a,imageUrl:s}=i,o=new Request(s,{headers:e.headers}),u=a&&s.pathname in t?await n.fetch(o):await fetch(o);return sn(u,s,r)}const cn={fetch:async e=>{try{return await A(e.url)}catch(t){return new Response(JSON.stringify({error:"Failed to mount Next.js application",message:t instanceof Error?t.message:"Unknown error occurred",path:e.url}),{status:500,headers:{"Content-Type":"application/json"}})}}},un=async e=>{try{const t=new URL(e.url).pathname,n=new URL(t==="/"?"index.html":t,"file://");return fetch(n)}catch(t){return new Response(t.message||t.toString(),{status:500})}};async function ln(e,t,n){const r=new AsyncLocalStorage;return globalThis.process.env={...globalThis.process.env,...t},r.run({...t},async()=>{if(new URL(e.url).pathname.startsWith("/_next/image"))return on(e,{buildOutput:__BUILD_OUTPUT__,assetsFetcher:t.ASSETS,imagesConfig:__CONFIG__.images});const a=nn(e);return(await Promise.resolve().then(()=>require("./index-Dac_jQbq.cjs"))).handleRequest({request:a,ctx:n,assetsFetcher:t.ASSETS},__CONFIG__,__BUILD_OUTPUT__,__BUILD_METADATA__)})}async function dn(e,t){const n={ASSETS:{fetch:un}},r={waitUntil:t.waitUntil.bind(t),passThroughOnException:()=>null},i=new URL(decodeURI(e.url)),a=new Request(i,e);return ln(a,n,r)}async function pn(e,t,n){return globalThis.bundler?.nextBuildStatic?cn.fetch(e):dn(e,n)}const fn={fetch:pn},mn={name:"next",registry:"next"};async function gn(e,t){const n=/Object\.defineProperty\(\s*globalThis\s*,\s*"__import_unsupported"[\s\S]*?,\s*configurable\s*:\s*[^}]*\}\)/gm,r="true",i=e.entry;for(const a of Object.keys(i))try{const s=a.endsWith(".js")?a:`${a}.js`,o=c.resolve(s),l=g.readFileSync(o,"utf-8").replace(n,r);g.writeFileSync(o,l)}catch(s){throw new Error(`Failed to process file ${a}: ${s}`)}}function hn(){const e=c.join(".vercel","output","static","_next","__private");g.rmSync(e,{force:!0,recursive:!0})}function yn(){try{const e=".vercel",t=`${e}/project.json`;g.existsSync(t)||(g.existsSync(e)||g.mkdirSync(e),g.writeFileSync(t,'{"projectId":"_","orgId":"_","settings":{}}'))}catch(e){throw new Error(e.message)}}async function En(){await new Promise((e,t)=>{const n=["npx","--yes","vercel@32.6.1","build","--prod"],r=n.shift(),i=W.spawn(r,n,{shell:!0,stdio:"inherit"});i.on("close",a=>{a===0?e():t(new Error(`Command '${n.join(" ")}' failed with code ${a}`))}),i.on("exit",a=>{a===0?e():t(new Error(`Command '${n.join(" ")}' failed with code ${a}`))})})}function Nn(){try{const e=g.readFileSync(".vercel/output/config.json","utf8");return JSON.parse(e)}catch(e){throw new Error(e.message)}}const Oe={deleteTelemetryFiles:hn,createVercelProjectConfig:yn,runVercelBuild:En,loadVercelConfigs:Nn};async function Me(){const e=c.join(process.cwd(),"next.config.js");let t=null;try{t=(await import(e)).default}catch{h.prebuild.info("Configuration file ('next.config.js') not found.")}return t}function An(e,t){let n=!1;return t&&t?.length>0&&t.forEach(r=>{(e.includes(`/${r}/`)||e.includes(`/${r}.func/`))&&(n=!0)}),n}function $n(e){const t=[];function n(r,i){if(r!=="node_modules")for(const a of g.readdirSync(r,{withFileTypes:!0}))a.isDirectory()?n(c.join(r,a.name),i):a.isFile()&&i.push(c.join(r,a.name))}return n(e,t),t}function wn(e){const t=[];return $n(e).forEach(r=>{t.push(`/${c.relative(e,r)}`)}),t}function S(e){return e.startsWith("\\\\?\\")?e:e.replace(/\\/g,"/")}async function bn(e){let t=null;try{const n=await p.readFile(e,"utf8");t=JSON.parse(n)}catch{t=null}return t}async function _n(e,t){try{const n=await p.stat(e);if(t==="file"&&n.isFile())return!0;t==="directory"&&n.isDirectory()}catch{}return!1}function X(e){return _n(e,"file")}async function vn(e,t){await p.mkdir(c.dirname(t),{recursive:!0}),await p.copyFile(e,t)}function Cn(e){return e.replace(/\/\(([^)]+)\)/g,"")}function R(e){return e.startsWith("/")?e:`/${e}`}function L(e){return R(e.replace(/\/index$/,""))}function Pn(e){return e.replace(/\.func$/,"")}function J(e){return R(Cn(R(S(Pn(e)))))}function Tn(e){return e=e.replace(/(?:(JSON\.stringify\(\[\w+\.method\S+,)\w+\.mode(,\S+,)\w+\.credentials(,\S+,)\w+\.integrity(\]\)))/gm,"$1null$2null$3null$4"),e=e.replace(/"cache",("credentials","headers","integrity","keepalive","method","mode","redirect","referrer")/gm,"$1"),e=e.replace(/;let{originalRequest:([\w$]+)}=([\w$]+);/gm,";let{originalRequest:$1=$2}=$2;"),e=e.replace(/let _ENTRIES = {};/gm,"globalThis._ENTRIES = {};"),e=e.replace(/\.socket/g,"?.socket"),e}async function xn(e,t,n){const r=c.join(e,t),i=await bn(r);if(i?.type?.toLowerCase()!=="prerender"||i?.fallback?.type?.toLowerCase()!=="filefsref"||!i?.fallback?.fsPath){const a=S(c.join(n,t));return h.prebuild.info(`Invalid prerender config for ${a}`),null}return i}async function On({fallback:e},t,n){const r=S(c.join(t,e.fsPath)),i=c.join(n,"functions",r);return await X(i)?i:(h.prebuild.info(`Could not find prerendered file for ${r}`),null)}async function Mn({fallback:e},t,n){const r=S(c.join(t,e.fsPath.replace(/\.prerender-fallback(?:\.(?:rsc|body|json))?/gi,""))),i=c.join(n,"static",r);return await X(i)?(h.prebuild.info(`Prerendered file already exists for ${r}`),null):{destFile:i,destRoute:r}}async function In(e,t,n){const r=c.relative(c.join(n,"functions"),e),i=await xn(e,t,r);if(!i)return null;const a=await On(i,r,n);if(!a)return null;const s=await Mn(i,r,n);return s?{config:i,originalFile:a,destFile:s.destFile,destRoute:s.destRoute}:null}function Rn(e){const t=S(J(e)),n=t.replace(/\.html$/,""),r=L(n);return[...new Set([t,n,r].filter(a=>a!==`/${e}`))]}async function Sn(e,t,n){const r=c.resolve(".vercel","output"),i=t.filter(a=>/.+\.prerender-config\.json$/gi.test(a));for(let a=0;a<i.length;a++){const s=i[a],o=await In(n,s,r);if(!o)continue;const{config:u,originalFile:l,destFile:d,destRoute:f}=o;await vn(l,d),e.set(`/${f}`,{headers:u.initialHeaders,overrides:Rn(f)})}}async function Fn(e,t){const n=[...new Set(e.map(r=>r.replace("/.vc-config.json","").replace(/\/[^/]+\.func$/,"")))];try{await Promise.all(n.map(r=>Sn(t,g.readdirSync(r),r)))}catch(r){const i=`Error handling prerendered routes: ${r}`;throw h.prebuild.error(i),Error(i)}}const B=new Map([["nextjs-12.2.x",["edge"]],["nextjs-12.3.x",["node","edge"]],["nextjs-13.0.x",["edge"]],["nextjs-13.1.x",["edge"]],["nextjs-13.2.x",["edge"]],["nextjs-13.3.x",["edge"]],["nextjs-13.4.x",["edge"]],["nextjs-13.5.x",["edge"]],["nextjs-14.0.x",["edge"]],["nextjs-14.1.x",["edge"]],["nextjs-14.2.x",["edge"]]]);function jn(e,t,n="nextjs"){const r=F.valid(F.coerce(e)),i=`${r.split(".").slice(0,2).join(".")}.x`,a=`${n}-${r}`,s=`${n}-${i}`,o=l=>{let d=!1;const f=B.get(l);if(f.some(m=>t.includes(m))){if(!t.every(m=>f.includes(m)))return{valid:d,allowedRuntimes:f};d=!0}return{valid:d,allowedRuntimes:f}};let u={valid:!1,version:r,runtimes:t,minorVersion:i,allowedRuntimes:[]};if(B.has(a)){const l=o(a);u={...u,...l}}else if(B.has(s)){const l=o(s);u={...u,...l}}return u}async function kn(e,t){let n=t;if(e==="nextjs"){const i=(await Me())?.i18n?.locales||[];n=t.filter(a=>!An(a.path,i))}return Promise.resolve(n)}async function Dn(e=".vercel/output/functions/**/.vc-config.json"){const t=".vercel/output/functions",n=[`${t}/favicon.ico.func/.vc-config.json`,`${t}/_not-found.func/.vc-config.json`,`${t}/_not-found.rsc.func/.vc-config.json`];return et.sync(e,{ignore:n}).map(a=>({path:a,content:JSON.parse(g.readFileSync(a,"utf8"))}))}function Ln(e){return e.filter(t=>!t.path.includes("_next/data")).map(t=>({runtime:t.content.runtime,function:t.path.replace(/^\.vercel\/output\/functions\/|\.\w+\/\.vc-config\.json$/g,"")}))}async function Ie(e=".vercel/output/functions/**/.vc-config.json",t="nextjs"){let n=await Dn(e);if(!n.length)throw new Error("No .vc-config.json files found");n=await kn(t,n);const r=[...new Set(Ln(n))];let i=["edge"];const a=r.some(f=>f.runtime.startsWith("node")),s=r.some(f=>f.runtime.includes("edge"));a&&s?i=["node","edge"]:a&&(i=["node"]);const o=n.map(f=>f.content?.framework?.version).filter(Boolean),u=o.length>0?o[0]:null;u||Promise.reject(new Error("No framework version found in .vc-config.json"));const l=jn(u,i,t),d=r.filter(f=>!l.allowedRuntimes.includes(f.runtime));return Promise.resolve({vcConfigObjects:n,...l,invalidFunctions:d})}function te(e){const t=e.runtime.match(/edge/)!==null,n=e.runtime.match(/node/)!==null,r=t||n;let i=!1;return t?i=e.entrypoint!==void 0:n&&(i=e.handler!==void 0),r&&i}async function Un({functionsMap:e,invalidFunctions:t}){if(t.size!==0)for(const n of t){const r=J(n);if(e.has(r)||e.has(L(r)))t.delete(n);else if(r.endsWith(".rsc")){const i=e.get(r.replace(/\.rsc$/,""));i&&(e.set(r,i),t.delete(n))}}}async function Bn(e,t,n){const r=c.join(".vercel","output","functions"),i=n.path.replace("/.vc-config.json",""),{runtime:a}=n.content,s=a.match(/edge/),o=a.match(/node/);if(!s&&!o)throw new Error("Invalid runtime:",a);let u=!1;n.content.entrypoint==="middleware.js"&&s&&(u=!0,h.prebuild.info("Founded middleware!"),n.content.entrypoint="index");const l=s?n.content.entrypoint:n.content.handler,d=c.join(i,l),f=c.relative(r,i);if(!await X(d)){if(u)return h.prebuild.info(`Detected an invalid middleware function for ${i}. Skipping...`),{};e.invalidFunctions.add(i)}const m=J(f);let y,N;s?(N=Tn(g.readFileSync(d,"utf8")),y=c.join(t,"functions",`${f}.js`),g.mkdirSync(c.dirname(y),{recursive:!0}),g.writeFileSync(y,N)):y=c.join(t,"functions","azion-node-server.js");const w=S(y);e.functionsMap.set(m,w),m.endsWith("/index")&&e.functionsMap.set(L(m),w)}async function Kn(e,t,n){let r=n;if(!n){const{vcConfigObjects:s,valid:o,version:u,runtimes:l}=await Ie();if(!o)throw new Error(`Nextjs version (${u}) not supported to "${l}" runtime(s).`);r=s}const i={invalid:r.filter(s=>!te(s.content)),valid:r.filter(s=>te(s.content))};if(i.invalid.length>0){const o=i.invalid.filter(u=>!u.path.includes("_next/data")).map(u=>u.path.replace(/^\.vercel\/output\/functions\/|\.\w+\/\.vc-config\.json$/g,"")).join(` `);throw new Error(`Invalid functions: ${o}`)}const a=i.valid.map(s=>s.path);await Fn(a,e.prerenderedRoutes);try{await Promise.all(i.valid.map(s=>Bn(e,t,s)))}catch(s){const o=`Error adapting functions: ${s}`;throw h.prebuild.error(o),Error(o)}await Un(e)}function zn(e){e.src&&(e.locale&&e.src==="/"||(e.src.startsWith("^")||(e.src=`^${e.src}`),e.src.endsWith("$")||(e.src=`${e.src}$`)))}function Wn(e){return"handle"in e}function Vn(e){const t={...e,routes:{none:[],filesystem:[],miss:[],rewrite:[],resource:[],hit:[],error:[]}};let n="none";return e.routes?.forEach(r=>{Wn(r)?n=r.handle:(zn(r),t.routes[n].push(r))}),t}function Xn(e){return new Set(e.map(t=>t.middlewarePath??"").filter(Boolean))}function Jn(e,t){for(const n of t){const r=R(n),i=e.get(r);i?.type==="function"?(e.set(n,{...i,type:"middleware"}),e.delete(r)):h.prebuild.info(`Middleware path '${n}' does not have a function.`)}}function qn({overrides:e},t){Object.entries(e??[]).forEach(([n,{path:r,contentType:i}])=>{const a=R(n),s=R(r??""),o={type:"override",path:a,headers:i?{"content-type":i}:void 0};t.get(a)?.type==="static"&&t.set(a,o),s&&t.set(s,o);const l=L(s);l!==s&&t.set(l,o)})}function Hn(e,t){e.forEach(({headers:n,overrides:r},i)=>{i!=="/favicon.ico"&&t.set(i,{type:"override",path:i,headers:n}),r?.forEach(a=>{t.set(a,{type:"override",path:i,headers:n})})})}function Yn(e,t,n=new Map,r=new Map){const i=Vn(e),a=new Map(t.map(s=>[s,{type:"static"}]));return r.forEach((s,o)=>{s.match(/azion-node-server\.js/)?a.set(o,{type:"node",entrypoint:null}):a.set(o,{type:"function",entrypoint:s.replace(/\.rsc\.func\.js$/i,".func.js")}),/\.rsc\.func\.js$/i.test(s)&&g.rmSync(s)}),qn(i,a),Hn(n,a),Jn(a,Xn(i.routes.none)),{vercelConfig:i,vercelOutput:a}}const{loadVercelConfigs:Gn}=Oe;function Zn(e){return e.type==="static"?`{ type: ${JSON.stringify(e.type)} }`:e.type==="override"?`{ type: ${JSON.stringify(e.type)}, path: ${e.path?JSON.stringify(e.path):void 0}, headers: ${e.headers?JSON.stringify(e.headers):void 0} }`:`{ type: ${JSON.stringify(e.type)}, entrypoint: ${e.type==="node"?"null":`require('${e.entrypoint}')`} }`}function Qn(e,t){h.prebuild.info("writing references file ...");try{g.writeFileSync(e,`globalThis.__BUILD_OUTPUT__ = {${[...t.entries()].map(([n,r])=>`"${n}": ${Zn(r)}`).join(",")}};`)}catch(n){throw new Error(n.message)}}async function er(e){const t=process.cwd(),n={invalidFunctions:new Set,functionsMap:new Map,webpackChunks:new Map,wasmIdentifiers:new Map,prerenderedRoutes:new Map},r=c.join(Y.tmpdir(),Math.random().toString(36).slice(2)),i=Gn();h.prebuild.info("Mapping and transforming functions ..."),await Kn(n,r,e?.vcConfigObjects);const a=c.join(t,".vercel/output/static"),s=wn(a),o=Yn(i,s,n.prerenderedRoutes,n.functionsMap),u=c.join(Y.tmpdir(),`functions-${Math.random().toString(36).slice(2)}.js`);Qn(u,o.vercelOutput);const d=(await Me())?.i18n||{},m={hasIndexFunctions:[...o.vercelOutput.entries()].filter(([N])=>N==="/"||N==="/index").map(([N])=>N),i18n:d},y=c.resolve(he(typeof document>"u"?require("url").pathToFileURL(__filename).href:x&&x.tagName.toUpperCase()==="SCRIPT"&&x.src||new URL("index.cjs",document.baseURI).href,"presets"),"src");return{filesToInject:[`${y}/presets/next/default/handler/async-local-storage.js`,`${y}/presets/next/node/handler/index.js`,u],injection:{banner:{_ENTRIES:JSON.stringify({}),AsyncLocalStorage:JSON.stringify({})}},bundler:{defineVars:{__CONFIG__:JSON.stringify(o.vercelConfig),__BUILD_METADATA__:JSON.stringify(m)},bundlerPlugins:[]}}}function b(e){const t=c.normalize(e);return t.startsWith("/")?t:`/${t}`}function tr(e){return!!(/\b\w+\.nft\.json\b/.test(e)||/\/\.next\/trace/.test(e))}function Re(e,t,n,r,i=["node_modules"],a=["next.config"],s=[".js",".mjs",".cjs"]){const o=g.readdirSync(c.resolve(e,t),{withFileTypes:!0});for(let u=0;u<o.length;u++){const l=o[u],d=c.resolve(e,t,l.name),f=l.isDirectory(),m=c.extname(l.name).toLowerCase(),y=b(c.relative(e,d));if(f&&!i.some(N=>y.startsWith(b(N)))&&Re(e,d,n,r,i,a,s),s.includes(m)&&a.includes(`${l.name.replace(m,"")}`)){const N=b(c.basename(d));n.find(w=>w.name===N)||n.push({name:N,path:`${c.dirname(d)}${N}`})}if(l.isFile()&&r.some(N=>y.startsWith(b(N)))){if(tr(y))continue;n.push({name:b(c.relative(e,d)),path:d})}}}function nr(e){return e.endsWith("/next.config.js")||e.endsWith("/next.config.mjs")?!0:e.indexOf("/.next/server/")!==-1&&!e.endsWith(".html")&&!e.endsWith(".map")&&!e.endsWith(".json")}class rr{constructor(t){this.config=t,this.config.staticOutDir=this.config.staticOutDir||".edge/storage/next-build-assets"}run=()=>{if(this.config?.includeDirs?.length===0)throw new Error("please include at least one directory");g.rmSync(c.resolve(this.config.rootDir,this.config.staticOutDir),{recursive:!0,force:!0}),g.mkdirSync(c.resolve(this.config.rootDir,this.config.out),{recursive:!0});const t=[];Re(this.config.rootDir,"",t,this.config.includeDirs,this.config.excludeDirs);const n=t.filter(l=>this.config.staticDirs.some(d=>l.name.startsWith(b(d.name)))),r=t.filter(l=>!this.config.staticDirs.some(d=>l.name.startsWith(b(d.name))));let i="",a=` /* * Generated by Vulcan. */ `;const s=r.length+n.length;h.prebuild.interactive.await(`[%d/${s}] - build config and static files`,1);let o=0;for(let l=0;l<r.length;l++){const d=r[l],f=nr(b(d.name)),m=G.lookup(d.name);if(f){const y=c.relative(this.config.out,`/${d.path}`);a+=`import * as fileModule${l} from "${y}"; `,i+=`${JSON.stringify(d.name)}: { contentType: "${m}", content: "", isStatic: false, module: fileModule${l}, mode: "module" }, `}else{const y=c.resolve(this.config.rootDir,d.path),N=g.readFileSync(y),w=JSON.stringify(N.toString("base64"));!d.name.endsWith(".html")&&!d.name.endsWith(".map")&&(i+=`${JSON.stringify(d.name)}: { contentType: "${m}", content: ${w}, isStatic: false, module: null, mode: "inline" }, `)}o+=1,h.prebuild.interactive.await(`[%d/${s}] - ${d.name}`,o)}a+=` export const assets = { `;const u=n.map(l=>{const d=G.lookup(l.name),f=this.config.staticDirs.find(({name:N})=>l.name.includes(b(N)));let m=l.name;if(f&&f.replace!==void 0){const N=b(f.name),w=b(f.replace);m=l.name.replace(N,w==="/"?"":w)}const y=`${JSON.stringify(l.name)}: { contentType: "${d}", content: ${JSON.stringify(`${m}`)}, isStatic: true, module: null, mode: "storage" }`;return o+=1,h.prebuild.interactive.await(`[%d/${s}] - ${l.name}`,o),y});a+=i,a+=u.join(`, `),a+=`}; `,g.writeFileSync(c.resolve(this.config.rootDir,this.config.out,"statics.js"),a),h.prebuild.success(`[${o}] - The total number of files processed!`)}}async function ir(e,t){h.prebuild.info("Running build for next node server ..."),h.prebuild.info("Starting file processing!");const n=".edge/next-build",r="custom-server",i=e,a=c.resolve(he(typeof document>"u"?require("url").pathToFileURL(__filename).href:x&&x.tagName.toUpperCase()==="SCRIPT"&&x.src||new URL("index.cjs",document.baseURI).href,"presets"),"src"),s=c.join(a,"presets","next","node",r,i),o=process.cwd(),u=c.resolve(n,"custom-server");try{P(s,u)}catch{h.prebuild.error(`Custom server path not found for version ${i}!`),g.rmSync(n,{recursive:!0}),process.exit(1)}new rr({rootDir:o,includeDirs:["./.next","./public"],staticDirs:[{name:"./public",replace:"/"},{name:"./.next/static",replace:"./_next/static"}],excludeDirs:["./.next/cache","node_modules"],out:n,versionId:t.buildId}).run()}async function ne(e){const t=c.resolve(process.cwd(),".next",e),n=await p.readFile(t,"utf-8");return JSON.parse(n)}async function re(e){try{await p.access(e,p.constants.F_OK)}catch(t){if(t.code==="ENOENT")return!1;throw h.prebuild.error("Error reading file:",t),t}return!0}async function Se(){try{let e=null;const t=await re("next.config.js"),n=await re("next.config.mjs");if(t)e="next.config.js";else if(n)e="next.config.mjs";else return null;return(await import(c.join(process.cwd(),e))).default}catch(e){throw Error("Error reading next config file:",e)}}async function z(e){const t=await p.readdir(e);await Promise.all(t.map(async n=>{const r=c.join(e,n);if((await p.stat(r)).isDirectory())await z(r);else if(c.extname(n)===".html"&&n!=="index.html"&&n!=="404.html"){const a=c.basename(n,".html"),s=c.join(e,a);await p.mkdir(s,{recursive:!0});const o=c.join(s,"index.html");await p.copyFile(r,o),h.prebuild.info(`Moved ${r} to ${o}`);const u=`${c.basename(n,".html")}.txt`,l=c.join(e,u);if(t.includes(u)){const d=c.dirname(o),f=c.join(d,u);await p.copyFile(l,f),h.prebuild.info(`Moved ${l} to ${f}`)}}}))}async function ar(){const e=s=>{const o=s.split("/");return o.pop(),o.join("/")},n=(await ne("routes-manifest.json")).dynamicRoutes.map(s=>s.page);let r;try{r=await ne("app-path-routes-manifest.json")}catch{h.prebuild.info("app dir use not detected in project.");return}const a=Object.keys(r).filter(s=>s.match(/page/)).map(s=>r[s]).filter(s=>!n.includes(s)&&s!=="/");await Promise.all(a.map(async s=>{const o=".edge/storage/next-build-assets",u=[`${s}.html`,`${s}.txt`],l=e(s);await p.mkdir(c.join(process.cwd(),o,"_next",l),{recursive:!0}),await Promise.all(u.map(async d=>{const f=c.join(process.cwd(),o,d),m=c.join(process.cwd(),o,"_next",d);try{await p.copyFile(f,m)}catch(y){if(y.code!=="ENOENT")throw y}}))}))}function sr(e){return!!(["latest","*","x","X"].includes(e)||F.gte(F.valid(F.coerce(e)),"13.3.0"))}function or(e){if(!e||!e.output||e.output!=="export")throw Error(`Static site mode not enabled in project config. You must add 'output: "export"' in your 'next.config.js' or 'next.config.mjs' file if you are trying to build a Next.js v >= 13.3 static project. For more details go to https://nextjs.org/docs/pages/building-your-application/deploying/static-exports or https://nextjs.org/docs/app/building-your-application/deploying/static-exports `)}async function cr(e){h.prebuild.info("Starting Next.js static build process...");const t=ot("next");h.prebuild.info("Detected Next.js version:",t);const n=".edge/next-build-assets",r=await $();if(sr(t)){const i=await Se();or(i);let a="out";i.distDir&&(a=i.distDir),e.skipFrameworkBuild||(await E(`${r} run build`,`Next ${t}`),P(a,n),p.rm(a,{recursive:!0,force:!0}),h.prebuild.info("Adapting Next.js build output..."),await z(`${process.cwd()}/${n}`),await ar())}else e.skipFrameworkBuild||(await E(`${r} run build`,`Next ${t}`),await E(`npx next export -o ${n}`,`Next ${t}`),h.prebuild.info("Adapting Next.js build output..."),await z(`${process.cwd()}/${n}`));return h.prebuild.success("Next.js build adaptation completed successfully."),{injection:{globals:{nextBuildStatic:!0}}}}const{deleteTelemetryFiles:ur,createVercelProjectConfig:lr,runVercelBuild:dr}=Oe;async function pr(){try{h.prebuild.info("Checking vercel config file ..."),lr(),h.prebuild.info("Running Next.js vercel build ..."),await dr(),h.prebuild.info("Cleaning files ..."),ur()}catch(e){h.prebuild.error(e),process.exit(1)}}async function fr(e){if(e.includes("node")){const t=c.resolve(process.cwd(),".edge/next-build/statics.js");if(!g.readFileSync(t,"utf8").match(/export const assets = ({[\s\S]*?});/))throw new Error("Could not find assets object in statics.js")}}function mr(e){P(".vercel/output/static",e)}function gr(e){return!!(e&&e.output&&e.output==="export")}async function hr(e,t){const n=c.resolve(process.cwd(),".edge/next-build-assets");h.prebuild.info("Starting Next.js build process ..."),t.skipFrameworkBuild||await pr();const r=await Se();if(gr(r))return cr(t);const{vcConfigObjects:i,valid:a,version:s,runtimes:o,minorVersion:u,invalidFunctions:l}=await Ie();h.prebuild.info("Detected Next.js version:",s),a||(h.prebuild.error(`Nextjs version (${s}) not supported to "${o}" runtime(s). This project is not an edge project Make sure that following files have a correct configuration about edge runtime ${l.map(m=>` - ${m.function}`)} Maybe this links can help you https://nextjs.org/docs/app/building-your-application/rendering/edge-and-nodejs-runtimes#segment-runtime-option https://nextjs.org/docs/pages/building-your-application/routing/api-routes#edge-api-routes `),process.exit(1)),o.includes("node")&&await ir(u,e);const d=await er({vcConfigObjects:i}),f="src/presets/next/node/handler/index.js";return Array.isArray(o)&&o.length===1&&o[0]==="edge"&&(d.filesToInject=d.filesToInject.filter(m=>!m.includes(f))),await fr(o),mr(n),h.prebuild.success("Next.js build adaptation completed successfully."),d}const yr={config:Gt,metadata:mn,handler:fn,prebuild:hr,postbuild:gn},Er={build:{preset:"nuxt",bundler:"esbuild"},storage:[{name:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX",dir:".output/public",workloadsAccess:"read_only"}],connectors:[{name:"$CONNECTOR_NAME",active:!0,type:"storage",attributes:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}],functions:[{name:"$FUNCTION_NAME",path:"./functions/handler.js",bindings:{storage:{bucket:"$BUCKET_NAME",prefix:"$BUCKET_PREFIX"}}}],applications:[{name:"$APPLICATION_NAME",cache:[{name:"$APPLICATION_NAME",browser:{maxAgeSeconds:7200},edge:{maxAgeSeconds:7200}}],rules:{request:[{name:"Nuxt Static Assets and set cache policy",description:"Serve Nuxt static assets through edge connector and set cache policy",active:!0,criteria:[[{variable:"${uri}",conditional:"if",operator:"matches",argument:"^/_nuxt/"}]],behaviors:[{type:"set_connector",attributes:{value:"$CONNECTOR_NAME"}},{type:"set_cache_policy",attributes:{value:"$APPLICATION_NAME"}},{type:"deliver"}]},{name:"Redirect to index.html for Subpaths",description:"Handle subpath req