@griddo/cx 11.10.3 → 11.10.4-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/prepare-domains-render.js +4 -4
- package/build/commands/prepare-domains-render.js.map +2 -2
- package/build/commands/start-render.js +11 -11
- package/build/commands/start-render.js.map +3 -3
- package/exporter/ssg-adapters/gatsby/shared/sync-render.ts +2 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Me=Object.create;var ee=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var qe=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ve(r))!We.call(e,n)&&n!==t&&ee(e,n,{get:()=>r[n],enumerable:!(o=He(r,n))||o.enumerable});return e};var
|
|
1
|
+
"use strict";var Me=Object.create;var ee=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var qe=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ve(r))!We.call(e,n)&&n!==t&&ee(e,n,{get:()=>r[n],enumerable:!(o=He(r,n))||o.enumerable});return e};var f=(e,r,t)=>(t=e!=null?Me(Je(e)):{},qe(r||!e||!e.__esModule?ee(t,"default",{value:e,enumerable:!0}):t,e));var z=require("node:child_process"),Q=f(require("node:fs/promises")),S=f(require("node:path"));var re="11.10.4-rc.1";var te={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 oe={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."},ne={error:"NoDomainsFoundError",message:"No domains were found in this instance. The process cannot continue.",expected:"This may happen if the API is not functioning, or the site is not properly configured, or the domains are not registered.",hint:"You can contact the instance administrator."},ie={error:"NoJSConfigFileFound",message:"Could not find jsconfig.json or tsconfig.json",expected:"This can happen if the instance is not properly configured with a jsconfig.json or tsconfig.json file."};var se={error:"CheckHealthError",message:"There was a problem with environment vars configuration.",expected:"Some of the required environment variables are not set correctly or are missing",hint:"Are the environment variables correctly set?"};var Ye="\x1B[0m",ae={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"},m={};for(let e in ae){let r=e;m[r]=t=>`${ae[r]}${t}${Ye}`}var A={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var W=f(require("node:fs/promises")),U=f(require("node:path"));var V=f(require("node:path"));var ce=f(require("node:fs")),de=f(require("node:fs/promises")),g=f(require("node:path")),H=f(require("node:process")),pe=require("node:url"),G=e=>e instanceof URL?(0,pe.fileURLToPath)(e):e;async function me(e,r={}){let{cwd:t=H.default.cwd(),type:o="file",stopAt:n}=r,i=g.default.resolve(G(t)??""),{root:a}=g.default.parse(i),c=n?g.default.resolve(i,G(n)):a,d=g.default.isAbsolute(e);for(;;){let l=d?e:g.default.join(i,e);try{let y=await de.default.stat(l);if(o==="file"&&y.isFile()||o==="directory"&&y.isDirectory())return l}catch{}if(i===c||i===a)break;i=g.default.dirname(i)}}function x(e,r={}){let{cwd:t=H.default.cwd(),type:o="file",stopAt:n}=r,i=g.default.resolve(G(t)??""),{root:a}=g.default.parse(i),c=n?g.default.resolve(i,G(n)):a,d=g.default.isAbsolute(e);for(;;){let l=d?e:g.default.join(i,e);try{let y=ce.default.statSync(l,{throwIfNoEntry:!1});if(o==="file"&&y?.isFile()||o==="directory"&&y?.isDirectory())return l}catch{}if(i===c||i===a)break;i=g.default.dirname(i)}}async function J(e){let{cwd:r}=e||{},t=await me("package.json",{cwd:r});return t&&V.default.dirname(t)}function v(e){let{cwd:r}=e||{},t=x("package.json",{cwd:r});return t&&V.default.dirname(t)}var{env:p}=process;function b(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 Lr=p.GRIDDO_API_URL||p.API_URL,Nr=p.GRIDDO_PUBLIC_API_URL||p.PUBLIC_API_URL,fe=p.botEmail||p.GRIDDO_BOT_USER,le=p.botPassword||p.GRIDDO_BOT_PASSWORD,kr=Number.parseInt(p.GRIDDO_API_CONCURRENCY_COUNT||"10"),ue=b(p.GRIDDO_SKIP_BUILD_CHECKS),j=b(p.GRIDDO_BUILD_LOGS),ge=Number.parseInt(p.GRIDDO_BUILD_LOGS_BUFFER_SIZE||"500"),Fr=b(p.GRIDDO_SSG_VERBOSE_LOGS),Gr=b(p.GRIDDO_SEARCH_FEATURE),jr=p.GRIDDO_ASSET_PREFIX||p.ASSET_PREFIX,Ur=p.GRIDDO_REACT_APP_INSTANCE||p.REACT_APP_INSTANCE,Mr=b(p.GRIDDO_AI_EMBEDDINGS),he=b(p.GRIDDO_VERBOSE_LOGS),Hr=b(p.GRIDDO_USE_DIST_BACKUP),Vr=b(p.GRIDDO_SSG_BUNDLE_ANALYZER);var s=class e{constructor(){}static verbose(...r){he&&console.log(m.yellow("verbose"),m.dim(r.join(" ")))}static build(...r){j&&e.log(...r)}static info(...r){console.log(`${m.blue("info")} ${r.join(" ")}`)}static success(...r){console.log(`${m.green("success")} ${r.join(" ")}`)}static error(...r){console.error(`${m.red("error")} ${r.join(" ")}`)}static warn(...r){console.warn(`${m.yellow("warn")} ${r.join(" ")}`)}static log(...r){console.log(...r)}};var Xe=v({cwd:U.default.resolve(__dirname,"../../..")})||"",Ze=U.default.join(Xe,".griddo/cache"),ye=U.default.join(Ze,"db.json");async function R(e=""){let r=e||ye;try{return JSON.parse(await W.default.readFile(r,"utf-8"))}catch(t){throw s.error(`Failed to read DB file at ${r}:`,t),t}}async function $(e,r=""){let t=r||ye;try{await W.default.writeFile(t,JSON.stringify(e,null," "))}catch(o){throw s.error(`Failed to write DB file at ${t}:`,o),o}}var q=f(require("node:fs/promises"));async function De(e){for(let r of e)try{await q.default.rm(r,{recursive:!0,force:!0}),s.verbose(`artifact removed: ${r}`)}catch(t){h(te,t)}}async function w(e){try{return await q.default.access(e),!0}catch{return!1}}var C=class extends Error{constructor(r){super(r instanceof Error?r.message:String(r)),this.name="InternalCXError",this.stack=r instanceof Error?r.stack:""}};function h(e,r){let{error:t,message:o,expected:n,hint:i}=e,a=s.log(m.red(`[ ${t} ]`)),c=[n,i].filter(Boolean).join(`
|
|
2
2
|
`);throw s.log(`
|
|
3
3
|
${a}
|
|
4
4
|
${o}
|
|
@@ -14,9 +14,9 @@ ${i.map(a=>` ${a}`).join(`
|
|
|
14
14
|
`)}`)}let n=Re.map(({key:i,expected:a,description:c})=>{let d=c?` # ${c}`:"";return` ${i}="${a}"${d}`}).join(`
|
|
15
15
|
`);s.error("Environment health check failed:"),s.log(`${o.join(`
|
|
16
16
|
`)}`),s.warn(`
|
|
17
|
-
Required environment variables:`),s.error(n),h(se)}var K=
|
|
17
|
+
Required environment variables:`),s.error(n),h(se)}var K=f(require("node:path"));var ir=__dirname.includes("node_modules"),bt=ar();function O(e=""){return ir?K.default.resolve(v({cwd:__dirname}),"../../../",e):K.default.resolve(v({cwd:__dirname}),"../griddo-components",e)}function sr(){let e=x("jsconfig.json",{cwd:O()});return x("tsconfig.json",{cwd:O()})||e}function ar(){let e=require(sr());return e||h(ie),Object.keys(e.compilerOptions?.paths).reduce((r,t)=>{let[o]=t.split("/"),[n]=e.compilerOptions.paths[t],[i]=n.split("/*"),a=O(i);return{...r,[o]:a}},{"@griddo-instance":`${O()}/src/index.js`})}var E=process.env.GRIDDO_API_URL,cr=process.env.GRIDDO_PUBLIC_API_URL,_t=`${E}/ai/embeddings`,It=`${cr}/alert`,we=`${E}/domains`,be=`${E}/sites/all`,dr=`${E}/page`,Se=`${E}/login_check`,At=`${E}/debug/reset-render`,Pt=`${E}/domains/robots`,$t=`${E}/search`,Ot=`${E}/settings`,pr=`${E}/site/`;var _e=[pr,"/languages"];var Y=class{headers;async login(){try{let r=await fetch(Se,{method:"POST",headers:{"Content-Type":"application/json",Connection:"close"},body:JSON.stringify({username:fe,password:le})});if(!r.ok)throw new Error("Error while login in the API");let{token:t}=await r.json();return this.headers={Authorization:`bearer ${t}`,"Cache-Control":"no-store"},this.headers}catch(r){h(oe,r)}}},B=new Y;var Ce=f(require("node:crypto")),M=f(require("node:fs/promises")),Z=f(require("node:path"));var Ae=f(require("node:fs/promises"));var T=[],Ie=null,L=null,mr=ge;var fr=!j;function X(e){fr||(T.push(e.toString()),T.length>=mr&&lr().catch(r=>{s.error("Background log flush failed:",r)}))}async function lr(){if(L&&await L,T.length===0||!Ie)return;L=(async()=>{let r=[...T];T.length=0;try{await Ae.default.appendFile(Ie,`${r.join(`
|
|
18
18
|
`)}
|
|
19
|
-
`)}catch(t){T.unshift(...r),s.error("Error flushing logs:",t)}})();try{await L}finally{L=null}}var Pe=require("node:child_process"),$e=
|
|
19
|
+
`)}catch(t){T.unshift(...r),s.error("Error flushing logs:",t)}})();try{await L}finally{L=null}}var Pe=require("node:child_process"),$e=f(require("node:fs/promises")),P=f(require("node:path"));async function Oe(e){let{domain:r,shouldBeRendered:t}=e,o=await R(),{__cache:n,__exports:i}=await N({domain:r}),a=!await w(P.default.join(i)),c=o.domains[r]?.isRendering,d=await ur(n);return a?{renderMode:A.FROM_SCRATCH,reason:"missing exports directory"}:c?{renderMode:A.FROM_SCRATCH,reason:"error in previous render"}:d?{renderMode:A.FROM_SCRATCH,reason:"new commit hash"}:t?{renderMode:A.INCREMENTAL,reason:"has changes"}:{renderMode:A.IDLE,reason:"no activity"}}async function ur(e){let r=P.default.join(e,"commit"),t=(0,Pe.execSync)("git rev-parse HEAD").toString().trim();return await w(r)?(await $e.default.readFile(r,"utf-8")).trim()!==t:!0}async function N(e){let{domain:r,dbFilePath:t}=e||{},n=(await R(t)).paths;return{__root:n.root,__cache:P.default.join(n.cxCache,r||""),__components:n.components,__cx:n.cx,__sites:n.exportsDir,__exports:P.default.join(n.exportsDir,r||""),__exports_backup:P.default.join(n.exportsDirBackup,r||""),__ssg:n.ssg,__exports_dist:P.default.join(n.exportsDir,r||"","dist")}}var{env:gr}=process,{RETRY_WAIT_SECONDS:hr="4",RETRY_ATTEMPTS:Te="4"}=gr;async function Be(e,r,t=""){let{endpoint:o,body:n,cacheKey:i="",attempt:a=1,headers:c,useApiCacheDir:d=!0,logToFile:l=!0}=e,y={endpoint:o,body:n,headers:c,cacheKey:i};if(i&&d){let _=new Date,u=await Er(y);if(u){if(l){let D=xe(u),I=D?`site: ${D}`:"",F=ve(Date.now()-_.getTime());X(`${r} (cache) ${I} ${o} - ${F}s ${t}`)}return u}}try{let _=new Date,u={method:r.toUpperCase(),headers:Object.assign({},c,B.headers)};r.toLowerCase()!=="get"&&n&&(u.body=JSON.stringify(n),u.headers||(u.headers={}),u.headers["Content-Type"]="application/json");let D=await fetch(o,u);if(!D.ok){if(D.status===404)return null;throw new Error(`HTTP ${D.status}: ${D.statusText}`)}let I=await D.json();if(l){let F=xe(I),je=F?`site: ${F}`:"",Ue=ve(Date.now()-_.getTime());X(`${r} (fetch) ${je} ${o} - ${Ue}s ${t}`)}return d&&await Rr(y,I),I}catch(_){let u=_;if(a>parseInt(Te))throw s.log(`
|
|
20
20
|
Max attempts ${Te} reached
|
|
21
21
|
--------------------------------------
|
|
22
22
|
- ${r.toUpperCase()} ${o}
|
|
@@ -36,5 +36,5 @@ ${a}
|
|
|
36
36
|
${c}
|
|
37
37
|
|
|
38
38
|
=============
|
|
39
|
-
`))}function xe(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return"site"in e&&e.site?e.site:void 0}function Dr(e){return new Promise(r=>setTimeout(r,e))}function ve(e,r=3){return Number.parseFloat((e/1e3).toFixed(r))}async function Le(e){let{__root:r}=await N(),t=Z.default.join(r,"apiCache"),o=Ce.default.createHash("sha256");return o.update(JSON.stringify(e)),`${t}/${o.digest("hex")}`}async function Rr(e,r){let t=typeof r=="string"?r:JSON.stringify(r),o=await Le(e),n=Z.default.dirname(o);await w(n)||await M.default.mkdir(n,{recursive:!0}),await M.default.writeFile(o,t,"utf8")}async function Er(e){try{let r=await Le(e),t=await M.default.readFile(r,"utf8");return JSON.parse(t)}catch{return null}}async function Ne(){let e=await k({endpoint:we,useApiCacheDir:!1});e.length||h(ne),s.verbose(`getting domains names (${e.length})`);let r=e.filter(({slug:t})=>!!t).map(({slug:t})=>t.replace("/",""));return[...new Set(r)]}async function ke(e){return k({endpoint:`${be}?domainSlug=${e}`})}async function Fe(e,r=""){let[t,o]=_e;return k({endpoint:`${t}${e}${o}`,cacheKey:r})}async function Ge(e){let r=await ke(e);if(r.length)for(let n of r){let{items:i}=await Fe(n.id);n.domains=i.filter(a=>a.domain&&(a.domain.slug===e||a.domain.slug===`/${e}`)).map(a=>({[a.id]:`${a.domain.slug}${a.path}`}))}let t=r.filter(n=>!!n.isPublished),o=r.filter(n=>!n.isPublished&&n.shouldBeUpdated);return{sitesToPublish:t,sitesToUnpublish:o}}async function wr(e){return await Promise.all(e.map(async t=>{let{sitesToPublish:o,sitesToUnpublish:n}=await Ge(t),i=[...o,...n];if(i.length<1)return s.warn(`No sites to publish or unpublish for domain: ${t}`),{domain:t,totalPendingPages:0};let a=[];for(let d of i){let{offlinePending:
|
|
39
|
+
`))}function xe(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return"site"in e&&e.site?e.site:void 0}function Dr(e){return new Promise(r=>setTimeout(r,e))}function ve(e,r=3){return Number.parseFloat((e/1e3).toFixed(r))}async function Le(e){let{__root:r}=await N(),t=Z.default.join(r,"apiCache"),o=Ce.default.createHash("sha256");return o.update(JSON.stringify(e)),`${t}/${o.digest("hex")}`}async function Rr(e,r){let t=typeof r=="string"?r:JSON.stringify(r),o=await Le(e),n=Z.default.dirname(o);await w(n)||await M.default.mkdir(n,{recursive:!0}),await M.default.writeFile(o,t,"utf8")}async function Er(e){try{let r=await Le(e),t=await M.default.readFile(r,"utf8");return JSON.parse(t)}catch{return null}}async function Ne(){let e=await k({endpoint:we,useApiCacheDir:!1});e.length||h(ne),s.verbose(`getting domains names (${e.length})`);let r=e.filter(({slug:t})=>!!t).map(({slug:t})=>t.replace("/",""));return[...new Set(r)]}async function ke(e){return k({endpoint:`${be}?domainSlug=${e}`})}async function Fe(e,r=""){let[t,o]=_e;return k({endpoint:`${t}${e}${o}`,cacheKey:r})}async function Ge(e){let r=await ke(e);if(r.length)for(let n of r){let{items:i}=await Fe(n.id);n.domains=i.filter(a=>a.domain&&(a.domain.slug===e||a.domain.slug===`/${e}`)).map(a=>({[a.id]:`${a.domain.slug}${a.path}`}))}let t=r.filter(n=>!!n.isPublished),o=r.filter(n=>!n.isPublished&&n.shouldBeUpdated);return{sitesToPublish:t,sitesToUnpublish:o}}async function wr(e){return await Promise.all(e.map(async t=>{let{sitesToPublish:o,sitesToUnpublish:n}=await Ge(t),i=[...o,...n];if(i.length<1)return s.warn(`No sites to publish or unpublish for domain: ${t}`),{domain:t,totalPendingPages:0};let a=[];for(let d of i){let{offlinePending:l,uploadPending:y,active:_}=d.pagesStatus,u=l.length===0&&y.length===0&&_.length===0,D=d.shouldBeUpdated&&u?1:0,I=l.length+y.length+D;a.push(I)}let c=a.reduce((d,l)=>d+l,0);return{domain:t,totalPendingPages:c}}))}function br(e){return e.sort((r,t)=>r.totalPendingPages-t.totalPendingPages),e.map(({domain:r})=>r)}async function Sr(){let e=await J({cwd:S.default.resolve(__dirname,"../../..")})||"",r=e,t=S.default.resolve(await J({cwd:__dirname})||""),o=S.default.resolve(e,".griddo/cache"),n=O(),i=S.default.join(e,"exports/sites"),a=S.default.join(e,"exports-backup/sites"),c={griddoVersion:re,buildReportFileName:"build-report.json",sortedDomains:[],needsRollbackOnError:!1,domains:{},currentRenderingDomain:null,commitHash:(0,z.execSync)("git rev-parse HEAD").toString().trim(),commitMessage:(0,z.execSync)("git log -1 --pretty=%B").toString().trim(),paths:{components:n,cx:r,cxCache:o,exportsDir:i,root:e,ssg:t,exportsDirBackup:a}};await w(o)||await Q.default.mkdir(o,{recursive:!0}),await $(c)}async function _r(){await B.login();let e=await R(),r=e.paths.ssg,t=await Ne(),o=await wr(t),n=br(o);await Q.default.writeFile(S.default.join(r,"domains.json"),JSON.stringify(n)),e.sortedDomains=n,e.domains={};for(let{domain:i,totalPendingPages:a}of o){let c=a>0,{renderMode:d,reason:l}=await Oe({domain:i,shouldBeRendered:c});s.info(`(From Initial Render) [${i}]: Marked as ${d} with the reason: ${l}`),e.domains[i]=e.domains[i]||{},e.domains[i].renderMode=d,e.domains[i].shouldBeRendered=c,e.domains[i].renderModeReason=l}await $(e)}async function Ir(){let e=await R(),{root:r}=e.paths;await De([S.default.join(r,"apiCache")])}async function Ar(){ue?s.info("Build health check bypassed"):Ee(),await Sr(),await _r(),await Ir()}Ar().catch(e=>{e instanceof Error?s.error(e.message):s.error(`An unexpected error occurred ${e}`),process.exit(1)});
|
|
40
40
|
//# sourceMappingURL=prepare-domains-render.js.map
|