@chaibuilder/pages 0.16.12 → 0.16.13
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/dist/server.cjs +2 -2
- package/dist/server.d.ts +3 -2
- package/dist/server.js +25 -25
- package/package.json +1 -1
package/dist/server.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var G=Object.defineProperty;var H=(
|
|
1
|
+
"use strict";var G=Object.defineProperty;var H=(i,e,a)=>e in i?G(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var p=(i,e,a)=>H(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("lodash-es"),B=require("ai"),K=require("@chaibuilder/runtime"),F=`You are an expert language translator specializing in preserving data structure integrity while translating content.
|
|
2
2
|
|
|
3
3
|
TASK: Translate all text content within the provided JSON structure to the target language.
|
|
4
4
|
|
|
@@ -275,4 +275,4 @@ Format:
|
|
|
275
275
|
- NEVER break the format.
|
|
276
276
|
- NEVER place ANYTHING before '--START--'.
|
|
277
277
|
- The output must always begin with '--START--' and end with '--END--'.
|
|
278
|
-
`.trim();function O(s=null){if(s)switch(s){case"TRANSLATE_CONTENT":return F;case"UPDATE_CONTENT":return V;default:return P}return P}let v=async s=>({...s});const Y=s=>{v=s},R=async s=>{try{return await v(s)}catch(e){return console.error(e),{}}},C={},k=()=>Object.values(C),m=s=>C[s],M=(s,e)=>{C[s]={key:s,...e,hasSlug:!0}},L=(s,e)=>{C[s]={key:s,...e,hasSlug:!1}},w={};function z(s,e){l.has(w,s)&&console.warn(`Collection ${s} already registered`),w[s]={...e,id:s}}const U=()=>Object.values(w),I=s=>l.get(w,s);class D{constructor(e){p(this,"model","google/gemini-2.5-pro");p(this,"temperature",.7);this.options=e,this.model=(e==null?void 0:e.model)??this.model}async handleRequest(e,a){var u,S;const{messages:n,image:t,initiator:i=null,model:o}=e,d=o||this.model,g=n.filter(c=>c.role!=="system"),T=g[g.length-1],f=t?[...g.slice(0,-1),{role:"user",content:[{type:"text",text:T.content},{type:"image",image:t}]}]:n;B.streamText({model:d,system:O(i),messages:f,temperature:this.temperature,onFinish:((u=this.options)==null?void 0:u.onFinish)??l.noop,onError:((S=this.options)==null?void 0:S.onError)??l.noop}).pipeTextStreamToResponse(a)}isConfigured(){return!0}}class j{constructor(e){this.backend=e}async upload({file:e,folderId:a,name:n},t){var o,d;return await((d=(o=this.backend).handleAssetsAction)==null?void 0:d.call(o,{action:"UPLOAD_ASSET",data:{name:n,file:e,folderId:a}},t))}async getAsset({id:e},a){var n,t;return(t=(n=this.backend).handleAssetsAction)==null?void 0:t.call(n,{action:"GET_ASSET",data:{id:e}},a)}async getAssets(e,a){var n,t;return(t=(n=this.backend).handleAssetsAction)==null?void 0:t.call(n,{action:"GET_ASSETS",data:e},a)}async deleteAsset({id:e},a){var n,t;return(t=(n=this.backend).handleAssetsAction)==null?void 0:t.call(n,{action:"DELETE_ASSET",data:{id:e}},a)}async updateAsset({id:e,file:a,description:n},t){var i,o;return(o=(i=this.backend).handleAssetsAction)==null?void 0:o.call(i,{action:"UPDATE_ASSET",data:{id:e,file:a,description:n}},t)}}class x{constructor(e){this.backend=e}async refreshToken(e){var n,t;const a=await((t=(n=this.backend).handleUsersAction)==null?void 0:t.call(n,{action:"REFRESH_TOKEN",data:e}));return a.error?{error:a.error}:a}async login({email:e,password:a}){var t,i;const n=await((i=(t=this.backend).handleUsersAction)==null?void 0:i.call(t,{action:"LOGIN",data:{email:e,password:a}}));return n.error?{error:n.error}:n}async logout(){var e,a;await((a=(e=this.backend).handleUsersAction)==null?void 0:a.call(e,{action:"LOGOUT"}))}async isUserActive(e){var n,t;return(await((t=(n=this.backend).handleUsersAction)==null?void 0:t.call(n,{action:"CHECK_USER_STATUS"},e))).success}async getUserRoleAndPermissions(e){var n,t;return await((t=(n=this.backend).handleUsersAction)==null?void 0:t.call(n,{action:"GET_ROLE_AND_PERMISSIONS"},e))}async getUserInfo(e,a){var t,i;return await((i=(t=this.backend).handleUsersAction)==null?void 0:i.call(t,{action:"GET_CHAI_USER",data:a},e))}}class J{constructor(e){p(this,"fallbackLang","");p(this,"draftMode",!1);p(this,"backend");p(this,"chaiUsers");p(this,"chaiAssets");p(this,"chaiAI");this.backend=e.backend,this._registerDefaultPageTypes(),this.chaiUsers=e.users??new x(this.backend),this.chaiAssets=e.assets??new j(this.backend),this.chaiAI=e.ai??new D}_registerDefaultPageTypes(){M("page",{name:"Static Page",icon:'<svg stroke="currentColor" fill="currentColor" strokeWidth="0" viewBox="0 0 24 24" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M5 8V20H19V8H5ZM5 6H19V4H5V6ZM20 22H4C3.44772 22 3 21.5523 3 21V3C3 2.44772 3.44772 2 4 2H20C20.5523 2 21 2.44772 21 3V21C21 21.5523 20.5523 22 20 22ZM7 10H11V14H7V10ZM7 16H17V18H7V16ZM13 11H17V13H13V11Z"></path></svg>'}),L("global",{name:"Global Block",helpText:"A global block can be reused in multiple pages.",icon:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hash-icon lucide-hash"><line x1="4" x2="20" y1="9" y2="9"/><line x1="4" x2="20" y1="15" y2="15"/><line x1="10" x2="8" y1="3" y2="21"/><line x1="16" x2="14" y1="3" y2="21"/></svg>'})}setFallbackLang(e){if(l.isEmpty(e))throw new Error("Fallback language cannot be empty");this.fallbackLang=e}getFallbackLang(){return this.fallbackLang}setDraftMode(e){this.draftMode=e}isDraftMode(){return this.draftMode}async handle(e,a,n){var i,o,d,g,T,f,A,u,S,c,h,E;switch(e.action){case"UPLOAD_ASSET":return(i=this.chaiAssets)==null?void 0:i.upload({file:e.data.file,name:e.data.name,folderId:e.data.folderId??null,optimize:e.data.optimize??!0},a);case"GET_ASSET":return(o=this.chaiAssets)==null?void 0:o.getAsset(e.data,a);case"GET_ASSETS":return(d=this.chaiAssets)==null?void 0:d.getAssets(e.data,a);case"DELETE_ASSET":return(g=this.chaiAssets)==null?void 0:g.deleteAsset(e.data,a);case"UPDATE_ASSET":return(T=this.chaiAssets)==null?void 0:T.updateAsset(e.data,a);case"REFRESH_TOKEN":return(f=this.chaiUsers)==null?void 0:f.refreshToken(e.data);case"LOGIN":return(A=this.chaiUsers)==null?void 0:A.login(e.data);case"LOGOUT":return(u=this.chaiUsers)==null?void 0:u.logout();case"CHECK_USER_STATUS":return(S=this.chaiUsers)==null?void 0:S.isUserActive(a);case"GET_ROLE_AND_PERMISSIONS":return(c=this.chaiUsers)==null?void 0:c.getUserRoleAndPermissions(a);case"GET_CHAI_USER":return(h=this.chaiUsers)==null?void 0:h.getUserInfo(a,e.data);case"ASK_AI":return(E=this.chaiAI)==null?void 0:E.handleRequest(e.data,n)}if(e.action==="GET_BUILDER_PAGE_DATA"){const r=await R({lang:e.data.lang,draft:!0,inBuilder:!0}),y=m(e.data.pageType);return y?{...y.dataProvider?await y.dataProvider({lang:e.data.lang,draft:!0,inBuilder:!0,pageProps:e.data.pageProps??{}}):{},global:r}:{global:r}}if(e.action==="GET_PAGE_TYPES")return Promise.all(k().map(async r=>({key:r.key,helpText:r.helpText??"",icon:r.icon??"",dynamicSegments:r.dynamicSegments??"",dynamicSlug:r.dynamicSlug??"",hasSlug:r.hasSlug??!0,name:typeof r.name=="function"?await r.name():r.name,...l.isFunction(r.defaultTrackingInfo)?{trackingDefault:r.defaultTrackingInfo()}:{},...l.isFunction(r.defaultSeo)?{defaultSeo:r.defaultSeo()}:{},...l.isFunction(r.defaultJSONLD)?{defaultJSONLD:r.defaultJSONLD()}:{}})));if(e.action==="SEARCH_PAGE_TYPE_ITEMS"){const r=m(e.data.pageType);return r?r.search?await r.search(e.data.query):this.backend.handleAction(e,a):{error:"Page type not found"}}if(e.action==="GET_DYNAMIC_PAGES"){const r=m(e.data.pageType);return r?r.getDynamicPages?await r.getDynamicPages(e.data):[]:{error:"Page type not found"}}if(e.action==="GET_COLLECTIONS")return U().map(r=>l.omit(r,"fetch"));if(e.action==="GET_BLOCK_ASYNC_PROPS"){const r=e.data.block,y=r._type;if(y==="Repeater"&&(r!=null&&r.repeaterItems.includes("{{#"))){const N=r.repeaterItems.replace("{{#","").replace("}}",""),b=I(N);return b?await(b==null?void 0:b.fetch({block:r,pageProps:e.data.pageProps,lang:e.data.lang,draft:!0,inBuilder:!0}))??[]:[]}else{const N=K.getRegisteredChaiBlock(y);return!N||!l.isFunction(N.dataProvider)?{}:await N.dataProvider({block:r,pageProps:e.data.pageProps,lang:e.data.lang,draft:!0,inBuilder:!0})??{}}}const t=await this.backend.handleAction(e,a);return this.emit(e.action,t),t}emit(e,a){var i,o,d;if(!["CREATE_PAGE","UPDATE_PAGE","DELETE_PAGE"].includes(e))return;const n=l.get(a,"page");if(!n)return;const t=m(n.pageType);if(t)switch(e){case"CREATE_PAGE":return(i=t.onCreate)==null?void 0:i.call(t,n);case"UPDATE_PAGE":return(o=t.onUpdate)==null?void 0:o.call(t,n);case"DELETE_PAGE":return(d=t.onDelete)==null?void 0:d.call(t,n)}}async resolvePageLink(e,a){if(!l.startsWith(e,"pageType:"))return e;const n=e.split(":")[1],t=e.split(":")[2],i=m(n);return i?await this.resolveLink(i.key,t,a):e}async resolveLink(e,a,n){const t=m(e);if(!t)return"/not-found";const i=this.isDraftMode();return t.resolveLink?await t.resolveLink(a,i,n):await this.backend.handleAction({action:"GET_LINK",data:{pageType:e,id:a,draft:i,lang:n===this.getFallbackLang()?"":n}})}async getPageBySlug(e){const a=this.isDraftMode(),n={};return k().forEach(t=>{l.has(t,"dynamicSegments")&&t.dynamicSegments&&(n[t.key]=t.dynamicSegments)}),await this.backend.handleAction({action:"GET_PAGE_META",data:{slug:e,draft:a,dynamicSegments:n}})}async getFullPage(e){const a=this.isDraftMode();return await this.backend.handleAction({action:"GET_PAGE",data:{id:e,draft:a,mergePartials:!0}})}async getRevisionPage({id:e,type:a,lang:n}){const t=this.getFallbackLang()===n?"":n;return await this.backend.handleAction({action:"GET_REVISION_PAGE",data:{id:e,type:a,...t?{lang:t}:{}}})}async getSiteSettings(){const e=this.isDraftMode();return await this.backend.handleAction({action:"GET_WEBSITE_SETTINGS",data:{draft:e}})}async getPageData({blocks:e,pageType:a,pageProps:n,lang:t}){var A;const i=this.isDraftMode(),o=m(a),d=e.filter(u=>u._type==="Repeater"&&(u==null?void 0:u.repeaterItems.includes("{{#")));let g={};if(d.length>0){const u=d.map(c=>({collectionId:c.repeaterItems.replace("{{#","").replace("}}",""),block:c}));g=(await Promise.all(u.map(async({collectionId:c,block:h})=>{const E=I(c);try{const r=await(E==null?void 0:E.fetch({lang:t,draft:i,inBuilder:!1,pageProps:n,block:h}));return Promise.resolve({[`#${c}/${h._id}`]:l.get(r,"items",[])??[],[`#${c}/${h._id}/totalItems`]:l.get(r,"totalItems",-1)??-1})}catch{return Promise.resolve({[`#${c}/${h._id}`]:[],[`#${c}/${h._id}/totalItems`]:-1})}}))).reduce((c,h)=>({...c,...h}),{})}const[T,f]=await Promise.all([this.getGlobalData(t),((A=o==null?void 0:o.dataProvider)==null?void 0:A.call(o,{lang:t,draft:i,inBuilder:!1,pageProps:n}))||Promise.resolve({})]);return o?{...f,global:T,...g}:{global:T,...g}}async getGlobalData(e){return await R({lang:e,draft:this.isDraftMode(),inBuilder:!1})}async request(e){return await this.backend.handleAction(e)}getAIHandler(){return this.chaiAI}}class q{constructor(e="",a=_){this.apiKey=e,this.apiUrl=a}async handleUsersAction(e,a){const n=await fetch(`${this.apiUrl}/v1/api/users`,{method:"POST",body:JSON.stringify(e),headers:{"x-chai-api-key":this.apiKey,"x-chai-auth-token":a}}),t=await n.json();return l.has(t,"error")?{...t,status:n.status}:t}async handleAction(e,a){const n=await fetch(`${this.apiUrl}/v1/api/chai`,{method:"POST",body:JSON.stringify(e),headers:{"x-chai-api-key":this.apiKey,"x-chai-auth-token":a}}),t=await n.json();return l.has(t,"error")?{...t,status:n.status}:t}async handleAssetsAction(e,a){return await(await fetch(`${this.apiUrl}/v1/api/assets`,{method:"POST",body:JSON.stringify(e),headers:{"x-chai-api-key":this.apiKey,"x-chai-auth-token":a}})).json()}}const $={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"},_="https://api.chaibuilder.com";exports.API_URL=_;exports.ChaiAIChatHandler=D;exports.ChaiBuilderPages=J;exports.ChaiBuilderPagesBackend=q;exports.ChaiBuilderPagesUserManagement=x;exports.LANGUAGES=$;exports.getAskAiSystemPrompt=O;exports.getChaiCollection=I;exports.getChaiCollections=U;exports.getChaiPageType=m;exports.getChaiPageTypes=k;exports.registerChaiCollection=z;exports.registerChaiGlobalDataProvider=Y;exports.registerChaiPageType=M;exports.registerChaiPartialType=L;
|
|
278
|
+
`.trim();function O(i=null){if(i)switch(i){case"TRANSLATE_CONTENT":return F;case"UPDATE_CONTENT":return V;default:return P}return P}let v=async i=>({...i});const Y=i=>{v=i},R=async i=>{try{return await v(i)}catch(e){return console.error(e),{}}},C={},k=()=>Object.values(C),T=i=>C[i],M=(i,e)=>{C[i]={key:i,...e,hasSlug:!0}},L=(i,e)=>{C[i]={key:i,...e,hasSlug:!1}},w={};function z(i,e){l.has(w,i)&&console.warn(`Collection ${i} already registered`),w[i]={...e,id:i}}const U=()=>Object.values(w),I=i=>l.get(w,i);class D{constructor(e){p(this,"model","google/gemini-2.5-pro");p(this,"temperature",.7);this.options=e,this.model=(e==null?void 0:e.model)??this.model}async handleRequest(e,a){var u,S;const{messages:n,image:t,initiator:s=null,model:o}=e,d=o||this.model,g=n.filter(c=>c.role!=="system"),f=g[g.length-1],A=t?[...g.slice(0,-1),{role:"user",content:[{type:"text",text:f.content},{type:"image",image:t}]}]:n,m=B.streamText({model:d,system:O(s),messages:A,temperature:this.temperature,onFinish:((u=this.options)==null?void 0:u.onFinish)??l.noop,onError:((S=this.options)==null?void 0:S.onError)??l.noop});return a&&m.pipeTextStreamToResponse(a),m}isConfigured(){return!0}}class j{constructor(e){this.backend=e}async upload({file:e,folderId:a,name:n},t){var o,d;return await((d=(o=this.backend).handleAssetsAction)==null?void 0:d.call(o,{action:"UPLOAD_ASSET",data:{name:n,file:e,folderId:a}},t))}async getAsset({id:e},a){var n,t;return(t=(n=this.backend).handleAssetsAction)==null?void 0:t.call(n,{action:"GET_ASSET",data:{id:e}},a)}async getAssets(e,a){var n,t;return(t=(n=this.backend).handleAssetsAction)==null?void 0:t.call(n,{action:"GET_ASSETS",data:e},a)}async deleteAsset({id:e},a){var n,t;return(t=(n=this.backend).handleAssetsAction)==null?void 0:t.call(n,{action:"DELETE_ASSET",data:{id:e}},a)}async updateAsset({id:e,file:a,description:n},t){var s,o;return(o=(s=this.backend).handleAssetsAction)==null?void 0:o.call(s,{action:"UPDATE_ASSET",data:{id:e,file:a,description:n}},t)}}class x{constructor(e){this.backend=e}async refreshToken(e){var n,t;const a=await((t=(n=this.backend).handleUsersAction)==null?void 0:t.call(n,{action:"REFRESH_TOKEN",data:e}));return a.error?{error:a.error}:a}async login({email:e,password:a}){var t,s;const n=await((s=(t=this.backend).handleUsersAction)==null?void 0:s.call(t,{action:"LOGIN",data:{email:e,password:a}}));return n.error?{error:n.error}:n}async logout(){var e,a;await((a=(e=this.backend).handleUsersAction)==null?void 0:a.call(e,{action:"LOGOUT"}))}async isUserActive(e){var n,t;return(await((t=(n=this.backend).handleUsersAction)==null?void 0:t.call(n,{action:"CHECK_USER_STATUS"},e))).success}async getUserRoleAndPermissions(e){var n,t;return await((t=(n=this.backend).handleUsersAction)==null?void 0:t.call(n,{action:"GET_ROLE_AND_PERMISSIONS"},e))}async getUserInfo(e,a){var t,s;return await((s=(t=this.backend).handleUsersAction)==null?void 0:s.call(t,{action:"GET_CHAI_USER",data:a},e))}}class J{constructor(e){p(this,"fallbackLang","");p(this,"draftMode",!1);p(this,"backend");p(this,"chaiUsers");p(this,"chaiAssets");p(this,"chaiAI");this.backend=e.backend,this._registerDefaultPageTypes(),this.chaiUsers=e.users??new x(this.backend),this.chaiAssets=e.assets??new j(this.backend),this.chaiAI=e.ai??new D}_registerDefaultPageTypes(){M("page",{name:"Static Page",icon:'<svg stroke="currentColor" fill="currentColor" strokeWidth="0" viewBox="0 0 24 24" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M5 8V20H19V8H5ZM5 6H19V4H5V6ZM20 22H4C3.44772 22 3 21.5523 3 21V3C3 2.44772 3.44772 2 4 2H20C20.5523 2 21 2.44772 21 3V21C21 21.5523 20.5523 22 20 22ZM7 10H11V14H7V10ZM7 16H17V18H7V16ZM13 11H17V13H13V11Z"></path></svg>'}),L("global",{name:"Global Block",helpText:"A global block can be reused in multiple pages.",icon:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hash-icon lucide-hash"><line x1="4" x2="20" y1="9" y2="9"/><line x1="4" x2="20" y1="15" y2="15"/><line x1="10" x2="8" y1="3" y2="21"/><line x1="16" x2="14" y1="3" y2="21"/></svg>'})}setFallbackLang(e){if(l.isEmpty(e))throw new Error("Fallback language cannot be empty");this.fallbackLang=e}getFallbackLang(){return this.fallbackLang}setDraftMode(e){this.draftMode=e}isDraftMode(){return this.draftMode}async handle(e,a,n){var s,o,d,g,f,A,m,u,S,c,h,E;switch(e.action){case"UPLOAD_ASSET":return(s=this.chaiAssets)==null?void 0:s.upload({file:e.data.file,name:e.data.name,folderId:e.data.folderId??null,optimize:e.data.optimize??!0},a);case"GET_ASSET":return(o=this.chaiAssets)==null?void 0:o.getAsset(e.data,a);case"GET_ASSETS":return(d=this.chaiAssets)==null?void 0:d.getAssets(e.data,a);case"DELETE_ASSET":return(g=this.chaiAssets)==null?void 0:g.deleteAsset(e.data,a);case"UPDATE_ASSET":return(f=this.chaiAssets)==null?void 0:f.updateAsset(e.data,a);case"REFRESH_TOKEN":return(A=this.chaiUsers)==null?void 0:A.refreshToken(e.data);case"LOGIN":return(m=this.chaiUsers)==null?void 0:m.login(e.data);case"LOGOUT":return(u=this.chaiUsers)==null?void 0:u.logout();case"CHECK_USER_STATUS":return(S=this.chaiUsers)==null?void 0:S.isUserActive(a);case"GET_ROLE_AND_PERMISSIONS":return(c=this.chaiUsers)==null?void 0:c.getUserRoleAndPermissions(a);case"GET_CHAI_USER":return(h=this.chaiUsers)==null?void 0:h.getUserInfo(a,e.data);case"ASK_AI":return(E=this.chaiAI)==null?void 0:E.handleRequest(e.data,n)}if(e.action==="GET_BUILDER_PAGE_DATA"){const r=await R({lang:e.data.lang,draft:!0,inBuilder:!0}),y=T(e.data.pageType);return y?{...y.dataProvider?await y.dataProvider({lang:e.data.lang,draft:!0,inBuilder:!0,pageProps:e.data.pageProps??{}}):{},global:r}:{global:r}}if(e.action==="GET_PAGE_TYPES")return Promise.all(k().map(async r=>({key:r.key,helpText:r.helpText??"",icon:r.icon??"",dynamicSegments:r.dynamicSegments??"",dynamicSlug:r.dynamicSlug??"",hasSlug:r.hasSlug??!0,name:typeof r.name=="function"?await r.name():r.name,...l.isFunction(r.defaultTrackingInfo)?{trackingDefault:r.defaultTrackingInfo()}:{},...l.isFunction(r.defaultSeo)?{defaultSeo:r.defaultSeo()}:{},...l.isFunction(r.defaultJSONLD)?{defaultJSONLD:r.defaultJSONLD()}:{}})));if(e.action==="SEARCH_PAGE_TYPE_ITEMS"){const r=T(e.data.pageType);return r?r.search?await r.search(e.data.query):this.backend.handleAction(e,a):{error:"Page type not found"}}if(e.action==="GET_DYNAMIC_PAGES"){const r=T(e.data.pageType);return r?r.getDynamicPages?await r.getDynamicPages(e.data):[]:{error:"Page type not found"}}if(e.action==="GET_COLLECTIONS")return U().map(r=>l.omit(r,"fetch"));if(e.action==="GET_BLOCK_ASYNC_PROPS"){const r=e.data.block,y=r._type;if(y==="Repeater"&&(r!=null&&r.repeaterItems.includes("{{#"))){const N=r.repeaterItems.replace("{{#","").replace("}}",""),b=I(N);return b?await(b==null?void 0:b.fetch({block:r,pageProps:e.data.pageProps,lang:e.data.lang,draft:!0,inBuilder:!0}))??[]:[]}else{const N=K.getRegisteredChaiBlock(y);return!N||!l.isFunction(N.dataProvider)?{}:await N.dataProvider({block:r,pageProps:e.data.pageProps,lang:e.data.lang,draft:!0,inBuilder:!0})??{}}}const t=await this.backend.handleAction(e,a);return this.emit(e.action,t),t}emit(e,a){var s,o,d;if(!["CREATE_PAGE","UPDATE_PAGE","DELETE_PAGE"].includes(e))return;const n=l.get(a,"page");if(!n)return;const t=T(n.pageType);if(t)switch(e){case"CREATE_PAGE":return(s=t.onCreate)==null?void 0:s.call(t,n);case"UPDATE_PAGE":return(o=t.onUpdate)==null?void 0:o.call(t,n);case"DELETE_PAGE":return(d=t.onDelete)==null?void 0:d.call(t,n)}}async resolvePageLink(e,a){if(!l.startsWith(e,"pageType:"))return e;const n=e.split(":")[1],t=e.split(":")[2],s=T(n);return s?await this.resolveLink(s.key,t,a):e}async resolveLink(e,a,n){const t=T(e);if(!t)return"/not-found";const s=this.isDraftMode();return t.resolveLink?await t.resolveLink(a,s,n):await this.backend.handleAction({action:"GET_LINK",data:{pageType:e,id:a,draft:s,lang:n===this.getFallbackLang()?"":n}})}async getPageBySlug(e){const a=this.isDraftMode(),n={};return k().forEach(t=>{l.has(t,"dynamicSegments")&&t.dynamicSegments&&(n[t.key]=t.dynamicSegments)}),await this.backend.handleAction({action:"GET_PAGE_META",data:{slug:e,draft:a,dynamicSegments:n}})}async getFullPage(e){const a=this.isDraftMode();return await this.backend.handleAction({action:"GET_PAGE",data:{id:e,draft:a,mergePartials:!0}})}async getRevisionPage({id:e,type:a,lang:n}){const t=this.getFallbackLang()===n?"":n;return await this.backend.handleAction({action:"GET_REVISION_PAGE",data:{id:e,type:a,...t?{lang:t}:{}}})}async getSiteSettings(){const e=this.isDraftMode();return await this.backend.handleAction({action:"GET_WEBSITE_SETTINGS",data:{draft:e}})}async getPageData({blocks:e,pageType:a,pageProps:n,lang:t}){var m;const s=this.isDraftMode(),o=T(a),d=e.filter(u=>u._type==="Repeater"&&(u==null?void 0:u.repeaterItems.includes("{{#")));let g={};if(d.length>0){const u=d.map(c=>({collectionId:c.repeaterItems.replace("{{#","").replace("}}",""),block:c}));g=(await Promise.all(u.map(async({collectionId:c,block:h})=>{const E=I(c);try{const r=await(E==null?void 0:E.fetch({lang:t,draft:s,inBuilder:!1,pageProps:n,block:h}));return Promise.resolve({[`#${c}/${h._id}`]:l.get(r,"items",[])??[],[`#${c}/${h._id}/totalItems`]:l.get(r,"totalItems",-1)??-1})}catch{return Promise.resolve({[`#${c}/${h._id}`]:[],[`#${c}/${h._id}/totalItems`]:-1})}}))).reduce((c,h)=>({...c,...h}),{})}const[f,A]=await Promise.all([this.getGlobalData(t),((m=o==null?void 0:o.dataProvider)==null?void 0:m.call(o,{lang:t,draft:s,inBuilder:!1,pageProps:n}))||Promise.resolve({})]);return o?{...A,global:f,...g}:{global:f,...g}}async getGlobalData(e){return await R({lang:e,draft:this.isDraftMode(),inBuilder:!1})}async request(e){return await this.backend.handleAction(e)}getAIHandler(){return this.chaiAI}}class q{constructor(e="",a=_){this.apiKey=e,this.apiUrl=a}async handleUsersAction(e,a){const n=await fetch(`${this.apiUrl}/v1/api/users`,{method:"POST",body:JSON.stringify(e),headers:{"x-chai-api-key":this.apiKey,"x-chai-auth-token":a}}),t=await n.json();return l.has(t,"error")?{...t,status:n.status}:t}async handleAction(e,a){const n=await fetch(`${this.apiUrl}/v1/api/chai`,{method:"POST",body:JSON.stringify(e),headers:{"x-chai-api-key":this.apiKey,"x-chai-auth-token":a}}),t=await n.json();return l.has(t,"error")?{...t,status:n.status}:t}async handleAssetsAction(e,a){return await(await fetch(`${this.apiUrl}/v1/api/assets`,{method:"POST",body:JSON.stringify(e),headers:{"x-chai-api-key":this.apiKey,"x-chai-auth-token":a}})).json()}}const $={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"},_="https://api.chaibuilder.com";exports.API_URL=_;exports.ChaiAIChatHandler=D;exports.ChaiBuilderPages=J;exports.ChaiBuilderPagesBackend=q;exports.ChaiBuilderPagesUserManagement=x;exports.LANGUAGES=$;exports.getAskAiSystemPrompt=O;exports.getChaiCollection=I;exports.getChaiCollections=U;exports.getChaiPageType=T;exports.getChaiPageTypes=k;exports.registerChaiCollection=z;exports.registerChaiGlobalDataProvider=Y;exports.registerChaiPageType=M;exports.registerChaiPartialType=L;
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ChaiBlock } from '@chaibuilder/runtime';
|
|
2
2
|
import { ChaiPageProps } from '@chaibuilder/runtime';
|
|
3
|
+
import { StreamTextResult } from 'ai';
|
|
3
4
|
|
|
4
5
|
export declare type AIChatOptions = {
|
|
5
6
|
messages: any[];
|
|
@@ -26,7 +27,7 @@ export declare class ChaiAIChatHandler implements ChaiBuilderPagesAIInterface {
|
|
|
26
27
|
onFinish?: () => void;
|
|
27
28
|
onError?: (error: Error) => void;
|
|
28
29
|
} | undefined);
|
|
29
|
-
handleRequest(options: AIChatOptions, res
|
|
30
|
+
handleRequest(options: AIChatOptions, res?: any): Promise<StreamTextResult<any, any>>;
|
|
30
31
|
isConfigured(): boolean;
|
|
31
32
|
}
|
|
32
33
|
|
|
@@ -107,7 +108,7 @@ export declare class ChaiBuilderPages implements ChaiBuilderPagesInterface {
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
export declare interface ChaiBuilderPagesAIInterface {
|
|
110
|
-
handleRequest(options: AIChatOptions, res: any): Promise<
|
|
111
|
+
handleRequest(options: AIChatOptions, res: any): Promise<StreamTextResult<any, any>>;
|
|
111
112
|
isConfigured(): boolean;
|
|
112
113
|
}
|
|
113
114
|
|
package/dist/server.js
CHANGED
|
@@ -305,7 +305,7 @@ const te = (s) => {
|
|
|
305
305
|
} catch (e) {
|
|
306
306
|
return console.error(e), {};
|
|
307
307
|
}
|
|
308
|
-
}, C = {}, v = () => Object.values(C),
|
|
308
|
+
}, C = {}, v = () => Object.values(C), T = (s) => C[s], Y = (s, e) => {
|
|
309
309
|
C[s] = { key: s, ...e, hasSlug: !0 };
|
|
310
310
|
}, z = (s, e) => {
|
|
311
311
|
C[s] = { key: s, ...e, hasSlug: !1 };
|
|
@@ -322,14 +322,14 @@ class J {
|
|
|
322
322
|
}
|
|
323
323
|
async handleRequest(e, a) {
|
|
324
324
|
var d, A;
|
|
325
|
-
const { messages: n, image: t, initiator: i = null, model: o } = e, c = o || this.model, h = n.filter((l) => l.role !== "system"),
|
|
325
|
+
const { messages: n, image: t, initiator: i = null, model: o } = e, c = o || this.model, h = n.filter((l) => l.role !== "system"), m = h[h.length - 1], f = t ? [
|
|
326
326
|
...h.slice(0, -1),
|
|
327
327
|
{
|
|
328
328
|
role: "user",
|
|
329
329
|
content: [
|
|
330
330
|
{
|
|
331
331
|
type: "text",
|
|
332
|
-
text:
|
|
332
|
+
text: m.content
|
|
333
333
|
},
|
|
334
334
|
{
|
|
335
335
|
type: "image",
|
|
@@ -337,15 +337,15 @@ class J {
|
|
|
337
337
|
}
|
|
338
338
|
]
|
|
339
339
|
}
|
|
340
|
-
] : n
|
|
341
|
-
H({
|
|
340
|
+
] : n, p = H({
|
|
342
341
|
model: c,
|
|
343
342
|
system: V(i),
|
|
344
|
-
messages:
|
|
343
|
+
messages: f,
|
|
345
344
|
temperature: this.temperature,
|
|
346
345
|
onFinish: ((d = this.options) == null ? void 0 : d.onFinish) ?? R,
|
|
347
346
|
onError: ((A = this.options) == null ? void 0 : A.onError) ?? R
|
|
348
|
-
})
|
|
347
|
+
});
|
|
348
|
+
return a && p.pipeTextStreamToResponse(a), p;
|
|
349
349
|
}
|
|
350
350
|
isConfigured() {
|
|
351
351
|
return !0;
|
|
@@ -516,7 +516,7 @@ class ne {
|
|
|
516
516
|
return this.draftMode;
|
|
517
517
|
}
|
|
518
518
|
async handle(e, a, n) {
|
|
519
|
-
var i, o, c, h,
|
|
519
|
+
var i, o, c, h, m, f, p, d, A, l, u, E;
|
|
520
520
|
switch (e.action) {
|
|
521
521
|
// Media
|
|
522
522
|
case "UPLOAD_ASSET":
|
|
@@ -536,12 +536,12 @@ class ne {
|
|
|
536
536
|
case "DELETE_ASSET":
|
|
537
537
|
return (h = this.chaiAssets) == null ? void 0 : h.deleteAsset(e.data, a);
|
|
538
538
|
case "UPDATE_ASSET":
|
|
539
|
-
return (
|
|
539
|
+
return (m = this.chaiAssets) == null ? void 0 : m.updateAsset(e.data, a);
|
|
540
540
|
// Users
|
|
541
541
|
case "REFRESH_TOKEN":
|
|
542
|
-
return (
|
|
542
|
+
return (f = this.chaiUsers) == null ? void 0 : f.refreshToken(e.data);
|
|
543
543
|
case "LOGIN":
|
|
544
|
-
return (
|
|
544
|
+
return (p = this.chaiUsers) == null ? void 0 : p.login(e.data);
|
|
545
545
|
case "LOGOUT":
|
|
546
546
|
return (d = this.chaiUsers) == null ? void 0 : d.logout();
|
|
547
547
|
case "CHECK_USER_STATUS":
|
|
@@ -558,7 +558,7 @@ class ne {
|
|
|
558
558
|
lang: e.data.lang,
|
|
559
559
|
draft: !0,
|
|
560
560
|
inBuilder: !0
|
|
561
|
-
}), S =
|
|
561
|
+
}), S = T(e.data.pageType);
|
|
562
562
|
return S ? {
|
|
563
563
|
...S.dataProvider ? await S.dataProvider({
|
|
564
564
|
lang: e.data.lang,
|
|
@@ -585,11 +585,11 @@ class ne {
|
|
|
585
585
|
}))
|
|
586
586
|
);
|
|
587
587
|
if (e.action === "SEARCH_PAGE_TYPE_ITEMS") {
|
|
588
|
-
const r =
|
|
588
|
+
const r = T(e.data.pageType);
|
|
589
589
|
return r ? r.search ? await r.search(e.data.query) : this.backend.handleAction(e, a) : { error: "Page type not found" };
|
|
590
590
|
}
|
|
591
591
|
if (e.action === "GET_DYNAMIC_PAGES") {
|
|
592
|
-
const r =
|
|
592
|
+
const r = T(e.data.pageType);
|
|
593
593
|
return r ? r.getDynamicPages ? await r.getDynamicPages(e.data) : [] : { error: "Page type not found" };
|
|
594
594
|
}
|
|
595
595
|
if (e.action === "GET_COLLECTIONS")
|
|
@@ -624,7 +624,7 @@ class ne {
|
|
|
624
624
|
if (!["CREATE_PAGE", "UPDATE_PAGE", "DELETE_PAGE"].includes(e)) return;
|
|
625
625
|
const n = w(a, "page");
|
|
626
626
|
if (!n) return;
|
|
627
|
-
const t =
|
|
627
|
+
const t = T(n.pageType);
|
|
628
628
|
if (t)
|
|
629
629
|
switch (e) {
|
|
630
630
|
case "CREATE_PAGE":
|
|
@@ -643,11 +643,11 @@ class ne {
|
|
|
643
643
|
async resolvePageLink(e, a) {
|
|
644
644
|
if (!G(e, "pageType:"))
|
|
645
645
|
return e;
|
|
646
|
-
const n = e.split(":")[1], t = e.split(":")[2], i =
|
|
646
|
+
const n = e.split(":")[1], t = e.split(":")[2], i = T(n);
|
|
647
647
|
return i ? await this.resolveLink(i.key, t, a) : e;
|
|
648
648
|
}
|
|
649
649
|
async resolveLink(e, a, n) {
|
|
650
|
-
const t =
|
|
650
|
+
const t = T(e);
|
|
651
651
|
if (!t)
|
|
652
652
|
return "/not-found";
|
|
653
653
|
const i = this.isDraftMode();
|
|
@@ -705,8 +705,8 @@ class ne {
|
|
|
705
705
|
pageProps: n,
|
|
706
706
|
lang: t
|
|
707
707
|
}) {
|
|
708
|
-
var
|
|
709
|
-
const i = this.isDraftMode(), o =
|
|
708
|
+
var p;
|
|
709
|
+
const i = this.isDraftMode(), o = T(a), c = e.filter(
|
|
710
710
|
(d) => d._type === "Repeater" && (d == null ? void 0 : d.repeaterItems.includes("{{#"))
|
|
711
711
|
);
|
|
712
712
|
let h = {};
|
|
@@ -736,9 +736,9 @@ class ne {
|
|
|
736
736
|
})
|
|
737
737
|
)).reduce((l, u) => ({ ...l, ...u }), {});
|
|
738
738
|
}
|
|
739
|
-
const [
|
|
739
|
+
const [m, f] = await Promise.all([
|
|
740
740
|
this.getGlobalData(t),
|
|
741
|
-
((
|
|
741
|
+
((p = o == null ? void 0 : o.dataProvider) == null ? void 0 : p.call(o, {
|
|
742
742
|
lang: t,
|
|
743
743
|
draft: i,
|
|
744
744
|
inBuilder: !1,
|
|
@@ -746,10 +746,10 @@ class ne {
|
|
|
746
746
|
})) || Promise.resolve({})
|
|
747
747
|
]);
|
|
748
748
|
return o ? {
|
|
749
|
-
...
|
|
750
|
-
global:
|
|
749
|
+
...f,
|
|
750
|
+
global: m,
|
|
751
751
|
...h
|
|
752
|
-
} : { global:
|
|
752
|
+
} : { global: m, ...h };
|
|
753
753
|
}
|
|
754
754
|
async getGlobalData(e) {
|
|
755
755
|
return await P({
|
|
@@ -1004,7 +1004,7 @@ export {
|
|
|
1004
1004
|
V as getAskAiSystemPrompt,
|
|
1005
1005
|
M as getChaiCollection,
|
|
1006
1006
|
j as getChaiCollections,
|
|
1007
|
-
|
|
1007
|
+
T as getChaiPageType,
|
|
1008
1008
|
v as getChaiPageTypes,
|
|
1009
1009
|
ae as registerChaiCollection,
|
|
1010
1010
|
te as registerChaiGlobalDataProvider,
|