@griddo/cx 11.14.2-rc.0 → 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.
@@ -135,7 +135,7 @@ ${r}
135
135
  ${i}
136
136
 
137
137
  ${uA.red("stack")}
138
- ${JSON.stringify(A,null,2)}`),new Pt(A)}async function oQ(e){try{await e()}catch(A){A instanceof Pt?b.error("Internal Griddo RenderError"):A instanceof Error?b.error(A.message):b.error(`An unexpected error occurred ${A}`);try{let t=await xe(),r=t.currentRenderingDomain;r?(t.needsRollbackOnError?(b.info("Cleaning exports dir..."),await nQ(r)):b.info("No rollback needed, skipping..."),t.domains[r].isRendering=!1,t.domains[r].renderMode=Ai.ERROR,await zs(t)):b.warn("No currentRenderingDomain set, skipping cleanup")}catch{b.info("Early render stage, no db.json created yet...")}throw A}}var Fy=aA(my());function Uy(e={}){let{timeoutMs:A}=e;return{async request(t){let{statusCode:r,headers:s,body:n}=await(0,Fy.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 by(e){return new Promise(A=>setTimeout(A,e))}function My(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=My(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,response:B}),await by(I);continue}return B}catch(B){if(g=B,c<t){let I=My(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,error:g}),await by(I)}}throw g}}}var kE;function Ws(){return kE||(kE=bE(ME(Uy({timeoutMs:zE}),{attempts:ti,delayMs:jE*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;b.warn(`Retry ${A}/${ti}: ${e.method} ${e.url} \u2014 ${n} (next in ${t}ms)`)}}),{failureThreshold:$E,cooldownMs:AQ,onOpen:()=>b.warn("Circuit breaker OPEN \u2014 requests will fail fast"),onClose:()=>b.info("Circuit breaker CLOSED \u2014 recovered")}),b.verbose("HTTP adapter: undici (timeout + retry + circuit breaker)")),kE}var re=process.env.GRIDDO_API_URL,CY=process.env.GRIDDO_PUBLIC_API_URL,AO=`${re}/ai/embeddings`,eO=`${CY}/alert`,ky=`${re}/domains`,tO=`${re}/sites/all`,rO=`${re}/page`,Ty=`${re}/login_check`,sO=`${re}/debug/reset-render`,nO=`${re}/domains/robots`,oO=`${re}/search`,iO=`${re}/settings`,aO=`${re}/domains/`;var gO=`${re}/site/`;var Ly={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.14.2-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","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.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:"b93ad3eedf58a5187667f87764045b815c87cc68"};var zo={"x-application-id":"griddo-cx","x-client-version":Ly.version,"x-client-name":"CX"};var fY=Ws(),TE=class{headers;async login(){try{let A=await fY.request({url:Ty,method:"POST",headers:Object.assign({},zo,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:_E,password:ZE})});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){Et(tQ,A)}}},Ps=new TE;var Oy=aA(require("node:crypto")),$o=aA(require("node:fs/promises")),HE=aA(require("node:path"));var Yy=aA(require("node:fs/promises"));var Tr=[],Hy=null,_s=null,yY=XE;var DY=!Ks;function LE(e){DY||(Tr.push(e.toString()),Tr.length>=yY&&pY().catch(A=>{b.error("Background log flush failed:",A)}))}async function pY(){if(_s&&await _s,Tr.length===0||!Hy)return;_s=(async()=>{let A=[...Tr];Tr.length=0;try{await Yy.default.appendFile(Hy,`${A.join(`
138
+ ${JSON.stringify(A,null,2)}`),new Pt(A)}async function oQ(e){try{await e()}catch(A){A instanceof Pt?b.error("Internal Griddo RenderError"):A instanceof Error?b.error(A.message):b.error(`An unexpected error occurred ${A}`);try{let t=await xe(),r=t.currentRenderingDomain;r?(t.needsRollbackOnError?(b.info("Cleaning exports dir..."),await nQ(r)):b.info("No rollback needed, skipping..."),t.domains[r].isRendering=!1,t.domains[r].renderMode=Ai.ERROR,await zs(t)):b.warn("No currentRenderingDomain set, skipping cleanup")}catch{b.info("Early render stage, no db.json created yet...")}throw A}}var Fy=aA(my());function Uy(e={}){let{timeoutMs:A}=e;return{async request(t){let{statusCode:r,headers:s,body:n}=await(0,Fy.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 by(e){return new Promise(A=>setTimeout(A,e))}function My(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=My(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,response:B}),await by(I);continue}return B}catch(B){if(g=B,c<t){let I=My(r,c,s,n);i?.({request:a,attempt:c,delayMs:I,error:g}),await by(I)}}throw g}}}var kE;function Ws(){return kE||(kE=bE(ME(Uy({timeoutMs:zE}),{attempts:ti,delayMs:jE*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;b.warn(`Retry ${A}/${ti}: ${e.method} ${e.url} \u2014 ${n} (next in ${t}ms)`)}}),{failureThreshold:$E,cooldownMs:AQ,onOpen:()=>b.warn("Circuit breaker OPEN \u2014 requests will fail fast"),onClose:()=>b.info("Circuit breaker CLOSED \u2014 recovered")}),b.verbose("HTTP adapter: undici (timeout + retry + circuit breaker)")),kE}var re=process.env.GRIDDO_API_URL,CY=process.env.GRIDDO_PUBLIC_API_URL,AO=`${re}/ai/embeddings`,eO=`${CY}/alert`,ky=`${re}/domains`,tO=`${re}/sites/all`,rO=`${re}/page`,Ty=`${re}/login_check`,sO=`${re}/debug/reset-render`,nO=`${re}/domains/robots`,oO=`${re}/search`,iO=`${re}/settings`,aO=`${re}/domains/`;var gO=`${re}/site/`;var Ly={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 zo={"x-application-id":"griddo-cx","x-client-version":Ly.version,"x-client-name":"CX"};var fY=Ws(),TE=class{headers;async login(){try{let A=await fY.request({url:Ty,method:"POST",headers:Object.assign({},zo,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:_E,password:ZE})});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){Et(tQ,A)}}},Ps=new TE;var Oy=aA(require("node:crypto")),$o=aA(require("node:fs/promises")),HE=aA(require("node:path"));var Yy=aA(require("node:fs/promises"));var Tr=[],Hy=null,_s=null,yY=XE;var DY=!Ks;function LE(e){DY||(Tr.push(e.toString()),Tr.length>=yY&&pY().catch(A=>{b.error("Background log flush failed:",A)}))}async function pY(){if(_s&&await _s,Tr.length===0||!Hy)return;_s=(async()=>{let A=[...Tr];Tr.length=0;try{await Yy.default.appendFile(Hy,`${A.join(`
139
139
  `)}
140
140
  `)}catch(t){Tr.unshift(...A),b.error("Error flushing logs:",t)}})();try{await _s}finally{_s=null}}var Zs=aA(require("node:path"));async function Lr(e){let{domain:A,dbFilePath:t}=e||{},s=(await xe(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")}}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({},zo,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 u=xy(l),D=u?`site: ${u}`:"",C=Gy(Date.now()-c.getTime());LE(`${A} (fetch) ${D} ${r} - ${C}s ${t}`)}return i&&await NY(g,l),l}catch(c){let B=c;throw SY(B,{callInfo:{endpoint:r,body:s}}),new Pt(B)}}async function Vy(e){return RY(e,"get")}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}