@griddo/cx 11.14.2-rc.1 → 11.14.2

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.
@@ -137,7 +137,7 @@ ${i}
137
137
  ${CA.red("stack")}
138
138
  ${JSON.stringify(A,null,2)}`),new _t(A)}async function EQ(e){try{await e()}catch(A){A instanceof _t?L.error("Internal Griddo RenderError"):A instanceof Error?L.error(A.message):L.error(`An unexpected error occurred ${A}`);try{let t=await Oe(),r=t.currentRenderingDomain;r?(t.needsRollbackOnError?(L.info("Cleaning exports dir..."),await cQ(r)):L.info("No rollback needed, skipping..."),t.domains[r].isRendering=!1,t.domains[r].renderMode=ti.ERROR,await $s(t)):L.warn("No currentRenderingDomain set, skipping cleanup")}catch{L.info("Early render stage, no db.json created yet...")}throw A}}var _y=aA(require("node:crypto")),Ai=aA(require("node:fs/promises")),xE=aA(require("node:path"));var Ty=aA(ky());function Ly(e={}){let{timeoutMs:A}=e;return{async request(t){let{statusCode:r,headers:s,body:n}=await(0,Ty.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 zo=class extends Error{constructor(A){super(`Circuit breaker is open. Cooldown: ${A}ms`),this.name="CircuitOpenError"}};function kE(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 zo(r);try{let Q=await e.request(I);return g(),Q}catch(Q){throw c(),Q}}}}function Hy(e){return new Promise(A=>setTimeout(A,e))}function Yy(e,A,t,r){let s=t==="exponential"?e*2**(A-1):e;return r&&(s=Math.round(s*(.5+Math.random()))),s}function TE(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=Yy(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,response:B}),await Hy(I);continue}return B}catch(B){if(g=B,c<t){let I=Yy(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,error:g}),await Hy(I)}}throw g}}}var LE;function Ws(){return LE||(LE=kE(TE(Ly({timeoutMs:eQ}),{attempts:si,delayMs:AQ*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;L.warn(`Retry ${A}/${si}: ${e.method} ${e.url} \u2014 ${n} (next in ${t}ms)`)}}),{failureThreshold:tQ,cooldownMs:rQ,onOpen:()=>L.warn("Circuit breaker OPEN \u2014 requests will fail fast"),onClose:()=>L.info("Circuit breaker CLOSED \u2014 recovered")}),L.verbose("HTTP adapter: undici (timeout + retry + circuit breaker)")),LE}var Gy=aA(require("node:fs/promises"));var Lr=[],xy=null,Ps=null,DY=zE;var pY=!js;function HE(e){pY||(Lr.push(e.toString()),Lr.length>=DY&&wY().catch(A=>{L.error("Background log flush failed:",A)}))}async function wY(){if(Ps&&await Ps,Lr.length===0||!xy)return;Ps=(async()=>{let A=[...Lr];Lr.length=0;try{await Gy.default.appendFile(xy,`${A.join(`
139
139
  `)}
140
- `)}catch(t){Lr.unshift(...A),L.error("Error flushing logs:",t)}})();try{await Ps}finally{Ps=null}}var Oy={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.14.2-rc.1",authors:["Hisco <francis.vega@griddo.io>"],license:"UNLICENSED",homepage:"https://griddo.io",repository:{type:"git",url:"https://github.com/griddo/griddo"},bin:{"griddo-render":"cli.mjs"},exports:{".":{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","notify-indexnow":"node ./build/commands/notify-indexnow","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.14.2-rc.1","@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:"a08bea26f0f939c8f93c9d59b5d54e80fd776700"};var $o={"x-application-id":"griddo-cx","x-client-version":Oy.version,"x-client-name":"CX"};var re=process.env.GRIDDO_API_URL,SY=process.env.GRIDDO_PUBLIC_API_URL,Vy=`${re}/ai/embeddings`,nO=`${SY}/alert`,Jy=`${re}/domains`,oO=`${re}/sites/all`,iO=`${re}/page`,vy=`${re}/login_check`,aO=`${re}/debug/reset-render`,gO=`${re}/domains/robots`,qy=`${re}/search`,cO=`${re}/settings`,EO=`${re}/domains/`;var QO=`${re}/site/`;var NY=Ws(),YE=class{headers;async login(){try{let A=await NY.request({url:vy,method:"POST",headers:Object.assign({},$o,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:XE,password:KE})});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){ie(nQ,A)}}},_s=new YE;var Xs=aA(require("node:path"));async function Zs(e){let{domain:A,dbFilePath:t}=e||{},s=(await Oe(t)).paths;return{__root:s.root,__cache:Xs.default.join(s.cxCache,A||""),__components:s.components,__cx:s.cx,__sites:s.exportsDir,__exports:Xs.default.join(s.exportsDir,A||""),__exports_backup:Xs.default.join(s.exportsDirBackup,A||""),__ssg:s.ssg,__exports_dist:Xs.default.join(s.exportsDir,A||"","dist")}}var mY=Ws();async function Zy(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 bY(g);if(B){if(a){let I=Wy(B),Q=I?`site: ${I}`:"",l=Py(Date.now()-c.getTime());HE(`${A} (cache) ${Q} ${r} - ${l}s ${t}`)}return B}}try{let c=new Date,B=Object.assign({},$o,o,_s.headers),I=A.toLowerCase()!=="get"&&s;I&&(B["Content-Type"]="application/json");let Q=await mY.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=Wy(l),D=C?`site: ${C}`:"",u=Py(Date.now()-c.getTime());HE(`${A} (fetch) ${D} ${r} - ${u}s ${t}`)}return i&&await UY(g,l),l}catch(c){let B=c;throw FY(B,{callInfo:{endpoint:r,body:s}}),new _t(B)}}async function Xy(e){return Zy(e,"get")}async function GE(e){let{endpoint:A,body:t,headers:r}=e,s=A.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(t)} lang: ${JSON.stringify(r?.lang)}`;return Zy(e,"post",s||"")}function FY(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(`
140
+ `)}catch(t){Lr.unshift(...A),L.error("Error flushing logs:",t)}})();try{await Ps}finally{Ps=null}}var Oy={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.14.2",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","notify-indexnow":"node ./build/commands/notify-indexnow","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.14.2","@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:"92256859b4b631e6fbd04d6ab48804b42b293614"};var $o={"x-application-id":"griddo-cx","x-client-version":Oy.version,"x-client-name":"CX"};var re=process.env.GRIDDO_API_URL,SY=process.env.GRIDDO_PUBLIC_API_URL,Vy=`${re}/ai/embeddings`,nO=`${SY}/alert`,Jy=`${re}/domains`,oO=`${re}/sites/all`,iO=`${re}/page`,vy=`${re}/login_check`,aO=`${re}/debug/reset-render`,gO=`${re}/domains/robots`,qy=`${re}/search`,cO=`${re}/settings`,EO=`${re}/domains/`;var QO=`${re}/site/`;var NY=Ws(),YE=class{headers;async login(){try{let A=await NY.request({url:vy,method:"POST",headers:Object.assign({},$o,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:XE,password:KE})});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){ie(nQ,A)}}},_s=new YE;var Xs=aA(require("node:path"));async function Zs(e){let{domain:A,dbFilePath:t}=e||{},s=(await Oe(t)).paths;return{__root:s.root,__cache:Xs.default.join(s.cxCache,A||""),__components:s.components,__cx:s.cx,__sites:s.exportsDir,__exports:Xs.default.join(s.exportsDir,A||""),__exports_backup:Xs.default.join(s.exportsDirBackup,A||""),__ssg:s.ssg,__exports_dist:Xs.default.join(s.exportsDir,A||"","dist")}}var mY=Ws();async function Zy(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 bY(g);if(B){if(a){let I=Wy(B),Q=I?`site: ${I}`:"",l=Py(Date.now()-c.getTime());HE(`${A} (cache) ${Q} ${r} - ${l}s ${t}`)}return B}}try{let c=new Date,B=Object.assign({},$o,o,_s.headers),I=A.toLowerCase()!=="get"&&s;I&&(B["Content-Type"]="application/json");let Q=await mY.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=Wy(l),D=C?`site: ${C}`:"",u=Py(Date.now()-c.getTime());HE(`${A} (fetch) ${D} ${r} - ${u}s ${t}`)}return i&&await UY(g,l),l}catch(c){let B=c;throw FY(B,{callInfo:{endpoint:r,body:s}}),new _t(B)}}async function Xy(e){return Zy(e,"get")}async function GE(e){let{endpoint:A,body:t,headers:r}=e,s=A.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(t)} lang: ${JSON.stringify(r?.lang)}`;return Zy(e,"post",s||"")}function FY(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}
142
142
  ${r}`;L.warn(CA.red(`
143
143
  =============