@griddo/cx 11.10.38 → 11.10.40

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,33 +1,33 @@
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.
1
+ "use strict";var ei=Object.create;var _t=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&&_t(t,i,{get:()=>e[i],enumerable:!(o=ti(e,i))||o.enumerable});return t};var h=(t,e,r)=>(r=t!=null?ei(oi(t)):{},ni(e||!t||!t.__esModule?_t(r,"default",{value:t,enumerable:!0}):r,t));var tr=h(require("node:path"));var si=process.env.NO_COLORS,ai="\x1B[0m",Pt={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 Pt){let e=t;w[e]=r=>si?r.toString():`${Pt[e]}${r}${ai}`}var I={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var tt=h(require("node:fs/promises")),xe=h(require("node:path"));var vt=h(require("node:path"));var Tt=h(require("node:fs"));var Z=h(require("node:path")),xt=h(require("node:process")),At=require("node:url"),It=t=>t instanceof URL?(0,At.fileURLToPath)(t):t;function $t(t,e={}){let{cwd:r=xt.default.cwd(),type:o="file",stopAt:i}=e,n=Z.default.resolve(It(r)??""),{root:s}=Z.default.parse(n),a=i?Z.default.resolve(n,It(i)):s,d=Z.default.isAbsolute(t);for(;;){let m=d?t:Z.default.join(n,t);try{let u=Tt.default.statSync(m,{throwIfNoEntry:!1});if(o==="file"&&u?.isFile()||o==="directory"&&u?.isDirectory())return m}catch{}if(n===a||n===s)break;n=Z.default.dirname(n)}}function Ot(t){let{cwd:e}=t||{},r=$t("package.json",{cwd:e});return r&&vt.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 ze=y.GRIDDO_API_URL||y.API_URL,Ct=y.GRIDDO_PUBLIC_API_URL||y.PUBLIC_API_URL,Lt=y.botEmail||y.GRIDDO_BOT_USER,Ft=y.botPassword||y.GRIDDO_BOT_PASSWORD,Yi=W(y.GRIDDO_AI_EMBEDDINGS||y.GRIDDO_API_AI_EMBEDDINGS),Qe=Number.parseInt(y.GRIDDO_API_CONCURRENCY_COUNT||y.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),Ze=y.GRIDDO_ASSET_PREFIX||y.ASSET_PREFIX||y.GRIDDO_RENDER_ASSET_PREFIX,ae=W(y.GRIDDO_BUILD_LOGS||y.GRIDDO_RENDER_BUILD_LOGS),Nt=Number.parseInt(y.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),Gt=y.GRIDDO_REACT_APP_INSTANCE||y.REACT_APP_INSTANCE||y.GRIDDO_APP_INSTANCE||y.GRIDDO_EDITOR_APP_INSTANCIE,jt=W(y.GRIDDO_RENDER_DISABLE_LLMS_TXT),Vi=W(y.GRIDDO_SEARCH_FEATURE||y.GRIDDO_RENDER_SEARCH_FEATURE),Xi=W(y.GRIDDO_RENDER_SKIP_BUILD_CHECKS),Mt=W(y.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Bt=W(y.GRIDDO_RENDER_SSG_VERBOSE_LOGS),Ki=W(y.GRIDDO_RENDER_USE_DIST_BACKUP),kt=W(y.GRIDDO_VERBOSE_LOGS||y.GRIDDO_RENDER_VERBOSE_LOGS),Ht=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),et=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4"),Ut=Number.parseInt(y.GRIDDO_RENDER_LIFECYCLE_RETRY_ATTEMPTS||"1");var c=class t{constructor(){}static verbose(...e){kt&&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=Ot({cwd:xe.default.resolve(__dirname,"../../..")})||"",di=xe.default.join(ci,".griddo/cache"),Wt=xe.default.join(di,"db.json");async function b(t=""){let e=t||Wt;try{return JSON.parse(await tt.default.readFile(e,"utf-8"))}catch(r){throw c.error(`Failed to read DB file at ${e}:`,r),r}}async function N(t,e=""){let r=e||Wt;try{await tt.default.writeFile(r,JSON.stringify(t,null," "))}catch(o){throw c.error(`Failed to write DB file at ${r}:`,o),o}}var it=h(require("node:fs/promises")),X=h(require("node:path"));var E=h(require("node:fs/promises")),J=h(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 Jt=(t,e)=>({error:"LifecycleExecutionError",message:`Exceeded maximum retry attempts (${t}) for ${e} LifeCycle`}),qt={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 Yt={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.`},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(`
5
+ The files generated in this render will not be published.`},Vt={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 rt(t){if(!await D(t))return;let e=(await E.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 E.default.rm(o,{recursive:!0})}}async function Xt(t,e){for(let r of t)try{await D(r)||(await E.default.mkdir(r,{recursive:!0,...e}),c.verbose(`create directory: ${r}`))}catch(o){$(ce,o)}}async function Kt(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 E.default.rm(a,{recursive:!0,force:!0}),c.verbose(`clean destination: ${a}`)),await E.default.cp(s,a,{recursive:!0,preserveTimestamps:!0}),c.verbose(`copy: ${s} to ${a}`),i&&(await Qt(a),c.verbose(`delete backup: ${a}`))}catch(d){i&&(await zt(a),c.verbose("Backup has been restored.")),$(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 E.default.rm(d,{recursive:!0,force:!0}),await E.default.rename(a,d),c.verbose(`moved: ${a} to ${d}`),n&&await Qt(d)}catch(m){n&&(await zt(d),c.info("Backup has been restored.")),$(ce,m)}}}}async function de(t){for(let e of t)try{await E.default.rm(e,{recursive:!0,force:!0}),c.verbose(`artifact removed: ${e}`)}catch(r){$(ce,r)}}async function zt(t,e="-BACKUP"){let r=t+e;try{await E.default.rename(r,t),c.info(`Backup ${r} has been restored`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function Qt(t,e="-BACKUP"){let r=t+e;if(await D(r))try{await E.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 E.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`),$(ce,o)}}}async function li(t){let e=(await E.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 ot(t){try{if(!(await E.default.stat(t)).isDirectory())return;let r;try{r=await E.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 ot(n)}if((await E.default.readdir(t)).length===0)try{await E.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 E.default.access(t),!0}catch{return!1}}async function*fe(t,e){let r=await E.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 er(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 it.default.rm(X.default.join(r,t),{recursive:!0,force:!0}),await D(X.default.join(o,t))?(await it.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 $(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 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=`
12
+ ${JSON.stringify(e,null,2)}`),new le(e)}async function rr(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 ${tr.default.join(i,"exports")}...`),await er(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=I.ERROR,await N(r),e}}var or=h(require("node:fs/promises")),ir=h(require("node:path"));async function nr(){let{version:t}=JSON.parse(await or.default.readFile(ir.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,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.38",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.38","@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:"345b369c786854fe3a091d260023799a4876daef"};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}
15
+ `;c.log(e)}var j=process.env.GRIDDO_API_URL,mi=process.env.GRIDDO_PUBLIC_API_URL,En=`${j}/ai/embeddings`,_n=`${mi}/alert`,Pn=`${j}/domains`,sr=`${j}/sites/all`,ar=`${j}/page`,cr=`${j}/login_check`,In=`${j}/debug/reset-render`,dr=`${j}/domains/robots`,Tn=`${j}/search`,lr=`${j}/settings`,pi=`${j}/domains/`,mr=[pi,"/llms"],te=`${j}/site/`,pr=[te,"/build/end"],fr=[te,"/build/start"],ur=[te,"/distributor"],gr=[te,"/sitemap"],hr=[te,"/all"],yr=[te,"/languages"],Dr=[te,"/socials"];var wr={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.10.40",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.40","@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:"3f329bbd92af7e9f9d69b0b5c0746dda52b554c0"};var Ae={"x-application-id":"griddo-cx","x-client-version":wr.version,"x-client-name":"CX"};var nt=class{headers;async login(){try{let e=await fetch(cr,{method:"POST",headers:Object.assign({},Ae,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:Lt,password:Ft})});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){$(qt,e)}}},q=new nt;var Ho=h(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 C(t,e,r){let{maxRetrys:o=Ut,skip:i}=r||{};if(i){c.info(`Skiping life-cycle ${t}. Reason: ${i}
16
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(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(`
19
+ `),c.log(s),c.log(),n++}n===o&&$(Jt(o,t))}var he=h(require("node:fs/promises")),ge=h(require("node:path"));var me=[],$e=null,ue=null,gi=Nt,at="render-detail-log.txt",Rr=!ae,st=null;async function br(){return st||(st=await b()),st}async function Sr(){if(Rr)return;let t=await br();$e=ge.default.join(t.paths.root,at),await he.default.rm($e,{force:!0})}function ye(t){Rr||(me.push(t.toString()),me.length>=gi&&Er().catch(e=>{c.error("Background log flush failed:",e)}))}async function Er(){if(ue&&await ue,me.length===0||!$e)return;ue=(async()=>{let e=[...me];me.length=0;try{await he.default.appendFile($e,`${e.join(`
20
20
  `)}
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
- Max attempts ${Ze} reached
21
+ `)}catch(r){me.unshift(...e),c.error("Error flushing logs:",r)}})();try{await ue}finally{ue=null}}async function _r(t){await Er();let e=await br(),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,at),n=ge.default.join(o,`${r}-${at}`);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=h(require("node:fs/promises")),H=h(require("node:path"));var ve=h(require("node:fs/promises")),K=h(require("node:path"));async function Oe(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 Pr(t,e){let r=await b();r.domains[e]=r.domains[e]||{},r.domains[e].renderInfo=t,await N(r)}async function Ir(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){$(Vt,o)}}async function Tr(t,e){let{__root:r}=await R({domain:e}),o=K.default.join(r,"store");if(!await D(o))return;let i=await ve.default.readdir(o),n=t.map(({id:a})=>`${a}`),s=i.filter(a=>!n.includes(a));for(let a of s)await ve.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 ve.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 xr(t){let{domain:e}=t,r=await b();r.domains[e].isRendering=!0,await N(r);let{__ssg:o}=await R(),i=H.default.join(o,`.render-sentinel-${e}`);await De.default.writeFile(i,new Date().toISOString())}async function Ar(t){let e=await b();e.domains[t].isRendering=!1,e.currentRenderingDomain=null,e.domains[t].renderMode=I.COMPLETED,await N(e);let{__ssg:r}=await R(),o=H.default.join(r,`.render-sentinel-${t}`);await De.default.unlink(o)}async function $r(t){let{__ssg:e}=await R(),r=H.default.join(e,`.render-sentinel-${t}`);await D(r)||$(Yt)}async function vr(t){let{basePath:e}=t,o=(await b()).commitHash;await De.default.writeFile(H.default.join(e,"commit"),o)}async function Or(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 ct(){let t=await b();return{griddoVersion:t.griddoVersion,buildReportFileName:t.buildReportFileName}}async function Cr(t){let e=await q.login(),{__root:r}=await R(),{buildReportFileName:o}=await ct(),{buildProcessData:i}=await Oe(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 L=h(require("node:path"));async function Lr(t){let{__exports:e,__cache:r,__root:o,__ssg:i}=await R({domain:t});return{initials:[e,r,L.default.join(e,"logs"),L.default.join(o,"store"),L.default.join(o,"apiCache")],disposables:[L.default.join(o,"store"),L.default.join(o,"apiCache"),L.default.join(o,"dist"),L.default.join(o,"dist-restored"),L.default.join(o,"assets"),L.default.join(o,"render-detail-log.txt"),L.default.join(o,"current-dist"),L.default.join(i,"domains.json"),L.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=h(require("node:fs/promises")),Fe=h(require("node:path"));async function Fr(t){let{renderArtifacts:e,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o,__exports:i},renderMode:n}=t;n===I.FROM_SCRATCH&&(await Le.default.rm(Fe.default.join(o,".cache"),{recursive:!0,force:!0}),await Le.default.rm(Fe.default.join(i,"dist"),{recursive:!0,force:!0}),await Le.default.rm(Fe.default.join(i,"assets"),{recursive:!0,force:!0})),await de(e.disposables),await de(r.disposables)}async function Nr(t){let{renderArtifacts:e,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o}}=t;await de(e.disposables),await de(r.disposables),await vr({basePath:o})}var Be=h(require("node:fs/promises")),be=h(require("node:path"));var dt=class{value;next;constructor(e){this.value=e}},we=class{#e;#t;#r;constructor(){this.clear()}enqueue(e){let r=new dt(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){Gr(t);let e=new we,r=0,o=()=>{r<t&&e.size>0&&(r++,e.dequeue()())},i=()=>{r--,o()},n=async(d,m,u)=>{let l=(async()=>d(...u))();m(l);try{await l}catch{}i()},s=(d,m,u)=>{new Promise(l=>{e.enqueue(l)}).then(n.bind(void 0,d,m,u)),r<t&&o()},a=(d,...m)=>new Promise(u=>{s(d,u,m)});return Object.defineProperties(a,{activeCount:{get:()=>r},pendingCount:{get:()=>e.size},clearQueue:{value(){e.clear()}},concurrency:{get:()=>t,set(d){Gr(d),t=d,queueMicrotask(()=>{for(;r<t&&e.size>0;)o()})}},map:{async value(d,m){let u=Array.from(d,(l,p)=>this(m,l,p));return Promise.all(u)}}}),a}function Gr(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 Ge=h(require("node:readline")),Ne=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),u=this.width-m,l=`${"\u2588".repeat(m)}${"\u2591".repeat(u)}`,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){Ge.clearLine(process.stdout,0),Ge.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 Br=h(require("node:crypto")),je=h(require("node:fs/promises")),lt=h(require("node:path"));async function mt(t,e,r=""){let{endpoint:o,body:i,cacheKey:n="",attempt:s=1,headers:a,useApiCacheDir:d=!0,logToFile:m=!0}=t,u={endpoint:o,body:i,headers:a,cacheKey:n};if(n&&d){let l=new Date,p=await Si(u);if(p){if(m){let g=jr(p),f=g?`site: ${g}`:"",S=Mr(Date.now()-l.getTime());ye(`${e} (cache) ${f} ${o} - ${S}s ${r}`)}return p}}try{let l=new Date,p={method:e.toUpperCase(),headers:Object.assign({},Ae,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 f=await g.json();if(m){let S=jr(f),T=S?`site: ${S}`:"",P=Mr(Date.now()-l.getTime());ye(`${e} (fetch) ${T} ${o} - ${P}s ${r}`)}return d&&await bi(u,f),f}catch(l){let p=l;if(s>et)throw c.log(`
23
+ Max attempts ${et} reached
24
24
  --------------------------------------
25
25
  - ${e.toUpperCase()} ${o}
26
26
  - BODY: ${JSON.stringify(i)}
27
27
  - HEADERS: ${JSON.stringify(a)}
28
28
  - ERROR: ${p.message}
29
29
  --------------------------------------
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(`
30
+ `),new le(p);return wi(p,{callInfo:{endpoint:o,body:i}}),c.warn(`Waiting for retry: ${e}`,o),await Ri(Ht*1e3),mt({endpoint:o,body:i,headers:a,cacheKey:n,attempt:s+1},e,r)}}async function v(t){return mt(t,"get")}async function pt(t){let{endpoint:e,body:r,headers:o}=t,i=e.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(r)} lang: ${JSON.stringify(o?.lang)}`;return mt(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,18 +39,18 @@ ${s}
39
39
  ${a}
40
40
 
41
41
  =============
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?`
42
+ `))}function jr(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 Mr(t,e=3){return Number.parseFloat((t/1e3).toFixed(e))}async function kr(t){let{__root:e}=await R(),r=lt.default.join(e,"apiCache"),o=Br.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 kr(t),i=lt.default.dirname(o);await D(i)||await je.default.mkdir(i,{recursive:!0}),await je.default.writeFile(o,r,"utf8")}async function Si(t){try{let e=await kr(t),r=await je.default.readFile(e,"utf8");return JSON.parse(r)}catch{return null}}var Xr=h(require("node:fs/promises")),Kr=h(require("node:path"));async function Hr(t){return v({endpoint:`${sr}?domainSlug=${t}`})}async function Ur(t,e){return v({endpoint:`${ar}/${t}`,cacheKey:e})}async function Wr(t,e=""){let[r,o]=hr;return v({endpoint:`${r}${t}${o}`,cacheKey:e})}async function ft(t,e=""){let[r,o]=yr;return v({endpoint:`${r}${t}${o}`,cacheKey:e})}async function ut(t){let[e,r]=fr;return v({endpoint:`${e}${t}${r}`})}async function Jr(t,e){let[r,o]=pr;await pt({endpoint:`${r}${t}${o}`,body:e,useApiCacheDir:!1,logToFile:!1})}async function qr(t,e,r,o,i){let[n,s]=ur,a=o||t.site,d=i||t.language;return pt({endpoint:`${n}${a}${s}`,body:e,headers:{lang:d},cacheKey:r})}async function Yr(t){let{siteId:e,headers:r}=t,[o,i]=gr;return v({endpoint:`${o}${e}${i}`,headers:r})}async function Vr(t,e=""){let[r,o]=Dr;return v({endpoint:`${r}${t}${o}`,cacheKey:e})}async function zr(t){let e=await Hr(t);if(e.length)for(let i of e){let{items:n}=await ft(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 Qr(t){let{__root:e}=await R();for(let r of t){let o=await ut(r.id),{siteHash:i}=o,n={siteHash:i,publishHashes:[],unpublishHashes:[],publishPagesIds:[]};await Jr(r.id,n),await Xr.default.rm(Kr.default.join(e,"store",r.id.toString()),{force:!0,recursive:!0})}}async function Zr(t){let e=await ut(t),r=await Wr(t),o=await ft(t),i=await Vr(t),n=o.items,s=n.find(f=>f.isDefault),{siteHash:a,unpublishHashes:d,publishIds:m}=e,{headers:u,footers:l}=r;return{siteInfo:r,validPagesIds:m,siteHash:a,unpublishHashes:d,siteLangs:n,defaultLang:s,headers:u,footers:l,socials:i}}var Me=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:u}=s,l=T=>{let P=T.find(F=>typeof F=="number");return typeof P=="number"?P:null},p=l([r,u?.[a]?.defaultHeader,d]),g=l([o,u?.[a]?.defaultFooter,m]),f=p?this.getPageHeader(p,i):p===0?null:this._defaultHeaders[i],S=g?this.getPageFooter(g,i):g===0?null:this._defaultFooters[i];return{header:f,footer:S}}};function gt(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?gt(r,1280,768):"",twitterImage:r?gt(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:u,fullUrl:l,metaKeywords:p}=t,g=m?.split(",").filter(Boolean).map(f=>f.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(f=>f!=="notranslate").join(),pageLanguages:u,metaKeywords:p?.filter(Boolean).map(f=>f.replace(/"/g,"'")).join(", ")}}async function yt(t,e){let{id:r,title:o,fullPath:i,language:n,breadcrumb:s,socialDescription:a,socialImage:d,socialTitle:m}=t,{baseUrl:u,cloudinaryName:l,griddoVersion:p,siteLangs:g,siteMetadata:f,siteOptions:S,siteScript:T,siteSlug:P,socials:F,theme:B,navigations:G}=e,{header:pe,footer:Q}=G;t.breadcrumb=s,t.siteSlug=P,t.apiUrl=u,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let U=g.find(({id:Ve})=>Ve===t?.language)?.locale.replace(/_/g,"-"),Y=Ti(t),V=Ii({socialDescription:a,socialImage:d,socialTitle:m}),oe=i.compose,Ye=new Date().toString();return{path:oe,size:void 0,context:{id:r,title:o,fullPath:i,locale:U,languageId:n,theme:B,siteMetadata:f,pageMetadata:Y,openGraph:V,socials:F,siteLangs:g,cloudinaryName:l,siteOptions:S,griddoVersion:p,renderDate:Ye,siteScript:T,header:pe,footer:Q,page:t}}}async function ro(t,e){return yt(t,e)}async function oo({page:t,pages:e,isRoot:r=!1,defaultLang:o,template:i,totalQueriedItems:n},s){let a=e.map(async(d,m)=>{let u=m===0,l=m+1,{domainUrl:p,compose:g}=t.fullPath,f={...t,fullPath:{...t.fullPath,compose:ht(g,l,{addEndingSlash:!0})},fullUrl:ht(t.fullUrl,l,{addEndingSlash:!0}),slug:ht(t.slug,l),title:to(t.title,l),metaTitle:to(t.metaTitle||"",l),disableHrefLangs:l>1,template:{...i,isFirstPage:u,pageNumber:l,totalPages:e.length,baseLink:`${p}${g}`,queriedItems:d,totalQueriedItems:n?.length},isRoot:r,defaultLang:o};return yt(f,s)});return Promise.all(a)}function io(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:u="",metaDescription:l=""}=s,p=typeof m=="string"?m:m.content,g=a.fullPath.compose||"",f=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,S=d?.replace(/\//g,""),P=d==="/"?S:`${S}/`,F=g.endsWith("/")?"":"/",B=`${g}${F}${P}`;return p.trim()&&(a.title=p),l.trim()&&(a.metaDescription=l),a.fullUrl=`${f}/${P}`,a.fullPath.compose=B,a.slug=B,a.template.activeSectionSlug=d,a.template.activeSectionBase=f,a.metaTitle=u.trim()||p.trim()||a.metaTitle,yt(a,e)});return Promise.all(n)}function no(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:u,hasGriddoMultiPage:l,elements:p}=a;u&&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 so(t){let e=t.queriedItems||[],r=t?.itemsPerPage||Pi;return Ai(r,e)}function eo(t){return t.replace(/\/+$/,"/")}function ht(t,e,r){let o=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?eo(`${t}${i}`):eo(`${t}${o}${e}${i}`)}function to(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:u,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:u||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 qr(e,a,o,n,s)}async function ao({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 co(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 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
- `),{__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 uo.default.writeFile(Se.default.join(d,"llms.txt"),`${l}
47
+ ${t} ${i}`)}async function lo(t){console.info(`API calls with ${Qe} threads`),console.info(`API URL ${ze}`);let{renderMode:e,domain:r,griddoVersion:o,basePath:i}=t,n=e===I.FROM_SCRATCH,s=be.default.join(i,"store"),a=[],d={},{sitesToPublish:m,sitesToUnpublish:u}=await zr(r);co("Sites to publish:",m),co("Sites to unpublish:",u),await Qr(u),await Tr(m,r);let l=[];for(let p of u){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:f,theme:S,favicon:T,pagesStatus:P}=p,F=g.toString();l.push(...P.offlinePending,...P.deleted);let{siteInfo:B,siteHash:G,unpublishHashes:pe,siteLangs:Q,defaultLang:O,headers:U,footers:Y,socials:V}=await Zr(g),{cloudinaryName:oe,useMetaTitle:Ye,useMetaKeywords:Rt,showBasicMetaRobots:Ve,avoidHrefLangsOnCanonicals:Wo,avoidSelfReferenceCanonicals:Jo,avoidHrefLangXDefault:qo,avoidDebugMetas:Yo}=await v({endpoint:lr});d[g]={siteHash:G,unpublishHashes:pe,publishHashes:[],publishPagesIds:[]};let bt=new Me;bt.navigations={headers:U,footers:Y},p.languages=Q;let Vo=await Li(g,G),Xo=B.siteScript,Ko={siteUrl:B.slug,title:B.name,favicon:T},zo={baseUrl:ze,publicBaseUrl:Ct,instance:Gt,siteSlug:f,theme:S,siteMetadata:Ko,socials:V,siteLangs:Q,cloudinaryName:oe,griddoVersion:o,siteOptions:{useMetaTitle:Ye,useMetaKeywords:Rt,showBasicMetaRobots:Ve,avoidHrefLangsOnCanonicals:Wo,avoidSelfReferenceCanonicals:Jo,avoidHrefLangXDefault:qo,avoidDebugMetas:Yo},siteScript:Xo};await Be.default.mkdir(be.default.join(s,F),{recursive:!0});let Qo=async(Xe,Pe,ie,Ie)=>{let ne=[],A=await Ur(Pe,Vo);if(!A){ie.current+=1,Ie.update(ie.current);return}a.push(Pe);let Te=JSON.parse(JSON.stringify(zo));Te.navigations=bt.getPageNavigations(A);let se=await ao({page:A,cacheKey:Oi}),St=await no(se),Ke=A?.mode==="list"||A?.mode==="paginated-data",Et=!Ke&&St,Zo=!Et&&!Ke;if(Ke){let k={page:A,pages:so(se),isRoot:!1,defaultLang:O,template:se,totalQueriedItems:se.queriedItems};ne=await oo(k,Te),l.push(A.id)}if(Et){let k=A;k.template=se,k.multiPageElements=St,k.defaultLang=O,ne=await io(k,Te),l.push(A.id)}if(Zo){let k=A;k.template=se,k.defaultLang=O,ne=[await ro(k,Te)]}A.hash!==null&&(d[g].publishHashes.push(A.hash),d[g].publishPagesIds.push(A.id)),await Ir(Xe,ne),ie.current+=1,Ie.update(ie.current)},_e=P.uploadPending;if(n&&_e.push(...P.active),_e.length>0){let Xe=Re(Qe),Pe=_e.length,ie={current:0},Ie=new Ne(p.name,Pe),ne=_e.map(A=>Xe(()=>Qo(F,A,ie,Ie)));await Promise.all(ne)}}return await Pr({buildProcessData:d,createdPages:a,sitesToPublish:m},r),{pagesToCreate:a,pagesToDelete:l}}async function Ci(){let{__root:t}=await R(),r=`${be.default.join(t,"apiCache")}/siteHash.json`;try{let o=await Be.default.readFile(r,"utf8");return JSON.parse(o)||{}}catch{return{}}}async function Li(t,e){let r=await Ci(),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 Be.default.writeFile(a,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}async function mo(t){let{domain:e,renderMode:r,renderMetadata:{griddoVersion:o},pathsHydratedWithDomain:{__root:i}}=t,{pagesToCreate:n,pagesToDelete:s}=await lo({domain:e,renderMode:r,griddoVersion:o,basePath:i});t.pagesToCreate=n,t.pagesToDelete=s}async function po(t){let{domain:e}=t;await $r(e),await Ar(e)}async function fo(t){let{domain:e,pathsHydratedWithDomain:{__root:r}}=t;await xr({basePath:r,domain:e})}async function uo(t){let{domain:e}=t;await _r(e)}var He=h(require("node:fs/promises")),ke=h(require("node:path"));async function Fi(t){try{return await He.default.readFile(t,"utf-8")}catch(e){return e.code==="ENOENT"?c.verbose(`client template for llms.txt file not found at ${t}, using defaults.`):c.error(`Unexpected error reading ${t}:`,e),`{{ LLMS_HEADER }}
50
48
 
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: *
49
+ {{ LLMS_PAGE_LINKS }}`}}async function go(t){if(jt){c.verbose("Skipping llms.txt generation: Disabled by environment variable.");return}try{let r=(await b()).domains[t];if(!r?.id)throw new Error(`Domain configuration or ID not found for domain: ${t}`);let o=r.id,i=[];try{let[f,S]=mr,T=`${f}${o}${S}`;i=await v({endpoint:T})}catch(f){c.error(`Failed to fetch LLM data for domain ${t}. Aborting llms.txt generation.`,f);return}let n=i.map(({title:f,url:S,socialDescription:T})=>{let P=T?`: ${T}`:"";return`- [${f}](${S})${P}`}),{__root:s,__components:a}=await R({domain:t}),d=ke.default.join(a,"static/llms.md"),m=await Fi(d),u=`llms.txt for the domain ${t}
50
+ Generated: ${new Date().toISOString().replace("T"," ").slice(0,19)}`;console.log(m);let l=m.replace(/\{\{\s*LLMS_HEADER\s*\}\}/g,`${u}`).replace(/\{\{\s*LLMS_PAGE_LINKS\s*\}\}/g,`${n.join(`
51
+ `)}`),p=ke.default.join(s,"current-dist"),g=ke.default.join(p,"llms.txt");await He.default.mkdir(p,{recursive:!0}),await He.default.writeFile(g,l,"utf-8"),c.verbose(`Successfully generated llms.txt at ${g}`)}catch(e){c.error(`Critical error generating llms.txt for ${t}:`,e)}}var ho=h(require("node:fs/promises")),Dt=h(require("node:path"));async function Ni(){return(await v({endpoint:dr}))?.filter(e=>!!e.path).map(({path:e,content:r})=>({path:e,content:r||`User-agent: *
52
52
  \r
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"?>
53
+ \rAllow: /`}))||[]}async function yo(t){let{__root:e}=await R({domain:t}),r=Dt.default.join(e,"current-dist"),o=(await Ni()).find(({path:i})=>i===`/${t}`);if(!o){c.info(`Robots not found for ${t}`);return}if(await D(r)){let i=Dt.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 Se=h(require("node:fs/promises")),re=h(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
56
  <loc>${Do(r.loc)}</loc>
@@ -64,8 +64,8 @@ ${t.map(r=>` <sitemap>
64
64
  <loc>${Do(r)}</loc>
65
65
  </sitemap>`).join(`
66
66
  `)}
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);
67
+ </sitemapindex>`}async function So(t){let{__root:e}=await R(),{sitesToPublish:r}=await Oe(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 u=q.headers?{...q.headers}:{};u.lang=m.id.toString();let l=await Yr({siteId:a,headers:u});if(!l)continue;let{items:p,url:g}=l,{home:f,domain:S}=g;if(!f)continue;let T=s.domains.find(O=>Object.keys(O)[0]===m.id.toString());if(!T)continue;let P=Object.values(T)[0],F=[],B=Object.keys(p),G=re.default.join(o,P.replace(S,""));if(await D(G))try{let O=await Se.default.readdir(G);for(let U of O)if(n(U)){let Y=re.default.join(G,U);try{await Se.default.rm(Y)}catch(V){c.error(`Error deleting file ${Y}:`,V)}}}catch(O){c.error(`Error reading ${G}:`,O)}for(let O of B){let U=p[O];if(!U.length)continue;let Y=wo(U),V=`/${i}${O.toLowerCase()}.xml`,oe=re.default.join(G,V);await bo(oe,Y),c.verbose(`sitemap generated in ${oe}`),F.push(`${f.endsWith("/")?f.slice(0,-1):f}${V}`)}if(!F.length)continue;let pe=Ro(F),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 Se.default.mkdir(r,{recursive:!0}),await Se.default.writeFile(t,e)}catch{throw new Error("Error saving a file")}}async function Eo(t){let{domain:e}=t;await Cr(e),await So(e),await yo(e),await go(e)}async function _o(t){let{renderArtifacts:e}=t;await Xt(e.initials)}var Po=h(require("node:fs/promises")),wt=h(require("node:path"));async function Io(t){let{pathsHydratedWithDomain:{__root:e,__ssg:r}}=t,o=wt.default.join(r,"public"),i=wt.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 Kt(i,a,["static"]),e===I.INCREMENTAL&&(await ee(s,a,r.cacheables),await ee(s,n,o.cacheables))}var xo=require("node:child_process"),Ao=h(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 Bt&&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 We=h(require("node:fs/promises")),Je=h(require("node:path"));var z=h(require("node:fs/promises")),_=h(require("node:path"));async function Oo(t){let{__root:e,__exports:r}=await R({domain:t}),o=(await z.default.readdir(_.default.join(r,"dist"))).filter(n=>_.default.extname(n)===".js"||_.default.extname(n)===".json"||_.default.extname(n)===".css");await z.default.mkdir(_.default.join(e,"assets"),{recursive:!0}),await z.default.cp(_.default.join(r,"dist","page-data"),_.default.join(e,"assets","page-data"),{preserveTimestamps:!0,recursive:!0}),await D(_.default.join(e,"static"))&&await z.default.cp(_.default.join(e,"static"),_.default.join(e,"assets"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(_.default.join(r,"dist","static"))&&await z.default.cp(_.default.join(r,"dist","static"),_.default.join(e,"assets","static"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(_.default.join(e,"static"))&&await z.default.cp(_.default.join(e,"static"),_.default.join(r,"dist",t),{preserveTimestamps:!0,recursive:!0,force:!1});let i=o.map(n=>{let s=_.default.join(r,"dist",n),a=_.default.join(e,"assets",n);return z.default.cp(s,a,{preserveTimestamps:!0,recursive:!0})});await Promise.all(i)}var M=h(require("node:fs/promises")),x=h(require("node:path"));var Lo=require("node:crypto"),Ee=h(require("node:fs/promises")),Fo=require("node:path");var Gi=[/\.js$/];async function Co(t){let e=new Map;try{let o=(await Ee.default.readdir(t)).filter(i=>Gi.some(n=>n.test(i)));for(let i of o){let n=(0,Fo.join)(t,i),s=await Ee.default.readFile(n),a=(0,Lo.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([Co(t),Co(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 Ee.default.readFile(t,"utf-8"),o=/(window\.___webpackCompilationHash=")([^"]*)(";<\/script>)/,i=r.replace(o,`$1${e}$3`);if(r===i)return;await Ee.default.writeFile(t,i,"utf-8")}catch(r){c.error(`Failed to process file ${t}: ${r}`)}}var Ue=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(),Mt&&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=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 Go(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,u=d.result.pageContext.fullPath.compose;return{id:m,composePath:u,htmlPath:x.default.join(e,u,"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:u,assetPrefix:l}}=t,p=!!l&&l!=="",g=Je.default.join(s,"current-dist"),f=Je.default.join(m,"dist");await ee(s,d,r.cacheables,{override:!0}),await ee(a,d,u.cacheables,{override:!0}),e===I.FROM_SCRATCH&&(await rt(g),await We.default.rm(f,{force:!0,recursive:!0}),await We.default.rename(g,f)),e===I.INCREMENTAL&&(await rt(f),await new Ue({src:g,dst:f,pagesToCreate:i,pagesToDelete:n,artifactsToCopyToExports:["build-report.json","llms.txt","robots.txt"]}).execute(),await We.default.rm(g,{force:!0,recursive:!0}),await ot(Je.default.join(m,"dist"))),p&&await Oo(o),await ee(s,m,r.archivables,{override:!0})}var qe=h(require("node:path"));async function Mo(){let{ssg:t}=(await b()).paths;return{disposables:[qe.default.join(t,"public"),qe.default.join(t,"static"),qe.default.join(t,".cache")],cacheables:[".cache"]}}async function Bo(){let t=await b();t.needsRollbackOnError=!0,await N(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 N(t),c.info(`Render lifecycles that follow will not restore the exports dir on error
69
+ `)}async function Uo(t){await Sr();let{renderMode:e,reason:r}=await Or(t),o=await ct(),i=await R({domain:t}),{__ssg:n}=i,s=await Lr(t),a=await Mo(),d=Ze?`${Ze}/${t}`:"",m=await D(Ho.default.join(n,`.render-sentinel-${t}`)),u=m?I.FROM_SCRATCH:e,l=m?"previous render error":r,p=await b();if(p.domains[t].renderMode=u,p.domains[t].renderModeReason=l,p.domains[t].isRendering=!1,e===I.IDLE&&u===I.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 N(p);let g=l?` <${l}>`:"";c.info(`Init render (${u})${g} for domain ${t}
70
+ `);let f=new Ce({domain:t,pathsHydratedWithDomain:i,renderArtifacts:s,renderMetadata:o,renderMode:u,ssg:{assetPrefix:d,ssgArtifacts:a}});await C("Init",async()=>fo(f)),await C("Clean",async()=>Fr(f)),await C("Prepare",async()=>_o(f)),await C("Restore",async()=>To(f)),await Bo(),await C("Data",async()=>mo(f)),await C("SSG",async()=>vo(f)),await C("Relocation",async()=>Io(f)),await C("Meta",async()=>Eo(f)),await C("Sync",async()=>jo(f)),await C("HealthCheck",async()=>po(f)),await C("Logs",async()=>uo(f),{skip:ae?!1:"Build logs to file are disabled"}),await C("Close",async()=>Nr(f)),await ko()}async function ji(){await q.login();let[t]=process.argv.slice(2);await Uo(t)}async function Mi(){await nr(),await ji()}rr(Mi);
71
71
  //# sourceMappingURL=start-render.js.map