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