@griddo/cx 11.10.30 → 11.10.34

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.
@@ -1,32 +1,32 @@
1
- "use strict";var ve=Object.create;var X=Object.defineProperty;var Le=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var je=Object.getPrototypeOf,ke=Object.prototype.hasOwnProperty;var Ue=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Be(e))!ke.call(r,n)&&n!==t&&X(r,n,{get:()=>e[n],enumerable:!(o=Le(e,n))||o.enumerable});return r};var d=(r,e,t)=>(t=r!=null?ve(je(r)):{},Ue(e||!r||!r.__esModule?X(t,"default",{value:r,enumerable:!0}):t,r));var j=d(require("node:fs/promises")),A=d(require("node:path"));var Ee=d(require("node:path"));var Me=process.env.NO_COLORS,He="\x1B[0m",Z={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"},f={};for(let r in Z){let e=r;f[e]=t=>Me?t.toString():`${Z[e]}${t}${He}`}var k={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var H=d(require("node:fs/promises")),G=d(require("node:path"));var oe=d(require("node:path"));var Q=d(require("node:fs"));var b=d(require("node:path")),ee=d(require("node:process")),re=require("node:url"),z=r=>r instanceof URL?(0,re.fileURLToPath)(r):r;function te(r,e={}){let{cwd:t=ee.default.cwd(),type:o="file",stopAt:n}=e,a=b.default.resolve(z(t)??""),{root:m}=b.default.parse(a),l=n?b.default.resolve(a,z(n)):m,c=b.default.isAbsolute(r);for(;;){let u=c?r:b.default.join(a,r);try{let E=Q.default.statSync(u,{throwIfNoEntry:!1});if(o==="file"&&E?.isFile()||o==="directory"&&E?.isDirectory())return u}catch{}if(a===l||a===m)break;a=b.default.dirname(a)}}function ne(r){let{cwd:e}=r||{},t=te("package.json",{cwd:e});return t&&oe.default.dirname(t)}var{env:s}=process;function R(r){if(!r)return!1;switch(r.trim().toLowerCase()){case"1":case"true":case"yes":case"y":case"on":return!0;default:return!1}}var Dr=s.GRIDDO_API_URL||s.API_URL,hr=s.GRIDDO_PUBLIC_API_URL||s.PUBLIC_API_URL,ie=s.botEmail||s.GRIDDO_BOT_USER,se=s.botPassword||s.GRIDDO_BOT_PASSWORD,ae=R(s.GRIDDO_AI_EMBEDDINGS||s.GRIDDO_API_AI_EMBEDDINGS),Er=Number.parseInt(s.GRIDDO_API_CONCURRENCY_COUNT||s.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),Rr=s.GRIDDO_ASSET_PREFIX||s.ASSET_PREFIX||s.GRIDDO_RENDER_ASSET_PREFIX,F=R(s.GRIDDO_BUILD_LOGS||s.GRIDDO_RENDER_BUILD_LOGS),ce=Number.parseInt(s.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),yr=s.GRIDDO_REACT_APP_INSTANCE||s.REACT_APP_INSTANCE||s.GRIDDO_APP_INSTANCE||s.GRIDDO_EDITOR_APP_INSTANCIE,wr=R(s.GRIDDO_RENDER_DISABLE_LLMS_TXT),U=R(s.GRIDDO_SEARCH_FEATURE||s.GRIDDO_RENDER_SEARCH_FEATURE),_r=R(s.GRIDDO_RENDER_SKIP_BUILD_CHECKS),Ir=R(s.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Sr=R(s.GRIDDO_RENDER_SSG_VERBOSE_LOGS),br=R(s.GRIDDO_RENDER_USE_DIST_BACKUP),de=R(s.GRIDDO_VERBOSE_LOGS||s.GRIDDO_RENDER_VERBOSE_LOGS),pe=Number.parseInt(s.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),M=Number.parseInt(s.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4");var i=class r{constructor(){}static verbose(...e){de&&console.log(f.yellow("verbose"),f.dim(e.join(" ")))}static build(...e){F&&r.log(...e)}static info(...e){console.log(`${f.blue("info")} ${e.join(" ")}`)}static success(...e){console.log(`${f.green("success")} ${e.join(" ")}`)}static error(...e){console.error(`${f.red("error")} ${e.join(" ")}`)}static warn(...e){console.warn(`${f.yellow("warn")} ${e.join(" ")}`)}static log(...e){console.log(...e)}};var Je=ne({cwd:G.default.resolve(__dirname,"../../..")})||"",We=G.default.join(Je,".griddo/cache"),le=G.default.join(We,"db.json");async function y(r=""){let e=r||le;try{return JSON.parse(await H.default.readFile(e,"utf-8"))}catch(t){throw i.error(`Failed to read DB file at ${e}:`,t),t}}async function v(r,e=""){let t=e||le;try{await H.default.writeFile(t,JSON.stringify(r,null," "))}catch(o){throw i.error(`Failed to write DB file at ${t}:`,o),o}}var J=d(require("node:fs/promises")),_=d(require("node:path"));var De=d(require("node:fs/promises"));var fe={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."},me={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."};var ue={error:"ReadFromStoreError",message:"There was an error reading a file to the Store directory",hint:"There may be an issue such as permissions preventing the file from being read."};var ge={error:"UploadSearchError",message:"There was an error uploading content to API for search",hint:"This happens if the API is currently not working or the credentials are incorrect."};async function w(r){try{return await De.default.access(r),!0}catch{return!1}}async function he(r){let e=await y(),{exportsDir:t,exportsDirBackup:o}=e.paths;i.info(`Cleaning exports dir for the domain ${r}`),i.verbose(`Deleting ${_.default.join(t,r)}...`),await J.default.rm(_.default.join(t,r),{recursive:!0,force:!0}),await w(_.default.join(o,r))?(await J.default.cp(_.default.join(o,r),_.default.join(t,r),{recursive:!0}),i.info(`export-backup dir for the domain ${r} found. Restoring before exit...`),i.verbose(`Copying ${_.default.join(o,r)} -> ${_.default.join(t,r)}...`)):i.info("No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...")}var T=class extends Error{constructor(e){super(e instanceof Error?e.message:String(e)),this.name="InternalCXError",this.stack=e instanceof Error?e.stack:""}};function h(r,e){let{error:t,message:o,expected:n,hint:a}=r,m=i.log(f.red(`[ ${t} ]`)),l=[n,a].filter(Boolean).join(`
1
+ "use strict";var Le=Object.create;var X=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var je=Object.getPrototypeOf,ke=Object.prototype.hasOwnProperty;var Ue=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Be(e))!ke.call(r,n)&&n!==t&&X(r,n,{get:()=>e[n],enumerable:!(o=ve(e,n))||o.enumerable});return r};var d=(r,e,t)=>(t=r!=null?Le(je(r)):{},Ue(e||!r||!r.__esModule?X(t,"default",{value:r,enumerable:!0}):t,r));var j=d(require("node:fs/promises")),T=d(require("node:path"));var Ee=d(require("node:path"));var Me=process.env.NO_COLORS,He="\x1B[0m",Z={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"},l={};for(let r in Z){let e=r;l[e]=t=>Me?t.toString():`${Z[e]}${t}${He}`}var k={FROM_SCRATCH:"FROM_SCRATCH",INCREMENTAL:"INCREMENTAL",IDLE:"IDLE",ERROR:"ERROR",COMPLETED:"COMPLETED"};var H=d(require("node:fs/promises")),G=d(require("node:path"));var oe=d(require("node:path"));var Q=d(require("node:fs"));var b=d(require("node:path")),ee=d(require("node:process")),re=require("node:url"),z=r=>r instanceof URL?(0,re.fileURLToPath)(r):r;function te(r,e={}){let{cwd:t=ee.default.cwd(),type:o="file",stopAt:n}=e,a=b.default.resolve(z(t)??""),{root:m}=b.default.parse(a),f=n?b.default.resolve(a,z(n)):m,c=b.default.isAbsolute(r);for(;;){let u=c?r:b.default.join(a,r);try{let E=Q.default.statSync(u,{throwIfNoEntry:!1});if(o==="file"&&E?.isFile()||o==="directory"&&E?.isDirectory())return u}catch{}if(a===f||a===m)break;a=b.default.dirname(a)}}function ne(r){let{cwd:e}=r||{},t=te("package.json",{cwd:e});return t&&oe.default.dirname(t)}var{env:s}=process;function R(r){if(!r)return!1;switch(r.trim().toLowerCase()){case"1":case"true":case"yes":case"y":case"on":return!0;default:return!1}}var Dr=s.GRIDDO_API_URL||s.API_URL,hr=s.GRIDDO_PUBLIC_API_URL||s.PUBLIC_API_URL,ie=s.botEmail||s.GRIDDO_BOT_USER,se=s.botPassword||s.GRIDDO_BOT_PASSWORD,ae=R(s.GRIDDO_AI_EMBEDDINGS||s.GRIDDO_API_AI_EMBEDDINGS),Er=Number.parseInt(s.GRIDDO_API_CONCURRENCY_COUNT||s.GRIDDO_RENDER_CONCURRENCY_COUNT||"10"),Rr=s.GRIDDO_ASSET_PREFIX||s.ASSET_PREFIX||s.GRIDDO_RENDER_ASSET_PREFIX,F=R(s.GRIDDO_BUILD_LOGS||s.GRIDDO_RENDER_BUILD_LOGS),ce=Number.parseInt(s.GRIDDO_RENDER_BUILD_LOGS_BUFFER_SIZE||"500"),yr=s.GRIDDO_REACT_APP_INSTANCE||s.REACT_APP_INSTANCE||s.GRIDDO_APP_INSTANCE||s.GRIDDO_EDITOR_APP_INSTANCIE,_r=R(s.GRIDDO_RENDER_DISABLE_LLMS_TXT),U=R(s.GRIDDO_SEARCH_FEATURE||s.GRIDDO_RENDER_SEARCH_FEATURE),wr=R(s.GRIDDO_RENDER_SKIP_BUILD_CHECKS),Ir=R(s.GRIDDO_RENDER_SSG_BUNDLE_ANALYZER),Sr=R(s.GRIDDO_RENDER_SSG_VERBOSE_LOGS),br=R(s.GRIDDO_RENDER_USE_DIST_BACKUP),de=R(s.GRIDDO_VERBOSE_LOGS||s.GRIDDO_RENDER_VERBOSE_LOGS),pe=Number.parseInt(s.GRIDDO_RENDER_API_FETCH_RETRY_WAIT_SECONDS||"4"),M=Number.parseInt(s.GRIDDO_RENDER_API_FETCH_RETRY_ATTEMPTS||"4"),Tr=Number.parseInt(s.GRIDDO_RENDER_LIFECYCLE_RETRY_ATTEMPTS||"1");var i=class r{constructor(){}static verbose(...e){de&&console.log(l.yellow("verbose"),l.dim(e.join(" ")))}static build(...e){F&&r.log(...e)}static info(...e){console.log(`${l.blue("info")} ${e.join(" ")}`)}static success(...e){console.log(`${l.green("success")} ${e.join(" ")}`)}static error(...e){console.error(`${l.red("error")} ${e.join(" ")}`)}static warn(...e){console.warn(`${l.yellow("warn")} ${e.join(" ")}`)}static log(...e){console.log(...e)}};var Je=ne({cwd:G.default.resolve(__dirname,"../../..")})||"",We=G.default.join(Je,".griddo/cache"),fe=G.default.join(We,"db.json");async function y(r=""){let e=r||fe;try{return JSON.parse(await H.default.readFile(e,"utf-8"))}catch(t){throw i.error(`Failed to read DB file at ${e}:`,t),t}}async function L(r,e=""){let t=e||fe;try{await H.default.writeFile(t,JSON.stringify(r,null," "))}catch(o){throw i.error(`Failed to write DB file at ${t}:`,o),o}}var J=d(require("node:fs/promises")),w=d(require("node:path"));var De=d(require("node:fs/promises"));var le={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."},me={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."};var ue={error:"ReadFromStoreError",message:"There was an error reading a file to the Store directory",hint:"There may be an issue such as permissions preventing the file from being read."};var ge={error:"UploadSearchError",message:"There was an error uploading content to API for search",hint:"This happens if the API is currently not working or the credentials are incorrect."};async function _(r){try{return await De.default.access(r),!0}catch{return!1}}async function he(r){let e=await y(),{exportsDir:t,exportsDirBackup:o}=e.paths;i.info(`Cleaning exports dir for the domain ${r}`),i.verbose(`Deleting ${w.default.join(t,r)}...`),await J.default.rm(w.default.join(t,r),{recursive:!0,force:!0}),await _(w.default.join(o,r))?(await J.default.cp(w.default.join(o,r),w.default.join(t,r),{recursive:!0}),i.info(`export-backup dir for the domain ${r} found. Restoring before exit...`),i.verbose(`Copying ${w.default.join(o,r)} -> ${w.default.join(t,r)}...`)):i.info("No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...")}var O=class extends Error{constructor(e){super(e instanceof Error?e.message:String(e)),this.name="InternalCXError",this.stack=e instanceof Error?e.stack:""}};function h(r,e){let{error:t,message:o,expected:n,hint:a}=r,m=i.log(l.red(`[ ${t} ]`)),f=[n,a].filter(Boolean).join(`
2
2
  `);throw i.log(`
3
3
  ${m}
4
4
  ${o}
5
- ${l}
5
+ ${f}
6
6
 
7
- ${f.red("stack")}
8
- ${JSON.stringify(e,null,2)}`),new T(e)}async function Re(r){try{await r()}catch(e){e instanceof T?i.error("Internal Griddo RenderError"):e instanceof Error?i.error(e.message):i.error(`An unexpected error occurred ${e}`);try{let o=await y(),{root:n}=o.paths;o.needsRollbackOnError?(i.info("Cleaning exports dir..."),i.verbose(`Deleting ${Ee.default.join(n,"exports")}...`),await he(o.currentRenderingDomain)):i.info("No rollback needed, skipping...")}catch{i.info("Early render stage, no db.json created yet...")}let t=await y();throw t.domains[t.currentRenderingDomain].isRendering=!1,t.domains[t.currentRenderingDomain].renderMode=k.ERROR,await v(t),e}}var xe=d(require("node:crypto")),B=d(require("node:fs/promises")),K=d(require("node:path"));var we=d(require("node:fs/promises"));var x=[],ye=null,C=null,Ye=ce;var Ke=!F;function W(r){Ke||(x.push(r.toString()),x.length>=Ye&&Ve().catch(e=>{i.error("Background log flush failed:",e)}))}async function Ve(){if(C&&await C,x.length===0||!ye)return;C=(async()=>{let e=[...x];x.length=0;try{await we.default.appendFile(ye,`${e.join(`
7
+ ${l.red("stack")}
8
+ ${JSON.stringify(e,null,2)}`),new O(e)}async function Re(r){try{await r()}catch(e){e instanceof O?i.error("Internal Griddo RenderError"):e instanceof Error?i.error(e.message):i.error(`An unexpected error occurred ${e}`);try{let o=await y(),{root:n}=o.paths;o.needsRollbackOnError?(i.info("Cleaning exports dir..."),i.verbose(`Deleting ${Ee.default.join(n,"exports")}...`),await he(o.currentRenderingDomain)):i.info("No rollback needed, skipping...")}catch{i.info("Early render stage, no db.json created yet...")}let t=await y();throw t.domains[t.currentRenderingDomain].isRendering=!1,t.domains[t.currentRenderingDomain].renderMode=k.ERROR,await L(t),e}}var Ce=d(require("node:crypto")),B=d(require("node:fs/promises")),K=d(require("node:path"));var _e=d(require("node:fs/promises"));var C=[],ye=null,x=null,Ye=ce;var Ke=!F;function W(r){Ke||(C.push(r.toString()),C.length>=Ye&&Ve().catch(e=>{i.error("Background log flush failed:",e)}))}async function Ve(){if(x&&await x,C.length===0||!ye)return;x=(async()=>{let e=[...C];C.length=0;try{await _e.default.appendFile(ye,`${e.join(`
9
9
  `)}
10
- `)}catch(t){x.unshift(...e),i.error("Error flushing logs:",t)}})();try{await C}finally{C=null}}var _e={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.10.30",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:{".":{import:"./build/index.js",require:"./build/index.js",types:"./build/index.d.ts"},"./react":{import:"./build/react/index.js",require:"./build/react/index.js",types:"./build/react/index.d.ts"}},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:"npm run test:compile && npm run test:create-render-fixtures && node --env-file=.env --test ./build/__tests__/* && npm run test:remove-render-fixtures","test-exporter":"npm run test:compile && node --env-file=.env --test ./build/__tests__exporter__/","test:create-render-fixtures":"node --env-file=.env ./build/__tests__/utils/create-fixtures","test:remove-render-fixtures":"node --env-file=.env ./build/__tests__/utils/remove-fixtures","test:compile":"tsgo --project tsconfig.tests.json","// 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 --root=../..","// 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:{gatsby:"5.15.0","html-react-parser":"5.2.11"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.10.30","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260108.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"5.9.3"},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:"287381274d3d0fdae99a83dd5bf5633a3ddbb4e2"};var L={"x-application-id":"griddo-cx","x-client-version":_e.version,"x-client-name":"CX"};var g=process.env.GRIDDO_API_URL,Xe=process.env.GRIDDO_PUBLIC_API_URL,Ie=`${g}/ai/embeddings`,tt=`${Xe}/alert`,Se=`${g}/domains`,ot=`${g}/sites/all`,nt=`${g}/page`,be=`${g}/login_check`,it=`${g}/debug/reset-render`,st=`${g}/domains/robots`,Ae=`${g}/search`,at=`${g}/settings`,ct=`${g}/domains/`;var dt=`${g}/site/`;var Y=class{headers;async login(){try{let e=await fetch(be,{method:"POST",headers:Object.assign({},L,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:ie,password:se})});if(!e.ok)throw new Error("Error while login in the API");let{token:t}=await e.json();return this.headers={Authorization:`bearer ${t}`,"Cache-Control":"no-store"},this.headers}catch(e){h(fe,e)}}},P=new Y;var $=d(require("node:path"));async function N(r){let{domain:e,dbFilePath:t}=r||{},n=(await y(t)).paths;return{__root:n.root,__cache:$.default.join(n.cxCache,e||""),__components:n.components,__cx:n.cx,__sites:n.exportsDir,__exports:$.default.join(n.exportsDir,e||""),__exports_backup:$.default.join(n.exportsDirBackup,e||""),__ssg:n.ssg,__exports_dist:$.default.join(n.exportsDir,e||"","dist")}}async function V(r,e,t=""){let{endpoint:o,body:n,cacheKey:a="",attempt:m=1,headers:l,useApiCacheDir:c=!0,logToFile:u=!0}=r,E={endpoint:o,body:n,headers:l,cacheKey:a};if(a&&c){let I=new Date,p=await er(E);if(p){if(u){let D=Oe(p),S=D?`site: ${D}`:"",O=Te(Date.now()-I.getTime());W(`${e} (cache) ${S} ${o} - ${O}s ${t}`)}return p}}try{let I=new Date,p={method:e.toUpperCase(),headers:Object.assign({},L,l,P.headers)};e.toLowerCase()!=="get"&&n&&(p.body=JSON.stringify(n),p.headers||(p.headers={}),p.headers["Content-Type"]="application/json");let D=await fetch(o,p);if(!D.ok){if(D.status===404)return null;throw new Error(`HTTP ${D.status}: ${D.statusText}`)}let S=await D.json();if(u){let O=Oe(S),Fe=O?`site: ${O}`:"",Ge=Te(Date.now()-I.getTime());W(`${e} (fetch) ${Fe} ${o} - ${Ge}s ${t}`)}return c&&await Qe(E,S),S}catch(I){let p=I;if(m>M)throw i.log(`
10
+ `)}catch(t){C.unshift(...e),i.error("Error flushing logs:",t)}})();try{await x}finally{x=null}}var we={name:"@griddo/cx",description:"Griddo SSG based on Gatsby",version:"11.10.34",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:{".":{import:"./build/index.js",require:"./build/index.js",types:"./build/index.d.ts"},"./react":{import:"./build/react/index.js",require:"./build/react/index.js",types:"./build/react/index.d.ts"}},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:"npm run test:compile && npm run test:create-render-fixtures && node --env-file=.env --test ./build/__tests__/* && npm run test:remove-render-fixtures","test-exporter":"npm run test:compile && node --env-file=.env --test ./build/__tests__exporter__/","test:create-render-fixtures":"node --env-file=.env ./build/__tests__/utils/create-fixtures","test:remove-render-fixtures":"node --env-file=.env ./build/__tests__/utils/remove-fixtures","test:compile":"tsgo --project tsconfig.tests.json","// 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 --root=../..","// 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:{gatsby:"5.15.0","html-react-parser":"5.2.11"},devDependencies:{"@biomejs/biome":"2.3.4","@griddo/core":"11.10.34","@types/node":"20.19.4","@typescript/native-preview":"7.0.0-dev.20260108.1",cheerio:"1.1.2",esbuild:"0.25.12","p-limit":"7.2.0",typescript:"5.9.3"},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:"46597fedb9b8f5eecfb3cf7d40fe2272b14d9986"};var v={"x-application-id":"griddo-cx","x-client-version":we.version,"x-client-name":"CX"};var g=process.env.GRIDDO_API_URL,Xe=process.env.GRIDDO_PUBLIC_API_URL,Ie=`${g}/ai/embeddings`,ot=`${Xe}/alert`,Se=`${g}/domains`,nt=`${g}/sites/all`,it=`${g}/page`,be=`${g}/login_check`,st=`${g}/debug/reset-render`,at=`${g}/domains/robots`,Te=`${g}/search`,ct=`${g}/settings`,dt=`${g}/domains/`;var pt=`${g}/site/`;var Y=class{headers;async login(){try{let e=await fetch(be,{method:"POST",headers:Object.assign({},v,{"Content-Type":"application/json",Connection:"close"}),body:JSON.stringify({username:ie,password:se})});if(!e.ok)throw new Error("Error while login in the API");let{token:t}=await e.json();return this.headers={Authorization:`bearer ${t}`,"Cache-Control":"no-store"},this.headers}catch(e){h(le,e)}}},P=new Y;var $=d(require("node:path"));async function N(r){let{domain:e,dbFilePath:t}=r||{},n=(await y(t)).paths;return{__root:n.root,__cache:$.default.join(n.cxCache,e||""),__components:n.components,__cx:n.cx,__sites:n.exportsDir,__exports:$.default.join(n.exportsDir,e||""),__exports_backup:$.default.join(n.exportsDirBackup,e||""),__ssg:n.ssg,__exports_dist:$.default.join(n.exportsDir,e||"","dist")}}async function V(r,e,t=""){let{endpoint:o,body:n,cacheKey:a="",attempt:m=1,headers:f,useApiCacheDir:c=!0,logToFile:u=!0}=r,E={endpoint:o,body:n,headers:f,cacheKey:a};if(a&&c){let I=new Date,p=await er(E);if(p){if(u){let D=Ae(p),S=D?`site: ${D}`:"",A=Oe(Date.now()-I.getTime());W(`${e} (cache) ${S} ${o} - ${A}s ${t}`)}return p}}try{let I=new Date,p={method:e.toUpperCase(),headers:Object.assign({},v,f,P.headers)};e.toLowerCase()!=="get"&&n&&(p.body=JSON.stringify(n),p.headers||(p.headers={}),p.headers["Content-Type"]="application/json");let D=await fetch(o,p);if(!D.ok){if(D.status===404)return null;throw new Error(`HTTP ${D.status}: ${D.statusText}`)}let S=await D.json();if(u){let A=Ae(S),Fe=A?`site: ${A}`:"",Ge=Oe(Date.now()-I.getTime());W(`${e} (fetch) ${Fe} ${o} - ${Ge}s ${t}`)}return c&&await Qe(E,S),S}catch(I){let p=I;if(m>M)throw i.log(`
11
11
  Max attempts ${M} reached
12
12
  --------------------------------------
13
13
  - ${e.toUpperCase()} ${o}
14
14
  - BODY: ${JSON.stringify(n)}
15
- - HEADERS: ${JSON.stringify(l)}
15
+ - HEADERS: ${JSON.stringify(f)}
16
16
  - ERROR: ${p.message}
17
17
  --------------------------------------
18
- `),new T(p);return Ze(p,{callInfo:{endpoint:o,body:n}}),i.warn(`Waiting for retry: ${e}`,o),await ze(pe*1e3),V({endpoint:o,body:n,headers:l,cacheKey:a,attempt:m+1},e,t)}}async function Ce(r){return V(r,"get")}async function q(r){let{endpoint:e,body:t,headers:o}=r,n=e.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(t)} lang: ${JSON.stringify(o?.lang)}`;return V(r,"post",n||"")}function Ze(r,e){let{message:t,stack:o}=r,{callInfo:n}=e,a=[];for(let c of Object.keys(n))a.push(`${c}: ${typeof n[c]=="object"?JSON.stringify(n[c]):n[c]}`);let m=a.join(`
19
- `),l=`${t}
20
- ${o}`;i.warn(f.red(`
18
+ `),new O(p);return Ze(p,{callInfo:{endpoint:o,body:n}}),i.warn(`Waiting for retry: ${e}`,o),await ze(pe*1e3),V({endpoint:o,body:n,headers:f,cacheKey:a,attempt:m+1},e,t)}}async function xe(r){return V(r,"get")}async function q(r){let{endpoint:e,body:t,headers:o}=r,n=e.endsWith("/distributor")&&`# ReferenceField body: ${JSON.stringify(t)} lang: ${JSON.stringify(o?.lang)}`;return V(r,"post",n||"")}function Ze(r,e){let{message:t,stack:o}=r,{callInfo:n}=e,a=[];for(let c of Object.keys(n))a.push(`${c}: ${typeof n[c]=="object"?JSON.stringify(n[c]):n[c]}`);let m=a.join(`
19
+ `),f=`${t}
20
+ ${o}`;i.warn(l.red(`
21
21
  =============
22
22
 
23
23
  { Call info }
24
24
  ${m}
25
25
 
26
26
  { Error details }
27
- ${l}
27
+ ${f}
28
28
 
29
29
  =============
30
- `))}function Oe(r){if(!(typeof r!="object"||r===null||Array.isArray(r)))return"site"in r&&r.site?r.site:void 0}function ze(r){return new Promise(e=>setTimeout(e,r))}function Te(r,e=3){return Number.parseFloat((r/1e3).toFixed(e))}async function Pe(r){let{__root:e}=await N(),t=K.default.join(e,"apiCache"),o=xe.default.createHash("sha256");return o.update(JSON.stringify(r)),`${t}/${o.digest("hex")}`}async function Qe(r,e){let t=typeof e=="string"?e:JSON.stringify(e),o=await Pe(r),n=K.default.dirname(o);await w(n)||await B.default.mkdir(n,{recursive:!0}),await B.default.writeFile(o,t,"utf8")}async function er(r){try{let e=await Pe(r),t=await B.default.readFile(e,"utf8");return JSON.parse(t)}catch{return null}}async function Ne(){let r=await Ce({endpoint:Se,useApiCacheDir:!1});r.length||h(me),i.verbose(`getting domains names (${r.length})`);let e=r.filter(({slug:t})=>!!t).map(t=>({...t,slug:t.slug.replace("/","")}));return[...new Set(e)]}async function rr(r){let{title:e,description:t,image:o,pageId:n,languageId:a,siteId:m,url:l,content:c,template:u}=r;return await q({endpoint:Ae,body:{title:e,description:t,image:o,pageId:n,languageId:a,siteId:m,url:l,template:u,content:c},useApiCacheDir:!1,logToFile:!1})}function tr(r){let e=["meta","link","style","script","noscript","nav","header","footer"],t=new RegExp(`<(${e.join("|")})\\b[^>]*>.*?<\\/\\1>`,"gis"),o=r.replace(t,"");return o=o.replace(/<[^>]+>/g," "),o=o.replace(/\s+/g," ").trim(),o}async function or(r){let{htmlContentDir:e,jsonContentDir:t}=r;if(!await w(t)||!await w(e)){i.info("Skipping uploading content to the search endpoint because it has not exported sites.");return}let o=nr(t),n=0;for await(let a of o){let{result:m}=a,{pageContext:l}=m,{page:c,openGraph:u,pageMetadata:E}=l,{compose:I}=c.fullPath,p=A.default.resolve(`${e}/${I}/index.html`),D=await j.default.readFile(p,"utf-8"),S={siteId:c.site,pageId:c.id,title:E?.title||u?.title,languageId:c.language,url:c.fullUrl,template:c.template.templateType||c.templateId,description:E?.description||u?.description,image:u.image,content:tr(D)};try{await rr(S)}catch(O){h(ge,O)}i.verbose(`Uploaded content of: ${c.fullUrl}`),n++}i.info(`Uploaded ${n} pages.
31
- `)}async function*$e(r){let e=await j.default.opendir(r);for await(let t of e)t.isDirectory()?yield*$e(A.default.join(r,t.name)):t.isFile()&&A.default.extname(t.name)===".json"&&t.name.includes("page-data")&&(yield A.default.join(r,t.name))}async function*nr(r){let e=$e(r);for await(let t of e)try{let o=await j.default.readFile(t,"utf8"),n=JSON.parse(o);n.path&&(yield n)}catch(o){h(ue,o)}}async function ir(r){let{__exports:e}=await N({domain:r});return{htmlContentDir:A.default.join(e,"dist"),jsonContentDir:A.default.join(e,"dist","page-data")}}async function sr(){if(U){let r=(await Ne()).map(({slug:e})=>e);for(let e of r){let{htmlContentDir:t,jsonContentDir:o}=await ir(e);i.info(`Uploading search content for ${e}`),await or({htmlContentDir:t,jsonContentDir:o})}}}async function ar(){U&&ae&&(i.info("Triggering AI embeddings..."),await q({endpoint:Ie,useApiCacheDir:!1}))}async function cr(){await P.login(),await sr(),await ar()}Re(cr);
30
+ `))}function Ae(r){if(!(typeof r!="object"||r===null||Array.isArray(r)))return"site"in r&&r.site?r.site:void 0}function ze(r){return new Promise(e=>setTimeout(e,r))}function Oe(r,e=3){return Number.parseFloat((r/1e3).toFixed(e))}async function Pe(r){let{__root:e}=await N(),t=K.default.join(e,"apiCache"),o=Ce.default.createHash("sha256");return o.update(JSON.stringify(r)),`${t}/${o.digest("hex")}`}async function Qe(r,e){let t=typeof e=="string"?e:JSON.stringify(e),o=await Pe(r),n=K.default.dirname(o);await _(n)||await B.default.mkdir(n,{recursive:!0}),await B.default.writeFile(o,t,"utf8")}async function er(r){try{let e=await Pe(r),t=await B.default.readFile(e,"utf8");return JSON.parse(t)}catch{return null}}async function Ne(){let r=await xe({endpoint:Se,useApiCacheDir:!1});r.length||h(me),i.verbose(`getting domains names (${r.length})`);let e=r.filter(({slug:t})=>!!t).map(t=>({...t,slug:t.slug.replace("/","")}));return[...new Set(e)]}async function rr(r){let{title:e,description:t,image:o,pageId:n,languageId:a,siteId:m,url:f,content:c,template:u}=r;return await q({endpoint:Te,body:{title:e,description:t,image:o,pageId:n,languageId:a,siteId:m,url:f,template:u,content:c},useApiCacheDir:!1,logToFile:!1})}function tr(r){let e=["meta","link","style","script","noscript","nav","header","footer"],t=new RegExp(`<(${e.join("|")})\\b[^>]*>.*?<\\/\\1>`,"gis"),o=r.replace(t,"");return o=o.replace(/<[^>]+>/g," "),o=o.replace(/\s+/g," ").trim(),o}async function or(r){let{htmlContentDir:e,jsonContentDir:t}=r;if(!await _(t)||!await _(e)){i.info("Skipping uploading content to the search endpoint because it has not exported sites.");return}let o=nr(t),n=0;for await(let a of o){let{result:m}=a,{pageContext:f}=m,{page:c,openGraph:u,pageMetadata:E}=f,{compose:I}=c.fullPath,p=T.default.resolve(`${e}/${I}/index.html`),D=await j.default.readFile(p,"utf-8"),S={siteId:c.site,pageId:c.id,title:E?.title||u?.title,languageId:c.language,url:c.fullUrl,template:c.template.templateType||c.templateId,description:E?.description||u?.description,image:u.image,content:tr(D)};try{await rr(S)}catch(A){h(ge,A)}i.verbose(`Uploaded content of: ${c.fullUrl}`),n++}i.info(`Uploaded ${n} pages.
31
+ `)}async function*$e(r){let e=await j.default.opendir(r);for await(let t of e)t.isDirectory()?yield*$e(T.default.join(r,t.name)):t.isFile()&&T.default.extname(t.name)===".json"&&t.name.includes("page-data")&&(yield T.default.join(r,t.name))}async function*nr(r){let e=$e(r);for await(let t of e)try{let o=await j.default.readFile(t,"utf8"),n=JSON.parse(o);n.path&&(yield n)}catch(o){h(ue,o)}}async function ir(r){let{__exports:e}=await N({domain:r});return{htmlContentDir:T.default.join(e,"dist"),jsonContentDir:T.default.join(e,"dist","page-data")}}async function sr(){if(U){let r=(await Ne()).map(({slug:e})=>e);for(let e of r){let{htmlContentDir:t,jsonContentDir:o}=await ir(e);i.info(`Uploading search content for ${e}`),await or({htmlContentDir:t,jsonContentDir:o})}}}async function ar(){U&&ae&&(i.info("Triggering AI embeddings..."),await q({endpoint:Ie,useApiCacheDir:!1}))}async function cr(){await P.login(),await sr(),await ar()}Re(cr);
32
32
  //# sourceMappingURL=upload-search-content.js.map