@griddo/cx 10.4.3 → 10.4.4
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/create-build-data.js +2 -2
- package/build/index.js +2 -2
- package/exporter/utils/sites.ts +12 -9
- package/package.json +3 -3
|
@@ -24,7 +24,7 @@ GFS4: `),console.error(t)});W[se]||(Su=global[se]||[],Cu(W,Su),W.close=function(
|
|
|
24
24
|
\u2502 Access credentials failure \u2502
|
|
25
25
|
\u2502 Check that the login details are correct in your .env file \u2502
|
|
26
26
|
\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F
|
|
27
|
-
`)),process.exit(1)}}},_t=new _i;var Xf=z(mi()),Hf=z(Xr()),Gf=z(xt());var Sl=z(require("node:crypto")),at=z(require("node:fs")),Bi=z(require("node:path")),Ui=z(nr()),un=Bi.default.resolve(__dirname,"./../apiCache"),El=`${un}/siteHash.json`;function Cl(){at.default.existsSync(un)||at.default.mkdirSync(un),console.info("Cache initialized")}function Pl(t){let e=Sl.default.createHash("sha256");return e.update(JSON.stringify(t)),`${un}/${e.digest("hex")}`}function Dl(t,e){let r=typeof e=="string"?e:JSON.stringify(e),n=Pl(t),i=Bi.default.dirname(n);at.default.existsSync(i)||at.default.mkdirSync(i,{recursive:!0}),at.default.writeFileSync(n,r,"utf8")}function Ol(t){try{let e=Pl(t);return Ui.default.readJSONSync(e,{encoding:"utf-8"})}catch{return null}}function lg(){try{return Ui.default.readJSONSync(El,{encoding:"utf-8"})||{}}catch{return{}}}function Il(t,e){let r=lg(),n=r[t],i=e||n||new Date().valueOf();return i!==n&&(r[t]=i,at.default.writeFileSync(El,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}var Jg=z(Xr()),jf=z(xt()),Be=z(nr()),Vg=z(yf()),ls=z(Tf());var Nf="10.4.
|
|
27
|
+
`)),process.exit(1)}}},_t=new _i;var Xf=z(mi()),Hf=z(Xr()),Gf=z(xt());var Sl=z(require("node:crypto")),at=z(require("node:fs")),Bi=z(require("node:path")),Ui=z(nr()),un=Bi.default.resolve(__dirname,"./../apiCache"),El=`${un}/siteHash.json`;function Cl(){at.default.existsSync(un)||at.default.mkdirSync(un),console.info("Cache initialized")}function Pl(t){let e=Sl.default.createHash("sha256");return e.update(JSON.stringify(t)),`${un}/${e.digest("hex")}`}function Dl(t,e){let r=typeof e=="string"?e:JSON.stringify(e),n=Pl(t),i=Bi.default.dirname(n);at.default.existsSync(i)||at.default.mkdirSync(i,{recursive:!0}),at.default.writeFileSync(n,r,"utf8")}function Ol(t){try{let e=Pl(t);return Ui.default.readJSONSync(e,{encoding:"utf-8"})}catch{return null}}function lg(){try{return Ui.default.readJSONSync(El,{encoding:"utf-8"})||{}}catch{return{}}}function Il(t,e){let r=lg(),n=r[t],i=e||n||new Date().valueOf();return i!==n&&(r[t]=i,at.default.writeFileSync(El,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}var Jg=z(Xr()),jf=z(xt()),Be=z(nr()),Vg=z(yf()),ls=z(Tf());var Nf="10.4.4";jf.default.config();var d2=!!process.env.GRIDDO_DEBUG_LOGS&&!!JSON.parse(process.env.GRIDDO_DEBUG_LOGS),Yg=!!process.env.GRIDDO_BUILD_LOGS&&!!JSON.parse(process.env.GRIDDO_BUILD_LOGS)||!!process.env.LOGS&&!!JSON.parse(process.env.LOGS),h2=ls.default.sync(__dirname),p2=ls.default.sync();function Lf(t){let e=[];return Be.default.readdirSync(t).forEach(n=>{let i=`${t}/${n}`;e.push(i)}),e}function ur(t,e="",r=1,n=1){let i=t.split(`
|
|
28
28
|
`).map(b=>b.trim()),s=e?` ${e} `:"",o=e?s.length:0,a=Math.max(...i.map(b=>b.length))+r*2,u=Math.max(a,o),h=`\u2502${" ".repeat(u)}\u2502
|
|
29
29
|
`.repeat(n),c=u,p=`\u256D${s}${"\u2500".repeat(c-o)}\u256E
|
|
30
30
|
`,g=`\u2570${"\u2500".repeat(c)}\u256F`,m=i.map(b=>{let x=" ".repeat(u-b.length-r);return`\u2502${" ".repeat(r)}${b}${x}\u2502
|
|
@@ -52,7 +52,7 @@ ${p}
|
|
|
52
52
|
${g}
|
|
53
53
|
|
|
54
54
|
=============
|
|
55
|
-
`))}var Zg=process.env.API_URL,ey={GET_ALL:`${Zg}/domains`},bn=class{static async getAll(){let{GET_ALL:e}=ey;return await Ae({endpoint:e})}};async function zf(){await _t.login();let t=await bn.getAll();return ty(t)}function ty(t){let e=t.filter(({slug:r})=>!!r).map(({slug:r})=>r.replace("/",""));return[...new Set(e)]}var so=z(require("node:path"));var Ye=z(require("node:fs")),Wf=z(require("node:fs/promises")),Pe=z(require("node:path")),gs=z(nr());async function*ry(t){let e=Pe.default.resolve(t),r=Lf(e).filter(n=>Pe.default.extname(n)===".json");for(let n of r)try{let i=await Wf.default.stat(n),s=await gs.default.readJSON(n,{encoding:"utf-8"});s.size=i.size/1024,s.path&&(yield s)}catch(i){console.error(`Error: The file ${n} doesn't exist`,i)}}function Jf(t){Ye.default.existsSync(t)||(Ye.default.mkdirSync(t),Ye.default.mkdirSync(Pe.default.resolve(t,"metadata"))),console.info("Store initialized")}function Vf(t,e){Ye.default.writeFileSync(Pe.default.resolve(t,"metadata","render-info.json"),JSON.stringify(e))}function ny(t,e){return iy(t).filter(i=>e.includes(i))}function iy(t){return Ye.default.readdirSync(t).filter(r=>{let n=`${t}/${r}`,i=Ye.default.statSync(n);if(i&&i.isDirectory()||Pe.default.extname(r)!==".json")return!1;let s=Pe.default.basename(r,Pe.default.extname(r));return!isNaN(parseInt(s))}).map(r=>{let n=Pe.default.basename(r,Pe.default.extname(r));return parseInt(n)})}function Yf(t,e){e.forEach(r=>{hs(r,["editorID","parentEditorID"]);let n=`${r.context.page.id}.json`,i=Pe.default.resolve(t,n);gs.default.writeJSONSync(i,r)})}function Kf(t,e){e.length!==0&&e.forEach(r=>{let n=Pe.default.resolve(t,`${r}.json`);try{Ye.default.unlinkSync(n)}catch(i){console.log(`Error removing file ${r}`,i.message)}})}async function Qf(t,e){let{changedPages:r,pages:n,validPagesIds:i,sitesToPublish:s}=e,o=ny(t,n),a=i.filter(m=>!o.includes(m)),u=a.concat(r),h=o.filter(m=>!i.includes(m)),c=Array.from(new Set(u)).filter(m=>!h.includes(m)),p=ry(Pe.default.resolve(__dirname,"../store")),g=[];for await(let m of p){let b=m.context.page.site,x=m.context.page.id;s.map(S=>S.id).includes(b)||g.push(x)}return{pagesInStore:o,pagesMissingInStore:a,pagesToDeleteFromStore:[...h,...g],pagesToWriteToStore:c}}var Ld=z(xt()),$d=z(ss());var Zf=z(xt());Zf.default.config();var ys=process.env.API_URL,Ke=`${ys}/site/`,Ue={GET_ALL:`${ys}/sites/all`,GET_PAGE:[`${ys}/page/`,""],INFO:[`${Ke}`,"/all"],LANGUAGES:[`${Ke}`,"/languages"],BUILD_START:[`${Ke}`,"/build/start"],BUILD_END:[`${Ke}`,"/build/end"],GET_DISTRIBUTOR_DATA:[`${Ke}`,"/distributor"],GET_SITEMAP:[`${Ke}`,"/sitemap"],SOCIALS:[`${Ke}`,"/socials"],GET_PAGES:[`${Ke}`,"/pages?pagination=false"]},ge=class{static async getAll(){let{GET_ALL:e}=Ue;return await Ae({endpoint:e})}static async getPage(e,r){let{GET_PAGE:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getInfo(e,r=""){let{INFO:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getLanguages(e,r=""){let{LANGUAGES:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}static async startSiteRender(e){let{BUILD_START:[r,n]}=Ue;return await Ae({endpoint:`${r}${e}${n}`})}static async endSiteRender(e,r){let{BUILD_END:[n,i]}=Ue;return await cr({endpoint:`${n}${e}${i}`,body:r})}static async getDistributorData(e,r,n,i,s){let{GET_DISTRIBUTOR_DATA:[o,a]}=Ue,u=i||e.site,h=s||e.language;return await cr({endpoint:`${o}${u}${a}`,body:r,headers:{lang:h},cacheKey:n})}static async getSitemap(e){let{GET_SITEMAP:[r,n]}=Ue;return await Ae({endpoint:`${r}${e}${n}`})}static async getSocials(e,r=""){let{SOCIALS:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}};var wn=class{static getBody(e,r){let{order:n,sources:i,quantity:s,mode:o,fixed:a,fullRelations:u=!1,allLanguages:h=!1,preferenceLanguage:c=!1,referenceId:p}=e;return o==="auto"?{mode:o,order:n,sources:i,quantity:s,fullRelations:u,allLanguages:h,preferenceLanguage:c}:o==="manual"?{mode:o,fixed:a,fullRelations:u}:o==="navigation"?{mode:o,order:n,quantity:s,fullRelations:u,referenceId:p||r?.structuredDataContent?.id}:(console.log(`Error: Distribuidor mode: ${o} is not recognized on page ${r?.id}.`),e)}static async fetchContentTypeData(e){let{page:r,component:{data:n},cacheKey:i}=e;if(!n)return ur(`Error: Page ${r.id} has \`hasDistributorData: true\` but it doesn't have a \`data\` prop`,"No data in ReferenceField"),[];if(Array.isArray(n.sources)&&n.sources.length<1)return ur(`Warning: Page with id: ${r.id} has a ReferenceField with empty \`data.sources\``,"Empty data.sources in ReferenceField"),[];let{site:s,lang:o}=n,a=this.getBody(n,r);return await ge.getDistributorData(r,a,i,s,o)}static async getDistributorData({page:e,cacheKey:r=""}){try{let{template:n}=e,i=async(a,u=1)=>{if(!(!a||typeof a!="object")&&JSON.stringify(a).includes('"hasDistributorData":true'))for(let h in a){if(h==="queriedItems")continue;let p=a[h];!p||typeof p!="object"||(p.hasDistributorData&&(p.queriedItems=await this.fetchContentTypeData({page:e,cacheKey:r,component:p})),await i(p,u+1))}};return await(async a=>(await i([a]),a))(n)}catch(n){console.error(`Error en get distributor ${n}`),process.exit(1)}}};var _n=class{_defaultHeaders;_defaultFooters;_navigations;constructor(){this._navigations={footers:[],headers:[]},this._defaultHeaders={},this._defaultFooters={}}set navigations(e){this._navigations=e,this._defaultFooters=this.getDefaultFooters(),this._defaultHeaders=this.getDefaultHeaders()}get navigations(){return this._navigations}getDefaultFooters(){return[...this.navigations.footers].filter(i=>!!i.setAsDefault).reduce((i,s)=>{let{language:o}=s;return{...i,[o]:s}},{})}getDefaultHeaders(){return[...this.navigations.headers].filter(i=>!!i.setAsDefault).reduce((i,s)=>{let{language:o}=s;return{...i,[o]:s}},{})}getRightLanguage(e,r,n){if(!e||!r)return null;let s=e.find(o=>o.language===n&&o.navigationLanguages?.find(a=>a.navigationId===r))||e.find(o=>o.id===r);return s?{...s}:null}getPageHeader(e,r){return this.getRightLanguage(this.navigations.headers,e,r)}getPageFooter(e,r){return this.getRightLanguage(this.navigations.footers,e,r)}getPageNavigations(e){let{header:r,footer:n,language:i,template:{templateType:s},templateConfig:{defaultHeader:o,defaultFooter:a,templates:u}}=e,h=b=>{let x=b.find(S=>typeof S=="number");return typeof x=="number"?x:null},c=h([r,u?.[s]?.defaultHeader,o]),p=h([n,u?.[s]?.defaultFooter,a]),g=c?this.getPageHeader(c,i):c===0?null:this._defaultHeaders[i],m=p?this.getPageFooter(p,i):p===0?null:this._defaultFooters[i];return{header:g,footer:m}}};var vs=class{baseURL;settings;ENDPOINTS;constructor(){this.baseURL=process.env.API_URL,this.settings={cloudinaryName:"",useMetaTitle:!1,useMetaKeywords:!1,showBasicMetaRobots:!1,avoidHrefLangsOnCanonicals:!1,avoidSelfReferenceCanonicals:!1,avoidHrefLangXDefault:!1,avoidDebugMetas:!1},this.ENDPOINTS={settings:`${this.baseURL}/settings`,resetRender:`${this.baseURL}/debug/reset-render`}}async getAll(){let{settings:e}=this.ENDPOINTS,r=await Ae({endpoint:e});this.settings=r}async resetRender(){let{resetRender:e}=this.ENDPOINTS;await cr({endpoint:e})}},bs=new vs;var rd=z(xt());function ws(t,e,r,n="jpg"){let i=typeof t=="string"?t:t?.url;return i?i.split("/")[2].includes("cloudinary.com")?oy(i,`c_fill,w_${e},h_${r}`):sy(i,`f/${n}/w/${e}/h/${r}`):null}function sy(t,e){let r=t.split("/"),n=r.slice(0,-1).join("/"),i=r.slice(-1)[0];return`${n}/${e}/${i}`}function oy(t,e){let r=t.replace("https://",""),n=r.split("/").slice(0,4).join("/"),i=r.replace(n,"");return`https://${n}/${e}${i}`}rd.default.config();var ay=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false"),uy=25;function cy({socialTitle:t,socialDescription:e,socialImage:r}){return{type:"website",title:t,description:e,image:r?ws(r,1280,768):"",twitterImage:r?ws(r,1280,768):""}}function ly(t){let{title:e,metaTitle:r,metaDescription:n,canonicalURL:i,locale:s,url:o,isIndexed:a,follow:u,metasAdvanced:h,pageLanguages:c,fullUrl:p,metaKeywords:g}=t,m=h?.split(",").filter(Boolean).map(b=>b.trim().toLowerCase())||[];return{title:(r||e||"").trim(),description:n,canonical:i&&i.trim()&&i!==p?i.trim():a?p:void 0,locale:s,url:o,index:a?"index":"noindex",follow:u?"follow":"nofollow",translate:m.includes("notranslate")?"notranslate":"",metasAdvanced:m.filter(b=>b!=="notranslate").join(),pageLanguages:c,metaKeywords:g?.filter(Boolean).map(b=>b.replace(/"/g,"'")).join(", ")}}async function xs(t,e){let{id:r,title:n,fullPath:i,language:s,breadcrumb:o,socialDescription:a,socialImage:u,socialTitle:h}=t,{baseUrl:c,cloudinaryName:p,griddoVersion:g,siteLangs:m,siteMetadata:b,siteOptions:x,siteScript:S,siteSlug:F,socials:L,theme:B,navigations:{header:G,footer:Y}}=e;t.breadcrumb=o,t.siteSlug=F,t.apiUrl=c,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let De=m.find(({id:I})=>I===t?.language)?.locale.replace(/_/g,"-"),Q=ly(t),D=cy({socialDescription:a,socialImage:u,socialTitle:h}),q=ay?i.compose:`${i.domain}${i.compose}`,k=new Date().toString();return{path:q,size:void 0,context:{id:r,title:n,fullPath:i,locale:De,languageId:s,theme:B,siteMetadata:b,pageMetadata:Q,openGraph:D,socials:L,siteLangs:m,cloudinaryName:p,siteOptions:x,griddoVersion:g,renderDate:k,siteScript:S,header:G,footer:Y,page:t}}}async function nd(t,e){return await xs(t,e)}async function id({page:t,pages:e,isRoot:r=!1,defaultLang:n,template:i,totalQueriedItems:s},o){let a=e.map(async(u,h)=>{let c=h===0,p=h+1,{domainUrl:g,compose:m}=t.fullPath,b={...t,fullPath:{...t.fullPath,compose:_s(m,p,{addEndingSlash:!0})},fullUrl:_s(t.fullUrl,p,{addEndingSlash:!0}),slug:_s(t.slug,p),title:td(t.title,p),metaTitle:td(t.metaTitle||"",p),disableHrefLangs:p>1,template:{...i,isFirstPage:c,pageNumber:p,totalPages:e.length,baseLink:`${g}${m}`,queriedItems:u,totalQueriedItems:s?.length},isRoot:r,defaultLang:n};return await xs(b,o,!c)});return Promise.all(a)}function sd(t,e){let{multiPageElements:r,...n}=t,i=JSON.parse(JSON.stringify(r));i.find(({sectionSlug:o})=>o==="/")||i.push({});let s=i.map(async o=>{let a=JSON.parse(JSON.stringify(n)),{sectionSlug:u="/",title:h="",metaTitle:c="",metaDescription:p=""}=o,g=typeof h=="string"?h:h.content,m=a.fullPath.compose||"",b=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,x=u?.replace(/\//g,""),F=u==="/"?x:x+"/",L=m.endsWith("/")?"":"/",B=`${m}${L}${F}`;return g.trim()&&(a.title=g),p.trim()&&(a.metaDescription=p),a.fullUrl=`${b}/${F}`,a.fullPath.compose=B,a.slug=B,a.template.activeSectionSlug=u,a.template.activeSectionBase=b,a.metaTitle=c.trim()||g.trim()||a.metaTitle,await xs(a,e)});return Promise.all(s)}function od(t){return new Promise(r=>{let n=(i,s=0)=>{if(!(!i||typeof i!="object")){for(let o in i){let a=i[o],u=a||typeof a=="object",h=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!u||!h)continue;let{component:c,hasGriddoMultiPage:p,elements:g}=a;c&&p&&r(g||[]),n(a,s+1)}s||r(null)}};n([t])})}function fy(t,e,r){return e?.slice(t*(r-1),t*r)}function dy(t,e){let r=Math.ceil(e.length/t)||1;return Array.from({length:r},(i,s)=>s+1)?.map(i=>fy(t,e,i))}function ad(t){let e=t.queriedItems||[],r=t?.itemsPerPage||uy;return dy(r,e)}function ed(t){return t.replace(/\/+$/,"/")}function _s(t,e,r){let n=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?ed(`${t}${i}`):ed(`${t}${n}${e}${i}`)}function td(t,e){return!t||e<=1?t:`${t} - ${e}`}var iv=z(nr()),sv=z(Rd());var ov=process.env.API_URL,av=!!process.env.GRIDDO_RENDER_ALL_SITES||!!process.env.updateAllSites,jt=process.env.GRIDDO_RENDER_SITE&&parseInt(process.env.GRIDDO_RENDER_SITE)||process.env.testSite&&parseInt(process.env.testSite),kd=(process.env.GRIDDO_RENDER_PAGES||process.env.testPage||"").split(",").map(t=>parseInt(t)).filter(Boolean),d5=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false");async function Md(t){console.info(`API URL ${ov}`),await _t.login();let e=await ge.getAll(),r=av?e.filter(s=>!jt||s.id===jt):e.filter(s=>jt?s.id===jt:!!s.shouldBeUpdated);if(r.length){let s=r.map(async o=>{let a=await ge.getLanguages(o.id);return o.domains=a.items.filter(u=>u.domain&&u.domain.slug.indexOf(t)>0).map(u=>({[u.id]:`${u.domain.slug}${u.path}`}))});await Promise.all(s)}let n=r.filter(s=>jt?s.id===jt:!!s.isPublished&&s.domains.length>0),i=r.filter(s=>!s.isPublished&&s.shouldBeUpdated);return{sitesToPublish:n,sitesToUnpublish:i}}async function qd(t){for(let e of t){let r=await ge.startSiteRender(e.id),{siteHash:n}=r,i={siteHash:n,publishHashes:[],unpublishHashes:[]};await ge.endSiteRender(e.id,i)}}async function Td(t){let e=await ge.startSiteRender(t),r=await ge.getInfo(t),n=await ge.getLanguages(t),i=await ge.getSocials(t),s=n.items,o=s.find(b=>b.isDefault),{siteHash:a,unpublishHashes:u,publishIds:h}=e,{headers:c,footers:p}=r,g=kd.length?kd.filter(b=>h.includes(b)):h;return{siteInfo:r,validPagesIds:g,siteHash:a,unpublishHashes:u,siteLangs:s,defaultLang:o,headers:c,footers:p,socials:i}}Ld.default.config();var uv=process.env.API_URL,cv=process.env.GRIDDO_REACT_APP_INSTANCE||process.env.REACT_APP_INSTANCE,Nd=parseInt(process.env.GRIDDO_API_CONCURRENCY_COUNT||"10"),lv=process.env.PUBLIC_API_URL,fv=process.env.GRIDDO_RENDERID||new Date().valueOf().toString(),jd=[],io={};async function Bd(t,e){console.info(`API calls with ${Nd} threads`);try{let{sitesToPublish:r,sitesToUnpublish:n}=await Md(e);await bs.getAll(),r.length||n.length||(console.warn("There are no sites to update"),process.exit(0)),console.info(`Sites to publish: ${ps(r)}`),console.info(`Sites to unpublish: ${ps(n)}`),await qd(n);for(let i of r){let{id:s,slug:o,theme:a,favicon:u,changedPages:h=[],pages:c=[]}=i,{siteInfo:p,validPagesIds:g,siteHash:m,unpublishHashes:b,siteLangs:x,defaultLang:S,headers:F,footers:L,socials:B}=await Td(s),{cloudinaryName:G,useMetaTitle:Y,useMetaKeywords:ye,showBasicMetaRobots:De,avoidHrefLangsOnCanonicals:Q,avoidSelfReferenceCanonicals:D,avoidHrefLangXDefault:q,avoidDebugMetas:k}=bs.settings;io[s]={siteHash:m,unpublishHashes:b,publishHashes:[]};let X=new _n;X.navigations={headers:F,footers:L},i.languages=x;let I=Il(s,m),U=p.siteScript,O={siteUrl:p.slug,title:p.name,favicon:u},j={baseUrl:uv,publicBaseUrl:lv,instance:cv,siteSlug:o,theme:a,siteMetadata:O,socials:B,siteLangs:x,cloudinaryName:G,griddoVersion:Nf,siteOptions:{useMetaTitle:Y,useMetaKeywords:ye,showBasicMetaRobots:De,avoidHrefLangsOnCanonicals:Q,avoidSelfReferenceCanonicals:D,avoidHrefLangXDefault:q,avoidDebugMetas:k},siteScript:U};qt(`${i.name} site`);let M=async re=>{let l=[],d=await ge.getPage(re,I);if(!d)return;jd.push(re);let f=JSON.parse(JSON.stringify(j));f.navigations=X.getPageNavigations(d);let v=await wn.getDistributorData({page:d,cacheKey:fv}),_=await od(v),w=d?.mode==="list",T=!w&&_,$=!T&&!w;if(w){let N={page:d,pages:ad(v),isRoot:!1,defaultLang:S,template:v,totalQueriedItems:v.queriedItems};l=await id(N,f)}if(T){let N=d;N.template=v,N.multiPageElements=_,N.defaultLang=S,l=await sd(N,f)}if($){let N=d;N.template=v,N.defaultLang=S,l=[await nd(N,f)]}d.hash!==null&&io[s].publishHashes.push(d.hash),Yf(t,l)},{pagesInStore:E,pagesMissingInStore:A,pagesToDeleteFromStore:Oe,pagesToWriteToStore:ke}=await Qf(t,{sitesToPublish:r,pages:c,validPagesIds:g,changedPages:h});Kf(t,Oe);let ae=`Store: ${E.length} -> ${E}
|
|
55
|
+
`))}var Zg=process.env.API_URL,ey={GET_ALL:`${Zg}/domains`},bn=class{static async getAll(){let{GET_ALL:e}=ey;return await Ae({endpoint:e})}};async function zf(){await _t.login();let t=await bn.getAll();return ty(t)}function ty(t){let e=t.filter(({slug:r})=>!!r).map(({slug:r})=>r.replace("/",""));return[...new Set(e)]}var so=z(require("node:path"));var Ye=z(require("node:fs")),Wf=z(require("node:fs/promises")),Pe=z(require("node:path")),gs=z(nr());async function*ry(t){let e=Pe.default.resolve(t),r=Lf(e).filter(n=>Pe.default.extname(n)===".json");for(let n of r)try{let i=await Wf.default.stat(n),s=await gs.default.readJSON(n,{encoding:"utf-8"});s.size=i.size/1024,s.path&&(yield s)}catch(i){console.error(`Error: The file ${n} doesn't exist`,i)}}function Jf(t){Ye.default.existsSync(t)||(Ye.default.mkdirSync(t),Ye.default.mkdirSync(Pe.default.resolve(t,"metadata"))),console.info("Store initialized")}function Vf(t,e){Ye.default.writeFileSync(Pe.default.resolve(t,"metadata","render-info.json"),JSON.stringify(e))}function ny(t,e){return iy(t).filter(i=>e.includes(i))}function iy(t){return Ye.default.readdirSync(t).filter(r=>{let n=`${t}/${r}`,i=Ye.default.statSync(n);if(i&&i.isDirectory()||Pe.default.extname(r)!==".json")return!1;let s=Pe.default.basename(r,Pe.default.extname(r));return!isNaN(parseInt(s))}).map(r=>{let n=Pe.default.basename(r,Pe.default.extname(r));return parseInt(n)})}function Yf(t,e){e.forEach(r=>{hs(r,["editorID","parentEditorID"]);let n=`${r.context.page.id}.json`,i=Pe.default.resolve(t,n);gs.default.writeJSONSync(i,r)})}function Kf(t,e){e.length!==0&&e.forEach(r=>{let n=Pe.default.resolve(t,`${r}.json`);try{Ye.default.unlinkSync(n)}catch(i){console.log(`Error removing file ${r}`,i.message)}})}async function Qf(t,e){let{changedPages:r,pages:n,validPagesIds:i,sitesToPublish:s}=e,o=ny(t,n),a=i.filter(m=>!o.includes(m)),u=a.concat(r),h=o.filter(m=>!i.includes(m)),c=Array.from(new Set(u)).filter(m=>!h.includes(m)),p=ry(Pe.default.resolve(__dirname,"../store")),g=[];for await(let m of p){let b=m.context.page.site,x=m.context.page.id;s.map(S=>S.id).includes(b)||g.push(x)}return{pagesInStore:o,pagesMissingInStore:a,pagesToDeleteFromStore:[...h,...g],pagesToWriteToStore:c}}var Ld=z(xt()),$d=z(ss());var Zf=z(xt());Zf.default.config();var ys=process.env.API_URL,Ke=`${ys}/site/`,Ue={GET_ALL:`${ys}/sites/all`,GET_PAGE:[`${ys}/page/`,""],INFO:[`${Ke}`,"/all"],LANGUAGES:[`${Ke}`,"/languages"],BUILD_START:[`${Ke}`,"/build/start"],BUILD_END:[`${Ke}`,"/build/end"],GET_DISTRIBUTOR_DATA:[`${Ke}`,"/distributor"],GET_SITEMAP:[`${Ke}`,"/sitemap"],SOCIALS:[`${Ke}`,"/socials"],GET_PAGES:[`${Ke}`,"/pages?pagination=false"]},ge=class{static async getAll(){let{GET_ALL:e}=Ue;return await Ae({endpoint:e})}static async getPage(e,r){let{GET_PAGE:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getInfo(e,r=""){let{INFO:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getLanguages(e,r=""){let{LANGUAGES:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}static async startSiteRender(e){let{BUILD_START:[r,n]}=Ue;return await Ae({endpoint:`${r}${e}${n}`})}static async endSiteRender(e,r){let{BUILD_END:[n,i]}=Ue;return await cr({endpoint:`${n}${e}${i}`,body:r})}static async getDistributorData(e,r,n,i,s){let{GET_DISTRIBUTOR_DATA:[o,a]}=Ue,u=i||e.site,h=s||e.language;return await cr({endpoint:`${o}${u}${a}`,body:r,headers:{lang:h},cacheKey:n})}static async getSitemap(e){let{GET_SITEMAP:[r,n]}=Ue;return await Ae({endpoint:`${r}${e}${n}`})}static async getSocials(e,r=""){let{SOCIALS:[n,i]}=Ue;return await Ae({endpoint:`${n}${e}${i}`,cacheKey:r})}};var wn=class{static getBody(e,r){let{order:n,sources:i,quantity:s,mode:o,fixed:a,fullRelations:u=!1,allLanguages:h=!1,preferenceLanguage:c=!1,referenceId:p}=e;return o==="auto"?{mode:o,order:n,sources:i,quantity:s,fullRelations:u,allLanguages:h,preferenceLanguage:c}:o==="manual"?{mode:o,fixed:a,fullRelations:u}:o==="navigation"?{mode:o,order:n,quantity:s,fullRelations:u,referenceId:p||r?.structuredDataContent?.id}:(console.log(`Error: Distribuidor mode: ${o} is not recognized on page ${r?.id}.`),e)}static async fetchContentTypeData(e){let{page:r,component:{data:n},cacheKey:i}=e;if(!n)return ur(`Error: Page ${r.id} has \`hasDistributorData: true\` but it doesn't have a \`data\` prop`,"No data in ReferenceField"),[];if(Array.isArray(n.sources)&&n.sources.length<1)return ur(`Warning: Page with id: ${r.id} has a ReferenceField with empty \`data.sources\``,"Empty data.sources in ReferenceField"),[];let{site:s,lang:o}=n,a=this.getBody(n,r);return await ge.getDistributorData(r,a,i,s,o)}static async getDistributorData({page:e,cacheKey:r=""}){try{let{template:n}=e,i=async(a,u=1)=>{if(!(!a||typeof a!="object")&&JSON.stringify(a).includes('"hasDistributorData":true'))for(let h in a){if(h==="queriedItems")continue;let p=a[h];!p||typeof p!="object"||(p.hasDistributorData&&(p.queriedItems=await this.fetchContentTypeData({page:e,cacheKey:r,component:p})),await i(p,u+1))}};return await(async a=>(await i([a]),a))(n)}catch(n){console.error(`Error en get distributor ${n}`),process.exit(1)}}};var _n=class{_defaultHeaders;_defaultFooters;_navigations;constructor(){this._navigations={footers:[],headers:[]},this._defaultHeaders={},this._defaultFooters={}}set navigations(e){this._navigations=e,this._defaultFooters=this.getDefaultFooters(),this._defaultHeaders=this.getDefaultHeaders()}get navigations(){return this._navigations}getDefaultFooters(){return[...this.navigations.footers].filter(i=>!!i.setAsDefault).reduce((i,s)=>{let{language:o}=s;return{...i,[o]:s}},{})}getDefaultHeaders(){return[...this.navigations.headers].filter(i=>!!i.setAsDefault).reduce((i,s)=>{let{language:o}=s;return{...i,[o]:s}},{})}getRightLanguage(e,r,n){if(!e||!r)return null;let s=e.find(o=>o.language===n&&o.navigationLanguages?.find(a=>a.navigationId===r))||e.find(o=>o.id===r);return s?{...s}:null}getPageHeader(e,r){return this.getRightLanguage(this.navigations.headers,e,r)}getPageFooter(e,r){return this.getRightLanguage(this.navigations.footers,e,r)}getPageNavigations(e){let{header:r,footer:n,language:i,template:{templateType:s},templateConfig:{defaultHeader:o,defaultFooter:a,templates:u}}=e,h=b=>{let x=b.find(S=>typeof S=="number");return typeof x=="number"?x:null},c=h([r,u?.[s]?.defaultHeader,o]),p=h([n,u?.[s]?.defaultFooter,a]),g=c?this.getPageHeader(c,i):c===0?null:this._defaultHeaders[i],m=p?this.getPageFooter(p,i):p===0?null:this._defaultFooters[i];return{header:g,footer:m}}};var vs=class{baseURL;settings;ENDPOINTS;constructor(){this.baseURL=process.env.API_URL,this.settings={cloudinaryName:"",useMetaTitle:!1,useMetaKeywords:!1,showBasicMetaRobots:!1,avoidHrefLangsOnCanonicals:!1,avoidSelfReferenceCanonicals:!1,avoidHrefLangXDefault:!1,avoidDebugMetas:!1},this.ENDPOINTS={settings:`${this.baseURL}/settings`,resetRender:`${this.baseURL}/debug/reset-render`}}async getAll(){let{settings:e}=this.ENDPOINTS,r=await Ae({endpoint:e});this.settings=r}async resetRender(){let{resetRender:e}=this.ENDPOINTS;await cr({endpoint:e})}},bs=new vs;var rd=z(xt());function ws(t,e,r,n="jpg"){let i=typeof t=="string"?t:t?.url;return i?i.split("/")[2].includes("cloudinary.com")?oy(i,`c_fill,w_${e},h_${r}`):sy(i,`f/${n}/w/${e}/h/${r}`):null}function sy(t,e){let r=t.split("/"),n=r.slice(0,-1).join("/"),i=r.slice(-1)[0];return`${n}/${e}/${i}`}function oy(t,e){let r=t.replace("https://",""),n=r.split("/").slice(0,4).join("/"),i=r.replace(n,"");return`https://${n}/${e}${i}`}rd.default.config();var ay=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false"),uy=25;function cy({socialTitle:t,socialDescription:e,socialImage:r}){return{type:"website",title:t,description:e,image:r?ws(r,1280,768):"",twitterImage:r?ws(r,1280,768):""}}function ly(t){let{title:e,metaTitle:r,metaDescription:n,canonicalURL:i,locale:s,url:o,isIndexed:a,follow:u,metasAdvanced:h,pageLanguages:c,fullUrl:p,metaKeywords:g}=t,m=h?.split(",").filter(Boolean).map(b=>b.trim().toLowerCase())||[];return{title:(r||e||"").trim(),description:n,canonical:i&&i.trim()&&i!==p?i.trim():a?p:void 0,locale:s,url:o,index:a?"index":"noindex",follow:u?"follow":"nofollow",translate:m.includes("notranslate")?"notranslate":"",metasAdvanced:m.filter(b=>b!=="notranslate").join(),pageLanguages:c,metaKeywords:g?.filter(Boolean).map(b=>b.replace(/"/g,"'")).join(", ")}}async function xs(t,e){let{id:r,title:n,fullPath:i,language:s,breadcrumb:o,socialDescription:a,socialImage:u,socialTitle:h}=t,{baseUrl:c,cloudinaryName:p,griddoVersion:g,siteLangs:m,siteMetadata:b,siteOptions:x,siteScript:S,siteSlug:F,socials:L,theme:B,navigations:{header:G,footer:Y}}=e;t.breadcrumb=o,t.siteSlug=F,t.apiUrl=c,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let De=m.find(({id:I})=>I===t?.language)?.locale.replace(/_/g,"-"),Q=ly(t),D=cy({socialDescription:a,socialImage:u,socialTitle:h}),q=ay?i.compose:`${i.domain}${i.compose}`,k=new Date().toString();return{path:q,size:void 0,context:{id:r,title:n,fullPath:i,locale:De,languageId:s,theme:B,siteMetadata:b,pageMetadata:Q,openGraph:D,socials:L,siteLangs:m,cloudinaryName:p,siteOptions:x,griddoVersion:g,renderDate:k,siteScript:S,header:G,footer:Y,page:t}}}async function nd(t,e){return await xs(t,e)}async function id({page:t,pages:e,isRoot:r=!1,defaultLang:n,template:i,totalQueriedItems:s},o){let a=e.map(async(u,h)=>{let c=h===0,p=h+1,{domainUrl:g,compose:m}=t.fullPath,b={...t,fullPath:{...t.fullPath,compose:_s(m,p,{addEndingSlash:!0})},fullUrl:_s(t.fullUrl,p,{addEndingSlash:!0}),slug:_s(t.slug,p),title:td(t.title,p),metaTitle:td(t.metaTitle||"",p),disableHrefLangs:p>1,template:{...i,isFirstPage:c,pageNumber:p,totalPages:e.length,baseLink:`${g}${m}`,queriedItems:u,totalQueriedItems:s?.length},isRoot:r,defaultLang:n};return await xs(b,o,!c)});return Promise.all(a)}function sd(t,e){let{multiPageElements:r,...n}=t,i=JSON.parse(JSON.stringify(r));i.find(({sectionSlug:o})=>o==="/")||i.push({});let s=i.map(async o=>{let a=JSON.parse(JSON.stringify(n)),{sectionSlug:u="/",title:h="",metaTitle:c="",metaDescription:p=""}=o,g=typeof h=="string"?h:h.content,m=a.fullPath.compose||"",b=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,x=u?.replace(/\//g,""),F=u==="/"?x:x+"/",L=m.endsWith("/")?"":"/",B=`${m}${L}${F}`;return g.trim()&&(a.title=g),p.trim()&&(a.metaDescription=p),a.fullUrl=`${b}/${F}`,a.fullPath.compose=B,a.slug=B,a.template.activeSectionSlug=u,a.template.activeSectionBase=b,a.metaTitle=c.trim()||g.trim()||a.metaTitle,await xs(a,e)});return Promise.all(s)}function od(t){return new Promise(r=>{let n=(i,s=0)=>{if(!(!i||typeof i!="object")){for(let o in i){let a=i[o],u=a||typeof a=="object",h=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!u||!h)continue;let{component:c,hasGriddoMultiPage:p,elements:g}=a;c&&p&&r(g||[]),n(a,s+1)}s||r(null)}};n([t])})}function fy(t,e,r){return e?.slice(t*(r-1),t*r)}function dy(t,e){let r=Math.ceil(e.length/t)||1;return Array.from({length:r},(i,s)=>s+1)?.map(i=>fy(t,e,i))}function ad(t){let e=t.queriedItems||[],r=t?.itemsPerPage||uy;return dy(r,e)}function ed(t){return t.replace(/\/+$/,"/")}function _s(t,e,r){let n=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?ed(`${t}${i}`):ed(`${t}${n}${e}${i}`)}function td(t,e){return!t||e<=1?t:`${t} - ${e}`}var iv=z(nr()),sv=z(Rd());var ov=process.env.API_URL,av=!!process.env.GRIDDO_RENDER_ALL_SITES||!!process.env.updateAllSites,jt=process.env.GRIDDO_RENDER_SITE&&parseInt(process.env.GRIDDO_RENDER_SITE)||process.env.testSite&&parseInt(process.env.testSite),kd=(process.env.GRIDDO_RENDER_PAGES||process.env.testPage||"").split(",").map(t=>parseInt(t)).filter(Boolean),d5=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false");async function Md(t){console.info(`API URL ${ov}`),await _t.login();let e=await ge.getAll(),r=av?e.filter(s=>!jt||s.id===jt):e.filter(s=>jt?s.id===jt:!!s.shouldBeUpdated);if(r.length)for(let s of r){let{items:o}=await ge.getLanguages(s.id);s.domains=o.filter(a=>a.domain&&(a.domain.slug===t||a.domain.slug===`/${t}`)).map(a=>({[a.id]:`${a.domain.slug}${a.path}`}))}let n=r.filter(s=>jt?s.id===jt:!!s.isPublished&&s.domains.length>0),i=r.filter(s=>!s.isPublished&&s.shouldBeUpdated);return{sitesToPublish:n,sitesToUnpublish:i}}async function qd(t){for(let e of t){let r=await ge.startSiteRender(e.id),{siteHash:n}=r,i={siteHash:n,publishHashes:[],unpublishHashes:[]};await ge.endSiteRender(e.id,i)}}async function Td(t){let e=await ge.startSiteRender(t),r=await ge.getInfo(t),n=await ge.getLanguages(t),i=await ge.getSocials(t),s=n.items,o=s.find(b=>b.isDefault),{siteHash:a,unpublishHashes:u,publishIds:h}=e,{headers:c,footers:p}=r,g=kd.length?kd.filter(b=>h.includes(b)):h;return{siteInfo:r,validPagesIds:g,siteHash:a,unpublishHashes:u,siteLangs:s,defaultLang:o,headers:c,footers:p,socials:i}}Ld.default.config();var uv=process.env.API_URL,cv=process.env.GRIDDO_REACT_APP_INSTANCE||process.env.REACT_APP_INSTANCE,Nd=parseInt(process.env.GRIDDO_API_CONCURRENCY_COUNT||"10"),lv=process.env.PUBLIC_API_URL,fv=process.env.GRIDDO_RENDERID||new Date().valueOf().toString(),jd=[],io={};async function Bd(t,e){console.info(`API calls with ${Nd} threads`);try{let{sitesToPublish:r,sitesToUnpublish:n}=await Md(e);await bs.getAll(),r.length||n.length||(console.warn("There are no sites to update"),process.exit(0)),console.info(`Sites to publish: ${ps(r)}`),console.info(`Sites to unpublish: ${ps(n)}`),await qd(n);for(let i of r){let{id:s,slug:o,theme:a,favicon:u,changedPages:h=[],pages:c=[]}=i,{siteInfo:p,validPagesIds:g,siteHash:m,unpublishHashes:b,siteLangs:x,defaultLang:S,headers:F,footers:L,socials:B}=await Td(s),{cloudinaryName:G,useMetaTitle:Y,useMetaKeywords:ye,showBasicMetaRobots:De,avoidHrefLangsOnCanonicals:Q,avoidSelfReferenceCanonicals:D,avoidHrefLangXDefault:q,avoidDebugMetas:k}=bs.settings;io[s]={siteHash:m,unpublishHashes:b,publishHashes:[]};let X=new _n;X.navigations={headers:F,footers:L},i.languages=x;let I=Il(s,m),U=p.siteScript,O={siteUrl:p.slug,title:p.name,favicon:u},j={baseUrl:uv,publicBaseUrl:lv,instance:cv,siteSlug:o,theme:a,siteMetadata:O,socials:B,siteLangs:x,cloudinaryName:G,griddoVersion:Nf,siteOptions:{useMetaTitle:Y,useMetaKeywords:ye,showBasicMetaRobots:De,avoidHrefLangsOnCanonicals:Q,avoidSelfReferenceCanonicals:D,avoidHrefLangXDefault:q,avoidDebugMetas:k},siteScript:U};qt(`${i.name} site`);let M=async re=>{let l=[],d=await ge.getPage(re,I);if(!d)return;jd.push(re);let f=JSON.parse(JSON.stringify(j));f.navigations=X.getPageNavigations(d);let v=await wn.getDistributorData({page:d,cacheKey:fv}),_=await od(v),w=d?.mode==="list",T=!w&&_,$=!T&&!w;if(w){let N={page:d,pages:ad(v),isRoot:!1,defaultLang:S,template:v,totalQueriedItems:v.queriedItems};l=await id(N,f)}if(T){let N=d;N.template=v,N.multiPageElements=_,N.defaultLang=S,l=await sd(N,f)}if($){let N=d;N.template=v,N.defaultLang=S,l=[await nd(N,f)]}d.hash!==null&&io[s].publishHashes.push(d.hash),Yf(t,l)},{pagesInStore:E,pagesMissingInStore:A,pagesToDeleteFromStore:Oe,pagesToWriteToStore:ke}=await Qf(t,{sitesToPublish:r,pages:c,validPagesIds:g,changedPages:h});Kf(t,Oe);let ae=`Store: ${E.length} -> ${E}
|
|
56
56
|
ValidPages: ${g.length} -> ${g}
|
|
57
57
|
Changed: ${h.length} -> ${h}
|
|
58
58
|
Deleted/Unpublished: ${Oe.length} -> ${Oe}
|
package/build/index.js
CHANGED
|
@@ -25,7 +25,7 @@ GFS4: `),console.error(t)});z[oe]||(gu=global[oe]||[],vu(z,gu),z.close=function(
|
|
|
25
25
|
\u2502 Access credentials failure \u2502
|
|
26
26
|
\u2502 Check that the login details are correct in your .env file \u2502
|
|
27
27
|
\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F
|
|
28
|
-
`)),process.exit(1)}}},Ft=new Gi;var yd=N($i()),vd=N(ir()),bd=N(ze());var yf=N(require("node:crypto")),gt=N(require("node:fs")),lo=N(require("node:path")),fo=N($t()),wn=lo.default.resolve(__dirname,"./../apiCache"),vf=`${wn}/siteHash.json`;function bf(){gt.default.existsSync(wn)||gt.default.mkdirSync(wn),console.info("Cache initialized")}function wf(t){let e=yf.default.createHash("sha256");return e.update(JSON.stringify(t)),`${wn}/${e.digest("hex")}`}function _f(t,e){let r=typeof e=="string"?e:JSON.stringify(e),n=wf(t),i=lo.default.dirname(n);gt.default.existsSync(i)||gt.default.mkdirSync(i,{recursive:!0}),gt.default.writeFileSync(n,r,"utf8")}function xf(t){try{let e=wf(t);return fo.default.readJSONSync(e,{encoding:"utf-8"})}catch{return null}}function Zg(){try{return fo.default.readJSONSync(vf,{encoding:"utf-8"})||{}}catch{return{}}}function Sf(t,e){let r=Zg(),n=r[t],i=e||n||new Date().valueOf();return i!==n&&(r[t]=i,gt.default.writeFileSync(vf,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}var Do=N(ir()),fd=N(ze()),Ve=N($t()),dd=N(ld()),Oo=N(Fr());var On="10.4.
|
|
28
|
+
`)),process.exit(1)}}},Ft=new Gi;var yd=N($i()),vd=N(ir()),bd=N(ze());var yf=N(require("node:crypto")),gt=N(require("node:fs")),lo=N(require("node:path")),fo=N($t()),wn=lo.default.resolve(__dirname,"./../apiCache"),vf=`${wn}/siteHash.json`;function bf(){gt.default.existsSync(wn)||gt.default.mkdirSync(wn),console.info("Cache initialized")}function wf(t){let e=yf.default.createHash("sha256");return e.update(JSON.stringify(t)),`${wn}/${e.digest("hex")}`}function _f(t,e){let r=typeof e=="string"?e:JSON.stringify(e),n=wf(t),i=lo.default.dirname(n);gt.default.existsSync(i)||gt.default.mkdirSync(i,{recursive:!0}),gt.default.writeFileSync(n,r,"utf8")}function xf(t){try{let e=wf(t);return fo.default.readJSONSync(e,{encoding:"utf-8"})}catch{return null}}function Zg(){try{return fo.default.readJSONSync(vf,{encoding:"utf-8"})||{}}catch{return{}}}function Sf(t,e){let r=Zg(),n=r[t],i=e||n||new Date().valueOf();return i!==n&&(r[t]=i,gt.default.writeFileSync(vf,JSON.stringify(r),{encoding:"utf-8"})),i.toString()}var Do=N(ir()),fd=N(ze()),Ve=N($t()),dd=N(ld()),Oo=N(Fr());var On="10.4.4";fd.default.config();var nw=!!process.env.GRIDDO_DEBUG_LOGS&&!!JSON.parse(process.env.GRIDDO_DEBUG_LOGS),Py=!!process.env.GRIDDO_BUILD_LOGS&&!!JSON.parse(process.env.GRIDDO_BUILD_LOGS)||!!process.env.LOGS&&!!JSON.parse(process.env.LOGS),An=Oo.default.sync(__dirname),In=Oo.default.sync();function hd(t){let e=[];return Ve.default.readdirSync(t).forEach(n=>{let i=`${t}/${n}`;e.push(i)}),e}function it(t,e="",r=1,n=1){let i=t.split(`
|
|
29
29
|
`).map(b=>b.trim()),o=e?` ${e} `:"",s=e?o.length:0,a=Math.max(...i.map(b=>b.length))+r*2,c=Math.max(a,s),h=`\u2502${" ".repeat(c)}\u2502
|
|
30
30
|
`.repeat(n),u=c,p=`\u256D${o}${"\u2500".repeat(u-s)}\u256E
|
|
31
31
|
`,g=`\u2570${"\u2500".repeat(u)}\u256F`,m=i.map(b=>{let E=" ".repeat(c-b.length-r);return`\u2502${" ".repeat(r)}${b}${E}\u2502
|
|
@@ -60,7 +60,7 @@ ${p}
|
|
|
60
60
|
${g}
|
|
61
61
|
|
|
62
62
|
=============
|
|
63
|
-
`))}var Ay=process.env.API_URL,Iy={GET_ALL:`${Ay}/domains`},Rn=class{static async getAll(){let{GET_ALL:e}=Iy;return await Fe({endpoint:e})}};async function qo(){await Ft.login();let t=await Rn.getAll();return Ry(t)}function Ry(t){let e=t.filter(({slug:r})=>!!r).map(({slug:r})=>r.replace("/",""));return[...new Set(e)]}var Ds=N(require("node:path"));var ot=N(require("node:fs")),wd=N(require("node:fs/promises")),Oe=N(require("node:path")),No=N($t());async function*jo(t){let e=Oe.default.resolve(t),r=hd(e).filter(n=>Oe.default.extname(n)===".json");for(let n of r)try{let i=await wd.default.stat(n),o=await No.default.readJSON(n,{encoding:"utf-8"});o.size=i.size/1024,o.path&&(yield o)}catch(i){console.error(`Error: The file ${n} doesn't exist`,i)}}function _d(t){ot.default.existsSync(t)||(ot.default.mkdirSync(t),ot.default.mkdirSync(Oe.default.resolve(t,"metadata"))),console.info("Store initialized")}function xd(t,e){ot.default.writeFileSync(Oe.default.resolve(t,"metadata","render-info.json"),JSON.stringify(e))}function Fy(t,e){return ky(t).filter(i=>e.includes(i))}function ky(t){return ot.default.readdirSync(t).filter(r=>{let n=`${t}/${r}`,i=ot.default.statSync(n);if(i&&i.isDirectory()||Oe.default.extname(r)!==".json")return!1;let o=Oe.default.basename(r,Oe.default.extname(r));return!isNaN(parseInt(o))}).map(r=>{let n=Oe.default.basename(r,Oe.default.extname(r));return parseInt(n)})}function Sd(t,e){e.forEach(r=>{Ro(r,["editorID","parentEditorID"]);let n=`${r.context.page.id}.json`,i=Oe.default.resolve(t,n);No.default.writeJSONSync(i,r)})}function Ed(t,e){e.length!==0&&e.forEach(r=>{let n=Oe.default.resolve(t,`${r}.json`);try{ot.default.unlinkSync(n)}catch(i){console.log(`Error removing file ${r}`,i.message)}})}async function Cd(t,e){let{changedPages:r,pages:n,validPagesIds:i,sitesToPublish:o}=e,s=Fy(t,n),a=i.filter(m=>!s.includes(m)),c=a.concat(r),h=s.filter(m=>!i.includes(m)),u=Array.from(new Set(c)).filter(m=>!h.includes(m)),p=jo(Oe.default.resolve(__dirname,"../store")),g=[];for await(let m of p){let b=m.context.page.site,E=m.context.page.id;o.map(C=>C.id).includes(b)||g.push(E)}return{pagesInStore:s,pagesMissingInStore:a,pagesToDeleteFromStore:[...h,...g],pagesToWriteToStore:u}}var fh=N(ze()),dh=N(ni());var Pd=N(ze());Pd.default.config();var $o=process.env.API_URL,st=`${$o}/site/`,Ke={GET_ALL:`${$o}/sites/all`,GET_PAGE:[`${$o}/page/`,""],INFO:[`${st}`,"/all"],LANGUAGES:[`${st}`,"/languages"],BUILD_START:[`${st}`,"/build/start"],BUILD_END:[`${st}`,"/build/end"],GET_DISTRIBUTOR_DATA:[`${st}`,"/distributor"],GET_SITEMAP:[`${st}`,"/sitemap"],SOCIALS:[`${st}`,"/socials"],GET_PAGES:[`${st}`,"/pages?pagination=false"]},ye=class{static async getAll(){let{GET_ALL:e}=Ke;return await Fe({endpoint:e})}static async getPage(e,r){let{GET_PAGE:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getInfo(e,r=""){let{INFO:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getLanguages(e,r=""){let{LANGUAGES:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}static async startSiteRender(e){let{BUILD_START:[r,n]}=Ke;return await Fe({endpoint:`${r}${e}${n}`})}static async endSiteRender(e,r){let{BUILD_END:[n,i]}=Ke;return await yt({endpoint:`${n}${e}${i}`,body:r})}static async getDistributorData(e,r,n,i,o){let{GET_DISTRIBUTOR_DATA:[s,a]}=Ke,c=i||e.site,h=o||e.language;return await yt({endpoint:`${s}${c}${a}`,body:r,headers:{lang:h},cacheKey:n})}static async getSitemap(e){let{GET_SITEMAP:[r,n]}=Ke;return await Fe({endpoint:`${r}${e}${n}`})}static async getSocials(e,r=""){let{SOCIALS:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}};var Fn=class{static getBody(e,r){let{order:n,sources:i,quantity:o,mode:s,fixed:a,fullRelations:c=!1,allLanguages:h=!1,preferenceLanguage:u=!1,referenceId:p}=e;return s==="auto"?{mode:s,order:n,sources:i,quantity:o,fullRelations:c,allLanguages:h,preferenceLanguage:u}:s==="manual"?{mode:s,fixed:a,fullRelations:c}:s==="navigation"?{mode:s,order:n,quantity:o,fullRelations:c,referenceId:p||r?.structuredDataContent?.id}:(console.log(`Error: Distribuidor mode: ${s} is not recognized on page ${r?.id}.`),e)}static async fetchContentTypeData(e){let{page:r,component:{data:n},cacheKey:i}=e;if(!n)return it(`Error: Page ${r.id} has \`hasDistributorData: true\` but it doesn't have a \`data\` prop`,"No data in ReferenceField"),[];if(Array.isArray(n.sources)&&n.sources.length<1)return it(`Warning: Page with id: ${r.id} has a ReferenceField with empty \`data.sources\``,"Empty data.sources in ReferenceField"),[];let{site:o,lang:s}=n,a=this.getBody(n,r);return await ye.getDistributorData(r,a,i,o,s)}static async getDistributorData({page:e,cacheKey:r=""}){try{let{template:n}=e,i=async(a,c=1)=>{if(!(!a||typeof a!="object")&&JSON.stringify(a).includes('"hasDistributorData":true'))for(let h in a){if(h==="queriedItems")continue;let p=a[h];!p||typeof p!="object"||(p.hasDistributorData&&(p.queriedItems=await this.fetchContentTypeData({page:e,cacheKey:r,component:p})),await i(p,c+1))}};return await(async a=>(await i([a]),a))(n)}catch(n){console.error(`Error en get distributor ${n}`),process.exit(1)}}};var kn=class{_defaultHeaders;_defaultFooters;_navigations;constructor(){this._navigations={footers:[],headers:[]},this._defaultHeaders={},this._defaultFooters={}}set navigations(e){this._navigations=e,this._defaultFooters=this.getDefaultFooters(),this._defaultHeaders=this.getDefaultHeaders()}get navigations(){return this._navigations}getDefaultFooters(){return[...this.navigations.footers].filter(i=>!!i.setAsDefault).reduce((i,o)=>{let{language:s}=o;return{...i,[s]:o}},{})}getDefaultHeaders(){return[...this.navigations.headers].filter(i=>!!i.setAsDefault).reduce((i,o)=>{let{language:s}=o;return{...i,[s]:o}},{})}getRightLanguage(e,r,n){if(!e||!r)return null;let o=e.find(s=>s.language===n&&s.navigationLanguages?.find(a=>a.navigationId===r))||e.find(s=>s.id===r);return o?{...o}:null}getPageHeader(e,r){return this.getRightLanguage(this.navigations.headers,e,r)}getPageFooter(e,r){return this.getRightLanguage(this.navigations.footers,e,r)}getPageNavigations(e){let{header:r,footer:n,language:i,template:{templateType:o},templateConfig:{defaultHeader:s,defaultFooter:a,templates:c}}=e,h=b=>{let E=b.find(C=>typeof C=="number");return typeof E=="number"?E:null},u=h([r,c?.[o]?.defaultHeader,s]),p=h([n,c?.[o]?.defaultFooter,a]),g=u?this.getPageHeader(u,i):u===0?null:this._defaultHeaders[i],m=p?this.getPageFooter(p,i):p===0?null:this._defaultFooters[i];return{header:g,footer:m}}};var Lo=class{baseURL;settings;ENDPOINTS;constructor(){this.baseURL=process.env.API_URL,this.settings={cloudinaryName:"",useMetaTitle:!1,useMetaKeywords:!1,showBasicMetaRobots:!1,avoidHrefLangsOnCanonicals:!1,avoidSelfReferenceCanonicals:!1,avoidHrefLangXDefault:!1,avoidDebugMetas:!1},this.ENDPOINTS={settings:`${this.baseURL}/settings`,resetRender:`${this.baseURL}/debug/reset-render`}}async getAll(){let{settings:e}=this.ENDPOINTS,r=await Fe({endpoint:e});this.settings=r}async resetRender(){let{resetRender:e}=this.ENDPOINTS;await yt({endpoint:e})}},Bo=new Lo;var Ad=N(ze());function Uo(t,e,r,n="jpg"){let i=typeof t=="string"?t:t?.url;return i?i.split("/")[2].includes("cloudinary.com")?My(i,`c_fill,w_${e},h_${r}`):Ty(i,`f/${n}/w/${e}/h/${r}`):null}function Ty(t,e){let r=t.split("/"),n=r.slice(0,-1).join("/"),i=r.slice(-1)[0];return`${n}/${e}/${i}`}function My(t,e){let r=t.replace("https://",""),n=r.split("/").slice(0,4).join("/"),i=r.replace(n,"");return`https://${n}/${e}${i}`}Ad.default.config();var qy=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false"),Ny=25;function jy({socialTitle:t,socialDescription:e,socialImage:r}){return{type:"website",title:t,description:e,image:r?Uo(r,1280,768):"",twitterImage:r?Uo(r,1280,768):""}}function $y(t){let{title:e,metaTitle:r,metaDescription:n,canonicalURL:i,locale:o,url:s,isIndexed:a,follow:c,metasAdvanced:h,pageLanguages:u,fullUrl:p,metaKeywords:g}=t,m=h?.split(",").filter(Boolean).map(b=>b.trim().toLowerCase())||[];return{title:(r||e||"").trim(),description:n,canonical:i&&i.trim()&&i!==p?i.trim():a?p:void 0,locale:o,url:s,index:a?"index":"noindex",follow:c?"follow":"nofollow",translate:m.includes("notranslate")?"notranslate":"",metasAdvanced:m.filter(b=>b!=="notranslate").join(),pageLanguages:u,metaKeywords:g?.filter(Boolean).map(b=>b.replace(/"/g,"'")).join(", ")}}async function Ho(t,e){let{id:r,title:n,fullPath:i,language:o,breadcrumb:s,socialDescription:a,socialImage:c,socialTitle:h}=t,{baseUrl:u,cloudinaryName:p,griddoVersion:g,siteLangs:m,siteMetadata:b,siteOptions:E,siteScript:C,siteSlug:k,socials:$,theme:X,navigations:{header:G,footer:J}}=e;t.breadcrumb=s,t.siteSlug=k,t.apiUrl=u,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let ve=m.find(({id:F})=>F===t?.language)?.locale.replace(/_/g,"-"),K=$y(t),I=jy({socialDescription:a,socialImage:c,socialTitle:h}),x=qy?i.compose:`${i.domain}${i.compose}`,w=new Date().toString();return{path:x,size:void 0,context:{id:r,title:n,fullPath:i,locale:ve,languageId:o,theme:X,siteMetadata:b,pageMetadata:K,openGraph:I,socials:$,siteLangs:m,cloudinaryName:p,siteOptions:E,griddoVersion:g,renderDate:w,siteScript:C,header:G,footer:J,page:t}}}async function Id(t,e){return await Ho(t,e)}async function Rd({page:t,pages:e,isRoot:r=!1,defaultLang:n,template:i,totalQueriedItems:o},s){let a=e.map(async(c,h)=>{let u=h===0,p=h+1,{domainUrl:g,compose:m}=t.fullPath,b={...t,fullPath:{...t.fullPath,compose:Xo(m,p,{addEndingSlash:!0})},fullUrl:Xo(t.fullUrl,p,{addEndingSlash:!0}),slug:Xo(t.slug,p),title:Od(t.title,p),metaTitle:Od(t.metaTitle||"",p),disableHrefLangs:p>1,template:{...i,isFirstPage:u,pageNumber:p,totalPages:e.length,baseLink:`${g}${m}`,queriedItems:c,totalQueriedItems:o?.length},isRoot:r,defaultLang:n};return await Ho(b,s,!u)});return Promise.all(a)}function Fd(t,e){let{multiPageElements:r,...n}=t,i=JSON.parse(JSON.stringify(r));i.find(({sectionSlug:s})=>s==="/")||i.push({});let o=i.map(async s=>{let a=JSON.parse(JSON.stringify(n)),{sectionSlug:c="/",title:h="",metaTitle:u="",metaDescription:p=""}=s,g=typeof h=="string"?h:h.content,m=a.fullPath.compose||"",b=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,E=c?.replace(/\//g,""),k=c==="/"?E:E+"/",$=m.endsWith("/")?"":"/",X=`${m}${$}${k}`;return g.trim()&&(a.title=g),p.trim()&&(a.metaDescription=p),a.fullUrl=`${b}/${k}`,a.fullPath.compose=X,a.slug=X,a.template.activeSectionSlug=c,a.template.activeSectionBase=b,a.metaTitle=u.trim()||g.trim()||a.metaTitle,await Ho(a,e)});return Promise.all(o)}function kd(t){return new Promise(r=>{let n=(i,o=0)=>{if(!(!i||typeof i!="object")){for(let s in i){let a=i[s],c=a||typeof a=="object",h=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!c||!h)continue;let{component:u,hasGriddoMultiPage:p,elements:g}=a;u&&p&&r(g||[]),n(a,o+1)}o||r(null)}};n([t])})}function Ly(t,e,r){return e?.slice(t*(r-1),t*r)}function By(t,e){let r=Math.ceil(e.length/t)||1;return Array.from({length:r},(i,o)=>o+1)?.map(i=>Ly(t,e,i))}function Td(t){let e=t.queriedItems||[],r=t?.itemsPerPage||Ny;return By(r,e)}function Dd(t){return t.replace(/\/+$/,"/")}function Xo(t,e,r){let n=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?Dd(`${t}${i}`):Dd(`${t}${n}${e}${i}`)}function Od(t,e){return!t||e<=1?t:`${t} - ${e}`}var k1=N($t()),T1=N(oh());var M1=process.env.API_URL,q1=!!process.env.GRIDDO_RENDER_ALL_SITES||!!process.env.updateAllSites,Jt=process.env.GRIDDO_RENDER_SITE&&parseInt(process.env.GRIDDO_RENDER_SITE)||process.env.testSite&&parseInt(process.env.testSite),sh=(process.env.GRIDDO_RENDER_PAGES||process.env.testPage||"").split(",").map(t=>parseInt(t)).filter(Boolean),t5=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false");async function Yn(t){console.info(`API URL ${M1}`),await Ft.login();let e=await ye.getAll(),r=q1?e.filter(o=>!Jt||o.id===Jt):e.filter(o=>Jt?o.id===Jt:!!o.shouldBeUpdated);if(r.length){let o=r.map(async s=>{let a=await ye.getLanguages(s.id);return s.domains=a.items.filter(c=>c.domain&&c.domain.slug.indexOf(t)>0).map(c=>({[c.id]:`${c.domain.slug}${c.path}`}))});await Promise.all(o)}let n=r.filter(o=>Jt?o.id===Jt:!!o.isPublished&&o.domains.length>0),i=r.filter(o=>!o.isPublished&&o.shouldBeUpdated);return{sitesToPublish:n,sitesToUnpublish:i}}async function ah(t){for(let e of t){let r=await ye.startSiteRender(e.id),{siteHash:n}=r,i={siteHash:n,publishHashes:[],unpublishHashes:[]};await ye.endSiteRender(e.id,i)}}async function ch(t){let e=await ye.startSiteRender(t),r=await ye.getInfo(t),n=await ye.getLanguages(t),i=await ye.getSocials(t),o=n.items,s=o.find(b=>b.isDefault),{siteHash:a,unpublishHashes:c,publishIds:h}=e,{headers:u,footers:p}=r,g=sh.length?sh.filter(b=>h.includes(b)):h;return{siteInfo:r,validPagesIds:g,siteHash:a,unpublishHashes:c,siteLangs:o,defaultLang:s,headers:u,footers:p,socials:i}}fh.default.config();var N1=process.env.API_URL,j1=process.env.GRIDDO_REACT_APP_INSTANCE||process.env.REACT_APP_INSTANCE,uh=parseInt(process.env.GRIDDO_API_CONCURRENCY_COUNT||"10"),$1=process.env.PUBLIC_API_URL,L1=process.env.GRIDDO_RENDERID||new Date().valueOf().toString(),lh=[],Ps={};async function hh(t,e){console.info(`API calls with ${uh} threads`);try{let{sitesToPublish:r,sitesToUnpublish:n}=await Yn(e);await Bo.getAll(),r.length||n.length||(console.warn("There are no sites to update"),process.exit(0)),console.info(`Sites to publish: ${Fo(r)}`),console.info(`Sites to unpublish: ${Fo(n)}`),await ah(n);for(let i of r){let{id:o,slug:s,theme:a,favicon:c,changedPages:h=[],pages:u=[]}=i,{siteInfo:p,validPagesIds:g,siteHash:m,unpublishHashes:b,siteLangs:E,defaultLang:C,headers:k,footers:$,socials:X}=await ch(o),{cloudinaryName:G,useMetaTitle:J,useMetaKeywords:ae,showBasicMetaRobots:ve,avoidHrefLangsOnCanonicals:K,avoidSelfReferenceCanonicals:I,avoidHrefLangXDefault:x,avoidDebugMetas:w}=Bo.settings;Ps[o]={siteHash:m,unpublishHashes:b,publishHashes:[]};let R=new kn;R.navigations={headers:k,footers:$},i.languages=E;let F=Sf(o,m),U=p.siteScript,A={siteUrl:p.slug,title:p.name,favicon:c},L={baseUrl:N1,publicBaseUrl:$1,instance:j1,siteSlug:s,theme:a,siteMetadata:A,socials:X,siteLangs:E,cloudinaryName:G,griddoVersion:On,siteOptions:{useMetaTitle:J,useMetaKeywords:ae,showBasicMetaRobots:ve,avoidHrefLangsOnCanonicals:K,avoidSelfReferenceCanonicals:I,avoidHrefLangXDefault:x,avoidDebugMetas:w},siteScript:U};Xe(`${i.name} site`);let T=async re=>{let l=[],d=await ye.getPage(re,F);if(!d)return;lh.push(re);let f=JSON.parse(JSON.stringify(L));f.navigations=R.getPageNavigations(d);let v=await Fn.getDistributorData({page:d,cacheKey:L1}),S=await kd(v),_=d?.mode==="list",j=!_&&S,H=!j&&!_;if(_){let B={page:d,pages:Td(v),isRoot:!1,defaultLang:C,template:v,totalQueriedItems:v.queriedItems};l=await Rd(B,f)}if(j){let B=d;B.template=v,B.multiPageElements=S,B.defaultLang=C,l=await Fd(B,f)}if(H){let B=d;B.template=v,B.defaultLang=C,l=[await Id(B,f)]}d.hash!==null&&Ps[o].publishHashes.push(d.hash),Sd(t,l)},{pagesInStore:P,pagesMissingInStore:M,pagesToDeleteFromStore:Ae,pagesToWriteToStore:Te}=await Cd(t,{sitesToPublish:r,pages:u,validPagesIds:g,changedPages:h});Ed(t,Ae);let ce=`Store: ${P.length} -> ${P}
|
|
63
|
+
`))}var Ay=process.env.API_URL,Iy={GET_ALL:`${Ay}/domains`},Rn=class{static async getAll(){let{GET_ALL:e}=Iy;return await Fe({endpoint:e})}};async function qo(){await Ft.login();let t=await Rn.getAll();return Ry(t)}function Ry(t){let e=t.filter(({slug:r})=>!!r).map(({slug:r})=>r.replace("/",""));return[...new Set(e)]}var Ds=N(require("node:path"));var ot=N(require("node:fs")),wd=N(require("node:fs/promises")),Oe=N(require("node:path")),No=N($t());async function*jo(t){let e=Oe.default.resolve(t),r=hd(e).filter(n=>Oe.default.extname(n)===".json");for(let n of r)try{let i=await wd.default.stat(n),o=await No.default.readJSON(n,{encoding:"utf-8"});o.size=i.size/1024,o.path&&(yield o)}catch(i){console.error(`Error: The file ${n} doesn't exist`,i)}}function _d(t){ot.default.existsSync(t)||(ot.default.mkdirSync(t),ot.default.mkdirSync(Oe.default.resolve(t,"metadata"))),console.info("Store initialized")}function xd(t,e){ot.default.writeFileSync(Oe.default.resolve(t,"metadata","render-info.json"),JSON.stringify(e))}function Fy(t,e){return ky(t).filter(i=>e.includes(i))}function ky(t){return ot.default.readdirSync(t).filter(r=>{let n=`${t}/${r}`,i=ot.default.statSync(n);if(i&&i.isDirectory()||Oe.default.extname(r)!==".json")return!1;let o=Oe.default.basename(r,Oe.default.extname(r));return!isNaN(parseInt(o))}).map(r=>{let n=Oe.default.basename(r,Oe.default.extname(r));return parseInt(n)})}function Sd(t,e){e.forEach(r=>{Ro(r,["editorID","parentEditorID"]);let n=`${r.context.page.id}.json`,i=Oe.default.resolve(t,n);No.default.writeJSONSync(i,r)})}function Ed(t,e){e.length!==0&&e.forEach(r=>{let n=Oe.default.resolve(t,`${r}.json`);try{ot.default.unlinkSync(n)}catch(i){console.log(`Error removing file ${r}`,i.message)}})}async function Cd(t,e){let{changedPages:r,pages:n,validPagesIds:i,sitesToPublish:o}=e,s=Fy(t,n),a=i.filter(m=>!s.includes(m)),c=a.concat(r),h=s.filter(m=>!i.includes(m)),u=Array.from(new Set(c)).filter(m=>!h.includes(m)),p=jo(Oe.default.resolve(__dirname,"../store")),g=[];for await(let m of p){let b=m.context.page.site,E=m.context.page.id;o.map(C=>C.id).includes(b)||g.push(E)}return{pagesInStore:s,pagesMissingInStore:a,pagesToDeleteFromStore:[...h,...g],pagesToWriteToStore:u}}var fh=N(ze()),dh=N(ni());var Pd=N(ze());Pd.default.config();var $o=process.env.API_URL,st=`${$o}/site/`,Ke={GET_ALL:`${$o}/sites/all`,GET_PAGE:[`${$o}/page/`,""],INFO:[`${st}`,"/all"],LANGUAGES:[`${st}`,"/languages"],BUILD_START:[`${st}`,"/build/start"],BUILD_END:[`${st}`,"/build/end"],GET_DISTRIBUTOR_DATA:[`${st}`,"/distributor"],GET_SITEMAP:[`${st}`,"/sitemap"],SOCIALS:[`${st}`,"/socials"],GET_PAGES:[`${st}`,"/pages?pagination=false"]},ye=class{static async getAll(){let{GET_ALL:e}=Ke;return await Fe({endpoint:e})}static async getPage(e,r){let{GET_PAGE:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getInfo(e,r=""){let{INFO:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}static async getLanguages(e,r=""){let{LANGUAGES:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}static async startSiteRender(e){let{BUILD_START:[r,n]}=Ke;return await Fe({endpoint:`${r}${e}${n}`})}static async endSiteRender(e,r){let{BUILD_END:[n,i]}=Ke;return await yt({endpoint:`${n}${e}${i}`,body:r})}static async getDistributorData(e,r,n,i,o){let{GET_DISTRIBUTOR_DATA:[s,a]}=Ke,c=i||e.site,h=o||e.language;return await yt({endpoint:`${s}${c}${a}`,body:r,headers:{lang:h},cacheKey:n})}static async getSitemap(e){let{GET_SITEMAP:[r,n]}=Ke;return await Fe({endpoint:`${r}${e}${n}`})}static async getSocials(e,r=""){let{SOCIALS:[n,i]}=Ke;return await Fe({endpoint:`${n}${e}${i}`,cacheKey:r})}};var Fn=class{static getBody(e,r){let{order:n,sources:i,quantity:o,mode:s,fixed:a,fullRelations:c=!1,allLanguages:h=!1,preferenceLanguage:u=!1,referenceId:p}=e;return s==="auto"?{mode:s,order:n,sources:i,quantity:o,fullRelations:c,allLanguages:h,preferenceLanguage:u}:s==="manual"?{mode:s,fixed:a,fullRelations:c}:s==="navigation"?{mode:s,order:n,quantity:o,fullRelations:c,referenceId:p||r?.structuredDataContent?.id}:(console.log(`Error: Distribuidor mode: ${s} is not recognized on page ${r?.id}.`),e)}static async fetchContentTypeData(e){let{page:r,component:{data:n},cacheKey:i}=e;if(!n)return it(`Error: Page ${r.id} has \`hasDistributorData: true\` but it doesn't have a \`data\` prop`,"No data in ReferenceField"),[];if(Array.isArray(n.sources)&&n.sources.length<1)return it(`Warning: Page with id: ${r.id} has a ReferenceField with empty \`data.sources\``,"Empty data.sources in ReferenceField"),[];let{site:o,lang:s}=n,a=this.getBody(n,r);return await ye.getDistributorData(r,a,i,o,s)}static async getDistributorData({page:e,cacheKey:r=""}){try{let{template:n}=e,i=async(a,c=1)=>{if(!(!a||typeof a!="object")&&JSON.stringify(a).includes('"hasDistributorData":true'))for(let h in a){if(h==="queriedItems")continue;let p=a[h];!p||typeof p!="object"||(p.hasDistributorData&&(p.queriedItems=await this.fetchContentTypeData({page:e,cacheKey:r,component:p})),await i(p,c+1))}};return await(async a=>(await i([a]),a))(n)}catch(n){console.error(`Error en get distributor ${n}`),process.exit(1)}}};var kn=class{_defaultHeaders;_defaultFooters;_navigations;constructor(){this._navigations={footers:[],headers:[]},this._defaultHeaders={},this._defaultFooters={}}set navigations(e){this._navigations=e,this._defaultFooters=this.getDefaultFooters(),this._defaultHeaders=this.getDefaultHeaders()}get navigations(){return this._navigations}getDefaultFooters(){return[...this.navigations.footers].filter(i=>!!i.setAsDefault).reduce((i,o)=>{let{language:s}=o;return{...i,[s]:o}},{})}getDefaultHeaders(){return[...this.navigations.headers].filter(i=>!!i.setAsDefault).reduce((i,o)=>{let{language:s}=o;return{...i,[s]:o}},{})}getRightLanguage(e,r,n){if(!e||!r)return null;let o=e.find(s=>s.language===n&&s.navigationLanguages?.find(a=>a.navigationId===r))||e.find(s=>s.id===r);return o?{...o}:null}getPageHeader(e,r){return this.getRightLanguage(this.navigations.headers,e,r)}getPageFooter(e,r){return this.getRightLanguage(this.navigations.footers,e,r)}getPageNavigations(e){let{header:r,footer:n,language:i,template:{templateType:o},templateConfig:{defaultHeader:s,defaultFooter:a,templates:c}}=e,h=b=>{let E=b.find(C=>typeof C=="number");return typeof E=="number"?E:null},u=h([r,c?.[o]?.defaultHeader,s]),p=h([n,c?.[o]?.defaultFooter,a]),g=u?this.getPageHeader(u,i):u===0?null:this._defaultHeaders[i],m=p?this.getPageFooter(p,i):p===0?null:this._defaultFooters[i];return{header:g,footer:m}}};var Lo=class{baseURL;settings;ENDPOINTS;constructor(){this.baseURL=process.env.API_URL,this.settings={cloudinaryName:"",useMetaTitle:!1,useMetaKeywords:!1,showBasicMetaRobots:!1,avoidHrefLangsOnCanonicals:!1,avoidSelfReferenceCanonicals:!1,avoidHrefLangXDefault:!1,avoidDebugMetas:!1},this.ENDPOINTS={settings:`${this.baseURL}/settings`,resetRender:`${this.baseURL}/debug/reset-render`}}async getAll(){let{settings:e}=this.ENDPOINTS,r=await Fe({endpoint:e});this.settings=r}async resetRender(){let{resetRender:e}=this.ENDPOINTS;await yt({endpoint:e})}},Bo=new Lo;var Ad=N(ze());function Uo(t,e,r,n="jpg"){let i=typeof t=="string"?t:t?.url;return i?i.split("/")[2].includes("cloudinary.com")?My(i,`c_fill,w_${e},h_${r}`):Ty(i,`f/${n}/w/${e}/h/${r}`):null}function Ty(t,e){let r=t.split("/"),n=r.slice(0,-1).join("/"),i=r.slice(-1)[0];return`${n}/${e}/${i}`}function My(t,e){let r=t.replace("https://",""),n=r.split("/").slice(0,4).join("/"),i=r.replace(n,"");return`https://${n}/${e}${i}`}Ad.default.config();var qy=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false"),Ny=25;function jy({socialTitle:t,socialDescription:e,socialImage:r}){return{type:"website",title:t,description:e,image:r?Uo(r,1280,768):"",twitterImage:r?Uo(r,1280,768):""}}function $y(t){let{title:e,metaTitle:r,metaDescription:n,canonicalURL:i,locale:o,url:s,isIndexed:a,follow:c,metasAdvanced:h,pageLanguages:u,fullUrl:p,metaKeywords:g}=t,m=h?.split(",").filter(Boolean).map(b=>b.trim().toLowerCase())||[];return{title:(r||e||"").trim(),description:n,canonical:i&&i.trim()&&i!==p?i.trim():a?p:void 0,locale:o,url:s,index:a?"index":"noindex",follow:c?"follow":"nofollow",translate:m.includes("notranslate")?"notranslate":"",metasAdvanced:m.filter(b=>b!=="notranslate").join(),pageLanguages:u,metaKeywords:g?.filter(Boolean).map(b=>b.replace(/"/g,"'")).join(", ")}}async function Ho(t,e){let{id:r,title:n,fullPath:i,language:o,breadcrumb:s,socialDescription:a,socialImage:c,socialTitle:h}=t,{baseUrl:u,cloudinaryName:p,griddoVersion:g,siteLangs:m,siteMetadata:b,siteOptions:E,siteScript:C,siteSlug:k,socials:$,theme:X,navigations:{header:G,footer:J}}=e;t.breadcrumb=s,t.siteSlug=k,t.apiUrl=u,t.publicApiUrl=e.publicBaseUrl,t.instance=e.instance;let ve=m.find(({id:F})=>F===t?.language)?.locale.replace(/_/g,"-"),K=$y(t),I=jy({socialDescription:a,socialImage:c,socialTitle:h}),x=qy?i.compose:`${i.domain}${i.compose}`,w=new Date().toString();return{path:x,size:void 0,context:{id:r,title:n,fullPath:i,locale:ve,languageId:o,theme:X,siteMetadata:b,pageMetadata:K,openGraph:I,socials:$,siteLangs:m,cloudinaryName:p,siteOptions:E,griddoVersion:g,renderDate:w,siteScript:C,header:G,footer:J,page:t}}}async function Id(t,e){return await Ho(t,e)}async function Rd({page:t,pages:e,isRoot:r=!1,defaultLang:n,template:i,totalQueriedItems:o},s){let a=e.map(async(c,h)=>{let u=h===0,p=h+1,{domainUrl:g,compose:m}=t.fullPath,b={...t,fullPath:{...t.fullPath,compose:Xo(m,p,{addEndingSlash:!0})},fullUrl:Xo(t.fullUrl,p,{addEndingSlash:!0}),slug:Xo(t.slug,p),title:Od(t.title,p),metaTitle:Od(t.metaTitle||"",p),disableHrefLangs:p>1,template:{...i,isFirstPage:u,pageNumber:p,totalPages:e.length,baseLink:`${g}${m}`,queriedItems:c,totalQueriedItems:o?.length},isRoot:r,defaultLang:n};return await Ho(b,s,!u)});return Promise.all(a)}function Fd(t,e){let{multiPageElements:r,...n}=t,i=JSON.parse(JSON.stringify(r));i.find(({sectionSlug:s})=>s==="/")||i.push({});let o=i.map(async s=>{let a=JSON.parse(JSON.stringify(n)),{sectionSlug:c="/",title:h="",metaTitle:u="",metaDescription:p=""}=s,g=typeof h=="string"?h:h.content,m=a.fullPath.compose||"",b=a.fullUrl.endsWith("/")?a.fullUrl.slice(0,-1):a.fullUrl,E=c?.replace(/\//g,""),k=c==="/"?E:E+"/",$=m.endsWith("/")?"":"/",X=`${m}${$}${k}`;return g.trim()&&(a.title=g),p.trim()&&(a.metaDescription=p),a.fullUrl=`${b}/${k}`,a.fullPath.compose=X,a.slug=X,a.template.activeSectionSlug=c,a.template.activeSectionBase=b,a.metaTitle=u.trim()||g.trim()||a.metaTitle,await Ho(a,e)});return Promise.all(o)}function kd(t){return new Promise(r=>{let n=(i,o=0)=>{if(!(!i||typeof i!="object")){for(let s in i){let a=i[s],c=a||typeof a=="object",h=JSON.stringify(a).includes('"hasGriddoMultiPage":true');if(!c||!h)continue;let{component:u,hasGriddoMultiPage:p,elements:g}=a;u&&p&&r(g||[]),n(a,o+1)}o||r(null)}};n([t])})}function Ly(t,e,r){return e?.slice(t*(r-1),t*r)}function By(t,e){let r=Math.ceil(e.length/t)||1;return Array.from({length:r},(i,o)=>o+1)?.map(i=>Ly(t,e,i))}function Td(t){let e=t.queriedItems||[],r=t?.itemsPerPage||Ny;return By(r,e)}function Dd(t){return t.replace(/\/+$/,"/")}function Xo(t,e,r){let n=t.endsWith("/")?"":"/",i=r?.addEndingSlash?"/":"";return e<=1?Dd(`${t}${i}`):Dd(`${t}${n}${e}${i}`)}function Od(t,e){return!t||e<=1?t:`${t} - ${e}`}var k1=N($t()),T1=N(oh());var M1=process.env.API_URL,q1=!!process.env.GRIDDO_RENDER_ALL_SITES||!!process.env.updateAllSites,Jt=process.env.GRIDDO_RENDER_SITE&&parseInt(process.env.GRIDDO_RENDER_SITE)||process.env.testSite&&parseInt(process.env.testSite),sh=(process.env.GRIDDO_RENDER_PAGES||process.env.testPage||"").split(",").map(t=>parseInt(t)).filter(Boolean),t5=JSON.parse(process.env.GRIDDO_EXPORT_STRIP_DOMAIN_FROM_PATH||"false");async function Yn(t){console.info(`API URL ${M1}`),await Ft.login();let e=await ye.getAll(),r=q1?e.filter(o=>!Jt||o.id===Jt):e.filter(o=>Jt?o.id===Jt:!!o.shouldBeUpdated);if(r.length)for(let o of r){let{items:s}=await ye.getLanguages(o.id);o.domains=s.filter(a=>a.domain&&(a.domain.slug===t||a.domain.slug===`/${t}`)).map(a=>({[a.id]:`${a.domain.slug}${a.path}`}))}let n=r.filter(o=>Jt?o.id===Jt:!!o.isPublished&&o.domains.length>0),i=r.filter(o=>!o.isPublished&&o.shouldBeUpdated);return{sitesToPublish:n,sitesToUnpublish:i}}async function ah(t){for(let e of t){let r=await ye.startSiteRender(e.id),{siteHash:n}=r,i={siteHash:n,publishHashes:[],unpublishHashes:[]};await ye.endSiteRender(e.id,i)}}async function ch(t){let e=await ye.startSiteRender(t),r=await ye.getInfo(t),n=await ye.getLanguages(t),i=await ye.getSocials(t),o=n.items,s=o.find(b=>b.isDefault),{siteHash:a,unpublishHashes:c,publishIds:h}=e,{headers:u,footers:p}=r,g=sh.length?sh.filter(b=>h.includes(b)):h;return{siteInfo:r,validPagesIds:g,siteHash:a,unpublishHashes:c,siteLangs:o,defaultLang:s,headers:u,footers:p,socials:i}}fh.default.config();var N1=process.env.API_URL,j1=process.env.GRIDDO_REACT_APP_INSTANCE||process.env.REACT_APP_INSTANCE,uh=parseInt(process.env.GRIDDO_API_CONCURRENCY_COUNT||"10"),$1=process.env.PUBLIC_API_URL,L1=process.env.GRIDDO_RENDERID||new Date().valueOf().toString(),lh=[],Ps={};async function hh(t,e){console.info(`API calls with ${uh} threads`);try{let{sitesToPublish:r,sitesToUnpublish:n}=await Yn(e);await Bo.getAll(),r.length||n.length||(console.warn("There are no sites to update"),process.exit(0)),console.info(`Sites to publish: ${Fo(r)}`),console.info(`Sites to unpublish: ${Fo(n)}`),await ah(n);for(let i of r){let{id:o,slug:s,theme:a,favicon:c,changedPages:h=[],pages:u=[]}=i,{siteInfo:p,validPagesIds:g,siteHash:m,unpublishHashes:b,siteLangs:E,defaultLang:C,headers:k,footers:$,socials:X}=await ch(o),{cloudinaryName:G,useMetaTitle:J,useMetaKeywords:ae,showBasicMetaRobots:ve,avoidHrefLangsOnCanonicals:K,avoidSelfReferenceCanonicals:I,avoidHrefLangXDefault:x,avoidDebugMetas:w}=Bo.settings;Ps[o]={siteHash:m,unpublishHashes:b,publishHashes:[]};let R=new kn;R.navigations={headers:k,footers:$},i.languages=E;let F=Sf(o,m),U=p.siteScript,A={siteUrl:p.slug,title:p.name,favicon:c},L={baseUrl:N1,publicBaseUrl:$1,instance:j1,siteSlug:s,theme:a,siteMetadata:A,socials:X,siteLangs:E,cloudinaryName:G,griddoVersion:On,siteOptions:{useMetaTitle:J,useMetaKeywords:ae,showBasicMetaRobots:ve,avoidHrefLangsOnCanonicals:K,avoidSelfReferenceCanonicals:I,avoidHrefLangXDefault:x,avoidDebugMetas:w},siteScript:U};Xe(`${i.name} site`);let T=async re=>{let l=[],d=await ye.getPage(re,F);if(!d)return;lh.push(re);let f=JSON.parse(JSON.stringify(L));f.navigations=R.getPageNavigations(d);let v=await Fn.getDistributorData({page:d,cacheKey:L1}),S=await kd(v),_=d?.mode==="list",j=!_&&S,H=!j&&!_;if(_){let B={page:d,pages:Td(v),isRoot:!1,defaultLang:C,template:v,totalQueriedItems:v.queriedItems};l=await Rd(B,f)}if(j){let B=d;B.template=v,B.multiPageElements=S,B.defaultLang=C,l=await Fd(B,f)}if(H){let B=d;B.template=v,B.defaultLang=C,l=[await Id(B,f)]}d.hash!==null&&Ps[o].publishHashes.push(d.hash),Sd(t,l)},{pagesInStore:P,pagesMissingInStore:M,pagesToDeleteFromStore:Ae,pagesToWriteToStore:Te}=await Cd(t,{sitesToPublish:r,pages:u,validPagesIds:g,changedPages:h});Ed(t,Ae);let ce=`Store: ${P.length} -> ${P}
|
|
64
64
|
ValidPages: ${g.length} -> ${g}
|
|
65
65
|
Changed: ${h.length} -> ${h}
|
|
66
66
|
Deleted/Unpublished: ${Ae.length} -> ${Ae}
|
package/exporter/utils/sites.ts
CHANGED
|
@@ -56,15 +56,18 @@ async function checkSites(domain: string) {
|
|
|
56
56
|
|
|
57
57
|
// If there are valid sites...
|
|
58
58
|
if (validSites.length) {
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
for (const site of validSites) {
|
|
60
|
+
const { items } = await SitesService.getLanguages(site.id);
|
|
61
|
+
|
|
62
|
+
// Añadimos la prop domains con el dominio "cocinado" con los idiomas y teniendo en cuenta solo el dominio actual
|
|
63
|
+
site.domains = items
|
|
64
|
+
.filter(
|
|
65
|
+
(item) =>
|
|
66
|
+
item.domain &&
|
|
67
|
+
(item.domain.slug === domain || item.domain.slug === `/${domain}`)
|
|
68
|
+
)
|
|
69
|
+
.map((item) => ({ [item.id]: `${item.domain.slug}${item.path}` }));
|
|
70
|
+
}
|
|
68
71
|
}
|
|
69
72
|
|
|
70
73
|
// Save sites object to publish
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@griddo/cx",
|
|
3
3
|
"description": "Griddo SSG based on Gatsby",
|
|
4
|
-
"version": "10.4.
|
|
4
|
+
"version": "10.4.4",
|
|
5
5
|
"authors": [
|
|
6
6
|
"Álvaro Sánchez' <alvaro.sanches@secuoyas.com>",
|
|
7
7
|
"Diego M. Béjar <diego.bejar@secuoyas.com>",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"react-helmet": "^6.0.0"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
-
"@griddo/eslint-config-back": "^10.4.
|
|
73
|
+
"@griddo/eslint-config-back": "^10.4.4",
|
|
74
74
|
"@types/babel__core": "^7.20.0",
|
|
75
75
|
"@types/babel__preset-env": "^7.9.2",
|
|
76
76
|
"@types/csvtojson": "^2.0.0",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"publishConfig": {
|
|
118
118
|
"access": "public"
|
|
119
119
|
},
|
|
120
|
-
"gitHead": "
|
|
120
|
+
"gitHead": "1177d9b185f1b8768e69600651b07fb028d14b47"
|
|
121
121
|
}
|