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