@griddo/cx 11.10.16 → 11.10.17-rc.1

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