@griddo/cx 11.10.30 → 11.10.34-rc.1

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,25 +1,25 @@
1
- "use strict";var Zo=Object.create;var Et=Object.defineProperty;var ei=Object.getOwnPropertyDescriptor;var ti=Object.getOwnPropertyNames;var ri=Object.getPrototypeOf,oi=Object.prototype.hasOwnProperty;var ii=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ti(e))!oi.call(t,i)&&i!==r&&Et(t,i,{get:()=>e[i],enumerable:!(o=ei(e,i))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Zo(ri(t)):{},ii(e||!t||!t.__esModule?Et(r,"default",{value:t,enumerable:!0}):r,t));var Zt=u(require("node:path"));var ni=process.env.NO_COLORS,si="\x1B[0m",_t={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",gray:"\x1B[90m",bold:"\x1B[1m",dim:"\x1B[2m"},w={};for(let t in _t){let e=t;w[e]=r=>ni?r.toString():`${_t[e]}${r}${si}`}var _={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var et=u(require("node:fs/promises")),Ae=u(require("node:path"));var $t=u(require("node:path"));var It=u(require("node:fs"));var Z=u(require("node:path")),xt=u(require("node:process")),Tt=require("node:url"),Pt=t=>t instanceof URL?(0,Tt.fileURLToPath)(t):t;function At(t,e={}){let{cwd:r=xt.default.cwd(),type:o="file",stopAt:i}=e,n=Z.default.resolve(Pt(r)??""),{root:s}=Z.default.parse(n),a=i?Z.default.resolve(n,Pt(i)):s,d=Z.default.isAbsolute(t);for(;;){let m=d?t:Z.default.join(n,t);try{let f=It.default.statSync(m,{throwIfNoEntry:!1});if(o==="file"&&f?.isFile()||o==="directory"&&f?.isDirectory())return m}catch{}if(n===a||n===s)break;n=Z.default.dirname(n)}}function vt(t){let{cwd:e}=t||{},r=At("package.json",{cwd:e});return r&&$t.default.dirname(r)}var{env:y}=process;function W(t){if(!t)return!1;switch(t.trim().toLowerCase()){case"1":case"true":case"yes":case"y":case"on":return!0;default:return!1}}var Ke=y.GRIDDO_API_URL||y.API_URL,Ot=y.GRIDDO_PUBLIC_API_URL||y.PUBLIC_API_URL,Ft=y.botEmail||y.GRIDDO_BOT_USER,Ct=y.botPassword||y.GRIDDO_BOT_PASSWORD,Ji=W(y.GRIDDO_AI_EMBEDDINGS||y.GRIDDO_API_AI_EMBEDDINGS),ze=Number.parseInt(y.GRIDDO_API_CONCURRENCY_COUNT||y.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),Qe=y.GRIDDO_ASSET_PREFIX||y.ASSET_PREFIX||y.GRIDDO_RENDER_ASSET_PREFIX,ae=W(y.GRIDDO_BUILD_LOGS||y.GRIDDO_RENDER_BUILD_LOGS),Lt=Number.parseInt(y.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),Nt=y.GRIDDO_REACT_APP_INSTANCE||y.REACT_APP_INSTANCE||y.GRIDDO_APP_INSTANCE||y.GRIDDO_EDITOR_APP_INSTANCIE,Gt=W(y.GRIDDO_RENDER_DISABLE_LLMS_TXT),qi=W(y.GRIDDO_SEARCH_FEATURE||y.GRIDDO_RENDER_SEARCH_FEATURE),Vi=W(y.GRIDDO_RENDER_SKIP_BUILD_CHECKS),jt=W(y.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Mt=W(y.GRIDDO_RENDER_SSG_VERBOSE_LOGS),Xi=W(y.GRIDDO_RENDER_USE_DIST_BACKUP),Bt=W(y.GRIDDO_VERBOSE_LOGS||y.GRIDDO_RENDER_VERBOSE_LOGS),kt=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),Ze=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4");var c=class t{constructor(){}static verbose(...e){Bt&&console.log(w.yellow("verbose"),w.dim(e.join(" ")))}static build(...e){ae&&t.log(...e)}static info(...e){console.log(`${w.blue("info")} ${e.join(" ")}`)}static success(...e){console.log(`${w.green("success")} ${e.join(" ")}`)}static error(...e){console.error(`${w.red("error")} ${e.join(" ")}`)}static warn(...e){console.warn(`${w.yellow("warn")} ${e.join(" ")}`)}static log(...e){console.log(...e)}};var ai=vt({cwd:Ae.default.resolve(__dirname,"../../..")})||"",ci=Ae.default.join(ai,".griddo/cache"),Ht=Ae.default.join(ci,"db.json");async function b(t=""){let e=t||Ht;try{return JSON.parse(await et.default.readFile(e,"utf-8"))}catch(r){throw c.error(`Failed to read DB file at ${e}:`,r),r}}async function L(t,e=""){let r=e||Ht;try{await et.default.writeFile(r,JSON.stringify(t,null," "))}catch(o){throw c.error(`Failed to write DB file at ${r}:`,o),o}}var ot=u(require("node:fs/promises")),Y=u(require("node:path"));var S=u(require("node:fs/promises")),J=u(require("node:path"));var ce={error:"ArtifactError",message:"There was a problem with an artifact",expected:"An external process may have has modified or deleted one of the artifacts (files and directories).",hint:"Have there been any recent deployments? These can delete directories from the current render."};var Ut=(t,e)=>({error:"LifecycleExecutionError",message:`Exceeded maximum retry attempts (${t}) for ${e} LifeCycle`}),Wt={error:"LoginError",message:"There was a problem logging in to the API",expected:"This happens if the API is currently not working or the credentials are incorrect."};var Jt={error:"RenderUUIDError",message:`Render sentinel file does not exist.
1
+ "use strict";var ei=Object.create;var Et=Object.defineProperty;var ti=Object.getOwnPropertyDescriptor;var ri=Object.getOwnPropertyNames;var oi=Object.getPrototypeOf,ii=Object.prototype.hasOwnProperty;var ni=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ri(e))!ii.call(t,i)&&i!==r&&Et(t,i,{get:()=>e[i],enumerable:!(o=ti(e,i))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?ei(oi(t)):{},ni(e||!t||!t.__esModule?Et(r,"default",{value:t,enumerable:!0}):r,t));var er=u(require("node:path"));var si=process.env.NO_COLORS,ai="\x1B[0m",_t={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",gray:"\x1B[90m",bold:"\x1B[1m",dim:"\x1B[2m"},w={};for(let t in _t){let e=t;w[e]=r=>si?r.toString():`${_t[e]}${r}${ai}`}var _={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var et=u(require("node:fs/promises")),Ae=u(require("node:path"));var $t=u(require("node:path"));var It=u(require("node:fs"));var Z=u(require("node:path")),Tt=u(require("node:process")),xt=require("node:url"),Pt=t=>t instanceof URL?(0,xt.fileURLToPath)(t):t;function At(t,e={}){let{cwd:r=Tt.default.cwd(),type:o="file",stopAt:i}=e,n=Z.default.resolve(Pt(r)??""),{root:s}=Z.default.parse(n),a=i?Z.default.resolve(n,Pt(i)):s,d=Z.default.isAbsolute(t);for(;;){let m=d?t:Z.default.join(n,t);try{let f=It.default.statSync(m,{throwIfNoEntry:!1});if(o==="file"&&f?.isFile()||o==="directory"&&f?.isDirectory())return m}catch{}if(n===a||n===s)break;n=Z.default.dirname(n)}}function vt(t){let{cwd:e}=t||{},r=At("package.json",{cwd:e});return r&&$t.default.dirname(r)}var{env:y}=process;function W(t){if(!t)return!1;switch(t.trim().toLowerCase()){case"1":case"true":case"yes":case"y":case"on":return!0;default:return!1}}var Ke=y.GRIDDO_API_URL||y.API_URL,Ot=y.GRIDDO_PUBLIC_API_URL||y.PUBLIC_API_URL,Ft=y.botEmail||y.GRIDDO_BOT_USER,Ct=y.botPassword||y.GRIDDO_BOT_PASSWORD,qi=W(y.GRIDDO_AI_EMBEDDINGS||y.GRIDDO_API_AI_EMBEDDINGS),ze=Number.parseInt(y.GRIDDO_API_CONCURRENCY_COUNT||y.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),Qe=y.GRIDDO_ASSET_PREFIX||y.ASSET_PREFIX||y.GRIDDO_RENDER_ASSET_PREFIX,ae=W(y.GRIDDO_BUILD_LOGS||y.GRIDDO_RENDER_BUILD_LOGS),Lt=Number.parseInt(y.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),Nt=y.GRIDDO_REACT_APP_INSTANCE||y.REACT_APP_INSTANCE||y.GRIDDO_APP_INSTANCE||y.GRIDDO_EDITOR_APP_INSTANCIE,Gt=W(y.GRIDDO_RENDER_DISABLE_LLMS_TXT),Yi=W(y.GRIDDO_SEARCH_FEATURE||y.GRIDDO_RENDER_SEARCH_FEATURE),Vi=W(y.GRIDDO_RENDER_SKIP_BUILD_CHECKS),jt=W(y.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Mt=W(y.GRIDDO_RENDER_SSG_VERBOSE_LOGS),Xi=W(y.GRIDDO_RENDER_USE_DIST_BACKUP),Bt=W(y.GRIDDO_VERBOSE_LOGS||y.GRIDDO_RENDER_VERBOSE_LOGS),kt=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),Ze=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4"),Ht=Number.parseInt(y.GRIDDO_RENDER_LIFECYCLE_RETRY_ATTEMPTS||"1");var c=class t{constructor(){}static verbose(...e){Bt&&console.log(w.yellow("verbose"),w.dim(e.join(" ")))}static build(...e){ae&&t.log(...e)}static info(...e){console.log(`${w.blue("info")} ${e.join(" ")}`)}static success(...e){console.log(`${w.green("success")} ${e.join(" ")}`)}static error(...e){console.error(`${w.red("error")} ${e.join(" ")}`)}static warn(...e){console.warn(`${w.yellow("warn")} ${e.join(" ")}`)}static log(...e){console.log(...e)}};var ci=vt({cwd:Ae.default.resolve(__dirname,"../../..")})||"",di=Ae.default.join(ci,".griddo/cache"),Ut=Ae.default.join(di,"db.json");async function b(t=""){let e=t||Ut;try{return JSON.parse(await et.default.readFile(e,"utf-8"))}catch(r){throw c.error(`Failed to read DB file at ${e}:`,r),r}}async function L(t,e=""){let r=e||Ut;try{await et.default.writeFile(r,JSON.stringify(t,null," "))}catch(o){throw c.error(`Failed to write DB file at ${r}:`,o),o}}var ot=u(require("node:fs/promises")),X=u(require("node:path"));var S=u(require("node:fs/promises")),J=u(require("node:path"));var ce={error:"ArtifactError",message:"There was a problem with an artifact",expected:"An external process may have has modified or deleted one of the artifacts (files and directories).",hint:"Have there been any recent deployments? These can delete directories from the current render."};var Wt=(t,e)=>({error:"LifecycleExecutionError",message:`Exceeded maximum retry attempts (${t}) for ${e} LifeCycle`}),Jt={error:"LoginError",message:"There was a problem logging in to the API",expected:"This happens if the API is currently not working or the credentials are incorrect."};var qt={error:"RenderUUIDError",message:`Render sentinel file does not exist.
2
2
  The rendering UUID cannot be read safely.
3
3
  There was probably an instance deployment during the render, and files were deleted.
4
4
 
5
- The files generated in this render will not be published.`},qt={error:"WriteToStoreError",message:"There was an error writing a file to the Store directory",hint:"There may be an issue such as lack of space or permissions preventing the file from being written."};async function tt(t){if(!await D(t))return;let e=(await S.default.readdir(t,{withFileTypes:!0})).filter(r=>r.isDirectory());for(let r of e){let o=J.default.join(t,r.name);await di(o)&&await S.default.rm(o,{recursive:!0})}}async function Vt(t,e){for(let r of t)try{await D(r)||(await S.default.mkdir(r,{recursive:!0,...e}),c.verbose(`create directory: ${r}`))}catch(o){A(ce,o)}}async function Xt(t,e,r,o={withBackup:!1}){let{withBackup:i}=o;for(let n of r){let s=J.default.join(t,n),a=J.default.join(e,n);if(!await D(s)){c.info(`(Maybe first render) Source directory does not exist: ${s}`);continue}i&&(await zt(a),c.verbose(`create backup: ${a}`));try{await D(a)&&(await S.default.rm(a,{recursive:!0,force:!0}),c.verbose(`clean destination: ${a}`)),await S.default.cp(s,a,{recursive:!0,preserveTimestamps:!0}),c.verbose(`copy: ${s} to ${a}`),i&&(await Kt(a),c.verbose(`delete backup: ${a}`))}catch(d){i&&(await Yt(a),c.verbose("Backup has been restored.")),A(ce,d)}}}async function ee(t,e,r,o){let{override:i,withBackup:n}=o||{};for(let s of r){let a=J.default.join(t,s),d=J.default.join(e,s);if(await D(a)){n&&await zt(d);try{i&&await D(d)&&await S.default.rm(d,{recursive:!0,force:!0}),await S.default.rename(a,d),c.verbose(`moved: ${a} to ${d}`),n&&await Kt(d)}catch(m){n&&(await Yt(d),c.info("Backup has been restored.")),A(ce,m)}}}}async function de(t){for(let e of t)try{await S.default.rm(e,{recursive:!0,force:!0}),c.verbose(`artifact removed: ${e}`)}catch(r){A(ce,r)}}async function Yt(t,e="-BACKUP"){let r=t+e;try{await S.default.rename(r,t),c.info(`Backup ${r} has been restored`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function Kt(t,e="-BACKUP"){let r=t+e;if(await D(r))try{await S.default.rm(r,{recursive:!0,force:!0}),c.verbose(`Backup ${r} has been deleted`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function zt(t,e="-BACKUP"){let r=t+e;if(await D(t)){if(await D(r)){c.warn(`Destination ${r} already exists`);return}try{await S.default.rename(t,r),c.verbose(`Backup of ${t} has been created in ${r}`)}catch(o){c.error(`Error while coping ${t} to ${r} backup`),A(ce,o)}}}async function di(t){let e=(await S.default.readdir(t,{withFileTypes:!0,recursive:!0})).filter(o=>o.isFile()&&!J.default.basename(o.name).startsWith(".")),r=e.filter(o=>o.name.endsWith(".xml"));if(e.length===r.length)return!0}async function rt(t){try{if(!(await S.default.stat(t)).isDirectory())return;let r;try{r=await S.default.readdir(t)}catch(i){if(i.code==="ENOENT"){c.warn(`The directory "${t}" does not exist, skipping it.`);return}throw c.error(`Error al leer el directorio "${t}":`,i),i}for(let i of r){let n=J.default.join(t,i);await rt(n)}if((await S.default.readdir(t)).length===0)try{await S.default.rmdir(t),c.verbose(`Remove empty directory: ${t}`)}catch(i){i.code==="ENOENT"?c.warn(`El directorio "${t}" ya no existe. Posiblemente fue borrado por otra operaci\xF3n.`):c.error(`Error al borrar el directorio "${t}":`,i)}}catch(e){if(e.code==="ENOENT")c.warn(`The directory "${t}" does not exist or has already been processed.`);else throw c.error(`General error general while processing "${t}":`,e),e}}async function D(t){try{return await S.default.access(t),!0}catch{return!1}}async function*fe(t,e){let r=await S.default.opendir(t);for await(let o of r){let i=J.default.join(t,o.name);o.isDirectory()?yield*fe(i,e):o.isFile()&&o.name.endsWith(e)&&(yield i)}}async function Qt(t){let e=await b(),{exportsDir:r,exportsDirBackup:o}=e.paths;c.info(`Cleaning exports dir for the domain ${t}`),c.verbose(`Deleting ${Y.default.join(r,t)}...`),await ot.default.rm(Y.default.join(r,t),{recursive:!0,force:!0}),await D(Y.default.join(o,t))?(await ot.default.cp(Y.default.join(o,t),Y.default.join(r,t),{recursive:!0}),c.info(`export-backup dir for the domain ${t} found. Restoring before exit...`),c.verbose(`Copying ${Y.default.join(o,t)} -> ${Y.default.join(r,t)}...`)):c.info("No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...")}var le=class extends Error{constructor(e){super(e instanceof Error?e.message:String(e)),this.name="InternalCXError",this.stack=e instanceof Error?e.stack:""}};function A(t,e){let{error:r,message:o,expected:i,hint:n}=t,s=c.log(w.red(`[ ${r} ]`)),a=[i,n].filter(Boolean).join(`
5
+ The files generated in this render will not be published.`},Yt={error:"WriteToStoreError",message:"There was an error writing a file to the Store directory",hint:"There may be an issue such as lack of space or permissions preventing the file from being written."};async function tt(t){if(!await D(t))return;let e=(await S.default.readdir(t,{withFileTypes:!0})).filter(r=>r.isDirectory());for(let r of e){let o=J.default.join(t,r.name);await li(o)&&await S.default.rm(o,{recursive:!0})}}async function Vt(t,e){for(let r of t)try{await D(r)||(await S.default.mkdir(r,{recursive:!0,...e}),c.verbose(`create directory: ${r}`))}catch(o){A(ce,o)}}async function Xt(t,e,r,o={withBackup:!1}){let{withBackup:i}=o;for(let n of r){let s=J.default.join(t,n),a=J.default.join(e,n);if(!await D(s)){c.info(`(Maybe first render) Source directory does not exist: ${s}`);continue}i&&(await Qt(a),c.verbose(`create backup: ${a}`));try{await D(a)&&(await S.default.rm(a,{recursive:!0,force:!0}),c.verbose(`clean destination: ${a}`)),await S.default.cp(s,a,{recursive:!0,preserveTimestamps:!0}),c.verbose(`copy: ${s} to ${a}`),i&&(await zt(a),c.verbose(`delete backup: ${a}`))}catch(d){i&&(await Kt(a),c.verbose("Backup has been restored.")),A(ce,d)}}}async function ee(t,e,r,o){let{override:i,withBackup:n}=o||{};for(let s of r){let a=J.default.join(t,s),d=J.default.join(e,s);if(await D(a)){n&&await Qt(d);try{i&&await D(d)&&await S.default.rm(d,{recursive:!0,force:!0}),await S.default.rename(a,d),c.verbose(`moved: ${a} to ${d}`),n&&await zt(d)}catch(m){n&&(await Kt(d),c.info("Backup has been restored.")),A(ce,m)}}}}async function de(t){for(let e of t)try{await S.default.rm(e,{recursive:!0,force:!0}),c.verbose(`artifact removed: ${e}`)}catch(r){A(ce,r)}}async function Kt(t,e="-BACKUP"){let r=t+e;try{await S.default.rename(r,t),c.info(`Backup ${r} has been restored`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function zt(t,e="-BACKUP"){let r=t+e;if(await D(r))try{await S.default.rm(r,{recursive:!0,force:!0}),c.verbose(`Backup ${r} has been deleted`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function Qt(t,e="-BACKUP"){let r=t+e;if(await D(t)){if(await D(r)){c.warn(`Destination ${r} already exists`);return}try{await S.default.rename(t,r),c.verbose(`Backup of ${t} has been created in ${r}`)}catch(o){c.error(`Error while coping ${t} to ${r} backup`),A(ce,o)}}}async function li(t){let e=(await S.default.readdir(t,{withFileTypes:!0,recursive:!0})).filter(o=>o.isFile()&&!J.default.basename(o.name).startsWith(".")),r=e.filter(o=>o.name.endsWith(".xml"));if(e.length===r.length)return!0}async function rt(t){try{if(!(await S.default.stat(t)).isDirectory())return;let r;try{r=await S.default.readdir(t)}catch(i){if(i.code==="ENOENT"){c.warn(`The directory "${t}" does not exist, skipping it.`);return}throw c.error(`Error al leer el directorio "${t}":`,i),i}for(let i of r){let n=J.default.join(t,i);await rt(n)}if((await S.default.readdir(t)).length===0)try{await S.default.rmdir(t),c.verbose(`Remove empty directory: ${t}`)}catch(i){i.code==="ENOENT"?c.warn(`El directorio "${t}" ya no existe. Posiblemente fue borrado por otra operaci\xF3n.`):c.error(`Error al borrar el directorio "${t}":`,i)}}catch(e){if(e.code==="ENOENT")c.warn(`The directory "${t}" does not exist or has already been processed.`);else throw c.error(`General error general while processing "${t}":`,e),e}}async function D(t){try{return await S.default.access(t),!0}catch{return!1}}async function*fe(t,e){let r=await S.default.opendir(t);for await(let o of r){let i=J.default.join(t,o.name);o.isDirectory()?yield*fe(i,e):o.isFile()&&o.name.endsWith(e)&&(yield i)}}async function Zt(t){let e=await b(),{exportsDir:r,exportsDirBackup:o}=e.paths;c.info(`Cleaning exports dir for the domain ${t}`),c.verbose(`Deleting ${X.default.join(r,t)}...`),await ot.default.rm(X.default.join(r,t),{recursive:!0,force:!0}),await D(X.default.join(o,t))?(await ot.default.cp(X.default.join(o,t),X.default.join(r,t),{recursive:!0}),c.info(`export-backup dir for the domain ${t} found. Restoring before exit...`),c.verbose(`Copying ${X.default.join(o,t)} -> ${X.default.join(r,t)}...`)):c.info("No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...")}var le=class extends Error{constructor(e){super(e instanceof Error?e.message:String(e)),this.name="InternalCXError",this.stack=e instanceof Error?e.stack:""}};function A(t,e){let{error:r,message:o,expected:i,hint:n}=t,s=c.log(w.red(`[ ${r} ]`)),a=[i,n].filter(Boolean).join(`
6
6
  `);throw c.log(`
7
7
  ${s}
8
8
  ${o}
9
9
  ${a}
10
10
 
11
11
  ${w.red("stack")}
12
- ${JSON.stringify(e,null,2)}`),new le(e)}async function er(t){try{await t()}catch(e){e instanceof le?c.error("Internal Griddo RenderError"):e instanceof Error?c.error(e.message):c.error(`An unexpected error occurred ${e}`);try{let o=await b(),{root:i}=o.paths;o.needsRollbackOnError?(c.info("Cleaning exports dir..."),c.verbose(`Deleting ${Zt.default.join(i,"exports")}...`),await Qt(o.currentRenderingDomain)):c.info("No rollback needed, skipping...")}catch{c.info("Early render stage, no db.json created yet...")}let r=await b();throw r.domains[r.currentRenderingDomain].isRendering=!1,r.domains[r.currentRenderingDomain].renderMode=_.ERROR,await L(r),e}}var tr=u(require("node:fs/promises")),rr=u(require("node:path"));async function or(){let{version:t}=JSON.parse(await tr.default.readFile(rr.default.resolve(__dirname,"../..","package.json"),"utf-8")),e=`
12
+ ${JSON.stringify(e,null,2)}`),new le(e)}async function tr(t){try{await t()}catch(e){e instanceof le?c.error("Internal Griddo RenderError"):e instanceof Error?c.error(e.message):c.error(`An unexpected error occurred ${e}`);try{let o=await b(),{root:i}=o.paths;o.needsRollbackOnError?(c.info("Cleaning exports dir..."),c.verbose(`Deleting ${er.default.join(i,"exports")}...`),await Zt(o.currentRenderingDomain)):c.info("No rollback needed, skipping...")}catch{c.info("Early render stage, no db.json created yet...")}let r=await b();throw r.domains[r.currentRenderingDomain].isRendering=!1,r.domains[r.currentRenderingDomain].renderMode=_.ERROR,await L(r),e}}var rr=u(require("node:fs/promises")),or=u(require("node:path"));async function ir(){let{version:t}=JSON.parse(await rr.default.readFile(or.default.resolve(__dirname,"../..","package.json"),"utf-8")),e=`
13
13
  ${w.yellow(`Griddo Exporter ${t}`)}
14
14
  ${w.dim(`Node ${process.version.slice(1)}`)}
15
- `;c.log(e)}var j=process.env.GRIDDO_API_URL,li=process.env.GRIDDO_PUBLIC_API_URL,bn=`${j}/ai/embeddings`,Sn=`${li}/alert`,En=`${j}/domains`,ir=`${j}/sites/all`,nr=`${j}/page`,sr=`${j}/login_check`,_n=`${j}/debug/reset-render`,ar=`${j}/domains/robots`,Pn=`${j}/search`,cr=`${j}/settings`,mi=`${j}/domains/`,dr=[mi,"/llms"],te=`${j}/site/`,lr=[te,"/build/end"],mr=[te,"/build/start"],pr=[te,"/distributor"],fr=[te,"/sitemap"],ur=[te,"/all"],gr=[te,"/languages"],hr=[te,"/socials"];var yr={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.10.30",authors:["Hisco <francis.vega@griddo.io>"],license:"UNLICENSED",homepage:"https://griddo.io",repository:{type:"git",url:"https://github.com/griddo/griddo"},bin:{"griddo-render":"cli.mjs"},exports:{".":{import:"./build/index.js",require:"./build/index.js",types:"./build/index.d.ts"},"./react":{import:"./build/react/index.js",require:"./build/react/index.js",types:"./build/react/index.d.ts"}},scripts:{"// NPM":"",prepare:"yarn run build","// BUILD":"",build:"rm -rf build && sh ./exporter/build.sh","build:debug":"rm -rf build && sh ./exporter/build.sh --debug","// TESTS":"",test:"npm run test:compile && npm run test:create-render-fixtures && node --env-file=.env --test ./build/__tests__/* && npm run test:remove-render-fixtures","test-exporter":"npm run test:compile && node --env-file=.env --test ./build/__tests__exporter__/","test:create-render-fixtures":"node --env-file=.env ./build/__tests__/utils/create-fixtures","test:remove-render-fixtures":"node --env-file=.env ./build/__tests__/utils/remove-fixtures","test:compile":"tsgo --project tsconfig.tests.json","// INFRA SCRIPTS":"","prepare-domains-render":"node ./build/commands/prepare-domains-render","start-render":"node ./build/commands/start-render","end-render":"node ./build/commands/end-render","upload-search-content":"node ./build/commands/upload-search-content","reset-render":"node ./build/commands/reset-render","// ONLY LOCAL SCRIPTS":"","prepare-assets-directory":"node ./build/commands/prepare-assets-directory","create-rollback-copy":"rm -rf ../../exports-backup && cp -r ../../exports ../../exports-backup",render:"npm run build && node --env-file=.env cli.mjs render --root=../..","// LINTER & FORMATTER":"",lint:"biome check --write",format:"biome format --write",flint:"npm run lint && npm run format","ts-lint":"tsgo --noEmit","watch:ts-lint":"tsc --noEmit --watch"},dependencies:{gatsby:"5.15.0","html-react-parser":"5.2.11"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.10.30","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260108.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"5.9.3"},peerDependencies:{react:">=18 <19","react-dom":">=18 <19"},engines:{node:">=20.19"},files:["build","exporter","src","gatsby-browser.tsx","gatsby-config.ts","gatsby-node.ts","gatsby-ssr.tsx","global.d.ts","tsconfig.commands.json","tsconfig.exporter.json","tsconfig.json","plugins","cli.mjs"],publishConfig:{access:"public"},gitHead:"287381274d3d0fdae99a83dd5bf5633a3ddbb4e2"};var $e={"x-application-id":"griddo-cx","x-client-version":yr.version,"x-client-name":"CX"};var it=class{headers;async login(){try{let e=await fetch(sr,{method:"POST",headers:Object.assign({},$e,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:Ft,password:Ct})});if(!e.ok)throw new Error("Error while login in the API");let{token:r}=await e.json();return this.headers={Authorization:`bearer ${r}`,"Cache-Control":"no-store"},this.headers}catch(e){A(Wt,e)}}},q=new it;var ko=u(require("node:path"));async function fi(t){let e=process.hrtime.bigint();await Promise.resolve(t());let r=process.hrtime.bigint();return Number((Number(r-e)/1e9).toFixed(3))}async function O(t,e,r){let{maxRetrys:o=3,skip:i}=r||{};if(i){c.info(`Skiping life-cycle ${t}. Reason: ${i}
16
- `);return}let n=0;for(;n<o;)try{c.info(`start ${t} life-cycle`);let s=await fi(e);c.success(`${t} - ${s}s
15
+ `;c.log(e)}var j=process.env.GRIDDO_API_URL,mi=process.env.GRIDDO_PUBLIC_API_URL,Sn=`${j}/ai/embeddings`,En=`${mi}/alert`,_n=`${j}/domains`,nr=`${j}/sites/all`,sr=`${j}/page`,ar=`${j}/login_check`,Pn=`${j}/debug/reset-render`,cr=`${j}/domains/robots`,In=`${j}/search`,dr=`${j}/settings`,pi=`${j}/domains/`,lr=[pi,"/llms"],te=`${j}/site/`,mr=[te,"/build/end"],pr=[te,"/build/start"],fr=[te,"/distributor"],ur=[te,"/sitemap"],gr=[te,"/all"],hr=[te,"/languages"],yr=[te,"/socials"];var Dr={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.10.34-rc.1",authors:["Hisco <francis.vega@griddo.io>"],license:"UNLICENSED",homepage:"https://griddo.io",repository:{type:"git",url:"https://github.com/griddo/griddo"},bin:{"griddo-render":"cli.mjs"},exports:{".":{import:"./build/index.js",require:"./build/index.js",types:"./build/index.d.ts"},"./react":{import:"./build/react/index.js",require:"./build/react/index.js",types:"./build/react/index.d.ts"}},scripts:{"// NPM":"",prepare:"yarn run build","// BUILD":"",build:"rm -rf build && sh ./exporter/build.sh","build:debug":"rm -rf build && sh ./exporter/build.sh --debug","// TESTS":"",test:"npm run test:compile && npm run test:create-render-fixtures && node --env-file=.env --test ./build/__tests__/* && npm run test:remove-render-fixtures","test-exporter":"npm run test:compile && node --env-file=.env --test ./build/__tests__exporter__/","test:create-render-fixtures":"node --env-file=.env ./build/__tests__/utils/create-fixtures","test:remove-render-fixtures":"node --env-file=.env ./build/__tests__/utils/remove-fixtures","test:compile":"tsgo --project tsconfig.tests.json","// INFRA SCRIPTS":"","prepare-domains-render":"node ./build/commands/prepare-domains-render","start-render":"node ./build/commands/start-render","end-render":"node ./build/commands/end-render","upload-search-content":"node ./build/commands/upload-search-content","reset-render":"node ./build/commands/reset-render","// ONLY LOCAL SCRIPTS":"","prepare-assets-directory":"node ./build/commands/prepare-assets-directory","create-rollback-copy":"rm -rf ../../exports-backup && cp -r ../../exports ../../exports-backup",render:"npm run build && node --env-file=.env cli.mjs render --root=../..","// LINTER & FORMATTER":"",lint:"biome check --write",format:"biome format --write",flint:"npm run lint && npm run format","ts-lint":"tsgo --noEmit","watch:ts-lint":"tsc --noEmit --watch"},dependencies:{gatsby:"5.15.0","html-react-parser":"5.2.11"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.10.34-rc.1","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260108.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"5.9.3"},peerDependencies:{react:">=18 <19","react-dom":">=18 <19"},engines:{node:">=20.19"},files:["build","exporter","src","gatsby-browser.tsx","gatsby-config.ts","gatsby-node.ts","gatsby-ssr.tsx","global.d.ts","tsconfig.commands.json","tsconfig.exporter.json","tsconfig.json","plugins","cli.mjs"],publishConfig:{access:"public"},gitHead:"11975ec49f376d26b53ebd7c338b5eddd961bc5f"};var $e={"x-application-id":"griddo-cx","x-client-version":Dr.version,"x-client-name":"CX"};var it=class{headers;async login(){try{let e=await fetch(ar,{method:"POST",headers:Object.assign({},$e,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:Ft,password:Ct})});if(!e.ok)throw new Error("Error while login in the API");let{token:r}=await e.json();return this.headers={Authorization:`bearer ${r}`,"Cache-Control":"no-store"},this.headers}catch(e){A(Jt,e)}}},q=new it;var Ho=u(require("node:path"));async function ui(t){let e=process.hrtime.bigint();await Promise.resolve(t());let r=process.hrtime.bigint();return Number((Number(r-e)/1e9).toFixed(3))}async function O(t,e,r){let{maxRetrys:o=Ht,skip:i}=r||{};if(i){c.info(`Skiping life-cycle ${t}. Reason: ${i}
16
+ `);return}let n=0;for(;n<o;)try{c.info(`start ${t} life-cycle`);let s=await ui(e);c.success(`${t} - ${s}s
17
17
  `);break}catch(s){let a=w.red(` Error in ${t} LifeCycle `),d=w.yellow(`Attempt (${n+1})`);c.log(`
18
18
  ${a} ${d}
19
- `),c.log(s),c.log(),n++}n===o&&A(Ut(o,t))}var he=u(require("node:fs/promises")),ge=u(require("node:path"));var me=[],ve=null,ue=null,ui=Lt,st="render-detail-log.txt",Dr=!ae,nt=null;async function wr(){return nt||(nt=await b()),nt}async function Rr(){if(Dr)return;let t=await wr();ve=ge.default.join(t.paths.root,st),await he.default.rm(ve,{force:!0})}function ye(t){Dr||(me.push(t.toString()),me.length>=ui&&br().catch(e=>{c.error("Background log flush failed:",e)}))}async function br(){if(ue&&await ue,me.length===0||!ve)return;ue=(async()=>{let e=[...me];me.length=0;try{await he.default.appendFile(ve,`${e.join(`
19
+ `),c.log(s),c.log(),n++}n===o&&A(Wt(o,t))}var he=u(require("node:fs/promises")),ge=u(require("node:path"));var me=[],ve=null,ue=null,gi=Lt,st="render-detail-log.txt",wr=!ae,nt=null;async function Rr(){return nt||(nt=await b()),nt}async function br(){if(wr)return;let t=await Rr();ve=ge.default.join(t.paths.root,st),await he.default.rm(ve,{force:!0})}function ye(t){wr||(me.push(t.toString()),me.length>=gi&&Sr().catch(e=>{c.error("Background log flush failed:",e)}))}async function Sr(){if(ue&&await ue,me.length===0||!ve)return;ue=(async()=>{let e=[...me];me.length=0;try{await he.default.appendFile(ve,`${e.join(`
20
20
  `)}
21
- `)}catch(r){me.unshift(...e),c.error("Error flushing logs:",r)}})();try{await ue}finally{ue=null}}async function Sr(t){await br();let e=await wr(),r=gi(),o=ge.default.join(e.paths.exportsDir,t,"logs");await he.default.mkdir(o,{recursive:!0});let i=ge.default.join(e.paths.root,st),n=ge.default.join(o,`${r}-${st}`);try{await he.default.cp(i,n)}catch(s){if(s instanceof Error&&"code"in s&&s.code!=="ENOENT")throw s}}function gi(){let t=new Date,e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return`${e}-${r}-${o}_${i}-${n}-${s}`}var De=u(require("node:fs/promises")),H=u(require("node:path"));var Oe=u(require("node:fs/promises")),K=u(require("node:path"));async function Fe(t){let e=await b(),{sitesToPublish:r,createdPages:o,buildProcessData:i}=e.domains[t].renderInfo||{};if(!r||!o||!i)throw new Error("Build metadata not found");return{buildProcessData:i,createdPages:o,sitesToPublish:r}}async function Er(t,e){let r=await b();r.domains[e]=r.domains[e]||{},r.domains[e].renderInfo=t,await L(r)}async function _r(t,e){let{__root:r}=await R();try{let o=new Set(["editorID","parentEditorID"]);for(let i of e){yi(i,o);let n=`${i.context.page.id}.json`,s=K.default.join(r,"store",t,n);await hi(s,JSON.stringify(i))}}catch(o){A(qt,o)}}async function Pr(t,e){let{__root:r}=await R({domain:e}),o=K.default.join(r,"store");if(!await D(o))return;let i=await Oe.default.readdir(o),n=t.map(({id:a})=>`${a}`),s=i.filter(a=>!n.includes(a));for(let a of s)await Oe.default.rm(K.default.join(o,a),{recursive:!0,force:!0}),c.verbose(`Removed orphan site id: ${a}`)}async function hi(t,e){let r=K.default.dirname(t),o=K.default.extname(t),i=K.default.basename(t,o),n=t,s=1;for(;await D(n);){let a=`${i}-${s}${o}`;n=K.default.join(r,a),s++}await Oe.default.writeFile(n,e)}function yi(t,e){function r(o){if(!(!o||typeof o!="object"||Array.isArray(o))){for(let i in o)if(Object.hasOwn(o,i))if(e.has(i))delete o[i];else{let n=o[i];typeof n=="object"&&n!==null&&!Array.isArray(n)&&r(n)}}}r(t)}async function Ir(t){let{domain:e}=t,r=await b();r.domains[e].isRendering=!0,await L(r);let{__ssg:o}=await R(),i=H.default.join(o,`.render-sentinel-${e}`);await De.default.writeFile(i,new Date().toISOString())}async function xr(t){let e=await b();e.domains[t].isRendering=!1,e.currentRenderingDomain=null,e.domains[t].renderMode=_.COMPLETED,await L(e);let{__ssg:r}=await R(),o=H.default.join(r,`.render-sentinel-${t}`);await De.default.unlink(o)}async function Tr(t){let{__ssg:e}=await R(),r=H.default.join(e,`.render-sentinel-${t}`);await D(r)||A(Jt)}async function Ar(t){let{basePath:e}=t,o=(await b()).commitHash;await De.default.writeFile(H.default.join(e,"commit"),o)}async function $r(t){let e=await b();if(!e.domains[t])throw new Error(w.red(`[!] Error: Domain ${t} not found in DB`));if(!e.domains[t].renderMode)throw new Error(w.red(`[!] Error: Render mode not found for domain ${t}`));return{renderMode:e.domains[t].renderMode,reason:e.domains[t].renderModeReason}}async function R(t){let{domain:e,dbFilePath:r}=t||{},i=(await b(r)).paths;return{__root:i.root,__cache:H.default.join(i.cxCache,e||""),__components:i.components,__cx:i.cx,__sites:i.exportsDir,__exports:H.default.join(i.exportsDir,e||""),__exports_backup:H.default.join(i.exportsDirBackup,e||""),__ssg:i.ssg,__exports_dist:H.default.join(i.exportsDir,e||"","dist")}}async function at(){let t=await b();return{griddoVersion:t.griddoVersion,buildReportFileName:t.buildReportFileName}}async function vr(t){let e=await q.login(),{__root:r}=await R(),{buildReportFileName:o}=await at(),{buildProcessData:i}=await Fe(t),n=Object.keys(i).map(d=>({...i[d],siteId:Number.parseInt(d)})),s={authControl:e,sites:n},a=H.default.join(r,"current-dist",o);await De.default.writeFile(a,JSON.stringify(s)),c.verbose(`build report saved in ${a}`)}var F=u(require("node:path"));async function Or(t){let{__exports:e,__cache:r,__root:o,__ssg:i}=await R({domain:t});return{initials:[e,r,F.default.join(e,"logs"),F.default.join(o,"store"),F.default.join(o,"apiCache")],disposables:[F.default.join(o,"store"),F.default.join(o,"apiCache"),F.default.join(o,"dist"),F.default.join(o,"dist-restored"),F.default.join(o,"assets"),F.default.join(o,"render-detail-log.txt"),F.default.join(o,"current-dist"),F.default.join(i,"domains.json"),F.default.join(i,"render-metadata.json")],cacheables:[],archivables:["assets"],restaurable:["dist"]}}var Ce=class{domain;renderMode;pathsHydratedWithDomain;pagesToCreate=[];pagesToDelete=[];ssg;renderMetadata;renderArtifacts;constructor({domain:e,renderMode:r,ssg:o,pathsHydratedWithDomain:i,renderMetadata:n,renderArtifacts:s}){this.domain=e,this.renderMode=r,this.pathsHydratedWithDomain=i,this.renderMetadata=n,this.renderArtifacts=s,this.ssg=o}};var Le=u(require("node:fs/promises")),Ne=u(require("node:path"));async function Fr(t){let{renderArtifacts:e,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o,__exports:i},renderMode:n}=t;n===_.FROM_SCRATCH&&(await Le.default.rm(Ne.default.join(o,".cache"),{recursive:!0,force:!0}),await Le.default.rm(Ne.default.join(i,"dist"),{recursive:!0,force:!0}),await Le.default.rm(Ne.default.join(i,"assets"),{recursive:!0,force:!0})),await de(e.disposables),await de(r.disposables)}async function Cr(t){let{renderArtifacts:e,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o}}=t;await de(e.disposables),await de(r.disposables),await Ar({basePath:o})}var ke=u(require("node:fs/promises")),be=u(require("node:path"));var ct=class{value;next;constructor(e){this.value=e}},we=class{#e;#t;#r;constructor(){this.clear()}enqueue(e){let r=new ct(e);this.#e?(this.#t.next=r,this.#t=r):(this.#e=r,this.#t=r),this.#r++}dequeue(){let e=this.#e;if(e)return this.#e=this.#e.next,this.#r--,this.#e||(this.#t=void 0),e.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#r=0}get size(){return this.#r}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#e;)yield this.dequeue()}};function Re(t){Lr(t);let e=new we,r=0,o=()=>{r<t&&e.size>0&&(r++,e.dequeue()())},i=()=>{r--,o()},n=async(d,m,f)=>{let l=(async()=>d(...f))();m(l);try{await l}catch{}i()},s=(d,m,f)=>{new Promise(l=>{e.enqueue(l)}).then(n.bind(void 0,d,m,f)),r<t&&o()},a=(d,...m)=>new Promise(f=>{s(d,f,m)});return Object.defineProperties(a,{activeCount:{get:()=>r},pendingCount:{get:()=>e.size},clearQueue:{value(){e.clear()}},concurrency:{get:()=>t,set(d){Lr(d),t=d,queueMicrotask(()=>{for(;r<t&&e.size>0;)o()})}},map:{async value(d,m){let f=Array.from(d,(l,p)=>this(m,l,p));return Promise.all(f)}}}),a}function Lr(t){if(!((Number.isInteger(t)||t===Number.POSITIVE_INFINITY)&&t>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var je=u(require("node:readline")),Ge=class t{constructor(e,r){this.siteName=e;this.total=r;this.startTime=Date.now()}startTime;isFinished=!1;width=20;static ANSI_REGEX=/\u001b\[[0-9;]*m/g;update(e){if(this.isFinished)return;let o=(Date.now()-this.startTime)/1e3,i=this.total>0?Math.min(Math.max(e/this.total,0),1):0,n=o>0?e/o:0;if(e>=this.total){this.isFinished=!0;let s=`Fetched pages from ${this.siteName}: ${this.total} pages - ${n.toFixed(1)}p/s - ${this.formatTime(o)}`;this.writeToLine(s),this.finish();return}if(!process.env.CI){let s=Math.floor(i*100),a=this.total-e,d=n>0?Math.ceil(a/n):0,m=Math.round(this.width*i),f=this.width-m,l=`${"\u2588".repeat(m)}${"\u2591".repeat(f)}`,p=`Fetching pages from ${this.siteName}: ${l} ${s}% - (${e}/${this.total}) - ${n.toFixed(1)}p/s - ETA: ${this.formatTime(d)}`;this.writeToLine(p)}}writeToLine(e){je.clearLine(process.stdout,0),je.cursorTo(process.stdout,0);let r=process.stdout.columns||80;if(e.replace(t.ANSI_REGEX,"").length>r){let i=e.replace(t.ANSI_REGEX,"");process.stdout.write(`${i.substring(0,r-3)}...`)}else process.stdout.write(e)}finish(){process.stdout.write(`
22
- `)}formatTime(e){if(!Number.isFinite(e)||e<0)return"--:--";let r=Math.floor(e/3600),o=Math.floor(e%3600/60),i=Math.floor(e%60),n=o.toString().padStart(2,"0"),s=i.toString().padStart(2,"0");return r>0?`${r}:${n}:${s}`:`${n}:${s}`}};var jr=u(require("node:crypto")),Me=u(require("node:fs/promises")),dt=u(require("node:path"));async function lt(t,e,r=""){let{endpoint:o,body:i,cacheKey:n="",attempt:s=1,headers:a,useApiCacheDir:d=!0,logToFile:m=!0}=t,f={endpoint:o,body:i,headers:a,cacheKey:n};if(n&&d){let l=new Date,p=await bi(f);if(p){if(m){let g=Nr(p),h=g?`site: ${g}`:"",P=Gr(Date.now()-l.getTime());ye(`${e} (cache) ${h} ${o} - ${P}s ${r}`)}return p}}try{let l=new Date,p={method:e.toUpperCase(),headers:Object.assign({},$e,a,q.headers)};e.toLowerCase()!=="get"&&i&&(p.body=JSON.stringify(i),p.headers||(p.headers={}),p.headers["Content-Type"]="application/json");let g=await fetch(o,p);if(!g.ok){if(g.status===404)return null;throw new Error(`HTTP ${g.status}: ${g.statusText}`)}let h=await g.json();if(m){let P=Nr(h),N=P?`site: ${P}`:"",I=Gr(Date.now()-l.getTime());ye(`${e} (fetch) ${N} ${o} - ${I}s ${r}`)}return d&&await Ri(f,h),h}catch(l){let p=l;if(s>Ze)throw c.log(`
21
+ `)}catch(r){me.unshift(...e),c.error("Error flushing logs:",r)}})();try{await ue}finally{ue=null}}async function Er(t){await Sr();let e=await Rr(),r=hi(),o=ge.default.join(e.paths.exportsDir,t,"logs");await he.default.mkdir(o,{recursive:!0});let i=ge.default.join(e.paths.root,st),n=ge.default.join(o,`${r}-${st}`);try{await he.default.cp(i,n)}catch(s){if(s instanceof Error&&"code"in s&&s.code!=="ENOENT")throw s}}function hi(){let t=new Date,e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return`${e}-${r}-${o}_${i}-${n}-${s}`}var De=u(require("node:fs/promises")),H=u(require("node:path"));var Oe=u(require("node:fs/promises")),K=u(require("node:path"));async function Fe(t){let e=await b(),{sitesToPublish:r,createdPages:o,buildProcessData:i}=e.domains[t].renderInfo||{};if(!r||!o||!i)throw new Error("Build metadata not found");return{buildProcessData:i,createdPages:o,sitesToPublish:r}}async function _r(t,e){let r=await b();r.domains[e]=r.domains[e]||{},r.domains[e].renderInfo=t,await L(r)}async function Pr(t,e){let{__root:r}=await R();try{let o=new Set(["editorID","parentEditorID"]);for(let i of e){Di(i,o);let n=`${i.context.page.id}.json`,s=K.default.join(r,"store",t,n);await yi(s,JSON.stringify(i))}}catch(o){A(Yt,o)}}async function Ir(t,e){let{__root:r}=await R({domain:e}),o=K.default.join(r,"store");if(!await D(o))return;let i=await Oe.default.readdir(o),n=t.map(({id:a})=>`${a}`),s=i.filter(a=>!n.includes(a));for(let a of s)await Oe.default.rm(K.default.join(o,a),{recursive:!0,force:!0}),c.verbose(`Removed orphan site id: ${a}`)}async function yi(t,e){let r=K.default.dirname(t),o=K.default.extname(t),i=K.default.basename(t,o),n=t,s=1;for(;await D(n);){let a=`${i}-${s}${o}`;n=K.default.join(r,a),s++}await Oe.default.writeFile(n,e)}function Di(t,e){function r(o){if(!(!o||typeof o!="object"||Array.isArray(o))){for(let i in o)if(Object.hasOwn(o,i))if(e.has(i))delete o[i];else{let n=o[i];typeof n=="object"&&n!==null&&!Array.isArray(n)&&r(n)}}}r(t)}async function Tr(t){let{domain:e}=t,r=await b();r.domains[e].isRendering=!0,await L(r);let{__ssg:o}=await R(),i=H.default.join(o,`.render-sentinel-${e}`);await De.default.writeFile(i,new Date().toISOString())}async function xr(t){let e=await b();e.domains[t].isRendering=!1,e.currentRenderingDomain=null,e.domains[t].renderMode=_.COMPLETED,await L(e);let{__ssg:r}=await R(),o=H.default.join(r,`.render-sentinel-${t}`);await De.default.unlink(o)}async function Ar(t){let{__ssg:e}=await R(),r=H.default.join(e,`.render-sentinel-${t}`);await D(r)||A(qt)}async function $r(t){let{basePath:e}=t,o=(await b()).commitHash;await De.default.writeFile(H.default.join(e,"commit"),o)}async function vr(t){let e=await b();if(!e.domains[t])throw new Error(w.red(`[!] Error: Domain ${t} not found in DB`));if(!e.domains[t].renderMode)throw new Error(w.red(`[!] Error: Render mode not found for domain ${t}`));return{renderMode:e.domains[t].renderMode,reason:e.domains[t].renderModeReason}}async function R(t){let{domain:e,dbFilePath:r}=t||{},i=(await b(r)).paths;return{__root:i.root,__cache:H.default.join(i.cxCache,e||""),__components:i.components,__cx:i.cx,__sites:i.exportsDir,__exports:H.default.join(i.exportsDir,e||""),__exports_backup:H.default.join(i.exportsDirBackup,e||""),__ssg:i.ssg,__exports_dist:H.default.join(i.exportsDir,e||"","dist")}}async function at(){let t=await b();return{griddoVersion:t.griddoVersion,buildReportFileName:t.buildReportFileName}}async function Or(t){let e=await q.login(),{__root:r}=await R(),{buildReportFileName:o}=await at(),{buildProcessData:i}=await Fe(t),n=Object.keys(i).map(d=>({...i[d],siteId:Number.parseInt(d)})),s={authControl:e,sites:n},a=H.default.join(r,"current-dist",o);await De.default.writeFile(a,JSON.stringify(s)),c.verbose(`build report saved in ${a}`)}var F=u(require("node:path"));async function Fr(t){let{__exports:e,__cache:r,__root:o,__ssg:i}=await R({domain:t});return{initials:[e,r,F.default.join(e,"logs"),F.default.join(o,"store"),F.default.join(o,"apiCache")],disposables:[F.default.join(o,"store"),F.default.join(o,"apiCache"),F.default.join(o,"dist"),F.default.join(o,"dist-restored"),F.default.join(o,"assets"),F.default.join(o,"render-detail-log.txt"),F.default.join(o,"current-dist"),F.default.join(i,"domains.json"),F.default.join(i,"render-metadata.json")],cacheables:[],archivables:["assets"],restaurable:["dist"]}}var Ce=class{domain;renderMode;pathsHydratedWithDomain;pagesToCreate=[];pagesToDelete=[];ssg;renderMetadata;renderArtifacts;constructor({domain:e,renderMode:r,ssg:o,pathsHydratedWithDomain:i,renderMetadata:n,renderArtifacts:s}){this.domain=e,this.renderMode=r,this.pathsHydratedWithDomain=i,this.renderMetadata=n,this.renderArtifacts=s,this.ssg=o}};var Le=u(require("node:fs/promises")),Ne=u(require("node:path"));async function Cr(t){let{renderArtifacts:e,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o,__exports:i},renderMode:n}=t;n===_.FROM_SCRATCH&&(await Le.default.rm(Ne.default.join(o,".cache"),{recursive:!0,force:!0}),await Le.default.rm(Ne.default.join(i,"dist"),{recursive:!0,force:!0}),await Le.default.rm(Ne.default.join(i,"assets"),{recursive:!0,force:!0})),await de(e.disposables),await de(r.disposables)}async function Lr(t){let{renderArtifacts:e,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o}}=t;await de(e.disposables),await de(r.disposables),await $r({basePath:o})}var ke=u(require("node:fs/promises")),be=u(require("node:path"));var ct=class{value;next;constructor(e){this.value=e}},we=class{#e;#t;#r;constructor(){this.clear()}enqueue(e){let r=new ct(e);this.#e?(this.#t.next=r,this.#t=r):(this.#e=r,this.#t=r),this.#r++}dequeue(){let e=this.#e;if(e)return this.#e=this.#e.next,this.#r--,this.#e||(this.#t=void 0),e.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#r=0}get size(){return this.#r}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#e;)yield this.dequeue()}};function Re(t){Nr(t);let e=new we,r=0,o=()=>{r<t&&e.size>0&&(r++,e.dequeue()())},i=()=>{r--,o()},n=async(d,m,f)=>{let l=(async()=>d(...f))();m(l);try{await l}catch{}i()},s=(d,m,f)=>{new Promise(l=>{e.enqueue(l)}).then(n.bind(void 0,d,m,f)),r<t&&o()},a=(d,...m)=>new Promise(f=>{s(d,f,m)});return Object.defineProperties(a,{activeCount:{get:()=>r},pendingCount:{get:()=>e.size},clearQueue:{value(){e.clear()}},concurrency:{get:()=>t,set(d){Nr(d),t=d,queueMicrotask(()=>{for(;r<t&&e.size>0;)o()})}},map:{async value(d,m){let f=Array.from(d,(l,p)=>this(m,l,p));return Promise.all(f)}}}),a}function Nr(t){if(!((Number.isInteger(t)||t===Number.POSITIVE_INFINITY)&&t>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var je=u(require("node:readline")),Ge=class t{constructor(e,r){this.siteName=e;this.total=r;this.startTime=Date.now()}startTime;isFinished=!1;width=20;static ANSI_REGEX=/\u001b\[[0-9;]*m/g;update(e){if(this.isFinished)return;let o=(Date.now()-this.startTime)/1e3,i=this.total>0?Math.min(Math.max(e/this.total,0),1):0,n=o>0?e/o:0;if(e>=this.total){this.isFinished=!0;let s=`Fetched pages from ${this.siteName}: ${this.total} pages - ${n.toFixed(1)}p/s - ${this.formatTime(o)}`;this.writeToLine(s),this.finish();return}if(!process.env.CI){let s=Math.floor(i*100),a=this.total-e,d=n>0?Math.ceil(a/n):0,m=Math.round(this.width*i),f=this.width-m,l=`${"\u2588".repeat(m)}${"\u2591".repeat(f)}`,p=`Fetching pages from ${this.siteName}: ${l} ${s}% - (${e}/${this.total}) - ${n.toFixed(1)}p/s - ETA: ${this.formatTime(d)}`;this.writeToLine(p)}}writeToLine(e){je.clearLine(process.stdout,0),je.cursorTo(process.stdout,0);let r=process.stdout.columns||80;if(e.replace(t.ANSI_REGEX,"").length>r){let i=e.replace(t.ANSI_REGEX,"");process.stdout.write(`${i.substring(0,r-3)}...`)}else process.stdout.write(e)}finish(){process.stdout.write(`
22
+ `)}formatTime(e){if(!Number.isFinite(e)||e<0)return"--:--";let r=Math.floor(e/3600),o=Math.floor(e%3600/60),i=Math.floor(e%60),n=o.toString().padStart(2,"0"),s=i.toString().padStart(2,"0");return r>0?`${r}:${n}:${s}`:`${n}:${s}`}};var Mr=u(require("node:crypto")),Me=u(require("node:fs/promises")),dt=u(require("node:path"));async function lt(t,e,r=""){let{endpoint:o,body:i,cacheKey:n="",attempt:s=1,headers:a,useApiCacheDir:d=!0,logToFile:m=!0}=t,f={endpoint:o,body:i,headers:a,cacheKey:n};if(n&&d){let l=new Date,p=await Si(f);if(p){if(m){let g=Gr(p),h=g?`site: ${g}`:"",P=jr(Date.now()-l.getTime());ye(`${e} (cache) ${h} ${o} - ${P}s ${r}`)}return p}}try{let l=new Date,p={method:e.toUpperCase(),headers:Object.assign({},$e,a,q.headers)};e.toLowerCase()!=="get"&&i&&(p.body=JSON.stringify(i),p.headers||(p.headers={}),p.headers["Content-Type"]="application/json");let g=await fetch(o,p);if(!g.ok){if(g.status===404)return null;throw new Error(`HTTP ${g.status}: ${g.statusText}`)}let h=await g.json();if(m){let P=Gr(h),N=P?`site: ${P}`:"",I=jr(Date.now()-l.getTime());ye(`${e} (fetch) ${N} ${o} - ${I}s ${r}`)}return d&&await bi(f,h),h}catch(l){let p=l;if(s>Ze)throw c.log(`
23
23
  Max attempts ${Ze} reached
24
24
  --------------------------------------
25
25
  - ${e.toUpperCase()} ${o}
@@ -27,7 +27,7 @@ Max attempts ${Ze} reached
27
27
  - HEADERS: ${JSON.stringify(a)}
28
28
  - ERROR: ${p.message}
29
29
  --------------------------------------
30
- `),new le(p);return Di(p,{callInfo:{endpoint:o,body:i}}),c.warn(`Waiting for retry: ${e}`,o),await wi(kt*1e3),lt({endpoint:o,body:i,headers:a,cacheKey:n,attempt:s+1},e,r)}}async function $(t){return lt(t,"get")}async function mt(t){let{endpoint:e,body:r,headers:o}=t,i=e.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(r)} lang: ${JSON.stringify(o?.lang)}`;return lt(t,"post",i||"")}function Di(t,e){let{message:r,stack:o}=t,{callInfo:i}=e,n=[];for(let d of Object.keys(i))n.push(`${d}: ${typeof i[d]=="object"?JSON.stringify(i[d]):i[d]}`);let s=n.join(`
30
+ `),new le(p);return wi(p,{callInfo:{endpoint:o,body:i}}),c.warn(`Waiting for retry: ${e}`,o),await Ri(kt*1e3),lt({endpoint:o,body:i,headers:a,cacheKey:n,attempt:s+1},e,r)}}async function $(t){return lt(t,"get")}async function mt(t){let{endpoint:e,body:r,headers:o}=t,i=e.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(r)} lang: ${JSON.stringify(o?.lang)}`;return lt(t,"post",i||"")}function wi(t,e){let{message:r,stack:o}=t,{callInfo:i}=e,n=[];for(let d of Object.keys(i))n.push(`${d}: ${typeof i[d]=="object"?JSON.stringify(i[d]):i[d]}`);let s=n.join(`
31
31
  `),a=`${r}
32
32
  ${o}`;c.warn(w.red(`
33
33
  =============
@@ -39,33 +39,33 @@ ${s}
39
39
  ${a}
40
40
 
41
41
  =============
42
- `))}function Nr(t){if(!(typeof t!="object"||t===null||Array.isArray(t)))return"site"in t&&t.site?t.site:void 0}function wi(t){return new Promise(e=>setTimeout(e,t))}function Gr(t,e=3){return Number.parseFloat((t/1e3).toFixed(e))}async function Mr(t){let{__root:e}=await R(),r=dt.default.join(e,"apiCache"),o=jr.default.createHash("sha256");return o.update(JSON.stringify(t)),`${r}/${o.digest("hex")}`}async function Ri(t,e){let r=typeof e=="string"?e:JSON.stringify(e),o=await Mr(t),i=dt.default.dirname(o);await D(i)||await Me.default.mkdir(i,{recursive:!0}),await Me.default.writeFile(o,r,"utf8")}async function bi(t){try{let e=await Mr(t),r=await Me.default.readFile(e,"utf8");return JSON.parse(r)}catch{return null}}var Vr=u(require("node:fs/promises")),Xr=u(require("node:path"));async function Br(t){return $({endpoint:`${ir}?domainSlug=${t}`})}async function kr(t,e){return $({endpoint:`${nr}/${t}`,cacheKey:e})}async function Hr(t,e=""){let[r,o]=ur;return $({endpoint:`${r}${t}${o}`,cacheKey:e})}async function pt(t,e=""){let[r,o]=gr;return $({endpoint:`${r}${t}${o}`,cacheKey:e})}async function ft(t){let[e,r]=mr;return $({endpoint:`${e}${t}${r}`})}async function Ur(t,e){let[r,o]=lr;await mt({endpoint:`${r}${t}${o}`,body:e,useApiCacheDir:!1,logToFile:!1})}async function Wr(t,e,r,o,i){let[n,s]=pr,a=o||t.site,d=i||t.language;return mt({endpoint:`${n}${a}${s}`,body:e,headers:{lang:d},cacheKey:r})}async function Jr(t){let{siteId:e,headers:r}=t,[o,i]=fr;return $({endpoint:`${o}${e}${i}`,headers:r})}async function qr(t,e=""){let[r,o]=hr;return $({endpoint:`${r}${t}${o}`,cacheKey:e})}async function Yr(t){let e=await Br(t);if(e.length)for(let i of e){let{items:n}=await pt(i.id);i.domains=n.filter(s=>s.domain&&(s.domain.slug===t||s.domain.slug===`/${t}`)).map(s=>({[s.id]:`${s.domain.slug}${s.path}`}))}let r=e.filter(i=>!!i.isPublished),o=e.filter(i=>!i.isPublished&&i.shouldBeUpdated);return{sitesToPublish:r,sitesToUnpublish:o}}async function Kr(t){let{__root:e}=await R();for(let r of t){let o=await ft(r.id),{siteHash:i}=o,n={siteHash:i,publishHashes:[],unpublishHashes:[],publishPagesIds:[]};await Ur(r.id,n),await Vr.default.rm(Xr.default.join(e,"store",r.id.toString()),{force:!0,recursive:!0})}}async function zr(t){let e=await ft(t),r=await Hr(t),o=await pt(t),i=await qr(t),n=o.items,s=n.find(h=>h.isDefault),{siteHash:a,unpublishHashes:d,publishIds:m}=e,{headers:f,footers:l}=r;return{siteInfo:r,validPagesIds:m,siteHash:a,unpublishHashes:d,siteLangs:n,defaultLang:s,headers:f,footers:l,socials:i}}var Be=class{_defaultHeaders;_defaultFooters;_navigations;constructor(){this._navigations={footers:[],headers:[]},this._defaultHeaders={},this._defaultFooters={}}set navigations(e){this._navigations=e,this._defaultFooters=this.getDefaultFooters(),this._defaultHeaders=this.getDefaultHeaders()}get navigations(){return this._navigations}getDefaultFooters(){let r=[...this.navigations.footers].filter(i=>i.setAsDefault),o={};for(let i of r)o[i.language]=i;return o}getDefaultHeaders(){let r=[...this.navigations.headers].filter(i=>i.setAsDefault),o={};for(let i of r)o[i.language]=i;return o}getRightLanguage(e,r,o){if(!e||!r)return null;let n=e.find(s=>s.language===o&&s.navigationLanguages?.find(a=>a.navigationId===r))||e.find(s=>s.id===r);return n?{...n}:null}getPageHeader(e,r){return this.getRightLanguage(this.navigations.headers,e,r)}getPageFooter(e,r){return this.getRightLanguage(this.navigations.footers,e,r)}getPageNavigations(e){let{header:r,footer:o,language:i,template:n,templateConfig:s}=e,{templateType:a}=n,{defaultHeader:d,defaultFooter:m,templates:f}=s,l=N=>{let I=N.find(C=>typeof C=="number");return typeof I=="number"?I:null},p=l([r,f?.[a]?.defaultHeader,d]),g=l([o,f?.[a]?.defaultFooter,m]),h=p?this.getPageHeader(p,i):p===0?null:this._defaultHeaders[i],P=g?this.getPageFooter(g,i):g===0?null:this._defaultFooters[i];return{header:h,footer:P}}};function ut(t,e,r,o="jpg"){let i=typeof t=="string"?t:t?.url;return i?i.split("/")[2].includes("cloudinary.com")?Ei(i,`c_fill,w_${e},h_${r}`):Si(i,`f/${o}/w/${e}/h/${r}`):null}function Si(t,e){let r=t.split("/"),o=r.slice(0,-1).join("/"),i=r.slice(-1)[0];return`${o}/${e}/${i}`}function Ei(t,e){let r=t.replace("https://",""),o=r.split("/").slice(0,4).join("/"),i=r.replace(o,"");return`https://${o}/${e}${i}`}var _i=25;function Pi({socialTitle:t,socialDescription:e,socialImage:r}){return{type:"website",title:t,description:e,image:r?ut(r,1280,768):"",twitterImage:r?ut(r,1280,768):""}}function Ii(t){let{title:e,metaTitle:r,metaDescription:o,canonicalURL:i,locale:n,url:s,isIndexed:a,follow:d,metasAdvanced:m,pageLanguages:f,fullUrl:l,metaKeywords:p}=t,g=m?.split(",").filter(Boolean).map(h=>h.trim().toLowerCase())||[];return{title:(r||e||"").trim(),description:o,canonical:i?.trim()&&i!==l?i.trim():a?l:void 0,locale:n,url:s,index:a?"index":"noindex",follow:d?"follow":"nofollow",translate:g.includes("notranslate")?"notranslate":"",metasAdvanced:g.filter(h=>h!=="notranslate").join(),pageLanguages:f,metaKeywords:p?.filter(Boolean).map(h=>h.replace(/"/g,"'")).join(", ")}}async function ht(t,e){let{id:r,title:o,fullPath:i,language:n,breadcrumb:s,socialDescription:a,socialImage:d,socialTitle:m}=t,{baseUrl:f,cloudinaryName:l,griddoVersion:p,siteLangs:g,siteMetadata:h,siteOptions:P,siteScript:N,siteSlug:I,socials:C,theme:B,navigations:G}=e,{header:pe,footer:Q}=G;t.breadcrumb=s,t.siteSlug=I,t.apiUrl=f,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let U=g.find(({id:Ve})=>Ve===t?.language)?.locale.replace(/_/g,"-"),V=Ii(t),X=Pi({socialDescription:a,socialImage:d,socialTitle:m}),oe=i.compose,qe=new Date().toString();return{path:oe,size:void 0,context:{id:r,title:o,fullPath:i,locale:U,languageId:n,theme:B,siteMetadata:h,pageMetadata:V,openGraph:X,socials:C,siteLangs:g,cloudinaryName:l,siteOptions:P,griddoVersion:p,renderDate:qe,siteScript:N,header:pe,footer:Q,page:t}}}async function eo(t,e){return ht(t,e)}async function to({page:t,pages:e,isRoot:r=!1,defaultLang:o,template:i,totalQueriedItems:n},s){let a=e.map(async(d,m)=>{let f=m===0,l=m+1,{domainUrl:p,compose:g}=t.fullPath,h={...t,fullPath:{...t.fullPath,compose:gt(g,l,{addEndingSlash:!0})},fullUrl:gt(t.fullUrl,l,{addEndingSlash:!0}),slug:gt(t.slug,l),title:Zr(t.title,l),metaTitle:Zr(t.metaTitle||"",l),disableHrefLangs:l>1,template:{...i,isFirstPage:f,pageNumber:l,totalPages:e.length,baseLink:`${p}${g}`,queriedItems:d,totalQueriedItems:n?.length},isRoot:r,defaultLang:o};return ht(h,s)});return Promise.all(a)}function ro(t,e){let{multiPageElements:r,...o}=t,i=JSON.parse(JSON.stringify(r));i.find(({sectionSlug:s})=>s==="/")||i.push({});let n=i.map(async s=>{let a=JSON.parse(JSON.stringify(o)),{sectionSlug:d="/",title:m="",metaTitle:f="",metaDescription:l=""}=s,p=typeof m=="string"?m:m.content,g=a.fullPath.compose||"",h=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,P=d?.replace(/\//g,""),I=d==="/"?P:`${P}/`,C=g.endsWith("/")?"":"/",B=`${g}${C}${I}`;return p.trim()&&(a.title=p),l.trim()&&(a.metaDescription=l),a.fullUrl=`${h}/${I}`,a.fullPath.compose=B,a.slug=B,a.template.activeSectionSlug=d,a.template.activeSectionBase=h,a.metaTitle=f.trim()||p.trim()||a.metaTitle,ht(a,e)});return Promise.all(n)}function oo(t){return new Promise(r=>{let o=(i,n=0)=>{if(!(!i||typeof i!="object")){for(let s in i){let a=i[s],d=a||typeof a=="object",m=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!d||!m)continue;let{component:f,hasGriddoMultiPage:l,elements:p}=a;f&&l&&r(p||[]),o(a,n+1)}n||r(null)}};o([t])})}function xi(t,e,r){return e?.slice(t*(r-1),t*r)}function Ti(t,e){let r=Math.ceil(e.length/t)||1;return Array.from({length:r},(i,n)=>n+1)?.map(i=>xi(t,e,i))}function io(t){let e=t.queriedItems||[],r=t?.itemsPerPage||_i;return Ti(r,e)}function Qr(t){return t.replace(/\/+$/,"/")}function gt(t,e,r){let o=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?Qr(`${t}${i}`):Qr(`${t}${o}${e}${i}`)}function Zr(t,e){return!t||e<=1?t:`${t} - ${e}`}function Ai(t,e){let{order:r,sources:o,quantity:i,mode:n,fixed:s,fullRelations:a=!1,allLanguages:d=!1,preferenceLanguage:m=!1,referenceId:f,fields:l}=t;return n==="auto"?{mode:n,order:r,sources:o,quantity:i,fullRelations:a,allLanguages:d,preferenceLanguage:m,fields:l}:n==="manual"?{mode:n,fixed:s,fullRelations:a,fields:l}:n==="navigation"?{mode:n,order:r,quantity:i,fullRelations:a,referenceId:f||e?.structuredDataContent?.id,fields:l}:(c.error(`ReferenceField mode: ${n} is not recognized on page ${e?.id}.`),t)}async function $i(t){let{page:e,component:r,cacheKey:o}=t,{data:i}=r;if(!i)return c.info(`Error: Page ${e.id} has \`hasDistributorData: true\` or \`getStaticData: true\` but it doesn't have a \`data\` property.`),[];if(Array.isArray(i.sources)&&i.sources.length<1)return c.info(`Warning: Page with id: ${e.id} has a ReferenceField with empty \`data.sources\``),[];let{site:n,lang:s}=i;!i.sources&&i.mode==="auto"&&c.info(`Warning: Page with id: ${e.id} has a ReferenceField with \`undefined\` \`data.sources\``);let a=Ai(i,e);return await Wr(e,a,o,n,s)}async function no({page:t,cacheKey:e=""}){try{let{template:r}=t,o=async(s,a=1)=>{if(!(!s||typeof s!="object"||!(JSON.stringify(s).includes('"hasDistributorData":true')||JSON.stringify(s).includes('"getStaticData":true'))))for(let m in s){if(m==="queriedItems")continue;let l=s[m];if(!l||typeof l!="object")continue;(l.hasDistributorData||l.getStaticData)&&(l.queriedItems=await $i({page:t,cacheKey:e,component:l})),await o(l,a+1)}};return await(async s=>(await o([s]),s))(r)}catch(r){throw c.error("Error in getReferenceFieldData:",r),r}}var vi=Date.now().toString();function so(t,e){let r=Math.max(...e.map(n=>n.name.length+(n.shouldBeUpdated?1:0)+n.id.toString().length)),o=e.map(n=>{let s=n.shouldBeUpdated?"*":"",a=n.name.length+s.length+n.id.toString().length,d=" ".repeat(r-a);return`${w.bold(n.name)} ${w.dim(`(id:${n.id})`)} ${s} ${d}${w.dim("-")} ${w.dim(n.slug)}`}),i=o.length>0?`
42
+ `))}function Gr(t){if(!(typeof t!="object"||t===null||Array.isArray(t)))return"site"in t&&t.site?t.site:void 0}function Ri(t){return new Promise(e=>setTimeout(e,t))}function jr(t,e=3){return Number.parseFloat((t/1e3).toFixed(e))}async function Br(t){let{__root:e}=await R(),r=dt.default.join(e,"apiCache"),o=Mr.default.createHash("sha256");return o.update(JSON.stringify(t)),`${r}/${o.digest("hex")}`}async function bi(t,e){let r=typeof e=="string"?e:JSON.stringify(e),o=await Br(t),i=dt.default.dirname(o);await D(i)||await Me.default.mkdir(i,{recursive:!0}),await Me.default.writeFile(o,r,"utf8")}async function Si(t){try{let e=await Br(t),r=await Me.default.readFile(e,"utf8");return JSON.parse(r)}catch{return null}}var Vr=u(require("node:fs/promises")),Xr=u(require("node:path"));async function kr(t){return $({endpoint:`${nr}?domainSlug=${t}`})}async function Hr(t,e){return $({endpoint:`${sr}/${t}`,cacheKey:e})}async function Ur(t,e=""){let[r,o]=gr;return $({endpoint:`${r}${t}${o}`,cacheKey:e})}async function pt(t,e=""){let[r,o]=hr;return $({endpoint:`${r}${t}${o}`,cacheKey:e})}async function ft(t){let[e,r]=pr;return $({endpoint:`${e}${t}${r}`})}async function Wr(t,e){let[r,o]=mr;await mt({endpoint:`${r}${t}${o}`,body:e,useApiCacheDir:!1,logToFile:!1})}async function Jr(t,e,r,o,i){let[n,s]=fr,a=o||t.site,d=i||t.language;return mt({endpoint:`${n}${a}${s}`,body:e,headers:{lang:d},cacheKey:r})}async function qr(t){let{siteId:e,headers:r}=t,[o,i]=ur;return $({endpoint:`${o}${e}${i}`,headers:r})}async function Yr(t,e=""){let[r,o]=yr;return $({endpoint:`${r}${t}${o}`,cacheKey:e})}async function Kr(t){let e=await kr(t);if(e.length)for(let i of e){let{items:n}=await pt(i.id);i.domains=n.filter(s=>s.domain&&(s.domain.slug===t||s.domain.slug===`/${t}`)).map(s=>({[s.id]:`${s.domain.slug}${s.path}`}))}let r=e.filter(i=>!!i.isPublished),o=e.filter(i=>!i.isPublished&&i.shouldBeUpdated);return{sitesToPublish:r,sitesToUnpublish:o}}async function zr(t){let{__root:e}=await R();for(let r of t){let o=await ft(r.id),{siteHash:i}=o,n={siteHash:i,publishHashes:[],unpublishHashes:[],publishPagesIds:[]};await Wr(r.id,n),await Vr.default.rm(Xr.default.join(e,"store",r.id.toString()),{force:!0,recursive:!0})}}async function Qr(t){let e=await ft(t),r=await Ur(t),o=await pt(t),i=await Yr(t),n=o.items,s=n.find(h=>h.isDefault),{siteHash:a,unpublishHashes:d,publishIds:m}=e,{headers:f,footers:l}=r;return{siteInfo:r,validPagesIds:m,siteHash:a,unpublishHashes:d,siteLangs:n,defaultLang:s,headers:f,footers:l,socials:i}}var Be=class{_defaultHeaders;_defaultFooters;_navigations;constructor(){this._navigations={footers:[],headers:[]},this._defaultHeaders={},this._defaultFooters={}}set navigations(e){this._navigations=e,this._defaultFooters=this.getDefaultFooters(),this._defaultHeaders=this.getDefaultHeaders()}get navigations(){return this._navigations}getDefaultFooters(){let r=[...this.navigations.footers].filter(i=>i.setAsDefault),o={};for(let i of r)o[i.language]=i;return o}getDefaultHeaders(){let r=[...this.navigations.headers].filter(i=>i.setAsDefault),o={};for(let i of r)o[i.language]=i;return o}getRightLanguage(e,r,o){if(!e||!r)return null;let n=e.find(s=>s.language===o&&s.navigationLanguages?.find(a=>a.navigationId===r))||e.find(s=>s.id===r);return n?{...n}:null}getPageHeader(e,r){return this.getRightLanguage(this.navigations.headers,e,r)}getPageFooter(e,r){return this.getRightLanguage(this.navigations.footers,e,r)}getPageNavigations(e){let{header:r,footer:o,language:i,template:n,templateConfig:s}=e,{templateType:a}=n,{defaultHeader:d,defaultFooter:m,templates:f}=s,l=N=>{let I=N.find(C=>typeof C=="number");return typeof I=="number"?I:null},p=l([r,f?.[a]?.defaultHeader,d]),g=l([o,f?.[a]?.defaultFooter,m]),h=p?this.getPageHeader(p,i):p===0?null:this._defaultHeaders[i],P=g?this.getPageFooter(g,i):g===0?null:this._defaultFooters[i];return{header:h,footer:P}}};function ut(t,e,r,o="jpg"){let i=typeof t=="string"?t:t?.url;return i?i.split("/")[2].includes("cloudinary.com")?_i(i,`c_fill,w_${e},h_${r}`):Ei(i,`f/${o}/w/${e}/h/${r}`):null}function Ei(t,e){let r=t.split("/"),o=r.slice(0,-1).join("/"),i=r.slice(-1)[0];return`${o}/${e}/${i}`}function _i(t,e){let r=t.replace("https://",""),o=r.split("/").slice(0,4).join("/"),i=r.replace(o,"");return`https://${o}/${e}${i}`}var Pi=25;function Ii({socialTitle:t,socialDescription:e,socialImage:r}){return{type:"website",title:t,description:e,image:r?ut(r,1280,768):"",twitterImage:r?ut(r,1280,768):""}}function Ti(t){let{title:e,metaTitle:r,metaDescription:o,canonicalURL:i,locale:n,url:s,isIndexed:a,follow:d,metasAdvanced:m,pageLanguages:f,fullUrl:l,metaKeywords:p}=t,g=m?.split(",").filter(Boolean).map(h=>h.trim().toLowerCase())||[];return{title:(r||e||"").trim(),description:o,canonical:i?.trim()&&i!==l?i.trim():a?l:void 0,locale:n,url:s,index:a?"index":"noindex",follow:d?"follow":"nofollow",translate:g.includes("notranslate")?"notranslate":"",metasAdvanced:g.filter(h=>h!=="notranslate").join(),pageLanguages:f,metaKeywords:p?.filter(Boolean).map(h=>h.replace(/"/g,"'")).join(", ")}}async function ht(t,e){let{id:r,title:o,fullPath:i,language:n,breadcrumb:s,socialDescription:a,socialImage:d,socialTitle:m}=t,{baseUrl:f,cloudinaryName:l,griddoVersion:p,siteLangs:g,siteMetadata:h,siteOptions:P,siteScript:N,siteSlug:I,socials:C,theme:B,navigations:G}=e,{header:pe,footer:Q}=G;t.breadcrumb=s,t.siteSlug=I,t.apiUrl=f,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let U=g.find(({id:Ye})=>Ye===t?.language)?.locale.replace(/_/g,"-"),Y=Ti(t),V=Ii({socialDescription:a,socialImage:d,socialTitle:m}),oe=i.compose,qe=new Date().toString();return{path:oe,size:void 0,context:{id:r,title:o,fullPath:i,locale:U,languageId:n,theme:B,siteMetadata:h,pageMetadata:Y,openGraph:V,socials:C,siteLangs:g,cloudinaryName:l,siteOptions:P,griddoVersion:p,renderDate:qe,siteScript:N,header:pe,footer:Q,page:t}}}async function to(t,e){return ht(t,e)}async function ro({page:t,pages:e,isRoot:r=!1,defaultLang:o,template:i,totalQueriedItems:n},s){let a=e.map(async(d,m)=>{let f=m===0,l=m+1,{domainUrl:p,compose:g}=t.fullPath,h={...t,fullPath:{...t.fullPath,compose:gt(g,l,{addEndingSlash:!0})},fullUrl:gt(t.fullUrl,l,{addEndingSlash:!0}),slug:gt(t.slug,l),title:eo(t.title,l),metaTitle:eo(t.metaTitle||"",l),disableHrefLangs:l>1,template:{...i,isFirstPage:f,pageNumber:l,totalPages:e.length,baseLink:`${p}${g}`,queriedItems:d,totalQueriedItems:n?.length},isRoot:r,defaultLang:o};return ht(h,s)});return Promise.all(a)}function oo(t,e){let{multiPageElements:r,...o}=t,i=JSON.parse(JSON.stringify(r));i.find(({sectionSlug:s})=>s==="/")||i.push({});let n=i.map(async s=>{let a=JSON.parse(JSON.stringify(o)),{sectionSlug:d="/",title:m="",metaTitle:f="",metaDescription:l=""}=s,p=typeof m=="string"?m:m.content,g=a.fullPath.compose||"",h=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,P=d?.replace(/\//g,""),I=d==="/"?P:`${P}/`,C=g.endsWith("/")?"":"/",B=`${g}${C}${I}`;return p.trim()&&(a.title=p),l.trim()&&(a.metaDescription=l),a.fullUrl=`${h}/${I}`,a.fullPath.compose=B,a.slug=B,a.template.activeSectionSlug=d,a.template.activeSectionBase=h,a.metaTitle=f.trim()||p.trim()||a.metaTitle,ht(a,e)});return Promise.all(n)}function io(t){return new Promise(r=>{let o=(i,n=0)=>{if(!(!i||typeof i!="object")){for(let s in i){let a=i[s],d=a||typeof a=="object",m=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!d||!m)continue;let{component:f,hasGriddoMultiPage:l,elements:p}=a;f&&l&&r(p||[]),o(a,n+1)}n||r(null)}};o([t])})}function xi(t,e,r){return e?.slice(t*(r-1),t*r)}function Ai(t,e){let r=Math.ceil(e.length/t)||1;return Array.from({length:r},(i,n)=>n+1)?.map(i=>xi(t,e,i))}function no(t){let e=t.queriedItems||[],r=t?.itemsPerPage||Pi;return Ai(r,e)}function Zr(t){return t.replace(/\/+$/,"/")}function gt(t,e,r){let o=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?Zr(`${t}${i}`):Zr(`${t}${o}${e}${i}`)}function eo(t,e){return!t||e<=1?t:`${t} - ${e}`}function $i(t,e){let{order:r,sources:o,quantity:i,mode:n,fixed:s,fullRelations:a=!1,allLanguages:d=!1,preferenceLanguage:m=!1,referenceId:f,fields:l}=t;return n==="auto"?{mode:n,order:r,sources:o,quantity:i,fullRelations:a,allLanguages:d,preferenceLanguage:m,fields:l}:n==="manual"?{mode:n,fixed:s,fullRelations:a,fields:l}:n==="navigation"?{mode:n,order:r,quantity:i,fullRelations:a,referenceId:f||e?.structuredDataContent?.id,fields:l}:(c.error(`ReferenceField mode: ${n} is not recognized on page ${e?.id}.`),t)}async function vi(t){let{page:e,component:r,cacheKey:o}=t,{data:i}=r;if(!i)return c.info(`Error: Page ${e.id} has \`hasDistributorData: true\` or \`getStaticData: true\` but it doesn't have a \`data\` property.`),[];if(Array.isArray(i.sources)&&i.sources.length<1)return c.info(`Warning: Page with id: ${e.id} has a ReferenceField with empty \`data.sources\``),[];let{site:n,lang:s}=i;!i.sources&&i.mode==="auto"&&c.info(`Warning: Page with id: ${e.id} has a ReferenceField with \`undefined\` \`data.sources\``);let a=$i(i,e);return await Jr(e,a,o,n,s)}async function so({page:t,cacheKey:e=""}){try{let{template:r}=t,o=async(s,a=1)=>{if(!(!s||typeof s!="object"||!(JSON.stringify(s).includes('"hasDistributorData":true')||JSON.stringify(s).includes('"getStaticData":true'))))for(let m in s){if(m==="queriedItems")continue;let l=s[m];if(!l||typeof l!="object")continue;(l.hasDistributorData||l.getStaticData)&&(l.queriedItems=await vi({page:t,cacheKey:e,component:l})),await o(l,a+1)}};return await(async s=>(await o([s]),s))(r)}catch(r){throw c.error("Error in getReferenceFieldData:",r),r}}var Oi=Date.now().toString();function ao(t,e){let r=Math.max(...e.map(n=>n.name.length+(n.shouldBeUpdated?1:0)+n.id.toString().length)),o=e.map(n=>{let s=n.shouldBeUpdated?"*":"",a=n.name.length+s.length+n.id.toString().length,d=" ".repeat(r-a);return`${w.bold(n.name)} ${w.dim(`(id:${n.id})`)} ${s} ${d}${w.dim("-")} ${w.dim(n.slug)}`}),i=o.length>0?`
43
43
 
44
44
  ${o.join(`
45
45
  `)}`:w.dim(`--none--
46
46
  `);c.log(`
47
- ${t} ${i}`)}async function ao(t){console.info(`API calls with ${ze} threads`),console.info(`API URL ${Ke}`);let{renderMode:e,domain:r,griddoVersion:o,basePath:i}=t,n=e===_.FROM_SCRATCH,s=be.default.join(i,"store"),a=[],d={},{sitesToPublish:m,sitesToUnpublish:f}=await Yr(r);so("Sites to publish:",m),so("Sites to unpublish:",f),await Kr(f),await Pr(m,r);let l=[];for(let p of f){let{pagesStatus:g}=p;l.push(...g.active,...g.offlinePending,...g.uploadPending,...g.deleted,...g.offline)}for(let p of m){let{id:g,slug:h,theme:P,favicon:N,pagesStatus:I}=p,C=g.toString();l.push(...I.offlinePending,...I.deleted);let{siteInfo:B,siteHash:G,unpublishHashes:pe,siteLangs:Q,defaultLang:v,headers:U,footers:V,socials:X}=await zr(g),{cloudinaryName:oe,useMetaTitle:qe,useMetaKeywords:wt,showBasicMetaRobots:Ve,avoidHrefLangsOnCanonicals:Uo,avoidSelfReferenceCanonicals:Wo,avoidHrefLangXDefault:Jo,avoidDebugMetas:qo}=await $({endpoint:cr});d[g]={siteHash:G,unpublishHashes:pe,publishHashes:[],publishPagesIds:[]};let Rt=new Be;Rt.navigations={headers:U,footers:V},p.languages=Q;let Vo=await Fi(g,G),Xo=B.siteScript,Yo={siteUrl:B.slug,title:B.name,favicon:N},Ko={baseUrl:Ke,publicBaseUrl:Ot,instance:Nt,siteSlug:h,theme:P,siteMetadata:Yo,socials:X,siteLangs:Q,cloudinaryName:oe,griddoVersion:o,siteOptions:{useMetaTitle:qe,useMetaKeywords:wt,showBasicMetaRobots:Ve,avoidHrefLangsOnCanonicals:Uo,avoidSelfReferenceCanonicals:Wo,avoidHrefLangXDefault:Jo,avoidDebugMetas:qo},siteScript:Xo};await ke.default.mkdir(be.default.join(s,C),{recursive:!0});let zo=async(Xe,Ie,ie,xe)=>{let ne=[],T=await kr(Ie,Vo);if(!T){ie.current+=1,xe.update(ie.current);return}a.push(Ie);let Te=JSON.parse(JSON.stringify(Ko));Te.navigations=Rt.getPageNavigations(T);let se=await no({page:T,cacheKey:vi}),bt=await oo(se),Ye=T?.mode==="list"||T?.mode==="paginated-data",St=!Ye&&bt,Qo=!St&&!Ye;if(Ye){let k={page:T,pages:io(se),isRoot:!1,defaultLang:v,template:se,totalQueriedItems:se.queriedItems};ne=await to(k,Te),l.push(T.id)}if(St){let k=T;k.template=se,k.multiPageElements=bt,k.defaultLang=v,ne=await ro(k,Te),l.push(T.id)}if(Qo){let k=T;k.template=se,k.defaultLang=v,ne=[await eo(k,Te)]}T.hash!==null&&(d[g].publishHashes.push(T.hash),d[g].publishPagesIds.push(T.id)),await _r(Xe,ne),ie.current+=1,xe.update(ie.current)},Pe=I.uploadPending;if(n&&Pe.push(...I.active),Pe.length>0){let Xe=Re(ze),Ie=Pe.length,ie={current:0},xe=new Ge(p.name,Ie),ne=Pe.map(T=>Xe(()=>zo(C,T,ie,xe)));await Promise.all(ne)}}return await Er({buildProcessData:d,createdPages:a,sitesToPublish:m},r),{pagesToCreate:a,pagesToDelete:l}}async function Oi(){let{__root:t}=await R(),r=`${be.default.join(t,"apiCache")}/siteHash.json`;try{let o=await ke.default.readFile(r,"utf8");return JSON.parse(o)||{}}catch{return{}}}async function Fi(t,e){let r=await Oi(),o=r[t],i=e||o||Date.now(),{__root:n}=await R(),a=`${be.default.join(n,"apiCache")}/siteHash.json`;return i!==o&&(r[t]=i,await ke.default.writeFile(a,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}async function co(t){let{domain:e,renderMode:r,renderMetadata:{griddoVersion:o},pathsHydratedWithDomain:{__root:i}}=t,{pagesToCreate:n,pagesToDelete:s}=await ao({domain:e,renderMode:r,griddoVersion:o,basePath:i});t.pagesToCreate=n,t.pagesToDelete=s}async function lo(t){let{domain:e}=t;await Tr(e),await xr(e)}async function mo(t){let{domain:e,pathsHydratedWithDomain:{__root:r}}=t;await Ir({basePath:r,domain:e})}async function po(t){let{domain:e}=t;await Sr(e)}var fo=u(require("node:fs/promises")),Se=u(require("node:path"));async function uo(t){if(Gt){c.verbose("LLMs generation disabled by environment variable");return}let r=(await b()).domains[t].id,[o,i]=dr,s=(await $({endpoint:`${o}${r}${i}`})).map(({title:m,url:f,socialDescription:l})=>{let p=l?`: ${l}`:"";return`- [${m}](${f})${p}`}).join(`
47
+ ${t} ${i}`)}async function co(t){console.info(`API calls with ${ze} threads`),console.info(`API URL ${Ke}`);let{renderMode:e,domain:r,griddoVersion:o,basePath:i}=t,n=e===_.FROM_SCRATCH,s=be.default.join(i,"store"),a=[],d={},{sitesToPublish:m,sitesToUnpublish:f}=await Kr(r);ao("Sites to publish:",m),ao("Sites to unpublish:",f),await zr(f),await Ir(m,r);let l=[];for(let p of f){let{pagesStatus:g}=p;l.push(...g.active,...g.offlinePending,...g.uploadPending,...g.deleted,...g.offline)}for(let p of m){let{id:g,slug:h,theme:P,favicon:N,pagesStatus:I}=p,C=g.toString();l.push(...I.offlinePending,...I.deleted);let{siteInfo:B,siteHash:G,unpublishHashes:pe,siteLangs:Q,defaultLang:v,headers:U,footers:Y,socials:V}=await Qr(g),{cloudinaryName:oe,useMetaTitle:qe,useMetaKeywords:wt,showBasicMetaRobots:Ye,avoidHrefLangsOnCanonicals:Wo,avoidSelfReferenceCanonicals:Jo,avoidHrefLangXDefault:qo,avoidDebugMetas:Yo}=await $({endpoint:dr});d[g]={siteHash:G,unpublishHashes:pe,publishHashes:[],publishPagesIds:[]};let Rt=new Be;Rt.navigations={headers:U,footers:Y},p.languages=Q;let Vo=await Ci(g,G),Xo=B.siteScript,Ko={siteUrl:B.slug,title:B.name,favicon:N},zo={baseUrl:Ke,publicBaseUrl:Ot,instance:Nt,siteSlug:h,theme:P,siteMetadata:Ko,socials:V,siteLangs:Q,cloudinaryName:oe,griddoVersion:o,siteOptions:{useMetaTitle:qe,useMetaKeywords:wt,showBasicMetaRobots:Ye,avoidHrefLangsOnCanonicals:Wo,avoidSelfReferenceCanonicals:Jo,avoidHrefLangXDefault:qo,avoidDebugMetas:Yo},siteScript:Xo};await ke.default.mkdir(be.default.join(s,C),{recursive:!0});let Qo=async(Ve,Ie,ie,Te)=>{let ne=[],x=await Hr(Ie,Vo);if(!x){ie.current+=1,Te.update(ie.current);return}a.push(Ie);let xe=JSON.parse(JSON.stringify(zo));xe.navigations=Rt.getPageNavigations(x);let se=await so({page:x,cacheKey:Oi}),bt=await io(se),Xe=x?.mode==="list"||x?.mode==="paginated-data",St=!Xe&&bt,Zo=!St&&!Xe;if(Xe){let k={page:x,pages:no(se),isRoot:!1,defaultLang:v,template:se,totalQueriedItems:se.queriedItems};ne=await ro(k,xe),l.push(x.id)}if(St){let k=x;k.template=se,k.multiPageElements=bt,k.defaultLang=v,ne=await oo(k,xe),l.push(x.id)}if(Zo){let k=x;k.template=se,k.defaultLang=v,ne=[await to(k,xe)]}x.hash!==null&&(d[g].publishHashes.push(x.hash),d[g].publishPagesIds.push(x.id)),await Pr(Ve,ne),ie.current+=1,Te.update(ie.current)},Pe=I.uploadPending;if(n&&Pe.push(...I.active),Pe.length>0){let Ve=Re(ze),Ie=Pe.length,ie={current:0},Te=new Ge(p.name,Ie),ne=Pe.map(x=>Ve(()=>Qo(C,x,ie,Te)));await Promise.all(ne)}}return await _r({buildProcessData:d,createdPages:a,sitesToPublish:m},r),{pagesToCreate:a,pagesToDelete:l}}async function Fi(){let{__root:t}=await R(),r=`${be.default.join(t,"apiCache")}/siteHash.json`;try{let o=await ke.default.readFile(r,"utf8");return JSON.parse(o)||{}}catch{return{}}}async function Ci(t,e){let r=await Fi(),o=r[t],i=e||o||Date.now(),{__root:n}=await R(),a=`${be.default.join(n,"apiCache")}/siteHash.json`;return i!==o&&(r[t]=i,await ke.default.writeFile(a,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}async function lo(t){let{domain:e,renderMode:r,renderMetadata:{griddoVersion:o},pathsHydratedWithDomain:{__root:i}}=t,{pagesToCreate:n,pagesToDelete:s}=await co({domain:e,renderMode:r,griddoVersion:o,basePath:i});t.pagesToCreate=n,t.pagesToDelete=s}async function mo(t){let{domain:e}=t;await Ar(e),await xr(e)}async function po(t){let{domain:e,pathsHydratedWithDomain:{__root:r}}=t;await Tr({basePath:r,domain:e})}async function fo(t){let{domain:e}=t;await Er(e)}var uo=u(require("node:fs/promises")),Se=u(require("node:path"));async function go(t){if(Gt){c.verbose("LLMs generation disabled by environment variable");return}let r=(await b()).domains[t].id,[o,i]=lr,s=(await $({endpoint:`${o}${r}${i}`})).map(({title:m,url:f,socialDescription:l})=>{let p=l?`: ${l}`:"";return`- [${m}](${f})${p}`}).join(`
48
48
  `),{__root:a}=await R({domain:t}),d=Se.default.join(a,"current-dist");try{let m=`llms.txt for the domain ${t}`,f=`Generated: ${new Date().toISOString().replace("T"," ").slice(0,19)}`,l=`${m}
49
- ${f}`;await fo.default.writeFile(Se.default.join(d,"llms.txt"),`${l}
49
+ ${f}`;await uo.default.writeFile(Se.default.join(d,"llms.txt"),`${l}
50
50
 
51
- ${s}`),c.verbose(`wrote llms.txt to ${Se.default.join(d,"llms.txt")}`)}catch(m){c.error(`Error writing llms.txt to ${Se.default.join(d,"llms.txt")}:`,m)}}var go=u(require("node:fs/promises")),yt=u(require("node:path"));async function Ci(){return(await $({endpoint:ar}))?.filter(e=>!!e.path).map(({path:e,content:r})=>({path:e,content:r||`User-agent: *
51
+ ${s}`),c.verbose(`wrote llms.txt to ${Se.default.join(d,"llms.txt")}`)}catch(m){c.error(`Error writing llms.txt to ${Se.default.join(d,"llms.txt")}:`,m)}}var ho=u(require("node:fs/promises")),yt=u(require("node:path"));async function Li(){return(await $({endpoint:cr}))?.filter(e=>!!e.path).map(({path:e,content:r})=>({path:e,content:r||`User-agent: *
52
52
  \r
53
- \rAllow: /`}))||[]}async function ho(t){let{__root:e}=await R({domain:t}),r=yt.default.join(e,"current-dist"),o=(await Ci()).find(({path:i})=>i===`/${t}`);if(!o){c.info(`Robots not found for ${t}`);return}if(await D(r)){let i=yt.default.join(r,"robots.txt");await go.default.writeFile(i,o?.content),c.verbose(`wrote robots.txt to ${i}`)}else c.info(`${r} not found`)}var Ee=u(require("node:fs/promises")),re=u(require("node:path"));function yo(t){return t.replace(/[<>&'"”]/g,e=>{switch(e){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case"'":return"&apos;";case'"':return"&quot;";case"\u201D":return"&quot;";default:return e}})}function Do(t){return`<?xml version="1.0" encoding="UTF-8"?>
53
+ \rAllow: /`}))||[]}async function yo(t){let{__root:e}=await R({domain:t}),r=yt.default.join(e,"current-dist"),o=(await Li()).find(({path:i})=>i===`/${t}`);if(!o){c.info(`Robots not found for ${t}`);return}if(await D(r)){let i=yt.default.join(r,"robots.txt");await ho.default.writeFile(i,o?.content),c.verbose(`wrote robots.txt to ${i}`)}else c.info(`${r} not found`)}var Ee=u(require("node:fs/promises")),re=u(require("node:path"));function Do(t){return t.replace(/[<>&'"”]/g,e=>{switch(e){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case"'":return"&apos;";case'"':return"&quot;";case"\u201D":return"&quot;";default:return e}})}function wo(t){return`<?xml version="1.0" encoding="UTF-8"?>
54
54
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
55
55
  ${t.map(r=>` <url>
56
- <loc>${yo(r.loc)}</loc>
56
+ <loc>${Do(r.loc)}</loc>
57
57
  <lastmod>${r.lastmod}</lastmod>
58
58
  <priority>${r.priority}</priority>
59
59
  </url>`).join(`
60
60
  `)}
61
- </urlset>`}function wo(t){return`<?xml version="1.0" encoding="UTF-8"?>
61
+ </urlset>`}function Ro(t){return`<?xml version="1.0" encoding="UTF-8"?>
62
62
  <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
63
63
  ${t.map(r=>` <sitemap>
64
- <loc>${yo(r)}</loc>
64
+ <loc>${Do(r)}</loc>
65
65
  </sitemap>`).join(`
66
66
  `)}
67
- </sitemapindex>`}async function bo(t){let{__root:e}=await R(),{sitesToPublish:r}=await Fe(t),o=re.default.join(e,"current-dist"),i="sitemap-",n=s=>s==="sitemap.xml"||s.startsWith(i)&&s.endsWith(".xml");for(let s of r){let{id:a,languages:d}=s;for(let m of d){let f=q.headers?{...q.headers}:{};f.lang=m.id.toString();let l=await Jr({siteId:a,headers:f});if(!l)continue;let{items:p,url:g}=l,{home:h,domain:P}=g;if(!h)continue;let N=s.domains.find(v=>Object.keys(v)[0]===m.id.toString());if(!N)continue;let I=Object.values(N)[0],C=[],B=Object.keys(p),G=re.default.join(o,I.replace(P,""));if(await D(G))try{let v=await Ee.default.readdir(G);for(let U of v)if(n(U)){let V=re.default.join(G,U);try{await Ee.default.rm(V)}catch(X){c.error(`Error deleting file ${V}:`,X)}}}catch(v){c.error(`Error reading ${G}:`,v)}for(let v of B){let U=p[v];if(!U.length)continue;let V=Do(U),X=`/${i}${v.toLowerCase()}.xml`,oe=re.default.join(G,X);await Ro(oe,V),c.verbose(`sitemap generated in ${oe}`),C.push(`${h.endsWith("/")?h.slice(0,-1):h}${X}`)}if(!C.length)continue;let pe=wo(C),Q=re.default.join(G,"sitemap.xml");await Ro(Q,pe),c.verbose(`sitemap generated in ${Q}`)}}}async function Ro(t,e){try{let r=re.default.dirname(t);await D(r)||await Ee.default.mkdir(r,{recursive:!0}),await Ee.default.writeFile(t,e)}catch{throw new Error("Error saving a file")}}async function So(t){let{domain:e}=t;await vr(e),await bo(e),await ho(e),await uo(e)}async function Eo(t){let{renderArtifacts:e}=t;await Vt(e.initials)}var _o=u(require("node:fs/promises")),Dt=u(require("node:path"));async function Po(t){let{pathsHydratedWithDomain:{__root:e,__ssg:r}}=t,o=Dt.default.join(r,"public"),i=Dt.default.join(e,"current-dist");await _o.default.rename(o,i)}async function Io(t){let{renderMode:e,ssg:{ssgArtifacts:r},renderArtifacts:o,pathsHydratedWithDomain:{__components:i,__root:n,__cache:s,__ssg:a}}=t;await Xt(i,a,["static"]),e===_.INCREMENTAL&&(await ee(s,a,r.cacheables),await ee(s,n,o.cacheables))}var xo=require("node:child_process"),To=u(require("node:path"));async function Ao(t){c.verbose(`read assetPrefixWithDomain, ${t}`),c.verbose(`using this NODE_OPTIONS in gatsby command: ${process.env.NODE_OPTIONS}`);let{__ssg:e}=await R(),r=process.env.NODE_OPTIONS?process.env.NODE_OPTIONS.replace(/--openssl-legacy-provider\s*/g,"").trim():"",o=To.default.join(e,"node_modules",".bin","gatsby"),i=["build","--prefix-paths"];return Mt&&i.push("--verbose"),process.env.NO_COLORS&&i.push("--no-colors"),new Promise((n,s)=>{let a=(0,xo.spawn)(o,i,{cwd:e,stdio:["ignore","inherit","inherit"],env:{...process.env,SPAWN_ASSET_PREFIX_WITH_DOMAIN:t,NODE_OPTIONS:r}});a.on("close",d=>{d===0?n():s(new Error(`Gatsby build failed with exit code ${d}`))}),a.on("error",d=>{s(new Error(`Failed to start Gatsby build process: ${d.message}`))})})}async function $o(t){let{ssg:{assetPrefix:e}}=t;await Ao(e)}var Ue=u(require("node:fs/promises")),We=u(require("node:path"));var z=u(require("node:fs/promises")),E=u(require("node:path"));async function vo(t){let{__root:e,__exports:r}=await R({domain:t}),o=(await z.default.readdir(E.default.join(r,"dist"))).filter(n=>E.default.extname(n)===".js"||E.default.extname(n)===".json"||E.default.extname(n)===".css");await z.default.mkdir(E.default.join(e,"assets"),{recursive:!0}),await z.default.cp(E.default.join(r,"dist","page-data"),E.default.join(e,"assets","page-data"),{preserveTimestamps:!0,recursive:!0}),await D(E.default.join(e,"static"))&&await z.default.cp(E.default.join(e,"static"),E.default.join(e,"assets"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(E.default.join(r,"dist","static"))&&await z.default.cp(E.default.join(r,"dist","static"),E.default.join(e,"assets","static"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(E.default.join(e,"static"))&&await z.default.cp(E.default.join(e,"static"),E.default.join(r,"dist",t),{preserveTimestamps:!0,recursive:!0,force:!1});let i=o.map(n=>{let s=E.default.join(r,"dist",n),a=E.default.join(e,"assets",n);return z.default.cp(s,a,{preserveTimestamps:!0,recursive:!0})});await Promise.all(i)}var M=u(require("node:fs/promises")),x=u(require("node:path"));var Fo=require("node:crypto"),_e=u(require("node:fs/promises")),Co=require("node:path");var Li=[/\.js$/];async function Oo(t){let e=new Map;try{let o=(await _e.default.readdir(t)).filter(i=>Li.some(n=>n.test(i)));for(let i of o){let n=(0,Co.join)(t,i),s=await _e.default.readFile(n),a=(0,Fo.createHash)("sha256").update(s).digest("hex");e.set(i,a)}return e}catch(r){return c.build(`ERROR: Error processing directory ${t}: ${r}`),e}}async function Lo(t,e){let[r,o]=await Promise.all([Oo(t),Oo(e)]);if(r.size!==o.size)return!0;for(let[i,n]of r.entries()){let s=o.get(i);if(!s||n!==s)return!0}return!1}async function No(t,e){try{let r=await _e.default.readFile(t,"utf-8"),o=/(window\.___webpackCompilationHash=")([^"]*)(";<\/script>)/,i=r.replace(o,`$1${e}$3`);if(r===i)return;await _e.default.writeFile(t,i,"utf-8")}catch(r){c.error(`Failed to process file ${t}: ${r}`)}}var He=class{bundleDir;currentRenderDir;pagesToCreate;pagesToDelete;assetArtifacts;state={htmlToAdd:[],jsonToAdd:[],htmlToDelete:[],jsonToDelete:[]};constructor(e){this.bundleDir=e.dst,this.currentRenderDir=e.src,this.pagesToCreate=e.pagesToCreate,this.pagesToDelete=e.pagesToDelete,this.assetArtifacts=e.artifactsToCopyToExports}async execute(){await this.setPagesToDelete(),await this.setPagesToAdd(),await this.sync(),jt&&await this.assertAssetsAreValid()}async assertAssetsAreValid(){await Lo(this.currentRenderDir,this.bundleDir)?c.info("Warning: JavaScript and CSS bundles must have the same files and content. You can ignore this warning if the rendering process only has pages to unpublish."):c.info("Previous and current JavaScript and CSS packages successfully matched")}async setPagesToDelete(){let e=new Set([...this.pagesToDelete,...this.pagesToCreate]),r=await this.scanPages(this.bundleDir);for(let o of r)e.has(o.id)&&(this.state.htmlToDelete.push(o.htmlPath),this.state.jsonToDelete.push(o.jsonPath));c.verbose(`${this.state.htmlToDelete.length} pages HTML to delete`),c.verbose(`${this.state.jsonToDelete.length} pages JSON to delete`)}async setPagesToAdd(){let e=new Set(this.pagesToCreate),r=await this.scanPages(this.currentRenderDir);for(let o of r)if(e.has(o.id)){let i=x.default.join(this.bundleDir,o.composePath,"index.html"),n=o.composePath==="/"?"index":o.composePath,s=x.default.join(this.bundleDir,"page-data",n,"page-data.json");this.state.htmlToAdd.push({from:o.htmlPath,to:i}),this.state.jsonToAdd.push({from:o.jsonPath,to:s})}c.verbose(`${this.state.htmlToAdd.length} pages HTML to create`),c.verbose(`${this.state.jsonToAdd.length} pages JSON to create`)}async sync(){let e=[...this.state.htmlToDelete,...this.state.jsonToDelete];for(let o of e)try{await M.default.rm(o,{force:!0}),c.verbose(`Sync (remove) : ${o}`)}catch(i){c.error(`Failed to remove ${o}:`,i)}await this.restoreWebpackCompilationHash();let r=[...this.state.htmlToAdd,...this.state.jsonToAdd];for(let o of r)try{await M.default.mkdir(x.default.dirname(o.to),{recursive:!0}),await M.default.copyFile(o.from,o.to),c.verbose(`Sync (copy) : ${o.from} -> ${o.to}`)}catch(i){c.error(`Failed to copy ${o.from} to ${o.to}:`,i)}await this.copyAssetArtifacts(),await this.copySitemaps()}async restoreWebpackCompilationHash(){let e=x.default.join(this.bundleDir,"page-data","app-data.json"),r=JSON.parse(await M.default.readFile(e,"utf8")).webpackCompilationHash;c.verbose(`Reading webpackCompilationHash from ${e}: ${r}`);let o=this.state.htmlToAdd.map(({from:i})=>i);c.info(`Patching ${o.length} HTML files with the new webpackCompilationHash (${r})...`);for(let i of o)ye(`Patching HTML file ${i} with the new webpackCompilationHash`),await No(i,r)}async copyAssetArtifacts(){for(let e of this.assetArtifacts){let r=x.default.join(this.currentRenderDir,e),o=x.default.join(this.bundleDir,e);try{await M.default.mkdir(x.default.dirname(o),{recursive:!0}),await M.default.copyFile(r,o),c.verbose(`Copied artifact: ${e}`)}catch(i){c.error(`Failed to copy artifact ${r} to ${o}:`,i)}}}async copySitemaps(){let e=x.default.resolve(this.currentRenderDir),r=x.default.resolve(this.bundleDir),o=fe(r,".xml");for await(let n of o){let s=x.default.basename(n);(s.startsWith("sitemap-")||s==="sitemap.xml")&&await M.default.rm(n,{force:!0})}let i=fe(e,".xml");for await(let n of i){let s=x.default.relative(e,n),a=x.default.join(r,s);try{await M.default.mkdir(x.default.dirname(a),{recursive:!0}),await M.default.copyFile(n,a)}catch(d){c.error(`Failed to copy sitemap ${n} to ${a}:`,d)}}c.verbose("Copied sitemap files.")}async scanPages(e){let r=Re(32),o=fe(x.default.join(e,"page-data"),"page-data.json"),i=[];for await(let s of o)i.push(r(async()=>{try{let a=await M.default.readFile(s,"utf-8"),d=JSON.parse(a),m=d.result.pageContext.id,f=d.result.pageContext.fullPath.compose;return{id:m,composePath:f,htmlPath:x.default.join(e,f,"index.html"),jsonPath:s}}catch(a){return c.error(`Error reading or parsing page data from ${s}:`,a),null}}));return(await Promise.all(i)).filter(s=>s!==null)}};async function Go(t){let{renderMode:e,renderArtifacts:r,domain:o,pagesToCreate:i,pagesToDelete:n,pathsHydratedWithDomain:{__root:s,__ssg:a,__cache:d,__exports:m},ssg:{ssgArtifacts:f,assetPrefix:l}}=t,p=!!l&&l!=="",g=We.default.join(s,"current-dist"),h=We.default.join(m,"dist");await ee(s,d,r.cacheables,{override:!0}),await ee(a,d,f.cacheables,{override:!0}),e===_.FROM_SCRATCH&&(await tt(g),await Ue.default.rm(h,{force:!0,recursive:!0}),await Ue.default.rename(g,h)),e===_.INCREMENTAL&&(await tt(h),await new He({src:g,dst:h,pagesToCreate:i,pagesToDelete:n,artifactsToCopyToExports:["build-report.json","llms.txt","robots.txt"]}).execute(),await Ue.default.rm(g,{force:!0,recursive:!0}),await rt(We.default.join(m,"dist"))),p&&await vo(o),await ee(s,m,r.archivables,{override:!0})}var Je=u(require("node:path"));async function jo(){let{ssg:t}=(await b()).paths;return{disposables:[Je.default.join(t,"public"),Je.default.join(t,"static"),Je.default.join(t,".cache")],cacheables:[".cache"]}}async function Mo(){let t=await b();t.needsRollbackOnError=!0,await L(t),c.info(`Render lifecycles that follow will restore the exports dir on error if needed
68
- `)}async function Bo(){let t=await b();t.needsRollbackOnError=!1,await L(t),c.info(`Render lifecycles that follow will not restore the exports dir on error
69
- `)}async function Ho(t){await Rr();let{renderMode:e,reason:r}=await $r(t),o=await at(),i=await R({domain:t}),{__ssg:n}=i,s=await Or(t),a=await jo(),d=Qe?`${Qe}/${t}`:"",m=await D(ko.default.join(n,`.render-sentinel-${t}`)),f=m?_.FROM_SCRATCH:e,l=m?"previous render error":r,p=await b();if(p.domains[t].renderMode=f,p.domains[t].renderModeReason=l,p.domains[t].isRendering=!1,e===_.IDLE&&f===_.IDLE){c.info(`(From Current Render) [${t}]: Skipping start-render as it is marked as IDLE with the reason ${r}.`);return}p.domains[t].isRendering=!0,p.currentRenderingDomain=t,await L(p);let g=l?` <${l}>`:"";c.info(`Init render (${f})${g} for domain ${t}
70
- `);let h=new Ce({domain:t,pathsHydratedWithDomain:i,renderArtifacts:s,renderMetadata:o,renderMode:f,ssg:{assetPrefix:d,ssgArtifacts:a}});await O("Init",async()=>mo(h)),await O("Clean",async()=>Fr(h)),await O("Prepare",async()=>Eo(h)),await O("Restore",async()=>Io(h)),await Mo(),await O("Data",async()=>co(h)),await O("SSG",async()=>$o(h)),await O("Relocation",async()=>Po(h)),await O("Meta",async()=>So(h)),await O("Sync",async()=>Go(h)),await O("HealthCheck",async()=>lo(h)),await O("Logs",async()=>po(h),{skip:ae?!1:"Build logs to file are disabled"}),await O("Close",async()=>Cr(h)),await Bo()}async function Ni(){await q.login();let[t]=process.argv.slice(2);await Ho(t)}async function Gi(){await or(),await Ni()}er(Gi);
67
+ </sitemapindex>`}async function So(t){let{__root:e}=await R(),{sitesToPublish:r}=await Fe(t),o=re.default.join(e,"current-dist"),i="sitemap-",n=s=>s==="sitemap.xml"||s.startsWith(i)&&s.endsWith(".xml");for(let s of r){let{id:a,languages:d}=s;for(let m of d){let f=q.headers?{...q.headers}:{};f.lang=m.id.toString();let l=await qr({siteId:a,headers:f});if(!l)continue;let{items:p,url:g}=l,{home:h,domain:P}=g;if(!h)continue;let N=s.domains.find(v=>Object.keys(v)[0]===m.id.toString());if(!N)continue;let I=Object.values(N)[0],C=[],B=Object.keys(p),G=re.default.join(o,I.replace(P,""));if(await D(G))try{let v=await Ee.default.readdir(G);for(let U of v)if(n(U)){let Y=re.default.join(G,U);try{await Ee.default.rm(Y)}catch(V){c.error(`Error deleting file ${Y}:`,V)}}}catch(v){c.error(`Error reading ${G}:`,v)}for(let v of B){let U=p[v];if(!U.length)continue;let Y=wo(U),V=`/${i}${v.toLowerCase()}.xml`,oe=re.default.join(G,V);await bo(oe,Y),c.verbose(`sitemap generated in ${oe}`),C.push(`${h.endsWith("/")?h.slice(0,-1):h}${V}`)}if(!C.length)continue;let pe=Ro(C),Q=re.default.join(G,"sitemap.xml");await bo(Q,pe),c.verbose(`sitemap generated in ${Q}`)}}}async function bo(t,e){try{let r=re.default.dirname(t);await D(r)||await Ee.default.mkdir(r,{recursive:!0}),await Ee.default.writeFile(t,e)}catch{throw new Error("Error saving a file")}}async function Eo(t){let{domain:e}=t;await Or(e),await So(e),await yo(e),await go(e)}async function _o(t){let{renderArtifacts:e}=t;await Vt(e.initials)}var Po=u(require("node:fs/promises")),Dt=u(require("node:path"));async function Io(t){let{pathsHydratedWithDomain:{__root:e,__ssg:r}}=t,o=Dt.default.join(r,"public"),i=Dt.default.join(e,"current-dist");await Po.default.rename(o,i)}async function To(t){let{renderMode:e,ssg:{ssgArtifacts:r},renderArtifacts:o,pathsHydratedWithDomain:{__components:i,__root:n,__cache:s,__ssg:a}}=t;await Xt(i,a,["static"]),e===_.INCREMENTAL&&(await ee(s,a,r.cacheables),await ee(s,n,o.cacheables))}var xo=require("node:child_process"),Ao=u(require("node:path"));async function $o(t){c.verbose(`read assetPrefixWithDomain, ${t}`),c.verbose(`using this NODE_OPTIONS in gatsby command: ${process.env.NODE_OPTIONS}`);let{__ssg:e}=await R(),r=process.env.NODE_OPTIONS?process.env.NODE_OPTIONS.replace(/--openssl-legacy-provider\s*/g,"").trim():"",o=Ao.default.join(e,"node_modules",".bin","gatsby"),i=["build","--prefix-paths"];return Mt&&i.push("--verbose"),process.env.NO_COLORS&&i.push("--no-colors"),new Promise((n,s)=>{let a=(0,xo.spawn)(o,i,{cwd:e,stdio:["ignore","inherit","inherit"],env:{...process.env,SPAWN_ASSET_PREFIX_WITH_DOMAIN:t,NODE_OPTIONS:r}});a.on("close",d=>{d===0?n():s(new Error(`Gatsby build failed with exit code ${d}`))}),a.on("error",d=>{s(new Error(`Failed to start Gatsby build process: ${d.message}`))})})}async function vo(t){let{ssg:{assetPrefix:e}}=t;await $o(e)}var Ue=u(require("node:fs/promises")),We=u(require("node:path"));var z=u(require("node:fs/promises")),E=u(require("node:path"));async function Oo(t){let{__root:e,__exports:r}=await R({domain:t}),o=(await z.default.readdir(E.default.join(r,"dist"))).filter(n=>E.default.extname(n)===".js"||E.default.extname(n)===".json"||E.default.extname(n)===".css");await z.default.mkdir(E.default.join(e,"assets"),{recursive:!0}),await z.default.cp(E.default.join(r,"dist","page-data"),E.default.join(e,"assets","page-data"),{preserveTimestamps:!0,recursive:!0}),await D(E.default.join(e,"static"))&&await z.default.cp(E.default.join(e,"static"),E.default.join(e,"assets"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(E.default.join(r,"dist","static"))&&await z.default.cp(E.default.join(r,"dist","static"),E.default.join(e,"assets","static"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(E.default.join(e,"static"))&&await z.default.cp(E.default.join(e,"static"),E.default.join(r,"dist",t),{preserveTimestamps:!0,recursive:!0,force:!1});let i=o.map(n=>{let s=E.default.join(r,"dist",n),a=E.default.join(e,"assets",n);return z.default.cp(s,a,{preserveTimestamps:!0,recursive:!0})});await Promise.all(i)}var M=u(require("node:fs/promises")),T=u(require("node:path"));var Co=require("node:crypto"),_e=u(require("node:fs/promises")),Lo=require("node:path");var Ni=[/\.js$/];async function Fo(t){let e=new Map;try{let o=(await _e.default.readdir(t)).filter(i=>Ni.some(n=>n.test(i)));for(let i of o){let n=(0,Lo.join)(t,i),s=await _e.default.readFile(n),a=(0,Co.createHash)("sha256").update(s).digest("hex");e.set(i,a)}return e}catch(r){return c.build(`ERROR: Error processing directory ${t}: ${r}`),e}}async function No(t,e){let[r,o]=await Promise.all([Fo(t),Fo(e)]);if(r.size!==o.size)return!0;for(let[i,n]of r.entries()){let s=o.get(i);if(!s||n!==s)return!0}return!1}async function Go(t,e){try{let r=await _e.default.readFile(t,"utf-8"),o=/(window\.___webpackCompilationHash=")([^"]*)(";<\/script>)/,i=r.replace(o,`$1${e}$3`);if(r===i)return;await _e.default.writeFile(t,i,"utf-8")}catch(r){c.error(`Failed to process file ${t}: ${r}`)}}var He=class{bundleDir;currentRenderDir;pagesToCreate;pagesToDelete;assetArtifacts;state={htmlToAdd:[],jsonToAdd:[],htmlToDelete:[],jsonToDelete:[]};constructor(e){this.bundleDir=e.dst,this.currentRenderDir=e.src,this.pagesToCreate=e.pagesToCreate,this.pagesToDelete=e.pagesToDelete,this.assetArtifacts=e.artifactsToCopyToExports}async execute(){await this.setPagesToDelete(),await this.setPagesToAdd(),await this.sync(),jt&&await this.assertAssetsAreValid()}async assertAssetsAreValid(){await No(this.currentRenderDir,this.bundleDir)?c.info("Warning: JavaScript and CSS bundles must have the same files and content. You can ignore this warning if the rendering process only has pages to unpublish."):c.info("Previous and current JavaScript and CSS packages successfully matched")}async setPagesToDelete(){let e=new Set([...this.pagesToDelete,...this.pagesToCreate]),r=await this.scanPages(this.bundleDir);for(let o of r)e.has(o.id)&&(this.state.htmlToDelete.push(o.htmlPath),this.state.jsonToDelete.push(o.jsonPath));c.verbose(`${this.state.htmlToDelete.length} pages HTML to delete`),c.verbose(`${this.state.jsonToDelete.length} pages JSON to delete`)}async setPagesToAdd(){let e=new Set(this.pagesToCreate),r=await this.scanPages(this.currentRenderDir);for(let o of r)if(e.has(o.id)){let i=T.default.join(this.bundleDir,o.composePath,"index.html"),n=o.composePath==="/"?"index":o.composePath,s=T.default.join(this.bundleDir,"page-data",n,"page-data.json");this.state.htmlToAdd.push({from:o.htmlPath,to:i}),this.state.jsonToAdd.push({from:o.jsonPath,to:s})}c.verbose(`${this.state.htmlToAdd.length} pages HTML to create`),c.verbose(`${this.state.jsonToAdd.length} pages JSON to create`)}async sync(){let e=[...this.state.htmlToDelete,...this.state.jsonToDelete];for(let o of e)try{await M.default.rm(o,{force:!0}),c.verbose(`Sync (remove) : ${o}`)}catch(i){c.error(`Failed to remove ${o}:`,i)}await this.restoreWebpackCompilationHash();let r=[...this.state.htmlToAdd,...this.state.jsonToAdd];for(let o of r)try{await M.default.mkdir(T.default.dirname(o.to),{recursive:!0}),await M.default.copyFile(o.from,o.to),c.verbose(`Sync (copy) : ${o.from} -> ${o.to}`)}catch(i){c.error(`Failed to copy ${o.from} to ${o.to}:`,i)}await this.copyAssetArtifacts(),await this.copySitemaps()}async restoreWebpackCompilationHash(){let e=T.default.join(this.bundleDir,"page-data","app-data.json"),r=JSON.parse(await M.default.readFile(e,"utf8")).webpackCompilationHash;c.verbose(`Reading webpackCompilationHash from ${e}: ${r}`);let o=this.state.htmlToAdd.map(({from:i})=>i);c.info(`Patching ${o.length} HTML files with the new webpackCompilationHash (${r})...`);for(let i of o)ye(`Patching HTML file ${i} with the new webpackCompilationHash`),await Go(i,r)}async copyAssetArtifacts(){for(let e of this.assetArtifacts){let r=T.default.join(this.currentRenderDir,e),o=T.default.join(this.bundleDir,e);try{await M.default.mkdir(T.default.dirname(o),{recursive:!0}),await M.default.copyFile(r,o),c.verbose(`Copied artifact: ${e}`)}catch(i){c.error(`Failed to copy artifact ${r} to ${o}:`,i)}}}async copySitemaps(){let e=T.default.resolve(this.currentRenderDir),r=T.default.resolve(this.bundleDir),o=fe(r,".xml");for await(let n of o){let s=T.default.basename(n);(s.startsWith("sitemap-")||s==="sitemap.xml")&&await M.default.rm(n,{force:!0})}let i=fe(e,".xml");for await(let n of i){let s=T.default.relative(e,n),a=T.default.join(r,s);try{await M.default.mkdir(T.default.dirname(a),{recursive:!0}),await M.default.copyFile(n,a)}catch(d){c.error(`Failed to copy sitemap ${n} to ${a}:`,d)}}c.verbose("Copied sitemap files.")}async scanPages(e){let r=Re(32),o=fe(T.default.join(e,"page-data"),"page-data.json"),i=[];for await(let s of o)i.push(r(async()=>{try{let a=await M.default.readFile(s,"utf-8"),d=JSON.parse(a),m=d.result.pageContext.id,f=d.result.pageContext.fullPath.compose;return{id:m,composePath:f,htmlPath:T.default.join(e,f,"index.html"),jsonPath:s}}catch(a){return c.error(`Error reading or parsing page data from ${s}:`,a),null}}));return(await Promise.all(i)).filter(s=>s!==null)}};async function jo(t){let{renderMode:e,renderArtifacts:r,domain:o,pagesToCreate:i,pagesToDelete:n,pathsHydratedWithDomain:{__root:s,__ssg:a,__cache:d,__exports:m},ssg:{ssgArtifacts:f,assetPrefix:l}}=t,p=!!l&&l!=="",g=We.default.join(s,"current-dist"),h=We.default.join(m,"dist");await ee(s,d,r.cacheables,{override:!0}),await ee(a,d,f.cacheables,{override:!0}),e===_.FROM_SCRATCH&&(await tt(g),await Ue.default.rm(h,{force:!0,recursive:!0}),await Ue.default.rename(g,h)),e===_.INCREMENTAL&&(await tt(h),await new He({src:g,dst:h,pagesToCreate:i,pagesToDelete:n,artifactsToCopyToExports:["build-report.json","llms.txt","robots.txt"]}).execute(),await Ue.default.rm(g,{force:!0,recursive:!0}),await rt(We.default.join(m,"dist"))),p&&await Oo(o),await ee(s,m,r.archivables,{override:!0})}var Je=u(require("node:path"));async function Mo(){let{ssg:t}=(await b()).paths;return{disposables:[Je.default.join(t,"public"),Je.default.join(t,"static"),Je.default.join(t,".cache")],cacheables:[".cache"]}}async function Bo(){let t=await b();t.needsRollbackOnError=!0,await L(t),c.info(`Render lifecycles that follow will restore the exports dir on error if needed
68
+ `)}async function ko(){let t=await b();t.needsRollbackOnError=!1,await L(t),c.info(`Render lifecycles that follow will not restore the exports dir on error
69
+ `)}async function Uo(t){await br();let{renderMode:e,reason:r}=await vr(t),o=await at(),i=await R({domain:t}),{__ssg:n}=i,s=await Fr(t),a=await Mo(),d=Qe?`${Qe}/${t}`:"",m=await D(Ho.default.join(n,`.render-sentinel-${t}`)),f=m?_.FROM_SCRATCH:e,l=m?"previous render error":r,p=await b();if(p.domains[t].renderMode=f,p.domains[t].renderModeReason=l,p.domains[t].isRendering=!1,e===_.IDLE&&f===_.IDLE){c.info(`(From Current Render) [${t}]: Skipping start-render as it is marked as IDLE with the reason ${r}.`);return}p.domains[t].isRendering=!0,p.currentRenderingDomain=t,await L(p);let g=l?` <${l}>`:"";c.info(`Init render (${f})${g} for domain ${t}
70
+ `);let h=new Ce({domain:t,pathsHydratedWithDomain:i,renderArtifacts:s,renderMetadata:o,renderMode:f,ssg:{assetPrefix:d,ssgArtifacts:a}});await O("Init",async()=>po(h)),await O("Clean",async()=>Cr(h)),await O("Prepare",async()=>_o(h)),await O("Restore",async()=>To(h)),await Bo(),await O("Data",async()=>lo(h)),await O("SSG",async()=>vo(h)),await O("Relocation",async()=>Io(h)),await O("Meta",async()=>Eo(h)),await O("Sync",async()=>jo(h)),await O("HealthCheck",async()=>mo(h)),await O("Logs",async()=>fo(h),{skip:ae?!1:"Build logs to file are disabled"}),await O("Close",async()=>Lr(h)),await ko()}async function Gi(){await q.login();let[t]=process.argv.slice(2);await Uo(t)}async function ji(){await ir(),await Gi()}tr(ji);
71
71
  //# sourceMappingURL=start-render.js.map