@griddo/cx 11.12.1-rc.9 → 11.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,25 @@
1
- "use strict";var En=Object.create;var Mt=Object.defineProperty;var _n=Object.getOwnPropertyDescriptor;var Pn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,In=Object.prototype.hasOwnProperty;var xn=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Pn(t))!In.call(e,n)&&n!==r&&Mt(e,n,{get:()=>t[n],enumerable:!(o=_n(t,n))||o.enumerable});return e};var h=(e,t,r)=>(r=e!=null?En(Tn(e)):{},xn(t||!e||!e.__esModule?Mt(r,"default",{value:e,enumerable:!0}):r,e));var hr=h(require("node:path"));var Bt=require("node:util"),An=process.env.NO_COLORS||process.env.CI,$n=["black","red","green","yellow","blue","magenta","cyan","white","gray","bold","dim"],R={};for(let e of $n)R[e]=t=>An?String(t):(0,Bt.styleText)(e,String(t));var $={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var ut=h(require("node:fs/promises")),je=h(require("node:path"));var Jt=h(require("node:path"));var Ht=h(require("node:fs"));var re=h(require("node:path")),Ut=h(require("node:process")),Wt=require("node:url"),kt=e=>e instanceof URL?(0,Wt.fileURLToPath)(e):e;function Re(e,t={}){let{cwd:r=Ut.default.cwd(),type:o="file",stopAt:n}=t,s=re.default.resolve(kt(r)??""),{root:i}=re.default.parse(s),a=n?re.default.resolve(s,kt(n)):i,d=re.default.isAbsolute(e);for(;;){let l=d?e:re.default.join(s,e);try{let p=Ht.default.statSync(l,{throwIfNoEntry:!1});if(o==="file"&&p?.isFile()||o==="directory"&&p?.isDirectory())return l}catch{}if(s===a||s===i)break;s=re.default.dirname(s)}}function we(e){let{cwd:t}=e||{},r=Re("package.json",{cwd:t});return r&&Jt.default.dirname(r)}var{env:y}=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 lt=y.GRIDDO_API_URL||y.API_URL,qt=y.GRIDDO_PUBLIC_API_URL||y.PUBLIC_API_URL,Yt=y.botEmail||y.GRIDDO_BOT_USER,Vt=y.botPassword||y.GRIDDO_BOT_PASSWORD,_i=W(y.GRIDDO_AI_EMBEDDINGS||y.GRIDDO_API_AI_EMBEDDINGS),mt=Number.parseInt(y.GRIDDO_API_CONCURRENCY_COUNT||y.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),pt=y.GRIDDO_ASSET_PREFIX||y.ASSET_PREFIX||y.GRIDDO_RENDER_ASSET_PREFIX,le=W(y.GRIDDO_BUILD_LOGS||y.GRIDDO_RENDER_BUILD_LOGS),Xt=Number.parseInt(y.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),Kt=y.GRIDDO_REACT_APP_INSTANCE||y.REACT_APP_INSTANCE||y.GRIDDO_APP_INSTANCE||y.GRIDDO_EDITOR_APP_INSTANCIE,zt=W(y.GRIDDO_RENDER_DISABLE_LLMS_TXT),Pi=W(y.GRIDDO_SEARCH_FEATURE||y.GRIDDO_RENDER_SEARCH_FEATURE),Ti=W(y.GRIDDO_RENDER_SKIP_BUILD_CHECKS),Qt=W(y.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Zt=W(y.GRIDDO_RENDER_SSG_VERBOSE_LOGS),Ii=W(y.GRIDDO_RENDER_USE_DIST_BACKUP),er=W(y.GRIDDO_VERBOSE_LOGS||y.GRIDDO_RENDER_VERBOSE_LOGS),tr=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),ft=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4"),rr=Number.parseInt(y.GRIDDO_RENDER_LIFECYCLE_RETRY_ATTEMPTS||"1"),Ne=W(y.GRIDDO_RENDER_ENABLED_LLM_MD);var c=class e{constructor(){}static verbose(...t){er&&console.log(R.yellow("verbose"),R.dim(t.join(" ")))}static build(...t){le&&e.log(...t)}static info(...t){console.log(`${R.blue("info")} ${t.join(" ")}`)}static success(...t){console.log(`${R.green("success")} ${t.join(" ")}`)}static error(...t){console.error(`${R.red("error")} ${t.join(" ")}`)}static warn(...t){console.warn(`${R.yellow("warn")} ${t.join(" ")}`)}static log(...t){console.log(...t)}};var Cn=we({cwd:je.default.resolve(__dirname,"../../..")})||"",vn=je.default.join(Cn,".griddo/cache"),or=je.default.join(vn,"db.json");async function b(e=""){let t=e||or;try{return JSON.parse(await ut.default.readFile(t,"utf-8"))}catch(r){throw c.error(`Failed to read DB file at ${t}:`,r),r}}async function G(e,t=""){let r=t||or;try{await ut.default.writeFile(r,JSON.stringify(e,null," "))}catch(o){throw c.error(`Failed to write DB file at ${r}:`,o),o}}var yt=h(require("node:fs/promises")),z=h(require("node:path"));var P=h(require("node:fs/promises")),q=h(require("node:path"));var me={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 nr=(e,t)=>({error:"LifecycleExecutionError",message:`Exceeded maximum retry attempts (${e}) for ${t} LifeCycle`}),ir={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 sr={error:"NoJSConfigFileFound",message:"Could not find jsconfig.json or tsconfig.json",expected:"This can happen if the instance is not properly configured with a jsconfig.json or tsconfig.json file."},ar={error:"ReadFromStoreError",message:"There was an error reading a file to the Store directory",hint:"There may be an issue such as permissions preventing the file from being read."};var cr={error:"RenderUUIDError",message:`Render sentinel file does not exist.
1
+ "use strict";var En=Object.create;var Mt=Object.defineProperty;var _n=Object.getOwnPropertyDescriptor;var Pn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,In=Object.prototype.hasOwnProperty;var xn=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Pn(t))!In.call(e,n)&&n!==r&&Mt(e,n,{get:()=>t[n],enumerable:!(o=_n(t,n))||o.enumerable});return e};var h=(e,t,r)=>(r=e!=null?En(Tn(e)):{},xn(t||!e||!e.__esModule?Mt(r,"default",{value:e,enumerable:!0}):r,e));var hr=h(require("node:path"));var Bt=require("node:util"),An=process.env.NO_COLORS||process.env.CI,$n=["black","red","green","yellow","blue","magenta","cyan","white","gray","bold","dim"],R={};for(let e of $n)R[e]=t=>An?String(t):(0,Bt.styleText)(e,String(t));var $={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var ut=h(require("node:fs/promises")),je=h(require("node:path"));var Jt=h(require("node:path"));var Ht=h(require("node:fs"));var re=h(require("node:path")),Ut=h(require("node:process")),Wt=require("node:url"),kt=e=>e instanceof URL?(0,Wt.fileURLToPath)(e):e;function Re(e,t={}){let{cwd:r=Ut.default.cwd(),type:o="file",stopAt:n}=t,s=re.default.resolve(kt(r)??""),{root:i}=re.default.parse(s),a=n?re.default.resolve(s,kt(n)):i,d=re.default.isAbsolute(e);for(;;){let l=d?e:re.default.join(s,e);try{let p=Ht.default.statSync(l,{throwIfNoEntry:!1});if(o==="file"&&p?.isFile()||o==="directory"&&p?.isDirectory())return l}catch{}if(s===a||s===i)break;s=re.default.dirname(s)}}function we(e){let{cwd:t}=e||{},r=Re("package.json",{cwd:t});return r&&Jt.default.dirname(r)}var{env:y}=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 lt=y.GRIDDO_API_URL||y.API_URL,qt=y.GRIDDO_PUBLIC_API_URL||y.PUBLIC_API_URL,Yt=y.botEmail||y.GRIDDO_BOT_USER,Vt=y.botPassword||y.GRIDDO_BOT_PASSWORD,_i=W(y.GRIDDO_AI_EMBEDDINGS||y.GRIDDO_API_AI_EMBEDDINGS),mt=Number.parseInt(y.GRIDDO_API_CONCURRENCY_COUNT||y.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),pt=y.GRIDDO_ASSET_PREFIX||y.ASSET_PREFIX||y.GRIDDO_RENDER_ASSET_PREFIX,le=W(y.GRIDDO_BUILD_LOGS||y.GRIDDO_RENDER_BUILD_LOGS),Xt=Number.parseInt(y.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),Kt=y.GRIDDO_REACT_APP_INSTANCE||y.REACT_APP_INSTANCE||y.GRIDDO_APP_INSTANCE||y.GRIDDO_EDITOR_APP_INSTANCIE,zt=W(y.GRIDDO_RENDER_DISABLE_LLMS_TXT),Pi=W(y.GRIDDO_SEARCH_FEATURE||y.GRIDDO_RENDER_SEARCH_FEATURE),Ti=W(y.GRIDDO_RENDER_SKIP_BUILD_CHECKS),Qt=W(y.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Zt=W(y.GRIDDO_RENDER_SSG_VERBOSE_LOGS),Ii=W(y.GRIDDO_RENDER_USE_DIST_BACKUP),er=W(y.GRIDDO_VERBOSE_LOGS||y.GRIDDO_RENDER_VERBOSE_LOGS),tr=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),ft=Number.parseInt(y.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4"),rr=Number.parseInt(y.GRIDDO_RENDER_LIFECYCLE_RETRY_ATTEMPTS||"1"),Ne=W(y.GRIDDO_RENDER_ENABLED_LLM_MD);var c=class e{constructor(){}static verbose(...t){er&&console.log(R.yellow("verbose"),R.dim(t.join(" ")))}static build(...t){le&&e.log(...t)}static info(...t){console.log(`${R.blue("info")} ${t.join(" ")}`)}static success(...t){console.log(`${R.green("success")} ${t.join(" ")}`)}static error(...t){console.error(`${R.red("error")} ${t.join(" ")}`)}static warn(...t){console.warn(`${R.yellow("warn")} ${t.join(" ")}`)}static log(...t){console.log(...t)}};var Cn=we({cwd:je.default.resolve(__dirname,"../../..")})||"",vn=je.default.join(Cn,".griddo/cache"),or=je.default.join(vn,"db.json");async function S(e=""){let t=e||or;try{return JSON.parse(await ut.default.readFile(t,"utf-8"))}catch(r){throw c.error(`Failed to read DB file at ${t}:`,r),r}}async function G(e,t=""){let r=t||or;try{await ut.default.writeFile(r,JSON.stringify(e,null," "))}catch(o){throw c.error(`Failed to write DB file at ${r}:`,o),o}}var yt=h(require("node:fs/promises")),z=h(require("node:path"));var P=h(require("node:fs/promises")),q=h(require("node:path"));var me={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 nr=(e,t)=>({error:"LifecycleExecutionError",message:`Exceeded maximum retry attempts (${e}) for ${t} LifeCycle`}),ir={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 sr={error:"NoJSConfigFileFound",message:"Could not find jsconfig.json or tsconfig.json",expected:"This can happen if the instance is not properly configured with a jsconfig.json or tsconfig.json file."},ar={error:"ReadFromStoreError",message:"There was an error reading a file to the Store directory",hint:"There may be an issue such as permissions preventing the file from being read."};var cr={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.`},dr={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 gt(e){if(!await D(e))return;let t=(await P.default.readdir(e,{withFileTypes:!0})).filter(r=>r.isDirectory());for(let r of t){let o=q.default.join(e,r.name);await On(o)&&await P.default.rm(o,{recursive:!0})}}async function lr(e,t){for(let r of e)try{await D(r)||(await P.default.mkdir(r,{recursive:!0,...t}),c.verbose(`create directory: ${r}`))}catch(o){I(me,o)}}async function mr(e,t,r,o={withBackup:!1}){let{withBackup:n}=o;for(let s of r){let i=q.default.join(e,s),a=q.default.join(t,s);if(!await D(i)){c.info(`(Maybe first render) Source directory does not exist: ${i}`);continue}n&&(await ur(a),c.verbose(`create backup: ${a}`));try{await D(a)&&(await P.default.rm(a,{recursive:!0,force:!0}),c.verbose(`clean destination: ${a}`)),await P.default.cp(i,a,{recursive:!0,preserveTimestamps:!0}),c.verbose(`copy: ${i} to ${a}`),n&&(await fr(a),c.verbose(`delete backup: ${a}`))}catch(d){n&&(await pr(a),c.verbose("Backup has been restored.")),I(me,d)}}}async function oe(e,t,r,o){let{override:n,withBackup:s}=o||{};for(let i of r){let a=q.default.join(e,i),d=q.default.join(t,i);if(await D(a)){s&&await ur(d);try{n&&await D(d)&&await P.default.rm(d,{recursive:!0,force:!0}),await P.default.rename(a,d),c.verbose(`moved: ${a} to ${d}`),s&&await fr(d)}catch(l){s&&(await pr(d),c.info("Backup has been restored.")),I(me,l)}}}}async function pe(e){for(let t of e)try{await P.default.rm(t,{recursive:!0,force:!0}),c.verbose(`artifact removed: ${t}`)}catch(r){I(me,r)}}async function pr(e,t="-BACKUP"){let r=e+t;try{await P.default.rename(r,e),c.info(`Backup ${r} has been restored`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function fr(e,t="-BACKUP"){let r=e+t;if(await D(r))try{await P.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 ur(e,t="-BACKUP"){let r=e+t;if(await D(e)){if(await D(r)){c.warn(`Destination ${r} already exists`);return}try{await P.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`),I(me,o)}}}async function On(e){let t=(await P.default.readdir(e,{withFileTypes:!0,recursive:!0})).filter(o=>o.isFile()&&!q.default.basename(o.name).startsWith(".")),r=t.filter(o=>o.name.endsWith(".xml"));if(t.length===r.length)return!0}async function ht(e){try{if(!(await P.default.stat(e)).isDirectory())return;let r;try{r=await P.default.readdir(e)}catch(n){if(n.code==="ENOENT"){c.warn(`The directory "${e}" does not exist, skipping it.`);return}throw c.error(`Error al leer el directorio "${e}":`,n),n}for(let n of r){let s=q.default.join(e,n);await ht(s)}if((await P.default.readdir(e)).length===0)try{await P.default.rmdir(e),c.verbose(`Remove empty directory: ${e}`)}catch(n){n.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}":`,n)}}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 D(e){try{return await P.default.access(e),!0}catch{return!1}}async function*be(e,t){let r=await P.default.opendir(e);for await(let o of r){let n=q.default.join(e,o.name);o.isDirectory()?yield*be(n,t):o.isFile()&&o.name.endsWith(t)&&(yield n)}}async function gr(e){let t=await b(),{exportsDir:r,exportsDirBackup:o}=t.paths;c.info(`Cleaning exports dir for the domain ${e}`),c.verbose(`Deleting ${z.default.join(r,e)}...`),await yt.default.rm(z.default.join(r,e),{recursive:!0,force:!0}),await D(z.default.join(o,e))?(await yt.default.cp(z.default.join(o,e),z.default.join(r,e),{recursive:!0}),c.info(`export-backup dir for the domain ${e} found. Restoring before exit...`),c.verbose(`Copying ${z.default.join(o,e)} -> ${z.default.join(r,e)}...`)):c.info("No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...")}var fe=class extends Error{constructor(t){super(t instanceof Error?t.message:String(t)),this.name="InternalCXError",this.stack=t instanceof Error?t.stack:""}};function I(e,t){let{error:r,message:o,expected:n,hint:s}=e,i=c.log(R.red(`[ ${r} ]`)),a=[n,s].filter(Boolean).join(`
5
+ The files generated in this render will not be published.`},dr={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 gt(e){if(!await D(e))return;let t=(await P.default.readdir(e,{withFileTypes:!0})).filter(r=>r.isDirectory());for(let r of t){let o=q.default.join(e,r.name);await On(o)&&await P.default.rm(o,{recursive:!0})}}async function lr(e,t){for(let r of e)try{await D(r)||(await P.default.mkdir(r,{recursive:!0,...t}),c.verbose(`create directory: ${r}`))}catch(o){I(me,o)}}async function mr(e,t,r,o={withBackup:!1}){let{withBackup:n}=o;for(let s of r){let i=q.default.join(e,s),a=q.default.join(t,s);if(!await D(i)){c.info(`(Maybe first render) Source directory does not exist: ${i}`);continue}n&&(await ur(a),c.verbose(`create backup: ${a}`));try{await D(a)&&(await P.default.rm(a,{recursive:!0,force:!0}),c.verbose(`clean destination: ${a}`)),await P.default.cp(i,a,{recursive:!0,preserveTimestamps:!0}),c.verbose(`copy: ${i} to ${a}`),n&&(await fr(a),c.verbose(`delete backup: ${a}`))}catch(d){n&&(await pr(a),c.verbose("Backup has been restored.")),I(me,d)}}}async function oe(e,t,r,o){let{override:n,withBackup:s}=o||{};for(let i of r){let a=q.default.join(e,i),d=q.default.join(t,i);if(await D(a)){s&&await ur(d);try{n&&await D(d)&&await P.default.rm(d,{recursive:!0,force:!0}),await P.default.rename(a,d),c.verbose(`moved: ${a} to ${d}`),s&&await fr(d)}catch(l){s&&(await pr(d),c.info("Backup has been restored.")),I(me,l)}}}}async function pe(e){for(let t of e)try{await P.default.rm(t,{recursive:!0,force:!0}),c.verbose(`artifact removed: ${t}`)}catch(r){I(me,r)}}async function pr(e,t="-BACKUP"){let r=e+t;try{await P.default.rename(r,e),c.info(`Backup ${r} has been restored`)}catch{throw new Error(`Error while delete ${r} backup`)}}async function fr(e,t="-BACKUP"){let r=e+t;if(await D(r))try{await P.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 ur(e,t="-BACKUP"){let r=e+t;if(await D(e)){if(await D(r)){c.warn(`Destination ${r} already exists`);return}try{await P.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`),I(me,o)}}}async function On(e){let t=(await P.default.readdir(e,{withFileTypes:!0,recursive:!0})).filter(o=>o.isFile()&&!q.default.basename(o.name).startsWith(".")),r=t.filter(o=>o.name.endsWith(".xml"));if(t.length===r.length)return!0}async function ht(e){try{if(!(await P.default.stat(e)).isDirectory())return;let r;try{r=await P.default.readdir(e)}catch(n){if(n.code==="ENOENT"){c.warn(`The directory "${e}" does not exist, skipping it.`);return}throw c.error(`Error al leer el directorio "${e}":`,n),n}for(let n of r){let s=q.default.join(e,n);await ht(s)}if((await P.default.readdir(e)).length===0)try{await P.default.rmdir(e),c.verbose(`Remove empty directory: ${e}`)}catch(n){n.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}":`,n)}}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 D(e){try{return await P.default.access(e),!0}catch{return!1}}async function*Se(e,t){let r=await P.default.opendir(e);for await(let o of r){let n=q.default.join(e,o.name);o.isDirectory()?yield*Se(n,t):o.isFile()&&o.name.endsWith(t)&&(yield n)}}async function gr(e){let t=await S(),{exportsDir:r,exportsDirBackup:o}=t.paths;c.info(`Cleaning exports dir for the domain ${e}`),c.verbose(`Deleting ${z.default.join(r,e)}...`),await yt.default.rm(z.default.join(r,e),{recursive:!0,force:!0}),await D(z.default.join(o,e))?(await yt.default.cp(z.default.join(o,e),z.default.join(r,e),{recursive:!0}),c.info(`export-backup dir for the domain ${e} found. Restoring before exit...`),c.verbose(`Copying ${z.default.join(o,e)} -> ${z.default.join(r,e)}...`)):c.info("No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...")}var fe=class extends Error{constructor(t){super(t instanceof Error?t.message:String(t)),this.name="InternalCXError",this.stack=t instanceof Error?t.stack:""}};function I(e,t){let{error:r,message:o,expected:n,hint:s}=e,i=c.log(R.red(`[ ${r} ]`)),a=[n,s].filter(Boolean).join(`
6
6
  `);throw c.log(`
7
7
  ${i}
8
8
  ${o}
9
9
  ${a}
10
10
 
11
11
  ${R.red("stack")}
12
- ${JSON.stringify(t,null,2)}`),new fe(t)}async function yr(e){try{await e()}catch(t){t instanceof fe?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:n}=o.paths;o.needsRollbackOnError?(c.info("Cleaning exports dir..."),c.verbose(`Deleting ${hr.default.join(n,"exports")}...`),await gr(o.currentRenderingDomain)):c.info("No rollback needed, skipping...")}catch{c.info("Early render stage, no db.json created yet...")}let r=await b();throw r.domains[r.currentRenderingDomain].isRendering=!1,r.domains[r.currentRenderingDomain].renderMode=$.ERROR,await G(r),t}}var Dr=h(require("node:fs/promises")),Rr=h(require("node:path"));async function wr(){let{version:e}=JSON.parse(await Dr.default.readFile(Rr.default.resolve(__dirname,"../..","package.json"),"utf-8")),t=`
12
+ ${JSON.stringify(t,null,2)}`),new fe(t)}async function yr(e){try{await e()}catch(t){t instanceof fe?c.error("Internal Griddo RenderError"):t instanceof Error?c.error(t.message):c.error(`An unexpected error occurred ${t}`);try{let o=await S(),{root:n}=o.paths;o.needsRollbackOnError?(c.info("Cleaning exports dir..."),c.verbose(`Deleting ${hr.default.join(n,"exports")}...`),await gr(o.currentRenderingDomain)):c.info("No rollback needed, skipping...")}catch{c.info("Early render stage, no db.json created yet...")}let r=await S();throw r.domains[r.currentRenderingDomain].isRendering=!1,r.domains[r.currentRenderingDomain].renderMode=$.ERROR,await G(r),t}}var Dr=h(require("node:fs/promises")),Rr=h(require("node:path"));async function wr(){let{version:e}=JSON.parse(await Dr.default.readFile(Rr.default.resolve(__dirname,"../..","package.json"),"utf-8")),t=`
13
13
  ${R.yellow(`Griddo Exporter ${e}`)}
14
14
  ${R.dim(`Node ${process.version.slice(1)}`)}
15
- `;c.log(t)}var B=process.env.GRIDDO_API_URL,Ln=process.env.GRIDDO_PUBLIC_API_URL,Zi=`${B}/ai/embeddings`,es=`${Ln}/alert`,ts=`${B}/domains`,br=`${B}/sites/all`,Sr=`${B}/page`,Er=`${B}/login_check`,rs=`${B}/debug/reset-render`,_r=`${B}/domains/robots`,os=`${B}/search`,Pr=`${B}/settings`,Fn=`${B}/domains/`,Tr=[Fn,"/llms"],ne=`${B}/site/`,Ir=[ne,"/build/end"],xr=[ne,"/build/start"],Ar=[ne,"/distributor"],$r=[ne,"/sitemap"],Cr=[ne,"/all"],vr=[ne,"/languages"],Or=[ne,"/socials"];var Lr={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.12.1-rc.9",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:{"@kreuzberg/html-to-markdown":"2.24.5",gatsby:"5.15.0","html-react-parser":"5.2.11",jiti:"^2.6.1"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.12.1-rc.9","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260108.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"5.9.3"},peerDependencies:{react:">=18 <19","react-dom":">=18 <19"},engines:{node:">=20.19"},files:["build","exporter","src","gatsby-browser.tsx","gatsby-config.ts","gatsby-node.ts","gatsby-ssr.tsx","global.d.ts","tsconfig.commands.json","tsconfig.exporter.json","tsconfig.json","plugins","cli.mjs"],publishConfig:{access:"public"},gitHead:"e32cbe0e89e5a45fe9ca85413bcf382975d53d05"};var Ge={"x-application-id":"griddo-cx","x-client-version":Lr.version,"x-client-name":"CX"};var Dt=class{headers;async login(){try{let t=await fetch(Er,{method:"POST",headers:Object.assign({},Ge,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:Yt,password:Vt})});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){I(ir,t)}}},Y=new Dt;var mn=h(require("node:path"));async function jn(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 C(e,t,r){let{maxRetrys:o=rr,skip:n}=r||{};if(n){c.info(`Skiping life-cycle ${e}. Reason: ${n}
15
+ `;c.log(t)}var B=process.env.GRIDDO_API_URL,Ln=process.env.GRIDDO_PUBLIC_API_URL,Zi=`${B}/ai/embeddings`,es=`${Ln}/alert`,ts=`${B}/domains`,Sr=`${B}/sites/all`,br=`${B}/page`,Er=`${B}/login_check`,rs=`${B}/debug/reset-render`,_r=`${B}/domains/robots`,os=`${B}/search`,Pr=`${B}/settings`,Fn=`${B}/domains/`,Tr=[Fn,"/llms"],ne=`${B}/site/`,Ir=[ne,"/build/end"],xr=[ne,"/build/start"],Ar=[ne,"/distributor"],$r=[ne,"/sitemap"],Cr=[ne,"/all"],vr=[ne,"/languages"],Or=[ne,"/socials"];var Lr={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.13.0",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:{"@kreuzberg/html-to-markdown":"2.24.5",gatsby:"5.15.0","html-react-parser":"5.2.11",jiti:"^2.6.1"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.13.0","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260108.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"5.9.3"},peerDependencies:{react:">=18 <19","react-dom":">=18 <19"},engines:{node:">=20.19"},files:["build","exporter","src","gatsby-browser.tsx","gatsby-config.ts","gatsby-node.ts","gatsby-ssr.tsx","global.d.ts","tsconfig.commands.json","tsconfig.exporter.json","tsconfig.json","plugins","cli.mjs"],publishConfig:{access:"public"},gitHead:"ff4a9e68323e9c422c66ba0a451ae3dc05a964d2"};var Ge={"x-application-id":"griddo-cx","x-client-version":Lr.version,"x-client-name":"CX"};var Dt=class{headers;async login(){try{let t=await fetch(Er,{method:"POST",headers:Object.assign({},Ge,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:Yt,password:Vt})});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){I(ir,t)}}},Y=new Dt;var mn=h(require("node:path"));async function jn(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 C(e,t,r){let{maxRetrys:o=rr,skip:n}=r||{};if(n){c.info(`Skiping life-cycle ${e}. Reason: ${n}
16
16
  `);return}let s=0;for(;s<o;)try{c.info(`start ${e} life-cycle`);let i=await jn(t);c.success(`${e} - ${i}s
17
17
  `);break}catch(i){let a=R.red(` Error in ${e} LifeCycle `),d=R.yellow(`Attempt (${s+1})`);c.log(`
18
18
  ${a} ${d}
19
- `),c.log(i),c.log(),s++}s===o&&I(nr(o,e))}var _e=h(require("node:fs/promises")),Ee=h(require("node:path"));var ue=[],Me=null,Se=null,Gn=Xt,wt="render-detail-log.txt",Fr=!le,Rt=null;async function Nr(){return Rt||(Rt=await b()),Rt}async function jr(){if(Fr)return;let e=await Nr();Me=Ee.default.join(e.paths.root,wt),await _e.default.rm(Me,{force:!0})}function Pe(e){Fr||(ue.push(e.toString()),ue.length>=Gn&&Gr().catch(t=>{c.error("Background log flush failed:",t)}))}async function Gr(){if(Se&&await Se,ue.length===0||!Me)return;Se=(async()=>{let t=[...ue];ue.length=0;try{await _e.default.appendFile(Me,`${t.join(`
19
+ `),c.log(i),c.log(),s++}s===o&&I(nr(o,e))}var _e=h(require("node:fs/promises")),Ee=h(require("node:path"));var ue=[],Me=null,be=null,Gn=Xt,wt="render-detail-log.txt",Fr=!le,Rt=null;async function Nr(){return Rt||(Rt=await S()),Rt}async function jr(){if(Fr)return;let e=await Nr();Me=Ee.default.join(e.paths.root,wt),await _e.default.rm(Me,{force:!0})}function Pe(e){Fr||(ue.push(e.toString()),ue.length>=Gn&&Gr().catch(t=>{c.error("Background log flush failed:",t)}))}async function Gr(){if(be&&await be,ue.length===0||!Me)return;be=(async()=>{let t=[...ue];ue.length=0;try{await _e.default.appendFile(Me,`${t.join(`
20
20
  `)}
21
- `)}catch(r){ue.unshift(...t),c.error("Error flushing logs:",r)}})();try{await Se}finally{Se=null}}async function Mr(e){await Gr();let t=await Nr(),r=Mn(),o=Ee.default.join(t.paths.exportsDir,e,"logs");await _e.default.mkdir(o,{recursive:!0});let n=Ee.default.join(t.paths.root,wt),s=Ee.default.join(o,`${r}-${wt}`);try{await _e.default.cp(n,s)}catch(i){if(i instanceof Error&&"code"in i&&i.code!=="ENOENT")throw i}}function Mn(){let e=new Date,t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),s=String(e.getMinutes()).padStart(2,"0"),i=String(e.getSeconds()).padStart(2,"0");return`${t}-${r}-${o}_${n}-${s}-${i}`}var ge=h(require("node:fs/promises")),k=h(require("node:path"));var Be=h(require("node:fs/promises")),Q=h(require("node:path"));async function ke(e){let t=await b(),{sitesToPublish:r,createdPages:o,buildProcessData:n}=t.domains[e].renderInfo||{};if(!r||!o||!n)throw new Error("Build metadata not found");return{buildProcessData:n,createdPages:o,sitesToPublish:r}}async function Br(e,t){let r=await b();r.domains[t]=r.domains[t]||{},r.domains[t].renderInfo=e,await G(r)}async function kr(e,t){let{__root:r}=await w();try{let o=new Set(["editorID","parentEditorID"]);for(let n of t){kn(n,o);let s=`${n.context.page.id}.json`,i=Q.default.join(r,"store",e,s);await Bn(i,JSON.stringify(n))}}catch(o){I(dr,o)}}async function Hr(e,t){let{__root:r}=await w({domain:t}),o=Q.default.join(r,"store");if(!await D(o))return;let n=await Be.default.readdir(o),s=e.map(({id:a})=>`${a}`),i=n.filter(a=>!s.includes(a));for(let a of i)await Be.default.rm(Q.default.join(o,a),{recursive:!0,force:!0}),c.verbose(`Removed orphan site id: ${a}`)}async function Bn(e,t){let r=Q.default.dirname(e),o=Q.default.extname(e),n=Q.default.basename(e,o),s=e,i=1;for(;await D(s);){let a=`${n}-${i}${o}`;s=Q.default.join(r,a),i++}await Be.default.writeFile(s,t)}function kn(e,t){function r(o){if(!(!o||typeof o!="object"||Array.isArray(o))){for(let n in o)if(Object.hasOwn(o,n))if(t.has(n))delete o[n];else{let s=o[n];typeof s=="object"&&s!==null&&!Array.isArray(s)&&r(s)}}}r(e)}async function Ur(e){let{domain:t}=e,r=await b();r.domains[t].isRendering=!0,await G(r);let{__ssg:o}=await w(),n=k.default.join(o,`.render-sentinel-${t}`);await ge.default.writeFile(n,new Date().toISOString())}async function Wr(e){let t=await b();t.domains[e].isRendering=!1,t.currentRenderingDomain=null,t.domains[e].renderMode=$.COMPLETED,await G(t);let{__ssg:r}=await w(),o=k.default.join(r,`.render-sentinel-${e}`);await ge.default.unlink(o)}async function Jr(e){let{__ssg:t}=await w(),r=k.default.join(t,`.render-sentinel-${e}`);await D(r)||I(cr)}async function qr(e){let{basePath:t}=e,o=(await b()).commitHash;await ge.default.writeFile(k.default.join(t,"commit"),o)}async function Yr(e){let t=await b();if(!t.domains[e])throw new Error(R.red(`[!] Error: Domain ${e} not found in DB`));if(!t.domains[e].renderMode)throw new Error(R.red(`[!] Error: Render mode not found for domain ${e}`));return{renderMode:t.domains[e].renderMode,reason:t.domains[e].renderModeReason}}async function w(e){let{domain:t,dbFilePath:r}=e||{},n=(await b(r)).paths;return{__root:n.root,__cache:k.default.join(n.cxCache,t||""),__components:n.components,__cx:n.cx,__sites:n.exportsDir,__exports:k.default.join(n.exportsDir,t||""),__exports_backup:k.default.join(n.exportsDirBackup,t||""),__ssg:n.ssg,__exports_dist:k.default.join(n.exportsDir,t||"","dist")}}async function bt(){let e=await b();return{griddoVersion:e.griddoVersion,buildReportFileName:e.buildReportFileName}}async function Vr(e){let t=await Y.login(),{__root:r}=await w(),{buildReportFileName:o}=await bt(),{buildProcessData:n}=await ke(e),s=Object.keys(n).map(l=>({...n[l],siteId:Number.parseInt(l)})),i={authControl:t,sites:s},a=k.default.join(r,"current-dist",o),d=k.default.join(r,"current-dist");try{await ge.default.mkdir(d,{recursive:!0})}catch{c.verbose(`directory: ${d} already exists, creation skipped.`)}await ge.default.writeFile(a,JSON.stringify(i)),c.verbose(`build report saved in ${a}`)}var N=h(require("node:path"));async function Xr(e){let{__exports:t,__cache:r,__root:o,__ssg:n}=await w({domain:e});return{initials:[t,r,N.default.join(t,"logs"),N.default.join(o,"store"),N.default.join(o,"apiCache")],disposables:[N.default.join(o,"store"),N.default.join(o,"apiCache"),N.default.join(o,"dist"),N.default.join(o,"dist-restored"),N.default.join(o,"assets"),N.default.join(o,"render-detail-log.txt"),N.default.join(o,"current-dist"),N.default.join(n,"domains.json"),N.default.join(n,"render-metadata.json")],cacheables:[],archivables:["assets"],restaurable:["dist"]}}var He=class{domain;renderMode;dryRun;buildReportFileName;pathsHydratedWithDomain;workingDistDir="";pagesToCreate=[];pagesToDelete=[];ssg;renderMetadata;renderArtifacts;constructor({domain:t,renderMode:r,ssg:o,pathsHydratedWithDomain:n,renderMetadata:s,renderArtifacts:i,dryRun:a,buildReportFileName:d}){this.domain=t,this.renderMode=r,this.pathsHydratedWithDomain=n,this.renderMetadata=s,this.renderArtifacts=i,this.ssg=o,this.dryRun=a,this.buildReportFileName=d}};var Ue=h(require("node:fs/promises")),We=h(require("node:path"));async function Kr(e){let{renderArtifacts:t,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o,__exports:n},renderMode:s}=e;s===$.FROM_SCRATCH&&!e.dryRun&&(await Ue.default.rm(We.default.join(o,".cache"),{recursive:!0,force:!0}),await Ue.default.rm(We.default.join(n,"dist"),{recursive:!0,force:!0}),await Ue.default.rm(We.default.join(n,"assets"),{recursive:!0,force:!0})),await pe(t.disposables),await pe(r.disposables)}async function zr(e){let{renderArtifacts:t,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o}}=e;await pe(t.disposables),await pe(r.disposables),await qr({basePath:o})}var Xe=h(require("node:fs/promises")),xe=h(require("node:path"));var St=class{value;next;constructor(t){this.value=t}},Te=class{#e;#t;#r;constructor(){this.clear()}enqueue(t){let r=new St(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 Ie(e){Qr(e);let t=new Te,r=0,o=()=>{r<e&&t.size>0&&(r++,t.dequeue()())},n=()=>{r--,o()},s=async(d,l,p)=>{let m=(async()=>d(...p))();l(m);try{await m}catch{}n()},i=(d,l,p)=>{new Promise(m=>{t.enqueue(m)}).then(s.bind(void 0,d,l,p)),r<e&&o()},a=(d,...l)=>new Promise(p=>{i(d,p,l)});return Object.defineProperties(a,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(d){Qr(d),e=d,queueMicrotask(()=>{for(;r<e&&t.size>0;)o()})}},map:{async value(d,l){let p=Array.from(d,(m,f)=>this(l,m,f));return Promise.all(p)}}}),a}function Qr(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 qe=h(require("node:readline")),Je=class e{constructor(t,r){this.siteName=t;this.total=r;this.startTime=Date.now()}startTime;isFinished=!1;width=20;static ANSI_REGEX=/\u001b\[[0-9;]*m/g;update(t){if(this.isFinished)return;let o=(Date.now()-this.startTime)/1e3,n=this.total>0?Math.min(Math.max(t/this.total,0),1):0,s=o>0?t/o:0;if(t>=this.total){this.isFinished=!0;let i=`Fetched pages from ${this.siteName}: ${this.total} pages - ${s.toFixed(1)}p/s - ${this.formatTime(o)}`;this.writeToLine(i),this.finish();return}if(!process.env.CI){let i=Math.floor(n*100),a=this.total-t,d=s>0?Math.ceil(a/s):0,l=Math.round(this.width*n),p=this.width-l,m=`${"\u2588".repeat(l)}${"\u2591".repeat(p)}`,f=`Fetching pages from ${this.siteName}: ${m} ${i}% - (${t}/${this.total}) - ${s.toFixed(1)}p/s - ETA: ${this.formatTime(d)}`;this.writeToLine(f)}}writeToLine(t){qe.clearLine(process.stdout,0),qe.cursorTo(process.stdout,0);let r=process.stdout.columns||80;if(t.replace(e.ANSI_REGEX,"").length>r){let n=t.replace(e.ANSI_REGEX,"");process.stdout.write(`${n.substring(0,r-3)}...`)}else process.stdout.write(t)}finish(){process.stdout.write(`
22
- `)}formatTime(t){if(!Number.isFinite(t)||t<0)return"--:--";let r=Math.floor(t/3600),o=Math.floor(t%3600/60),n=Math.floor(t%60),s=o.toString().padStart(2,"0"),i=n.toString().padStart(2,"0");return r>0?`${r}:${s}:${i}`:`${s}:${i}`}};var to=h(require("node:crypto")),Ye=h(require("node:fs/promises")),Et=h(require("node:path"));async function _t(e,t,r=""){let{endpoint:o,body:n,cacheKey:s="",attempt:i=1,headers:a,useApiCacheDir:d=!0,logToFile:l=!0}=e,p={endpoint:o,body:n,headers:a,cacheKey:s};if(s&&d){let m=new Date,f=await Jn(p);if(f){if(l){let g=Zr(f),u=g?`site: ${g}`:"",S=eo(Date.now()-m.getTime());Pe(`${t} (cache) ${u} ${o} - ${S}s ${r}`)}return f}}try{let m=new Date,f={method:t.toUpperCase(),headers:Object.assign({},Ge,a,Y.headers)};t.toLowerCase()!=="get"&&n&&(f.body=JSON.stringify(n),f.headers||(f.headers={}),f.headers["Content-Type"]="application/json");let g=await fetch(o,f);if(!g.ok){if(g.status===404)return null;throw new Error(`HTTP ${g.status}: ${g.statusText}`)}let u=await g.json();if(l){let S=Zr(u),A=S?`site: ${S}`:"",E=eo(Date.now()-m.getTime());Pe(`${t} (fetch) ${A} ${o} - ${E}s ${r}`)}return d&&await Wn(p,u),u}catch(m){let f=m;if(i>ft)throw c.log(`
21
+ `)}catch(r){ue.unshift(...t),c.error("Error flushing logs:",r)}})();try{await be}finally{be=null}}async function Mr(e){await Gr();let t=await Nr(),r=Mn(),o=Ee.default.join(t.paths.exportsDir,e,"logs");await _e.default.mkdir(o,{recursive:!0});let n=Ee.default.join(t.paths.root,wt),s=Ee.default.join(o,`${r}-${wt}`);try{await _e.default.cp(n,s)}catch(i){if(i instanceof Error&&"code"in i&&i.code!=="ENOENT")throw i}}function Mn(){let e=new Date,t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),s=String(e.getMinutes()).padStart(2,"0"),i=String(e.getSeconds()).padStart(2,"0");return`${t}-${r}-${o}_${n}-${s}-${i}`}var ge=h(require("node:fs/promises")),k=h(require("node:path"));var Be=h(require("node:fs/promises")),Q=h(require("node:path"));async function ke(e){let t=await S(),{sitesToPublish:r,createdPages:o,buildProcessData:n}=t.domains[e].renderInfo||{};if(!r||!o||!n)throw new Error("Build metadata not found");return{buildProcessData:n,createdPages:o,sitesToPublish:r}}async function Br(e,t){let r=await S();r.domains[t]=r.domains[t]||{},r.domains[t].renderInfo=e,await G(r)}async function kr(e,t){let{__root:r}=await w();try{let o=new Set(["editorID","parentEditorID"]);for(let n of t){kn(n,o);let s=`${n.context.page.id}.json`,i=Q.default.join(r,"store",e,s);await Bn(i,JSON.stringify(n))}}catch(o){I(dr,o)}}async function Hr(e,t){let{__root:r}=await w({domain:t}),o=Q.default.join(r,"store");if(!await D(o))return;let n=await Be.default.readdir(o),s=e.map(({id:a})=>`${a}`),i=n.filter(a=>!s.includes(a));for(let a of i)await Be.default.rm(Q.default.join(o,a),{recursive:!0,force:!0}),c.verbose(`Removed orphan site id: ${a}`)}async function Bn(e,t){let r=Q.default.dirname(e),o=Q.default.extname(e),n=Q.default.basename(e,o),s=e,i=1;for(;await D(s);){let a=`${n}-${i}${o}`;s=Q.default.join(r,a),i++}await Be.default.writeFile(s,t)}function kn(e,t){function r(o){if(!(!o||typeof o!="object"||Array.isArray(o))){for(let n in o)if(Object.hasOwn(o,n))if(t.has(n))delete o[n];else{let s=o[n];typeof s=="object"&&s!==null&&!Array.isArray(s)&&r(s)}}}r(e)}async function Ur(e){let{domain:t}=e,r=await S();r.domains[t].isRendering=!0,await G(r);let{__ssg:o}=await w(),n=k.default.join(o,`.render-sentinel-${t}`);await ge.default.writeFile(n,new Date().toISOString())}async function Wr(e){let t=await S();t.domains[e].isRendering=!1,t.currentRenderingDomain=null,t.domains[e].renderMode=$.COMPLETED,await G(t);let{__ssg:r}=await w(),o=k.default.join(r,`.render-sentinel-${e}`);await ge.default.unlink(o)}async function Jr(e){let{__ssg:t}=await w(),r=k.default.join(t,`.render-sentinel-${e}`);await D(r)||I(cr)}async function qr(e){let{basePath:t}=e,o=(await S()).commitHash;await ge.default.writeFile(k.default.join(t,"commit"),o)}async function Yr(e){let t=await S();if(!t.domains[e])throw new Error(R.red(`[!] Error: Domain ${e} not found in DB`));if(!t.domains[e].renderMode)throw new Error(R.red(`[!] Error: Render mode not found for domain ${e}`));return{renderMode:t.domains[e].renderMode,reason:t.domains[e].renderModeReason}}async function w(e){let{domain:t,dbFilePath:r}=e||{},n=(await S(r)).paths;return{__root:n.root,__cache:k.default.join(n.cxCache,t||""),__components:n.components,__cx:n.cx,__sites:n.exportsDir,__exports:k.default.join(n.exportsDir,t||""),__exports_backup:k.default.join(n.exportsDirBackup,t||""),__ssg:n.ssg,__exports_dist:k.default.join(n.exportsDir,t||"","dist")}}async function St(){let e=await S();return{griddoVersion:e.griddoVersion,buildReportFileName:e.buildReportFileName}}async function Vr(e){let t=await Y.login(),{__root:r}=await w(),{buildReportFileName:o}=await St(),{buildProcessData:n}=await ke(e),s=Object.keys(n).map(l=>({...n[l],siteId:Number.parseInt(l)})),i={authControl:t,sites:s},a=k.default.join(r,"current-dist",o),d=k.default.join(r,"current-dist");try{await ge.default.mkdir(d,{recursive:!0})}catch{c.verbose(`directory: ${d} already exists, creation skipped.`)}await ge.default.writeFile(a,JSON.stringify(i)),c.verbose(`build report saved in ${a}`)}var N=h(require("node:path"));async function Xr(e){let{__exports:t,__cache:r,__root:o,__ssg:n}=await w({domain:e});return{initials:[t,r,N.default.join(t,"logs"),N.default.join(o,"store"),N.default.join(o,"apiCache")],disposables:[N.default.join(o,"store"),N.default.join(o,"apiCache"),N.default.join(o,"dist"),N.default.join(o,"dist-restored"),N.default.join(o,"assets"),N.default.join(o,"render-detail-log.txt"),N.default.join(o,"current-dist"),N.default.join(n,"domains.json"),N.default.join(n,"render-metadata.json")],cacheables:[],archivables:["assets"],restaurable:["dist"]}}var He=class{domain;renderMode;dryRun;buildReportFileName;pathsHydratedWithDomain;workingDistDir="";pagesToCreate=[];pagesToDelete=[];ssg;renderMetadata;renderArtifacts;constructor({domain:t,renderMode:r,ssg:o,pathsHydratedWithDomain:n,renderMetadata:s,renderArtifacts:i,dryRun:a,buildReportFileName:d}){this.domain=t,this.renderMode=r,this.pathsHydratedWithDomain=n,this.renderMetadata=s,this.renderArtifacts=i,this.ssg=o,this.dryRun=a,this.buildReportFileName=d}};var Ue=h(require("node:fs/promises")),We=h(require("node:path"));async function Kr(e){let{renderArtifacts:t,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o,__exports:n},renderMode:s}=e;s===$.FROM_SCRATCH&&!e.dryRun&&(await Ue.default.rm(We.default.join(o,".cache"),{recursive:!0,force:!0}),await Ue.default.rm(We.default.join(n,"dist"),{recursive:!0,force:!0}),await Ue.default.rm(We.default.join(n,"assets"),{recursive:!0,force:!0})),await pe(t.disposables),await pe(r.disposables)}async function zr(e){let{renderArtifacts:t,ssg:{ssgArtifacts:r},pathsHydratedWithDomain:{__cache:o}}=e;await pe(t.disposables),await pe(r.disposables),await qr({basePath:o})}var Xe=h(require("node:fs/promises")),xe=h(require("node:path"));var bt=class{value;next;constructor(t){this.value=t}},Te=class{#e;#t;#r;constructor(){this.clear()}enqueue(t){let r=new bt(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 Ie(e){Qr(e);let t=new Te,r=0,o=()=>{r<e&&t.size>0&&(r++,t.dequeue()())},n=()=>{r--,o()},s=async(d,l,p)=>{let m=(async()=>d(...p))();l(m);try{await m}catch{}n()},i=(d,l,p)=>{new Promise(m=>{t.enqueue(m)}).then(s.bind(void 0,d,l,p)),r<e&&o()},a=(d,...l)=>new Promise(p=>{i(d,p,l)});return Object.defineProperties(a,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(d){Qr(d),e=d,queueMicrotask(()=>{for(;r<e&&t.size>0;)o()})}},map:{async value(d,l){let p=Array.from(d,(m,f)=>this(l,m,f));return Promise.all(p)}}}),a}function Qr(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 qe=h(require("node:readline")),Je=class e{constructor(t,r){this.siteName=t;this.total=r;this.startTime=Date.now()}startTime;isFinished=!1;width=20;static ANSI_REGEX=/\u001b\[[0-9;]*m/g;update(t){if(this.isFinished)return;let o=(Date.now()-this.startTime)/1e3,n=this.total>0?Math.min(Math.max(t/this.total,0),1):0,s=o>0?t/o:0;if(t>=this.total){this.isFinished=!0;let i=`Fetched pages from ${this.siteName}: ${this.total} pages - ${s.toFixed(1)}p/s - ${this.formatTime(o)}`;this.writeToLine(i),this.finish();return}if(!process.env.CI){let i=Math.floor(n*100),a=this.total-t,d=s>0?Math.ceil(a/s):0,l=Math.round(this.width*n),p=this.width-l,m=`${"\u2588".repeat(l)}${"\u2591".repeat(p)}`,f=`Fetching pages from ${this.siteName}: ${m} ${i}% - (${t}/${this.total}) - ${s.toFixed(1)}p/s - ETA: ${this.formatTime(d)}`;this.writeToLine(f)}}writeToLine(t){qe.clearLine(process.stdout,0),qe.cursorTo(process.stdout,0);let r=process.stdout.columns||80;if(t.replace(e.ANSI_REGEX,"").length>r){let n=t.replace(e.ANSI_REGEX,"");process.stdout.write(`${n.substring(0,r-3)}...`)}else process.stdout.write(t)}finish(){process.stdout.write(`
22
+ `)}formatTime(t){if(!Number.isFinite(t)||t<0)return"--:--";let r=Math.floor(t/3600),o=Math.floor(t%3600/60),n=Math.floor(t%60),s=o.toString().padStart(2,"0"),i=n.toString().padStart(2,"0");return r>0?`${r}:${s}:${i}`:`${s}:${i}`}};var to=h(require("node:crypto")),Ye=h(require("node:fs/promises")),Et=h(require("node:path"));async function _t(e,t,r=""){let{endpoint:o,body:n,cacheKey:s="",attempt:i=1,headers:a,useApiCacheDir:d=!0,logToFile:l=!0}=e,p={endpoint:o,body:n,headers:a,cacheKey:s};if(s&&d){let m=new Date,f=await Jn(p);if(f){if(l){let g=Zr(f),u=g?`site: ${g}`:"",b=eo(Date.now()-m.getTime());Pe(`${t} (cache) ${u} ${o} - ${b}s ${r}`)}return f}}try{let m=new Date,f={method:t.toUpperCase(),headers:Object.assign({},Ge,a,Y.headers)};t.toLowerCase()!=="get"&&n&&(f.body=JSON.stringify(n),f.headers||(f.headers={}),f.headers["Content-Type"]="application/json");let g=await fetch(o,f);if(!g.ok){if(g.status===404)return null;throw new Error(`HTTP ${g.status}: ${g.statusText}`)}let u=await g.json();if(l){let b=Zr(u),A=b?`site: ${b}`:"",E=eo(Date.now()-m.getTime());Pe(`${t} (fetch) ${A} ${o} - ${E}s ${r}`)}return d&&await Wn(p,u),u}catch(m){let f=m;if(i>ft)throw c.log(`
23
23
  Max attempts ${ft} reached
24
24
  --------------------------------------
25
25
  - ${t.toUpperCase()} ${o}
@@ -39,16 +39,16 @@ ${i}
39
39
  ${a}
40
40
 
41
41
  =============
42
- `))}function Zr(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return"site"in e&&e.site?e.site:void 0}function Un(e){return new Promise(t=>setTimeout(t,e))}function eo(e,t=3){return Number.parseFloat((e/1e3).toFixed(t))}async function ro(e){let{__root:t}=await w(),r=Et.default.join(t,"apiCache"),o=to.default.createHash("sha256");return o.update(JSON.stringify(e)),`${r}/${o.digest("hex")}`}async function Wn(e,t){let r=typeof t=="string"?t:JSON.stringify(t),o=await ro(e),n=Et.default.dirname(o);await D(n)||await Ye.default.mkdir(n,{recursive:!0}),await Ye.default.writeFile(o,r,"utf8")}async function Jn(e){try{let t=await ro(e),r=await Ye.default.readFile(t,"utf8");return JSON.parse(r)}catch{return null}}var mo=h(require("node:fs/promises")),po=h(require("node:path"));async function oo(e){return L({endpoint:`${br}?domainSlug=${e}`})}async function no(e,t){return L({endpoint:`${Sr}/${e}`,cacheKey:t})}async function io(e,t=""){let[r,o]=Cr;return L({endpoint:`${r}${e}${o}`,cacheKey:t})}async function Tt(e,t=""){let[r,o]=vr;return L({endpoint:`${r}${e}${o}`,cacheKey:t})}async function It(e){let[t,r]=xr;return L({endpoint:`${t}${e}${r}`})}async function so(e,t){let[r,o]=Ir;await Pt({endpoint:`${r}${e}${o}`,body:t,useApiCacheDir:!1,logToFile:!1})}async function ao(e,t,r,o,n){let[s,i]=Ar,a=o||e.site,d=n||e.language;return Pt({endpoint:`${s}${a}${i}`,body:t,headers:{lang:d},cacheKey:r})}async function co(e){let{siteId:t,headers:r}=e,[o,n]=$r;return L({endpoint:`${o}${t}${n}`,headers:r})}async function lo(e,t=""){let[r,o]=Or;return L({endpoint:`${r}${e}${o}`,cacheKey:t})}async function fo(e){let t=await oo(e);if(t.length)for(let n of t){let{items:s}=await Tt(n.id);n.domains=s.filter(i=>i.domain&&(i.domain.slug===e||i.domain.slug===`/${e}`)).map(i=>({[i.id]:`${i.domain.slug}${i.path}`}))}let r=t.filter(n=>!!n.isPublished),o=t.filter(n=>!n.isPublished&&n.shouldBeUpdated);return{sitesToPublish:r,sitesToUnpublish:o}}async function uo(e){let{__root:t}=await w();for(let r of e){let o=await It(r.id),{siteHash:n}=o,s={siteHash:n,publishHashes:[],unpublishHashes:[],publishPagesIds:[]};await so(r.id,s),await mo.default.rm(po.default.join(t,"store",r.id.toString()),{force:!0,recursive:!0})}}async function go(e){let t=await It(e),r=await io(e),o=await Tt(e),n=await lo(e),s=o.items,i=s.find(u=>u.isDefault),{siteHash:a,unpublishHashes:d,publishIds:l}=t,{headers:p,footers:m}=r;return{siteInfo:r,validPagesIds:l,siteHash:a,unpublishHashes:d,siteLangs:s,defaultLang:i,headers:p,footers:m,socials:n}}var Ve=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(n=>n.setAsDefault),o={};for(let n of r)o[n.language]=n;return o}getDefaultHeaders(){let r=[...this.navigations.headers].filter(n=>n.setAsDefault),o={};for(let n of r)o[n.language]=n;return o}getRightLanguage(t,r,o){if(!t||!r)return null;let s=t.find(i=>i.language===o&&i.navigationLanguages?.find(a=>a.navigationId===r))||t.find(i=>i.id===r);return s?{...s}: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:n,template:s,templateConfig:i}=t,{templateType:a}=s,{defaultHeader:d,defaultFooter:l,templates:p}=i,m=A=>{let E=A.find(_=>typeof _=="number");return typeof E=="number"?E:null},f=m([r,p?.[a]?.defaultHeader,d]),g=m([o,p?.[a]?.defaultFooter,l]),u=f?this.getPageHeader(f,n):f===0?null:this._defaultHeaders[n],S=g?this.getPageFooter(g,n):g===0?null:this._defaultFooters[n];return{header:u,footer:S}}};function xt(e,t,r,o="jpg"){let n=typeof e=="string"?e:e?.url;return n?n.split("/")[2].includes("cloudinary.com")?Yn(n,`c_fill,w_${t},h_${r}`):qn(n,`f/${o}/w/${t}/h/${r}`):null}function qn(e,t){let r=e.split("/"),o=r.slice(0,-1).join("/"),n=r.slice(-1)[0];return`${o}/${t}/${n}`}function Yn(e,t){let r=e.replace("https://",""),o=r.split("/").slice(0,4).join("/"),n=r.replace(o,"");return`https://${o}/${t}${n}`}var Vn=25;function Xn({socialTitle:e,socialDescription:t,socialImage:r}){return{type:"website",title:e,description:t,image:r?xt(r,1280,768):"",twitterImage:r?xt(r,1280,768):""}}function Kn(e){let{title:t,metaTitle:r,metaDescription:o,canonicalURL:n,locale:s,url:i,isIndexed:a,follow:d,metasAdvanced:l,pageLanguages:p,fullUrl:m,metaKeywords:f}=e,g=l?.split(",").filter(Boolean).map(u=>u.trim().toLowerCase())||[];return{title:(r||t||"").trim(),description:o,canonical:n?.trim()&&n!==m?n.trim():a?m:void 0,locale:s,url:i,index:a?"index":"noindex",follow:d?"follow":"nofollow",translate:g.includes("notranslate")?"notranslate":"",metasAdvanced:g.filter(u=>u!=="notranslate").join(),pageLanguages:p,metaKeywords:f?.filter(Boolean).map(u=>u.replace(/"/g,"'")).join(", ")}}async function $t(e,t){let{id:r,title:o,fullPath:n,language:s,breadcrumb:i,socialDescription:a,socialImage:d,socialTitle:l}=e,{baseUrl:p,cloudinaryName:m,griddoVersion:f,siteLangs:g,siteMetadata:u,siteOptions:S,siteScript:A,siteSlug:E,socials:_,theme:j,navigations:M}=t,{header:De,footer:te}=M;e.breadcrumb=i,e.siteSlug=E,e.apiUrl=p,e.publicApiUrl=t.publicBaseUrl,e.instance=t.instance;let J=g.find(({id:at})=>at===e?.language)?.locale.replace(/_/g,"-"),X=Kn(e),K=Xn({socialDescription:a,socialImage:d,socialTitle:l}),se=n.compose,st=new Date().toString();return{path:se,size:void 0,context:{id:r,title:o,fullPath:n,locale:J,languageId:s,theme:j,siteMetadata:u,pageMetadata:X,openGraph:K,socials:_,siteLangs:g,cloudinaryName:m,siteOptions:S,griddoVersion:f,renderDate:st,siteScript:A,header:De,footer:te,page:e}}}async function Do(e,t){return $t(e,t)}async function Ro({page:e,pages:t,isRoot:r=!1,defaultLang:o,template:n,totalQueriedItems:s},i){let a=t.map(async(d,l)=>{let p=l===0,m=l+1,{domainUrl:f,compose:g}=e.fullPath,u={...e,fullPath:{...e.fullPath,compose:At(g,m,{addEndingSlash:!0})},fullUrl:At(e.fullUrl,m,{addEndingSlash:!0}),slug:At(e.slug,m),title:yo(e.title,m),metaTitle:yo(e.metaTitle||"",m),disableHrefLangs:m>1,template:{...n,isFirstPage:p,pageNumber:m,totalPages:t.length,baseLink:`${f}${g}`,queriedItems:d,totalQueriedItems:s?.length},isRoot:r,defaultLang:o};return $t(u,i)});return Promise.all(a)}function wo(e,t){let{multiPageElements:r,...o}=e,n=JSON.parse(JSON.stringify(r));n.find(({sectionSlug:i})=>i==="/")||n.push({});let s=n.map(async i=>{let a=JSON.parse(JSON.stringify(o)),{sectionSlug:d="/",title:l="",metaTitle:p="",metaDescription:m=""}=i,f=typeof l=="string"?l:l.content,g=a.fullPath.compose||"",u=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,S=d?.replace(/\//g,""),E=d==="/"?S:`${S}/`,_=g.endsWith("/")?"":"/",j=`${g}${_}${E}`;return f.trim()&&(a.title=f),m.trim()&&(a.metaDescription=m),a.fullUrl=`${u}/${E}`,a.fullPath.compose=j,a.slug=j,a.template.activeSectionSlug=d,a.template.activeSectionBase=u,a.metaTitle=p.trim()||f.trim()||a.metaTitle,$t(a,t)});return Promise.all(s)}function bo(e){return new Promise(r=>{let o=(n,s=0)=>{if(!(!n||typeof n!="object")){for(let i in n){let a=n[i],d=a||typeof a=="object",l=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!d||!l)continue;let{component:p,hasGriddoMultiPage:m,elements:f}=a;p&&m&&r(f||[]),o(a,s+1)}s||r(null)}};o([e])})}function zn(e,t,r){return t?.slice(e*(r-1),e*r)}function Qn(e,t){let r=Math.ceil(t.length/e)||1;return Array.from({length:r},(n,s)=>s+1)?.map(n=>zn(e,t,n))}function So(e){let t=e.queriedItems||[],r=e?.itemsPerPage||Vn;return Qn(r,t)}function ho(e){return e.replace(/\/+$/,"/")}function At(e,t,r){let o=e.endsWith("/")?"":"/",n=r?.addEndingSlash?"/":"";return t<=1?ho(`${e}${n}`):ho(`${e}${o}${t}${n}`)}function yo(e,t){return!e||t<=1?e:`${e} - ${t}`}function Zn(e,t){let{order:r,sources:o,quantity:n,mode:s,fixed:i,fullRelations:a=!1,allLanguages:d=!1,preferenceLanguage:l=!1,referenceId:p,fields:m}=e;return s==="auto"?{mode:s,order:r,sources:o,quantity:n,fullRelations:a,allLanguages:d,preferenceLanguage:l,fields:m}:s==="manual"?{mode:s,fixed:i,fullRelations:a,fields:m}:s==="navigation"?{mode:s,order:r,quantity:n,fullRelations:a,referenceId:p||t?.structuredDataContent?.id,fields:m}:(c.error(`ReferenceField mode: ${s} is not recognized on page ${t?.id}.`),e)}async function ei(e){let{page:t,component:r,cacheKey:o}=e,{data:n}=r;if(!n)return c.info(`Error: Page ${t.id} has \`hasDistributorData: true\` or \`getStaticData: true\` but it doesn't have a \`data\` property.`),[];if(Array.isArray(n.sources)&&n.sources.length<1)return c.info(`Warning: Page with id: ${t.id} has a ReferenceField with empty \`data.sources\``),[];let{site:s,lang:i}=n;!n.sources&&n.mode==="auto"&&c.info(`Warning: Page with id: ${t.id} has a ReferenceField with \`undefined\` \`data.sources\``);let a=Zn(n,t);return await ao(t,a,o,s,i)}async function Eo({page:e,cacheKey:t=""}){try{let{template:r}=e,o=async(i,a=1)=>{if(!(!i||typeof i!="object"||!(JSON.stringify(i).includes('"hasDistributorData":true')||JSON.stringify(i).includes('"getStaticData":true'))))for(let l in i){if(l==="queriedItems")continue;let m=i[l];if(!m||typeof m!="object")continue;(m.hasDistributorData||m.getStaticData)&&(m.queriedItems=await ei({page:e,cacheKey:t,component:m})),await o(m,a+1)}};return await(async i=>(await o([i]),i))(r)}catch(r){throw c.error("Error in getReferenceFieldData:",r),r}}var ti=Date.now().toString();function _o(e,t){let r=Math.max(...t.map(s=>s.name.length+(s.shouldBeUpdated?1:0)+s.id.toString().length)),o=t.map(s=>{let i=s.shouldBeUpdated?"*":"",a=s.name.length+i.length+s.id.toString().length,d=" ".repeat(r-a);return`${R.bold(s.name)} ${R.dim(`(id:${s.id})`)} ${i} ${d}${R.dim("-")} ${R.dim(s.slug)}`}),n=o.length>0?`
42
+ `))}function Zr(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return"site"in e&&e.site?e.site:void 0}function Un(e){return new Promise(t=>setTimeout(t,e))}function eo(e,t=3){return Number.parseFloat((e/1e3).toFixed(t))}async function ro(e){let{__root:t}=await w(),r=Et.default.join(t,"apiCache"),o=to.default.createHash("sha256");return o.update(JSON.stringify(e)),`${r}/${o.digest("hex")}`}async function Wn(e,t){let r=typeof t=="string"?t:JSON.stringify(t),o=await ro(e),n=Et.default.dirname(o);await D(n)||await Ye.default.mkdir(n,{recursive:!0}),await Ye.default.writeFile(o,r,"utf8")}async function Jn(e){try{let t=await ro(e),r=await Ye.default.readFile(t,"utf8");return JSON.parse(r)}catch{return null}}var mo=h(require("node:fs/promises")),po=h(require("node:path"));async function oo(e){return L({endpoint:`${Sr}?domainSlug=${e}`})}async function no(e,t){return L({endpoint:`${br}/${e}`,cacheKey:t})}async function io(e,t=""){let[r,o]=Cr;return L({endpoint:`${r}${e}${o}`,cacheKey:t})}async function Tt(e,t=""){let[r,o]=vr;return L({endpoint:`${r}${e}${o}`,cacheKey:t})}async function It(e){let[t,r]=xr;return L({endpoint:`${t}${e}${r}`})}async function so(e,t){let[r,o]=Ir;await Pt({endpoint:`${r}${e}${o}`,body:t,useApiCacheDir:!1,logToFile:!1})}async function ao(e,t,r,o,n){let[s,i]=Ar,a=o||e.site,d=n||e.language;return Pt({endpoint:`${s}${a}${i}`,body:t,headers:{lang:d},cacheKey:r})}async function co(e){let{siteId:t,headers:r}=e,[o,n]=$r;return L({endpoint:`${o}${t}${n}`,headers:r})}async function lo(e,t=""){let[r,o]=Or;return L({endpoint:`${r}${e}${o}`,cacheKey:t})}async function fo(e){let t=await oo(e);if(t.length)for(let n of t){let{items:s}=await Tt(n.id);n.domains=s.filter(i=>i.domain&&(i.domain.slug===e||i.domain.slug===`/${e}`)).map(i=>({[i.id]:`${i.domain.slug}${i.path}`}))}let r=t.filter(n=>!!n.isPublished),o=t.filter(n=>!n.isPublished&&n.shouldBeUpdated);return{sitesToPublish:r,sitesToUnpublish:o}}async function uo(e){let{__root:t}=await w();for(let r of e){let o=await It(r.id),{siteHash:n}=o,s={siteHash:n,publishHashes:[],unpublishHashes:[],publishPagesIds:[]};await so(r.id,s),await mo.default.rm(po.default.join(t,"store",r.id.toString()),{force:!0,recursive:!0})}}async function go(e){let t=await It(e),r=await io(e),o=await Tt(e),n=await lo(e),s=o.items,i=s.find(u=>u.isDefault),{siteHash:a,unpublishHashes:d,publishIds:l}=t,{headers:p,footers:m}=r;return{siteInfo:r,validPagesIds:l,siteHash:a,unpublishHashes:d,siteLangs:s,defaultLang:i,headers:p,footers:m,socials:n}}var Ve=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(n=>n.setAsDefault),o={};for(let n of r)o[n.language]=n;return o}getDefaultHeaders(){let r=[...this.navigations.headers].filter(n=>n.setAsDefault),o={};for(let n of r)o[n.language]=n;return o}getRightLanguage(t,r,o){if(!t||!r)return null;let s=t.find(i=>i.language===o&&i.navigationLanguages?.find(a=>a.navigationId===r))||t.find(i=>i.id===r);return s?{...s}: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:n,template:s,templateConfig:i}=t,{templateType:a}=s,{defaultHeader:d,defaultFooter:l,templates:p}=i,m=A=>{let E=A.find(_=>typeof _=="number");return typeof E=="number"?E:null},f=m([r,p?.[a]?.defaultHeader,d]),g=m([o,p?.[a]?.defaultFooter,l]),u=f?this.getPageHeader(f,n):f===0?null:this._defaultHeaders[n],b=g?this.getPageFooter(g,n):g===0?null:this._defaultFooters[n];return{header:u,footer:b}}};function xt(e,t,r,o="jpg"){let n=typeof e=="string"?e:e?.url;return n?n.split("/")[2].includes("cloudinary.com")?Yn(n,`c_fill,w_${t},h_${r}`):qn(n,`f/${o}/w/${t}/h/${r}`):null}function qn(e,t){let r=e.split("/"),o=r.slice(0,-1).join("/"),n=r.slice(-1)[0];return`${o}/${t}/${n}`}function Yn(e,t){let r=e.replace("https://",""),o=r.split("/").slice(0,4).join("/"),n=r.replace(o,"");return`https://${o}/${t}${n}`}var Vn=25;function Xn({socialTitle:e,socialDescription:t,socialImage:r}){return{type:"website",title:e,description:t,image:r?xt(r,1280,768):"",twitterImage:r?xt(r,1280,768):""}}function Kn(e){let{title:t,metaTitle:r,metaDescription:o,canonicalURL:n,locale:s,url:i,isIndexed:a,follow:d,metasAdvanced:l,pageLanguages:p,fullUrl:m,metaKeywords:f}=e,g=l?.split(",").filter(Boolean).map(u=>u.trim().toLowerCase())||[];return{title:(r||t||"").trim(),description:o,canonical:n?.trim()&&n!==m?n.trim():a?m:void 0,locale:s,url:i,index:a?"index":"noindex",follow:d?"follow":"nofollow",translate:g.includes("notranslate")?"notranslate":"",metasAdvanced:g.filter(u=>u!=="notranslate").join(),pageLanguages:p,metaKeywords:f?.filter(Boolean).map(u=>u.replace(/"/g,"'")).join(", ")}}async function $t(e,t){let{id:r,title:o,fullPath:n,language:s,breadcrumb:i,socialDescription:a,socialImage:d,socialTitle:l}=e,{baseUrl:p,cloudinaryName:m,griddoVersion:f,siteLangs:g,siteMetadata:u,siteOptions:b,siteScript:A,siteSlug:E,socials:_,theme:j,navigations:M}=t,{header:De,footer:te}=M;e.breadcrumb=i,e.siteSlug=E,e.apiUrl=p,e.publicApiUrl=t.publicBaseUrl,e.instance=t.instance;let J=g.find(({id:at})=>at===e?.language)?.locale.replace(/_/g,"-"),X=Kn(e),K=Xn({socialDescription:a,socialImage:d,socialTitle:l}),se=n.compose,st=new Date().toString();return{path:se,size:void 0,context:{id:r,title:o,fullPath:n,locale:J,languageId:s,theme:j,siteMetadata:u,pageMetadata:X,openGraph:K,socials:_,siteLangs:g,cloudinaryName:m,siteOptions:b,griddoVersion:f,renderDate:st,siteScript:A,header:De,footer:te,page:e}}}async function Do(e,t){return $t(e,t)}async function Ro({page:e,pages:t,isRoot:r=!1,defaultLang:o,template:n,totalQueriedItems:s},i){let a=t.map(async(d,l)=>{let p=l===0,m=l+1,{domainUrl:f,compose:g}=e.fullPath,u={...e,fullPath:{...e.fullPath,compose:At(g,m,{addEndingSlash:!0})},fullUrl:At(e.fullUrl,m,{addEndingSlash:!0}),slug:At(e.slug,m),title:yo(e.title,m),metaTitle:yo(e.metaTitle||"",m),disableHrefLangs:m>1,template:{...n,isFirstPage:p,pageNumber:m,totalPages:t.length,baseLink:`${f}${g}`,queriedItems:d,totalQueriedItems:s?.length},isRoot:r,defaultLang:o};return $t(u,i)});return Promise.all(a)}function wo(e,t){let{multiPageElements:r,...o}=e,n=JSON.parse(JSON.stringify(r));n.find(({sectionSlug:i})=>i==="/")||n.push({});let s=n.map(async i=>{let a=JSON.parse(JSON.stringify(o)),{sectionSlug:d="/",title:l="",metaTitle:p="",metaDescription:m=""}=i,f=typeof l=="string"?l:l.content,g=a.fullPath.compose||"",u=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,b=d?.replace(/\//g,""),E=d==="/"?b:`${b}/`,_=g.endsWith("/")?"":"/",j=`${g}${_}${E}`;return f.trim()&&(a.title=f),m.trim()&&(a.metaDescription=m),a.fullUrl=`${u}/${E}`,a.fullPath.compose=j,a.slug=j,a.template.activeSectionSlug=d,a.template.activeSectionBase=u,a.metaTitle=p.trim()||f.trim()||a.metaTitle,$t(a,t)});return Promise.all(s)}function So(e){return new Promise(r=>{let o=(n,s=0)=>{if(!(!n||typeof n!="object")){for(let i in n){let a=n[i],d=a||typeof a=="object",l=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!d||!l)continue;let{component:p,hasGriddoMultiPage:m,elements:f}=a;p&&m&&r(f||[]),o(a,s+1)}s||r(null)}};o([e])})}function zn(e,t,r){return t?.slice(e*(r-1),e*r)}function Qn(e,t){let r=Math.ceil(t.length/e)||1;return Array.from({length:r},(n,s)=>s+1)?.map(n=>zn(e,t,n))}function bo(e){let t=e.queriedItems||[],r=e?.itemsPerPage||Vn;return Qn(r,t)}function ho(e){return e.replace(/\/+$/,"/")}function At(e,t,r){let o=e.endsWith("/")?"":"/",n=r?.addEndingSlash?"/":"";return t<=1?ho(`${e}${n}`):ho(`${e}${o}${t}${n}`)}function yo(e,t){return!e||t<=1?e:`${e} - ${t}`}function Zn(e,t){let{order:r,sources:o,quantity:n,mode:s,fixed:i,fullRelations:a=!1,allLanguages:d=!1,preferenceLanguage:l=!1,referenceId:p,fields:m}=e;return s==="auto"?{mode:s,order:r,sources:o,quantity:n,fullRelations:a,allLanguages:d,preferenceLanguage:l,fields:m}:s==="manual"?{mode:s,fixed:i,fullRelations:a,fields:m}:s==="navigation"?{mode:s,order:r,quantity:n,fullRelations:a,referenceId:p||t?.structuredDataContent?.id,fields:m}:(c.error(`ReferenceField mode: ${s} is not recognized on page ${t?.id}.`),e)}async function ei(e){let{page:t,component:r,cacheKey:o}=e,{data:n}=r;if(!n)return c.info(`Error: Page ${t.id} has \`hasDistributorData: true\` or \`getStaticData: true\` but it doesn't have a \`data\` property.`),[];if(Array.isArray(n.sources)&&n.sources.length<1)return c.info(`Warning: Page with id: ${t.id} has a ReferenceField with empty \`data.sources\``),[];let{site:s,lang:i}=n;!n.sources&&n.mode==="auto"&&c.info(`Warning: Page with id: ${t.id} has a ReferenceField with \`undefined\` \`data.sources\``);let a=Zn(n,t);return await ao(t,a,o,s,i)}async function Eo({page:e,cacheKey:t=""}){try{let{template:r}=e,o=async(i,a=1)=>{if(!(!i||typeof i!="object"||!(JSON.stringify(i).includes('"hasDistributorData":true')||JSON.stringify(i).includes('"getStaticData":true'))))for(let l in i){if(l==="queriedItems")continue;let m=i[l];if(!m||typeof m!="object")continue;(m.hasDistributorData||m.getStaticData)&&(m.queriedItems=await ei({page:e,cacheKey:t,component:m})),await o(m,a+1)}};return await(async i=>(await o([i]),i))(r)}catch(r){throw c.error("Error in getReferenceFieldData:",r),r}}var ti=Date.now().toString();function _o(e,t){let r=Math.max(...t.map(s=>s.name.length+(s.shouldBeUpdated?1:0)+s.id.toString().length)),o=t.map(s=>{let i=s.shouldBeUpdated?"*":"",a=s.name.length+i.length+s.id.toString().length,d=" ".repeat(r-a);return`${R.bold(s.name)} ${R.dim(`(id:${s.id})`)} ${i} ${d}${R.dim("-")} ${R.dim(s.slug)}`}),n=o.length>0?`
43
43
 
44
44
  ${o.join(`
45
45
  `)}`:R.dim(`--none--
46
46
  `);c.log(`
47
- ${e} ${n}`)}async function Po(e){console.info(`API calls with ${mt} threads`),console.info(`API URL ${lt}`);let{renderMode:t,domain:r,griddoVersion:o,basePath:n}=e,s=t===$.FROM_SCRATCH,i=xe.default.join(n,"store"),a=[],d={},{sitesToPublish:l,sitesToUnpublish:p}=await fo(r);_o("Sites to publish:",l),_o("Sites to unpublish:",p),await uo(p),await Hr(l,r);let m=[];for(let f of p){let{pagesStatus:g}=f;m.push(...g.active,...g.offlinePending,...g.uploadPending,...g.deleted,...g.offline)}for(let f of l){let{id:g,slug:u,theme:S,favicon:A,pagesStatus:E}=f,_=g.toString();m.push(...E.offlinePending,...E.deleted);let{siteInfo:j,siteHash:M,unpublishHashes:De,siteLangs:te,defaultLang:F,headers:J,footers:X,socials:K}=await go(g),{cloudinaryName:se,useMetaTitle:st,useMetaKeywords:Ft,showBasicMetaRobots:at,avoidHrefLangsOnCanonicals:fn,avoidSelfReferenceCanonicals:un,avoidHrefLangXDefault:gn,avoidDebugMetas:hn}=await L({endpoint:Pr});d[g]={siteHash:M,unpublishHashes:De,publishHashes:[],publishPagesIds:[]};let Nt=new Ve;Nt.navigations={headers:J,footers:X},f.languages=te;let yn=await oi(g,M),Dn=j.siteScript,Rn={siteUrl:j.slug,title:j.name,favicon:A},wn={baseUrl:lt,publicBaseUrl:qt,instance:Kt,siteSlug:u,theme:S,siteMetadata:Rn,socials:K,siteLangs:te,cloudinaryName:se,griddoVersion:o,siteOptions:{useMetaTitle:st,useMetaKeywords:Ft,showBasicMetaRobots:at,avoidHrefLangsOnCanonicals:fn,avoidSelfReferenceCanonicals:un,avoidHrefLangXDefault:gn,avoidDebugMetas:hn},siteScript:Dn};await Xe.default.mkdir(xe.default.join(i,_),{recursive:!0});let bn=async(ct,Oe,ae,Le)=>{let ce=[],O=await no(Oe,yn);if(!O){ae.current+=1,Le.update(ae.current);return}a.push(Oe);let Fe=JSON.parse(JSON.stringify(wn));Fe.navigations=Nt.getPageNavigations(O);let de=await Eo({page:O,cacheKey:ti}),jt=await bo(de),dt=O?.mode==="list"||O?.mode==="paginated-data",Gt=!dt&&jt,Sn=!Gt&&!dt;if(dt){let U={page:O,pages:So(de),isRoot:!1,defaultLang:F,template:de,totalQueriedItems:de.queriedItems};ce=await Ro(U,Fe),m.push(O.id)}if(Gt){let U=O;U.template=de,U.multiPageElements=jt,U.defaultLang=F,ce=await wo(U,Fe),m.push(O.id)}if(Sn){let U=O;U.template=de,U.defaultLang=F,ce=[await Do(U,Fe)]}O.hash!==null&&(d[g].publishHashes.push(O.hash),d[g].publishPagesIds.push(O.id)),await kr(ct,ce),ae.current+=1,Le.update(ae.current)},ve=E.uploadPending;if(s&&ve.push(...E.active),ve.length>0){let ct=Ie(mt),Oe=ve.length,ae={current:0},Le=new Je(f.name,Oe),ce=ve.map(O=>ct(()=>bn(_,O,ae,Le)));await Promise.all(ce)}}return await Br({buildProcessData:d,createdPages:a,sitesToPublish:l},r),{pagesToCreate:a,pagesToDelete:m}}async function ri(){let{__root:e}=await w(),r=`${xe.default.join(e,"apiCache")}/siteHash.json`;try{let o=await Xe.default.readFile(r,"utf8");return JSON.parse(o)||{}}catch{return{}}}async function oi(e,t){let r=await ri(),o=r[e],n=t||o||Date.now(),{__root:s}=await w(),a=`${xe.default.join(s,"apiCache")}/siteHash.json`;return n!==o&&(r[e]=n,await Xe.default.writeFile(a,JSON.stringify(r),{encoding:"utf-8"})),n.toString()}async function To(e){let{domain:t,renderMode:r,renderMetadata:{griddoVersion:o},pathsHydratedWithDomain:{__root:n}}=e,{pagesToCreate:s,pagesToDelete:i}=await Po({domain:t,renderMode:r,griddoVersion:o,basePath:n});e.pagesToCreate=s,e.pagesToDelete=i}var Ct=h(require("node:fs/promises")),Ke=h(require("node:path"));async function Io(e){let{buildReportFileName:t,pathsHydratedWithDomain:{__root:r,__exports:o}}=e;try{await Ct.default.mkdir(Ke.default.join(o,"dist"))}catch{}await Ct.default.cp(Ke.default.join(r,"current-dist",t),Ke.default.join(o,"dist",t))}async function xo(e){let{domain:t}=e;await Jr(t),await Wr(t)}async function Ao(e){let{domain:t,pathsHydratedWithDomain:{__root:r}}=e;await Ur({basePath:r,domain:t})}var ze=h(require("node:fs/promises")),ye=h(require("node:path")),Qe=require("@kreuzberg/html-to-markdown");var Z=require("node:fs"),V=require("node:path");var vt=h(require("node:path"));var ni=__dirname.includes("node_modules"),Ka=si();function he(e=""){return ni?vt.default.resolve(we({cwd:__dirname}),"../../../",e):vt.default.resolve(we({cwd:__dirname}),"../griddo-components",e)}function ii(){let e=Re("jsconfig.json",{cwd:he()});return Re("tsconfig.json",{cwd:he()})||e}function si(){let e=require(ii());return e||I(sr),Object.keys(e.compilerOptions?.paths).reduce((t,r)=>{let[o]=r.split("/"),[n]=e.compilerOptions.paths[r],[s]=n.split("/*"),i=he(s);return{...t,[o]:i}},{"@griddo-instance":`${he()}/src/index.js`})}var $o=require("jiti"),Ae=class extends Error{constructor(r,o){super(r);this.cause=o;this.name="ConfigLoadError"}};function ai(e,t){try{let r=(0,Z.readFileSync)(e,"utf-8"),o=JSON.parse(r),n=o.compilerOptions?.paths,s=o.compilerOptions?.baseUrl??".";if(!n)return{};let i={},a=(0,V.resolve)(t,s);for(let[d,l]of Object.entries(n)){if(!l||l.length===0)continue;let p=d.replace(/\/\*$/,""),m=l[0].replace(/\/\*$/,""),f=(0,V.resolve)(a,m);i[p]=f}return i}catch{return{}}}async function ci(e){let{dirname:t,configName:r="griddo.config",tsconfigName:o="tsconfig.json"}=e,n=(0,V.join)(t,`${r}.ts`),s=(0,V.join)(t,`${r}.js`),i=(0,V.join)(t,`${r}.mjs`),a=null;if((0,Z.existsSync)(n)?a=n:(0,Z.existsSync)(s)?a=s:(0,Z.existsSync)(i)&&(a=i),!a)throw new Ae(`No se encontr\xF3 archivo de configuraci\xF3n en ${t}. Buscando: ${r}.{ts,js,mjs}`);c.verbose(`[loadConfig] Configuraci\xF3n encontrada: ${a}`);let d=(0,V.join)(t,o),l=(0,Z.existsSync)(d);l&&c.verbose(`[loadConfig] tsconfig encontrado: ${d}`);let p=l?ai(d,t):{};Object.keys(p).length>0&&c.verbose("[loadConfig] Path aliases resueltos:",p);let m=(0,V.resolve)(a);c.verbose(`[loadConfig] Using jiti with path: ${m}`);let f=(0,$o.createJiti)(m,{alias:p,interopDefault:!0});try{let g=await f.import(a),u=g.default??g;return c.verbose("[loadConfig] Configuraci\xF3n cargada exitosamente"),{config:u,path:a,tsconfigPath:l?d:null}}catch(g){let u=g instanceof Error?g:new Error(String(g));throw new Ae(`Error al cargar la configuraci\xF3n desde ${a}: ${u.message}`,u)}}async function Co(){let e=he();if(!(0,Z.existsSync)(e))throw new Ae(`instance dir not found: ${e}`);return ci({dirname:e,configName:"griddo.config",tsconfigName:"tsconfig.json"})}async function vo(e){if(!Ne){c.verbose("Skipping markdown generation: Disabled by environment variable.");return}let{__root:t}=await w({domain:e}),r=ye.default.join(t,"current-dist"),n=(await Co()).config,s=mi(r,n);try{for await(let i of s){if(i.path===ye.default.join(r,"index.html")||!i.path.endsWith("index.html"))continue;let a=i.path.split(/\/index\.html$/),d="";a.length===2&&(d=a[0]),await ze.default.writeFile(`${d}.md`,i.content),c.info(`Generating MD for a ${i.path}`)}}catch(i){c.error("Failed to generate MDs due to config error:",i)}}function di(e){let t=["style","script","noscript","iframe","form","input","button","nav","footer","object","svg"],r=e;for(let o of t){let n=new RegExp(`<${o}[^>]*>.*?</${o}>|<${o}[^>]*/>`,"gis");r=r.replace(n,"")}return r}function li(e,t){let r=di(e),o=t.schemas?.config,n=(0,Qe.convert)(r,{headingStyle:Qe.JsHeadingStyle.Atx,bullets:"-",extractMetadata:!1,skipImages:!0,...o});return n=n.replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/\n{3,}/g,`
47
+ ${e} ${n}`)}async function Po(e){console.info(`API calls with ${mt} threads`),console.info(`API URL ${lt}`);let{renderMode:t,domain:r,griddoVersion:o,basePath:n}=e,s=t===$.FROM_SCRATCH,i=xe.default.join(n,"store"),a=[],d={},{sitesToPublish:l,sitesToUnpublish:p}=await fo(r);_o("Sites to publish:",l),_o("Sites to unpublish:",p),await uo(p),await Hr(l,r);let m=[];for(let f of p){let{pagesStatus:g}=f;m.push(...g.active,...g.offlinePending,...g.uploadPending,...g.deleted,...g.offline)}for(let f of l){let{id:g,slug:u,theme:b,favicon:A,pagesStatus:E}=f,_=g.toString();m.push(...E.offlinePending,...E.deleted);let{siteInfo:j,siteHash:M,unpublishHashes:De,siteLangs:te,defaultLang:F,headers:J,footers:X,socials:K}=await go(g),{cloudinaryName:se,useMetaTitle:st,useMetaKeywords:Ft,showBasicMetaRobots:at,avoidHrefLangsOnCanonicals:fn,avoidSelfReferenceCanonicals:un,avoidHrefLangXDefault:gn,avoidDebugMetas:hn}=await L({endpoint:Pr});d[g]={siteHash:M,unpublishHashes:De,publishHashes:[],publishPagesIds:[]};let Nt=new Ve;Nt.navigations={headers:J,footers:X},f.languages=te;let yn=await oi(g,M),Dn=j.siteScript,Rn={siteUrl:j.slug,title:j.name,favicon:A},wn={baseUrl:lt,publicBaseUrl:qt,instance:Kt,siteSlug:u,theme:b,siteMetadata:Rn,socials:K,siteLangs:te,cloudinaryName:se,griddoVersion:o,siteOptions:{useMetaTitle:st,useMetaKeywords:Ft,showBasicMetaRobots:at,avoidHrefLangsOnCanonicals:fn,avoidSelfReferenceCanonicals:un,avoidHrefLangXDefault:gn,avoidDebugMetas:hn},siteScript:Dn};await Xe.default.mkdir(xe.default.join(i,_),{recursive:!0});let Sn=async(ct,Oe,ae,Le)=>{let ce=[],O=await no(Oe,yn);if(!O){ae.current+=1,Le.update(ae.current);return}a.push(Oe);let Fe=JSON.parse(JSON.stringify(wn));Fe.navigations=Nt.getPageNavigations(O);let de=await Eo({page:O,cacheKey:ti}),jt=await So(de),dt=O?.mode==="list"||O?.mode==="paginated-data",Gt=!dt&&jt,bn=!Gt&&!dt;if(dt){let U={page:O,pages:bo(de),isRoot:!1,defaultLang:F,template:de,totalQueriedItems:de.queriedItems};ce=await Ro(U,Fe),m.push(O.id)}if(Gt){let U=O;U.template=de,U.multiPageElements=jt,U.defaultLang=F,ce=await wo(U,Fe),m.push(O.id)}if(bn){let U=O;U.template=de,U.defaultLang=F,ce=[await Do(U,Fe)]}O.hash!==null&&(d[g].publishHashes.push(O.hash),d[g].publishPagesIds.push(O.id)),await kr(ct,ce),ae.current+=1,Le.update(ae.current)},ve=E.uploadPending;if(s&&ve.push(...E.active),ve.length>0){let ct=Ie(mt),Oe=ve.length,ae={current:0},Le=new Je(f.name,Oe),ce=ve.map(O=>ct(()=>Sn(_,O,ae,Le)));await Promise.all(ce)}}return await Br({buildProcessData:d,createdPages:a,sitesToPublish:l},r),{pagesToCreate:a,pagesToDelete:m}}async function ri(){let{__root:e}=await w(),r=`${xe.default.join(e,"apiCache")}/siteHash.json`;try{let o=await Xe.default.readFile(r,"utf8");return JSON.parse(o)||{}}catch{return{}}}async function oi(e,t){let r=await ri(),o=r[e],n=t||o||Date.now(),{__root:s}=await w(),a=`${xe.default.join(s,"apiCache")}/siteHash.json`;return n!==o&&(r[e]=n,await Xe.default.writeFile(a,JSON.stringify(r),{encoding:"utf-8"})),n.toString()}async function To(e){let{domain:t,renderMode:r,renderMetadata:{griddoVersion:o},pathsHydratedWithDomain:{__root:n}}=e,{pagesToCreate:s,pagesToDelete:i}=await Po({domain:t,renderMode:r,griddoVersion:o,basePath:n});e.pagesToCreate=s,e.pagesToDelete=i}var Ct=h(require("node:fs/promises")),Ke=h(require("node:path"));async function Io(e){let{buildReportFileName:t,pathsHydratedWithDomain:{__root:r,__exports:o}}=e;try{await Ct.default.mkdir(Ke.default.join(o,"dist"))}catch{}await Ct.default.cp(Ke.default.join(r,"current-dist",t),Ke.default.join(o,"dist",t))}async function xo(e){let{domain:t}=e;await Jr(t),await Wr(t)}async function Ao(e){let{domain:t,pathsHydratedWithDomain:{__root:r}}=e;await Ur({basePath:r,domain:t})}var ze=h(require("node:fs/promises")),ye=h(require("node:path")),Qe=require("@kreuzberg/html-to-markdown");var Z=require("node:fs"),V=require("node:path");var vt=h(require("node:path"));var ni=__dirname.includes("node_modules"),Ka=si();function he(e=""){return ni?vt.default.resolve(we({cwd:__dirname}),"../../../",e):vt.default.resolve(we({cwd:__dirname}),"../griddo-components",e)}function ii(){let e=Re("jsconfig.json",{cwd:he()});return Re("tsconfig.json",{cwd:he()})||e}function si(){let e=require(ii());return e||I(sr),Object.keys(e.compilerOptions?.paths).reduce((t,r)=>{let[o]=r.split("/"),[n]=e.compilerOptions.paths[r],[s]=n.split("/*"),i=he(s);return{...t,[o]:i}},{"@griddo-instance":`${he()}/src/index.js`})}var $o=require("jiti"),Ae=class extends Error{constructor(r,o){super(r);this.cause=o;this.name="ConfigLoadError"}};function ai(e,t){try{let r=(0,Z.readFileSync)(e,"utf-8"),o=JSON.parse(r),n=o.compilerOptions?.paths,s=o.compilerOptions?.baseUrl??".";if(!n)return{};let i={},a=(0,V.resolve)(t,s);for(let[d,l]of Object.entries(n)){if(!l||l.length===0)continue;let p=d.replace(/\/\*$/,""),m=l[0].replace(/\/\*$/,""),f=(0,V.resolve)(a,m);i[p]=f}return i}catch{return{}}}async function ci(e){let{dirname:t,configName:r="griddo.config",tsconfigName:o="tsconfig.json"}=e,n=(0,V.join)(t,`${r}.ts`),s=(0,V.join)(t,`${r}.js`),i=(0,V.join)(t,`${r}.mjs`),a=null;if((0,Z.existsSync)(n)?a=n:(0,Z.existsSync)(s)?a=s:(0,Z.existsSync)(i)&&(a=i),!a)throw new Ae(`No se encontr\xF3 archivo de configuraci\xF3n en ${t}. Buscando: ${r}.{ts,js,mjs}`);c.verbose(`[loadConfig] Configuraci\xF3n encontrada: ${a}`);let d=(0,V.join)(t,o),l=(0,Z.existsSync)(d);l&&c.verbose(`[loadConfig] tsconfig encontrado: ${d}`);let p=l?ai(d,t):{};Object.keys(p).length>0&&c.verbose("[loadConfig] Path aliases resueltos:",p);let m=(0,V.resolve)(a);c.verbose(`[loadConfig] Using jiti with path: ${m}`);let f=(0,$o.createJiti)(m,{alias:p,interopDefault:!0});try{let g=await f.import(a),u=g.default??g;return c.verbose("[loadConfig] Configuraci\xF3n cargada exitosamente"),{config:u,path:a,tsconfigPath:l?d:null}}catch(g){let u=g instanceof Error?g:new Error(String(g));throw new Ae(`Error al cargar la configuraci\xF3n desde ${a}: ${u.message}`,u)}}async function Co(){let e=he();if(!(0,Z.existsSync)(e))throw new Ae(`instance dir not found: ${e}`);return ci({dirname:e,configName:"griddo.config",tsconfigName:"tsconfig.json"})}async function vo(e){if(!Ne){c.verbose("Skipping markdown generation: Disabled by environment variable.");return}let{__root:t}=await w({domain:e}),r=ye.default.join(t,"current-dist"),n=(await Co()).config,s=mi(r,n);try{for await(let i of s){if(i.path===ye.default.join(r,"index.html")||!i.path.endsWith("index.html"))continue;let a=i.path.split(/\/index\.html$/),d="";a.length===2&&(d=a[0]),await ze.default.writeFile(`${d}.md`,i.content),c.info(`Generating MD for a ${i.path}`)}}catch(i){c.error("Failed to generate MDs due to config error:",i)}}function di(e){let t=["style","script","noscript","iframe","form","input","button","nav","footer","object","svg"],r=e;for(let o of t){let n=new RegExp(`<${o}[^>]*>.*?</${o}>|<${o}[^>]*/>`,"gis");r=r.replace(n,"")}return r}function li(e,t){let r=di(e),o=t.schemas?.config,n=(0,Qe.convert)(r,{headingStyle:Qe.JsHeadingStyle.Atx,bullets:"-",extractMetadata:!1,skipImages:!0,...o});return n=n.replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/\n{3,}/g,`
48
48
 
49
49
  `).trim(),n}async function*Oo(e){let t=await ze.default.opendir(e);for await(let r of t)r.isDirectory()?yield*Oo(ye.default.join(e,r.name)):r.isFile()&&ye.default.extname(r.name)===".html"&&(yield ye.default.join(e,r.name))}async function*mi(e,t){let r=Oo(e);for await(let o of r)try{let n=await ze.default.readFile(o,"utf8"),s=li(n,t);yield{path:o,content:s}}catch(n){I(ar,n)}}var tt=h(require("node:fs/promises")),et=h(require("node:path"));var Ze=e=>e.replace(/\/+$/,"");async function pi(e){try{return await tt.default.readFile(e,"utf-8")}catch(t){return t.code==="ENOENT"?c.verbose(`client template for llms.txt file not found at ${e}, using defaults.`):c.error(`Unexpected error reading ${e}:`,t),`{{ LLMS_HEADER }}
50
50
 
51
- {{ LLMS_PAGE_LINKS }}`}}async function Lo(e){if(zt){c.verbose("Skipping llms.txt generation: Disabled by environment variable.");return}let t=Ne?".md":"";try{let o=(await b()).domains[e];if(!o?.id)throw new Error(`Domain configuration or ID not found for domain: ${e}`);let n=o.id,s=[];try{let[S,A]=Tr,E=`${S}${n}${A}`;s=await L({endpoint:E})}catch(S){c.error(`Failed to fetch LLM data for domain ${e}. Aborting llms.txt generation.`,S);return}let i=s.map(({title:S,url:A,socialDescription:E})=>{let _=E?`: ${E}`:"";return`- [${S}](${Ze(A)}${t})${_}`}).join(`
51
+ {{ LLMS_PAGE_LINKS }}`}}async function Lo(e){if(zt){c.verbose("Skipping llms.txt generation: Disabled by environment variable.");return}let t=Ne?".md":"";try{let o=(await S()).domains[e];if(!o?.id)throw new Error(`Domain configuration or ID not found for domain: ${e}`);let n=o.id,s=[];try{let[b,A]=Tr,E=`${b}${n}${A}`;s=await L({endpoint:E})}catch(b){c.error(`Failed to fetch LLM data for domain ${e}. Aborting llms.txt generation.`,b);return}let i=s.map(({title:b,url:A,socialDescription:E})=>{let _=E?`: ${E}`:"";return`- [${b}](${Ze(A)}${t})${_}`}).join(`
52
52
  `),{__root:a,__components:d}=await w({domain:e}),l=et.default.join(d,"static/llms.md"),p=await pi(l),m=`llms.txt for the domain ${e}
53
53
  Generated: ${new Date().toISOString().replace("T"," ").slice(0,19)}`,f=p.replace(/\{\{\s*LLMS_HEADER\s*\}\}/g,`${m}`).replace(/\{\{\s*LLMS_PAGE_LINKS\s*\}\}/g,`${i}`),g=et.default.join(a,"current-dist"),u=et.default.join(g,"llms.txt");await tt.default.mkdir(g,{recursive:!0}),await tt.default.writeFile(u,f,"utf-8"),c.verbose(`Successfully generated llms.txt at ${u}`)}catch(r){c.error(`Critical error generating llms.txt for ${e}:`,r)}}async function Fo(e){let{domain:t}=e;await Lo(t),await vo(t)}async function No(e){let{domain:t}=e;await Mr(t)}var jo=h(require("node:fs/promises")),Ot=h(require("node:path"));async function fi(){return(await L({endpoint:_r}))?.filter(t=>!!t.path).map(({path:t,content:r})=>({path:t,content:r||`User-agent: *
54
54
  \r
@@ -66,8 +66,8 @@ ${e.map(r=>` <sitemap>
66
66
  <loc>${Mo(r)}</loc>
67
67
  </sitemap>`).join(`
68
68
  `)}
69
- </sitemapindex>`}async function Uo(e){let{__root:t}=await w(),{sitesToPublish:r}=await ke(e),o=ie.default.join(t,"current-dist"),n="sitemap-",s=i=>i==="sitemap.xml"||i.startsWith(n)&&i.endsWith(".xml");for(let i of r){let{id:a,languages:d}=i;for(let l of d){let p=Y.headers?{...Y.headers}:{};p.lang=l.id.toString();let m=await co({siteId:a,headers:p});if(!m)continue;let{items:f,url:g}=m,{home:u,domain:S}=g;if(!u)continue;let A=i.domains.find(F=>Object.keys(F)[0]===l.id.toString());if(!A)continue;let E=Object.values(A)[0],_=[],j=Object.keys(f),M=ie.default.join(o,E.replace(S,""));if(await D(M))try{let F=await $e.default.readdir(M);for(let J of F)if(s(J)){let X=ie.default.join(M,J);try{await $e.default.rm(X)}catch(K){c.error(`Error deleting file ${X}:`,K)}}}catch(F){c.error(`Error reading ${M}:`,F)}for(let F of j){let J=f[F];if(!J.length)continue;let X=Bo(J),K=`/${n}${F.toLowerCase()}.xml`,se=ie.default.join(M,K);await Ho(se,X),c.verbose(`sitemap generated in ${se}`),_.push(`${u.endsWith("/")?u.slice(0,-1):u}${K}`)}if(!_.length)continue;let De=ko(_),te=ie.default.join(M,"sitemap.xml");await Ho(te,De),c.verbose(`sitemap generated in ${te}`)}}}async function Ho(e,t){try{let r=ie.default.dirname(e);await D(r)||await $e.default.mkdir(r,{recursive:!0}),await $e.default.writeFile(e,t)}catch{throw new Error("Error saving a file")}}async function Wo(e){let{domain:t}=e;await Uo(t),await Go(t)}async function Jo(e){let{renderArtifacts:t}=e;await lr(t.initials)}var qo=h(require("node:fs/promises")),Lt=h(require("node:path"));async function Yo(e){let{pathsHydratedWithDomain:{__root:t,__ssg:r}}=e,o=Lt.default.join(r,"public"),n=Lt.default.join(t,"current-dist");e.workingDistDir=n,await qo.default.rename(o,n)}async function Vo(e){let{domain:t}=e;await Vr(t)}async function Xo(e){let{renderMode:t,ssg:{ssgArtifacts:r},renderArtifacts:o,pathsHydratedWithDomain:{__components:n,__root:s,__cache:i,__ssg:a}}=e;await mr(n,a,["static"]),t===$.INCREMENTAL&&(await oe(i,a,r.cacheables),await oe(i,s,o.cacheables))}var Ko=require("node:child_process"),zo=h(require("node:path"));async function Qo(e){c.verbose(`read assetPrefixWithDomain, ${e}`),c.verbose(`using this NODE_OPTIONS in gatsby command: ${process.env.NODE_OPTIONS}`);let{__ssg:t}=await w(),r=process.env.NODE_OPTIONS?process.env.NODE_OPTIONS.replace(/--openssl-legacy-provider\s*/g,"").trim():"",o=zo.default.join(t,"node_modules",".bin","gatsby"),n=["build","--prefix-paths"];return Zt&&n.push("--verbose"),process.env.NO_COLORS&&n.push("--no-colors"),new Promise((s,i)=>{let a=(0,Ko.spawn)(o,n,{cwd:t,stdio:["ignore","inherit","inherit"],env:{...process.env,SPAWN_ASSET_PREFIX_WITH_DOMAIN:e,NODE_OPTIONS:r}});a.on("close",d=>{d===0?s():i(new Error(`Gatsby build failed with exit code ${d}`))}),a.on("error",d=>{i(new Error(`Failed to start Gatsby build process: ${d.message}`))})})}async function Zo(e){let{ssg:{assetPrefix:t}}=e;await Qo(t)}var ot=h(require("node:fs/promises")),nt=h(require("node:path"));var ee=h(require("node:fs/promises")),T=h(require("node:path"));async function en(e,t){let{exports:r,root:o}=t,n=(await ee.default.readdir(T.default.join(r,"dist"))).filter(i=>T.default.extname(i)===".js"||T.default.extname(i)===".json"||T.default.extname(i)===".css");await ee.default.mkdir(T.default.join(o,"assets"),{recursive:!0}),await ee.default.cp(T.default.join(r,"dist","page-data"),T.default.join(o,"assets","page-data"),{preserveTimestamps:!0,recursive:!0}),await D(T.default.join(o,"static"))&&await ee.default.cp(T.default.join(o,"static"),T.default.join(o,"assets"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(T.default.join(r,"dist","static"))&&await ee.default.cp(T.default.join(r,"dist","static"),T.default.join(o,"assets","static"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(T.default.join(o,"static"))&&await ee.default.cp(T.default.join(o,"static"),T.default.join(r,"dist",e),{preserveTimestamps:!0,recursive:!0,force:!1});let s=n.map(i=>{let a=T.default.join(r,"dist",i),d=T.default.join(o,"assets",i);return ee.default.cp(a,d,{preserveTimestamps:!0,recursive:!0})});await Promise.all(s)}var H=h(require("node:fs/promises")),x=h(require("node:path"));var rn=require("node:crypto"),Ce=h(require("node:fs/promises")),on=require("node:path");var ui=[/\.js$/];async function tn(e){let t=new Map;try{let o=(await Ce.default.readdir(e)).filter(n=>ui.some(s=>s.test(n)));for(let n of o){let s=(0,on.join)(e,n),i=await Ce.default.readFile(s),a=(0,rn.createHash)("sha256").update(i).digest("hex");t.set(n,a)}return t}catch(r){return c.build(`ERROR: Error processing directory ${e}: ${r}`),t}}async function nn(e,t){let[r,o]=await Promise.all([tn(e),tn(t)]);if(r.size!==o.size)return!0;for(let[n,s]of r.entries()){let i=o.get(n);if(!i||s!==i)return!0}return!1}async function sn(e,t){try{let r=await Ce.default.readFile(e,"utf-8"),o=/(window\.___webpackCompilationHash=")([^"]*)(";<\/script>)/,n=r.replace(o,`$1${t}$3`);if(r===n)return;await Ce.default.writeFile(e,n,"utf-8")}catch(r){c.error(`Failed to process file ${e}: ${r}`)}}var rt=class{bundleDir;currentRenderDir;pagesToCreate;pagesToDelete;assetArtifacts;state={mdToAdd:[],htmlToAdd:[],jsonToAdd:[],htmlToDelete:[],jsonToDelete:[],mdToDelete:[]};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(),Qt&&await this.assertAssetsAreValid()}async assertAssetsAreValid(){await nn(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),this.state.mdToDelete.push(o.mdPath));c.verbose(`${this.state.htmlToDelete.length} pages HTML to delete`),c.verbose(`${this.state.mdToDelete.length} pages Markdown 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 n=x.default.join(this.bundleDir,o.composePath,"index.html"),s=x.default.join(this.bundleDir,`${o.composePath}.md`),i=o.composePath==="/"?"index":o.composePath,a=x.default.join(this.bundleDir,"page-data",i,"page-data.json");this.state.htmlToAdd.push({from:o.htmlPath,to:n}),this.state.jsonToAdd.push({from:o.jsonPath,to:a}),await D(o.mdPath)&&this.state.mdToAdd.push({from:o.mdPath,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,...this.state.mdToDelete];for(let o of t)try{await H.default.rm(o,{force:!0}),c.verbose(`Sync (remove) : ${o}`)}catch(n){c.error(`Failed to remove ${o}:`,n)}await this.restoreWebpackCompilationHash();let r=[...this.state.htmlToAdd,...this.state.jsonToAdd,...this.state.mdToAdd];for(let o of r)try{await H.default.mkdir(x.default.dirname(o.to),{recursive:!0}),await H.default.copyFile(o.from,o.to),c.verbose(`Sync (copy) : ${o.from} -> ${o.to}`)}catch(n){c.error(`Failed to copy ${o.from} to ${o.to}:`,n)}await this.copyAssetArtifacts(),await this.copySitemaps()}async restoreWebpackCompilationHash(){let t=x.default.join(this.bundleDir,"page-data","app-data.json"),r=JSON.parse(await H.default.readFile(t,"utf8")).webpackCompilationHash;c.verbose(`Reading webpackCompilationHash from ${t}: ${r}`);let o=this.state.htmlToAdd.map(({from:n})=>n);c.info(`Patching ${o.length} HTML files with the new webpackCompilationHash (${r})...`);for(let n of o)Pe(`Patching HTML file ${n} with the new webpackCompilationHash`),await sn(n,r)}async copyAssetArtifacts(){for(let t of this.assetArtifacts){let r=x.default.join(this.currentRenderDir,t),o=x.default.join(this.bundleDir,t);try{await H.default.mkdir(x.default.dirname(o),{recursive:!0}),await H.default.copyFile(r,o),c.verbose(`Copied artifact: ${t}`)}catch(n){c.error(`Failed to copy artifact ${r} to ${o}:`,n)}}}async copySitemaps(){let t=x.default.resolve(this.currentRenderDir),r=x.default.resolve(this.bundleDir),o=be(r,".xml");for await(let s of o){let i=x.default.basename(s);(i.startsWith("sitemap-")||i==="sitemap.xml")&&await H.default.rm(s,{force:!0})}let n=be(t,".xml");for await(let s of n){let i=x.default.relative(t,s),a=x.default.join(r,i);try{await H.default.mkdir(x.default.dirname(a),{recursive:!0}),await H.default.copyFile(s,a)}catch(d){c.error(`Failed to copy sitemap ${s} to ${a}:`,d)}}c.verbose("Copied sitemap files.")}async scanPages(t){let r=Ie(32),o=be(x.default.join(t,"page-data"),"page-data.json"),n=[];for await(let i of o)n.push(r(async()=>{try{let a=await H.default.readFile(i,"utf-8"),d=JSON.parse(a),l=d.result.pageContext.id,p=Ze(d.result.pageContext.fullPath.compose);return{id:l,composePath:p,htmlPath:x.default.join(t,p,"index.html"),mdPath:x.default.join(t,`${p}.md`),jsonPath:i}}catch(a){return c.error(`Error reading or parsing page data from ${i}:`,a),null}}));return(await Promise.all(n)).filter(i=>i!==null)}};async function an(e){let{renderMode:t,renderArtifacts:r,domain:o,pagesToCreate:n,pagesToDelete:s,pathsHydratedWithDomain:{__root:i,__ssg:a,__cache:d,__exports:l},ssg:{ssgArtifacts:p,assetPrefix:m}}=e,f=!!m&&m!=="",g=nt.default.join(i,"current-dist"),u=nt.default.join(l,"dist");await Promise.all([oe(i,d,r.cacheables,{override:!0}),oe(a,d,p.cacheables,{override:!0})]),t===$.FROM_SCRATCH&&(await gt(g),await ot.default.rm(u,{force:!0,recursive:!0}),await ot.default.rename(g,u)),t===$.INCREMENTAL&&(await gt(u),await new rt({src:g,dst:u,pagesToCreate:n,pagesToDelete:s,artifactsToCopyToExports:["build-report.json","llms.txt","robots.txt"]}).execute(),await ot.default.rm(g,{force:!0,recursive:!0}),await ht(nt.default.join(l,"dist"))),f&&await en(o,{root:i,exports:l}),await oe(i,l,r.archivables,{override:!0})}var v={clean:Kr,close:zr,data:To,dryRenderSync:Io,healthCheck:xo,init:Ao,llms:Fo,logs:No,meta:Wo,prepare:Jo,relocation:Yo,report:Vo,restore:Xo,ssg:Zo,sync:an};var it=h(require("node:path"));async function cn(){let{ssg:e}=(await b()).paths;return{disposables:[it.default.join(e,"public"),it.default.join(e,"static"),it.default.join(e,".cache")],cacheables:[".cache"]}}async function dn(){let e=await b();e.needsRollbackOnError=!0,await G(e),c.info(`Render lifecycles that follow will restore the exports dir on error if needed
70
- `)}async function ln(){let e=await b();e.needsRollbackOnError=!1,await G(e),c.info(`Render lifecycles that follow will not restore the exports dir on error
71
- `)}async function pn(e){await jr();let{renderMode:t,reason:r}=await Yr(e),o=await bt(),n=await w({domain:e}),{__ssg:s}=n,i=await Xr(e),a=await cn(),d=pt?`${pt}/${e}`:"",l=await D(mn.default.join(s,`.render-sentinel-${e}`)),p=l?$.FROM_SCRATCH:t,m=l?"previous render error":r,f=await b();if(f.domains[e].renderMode=p,f.domains[e].renderModeReason=m,f.domains[e].isRendering=!1,t===$.IDLE&&p===$.IDLE){c.info(`(From Current Render) [${e}]: Skipping start-render as it is marked as IDLE with the reason ${r}.`);return}f.domains[e].isRendering=!0,f.currentRenderingDomain=e,await G(f);let g=m?` <${m}>`:"";c.info(`Init render (${p})${g} for domain ${e}
72
- `);let u=new He({domain:e,pathsHydratedWithDomain:n,renderArtifacts:i,renderMetadata:o,renderMode:p,ssg:{assetPrefix:d,ssgArtifacts:a},dryRun:!!f.domains[e].dryRun,buildReportFileName:f.buildReportFileName}),S=u.dryRun?"dry-render is enabled":!1,A=u.dryRun?!1:"dry-render is disabled",E=le?!1:"Build logs to file are disabled",_=p==="FROM_SCRATCH"?!1:S,j=p==="FROM_SCRATCH"&&u.dryRun?"wet-render is forced enabled by FROM_SCRATCH render mode":A;await C("Init",async()=>v.init(u)),await C("Clean",async()=>v.clean(u)),await C("Prepare",async()=>v.prepare(u)),await C("Restore",async()=>v.restore(u)),await dn(),await C("Data",async()=>v.data(u)),await C("SSG",async()=>v.ssg(u),{skip:_}),await C("Relocation",async()=>v.relocation(u),{skip:_}),await C("Meta",async()=>v.meta(u),{skip:_}),await C("LLMS",async()=>v.llms(u),{skip:_}),await C("Report",async()=>v.report(u)),await C("DryRunSync",async()=>v.dryRenderSync(u),{skip:j}),await C("Sync",async()=>v.sync(u),{skip:_}),await C("HealthCheck",async()=>v.healthCheck(u)),await C("Logs",async()=>v.logs(u),{skip:_||E}),await C("Close",async()=>v.close(u)),await ln()}async function gi(){await Y.login();let[e]=process.argv.slice(2);await pn(e)}async function hi(){await wr(),await gi()}yr(hi);
69
+ </sitemapindex>`}async function Uo(e){let{__root:t}=await w(),{sitesToPublish:r}=await ke(e),o=ie.default.join(t,"current-dist"),n="sitemap-",s=i=>i==="sitemap.xml"||i.startsWith(n)&&i.endsWith(".xml");for(let i of r){let{id:a,languages:d}=i;for(let l of d){let p=Y.headers?{...Y.headers}:{};p.lang=l.id.toString();let m=await co({siteId:a,headers:p});if(!m)continue;let{items:f,url:g}=m,{home:u,domain:b}=g;if(!u)continue;let A=i.domains.find(F=>Object.keys(F)[0]===l.id.toString());if(!A)continue;let E=Object.values(A)[0],_=[],j=Object.keys(f),M=ie.default.join(o,E.replace(b,""));if(await D(M))try{let F=await $e.default.readdir(M);for(let J of F)if(s(J)){let X=ie.default.join(M,J);try{await $e.default.rm(X)}catch(K){c.error(`Error deleting file ${X}:`,K)}}}catch(F){c.error(`Error reading ${M}:`,F)}for(let F of j){let J=f[F];if(!J.length)continue;let X=Bo(J),K=`/${n}${F.toLowerCase()}.xml`,se=ie.default.join(M,K);await Ho(se,X),c.verbose(`sitemap generated in ${se}`),_.push(`${u.endsWith("/")?u.slice(0,-1):u}${K}`)}if(!_.length)continue;let De=ko(_),te=ie.default.join(M,"sitemap.xml");await Ho(te,De),c.verbose(`sitemap generated in ${te}`)}}}async function Ho(e,t){try{let r=ie.default.dirname(e);await D(r)||await $e.default.mkdir(r,{recursive:!0}),await $e.default.writeFile(e,t)}catch{throw new Error("Error saving a file")}}async function Wo(e){let{domain:t}=e;await Uo(t),await Go(t)}async function Jo(e){let{renderArtifacts:t}=e;await lr(t.initials)}var qo=h(require("node:fs/promises")),Lt=h(require("node:path"));async function Yo(e){let{pathsHydratedWithDomain:{__root:t,__ssg:r}}=e,o=Lt.default.join(r,"public"),n=Lt.default.join(t,"current-dist");e.workingDistDir=n,await qo.default.rename(o,n)}async function Vo(e){let{domain:t}=e;await Vr(t)}async function Xo(e){let{renderMode:t,ssg:{ssgArtifacts:r},renderArtifacts:o,pathsHydratedWithDomain:{__components:n,__root:s,__cache:i,__ssg:a}}=e;await mr(n,a,["static"]),t===$.INCREMENTAL&&(await oe(i,a,r.cacheables),await oe(i,s,o.cacheables))}var Ko=require("node:child_process"),zo=h(require("node:path"));async function Qo(e){c.verbose(`read assetPrefixWithDomain, ${e}`),c.verbose(`using this NODE_OPTIONS in gatsby command: ${process.env.NODE_OPTIONS}`);let{__ssg:t}=await w(),r=process.env.NODE_OPTIONS?process.env.NODE_OPTIONS.replace(/--openssl-legacy-provider\s*/g,"").trim():"",o=zo.default.join(t,"node_modules",".bin","gatsby"),n=["build","--prefix-paths"];return Zt&&n.push("--verbose"),process.env.NO_COLORS&&n.push("--no-colors"),new Promise((s,i)=>{let a=(0,Ko.spawn)(o,n,{cwd:t,stdio:["ignore","inherit","inherit"],env:{...process.env,SPAWN_ASSET_PREFIX_WITH_DOMAIN:e,NODE_OPTIONS:r}});a.on("close",d=>{d===0?s():i(new Error(`Gatsby build failed with exit code ${d}`))}),a.on("error",d=>{i(new Error(`Failed to start Gatsby build process: ${d.message}`))})})}async function Zo(e){let{ssg:{assetPrefix:t}}=e;await Qo(t)}var ot=h(require("node:fs/promises")),nt=h(require("node:path"));var ee=h(require("node:fs/promises")),T=h(require("node:path"));async function en(e,t){let{exports:r,root:o}=t,n=(await ee.default.readdir(T.default.join(r,"dist"))).filter(i=>T.default.extname(i)===".js"||T.default.extname(i)===".json"||T.default.extname(i)===".css");await ee.default.mkdir(T.default.join(o,"assets"),{recursive:!0}),await ee.default.cp(T.default.join(r,"dist","page-data"),T.default.join(o,"assets","page-data"),{preserveTimestamps:!0,recursive:!0}),await D(T.default.join(o,"static"))&&await ee.default.cp(T.default.join(o,"static"),T.default.join(o,"assets"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(T.default.join(r,"dist","static"))&&await ee.default.cp(T.default.join(r,"dist","static"),T.default.join(o,"assets","static"),{force:!1,preserveTimestamps:!0,recursive:!0}),await D(T.default.join(o,"static"))&&await ee.default.cp(T.default.join(o,"static"),T.default.join(r,"dist",e),{preserveTimestamps:!0,recursive:!0,force:!1});let s=n.map(i=>{let a=T.default.join(r,"dist",i),d=T.default.join(o,"assets",i);return ee.default.cp(a,d,{preserveTimestamps:!0,recursive:!0})});await Promise.all(s)}var H=h(require("node:fs/promises")),x=h(require("node:path"));var rn=require("node:crypto"),Ce=h(require("node:fs/promises")),on=require("node:path");var ui=[/\.js$/];async function tn(e){let t=new Map;try{let o=(await Ce.default.readdir(e)).filter(n=>ui.some(s=>s.test(n)));for(let n of o){let s=(0,on.join)(e,n),i=await Ce.default.readFile(s),a=(0,rn.createHash)("sha256").update(i).digest("hex");t.set(n,a)}return t}catch(r){return c.build(`ERROR: Error processing directory ${e}: ${r}`),t}}async function nn(e,t){let[r,o]=await Promise.all([tn(e),tn(t)]);if(r.size!==o.size)return!0;for(let[n,s]of r.entries()){let i=o.get(n);if(!i||s!==i)return!0}return!1}async function sn(e,t){try{let r=await Ce.default.readFile(e,"utf-8"),o=/(window\.___webpackCompilationHash=")([^"]*)(";<\/script>)/,n=r.replace(o,`$1${t}$3`);if(r===n)return;await Ce.default.writeFile(e,n,"utf-8")}catch(r){c.error(`Failed to process file ${e}: ${r}`)}}var rt=class{bundleDir;currentRenderDir;pagesToCreate;pagesToDelete;assetArtifacts;state={mdToAdd:[],htmlToAdd:[],jsonToAdd:[],htmlToDelete:[],jsonToDelete:[],mdToDelete:[]};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(),Qt&&await this.assertAssetsAreValid()}async assertAssetsAreValid(){await nn(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),this.state.mdToDelete.push(o.mdPath));c.verbose(`${this.state.htmlToDelete.length} pages HTML to delete`),c.verbose(`${this.state.mdToDelete.length} pages Markdown 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 n=x.default.join(this.bundleDir,o.composePath,"index.html"),s=x.default.join(this.bundleDir,`${o.composePath}.md`),i=o.composePath==="/"?"index":o.composePath,a=x.default.join(this.bundleDir,"page-data",i,"page-data.json");this.state.htmlToAdd.push({from:o.htmlPath,to:n}),this.state.jsonToAdd.push({from:o.jsonPath,to:a}),await D(o.mdPath)&&this.state.mdToAdd.push({from:o.mdPath,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,...this.state.mdToDelete];for(let o of t)try{await H.default.rm(o,{force:!0}),c.verbose(`Sync (remove) : ${o}`)}catch(n){c.error(`Failed to remove ${o}:`,n)}await this.restoreWebpackCompilationHash();let r=[...this.state.htmlToAdd,...this.state.jsonToAdd,...this.state.mdToAdd];for(let o of r)try{await H.default.mkdir(x.default.dirname(o.to),{recursive:!0}),await H.default.copyFile(o.from,o.to),c.verbose(`Sync (copy) : ${o.from} -> ${o.to}`)}catch(n){c.error(`Failed to copy ${o.from} to ${o.to}:`,n)}await this.copyAssetArtifacts(),await this.copySitemaps()}async restoreWebpackCompilationHash(){let t=x.default.join(this.bundleDir,"page-data","app-data.json"),r=JSON.parse(await H.default.readFile(t,"utf8")).webpackCompilationHash;c.verbose(`Reading webpackCompilationHash from ${t}: ${r}`);let o=this.state.htmlToAdd.map(({from:n})=>n);c.info(`Patching ${o.length} HTML files with the new webpackCompilationHash (${r})...`);for(let n of o)Pe(`Patching HTML file ${n} with the new webpackCompilationHash`),await sn(n,r)}async copyAssetArtifacts(){for(let t of this.assetArtifacts){let r=x.default.join(this.currentRenderDir,t),o=x.default.join(this.bundleDir,t);try{await H.default.mkdir(x.default.dirname(o),{recursive:!0}),await H.default.copyFile(r,o),c.verbose(`Copied artifact: ${t}`)}catch(n){c.error(`Failed to copy artifact ${r} to ${o}:`,n)}}}async copySitemaps(){let t=x.default.resolve(this.currentRenderDir),r=x.default.resolve(this.bundleDir),o=Se(r,".xml");for await(let s of o){let i=x.default.basename(s);(i.startsWith("sitemap-")||i==="sitemap.xml")&&await H.default.rm(s,{force:!0})}let n=Se(t,".xml");for await(let s of n){let i=x.default.relative(t,s),a=x.default.join(r,i);try{await H.default.mkdir(x.default.dirname(a),{recursive:!0}),await H.default.copyFile(s,a)}catch(d){c.error(`Failed to copy sitemap ${s} to ${a}:`,d)}}c.verbose("Copied sitemap files.")}async scanPages(t){let r=Ie(32),o=Se(x.default.join(t,"page-data"),"page-data.json"),n=[];for await(let i of o)n.push(r(async()=>{try{let a=await H.default.readFile(i,"utf-8"),d=JSON.parse(a),l=d.result.pageContext.id,p=Ze(d.result.pageContext.fullPath.compose);return{id:l,composePath:p,htmlPath:x.default.join(t,p,"index.html"),mdPath:x.default.join(t,`${p}.md`),jsonPath:i}}catch(a){return c.error(`Error reading or parsing page data from ${i}:`,a),null}}));return(await Promise.all(n)).filter(i=>i!==null)}};async function an(e){let{renderMode:t,renderArtifacts:r,domain:o,pagesToCreate:n,pagesToDelete:s,pathsHydratedWithDomain:{__root:i,__ssg:a,__cache:d,__exports:l},ssg:{ssgArtifacts:p,assetPrefix:m}}=e,f=!!m&&m!=="",g=nt.default.join(i,"current-dist"),u=nt.default.join(l,"dist");await Promise.all([oe(i,d,r.cacheables,{override:!0}),oe(a,d,p.cacheables,{override:!0})]),t===$.FROM_SCRATCH&&(await gt(g),await ot.default.rm(u,{force:!0,recursive:!0}),await ot.default.rename(g,u)),t===$.INCREMENTAL&&(await gt(u),await new rt({src:g,dst:u,pagesToCreate:n,pagesToDelete:s,artifactsToCopyToExports:["build-report.json","llms.txt","robots.txt"]}).execute(),await ot.default.rm(g,{force:!0,recursive:!0}),await ht(nt.default.join(l,"dist"))),f&&await en(o,{root:i,exports:l}),await oe(i,l,r.archivables,{override:!0})}var v={clean:Kr,close:zr,data:To,dryRenderSync:Io,healthCheck:xo,init:Ao,llms:Fo,logs:No,meta:Wo,prepare:Jo,relocation:Yo,report:Vo,restore:Xo,ssg:Zo,sync:an};var it=h(require("node:path"));async function cn(){let{ssg:e}=(await S()).paths;return{disposables:[it.default.join(e,"public"),it.default.join(e,"static"),it.default.join(e,".cache")],cacheables:[".cache"]}}async function dn(){let e=await S();e.needsRollbackOnError=!0,await G(e),c.info(`Render lifecycles that follow will restore the exports dir on error if needed
70
+ `)}async function ln(){let e=await S();e.needsRollbackOnError=!1,await G(e),c.info(`Render lifecycles that follow will not restore the exports dir on error
71
+ `)}async function pn(e){await jr();let{renderMode:t,reason:r}=await Yr(e),o=await St(),n=await w({domain:e}),{__ssg:s}=n,i=await Xr(e),a=await cn(),d=pt?`${pt}/${e}`:"",l=await D(mn.default.join(s,`.render-sentinel-${e}`)),p=l?$.FROM_SCRATCH:t,m=l?"previous render error":r,f=await S();if(f.domains[e].renderMode=p,f.domains[e].renderModeReason=m,f.domains[e].isRendering=!1,t===$.IDLE&&p===$.IDLE){c.info(`(From Current Render) [${e}]: Skipping start-render as it is marked as IDLE with the reason ${r}.`);return}f.domains[e].isRendering=!0,f.currentRenderingDomain=e,await G(f);let g=m?` <${m}>`:"";c.info(`Init render (${p})${g} for domain ${e}
72
+ `);let u=new He({domain:e,pathsHydratedWithDomain:n,renderArtifacts:i,renderMetadata:o,renderMode:p,ssg:{assetPrefix:d,ssgArtifacts:a},dryRun:!!f.domains[e].dryRun,buildReportFileName:f.buildReportFileName}),b=u.dryRun?"dry-render is enabled":!1,A=u.dryRun?!1:"dry-render is disabled",E=le?!1:"Build logs to file are disabled",_=p==="FROM_SCRATCH"?!1:b,j=p==="FROM_SCRATCH"&&u.dryRun?"wet-render is forced enabled by FROM_SCRATCH render mode":A;await C("Init",async()=>v.init(u)),await C("Clean",async()=>v.clean(u)),await C("Prepare",async()=>v.prepare(u)),await C("Restore",async()=>v.restore(u)),await dn(),await C("Data",async()=>v.data(u)),await C("SSG",async()=>v.ssg(u),{skip:_}),await C("Relocation",async()=>v.relocation(u),{skip:_}),await C("Meta",async()=>v.meta(u),{skip:_}),await C("LLMS",async()=>v.llms(u),{skip:_}),await C("Report",async()=>v.report(u)),await C("DryRunSync",async()=>v.dryRenderSync(u),{skip:j}),await C("Sync",async()=>v.sync(u),{skip:_}),await C("HealthCheck",async()=>v.healthCheck(u)),await C("Logs",async()=>v.logs(u),{skip:_||E}),await C("Close",async()=>v.close(u)),await ln()}async function gi(){await Y.login();let[e]=process.argv.slice(2);await pn(e)}async function hi(){await wr(),await gi()}yr(hi);
73
73
  //# sourceMappingURL=start-render.js.map