@griddo/cx 11.13.2 → 11.13.3-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 +1 -1
- 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 +1 -1
- package/build/commands/start-render.js.map +2 -2
- package/build/commands/upload-search-content.js +23 -23
- package/build/commands/upload-search-content.js.map +2 -2
- package/build/index.js +3 -3
- package/package.json +3 -3
|
@@ -135,7 +135,7 @@ ${r}
|
|
|
135
135
|
${i}
|
|
136
136
|
|
|
137
137
|
${QA.red("stack")}
|
|
138
|
-
${JSON.stringify(A,null,2)}`),new _t(A)}async function sQ(e){try{await e()}catch(A){A instanceof _t?G.error("Internal Griddo RenderError"):A instanceof Error?G.error(A.message):G.error(`An unexpected error occurred ${A}`);try{let t=await ie(),r=t.currentRenderingDomain;r?(t.needsRollbackOnError?(G.info("Cleaning exports dir..."),await rQ(r)):G.info("No rollback needed, skipping..."),t.domains[r].isRendering=!1,t.domains[r].renderMode=Pt.ERROR,await $s(t)):G.warn("No currentRenderingDomain set, skipping cleanup")}catch{G.info("Early render stage, no db.json created yet...")}throw A}}var Ny=aA(Sy());function my(e={}){let{timeoutMs:A}=e;return{async request(t){let{statusCode:r,headers:s,body:n}=await(0,Ny.request)(t.url,{method:t.method,headers:t.headers,body:t.body,signal:A?AbortSignal.timeout(A):void 0}),o={};for(let[g,c]of Object.entries(s))c!==void 0&&(o[g]=Array.isArray(c)?c.join(", "):String(c));let i,a=async()=>(i===void 0&&(i=await n.text()),i);return{status:r,statusText:"",ok:r>=200&&r<300,headers:o,json:async()=>JSON.parse(await a()),text:a}}}}var jo=class extends Error{constructor(A){super(`Circuit breaker is open. Cooldown: ${A}ms`),this.name="CircuitOpenError"}};function bE(e,A){let{failureThreshold:t,cooldownMs:r,onOpen:s,onClose:n}=A,o="closed",i=0,a=0;function g(){o==="half-open"?(o="closed",i=0,n?.()):i=0}function c(){i++,i>=t&&(o="open",a=Date.now(),s?.())}function B(){return o==="closed"?!0:o==="open"&&Date.now()-a>=r?(o="half-open",!0):o==="half-open"}return{async request(I){if(!B())throw new jo(r);try{let Q=await e.request(I);return g(),Q}catch(Q){throw c(),Q}}}}function Fy(e){return new Promise(A=>setTimeout(A,e))}function Uy(e,A,t,r){let s=t==="exponential"?e*2**(A-1):e;return r&&(s=Math.round(s*(.5+Math.random()))),s}function ME(e,A){let{attempts:t,delayMs:r,backoff:s="fixed",jitter:n=!1,retryOn:o,onRetry:i}=A;return{async request(a){let g;for(let c=1;c<=t;c++)try{let B=await e.request(a);if(o?.(B)&&c<t){let I=Uy(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,response:B}),await Fy(I);continue}return B}catch(B){if(g=B,c<t){let I=Uy(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,error:g}),await Fy(I)}}throw g}}}var kE;function Ws(){return kE||(kE=bE(ME(my({timeoutMs:zE}),{attempts:ei,delayMs:KE*1e3,backoff:"exponential",jitter:!0,retryOn:e=>e.status>=500,onRetry:({request:e,attempt:A,delayMs:t,error:r,response:s})=>{let n=s?`HTTP ${s.status}`:r?.message;G.warn(`Retry ${A}/${ei}: ${e.method} ${e.url} \u2014 ${n} (next in ${t}ms)`)}}),{failureThreshold:jE,cooldownMs:$E,onOpen:()=>G.warn("Circuit breaker OPEN \u2014 requests will fail fast"),onClose:()=>G.info("Circuit breaker CLOSED \u2014 recovered")}),G.verbose("HTTP adapter: undici (timeout + retry + circuit breaker)")),kE}var te=process.env.GRIDDO_API_URL,BY=process.env.GRIDDO_PUBLIC_API_URL,q2=`${te}/ai/embeddings`,W2=`${BY}/alert`,P2=`${te}/domains`,hY=`${te}/sites/all`,CY=`${te}/page`,by=`${te}/login_check`,_2=`${te}/debug/reset-render`,Z2=`${te}/domains/robots`,X2=`${te}/search`,K2=`${te}/settings`,z2=`${te}/domains/`;var uY=`${te}/site/`,My=[uY,"/build/end"];var ky={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.13.
|
|
138
|
+
${JSON.stringify(A,null,2)}`),new _t(A)}async function sQ(e){try{await e()}catch(A){A instanceof _t?G.error("Internal Griddo RenderError"):A instanceof Error?G.error(A.message):G.error(`An unexpected error occurred ${A}`);try{let t=await ie(),r=t.currentRenderingDomain;r?(t.needsRollbackOnError?(G.info("Cleaning exports dir..."),await rQ(r)):G.info("No rollback needed, skipping..."),t.domains[r].isRendering=!1,t.domains[r].renderMode=Pt.ERROR,await $s(t)):G.warn("No currentRenderingDomain set, skipping cleanup")}catch{G.info("Early render stage, no db.json created yet...")}throw A}}var Ny=aA(Sy());function my(e={}){let{timeoutMs:A}=e;return{async request(t){let{statusCode:r,headers:s,body:n}=await(0,Ny.request)(t.url,{method:t.method,headers:t.headers,body:t.body,signal:A?AbortSignal.timeout(A):void 0}),o={};for(let[g,c]of Object.entries(s))c!==void 0&&(o[g]=Array.isArray(c)?c.join(", "):String(c));let i,a=async()=>(i===void 0&&(i=await n.text()),i);return{status:r,statusText:"",ok:r>=200&&r<300,headers:o,json:async()=>JSON.parse(await a()),text:a}}}}var jo=class extends Error{constructor(A){super(`Circuit breaker is open. Cooldown: ${A}ms`),this.name="CircuitOpenError"}};function bE(e,A){let{failureThreshold:t,cooldownMs:r,onOpen:s,onClose:n}=A,o="closed",i=0,a=0;function g(){o==="half-open"?(o="closed",i=0,n?.()):i=0}function c(){i++,i>=t&&(o="open",a=Date.now(),s?.())}function B(){return o==="closed"?!0:o==="open"&&Date.now()-a>=r?(o="half-open",!0):o==="half-open"}return{async request(I){if(!B())throw new jo(r);try{let Q=await e.request(I);return g(),Q}catch(Q){throw c(),Q}}}}function Fy(e){return new Promise(A=>setTimeout(A,e))}function Uy(e,A,t,r){let s=t==="exponential"?e*2**(A-1):e;return r&&(s=Math.round(s*(.5+Math.random()))),s}function ME(e,A){let{attempts:t,delayMs:r,backoff:s="fixed",jitter:n=!1,retryOn:o,onRetry:i}=A;return{async request(a){let g;for(let c=1;c<=t;c++)try{let B=await e.request(a);if(o?.(B)&&c<t){let I=Uy(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,response:B}),await Fy(I);continue}return B}catch(B){if(g=B,c<t){let I=Uy(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,error:g}),await Fy(I)}}throw g}}}var kE;function Ws(){return kE||(kE=bE(ME(my({timeoutMs:zE}),{attempts:ei,delayMs:KE*1e3,backoff:"exponential",jitter:!0,retryOn:e=>e.status>=500,onRetry:({request:e,attempt:A,delayMs:t,error:r,response:s})=>{let n=s?`HTTP ${s.status}`:r?.message;G.warn(`Retry ${A}/${ei}: ${e.method} ${e.url} \u2014 ${n} (next in ${t}ms)`)}}),{failureThreshold:jE,cooldownMs:$E,onOpen:()=>G.warn("Circuit breaker OPEN \u2014 requests will fail fast"),onClose:()=>G.info("Circuit breaker CLOSED \u2014 recovered")}),G.verbose("HTTP adapter: undici (timeout + retry + circuit breaker)")),kE}var te=process.env.GRIDDO_API_URL,BY=process.env.GRIDDO_PUBLIC_API_URL,q2=`${te}/ai/embeddings`,W2=`${BY}/alert`,P2=`${te}/domains`,hY=`${te}/sites/all`,CY=`${te}/page`,by=`${te}/login_check`,_2=`${te}/debug/reset-render`,Z2=`${te}/domains/robots`,X2=`${te}/search`,K2=`${te}/settings`,z2=`${te}/domains/`;var uY=`${te}/site/`,My=[uY,"/build/end"];var ky={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.13.3-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:{".":{types:"./build/index.d.ts",import:"./build/index.js",require:"./build/index.js"},"./react":{types:"./build/react/index.d.ts",import:"./build/react/index.js",require:"./build/react/index.js"}},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:"vitest run","test:watch":"vitest","// 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","// 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:{"@kreuzberg/html-to-markdown":"2.24.5",gatsby:"5.15.0","html-react-parser":"5.2.11",jiti:"^2.6.1",undici:"7.24.6"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.13.3-rc.0","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260401.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"6.0.2",vitest:"^4.0.18"},peerDependencies:{react:">=18 <19","react-dom":">=18 <19"},engines:{node:">=20.19"},files:["build","exporter","src","gatsby-browser.tsx","gatsby-config.ts","gatsby-node.ts","gatsby-ssr.tsx","global.d.ts","tsconfig.commands.json","tsconfig.exporter.json","tsconfig.json","plugins","cli.mjs"],publishConfig:{access:"public"},gitHead:"7ae5d46aa8bd0782fff780f0fbae9c2e7cb6ae57"};var $o={"x-application-id":"griddo-cx","x-client-version":ky.version,"x-client-name":"CX"};var fY=Ws(),TE=class{headers;async login(){try{let A=await fY.request({url:by,method:"POST",headers:Object.assign({},$o,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:PE,password:_E})});if(!A.ok)throw new Error("Error while login in the API");let{token:t}=await A.json();if(!t||typeof t!="string")throw new Error("Login response missing valid token");return this.headers={Authorization:`bearer ${t}`,"Cache-Control":"no-store"},this.headers}catch(A){Qt(eQ,A)}}},Ps=new TE;var Zs=aA(require("node:path"));async function Ty(e){let A=await ie();if(!A.domains[e])throw new Error(QA.red(`[!] Error: Domain ${e} not found in DB`));if(!A.domains[e].renderMode)throw new Error(QA.red(`[!] Error: Render mode not found for domain ${e}`));return{renderMode:A.domains[e].renderMode,reason:A.domains[e].renderModeReason}}async function _s(e){let{domain:A,dbFilePath:t}=e||{},s=(await ie(t)).paths;return{__root:s.root,__cache:Zs.default.join(s.cxCache,A||""),__components:s.components,__cx:s.cx,__sites:s.exportsDir,__exports:Zs.default.join(s.exportsDir,A||""),__exports_backup:Zs.default.join(s.exportsDirBackup,A||""),__ssg:s.ssg,__exports_dist:Zs.default.join(s.exportsDir,A||"","dist")}}async function Ly(){let e=await ie();return{griddoVersion:e.griddoVersion,buildReportFileName:e.buildReportFileName}}var Oy=aA(require("node:crypto")),Ai=aA(require("node:fs/promises")),HE=aA(require("node:path"));var Yy=aA(require("node:fs/promises"));var Lr=[],Hy=null,Xs=null,yY=ZE;var DY=!zs;function LE(e){DY||(Lr.push(e.toString()),Lr.length>=yY&&pY().catch(A=>{G.error("Background log flush failed:",A)}))}async function pY(){if(Xs&&await Xs,Lr.length===0||!Hy)return;Xs=(async()=>{let A=[...Lr];Lr.length=0;try{await Yy.default.appendFile(Hy,`${A.join(`
|
|
139
139
|
`)}
|
|
140
140
|
`)}catch(t){Lr.unshift(...A),G.error("Error flushing logs:",t)}})();try{await Xs}finally{Xs=null}}var wY=Ws();async function RY(e,A,t=""){let{endpoint:r,body:s,cacheKey:n="",headers:o,useApiCacheDir:i=!0,logToFile:a=!0}=e,g={endpoint:r,body:s,headers:o,cacheKey:n};if(n&&i){let c=new Date,B=await mY(g);if(B){if(a){let I=xy(B),Q=I?`site: ${I}`:"",l=Gy(Date.now()-c.getTime());LE(`${A} (cache) ${Q} ${r} - ${l}s ${t}`)}return B}}try{let c=new Date,B=Object.assign({},$o,o,Ps.headers),I=A.toLowerCase()!=="get"&&s;I&&(B["Content-Type"]="application/json");let Q=await wY.request({url:r,method:A.toUpperCase(),headers:B,body:I?JSON.stringify(s):void 0});if(!Q.ok){if(Q.status===404)return null;throw new Error(`HTTP ${Q.status}: ${Q.statusText}`)}let l=await Q.json();if(a){let C=xy(l),D=C?`site: ${C}`:"",u=Gy(Date.now()-c.getTime());LE(`${A} (fetch) ${D} ${r} - ${u}s ${t}`)}return i&&await NY(g,l),l}catch(c){let B=c;throw SY(B,{callInfo:{endpoint:r,body:s}}),new _t(B)}}async function Vy(e){let{endpoint:A,body:t,headers:r}=e,s=A.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(t)} lang: ${JSON.stringify(r?.lang)}`;return RY(e,"post",s||"")}function SY(e,A){let{message:t,stack:r}=e,{callInfo:s}=A,n=[];for(let a of Object.keys(s))n.push(`${a}: ${typeof s[a]=="object"?JSON.stringify(s[a]):s[a]}`);let o=n.join(`
|
|
141
141
|
`),i=`${t}
|