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