@chaibuilder/sdk 4.0.0-beta.49 → 4.0.0-beta.51

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.
Files changed (156) hide show
  1. package/README.md +35 -52
  2. package/dist/{2SSKDMRQ-CjvuNdPo.cjs → 2SSKDMRQ-BSYe_xPq.cjs} +1 -1
  3. package/dist/{2SSKDMRQ-Dvf9zadl.js → 2SSKDMRQ-Dv-C_YAA.js} +3 -3
  4. package/dist/{AP7HFJJL-DYFttFoI.cjs → AP7HFJJL-BJolKJBt.cjs} +1 -1
  5. package/dist/{AP7HFJJL-q4dJdyFs.js → AP7HFJJL-DhdVstVC.js} +1 -1
  6. package/dist/{IconPicker-Bf163F7t.js → IconPicker-BBkl0T8b.js} +13 -13
  7. package/dist/{IconPicker-JWhYq2Gp.cjs → IconPicker-C0WWlb8t.cjs} +1 -1
  8. package/dist/{WDYDFRGG-O9GIrtX0.js → WDYDFRGG-CJs2MxSq.js} +4 -4
  9. package/dist/{WDYDFRGG-BEksfGMC.cjs → WDYDFRGG-DRt6Zg7Q.cjs} +1 -1
  10. package/dist/{actions-registery-BHbZHkE3.cjs → actions-registery-CLL3KrNv.cjs} +2 -2
  11. package/dist/{actions-registery-gJb_wq2F.js → actions-registery-CrGIlqUX.js} +88 -88
  12. package/dist/actions.cjs +1 -1
  13. package/dist/actions.js +2 -2
  14. package/dist/{add-new-language-page-BfUp5Ua2.cjs → add-new-language-page-ByMSfRcN.cjs} +1 -1
  15. package/dist/{add-new-language-page-CRR93tLq.js → add-new-language-page-DtVoDNfI.js} +35 -35
  16. package/dist/{add-new-page-B8NGK6WS.cjs → add-new-page-CnuChfJz.cjs} +1 -1
  17. package/dist/add-new-page-DanzzvYo.js +31 -0
  18. package/dist/{ai-panel-default-lang-BXYQye3N.js → ai-panel-default-lang-BaPz2d_6.js} +35 -35
  19. package/dist/{ai-panel-default-lang-VhgmHFoQ.cjs → ai-panel-default-lang-CoIQSz_Y.cjs} +2 -2
  20. package/dist/{ai-panel-other-lang-DaCf-cq4.js → ai-panel-other-lang--i-5z4e2.js} +22 -22
  21. package/dist/{ai-panel-other-lang-Ds0EXeUC.cjs → ai-panel-other-lang-ChlMVodg.cjs} +1 -1
  22. package/dist/{ai-prompt-input-7iWk72w5.js → ai-prompt-input-BQi0VDJC.js} +77 -77
  23. package/dist/{ai-prompt-input-nZ5_Dm7X.cjs → ai-prompt-input-BT5426AB.cjs} +1 -1
  24. package/dist/{ai-translation-prompt-1OUs1P7n.js → ai-translation-prompt-BN78s33t.js} +8 -8
  25. package/dist/{ai-translation-prompt-B16cK-1Q.cjs → ai-translation-prompt-BQPaekp3.cjs} +1 -1
  26. package/dist/{apply-binding-CBSjMYSk.cjs → apply-binding-Cjh1kqMO.cjs} +1 -1
  27. package/dist/{apply-binding-vAuN-TGV.js → apply-binding-v_W4uR3U.js} +28 -28
  28. package/dist/{plugin-BSjgGgwo.js → chai-theme-helpers-BEf2rwE4.js} +83 -83
  29. package/dist/chai-theme-helpers-q3nwoNht.cjs +22 -0
  30. package/dist/{change-password-modal-D5eXjiYq.cjs → change-password-modal-DHUrrKw7.cjs} +1 -1
  31. package/dist/{change-password-modal-CdvJR1Ln.js → change-password-modal-pEp-nMNb.js} +30 -30
  32. package/dist/{code-display-DdWcOQ_i.js → code-display-BaLKScgW.js} +5 -5
  33. package/dist/{code-display-BR-gij5j.cjs → code-display-i7jb2kmw.cjs} +1 -1
  34. package/dist/{code-editor-CyLjDiEp.js → code-editor-CRoniyP0.js} +12 -12
  35. package/dist/{code-editor-SWbfFj1E.cjs → code-editor-gwFRjQ2_.cjs} +1 -1
  36. package/dist/core.cjs +1 -1
  37. package/dist/core.d.ts +0 -5
  38. package/dist/core.js +49 -49
  39. package/dist/{css-import-modal-Be47CBJn.js → css-import-modal-B3qxX9Iv.js} +14 -14
  40. package/dist/{css-import-modal-Bdwgd05S.cjs → css-import-modal-nAB5FSwn.cjs} +2 -2
  41. package/dist/{delete-page-C99K2qzS.js → delete-page-DbawNFf7.js} +13 -13
  42. package/dist/{delete-page-DLohaU-U.cjs → delete-page-YP1HEAoD.cjs} +1 -1
  43. package/dist/{digital-asset-manager-BZMb6sC7.js → digital-asset-manager-DTD5mf24.js} +388 -357
  44. package/dist/digital-asset-manager-kJnuMqpw.cjs +1 -0
  45. package/dist/{duplicate-page-D5Gtvqdv.cjs → duplicate-page-CxqW_EO7.cjs} +1 -1
  46. package/dist/{duplicate-page-CDc2X0eW.js → duplicate-page-DnRb1y6K.js} +19 -19
  47. package/dist/{dynamic-page-selector-DZHhX008.cjs → dynamic-page-selector-2EqJhUrB.cjs} +1 -1
  48. package/dist/{dynamic-page-selector-DvNBXo6o.js → dynamic-page-selector-D6VLDIN9.js} +17 -17
  49. package/dist/{get-chai-builder-tailwind-config-7CxFxEYL.cjs → get-chai-builder-tailwind-config-DNp8Vhme.cjs} +1 -1
  50. package/dist/{get-chai-builder-tailwind-config-DC4sDOYK.js → get-chai-builder-tailwind-config-k8l5sdcw.js} +3 -3
  51. package/dist/{get-chai-builder-theme-BpuwSLeS.js → get-chai-builder-theme-DLpviqPJ.js} +1 -1
  52. package/dist/get-chai-builder-theme-Du4ARJlw.cjs +1 -0
  53. package/dist/{image-editor-DwhTYkVR.cjs → image-editor-BQcOGsli.cjs} +1 -1
  54. package/dist/{image-editor-BBvvi9Vm.js → image-editor-CMf731xL.js} +15 -15
  55. package/dist/index-BYrRPW_c.cjs +5 -0
  56. package/dist/index-D-r_K4yA.cjs +160 -0
  57. package/dist/{index-OuHV9Ann.js → index-DPV6NiJ-.js} +5894 -6049
  58. package/dist/index-DqzFD1CG.js +4861 -0
  59. package/dist/{mark-as-template-CP_F9ZQ4.js → mark-as-template-D7jqSCXw.js} +28 -28
  60. package/dist/{mark-as-template-B9yLcasI.cjs → mark-as-template-DyB56HzI.cjs} +1 -1
  61. package/dist/{nested-path-selector-content-DmtCI3q9.js → nested-path-selector-content-dwSikrsV.js} +2 -2
  62. package/dist/{nested-path-selector-content-aTdu-o0e.cjs → nested-path-selector-content-g9_Tq_sR.cjs} +1 -1
  63. package/dist/no-language-page-content-BRITuyfN.js +43 -0
  64. package/dist/{no-language-page-content-C-MCdPXt.cjs → no-language-page-content-ZvMNVY-Y.cjs} +1 -1
  65. package/dist/{no-language-page-dialog-D4QIAHnE.cjs → no-language-page-dialog-Cndq8xRP.cjs} +1 -1
  66. package/dist/no-language-page-dialog-D7L9nVb9.js +10 -0
  67. package/dist/page-creator-BAIbU14q.js +652 -0
  68. package/dist/page-creator-qL3-M8g3.cjs +1 -0
  69. package/dist/{page-manager-new-ah6QYar2.cjs → page-manager-new-By3eGO3i.cjs} +1 -1
  70. package/dist/{page-manager-new-ttsrxdW9.js → page-manager-new-YRG89y4f.js} +63 -63
  71. package/dist/page-manager-search-and-filter-BbdgOU9V.cjs +1 -0
  72. package/dist/page-manager-search-and-filter-Cllju4CV.js +184 -0
  73. package/dist/pages.cjs +1 -1
  74. package/dist/pages.d.ts +0 -15
  75. package/dist/pages.js +20 -21
  76. package/dist/{publish-pages-content-KZVMHT6V.js → publish-pages-content-CG5LBUnY.js} +48 -48
  77. package/dist/{publish-pages-content-BrajJUcP.cjs → publish-pages-content-DxMiBxNU.cjs} +1 -1
  78. package/dist/{register-chai-top-bar-DyW9GPzV.cjs → register-chai-top-bar-CCssW5dL.cjs} +1 -1
  79. package/dist/{register-chai-top-bar-D6GjnauV.js → register-chai-top-bar-DWmJ2efT.js} +11 -11
  80. package/dist/render.cjs +1 -1
  81. package/dist/render.js +54 -54
  82. package/dist/{rte-widget-modal-CiTwsXTr.cjs → rte-widget-modal-CsTqFJc_.cjs} +1 -1
  83. package/dist/{rte-widget-modal-IU8JzPuZ.js → rte-widget-modal-DoeTMRtX.js} +2 -2
  84. package/dist/runtime-client.cjs +1 -1
  85. package/dist/runtime-client.js +1 -1
  86. package/dist/runtime.cjs +1 -1
  87. package/dist/runtime.js +1 -1
  88. package/dist/sdk.css +1 -1
  89. package/dist/{selected-block-display-CidmQ-wz.js → selected-block-display-Ck1kkNEi.js} +17 -28
  90. package/dist/{selected-block-display-CAFEOrLV.cjs → selected-block-display-DSow6N4b.cjs} +1 -1
  91. package/dist/seo-panel---mYZmLD.js +559 -0
  92. package/dist/seo-panel-mfX63fua.cjs +1 -0
  93. package/dist/{shared-json-ld-uvMmwCYp.js → shared-json-ld-B3I_RLE2.js} +46 -46
  94. package/dist/{shared-json-ld-CMH-eRUq.cjs → shared-json-ld-CGgwUOlW.cjs} +1 -1
  95. package/dist/{slug-input-DLWTMTsO.js → slug-input-DQ4t3-Tt.js} +5 -5
  96. package/dist/{slug-input-CiHC5l3r.cjs → slug-input-DaNbl597.cjs} +1 -1
  97. package/dist/supabase-actions.cjs +1 -1
  98. package/dist/supabase-actions.js +2 -2
  99. package/dist/types.d.ts +0 -96
  100. package/dist/{unmark-as-template-F7TdgWjI.cjs → unmark-as-template-CZ65AE4v.cjs} +1 -1
  101. package/dist/{unmark-as-template-C5ovsEBP.js → unmark-as-template-DvmoTbVu.js} +11 -11
  102. package/dist/unpublish-page-3--vO5b0.js +28 -0
  103. package/dist/{unpublish-page-CUr8Xub6.cjs → unpublish-page-B46TiWlU.cjs} +1 -1
  104. package/dist/{unpublished-partials-modal-BhNAub_z.js → unpublished-partials-modal-DVMz3q83.js} +18 -15
  105. package/dist/{unpublished-partials-modal-Cv5R9-hi.cjs → unpublished-partials-modal-U5lKBOSR.cjs} +1 -1
  106. package/dist/utils.cjs +1 -1
  107. package/dist/utils.js +2 -2
  108. package/dist/web-blocks.cjs +1 -1
  109. package/dist/web-blocks.js +2 -2
  110. package/dist/{web-preview-D9pXonAv.js → web-preview-D5o5XQo0.js} +2 -2
  111. package/dist/{web-preview-CuMYekVJ.cjs → web-preview-Da3RhcjQ.cjs} +1 -1
  112. package/package.json +1 -1
  113. package/dist/active-in-another-tab-B4Ur0JP7.js +0 -35
  114. package/dist/active-in-another-tab-BPdx4lWh.cjs +0 -1
  115. package/dist/add-new-page-Ppy5-y5j.js +0 -31
  116. package/dist/continue-editing-in-this-client-BrSvK-Ay.js +0 -25
  117. package/dist/continue-editing-in-this-client-Cmi-GkYZ.cjs +0 -1
  118. package/dist/design-token-usage-D1lWCJ3L.js +0 -114
  119. package/dist/design-token-usage-eY2wQ0l3.cjs +0 -1
  120. package/dist/digital-asset-manager-Z5aJxkq0.cjs +0 -1
  121. package/dist/get-chai-builder-theme-B5RkBTsB.cjs +0 -1
  122. package/dist/image-compression-DPFITwOL.js +0 -37
  123. package/dist/image-compression-UaU7Bwqe.cjs +0 -1
  124. package/dist/index-BVwFJWDq.cjs +0 -5
  125. package/dist/index-DCJDQs1a.cjs +0 -160
  126. package/dist/index-LBTm1Jmk.js +0 -5199
  127. package/dist/json-diff-viewer-Cb1CmRqP.cjs +0 -8
  128. package/dist/json-diff-viewer-DG6qMOBS.js +0 -261
  129. package/dist/lang-panel-B3USOxGq.js +0 -216
  130. package/dist/lang-panel-DxoJ0v4y.cjs +0 -1
  131. package/dist/manage-design-tokens-6YGIctip.js +0 -446
  132. package/dist/manage-design-tokens-modal-BSSCXH8Y.cjs +0 -1
  133. package/dist/manage-design-tokens-modal-CzsnN49F.js +0 -161
  134. package/dist/manage-design-tokens-udLBvkHA.cjs +0 -1
  135. package/dist/no-language-page-content-D8t5dfgh.js +0 -43
  136. package/dist/no-language-page-dialog-C_fHI2zI.js +0 -10
  137. package/dist/page-creator-Cz_ah-qE.cjs +0 -1
  138. package/dist/page-creator-DKEkuGCO.js +0 -796
  139. package/dist/page-lock-CwZKJ4IE.js +0 -30
  140. package/dist/page-lock-DdCvtA-I.cjs +0 -1
  141. package/dist/page-locked-dialog-CrTDBoC4.cjs +0 -1
  142. package/dist/page-locked-dialog-DqLlooUz.js +0 -136
  143. package/dist/page-manager-search-and-filter-D7AupT6_.cjs +0 -1
  144. package/dist/page-manager-search-and-filter-bsqZ6wnI.js +0 -210
  145. package/dist/page-revisions-content-B6hsIla7.cjs +0 -1
  146. package/dist/page-revisions-content-C5O8_Fms.js +0 -459
  147. package/dist/plugin-DHpuZZXz.cjs +0 -22
  148. package/dist/save-to-lib-DMnv7ENo.js +0 -429
  149. package/dist/save-to-lib-Dc700Aop.cjs +0 -1
  150. package/dist/seo-panel-Br8gxDxu.js +0 -789
  151. package/dist/seo-panel-CMY-adM-.cjs +0 -2
  152. package/dist/take-over-request-IRLgF1dG.cjs +0 -1
  153. package/dist/take-over-request-KdR1_h_K.js +0 -64
  154. package/dist/translation-warning-modal-CLZ9tC1F.cjs +0 -1
  155. package/dist/translation-warning-modal-CzNt6LDO.js +0 -27
  156. package/dist/unpublish-page-0fR1o0b7.js +0 -28
@@ -1,5 +1,5 @@
1
- import { c, T as l, P as m, a as v, D as u, Q as i } from "./AP7HFJJL-q4dJdyFs.js";
2
- import { v as d, w as f, x as e } from "./index-LBTm1Jmk.js";
1
+ import { c, T as l, P as m, a as u, D as v, Q as i } from "./AP7HFJJL-DhdVstVC.js";
2
+ import { r as d, s as f, t as e } from "./index-DqzFD1CG.js";
3
3
  var h = (t) => {
4
4
  const [r, o] = c({
5
5
  prefix: "TanstackQueryDevtools"
@@ -14,10 +14,10 @@ var h = (t) => {
14
14
  localStore: r,
15
15
  setLocalStore: o,
16
16
  get children() {
17
- return e(v.Provider, {
17
+ return e(u.Provider, {
18
18
  value: s,
19
19
  get children() {
20
- return e(u, {
20
+ return e(v, {
21
21
  localStore: r,
22
22
  setLocalStore: o
23
23
  });
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./AP7HFJJL-DYFttFoI.cjs"),t=require("./index-BVwFJWDq.cjs");var s=o=>{const[r,n]=e.createLocalStorage({prefix:"TanstackQueryDevtools"}),a=t.getPreferredColorScheme(),l=t.createMemo(()=>{const c=o.theme||r.theme_preference||e.THEME_PREFERENCE;return c!=="system"?c:a()});return t.createComponent(e.QueryDevtoolsContext.Provider,{value:o,get children(){return t.createComponent(e.PiPProvider,{localStore:r,setLocalStore:n,get children(){return t.createComponent(e.ThemeContext.Provider,{value:l,get children(){return t.createComponent(e.Devtools,{localStore:r,setLocalStore:n})}})}})}})},u=s;exports.default=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./AP7HFJJL-BJolKJBt.cjs"),t=require("./index-BYrRPW_c.cjs");var s=o=>{const[r,n]=e.createLocalStorage({prefix:"TanstackQueryDevtools"}),a=t.getPreferredColorScheme(),l=t.createMemo(()=>{const c=o.theme||r.theme_preference||e.THEME_PREFERENCE;return c!=="system"?c:a()});return t.createComponent(e.QueryDevtoolsContext.Provider,{value:o,get children(){return t.createComponent(e.PiPProvider,{localStore:r,setLocalStore:n,get children(){return t.createComponent(e.ThemeContext.Provider,{value:l,get children(){return t.createComponent(e.Devtools,{localStore:r,setLocalStore:n})}})}})}})},u=s;exports.default=u;
@@ -1,4 +1,4 @@
1
- "use strict";var hu=Object.defineProperty;var mu=(e,t,r)=>t in e?hu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Ie=(e,t,r)=>mu(e,typeof t!="symbol"?t+"":t,r);const ut=require("./register-partial-type-ig9fUWIJ.cjs"),j=require("lodash-es"),yu=require("./_commonjsHelpers-DwGv2jUC.cjs"),vu=require("fs"),wu=require("path"),_u=require("os"),is=require("crypto"),Tu=require("drizzle-orm/postgres-js"),Eu=require("postgres"),g=require("drizzle-orm/pg-core"),h=require("drizzle-orm"),bu=require("./models-CQaC3EBW.cjs"),v=require("zod"),Iu=require("./core-czmLeR0h.cjs"),Su=require("node:crypto");var ls="vercel.ai.error",Au=Symbol.for(ls),Ea,ba,H=class us extends(ba=Error,Ea=Au,ba){constructor({name:t,message:r,cause:n}){super(r),this[Ea]=!0,this.name=t,this.cause=n}static isInstance(t){return us.hasMarker(t,ls)}static hasMarker(t,r){const n=Symbol.for(r);return t!=null&&typeof t=="object"&&n in t&&typeof t[n]=="boolean"&&t[n]===!0}},cs="AI_APICallError",ds=`vercel.ai.error.${cs}`,Nu=Symbol.for(ds),Ia,Sa,$e=class extends(Sa=H,Ia=Nu,Sa){constructor({message:e,url:t,requestBodyValues:r,statusCode:n,responseHeaders:a,responseBody:o,cause:s,isRetryable:i=n!=null&&(n===408||n===409||n===429||n>=500),data:l}){super({name:cs,message:e,cause:s}),this[Ia]=!0,this.url=t,this.requestBodyValues=r,this.statusCode=n,this.responseHeaders=a,this.responseBody=o,this.isRetryable=i,this.data=l}static isInstance(e){return H.hasMarker(e,ds)}},ps="AI_EmptyResponseBodyError",fs=`vercel.ai.error.${ps}`,xu=Symbol.for(fs),Aa,Na,Ou=class extends(Na=H,Aa=xu,Na){constructor({message:e="Empty response body"}={}){super({name:ps,message:e}),this[Aa]=!0}static isInstance(e){return H.hasMarker(e,fs)}};function Wt(e){return e==null?"unknown error":typeof e=="string"?e:e instanceof Error?e.message:JSON.stringify(e)}var gs="AI_InvalidArgumentError",hs=`vercel.ai.error.${gs}`,Ru=Symbol.for(hs),xa,Oa,Cu=class extends(Oa=H,xa=Ru,Oa){constructor({message:t,cause:r,argument:n}){super({name:gs,message:t,cause:r}),this[xa]=!0,this.argument=n}static isInstance(t){return H.hasMarker(t,hs)}},ms="AI_InvalidPromptError",ys=`vercel.ai.error.${ms}`,ku=Symbol.for(ys),Ra,Ca,Zt=class extends(Ca=H,Ra=ku,Ca){constructor({prompt:e,message:t,cause:r}){super({name:ms,message:`Invalid prompt: ${t}`,cause:r}),this[Ra]=!0,this.prompt=e}static isInstance(e){return H.hasMarker(e,ys)}},vs="AI_JSONParseError",ws=`vercel.ai.error.${vs}`,Pu=Symbol.for(ws),ka,Pa,Gr=class extends(Pa=H,ka=Pu,Pa){constructor({text:e,cause:t}){super({name:vs,message:`JSON parsing failed: Text: ${e}.
1
+ "use strict";var hu=Object.defineProperty;var mu=(e,t,r)=>t in e?hu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Ie=(e,t,r)=>mu(e,typeof t!="symbol"?t+"":t,r);const j=require("lodash-es"),ut=require("./register-partial-type-ig9fUWIJ.cjs"),v=require("zod"),yu=require("./_commonjsHelpers-DwGv2jUC.cjs"),vu=require("fs"),wu=require("path"),_u=require("os"),is=require("crypto"),Tu=require("drizzle-orm/postgres-js"),Eu=require("postgres"),g=require("drizzle-orm/pg-core"),h=require("drizzle-orm"),bu=require("./models-CQaC3EBW.cjs"),Iu=require("./core-czmLeR0h.cjs"),Su=require("node:crypto");var ls="vercel.ai.error",Au=Symbol.for(ls),Ea,ba,H=class us extends(ba=Error,Ea=Au,ba){constructor({name:t,message:r,cause:n}){super(r),this[Ea]=!0,this.name=t,this.cause=n}static isInstance(t){return us.hasMarker(t,ls)}static hasMarker(t,r){const n=Symbol.for(r);return t!=null&&typeof t=="object"&&n in t&&typeof t[n]=="boolean"&&t[n]===!0}},cs="AI_APICallError",ds=`vercel.ai.error.${cs}`,Nu=Symbol.for(ds),Ia,Sa,$e=class extends(Sa=H,Ia=Nu,Sa){constructor({message:e,url:t,requestBodyValues:r,statusCode:n,responseHeaders:a,responseBody:o,cause:s,isRetryable:i=n!=null&&(n===408||n===409||n===429||n>=500),data:l}){super({name:cs,message:e,cause:s}),this[Ia]=!0,this.url=t,this.requestBodyValues=r,this.statusCode=n,this.responseHeaders=a,this.responseBody=o,this.isRetryable=i,this.data=l}static isInstance(e){return H.hasMarker(e,ds)}},ps="AI_EmptyResponseBodyError",fs=`vercel.ai.error.${ps}`,xu=Symbol.for(fs),Aa,Na,Ou=class extends(Na=H,Aa=xu,Na){constructor({message:e="Empty response body"}={}){super({name:ps,message:e}),this[Aa]=!0}static isInstance(e){return H.hasMarker(e,fs)}};function Wt(e){return e==null?"unknown error":typeof e=="string"?e:e instanceof Error?e.message:JSON.stringify(e)}var gs="AI_InvalidArgumentError",hs=`vercel.ai.error.${gs}`,Ru=Symbol.for(hs),xa,Oa,Cu=class extends(Oa=H,xa=Ru,Oa){constructor({message:t,cause:r,argument:n}){super({name:gs,message:t,cause:r}),this[xa]=!0,this.argument=n}static isInstance(t){return H.hasMarker(t,hs)}},ms="AI_InvalidPromptError",ys=`vercel.ai.error.${ms}`,ku=Symbol.for(ys),Ra,Ca,Zt=class extends(Ca=H,Ra=ku,Ca){constructor({prompt:e,message:t,cause:r}){super({name:ms,message:`Invalid prompt: ${t}`,cause:r}),this[Ra]=!0,this.prompt=e}static isInstance(e){return H.hasMarker(e,ys)}},vs="AI_JSONParseError",ws=`vercel.ai.error.${vs}`,Pu=Symbol.for(ws),ka,Pa,Gr=class extends(Pa=H,ka=Pu,Pa){constructor({text:e,cause:t}){super({name:vs,message:`JSON parsing failed: Text: ${e}.
2
2
  Error message: ${Wt(t)}`,cause:t}),this[ka]=!0,this.text=e}static isInstance(e){return H.hasMarker(e,ws)}},_s="AI_TypeValidationError",Ts=`vercel.ai.error.${_s}`,Du=Symbol.for(Ts),Da,za,Rt=class Fn extends(za=H,Da=Du,za){constructor({value:t,cause:r}){super({name:_s,message:`Type validation failed: Value: ${JSON.stringify(t)}.
3
3
  Error message: ${Wt(r)}`,cause:r}),this[Da]=!0,this.value=t}static isInstance(t){return H.hasMarker(t,Ts)}static wrap({value:t,cause:r}){return Fn.isInstance(r)&&r.value===t?r:new Fn({value:t,cause:r})}};function E(e,t,r){function n(i,l){if(i._zod||Object.defineProperty(i,"_zod",{value:{def:l,constr:s,traits:new Set},enumerable:!1}),i._zod.traits.has(e))return;i._zod.traits.add(e),t(i,l);const u=s.prototype,c=Object.keys(u);for(let d=0;d<c.length;d++){const p=c[d];p in i||(i[p]=u[p].bind(i))}}const a=(r==null?void 0:r.Parent)??Object;class o extends a{}Object.defineProperty(o,"name",{value:e});function s(i){var l;const u=r!=null&&r.Parent?new o:this;n(u,i),(l=u._zod).deferred??(l.deferred=[]);for(const c of u._zod.deferred)c();return u}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:i=>{var l,u;return r!=null&&r.Parent&&i instanceof r.Parent?!0:(u=(l=i==null?void 0:i._zod)==null?void 0:l.traits)==null?void 0:u.has(e)}}),Object.defineProperty(s,"name",{value:e}),s}class Vt extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class Es extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}const bs={};function wt(e){return bs}function Is(e){const t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,a])=>t.indexOf(+n)===-1).map(([n,a])=>a)}function Ln(e,t){return typeof t=="bigint"?t.toString():t}function un(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Wn(e){return e==null}function Xn(e){const t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function zu(e,t){const r=(e.toString().split(".")[1]||"").length,n=t.toString();let a=(n.split(".")[1]||"").length;if(a===0&&/\d?e-\d?/.test(n)){const l=n.match(/\d?e-(\d?)/);l!=null&&l[1]&&(a=Number.parseInt(l[1]))}const o=r>a?r:a,s=Number.parseInt(e.toFixed(o).replace(".","")),i=Number.parseInt(t.toFixed(o).replace(".",""));return s%i/10**o}const $a=Symbol("evaluating");function Y(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==$a)return n===void 0&&(n=$a,n=r()),n},set(a){Object.defineProperty(e,t,{value:a})},configurable:!0})}function Pt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function bt(...e){const t={};for(const r of e){const n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function Ma(e){return JSON.stringify(e)}function $u(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const Ss="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function gr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const Mu=un(()=>{var e;if(typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)!=null&&e.includes("Cloudflare")))return!1;try{const t=Function;return new t(""),!0}catch{return!1}});function Ht(e){if(gr(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const r=t.prototype;return!(gr(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function As(e){return Ht(e)?{...e}:Array.isArray(e)?[...e]:e}const Fu=new Set(["string","number","symbol"]);function Jt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function It(e,t,r){const n=new e._zod.constr(t??e._zod.def);return(!t||r!=null&&r.parent)&&(n._zod.parent=e),n}function C(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if((t==null?void 0:t.message)!==void 0){if((t==null?void 0:t.error)!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Lu(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}const Uu={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ju(e,t){const r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const o=bt(e._zod.def,{get shape(){const s={};for(const i in t){if(!(i in r.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&(s[i]=r.shape[i])}return Pt(this,"shape",s),s},checks:[]});return It(e,o)}function qu(e,t){const r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const o=bt(e._zod.def,{get shape(){const s={...e._zod.def.shape};for(const i in t){if(!(i in r.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&delete s[i]}return Pt(this,"shape",s),s},checks:[]});return It(e,o)}function Zu(e,t){if(!Ht(t))throw new Error("Invalid input to extend: expected a plain object");const r=e._zod.def.checks;if(r&&r.length>0){const o=e._zod.def.shape;for(const s in t)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const a=bt(e._zod.def,{get shape(){const o={...e._zod.def.shape,...t};return Pt(this,"shape",o),o}});return It(e,a)}function Gu(e,t){if(!Ht(t))throw new Error("Invalid input to safeExtend: expected a plain object");const r=bt(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return Pt(this,"shape",n),n}});return It(e,r)}function Bu(e,t){const r=bt(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return Pt(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return It(e,r)}function Vu(e,t,r){const a=t._zod.def.checks;if(a&&a.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const s=bt(t._zod.def,{get shape(){const i=t._zod.def.shape,l={...i};if(r)for(const u in r){if(!(u in i))throw new Error(`Unrecognized key: "${u}"`);r[u]&&(l[u]=e?new e({type:"optional",innerType:i[u]}):i[u])}else for(const u in i)l[u]=e?new e({type:"optional",innerType:i[u]}):i[u];return Pt(this,"shape",l),l},checks:[]});return It(t,s)}function Hu(e,t,r){const n=bt(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(r)for(const s in r){if(!(s in o))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(o[s]=new e({type:"nonoptional",innerType:a[s]}))}else for(const s in a)o[s]=new e({type:"nonoptional",innerType:a[s]});return Pt(this,"shape",o),o}});return It(t,n)}function Gt(e,t=0){var r;if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(((r=e.issues[n])==null?void 0:r.continue)!==!0)return!0;return!1}function Bt(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function Fr(e){return typeof e=="string"?e:e==null?void 0:e.message}function _t(e,t,r){var a,o,s,i,l,u;const n={...e,path:e.path??[]};if(!e.message){const c=Fr((s=(o=(a=e.inst)==null?void 0:a._zod.def)==null?void 0:o.error)==null?void 0:s.call(o,e))??Fr((i=t==null?void 0:t.error)==null?void 0:i.call(t,e))??Fr((l=r.customError)==null?void 0:l.call(r,e))??Fr((u=r.localeError)==null?void 0:u.call(r,e))??"Invalid input";n.message=c}return delete n.inst,delete n.continue,t!=null&&t.reportInput||delete n.input,n}function Qn(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function hr(...e){const[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}const Ns=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Ln,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},xs=E("$ZodError",Ns),Os=E("$ZodError",Ns,{Parent:Error});function Ju(e,t=r=>r.message){const r={},n=[];for(const a of e.issues)a.path.length>0?(r[a.path[0]]=r[a.path[0]]||[],r[a.path[0]].push(t(a))):n.push(t(a));return{formErrors:n,fieldErrors:r}}function Yu(e,t=r=>r.message){const r={_errors:[]},n=a=>{for(const o of a.issues)if(o.code==="invalid_union"&&o.errors.length)o.errors.map(s=>n({issues:s}));else if(o.code==="invalid_key")n({issues:o.issues});else if(o.code==="invalid_element")n({issues:o.issues});else if(o.path.length===0)r._errors.push(t(o));else{let s=r,i=0;for(;i<o.path.length;){const l=o.path[i];i===o.path.length-1?(s[l]=s[l]||{_errors:[]},s[l]._errors.push(t(o))):s[l]=s[l]||{_errors:[]},s=s[l],i++}}};return n(e),r}const ea=e=>(t,r,n,a)=>{const o=n?Object.assign(n,{async:!1}):{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Vt;if(s.issues.length){const i=new((a==null?void 0:a.Err)??e)(s.issues.map(l=>_t(l,o,wt())));throw Ss(i,a==null?void 0:a.callee),i}return s.value},ta=e=>async(t,r,n,a)=>{const o=n?Object.assign(n,{async:!0}):{async:!0};let s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){const i=new((a==null?void 0:a.Err)??e)(s.issues.map(l=>_t(l,o,wt())));throw Ss(i,a==null?void 0:a.callee),i}return s.value},cn=e=>(t,r,n)=>{const a=n?{...n,async:!1}:{async:!1},o=t._zod.run({value:r,issues:[]},a);if(o instanceof Promise)throw new Vt;return o.issues.length?{success:!1,error:new(e??xs)(o.issues.map(s=>_t(s,a,wt())))}:{success:!0,data:o.value}},Ku=cn(Os),dn=e=>async(t,r,n)=>{const a=n?Object.assign(n,{async:!0}):{async:!0};let o=t._zod.run({value:r,issues:[]},a);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new e(o.issues.map(s=>_t(s,a,wt())))}:{success:!0,data:o.value}},Wu=dn(Os),Xu=e=>(t,r,n)=>{const a=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return ea(e)(t,r,a)},Qu=e=>(t,r,n)=>ea(e)(t,r,n),ec=e=>async(t,r,n)=>{const a=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return ta(e)(t,r,a)},tc=e=>async(t,r,n)=>ta(e)(t,r,n),rc=e=>(t,r,n)=>{const a=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return cn(e)(t,r,a)},nc=e=>(t,r,n)=>cn(e)(t,r,n),ac=e=>async(t,r,n)=>{const a=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return dn(e)(t,r,a)},oc=e=>async(t,r,n)=>dn(e)(t,r,n),sc=/^[cC][^\s-]{8,}$/,ic=/^[0-9a-z]+$/,lc=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,uc=/^[0-9a-vA-V]{20}$/,cc=/^[A-Za-z0-9]{27}$/,dc=/^[a-zA-Z0-9_-]{21}$/,pc=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,fc=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Fa=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,gc=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,hc="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function mc(){return new RegExp(hc,"u")}const yc=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,vc=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,wc=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,_c=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Tc=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Rs=/^[A-Za-z0-9_-]*$/,Ec=/^\+[1-9]\d{6,14}$/,Cs="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",bc=new RegExp(`^${Cs}$`);function ks(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Ic(e){return new RegExp(`^${ks(e)}$`)}function Sc(e){const t=ks({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${t}(?:${r.join("|")})`;return new RegExp(`^${Cs}T(?:${n})$`)}const Ac=e=>{const t=e?`[\\s\\S]{${(e==null?void 0:e.minimum)??0},${(e==null?void 0:e.maximum)??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Nc=/^-?\d+$/,Ps=/^-?\d+(?:\.\d+)?$/,xc=/^(?:true|false)$/i,Oc=/^null$/i,Rc=/^[^A-Z]*$/,Cc=/^[^a-z]*$/,Me=E("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Ds={number:"number",bigint:"bigint",object:"date"},zs=E("$ZodCheckLessThan",(e,t)=>{Me.init(e,t);const r=Ds[typeof t.value];e._zod.onattach.push(n=>{const a=n._zod.bag,o=(t.inclusive?a.maximum:a.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<o&&(t.inclusive?a.maximum=t.value:a.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),$s=E("$ZodCheckGreaterThan",(e,t)=>{Me.init(e,t);const r=Ds[typeof t.value];e._zod.onattach.push(n=>{const a=n._zod.bag,o=(t.inclusive?a.minimum:a.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>o&&(t.inclusive?a.minimum=t.value:a.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),kc=E("$ZodCheckMultipleOf",(e,t)=>{Me.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):zu(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Pc=E("$ZodCheckNumberFormat",(e,t)=>{var s;Me.init(e,t),t.format=t.format||"float64";const r=(s=t.format)==null?void 0:s.includes("int"),n=r?"int":"number",[a,o]=Uu[t.format];e._zod.onattach.push(i=>{const l=i._zod.bag;l.format=t.format,l.minimum=a,l.maximum=o,r&&(l.pattern=Nc)}),e._zod.check=i=>{const l=i.value;if(r){if(!Number.isInteger(l)){i.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:l,inst:e});return}if(!Number.isSafeInteger(l)){l>0?i.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):i.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}l<a&&i.issues.push({origin:"number",input:l,code:"too_small",minimum:a,inclusive:!0,inst:e,continue:!t.abort}),l>o&&i.issues.push({origin:"number",input:l,code:"too_big",maximum:o,inclusive:!0,inst:e,continue:!t.abort})}}),Dc=E("$ZodCheckMaxLength",(e,t)=>{var r;Me.init(e,t),(r=e._zod.def).when??(r.when=n=>{const a=n.value;return!Wn(a)&&a.length!==void 0}),e._zod.onattach.push(n=>{const a=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<a&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const a=n.value;if(a.length<=t.maximum)return;const s=Qn(a);n.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),zc=E("$ZodCheckMinLength",(e,t)=>{var r;Me.init(e,t),(r=e._zod.def).when??(r.when=n=>{const a=n.value;return!Wn(a)&&a.length!==void 0}),e._zod.onattach.push(n=>{const a=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>a&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const a=n.value;if(a.length>=t.minimum)return;const s=Qn(a);n.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),$c=E("$ZodCheckLengthEquals",(e,t)=>{var r;Me.init(e,t),(r=e._zod.def).when??(r.when=n=>{const a=n.value;return!Wn(a)&&a.length!==void 0}),e._zod.onattach.push(n=>{const a=n._zod.bag;a.minimum=t.length,a.maximum=t.length,a.length=t.length}),e._zod.check=n=>{const a=n.value,o=a.length;if(o===t.length)return;const s=Qn(a),i=o>t.length;n.issues.push({origin:s,...i?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),pn=E("$ZodCheckStringFormat",(e,t)=>{var r,n;Me.init(e,t),e._zod.onattach.push(a=>{const o=a._zod.bag;o.format=t.format,t.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=a=>{t.pattern.lastIndex=0,!t.pattern.test(a.value)&&a.issues.push({origin:"string",code:"invalid_format",format:t.format,input:a.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Mc=E("$ZodCheckRegex",(e,t)=>{pn.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Fc=E("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Rc),pn.init(e,t)}),Lc=E("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Cc),pn.init(e,t)}),Uc=E("$ZodCheckIncludes",(e,t)=>{Me.init(e,t);const r=Jt(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(a=>{const o=a._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=a=>{a.value.includes(t.includes,t.position)||a.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:a.value,inst:e,continue:!t.abort})}}),jc=E("$ZodCheckStartsWith",(e,t)=>{Me.init(e,t);const r=new RegExp(`^${Jt(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{const a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),qc=E("$ZodCheckEndsWith",(e,t)=>{Me.init(e,t);const r=new RegExp(`.*${Jt(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{const a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Zc=E("$ZodCheckOverwrite",(e,t)=>{Me.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});class Gc{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const n=t.split(`
4
4
  `).filter(s=>s),a=Math.min(...n.map(s=>s.length-s.trimStart().length)),o=n.map(s=>s.slice(a)).map(s=>" ".repeat(this.indent*2)+s);for(const s of o)this.content.push(s)}compile(){const t=Function,r=this==null?void 0:this.args,a=[...((this==null?void 0:this.content)??[""]).map(o=>` ${o}`)];return new t(...r,a.join(`
@@ -486,4 +486,4 @@ ${t.context?`Additional Context: ${t.context}`:""}`;let a=(t.image?await Yn({mod
486
486
  Page Context: ${t.pageContext}
487
487
  Page Content: ${t.pageContent}
488
488
  Dynamic: ${t.dynamic}
489
- Language: ${t.lang}`})).text}}}class Wv extends Z{getValidationSchema(){return v.z.object({block:v.z.any(),pageProps:v.z.any().optional().default({}),lang:v.z.string()})}async execute(t){var r;try{const{block:n,pageProps:a,lang:o}=t,s=n._type;if(s==="Repeater"&&((r=n==null?void 0:n.repeaterItems)!=null&&r.includes("{{#"))){const u=n.repeaterItems.replace("{{#","").replace("}}",""),c=ut.getChaiCollection(u);return c?await(c==null?void 0:c.fetch({block:n,pageProps:a,lang:o,draft:!0,inBuilder:!0}))??[]:[]}const i=Iu.getRegisteredChaiBlock(s);return!i||!j.isFunction(i.dataProvider)?{}:await i.dataProvider({block:n,pageProps:a,lang:o,draft:!0,inBuilder:!0})??{}}catch(n){return this.handleError(n)}}}class ou extends Z{getValidationSchema(){return v.z.object({lang:v.z.string(),pageType:v.z.string().optional(),pageProps:v.z.any().optional().default({})})}async execute(t){try{const{lang:r,pageType:n,pageProps:a={}}=t,o=await ut.getChaiGlobalData({lang:r,draft:!0,inBuilder:!0});if(!n)return{global:o};const s=ut.getChaiPageType(n);return s?{...s.dataProvider?await s.dataProvider({lang:r,draft:!0,inBuilder:!0,pageProps:a}):{},global:o}:{global:o}}catch(r){return this.handleError(r)}}}class Xv extends Z{constructor(){super(...arguments);Ie(this,"appId","")}getValidationSchema(){return v.z.object({})}async execute(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");this.appId=this.context.appId;try{return await this.getChanges()}catch(r){if(r instanceof T)throw r;const n=r instanceof Error?r.message:"Failed to get changes";throw new T(n,"GET_CHANGES_ERROR")}}async getChanges(){const{data:r,error:n}=await A(()=>S.select({id:f.id,slug:f.slug,name:f.name,pageType:f.pageType,lang:f.lang,changes:f.changes,primaryPage:f.primaryPage,online:f.online,currentEditor:f.currentEditor}).from(f).where(h.and(h.eq(f.app,this.appId),h.isNotNull(f.changes))));if(n)throw new T("Error getting changed pages","ERROR_GETTING_CHANGES");const{data:a,error:o}=await A(()=>S.select({id:f.id,slug:f.slug,name:f.name,pageType:f.pageType,lang:f.lang,changes:f.changes,primaryPage:f.primaryPage,online:f.online}).from(f).where(h.and(h.eq(f.app,this.appId),h.isNull(f.currentEditor),h.eq(f.online,!1))));if(o)throw new T("Error getting offline pages","ERROR_GETTING_OFFLINE_PAGES");const s=(a||[]).map(d=>({...d,changes:["Take Online"]})),l=[...(r||[]).filter(d=>!s.some(p=>p.id===d.id)).map(d=>({...d,changes:d.changes})),...s],{data:u,error:c}=await A(()=>S.select({changes:ge.changes}).from(ge).where(h.and(h.eq(ge.id,this.appId),h.isNotNull(ge.changes))));if(!c&&u&&u.length>0){const d=u[0].changes??[];d.includes("THEME")&&l.push({id:"THEME",slug:"",name:"Theme",pageType:"theme",lang:"",changes:["Updated"],primaryPage:null,online:!0}),d.includes("DESIGN_TOKENS")&&l.push({id:"DESIGN_TOKENS",slug:"",name:"Design Tokens",pageType:"design_tokens",lang:"",changes:["Updated"],primaryPage:null,online:!0})}return l}}class su extends Z{getValidationSchema(){return v.z.object({})}async execute(){try{return ut.getChaiCollections().map(r=>j.omit(r,"fetch"))}catch(t){return this.handleError(t)}}}class Qv extends Z{getValidationSchema(){return v.z.object({versions:v.z.object({version1:v.z.object({type:v.z.enum(["draft","revision","live"]),id:v.z.string()}),version2:v.z.object({type:v.z.enum(["draft","revision","live"]),id:v.z.string()})})})}async execute(t){this.validateContext();const r=await this.getBlocksForVersion(t.versions.version1.type,t.versions.version1.id),n=await this.getBlocksForVersion(t.versions.version2.type,t.versions.version2.id);return{version1:{blocks:r.blocks,seo:r.seo},version2:{blocks:n.blocks,seo:n.seo}}}async getBlocksForVersion(t,r){let n,a;switch(t){case"draft":({data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.eq(f.id,r),columns:{blocks:!0,seo:!0}})));break;case"live":({data:n,error:a}=await A(()=>S.query.appPagesOnline.findFirst({where:h.eq(he.id,r),columns:{blocks:!0,seo:!0}})));break;case"revision":({data:n,error:a}=await A(()=>S.query.appPagesRevisions.findFirst({where:h.eq(Se.uid,r),columns:{blocks:!0,seo:!0}})));break;default:throw new T(`Invalid version type: ${t}`,"INVALID_VERSION_TYPE")}if(a)throw new T(`Failed to fetch blocks for ${t} version: ${a.message}`,"FETCH_BLOCKS_ERROR");if(!n)throw new T(`No data found for ${t} version with id: ${r}`,"VERSION_NOT_FOUND");return{blocks:n.blocks||[],seo:n.seo||{}}}validateContext(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET")}}class iu extends Z{getValidationSchema(){return v.z.object({id:v.z.string()})}async execute(t){var c;if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,{id:n}=t,a=f,{data:o,error:s}=await A(()=>S.select({id:a.id,name:a.name,slug:a.slug,lang:a.lang,primaryPage:a.primaryPage,seo:a.seo,currentEditor:a.currentEditor,pageType:a.pageType,lastSaved:a.lastSaved,dynamic:a.dynamic,parent:a.parent,blocks:a.blocks}).from(a).where(h.and(h.eq(a.app,r),h.eq(a.id,n))).limit(1));if(s)throw ie("PAGE_NOT_FOUND",s);if(!o||o.length===0)throw ie("PAGE_NOT_FOUND",new Error("Page not found"));const i=o[0],l=i.primaryPage??i.id;let u=i.blocks??[];if(l!==i.id){const{data:d,error:p}=await A(()=>S.select({blocks:a.blocks}).from(a).where(h.and(h.eq(a.app,r),h.eq(a.id,l))).limit(1));if(p)throw ie("BLOCKS_NOT_FOUND",p);u=((c=d==null?void 0:d[0])==null?void 0:c.blocks)??[]}return{...i,blocks:u,id:n,languagePageId:i.id}}}class ew extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string()})}async execute(t){try{const{pageType:r,...n}=t,a=ut.getChaiPageType(r);return a?a.getDynamicPages?await a.getDynamicPages(n):[]:{error:"Page type not found"}}catch(r){return this.handleError(r)}}}class lu extends Z{getValidationSchema(){return v.z.object({id:v.z.string()})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,{id:n}=t,{data:a,error:o}=await A(()=>S.select({id:f.id,name:f.name,slug:f.slug,lang:f.lang,primaryPage:f.primaryPage,pageType:f.pageType,seo:f.seo,currentEditor:f.currentEditor,online:f.online,parent:f.parent,metadata:f.metadata,dynamic:f.dynamic,dynamicSlugCustom:f.dynamicSlugCustom,changes:f.changes}).from(f).where(h.and(h.eq(f.app,r),h.or(h.eq(f.primaryPage,n),h.eq(f.id,n)))));if(o)throw ie("LANGUAGE_PAGES_ERROR",o);return a.map(s=>j.omit(s,["app"]))}}class uu extends Z{getValidationSchema(){return v.z.object({}).optional().default({})}async execute(){var l;if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:t}=this.context,r=await A(()=>S.select({id:W.id,name:W.name,type:W.type,createdAt:W.createdAt}).from(W).where(h.eq(W.app,t)).limit(1));if(r.error)throw new T("Failed to fetch site library","DB_ERROR");const n=r.data[0]||null,a=((l=process==null?void 0:process.env)==null?void 0:l.CHAIBUILDER_CLIENT_ID)||null;if(!a)return n?[{id:n.id,name:n.name,type:n.type,createdAt:n.createdAt,isSiteLibrary:!0}]:[];const{data:o,error:s}=await A(()=>S.select({id:W.id,name:W.name,type:W.type,createdAt:W.createdAt}).from(W).where(h.eq(W.client,a)));if(s)throw new T("Failed to fetch libraries","DB_ERROR");const i=(n==null?void 0:n.id)||null;return o.map(u=>({id:u.id,name:u.name,type:u.type,createdAt:u.createdAt,isSiteLibrary:i?u.id===i:!1}))}}class tw extends Z{getValidationSchema(){return v.z.object({})}async execute(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{data:t,error:r}=await A(()=>S.select({id:W.id}).from(W).where(h.eq(W.app,this.context.appId)).limit(1));if(r)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,r);if(!t||t.length===0)return[];const n=t[0],{data:a,error:o}=await A(()=>S.select({group:re.group}).from(re).where(h.eq(re.library,n.id)));if(o)throw new T("Failed to fetch library groups","GET_LIBRARY_GROUPS_FAILED",500,o);const s=j.map(a,"group").filter(i=>i!=null);return j.map(j.uniq(s),i=>({id:i,name:i}))}}class rw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{id:n}=t,{data:a,error:o}=await A(()=>S.select({id:re.id,name:re.name,blocks:re.blocks,library:re.library,description:re.description,group:re.group,user:re.user,preview:re.preview,createdAt:re.createdAt,html:re.html,libraryApp:W.app,libraryName:W.name}).from(re).leftJoin(W,h.eq(re.library,W.id)).where(h.eq(re.id,n)));if(o)throw new T("Failed to fetch library item","GET_LIBRARY_ITEM_FAILED",500,o);if(!a||a.length===0)throw new T("Library item not found","GET_LIBRARY_ITEM_FAILED");const s=a[0],i=Array.isArray(s.blocks)?[...s.blocks]:s.blocks;return s.libraryApp===r?j.set(i,"0._libBlockId",s.id):j.set(i,"0._libBlockId",void 0),{id:s.id,name:s.name,blocks:i,description:s.description,group:s.group,user:s.user,preview:s.preview,createdAt:s.createdAt,html:s.html}}}class nw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{id:r}=t,{data:n,error:a}=await A(()=>S.select({id:re.id,name:re.name,library:re.library,group:re.group,description:re.description,preview:re.preview}).from(re).where(h.eq(re.library,r)));if(a)throw new T("Failed to fetch library items","GET_LIBRARY_ITEMS_FAILED",500,a);return n||[]}}class aw extends Z{getValidationSchema(){return v.z.object({pageId:v.z.string().min(1,"Page ID is required")})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");try{return await this.getRevisions(t.pageId)}catch(r){if(r instanceof T)throw r;const n=r instanceof Error?r.message:"Failed to get page revisions";throw new T(n,"GET_PAGE_REVISIONS_ERROR")}}async getRevisions(t){const{data:r,error:n}=await A(()=>S.select({currentEditor:f.currentEditor,createdAt:f.createdAt}).from(f).where(h.and(h.eq(f.app,this.context.appId),h.eq(f.id,t)))),{data:a,error:o}=await A(()=>S.select({uid:Se.uid,currentEditor:Se.currentEditor,createdAt:Se.createdAt,type:Se.type}).from(Se).where(h.and(h.eq(Se.app,this.context.appId),h.eq(Se.id,t))));if(n){const u=n instanceof Error?`Error getting current page for revisions: ${n.message}`:"Error getting current page for revisions";throw new T(u,"ERROR_GETTING_CURRENT_PAGE_FOR_REVISIONS")}if(o){const u=o instanceof Error?`Error getting page revisions: ${o.message}`:"Error getting page revisions";throw new T(u,"ERROR_GETTING_PAGE_REVISIONS")}const s=r==null?void 0:r[0],l=[...s?[{...s,type:"published",uid:"current"}]:[],...a??[]];return j.orderBy(l,["createdAt"],["desc"])}}class cu extends Z{getValidationSchema(){return v.z.object({})}async execute(){try{return await Promise.all(ut.getChaiPageTypes().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,...j.isFunction(r.defaultSeo)?{defaultSeo:r.defaultSeo()}:{},...j.isFunction(r.defaultJSONLD)?{defaultJSONLD:r.defaultJSONLD()}:{}})))}catch(t){return this.handleError(t)}}}class ow extends Z{getValidationSchema(){return v.z.object({id:v.z.string().nonempty(),type:v.z.enum(["draft","live","revision"])})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));let r,n;switch(t.type){case"draft":({data:r,error:n}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.id),h.eq(f.lang,t.lang??""))})));break;case"live":({data:r,error:n}=await A(()=>S.query.appPagesOnline.findFirst({where:h.and(h.eq(he.id,t.id),h.eq(he.lang,t.lang??""))})));break;case"revision":({data:r,error:n}=await A(()=>S.query.appPagesRevisions.findFirst({where:h.and(h.eq(Se.uid,t.id),h.eq(Se.lang,t.lang??""))})));break}if(n||!r)throw ie("NOT_FOUND",n||new Error("Page not found"));let a=(r==null?void 0:r.blocks)??[];return a=await this.getMergedBlocks(a,t.type==="draft",this.context.appId),{...r,blocks:a}}async getMergedBlocks(t,r,n){const a=r?f:he,o=t.filter(({_type:c})=>c==="GlobalBlock"||c==="PartialBlock");if(o.length===0)return t;const s=o.map(c=>j.get(c,"partialBlockId",j.get(c,"globalBlock",""))).filter(c=>c!=="");if(s.length===0)return t;const{data:i,error:l}=await A(()=>S.select({id:a.id,blocks:a.blocks}).from(a).where(h.and(h.eq(a.app,n),h.inArray(a.id,s))));if(l)throw ie("PARTIAL_BLOCKS_FETCH_ERROR",l);const u=new Map;i&&i.forEach(c=>{u.set(c.id,c.blocks??[])});for(let c=0;c<o.length;c++){const d=o[c];if(!d)continue;const p=j.get(d,"partialBlockId",j.get(d,"globalBlock",""));if(p==="")continue;let w=u.get(p)??[];w.length>0&&(w=w.map(_=>(j.isEmpty(_._parent)&&(_._parent=d._parent),j.has(d,"_show")&&(_._show=d._show),_)));const b=t.indexOf(d);b!==-1&&t.splice(b,1,...w)}return t}}class sw extends Z{getValidationSchema(){return v.z.undefined()}async execute(){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:t}=this.context,{data:r,error:n}=await A(()=>S.select({id:f.id,designTokens:f.designTokens,name:f.name,slug:f.slug,links:f.links,partialBlocks:f.partialBlocks}).from(f).where(h.and(h.eq(f.lang,""),h.eq(f.app,t))));if(n)throw ie("FETCH_SITE_DATA_FAILED",n);const a={};return j.each(r,o=>{var s;a[o.id]={name:o.name,isPartial:j.isEmpty(o.slug),partialBlocks:o.partialBlocks?(s=o.partialBlocks)==null?void 0:s.split("|").filter(Boolean):[],links:o.links?o.links.split("|").filter(Boolean):[],designTokens:o.designTokens??{}}}),a}}class iw extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string().min(1)})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{pageType:n}=t,{data:a,error:o}=await A(()=>S.query.libraries.findFirst({where:h.eq(W.app,r),columns:{id:!0}}));if(o)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,o);const{data:s,error:i}=await A(()=>S.select({id:W.id}).from(W).where(h.eq(W.type,"shared")));if(i)throw new T("Failed to fetch shared libraries","GET_SHARED_LIBRARIES_FAILED",500,i);const l=[...a?[a.id]:[],...(s||[]).map(d=>d.id)];if(l.length===0)return[];const{data:u,error:c}=await A(()=>S.select({id:te.id,library:te.library,pageId:te.pageId,pageType:te.pageType,name:te.name,description:te.description,preview:te.preview,user:te.user,createdAt:te.createdAt}).from(te).where(h.and(h.eq(te.pageType,n),h.inArray(te.library,l))));if(c)throw new T("Failed to fetch templates","GET_TEMPLATES_FAILED",500,c);return u||[]}}class du extends Z{getValidationSchema(){return v.z.object({lang:v.z.string().optional()})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,a=(t??{lang:""}).lang??"",{data:o,error:s}=await A(()=>S.select({id:f.id,name:f.name,slug:f.slug,pageType:f.pageType,currentEditor:f.currentEditor,parent:f.parent,online:f.online,lastSaved:f.lastSaved,createdAt:f.createdAt,dynamic:f.dynamic,dynamicSlugCustom:f.dynamicSlugCustom,primaryPage:f.primaryPage,changes:f.changes,lang:f.lang,designTokens:f.designTokens,links:f.links,partialBlocks:f.partialBlocks}).from(f).where(h.and(h.eq(f.app,r),h.eq(f.lang,a))));if(s)throw ie("ERROR_GETTING_WEBSITE_PAGES",s);if(!o||o.length===0)return[];const i=o.filter(d=>!j.isEmpty(d.slug)).map(d=>d.id),{data:l,error:u}=await A(()=>S.select({pageId:te.pageId}).from(te).where(h.inArray(te.pageId,i)));if(u)throw ie("ERROR_GETTING_TEMPLATE_INFO",u);const c=new Set((l||[]).map(d=>d.pageId));return o.map(d=>({...d,pageType:d.pageType??"page",isTemplate:c.has(d.id),changes:d.changes,lang:d.lang,designTokens:d.designTokens,links:d.links,partialBlocks:d.partialBlocks}))}}class pu extends Z{getValidationSchema(){return v.z.object({draft:v.z.boolean()})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,{draft:n}=t,a=n?ge:mt,{data:o,error:s}=await A(()=>S.select({theme:a.theme,fallbackLang:a.fallbackLang,languages:a.languages,settings:a.settings,designTokens:a.designTokens,changes:a.changes}).from(a).where(h.eq(a.id,r)).limit(1));if(s)throw ie("ERROR_PROJECT_CONFIG",s);if(!o||o.length===0)throw ie("PROJECT_NOT_FOUND",new Error("Project not found"));const i=j.first(o),l=(i==null?void 0:i.changes)??[];return{...this.getDefaultSettings(),...i,fallbackLang:(i==null?void 0:i.fallbackLang)||this.getDefaultSettings().fallbackLang,languages:(i==null?void 0:i.languages)||this.getDefaultSettings().languages,theme:(i==null?void 0:i.theme)||this.getDefaultSettings().theme,appKey:this.generateDeterministicUuid(r),appChanges:l}}getDefaultSettings(){return{fallbackLang:"en",languages:[],theme:{colors:{card:["#FFFFFF","#09090B"],ring:["#2563EB","#3B82F6"],input:["#E4E4E7","#27272A"],muted:["#F4F4F5","#27272A"],accent:["#F4F4F5","#27272A"],border:["#E4E4E7","#27272A"],popover:["#FFFFFF","#09090B"],primary:["#2563EB","#3B82F6"],secondary:["#F4F4F5","#27272A"],background:["#FFFFFF","#09090B"],foreground:["#09090B","#FFFFFF"],destructive:["#EF4444","#7F1D1D"],"card-foreground":["#09090B","#FFFFFF"],"muted-foreground":["#71717A","#A1A1AA"],"accent-foreground":["#09090B","#FFFFFF"],"popover-foreground":["#09090B","#FFFFFF"],"primary-foreground":["#FFFFFF","#FFFFFF"],"secondary-foreground":["#09090B","#FFFFFF"],"destructive-foreground":["#FFFFFF","#FFFFFF"]},fontFamily:{body:"Roboto",heading:"Poppins"},borderRadius:"30px"},settings:{},designTokens:{}}}generateDeterministicUuid(t){const r=is.createHash("sha256").update(t).digest("hex");return[r.substring(0,8),r.substring(8,12),"4"+r.substring(13,16),(parseInt(r.substring(16,17),16)&3|8).toString(16)+r.substring(17,20),r.substring(20,32)].join("-")}}class lw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1),description:v.z.string().optional(),name:v.z.string().min(1),pageType:v.z.string().min(1),previewImage:v.z.string().optional(),previewImageUrl:v.z.string().optional()})}async execute(t){var _;if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r,userId:n}=this.context,{id:a,description:o,name:s,pageType:i,previewImage:l,previewImageUrl:u}=t,{data:c,error:d}=await A(()=>S.query.libraries.findFirst({where:h.eq(W.app,r),columns:{id:!0}}));if(d)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,d);if(!c)throw new T("Library not found for this app","GET_SITE_LIBRARY_FAILED");let p=u;if(l){const I=mn("UPLOAD_TO_STORAGE");I==null||I.setContext(this.context);const k=`template-${Date.now()}.webp`,P=`${r}/templates`,m=await(I==null?void 0:I.execute({file:l,fileName:k,contentType:"image/webp",folder:P}));if(m!=null&&m.error)throw new T("Failed to upload preview image","UPLOAD_PREVIEW_FAILED",500,m.error);p=((_=m==null?void 0:m.data)==null?void 0:_.url)||u}const{data:w,error:b}=await A(()=>S.insert(te).values({library:c.id,user:n??null,pageId:a,description:o??null,name:s+" Template",pageType:i,preview:p??null}).returning({id:te.id,library:te.library,pageType:te.pageType,pageId:te.pageId,description:te.description,preview:te.preview}));if(b||!w||w.length===0)throw new T("Failed to mark page as template","UPDATE_FAILED",500,b);return w[0]}}class fu extends Z{constructor(){super(...arguments);Ie(this,"appId","");Ie(this,"revisionsEnabled",!1)}getValidationSchema(){return v.z.object({ids:v.z.array(v.z.string()).optional(),revisions:v.z.boolean().optional()})}async execute(r){await this.verifyAccess(),this.validateContext(),this.appId=this.context.appId,this.revisionsEnabled=r.revisions??!1;try{const n=r.ids??[];if(n.length===0)throw new T("IDS_REQUIRED","At least one page ID or THEME must be provided");const a=await Promise.all(n.map(i=>i==="THEME"?this.publishTheme():i==="DESIGN_TOKENS"?this.publishDesignToken():this.publishPage(i)));await this.clearChanges(n);const o=j.uniq(j.flattenDeep(a.map(i=>i.tags))),s=j.uniq(j.flattenDeep(a.map(i=>i.paths)));return{tags:o,paths:s}}catch(n){return this.handleExecutionError(n)}}validateContext(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET")}async publishTheme(){const r=await this.cloneApp(),{error:n}=await A(()=>S.delete(mt).where(h.eq(mt.id,this.appId)));if(n)throw new T("Error deleting online theme","ERROR_PUBLISHING_THEME",500,n);const{error:a}=await A(()=>S.insert(mt).values({...r,changes:null}));if(a)throw new T("Error inserting online theme","ERROR_PUBLISHING_THEME",500,a);return await this.removeFromChangesArray("THEME","ERROR_PUBLISHING_THEME"),{tags:[`website-settings-${this.appId}`],paths:[]}}async publishDesignToken(){const r=await this.cloneApp(),{error:n}=await A(()=>S.delete(mt).where(h.eq(mt.id,this.appId)));if(n)throw new T("Error deleting online app","ERROR_PUBLISHING_DESIGN_TOKEN",500,n);const{error:a}=await A(()=>S.insert(mt).values({...r,changes:null}));if(a)throw new T("Error inserting online app","ERROR_PUBLISHING_DESIGN_TOKEN",500,a);return await this.removeFromChangesArray("DESIGN_TOKENS","ERROR_PUBLISHING_DESIGN_TOKEN"),{tags:[`website-settings-${this.appId}`],paths:[]}}async removeFromChangesArray(r,n){var u;const{data:a,error:o}=await A(()=>S.select({changes:ge.changes}).from(ge).where(h.eq(ge.id,this.appId)));if(o)throw new T("Error fetching changes",n,500,o);const i=(((u=a==null?void 0:a[0])==null?void 0:u.changes)??[]).filter(c=>c!==r),{error:l}=await A(()=>S.update(ge).set({changes:i.length>0?i:null}).where(h.eq(ge.id,this.appId)));if(l)throw new T("Error updating changes",n,500,l)}async cloneApp(){const{data:r,error:n}=await A(()=>S.query.apps.findFirst({where:h.eq(ge.id,this.appId)}));if(n||!r)throw new T("Site not found","SITE_NOT_FOUND",404,n);return r}async clearChanges(r){const n=r.filter(o=>o!=="THEME"&&o!=="DESIGN_TOKENS");if(n.length===0)return;const{error:a}=await A(()=>S.update(f).set({changes:null,online:!0}).where(h.and(h.inArray(f.id,n),h.eq(f.app,this.appId))));if(a)throw new T("Error clearing changes","ERROR_CLEARING_CHANGES",500,a)}async getPartialBlockUsage(r){const{data:n}=await A(()=>S.query.appPagesOnline.findMany({where:h.and(h.eq(he.app,this.appId),h.like(he.partialBlocks,`%${r}%`)),columns:{id:!0}}));return j.uniq(n??[]).map(a=>a.id).map(a=>`page-${a}`)}async publishPage(r){const n=await this.clonePage(r);await this.addOnlinePage(n);const a=[`page-${n.primaryPage??n.id}`],o=[];return j.isEmpty(n.slug)?a.push(...await this.getPartialBlockUsage(n.primaryPage??n.id)):o.push(`${n.slug}`),{tags:a,paths:o}}async createRevision(r){if(!this.revisionsEnabled)return!1;const{data:n,error:a}=await A(()=>S.query.appPagesOnline.findFirst({where:h.eq(he.id,r)}));if(a||!n||!j.isEmpty(n.primaryPage))return!1;const{error:o}=await A(()=>S.insert(Se).values({...n,type:"published",uid:void 0}));if(o)throw new T("Error creating revision","ERROR_CREATING_REVISION",500,o);return!0}async addOnlinePage(r){await this.createRevision(r.id);const{error:n}=await A(()=>S.delete(he).where(h.eq(he.id,r.id)));if(n)throw new T("Error deleting online page","ERROR_PUBLISHING_PAGE",500,n);const{changes:a,createdAt:o,...s}=r,{data:i,error:l}=await A(()=>{var c;return S.insert(he).values({...s,currentEditor:(c=this.context)==null?void 0:c.userId}).returning({id:he.id,primaryPage:he.primaryPage})});if(l||!i||i.length===0)throw new T("Error publishing page","ERROR_PUBLISHING_PAGE",500,l);const{error:u}=await A(()=>S.update(f).set({changes:null}).where(h.eq(f.id,r.id)));if(u)throw new T("Error clearing page changes","ERROR_PUBLISHING_PAGE",500,u);return i[0]}async clonePage(r){const{data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,r),h.eq(f.app,this.appId))}));if(a||!n)throw new T("Page not found","PAGE_NOT_FOUND",404,a);return n}handleExecutionError(r){throw r instanceof T?r:new T(`Failed to publish changes: ${r instanceof Error?r.message:"Unknown error"}`,"PUBLISH_CHANGES_FAILED")}}class uw extends Z{getValidationSchema(){return v.z.object({revisionId:v.z.string().nonempty(),discardCurrent:v.z.boolean(),pageId:v.z.string().optional()})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context;let n,a;if(t.revisionId==="current"){if(!t.pageId)throw new T("pageId is required when restoring current revision","PAGE_ID_REQUIRED");const{data:o,error:s}=await A(()=>S.query.appPagesOnline.findFirst({where:h.and(h.eq(he.id,t.pageId),h.eq(he.app,r)),columns:{id:!0,blocks:!0}}));if(s)throw new T("Error fetching live page","FETCH_ERROR");if(!o)throw new T("Live page not found","PAGE_NOT_FOUND");n=o.id,a=o.blocks}else{const{data:o,error:s}=await A(()=>S.query.appPagesRevisions.findFirst({where:h.and(h.eq(Se.uid,t.revisionId),h.eq(Se.app,r)),columns:{id:!0,blocks:!0,type:!0}}));if(s)throw new T("Error fetching revision","FETCH_ERROR");if(!o)throw new T("Revision not found","REVISION_NOT_FOUND");n=o.id,a=o.blocks}if(!t.discardCurrent){const{data:o,error:s}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,n),h.eq(f.app,r))}));if(s)throw new T("Error fetching current page","FETCH_ERROR");if(!o)throw new T("Current page not found","PAGE_NOT_FOUND");const i=o.blocks,l={id:n,blocks:i,type:"draft",createdAt:"now()",...j.pick(o,["name","slug","pageType","lang","app","currentEditor"])};await S.insert(Se).values(l)}return await S.update(f).set({blocks:a}).where(h.eq(f.id,n)),{success:!0,pageId:n}}}class cw extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string(),query:v.z.string()})}async execute(t){try{const{pageType:r,query:n}=t,a=ut.getChaiPageType(r);if(!a)return{error:"Page type not found"};if(a.search){const o=await a.search(n);return o instanceof Error?{error:o.message}:o}return[]}catch(r){return this.handleError(r)}}}class dw extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string().min(1),query:v.z.string().optional()})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{pageType:n,query:a=""}=t,o=this.isUUID(a),s=[h.eq(f.app,r),h.eq(f.pageType,n)];let i;a?o?i=h.and(...s,h.eq(f.id,a)):i=h.and(...s,h.or(h.ilike(f.slug,`%${a}%`),h.ilike(f.name,`%${a}%`))):i=h.and(...s);const{data:l,error:u}=await A(()=>S.select({id:f.id,slug:f.slug,name:f.name,lang:f.lang,primaryPage:f.primaryPage}).from(f).where(i));if(u)throw new T("Failed to search pages","ERROR_SEARCHING_PAGES",500,u);return l||[]}isUUID(t){return t.length===36}}class pw extends Z{constructor(){super(...arguments);Ie(this,"appId","")}getValidationSchema(){return v.z.object({id:v.z.string().min(1,"Page ID is required")})}async execute(r){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");this.appId=this.context.appId;try{return await this.takeOffline(r.id)}catch(n){if(n instanceof T)throw n;const a=n instanceof Error?n.message:"Failed to take page offline";throw new T(a,"TAKE_OFFLINE_ERROR")}}async takeOffline(r){const n=await this.getPageType(r),{error:a}=await A(()=>S.update(f).set({online:!1}).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a)throw new T("Error taking page offline","ERROR_TAKING_PAGE_OFFLINE");if(await this.deleteOnlinePage(r),n==="language")return{tags:[`page-${await this.getPrimaryPage(r)}`]};if(n==="partial")return{tags:[...(await this.getPartialBlockUsage(r)).map(l=>`page-${l}`)]};const{data:o,error:s}=await A(()=>S.select({id:f.id,slug:f.slug,lang:f.lang,pageType:f.pageType,name:f.name,online:f.online,seo:f.seo}).from(f).where(h.eq(f.id,r)));if(s||!o||o.length===0)throw new T("Error getting page after taking offline","ERROR_TAKING_PAGE_OFFLINE");return{tags:[`page-${r}`],page:o[0]}}async deleteOnlinePage(r){const{error:n}=await A(()=>S.delete(he).where(h.eq(he.id,r)));if(n)throw new T("Error deleting page from online pages table","ERROR_DELETING_PAGE_FROM_ONLINE_PAGES_TABLE");const{error:a}=await A(()=>S.delete(he).where(h.eq(he.primaryPage,r)));if(a)throw new T("Error deleting page from online pages table","ERROR_DELETING_PAGE_FROM_ONLINE_PAGES_TABLE")}async getPageType(r){const{data:n,error:a}=await A(()=>S.select({primaryPage:f.primaryPage,pageType:f.pageType,slug:f.slug}).from(f).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a||!n||n.length===0)throw new T("Page not found","PAGE_NOT_FOUND");const o=n[0];return(i=>!i||i.trim()==="")(o.slug)?"partial":o.primaryPage?"language":"primary"}async getPrimaryPage(r){const{data:n,error:a}=await A(()=>S.select({id:f.id,primaryPage:f.primaryPage}).from(f).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a||!n||n.length===0)throw new T("Error getting primary page","ERROR_GETTING_PRIMARY_PAGE");const o=n[0];return o.primaryPage??o.id}async getPartialBlockUsage(r){const{data:n,error:a}=await A(()=>S.select({id:f.id,partialBlocks:f.partialBlocks}).from(f).where(h.eq(f.app,this.appId)));return a||!n?[]:n.filter(o=>(o.partialBlocks||"").split("|").includes(r)).map(o=>o.id)}}class fw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{id:r}=t,{error:n}=await A(()=>S.delete(te).where(h.eq(te.pageId,r)));if(n)throw new T("Failed to unmark page as template","DELETE_FAILED",500,n);return{success:!0}}}class gw{constructor(t){Ie(this,"appId");Ie(this,"pageTreeBuilder");this.appId=t}updateNodeSlugInTree(t,r,n){for(const a of n){if(a.id===t)return a.slug=r,!0;if(a.children&&a.children.length>0&&this.updateNodeSlugInTree(t,r,a.children))return!0}return!1}validateSlugAvailabilityInTree(t,r,n,a,o=!1){const s=i=>{for(const l of i){const u=l.dynamic??!1;if(l.slug===t&&l.id!==r&&u===n||l.children&&l.children.length>0&&s(l.children))return!0}return!1};if(s(a.primaryTree)){const i=o?`Slug '${t}' conflicts with a primary page slug. Language page slugs cannot overlap with primary page slugs.`:`Slug '${t}' is already in use. Please choose another slug`;throw new T(i,"SLUG_ALREADY_EXISTS")}if(s(a.languageTree)){const i=o?`Slug '${t}' is already in use by another language page. Please choose another slug.`:`Slug '${t}' conflicts with a language page slug. Please choose another slug.`;throw new T(i,"SLUG_ALREADY_EXISTS")}}async isSlugChanged(t,r){if(!r)return!1;const{data:n,error:a}=await A(()=>S.select({slug:f.slug}).from(f).where(h.and(h.eq(f.id,t),h.eq(f.app,this.appId))).limit(1));if(a||!n||n.length===0)return!1;const o=n[0];return(o==null?void 0:o.slug)!==r}async isParentChanged(t,r){if(r===void 0)return!1;const{data:n,error:a}=await A(()=>S.select({parent:f.parent}).from(f).where(h.and(h.eq(f.id,t),h.eq(f.app,this.appId))).limit(1));if(a||!n||n.length===0)return!1;const o=n[0];return(o==null?void 0:o.parent)!==r}async handleSlugChangeWithTree(t,r){const n=r.slug;this.pageTreeBuilder||(this.pageTreeBuilder=new Ar(this.appId));const a=await this.pageTreeBuilder.getPagesTree();let o=this.pageTreeBuilder.findPageInPrimaryTree(t,a.primaryTree);if(!o&&(o=this.pageTreeBuilder.findPageInLanguageTree(t,a.languageTree),!o))throw new T("Page not found in tree","PAGE_NOT_FOUND_IN_TREE");const s=o.slug,i=o.dynamic||!1;this.validateSlugAvailabilityInTree(n,t,i,a);let l=[];const u=this.pageTreeBuilder.collectNestedChildSlugs(o,s,n);return l=[{id:t,newSlug:n},...u.map(c=>({id:c.id,newSlug:c.newSlug}))],l}async handleParentChangeWithTree(t,r){const n=r.parent;this.pageTreeBuilder||(this.pageTreeBuilder=new Ar(this.appId));const a=await this.pageTreeBuilder.getPagesTree(),o=this.pageTreeBuilder.findPageInPrimaryTree(t,a.primaryTree);if(!o)throw this.pageTreeBuilder.findPageInLanguageTree(t,a.languageTree)?new T("Cannot change parent of language pages directly","INVALID_OPERATION"):new T("Primary page not found in tree","PAGE_NOT_FOUND_IN_TREE");const s=o.slug,i=r.slug?r.slug:this.pageTreeBuilder.calculateSlugFromParent(n,s,a.primaryTree);this.validateSlugAvailabilityInTree(i,t,o.dynamic||!1,a),this.updateNodeSlugInTree(t,i,a.primaryTree);const l=this.pageTreeBuilder.collectNestedChildSlugs(o,s,i),u=[{id:t,newSlug:i},...l.map(p=>({id:p.id,newSlug:p.newSlug}))];for(const p of l)this.updateNodeSlugInTree(p.id,p.newSlug,a.primaryTree);const c=this.pageTreeBuilder.findLanguagePagesForPrimary(t,a.languageTree);let d;n&&(d=this.pageTreeBuilder.findLanguagePagesForPrimary(n,a.languageTree));for(const p of c){const w=d==null?void 0:d.filter(k=>k.lang===p.lang)[0],b=(w==null?void 0:w.id)||null,_=this.pageTreeBuilder.calculateSlugFromParent(b,p.slug,a.languageTree);this.validateSlugAvailabilityInTree(_,p.id,p.dynamic||!1,a,!0),this.updateNodeSlugInTree(p.id,_,a.languageTree);const I=this.pageTreeBuilder.collectNestedChildSlugs(p,p.slug,_);for(const k of I)this.updateNodeSlugInTree(k.id,k.newSlug,a.languageTree);u.push({id:p.id,newSlug:_}),u.push(...I.map(k=>({id:k.id,newSlug:k.newSlug})))}return u}async batchUpdateSlugs(t,r,n,a){const o=t.map(async i=>{const l={slug:i.newSlug,lastSaved:h.sql`now()`};if(i.id===n){const c=j.pick(r,["name","seo","blocks","currentEditor","buildTime","parent","pageType","dynamic","dynamicSlugCustom","links","partialBlocks","designTokens"]);Object.keys(c).forEach(d=>{c[d]===void 0&&delete c[d]}),Object.assign(l,{...c,changes:a})}const{error:u}=await A(()=>S.update(f).set(l).where(h.and(h.eq(f.id,i.id),h.eq(f.app,this.appId))));if(u)throw new T(`Failed to update page ${i.id}`,"UPDATE_PAGE_FAILED");return i.id});await Promise.all(o);const s=t.map(async i=>{await A(()=>S.update(he).set({slug:i.newSlug}).where(h.and(h.eq(he.id,i.id),h.eq(he.app,this.appId))))});await Promise.all(s)}setPageTreeBuilder(t){this.pageTreeBuilder=t}}class hw extends Z{constructor(){super(...arguments);Ie(this,"appId","");Ie(this,"pageTreeBuilder");Ie(this,"slugChangeHandler")}getValidationSchema(){return v.z.object({id:v.z.string().nonempty(),blocks:v.z.array(v.z.any()).optional(),currentEditor:v.z.string().optional(),slug:v.z.string().optional(),name:v.z.string().optional(),seo:v.z.record(v.z.string(),v.z.any()).optional(),buildTime:v.z.boolean().optional(),parent:v.z.union([v.z.string(),v.z.null()]).optional(),pageType:v.z.string().optional(),dynamic:v.z.boolean().optional(),dynamicSlugCustom:v.z.string().optional(),needTranslations:v.z.boolean().optional()})}async execute(r){await this.verifyAccess(),this.validateContext(),this.appId=this.context.appId;try{if(this.isOnlyBlocksUpdate(r))return await this.updateBlocks(r.id,r.blocks),await this.buildResponse(r.id,r);const n=this.extractAllowedPageFields(r);this.slugChangeHandler=new gw(this.appId);const a=await this.slugChangeHandler.isSlugChanged(r.id,n.slug);return await this.slugChangeHandler.isParentChanged(r.id,n.parent)&&n.parent!==void 0?(this.pageTreeBuilder=new Ar(this.appId),this.slugChangeHandler.setPageTreeBuilder(this.pageTreeBuilder),await this.handleParentChangeWithHandler(r.id,n)):a&&n.slug?(this.pageTreeBuilder=new Ar(this.appId),this.slugChangeHandler.setPageTreeBuilder(this.pageTreeBuilder),await this.handleSlugChangeWithHandler(r.id,n)):await this.updatePageInDatabase(r.id,n),await this.syncDynamicFieldsToSecondaryPages(r.id,n),await this.buildResponse(r.id,n)}catch(n){return this.handleExecutionError(n)}}async updateBlocks(r,n){const a=this.getLinks(n),o=this.getPartialBlocks(n),s=this.getDesignTokens(n);await this.updatePageInDatabase(r,{blocks:n,links:a,partialBlocks:o,designTokens:s})}getPartialBlocks(r){return j.compact(r.filter(n=>n._type==="GlobalBlock"||n._type==="PartialBlock").map(n=>j.get(n,"partialBlockId",j.get(n,"globalBlock",!1)))).join("|")}getLinks(r){const n=JSON.stringify(r),a=/pageType:[^:]+:([a-f0-9-]{36})/gi,o=[];let s;for(;(s=a.exec(n))!==null;)s[1]&&o.push(s[1]);return j.compact(o).join("|")}getDesignTokens(r){const n=/dt#[^ "]+/g,a={};for(const o of r){const s=JSON.stringify(o);let i;for(;(i=n.exec(s))!==null;)if(i[0]){const l=i[0];a[l]||(a[l]={}),a[l][o._id]=o._name||o._type}}return a}validateContext(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET")}extractAllowedPageFields(r){return j.pick(r,["slug","name","seo","blocks","currentEditor","buildTime","parent","pageType","dynamic","dynamicSlugCustom"])}async handleSlugChangeWithHandler(r,n){const a=await this.slugChangeHandler.handleSlugChangeWithTree(r,n),o=this.determineChangeTypes(n);await this.slugChangeHandler.batchUpdateSlugs(a,n,r,o)}async handleParentChangeWithHandler(r,n){const a=await this.slugChangeHandler.handleParentChangeWithTree(r,n),o=this.determineChangeTypes(n);await this.slugChangeHandler.batchUpdateSlugs(a,n,r,o)}determineChangeTypes(r){const n=[],a=j.keys(r);return a.includes("blocks")&&n.push("Page"),a.includes("seo")&&n.push("SEO"),n.length>0?n:["Updated"]}async updatePageInDatabase(r,n){const a=this.determineChangeTypes(n),{error:o}=await A(()=>S.update(f).set({...n,changes:a,lastSaved:h.sql`now()`}).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a.includes("Page")){const{error:s}=await A(()=>S.update(f).set({changes:a}).where(h.and(h.eq(f.primaryPage,r),h.eq(f.app,this.appId))));if(s)throw new T("Error updating page","ERROR_UPDATING_PAGE")}if(o)throw new T("Error updating page","ERROR_UPDATING_PAGE")}isOnlyBlocksUpdate(r){return j.keys(r).includes("blocks")}async fetchUpdatedPageData(r){const{data:n,error:a}=await A(()=>S.select({id:f.id,slug:f.slug,lang:f.lang,pageType:f.pageType,name:f.name,online:f.online,parent:f.parent,seo:f.seo}).from(f).where(h.eq(f.id,r)).limit(1));if(a||!n||n.length===0)throw new T("Error getting updated page","ERROR_GETTING_PAGE");return n[0]}async buildResponse(r,n){return this.isOnlyBlocksUpdate(n)?{success:!0}:{page:await this.fetchUpdatedPageData(r)}}async syncDynamicFieldsToSecondaryPages(r,n){const a=j.keys(n);if(!(a.includes("dynamic")||a.includes("dynamicSlugCustom")))return;const s={};a.includes("dynamic")&&(s.dynamic=n.dynamic),a.includes("dynamicSlugCustom")&&(s.dynamicSlugCustom=n.dynamicSlugCustom);const{error:i}=await A(()=>S.update(f).set(s).where(h.and(h.eq(f.primaryPage,r),h.eq(f.app,this.appId))));i&&console.error("Failed to sync dynamic fields to secondary pages:",i)}handleExecutionError(r){throw console.log("Error updating page:",r),r instanceof T?r:new T(`Failed to update page: ${r instanceof Error?r.message:"Unknown error"}`,"UPDATE_PAGE_FAILED")}}class mw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().nonempty(),metadata:v.z.record(v.z.string(),v.z.any())})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.id),h.eq(f.app,r)),columns:{id:!0}}));if(a)throw new T(`Failed to fetch page: ${a.message}`,"FETCH_FAILED");if(!n)throw new T("Page not found","PAGE_NOT_FOUND");const{error:o}=await A(()=>S.update(f).set({metadata:t.metadata}).where(h.and(h.eq(f.id,t.id),h.eq(f.app,r))));if(o)throw console.error(o),new T("Failed to update page metadata","UPDATE_FAILED");return{success:!0}}}class yw extends Z{getValidationSchema(){return v.z.object({settings:v.z.any()})}async execute(t){if(await this.verifyAccess(),!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,n=j.pick(t.settings,["theme","designTokens"]),{data:a,error:o}=await A(()=>S.select({changes:ge.changes}).from(ge).where(h.eq(ge.id,r)));if(o)throw ie("ERROR_UPDATE_WEBSITE_FIELDS",o);const s=a[0].changes??[],i={theme:"THEME",designTokens:"DESIGN_TOKENS"},l=Object.keys(n).map(p=>i[p]).filter(Boolean),u=[...new Set([...s,...l])],c={...n,changes:u},{error:d}=await A(()=>S.update(ge).set(c).where(h.eq(ge.id,r)));if(d)throw ie("ERROR_UPDATE_WEBSITE_FIELDS",d);return{success:!0}}}class vw extends Z{getValidationSchema(){return v.z.object({name:v.z.string().min(1),group:v.z.string().min(1),blocks:v.z.array(v.z.any()),description:v.z.string().optional(),previewImage:v.z.string().optional(),id:v.z.string().optional(),previewImageUrl:v.z.string().optional()})}async execute(t){var b;if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r,userId:n}=this.context,{name:a,group:o,blocks:s,description:i,previewImage:l,previewImageUrl:u,id:c}=t,{data:d,error:p}=await A(()=>S.query.libraries.findFirst({where:h.eq(W.app,r),columns:{id:!0}}));if(p)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,p);if(!d)throw new T("Library not found for this app","GET_SITE_LIBRARY_FAILED");let w=u;if(l){const _=mn("UPLOAD_TO_STORAGE");_==null||_.setContext(this.context);const I=`library-item-${Date.now()}.webp`,k=`${r}/library-items`,P=await(_==null?void 0:_.execute({file:l,fileName:I,contentType:"image/webp",folder:k}));if(P!=null&&P.error)throw new T("Failed to upload preview image","UPLOAD_PREVIEW_FAILED",500,P.error);w=((b=P==null?void 0:P.data)==null?void 0:b.url)||u}if(c){const _={name:a,blocks:s,library:d.id,description:i??null,group:o,user:n??null};w&&(_.preview=w);const{data:I,error:k}=await A(()=>S.update(re).set(_).where(h.eq(re.id,c)).returning());if(k||!I||I.length===0)throw new T("Failed to update library item","UPDATE_LIBRARY_ITEM_FAILED",500,k);return I[0]}else{const _=Su.randomUUID(),I=[...s];j.set(I,"0._libBlockId",_);const k={id:_,name:a,blocks:I,library:d.id,description:i??null,group:o,user:n??null,preview:w??null},{data:P,error:m}=await A(()=>S.insert(re).values(k).returning());if(m||!P||P.length===0)throw new T("Failed to create library item","CREATE_LIBRARY_ITEM_FAILED",500,m);return P[0]}}}class ww extends Z{getValidationSchema(){return v.z.object({}).optional().default({})}async execute(){const t=new pu,r=new du,n=new cu,a=new uu,o=new su;this.context&&(t.setContext(this.context),r.setContext(this.context),n.setContext(this.context),a.setContext(this.context),o.setContext(this.context));const[s,i,l,u,c]=await Promise.all([t.execute({draft:!0}),r.execute({lang:""}),n.execute(),a.execute(),o.execute()]);return{websiteSettings:s,websitePages:i,pageTypes:l,libraries:u,collections:c}}}class _w extends Z{getValidationSchema(){return v.z.object({id:v.z.string(),lang:v.z.string(),pageType:v.z.string().optional(),pageProps:v.z.any().optional().default({})})}async execute(t){const{id:r,lang:n,pageType:a,pageProps:o={}}=t,s=new iu,i=new ou,l=new lu;this.context&&(s.setContext(this.context),i.setContext(this.context),l.setContext(this.context));try{const[u,c,d]=await Promise.all([s.execute({id:r}),i.execute({lang:n,pageType:a,pageProps:o}),l.execute({id:r})]);return{draftPage:u,builderPageData:c,languagePages:d}}catch(u){const c=u instanceof Error?u.message:String(u);throw new Error(`Failed to fetch page data: ${c}`)}}}const xt=class xt{constructor(){Ie(this,"actions",{});ut.registerChaiPageType("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>'}),ut.registerChaiPartialType("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>'}),this.register("ASK_AI",new Mv),this.register("CHECK_USER_ACCESS",new Lv),this.register("CREATE_PAGE",new Uv),this.register("DELETE_PAGE",new qv),this.register("DUPLICATE_PAGE",new Gv),this.register("RESTORE_PAGE_REVISION",new uw),this.register("UPDATE_PAGE_METADATA",new mw),this.register("GENERATE_SEO_FIELD",new Kv),this.register("GENERATE_HTML_FROM_PROMPT",new Jv),this.register("GET_REVISION_PAGE",new ow),this.register("UPDATE_PAGE",new hw),this.register("GET_COMPARE_DATA",new Qv),this.register("GET_SITE_WIDE_USAGE",new sw),this.register("GET_WEBSITE_DRAFT_SETTINGS",new pu),this.register("GET_WEBSITE_PAGES",new du),this.register("GET_LIBRARIES",new uu),this.register("GET_DRAFT_PAGE",new iu),this.register("GET_LANGUAGE_PAGES",new lu),this.register("UPSERT_LIBRARY_ITEM",new vw),this.register("MARK_AS_TEMPLATE",new lw),this.register("GET_LIBRARY_ITEM",new rw),this.register("GET_LIBRARY_ITEMS",new nw),this.register("DELETE_LIBRARY_ITEM",new jv),this.register("UNMARK_AS_TEMPLATE",new fw),this.register("GET_TEMPLATES_BY_TYPE",new iw),this.register("SEARCH_PAGES",new dw),this.register("GET_PAGE_REVISIONS",new aw),this.register("PUBLISH_CHANGES",new fu),this.register("UPDATE_WEBSITE_FIELDS",new yw),this.register("TAKE_OFFLINE",new pw),this.register("GET_CHANGES",new Xv),this.register("GET_LIBRARY_GROUPS",new tw),this.register("DELETE_PAGE_REVISION",new Zv),this.register("GET_COLLECTIONS",new su),this.register("GET_BLOCK_ASYNC_PROPS",new Wv),this.register("GET_BUILDER_PAGE_DATA",new ou),this.register("GET_PAGE_TYPES",new cu),this.register("SEARCH_PAGE_TYPE_ITEMS",new cw),this.register("GET_DYNAMIC_PAGES",new ew),this.register("GET_WEBSITE_DATA",new ww),this.register("GET_PAGE_ALL_DATA",new _w)}static getInstance(){return xt.instance||(xt.instance=new xt),xt.instance}register(t,r){this.actions[t]=r}registerActions(t){for(const[r,n]of Object.entries(t))this.register(r,n)}getAction(t){return j.get(this.actions,t)}getAllActions(){return this.actions}};Ie(xt,"instance");let ln=xt;const mn=e=>ln.getInstance().getAction(e),gu=ln.getInstance(),Tw=Object.freeze(Object.defineProperty({__proto__:null,default:gu,getChaiAction:mn},Symbol.toStringTag,{value:"Module"}));exports.ActionError=T;exports.ChaiBaseAction=Z;exports.PublishChangesAction=fu;exports.actionsRegistery=gu;exports.db=S;exports.getAskAiSystemPrompt=ru;exports.getChaiAction=mn;exports.safeQuery=A;exports.schema=au;
489
+ Language: ${t.lang}`})).text}}}class Wv extends Z{getValidationSchema(){return v.z.object({block:v.z.any(),pageProps:v.z.any().optional().default({}),lang:v.z.string()})}async execute(t){var r;try{const{block:n,pageProps:a,lang:o}=t,s=n._type;if(s==="Repeater"&&((r=n==null?void 0:n.repeaterItems)!=null&&r.includes("{{#"))){const u=n.repeaterItems.replace("{{#","").replace("}}",""),c=ut.getChaiCollection(u);return c?await(c==null?void 0:c.fetch({block:n,pageProps:a,lang:o,draft:!0,inBuilder:!0}))??[]:[]}const i=Iu.getRegisteredChaiBlock(s);return!i||!j.isFunction(i.dataProvider)?{}:await i.dataProvider({block:n,pageProps:a,lang:o,draft:!0,inBuilder:!0})??{}}catch(n){return this.handleError(n)}}}class ou extends Z{getValidationSchema(){return v.z.object({lang:v.z.string(),pageType:v.z.string().optional(),pageProps:v.z.any().optional().default({})})}async execute(t){try{const{lang:r,pageType:n,pageProps:a={}}=t,o=await ut.getChaiGlobalData({lang:r,draft:!0,inBuilder:!0});if(!n)return{global:o};const s=ut.getChaiPageType(n);return s?{...s.dataProvider?await s.dataProvider({lang:r,draft:!0,inBuilder:!0,pageProps:a}):{},global:o}:{global:o}}catch(r){return this.handleError(r)}}}class Xv extends Z{constructor(){super(...arguments);Ie(this,"appId","")}getValidationSchema(){return v.z.object({})}async execute(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");this.appId=this.context.appId;try{return await this.getChanges()}catch(r){if(r instanceof T)throw r;const n=r instanceof Error?r.message:"Failed to get changes";throw new T(n,"GET_CHANGES_ERROR")}}async getChanges(){const{data:r,error:n}=await A(()=>S.select({id:f.id,slug:f.slug,name:f.name,pageType:f.pageType,lang:f.lang,changes:f.changes,primaryPage:f.primaryPage,online:f.online,currentEditor:f.currentEditor}).from(f).where(h.and(h.eq(f.app,this.appId),h.isNotNull(f.changes))));if(n)throw new T("Error getting changed pages","ERROR_GETTING_CHANGES");const{data:a,error:o}=await A(()=>S.select({id:f.id,slug:f.slug,name:f.name,pageType:f.pageType,lang:f.lang,changes:f.changes,primaryPage:f.primaryPage,online:f.online}).from(f).where(h.and(h.eq(f.app,this.appId),h.isNull(f.currentEditor),h.eq(f.online,!1))));if(o)throw new T("Error getting offline pages","ERROR_GETTING_OFFLINE_PAGES");const s=(a||[]).map(d=>({...d,changes:["Take Online"]})),l=[...(r||[]).filter(d=>!s.some(p=>p.id===d.id)).map(d=>({...d,changes:d.changes})),...s],{data:u,error:c}=await A(()=>S.select({changes:ge.changes}).from(ge).where(h.and(h.eq(ge.id,this.appId),h.isNotNull(ge.changes))));if(!c&&u&&u.length>0){const d=u[0].changes??[];d.includes("THEME")&&l.push({id:"THEME",slug:"",name:"Theme",pageType:"theme",lang:"",changes:["Updated"],primaryPage:null,online:!0}),d.includes("DESIGN_TOKENS")&&l.push({id:"DESIGN_TOKENS",slug:"",name:"Design Tokens",pageType:"design_tokens",lang:"",changes:["Updated"],primaryPage:null,online:!0})}return l}}class su extends Z{getValidationSchema(){return v.z.object({})}async execute(){try{return ut.getChaiCollections().map(r=>j.omit(r,"fetch"))}catch(t){return this.handleError(t)}}}class Qv extends Z{getValidationSchema(){return v.z.object({versions:v.z.object({version1:v.z.object({type:v.z.enum(["draft","revision","live"]),id:v.z.string()}),version2:v.z.object({type:v.z.enum(["draft","revision","live"]),id:v.z.string()})})})}async execute(t){this.validateContext();const r=await this.getBlocksForVersion(t.versions.version1.type,t.versions.version1.id),n=await this.getBlocksForVersion(t.versions.version2.type,t.versions.version2.id);return{version1:{blocks:r.blocks,seo:r.seo},version2:{blocks:n.blocks,seo:n.seo}}}async getBlocksForVersion(t,r){let n,a;switch(t){case"draft":({data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.eq(f.id,r),columns:{blocks:!0,seo:!0}})));break;case"live":({data:n,error:a}=await A(()=>S.query.appPagesOnline.findFirst({where:h.eq(he.id,r),columns:{blocks:!0,seo:!0}})));break;case"revision":({data:n,error:a}=await A(()=>S.query.appPagesRevisions.findFirst({where:h.eq(Se.uid,r),columns:{blocks:!0,seo:!0}})));break;default:throw new T(`Invalid version type: ${t}`,"INVALID_VERSION_TYPE")}if(a)throw new T(`Failed to fetch blocks for ${t} version: ${a.message}`,"FETCH_BLOCKS_ERROR");if(!n)throw new T(`No data found for ${t} version with id: ${r}`,"VERSION_NOT_FOUND");return{blocks:n.blocks||[],seo:n.seo||{}}}validateContext(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET")}}class iu extends Z{getValidationSchema(){return v.z.object({id:v.z.string()})}async execute(t){var c;if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,{id:n}=t,a=f,{data:o,error:s}=await A(()=>S.select({id:a.id,name:a.name,slug:a.slug,lang:a.lang,primaryPage:a.primaryPage,seo:a.seo,currentEditor:a.currentEditor,pageType:a.pageType,lastSaved:a.lastSaved,dynamic:a.dynamic,parent:a.parent,blocks:a.blocks}).from(a).where(h.and(h.eq(a.app,r),h.eq(a.id,n))).limit(1));if(s)throw ie("PAGE_NOT_FOUND",s);if(!o||o.length===0)throw ie("PAGE_NOT_FOUND",new Error("Page not found"));const i=o[0],l=i.primaryPage??i.id;let u=i.blocks??[];if(l!==i.id){const{data:d,error:p}=await A(()=>S.select({blocks:a.blocks}).from(a).where(h.and(h.eq(a.app,r),h.eq(a.id,l))).limit(1));if(p)throw ie("BLOCKS_NOT_FOUND",p);u=((c=d==null?void 0:d[0])==null?void 0:c.blocks)??[]}return{...i,blocks:u,id:n,languagePageId:i.id}}}class ew extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string()})}async execute(t){try{const{pageType:r,...n}=t,a=ut.getChaiPageType(r);return a?a.getDynamicPages?await a.getDynamicPages(n):[]:{error:"Page type not found"}}catch(r){return this.handleError(r)}}}class lu extends Z{getValidationSchema(){return v.z.object({id:v.z.string()})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,{id:n}=t,{data:a,error:o}=await A(()=>S.select({id:f.id,name:f.name,slug:f.slug,lang:f.lang,primaryPage:f.primaryPage,pageType:f.pageType,seo:f.seo,currentEditor:f.currentEditor,online:f.online,parent:f.parent,metadata:f.metadata,dynamic:f.dynamic,dynamicSlugCustom:f.dynamicSlugCustom,changes:f.changes}).from(f).where(h.and(h.eq(f.app,r),h.or(h.eq(f.primaryPage,n),h.eq(f.id,n)))));if(o)throw ie("LANGUAGE_PAGES_ERROR",o);return a.map(s=>j.omit(s,["app"]))}}class uu extends Z{getValidationSchema(){return v.z.object({}).optional().default({})}async execute(){var l;if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:t}=this.context,r=await A(()=>S.select({id:W.id,name:W.name,type:W.type,createdAt:W.createdAt}).from(W).where(h.eq(W.app,t)).limit(1));if(r.error)throw new T("Failed to fetch site library","DB_ERROR");const n=r.data[0]||null,a=((l=process==null?void 0:process.env)==null?void 0:l.CHAIBUILDER_CLIENT_ID)||null;if(!a)return n?[{id:n.id,name:n.name,type:n.type,createdAt:n.createdAt,isSiteLibrary:!0}]:[];const{data:o,error:s}=await A(()=>S.select({id:W.id,name:W.name,type:W.type,createdAt:W.createdAt}).from(W).where(h.eq(W.client,a)));if(s)throw new T("Failed to fetch libraries","DB_ERROR");const i=(n==null?void 0:n.id)||null;return o.map(u=>({id:u.id,name:u.name,type:u.type,createdAt:u.createdAt,isSiteLibrary:i?u.id===i:!1}))}}class tw extends Z{getValidationSchema(){return v.z.object({})}async execute(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{data:t,error:r}=await A(()=>S.select({id:W.id}).from(W).where(h.eq(W.app,this.context.appId)).limit(1));if(r)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,r);if(!t||t.length===0)return[];const n=t[0],{data:a,error:o}=await A(()=>S.select({group:re.group}).from(re).where(h.eq(re.library,n.id)));if(o)throw new T("Failed to fetch library groups","GET_LIBRARY_GROUPS_FAILED",500,o);const s=j.map(a,"group").filter(i=>i!=null);return j.map(j.uniq(s),i=>({id:i,name:i}))}}class rw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{id:n}=t,{data:a,error:o}=await A(()=>S.select({id:re.id,name:re.name,blocks:re.blocks,library:re.library,description:re.description,group:re.group,user:re.user,preview:re.preview,createdAt:re.createdAt,html:re.html,libraryApp:W.app,libraryName:W.name}).from(re).leftJoin(W,h.eq(re.library,W.id)).where(h.eq(re.id,n)));if(o)throw new T("Failed to fetch library item","GET_LIBRARY_ITEM_FAILED",500,o);if(!a||a.length===0)throw new T("Library item not found","GET_LIBRARY_ITEM_FAILED");const s=a[0],i=Array.isArray(s.blocks)?[...s.blocks]:s.blocks;return s.libraryApp===r?j.set(i,"0._libBlockId",s.id):j.set(i,"0._libBlockId",void 0),{id:s.id,name:s.name,blocks:i,description:s.description,group:s.group,user:s.user,preview:s.preview,createdAt:s.createdAt,html:s.html}}}class nw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{id:r}=t,{data:n,error:a}=await A(()=>S.select({id:re.id,name:re.name,library:re.library,group:re.group,description:re.description,preview:re.preview}).from(re).where(h.eq(re.library,r)));if(a)throw new T("Failed to fetch library items","GET_LIBRARY_ITEMS_FAILED",500,a);return n||[]}}class aw extends Z{getValidationSchema(){return v.z.object({id:v.z.string(),lang:v.z.string(),pageType:v.z.string().optional(),pageProps:v.z.any().optional().default({})})}async execute(t){const{id:r,lang:n,pageType:a,pageProps:o={}}=t,s=new iu,i=new ou,l=new lu;this.context&&(s.setContext(this.context),i.setContext(this.context),l.setContext(this.context));try{const[u,c,d]=await Promise.all([s.execute({id:r}),i.execute({lang:n,pageType:a,pageProps:o}),l.execute({id:r})]);return{draftPage:u,builderPageData:c,languagePages:d}}catch(u){const c=u instanceof Error?u.message:String(u);throw new Error(`Failed to fetch page data: ${c}`)}}}class ow extends Z{getValidationSchema(){return v.z.object({pageId:v.z.string().min(1,"Page ID is required")})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");try{return await this.getRevisions(t.pageId)}catch(r){if(r instanceof T)throw r;const n=r instanceof Error?r.message:"Failed to get page revisions";throw new T(n,"GET_PAGE_REVISIONS_ERROR")}}async getRevisions(t){const{data:r,error:n}=await A(()=>S.select({currentEditor:f.currentEditor,createdAt:f.createdAt}).from(f).where(h.and(h.eq(f.app,this.context.appId),h.eq(f.id,t)))),{data:a,error:o}=await A(()=>S.select({uid:Se.uid,currentEditor:Se.currentEditor,createdAt:Se.createdAt,type:Se.type}).from(Se).where(h.and(h.eq(Se.app,this.context.appId),h.eq(Se.id,t))));if(n){const u=n instanceof Error?`Error getting current page for revisions: ${n.message}`:"Error getting current page for revisions";throw new T(u,"ERROR_GETTING_CURRENT_PAGE_FOR_REVISIONS")}if(o){const u=o instanceof Error?`Error getting page revisions: ${o.message}`:"Error getting page revisions";throw new T(u,"ERROR_GETTING_PAGE_REVISIONS")}const s=r==null?void 0:r[0],l=[...s?[{...s,type:"published",uid:"current"}]:[],...a??[]];return j.orderBy(l,["createdAt"],["desc"])}}class cu extends Z{getValidationSchema(){return v.z.object({})}async execute(){try{return await Promise.all(ut.getChaiPageTypes().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,...j.isFunction(r.defaultSeo)?{defaultSeo:r.defaultSeo()}:{},...j.isFunction(r.defaultJSONLD)?{defaultJSONLD:r.defaultJSONLD()}:{}})))}catch(t){return this.handleError(t)}}}class sw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().nonempty(),type:v.z.enum(["draft","live","revision"])})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));let r,n;switch(t.type){case"draft":({data:r,error:n}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.id),h.eq(f.lang,t.lang??""))})));break;case"live":({data:r,error:n}=await A(()=>S.query.appPagesOnline.findFirst({where:h.and(h.eq(he.id,t.id),h.eq(he.lang,t.lang??""))})));break;case"revision":({data:r,error:n}=await A(()=>S.query.appPagesRevisions.findFirst({where:h.and(h.eq(Se.uid,t.id),h.eq(Se.lang,t.lang??""))})));break}if(n||!r)throw ie("NOT_FOUND",n||new Error("Page not found"));let a=(r==null?void 0:r.blocks)??[];return a=await this.getMergedBlocks(a,t.type==="draft",this.context.appId),{...r,blocks:a}}async getMergedBlocks(t,r,n){const a=r?f:he,o=t.filter(({_type:c})=>c==="GlobalBlock"||c==="PartialBlock");if(o.length===0)return t;const s=o.map(c=>j.get(c,"partialBlockId",j.get(c,"globalBlock",""))).filter(c=>c!=="");if(s.length===0)return t;const{data:i,error:l}=await A(()=>S.select({id:a.id,blocks:a.blocks}).from(a).where(h.and(h.eq(a.app,n),h.inArray(a.id,s))));if(l)throw ie("PARTIAL_BLOCKS_FETCH_ERROR",l);const u=new Map;i&&i.forEach(c=>{u.set(c.id,c.blocks??[])});for(let c=0;c<o.length;c++){const d=o[c];if(!d)continue;const p=j.get(d,"partialBlockId",j.get(d,"globalBlock",""));if(p==="")continue;let w=u.get(p)??[];w.length>0&&(w=w.map(_=>(j.isEmpty(_._parent)&&(_._parent=d._parent),j.has(d,"_show")&&(_._show=d._show),_)));const b=t.indexOf(d);b!==-1&&t.splice(b,1,...w)}return t}}class iw extends Z{getValidationSchema(){return v.z.undefined()}async execute(){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:t}=this.context,{data:r,error:n}=await A(()=>S.select({id:f.id,designTokens:f.designTokens,name:f.name,slug:f.slug,links:f.links,partialBlocks:f.partialBlocks}).from(f).where(h.and(h.eq(f.lang,""),h.eq(f.app,t))));if(n)throw ie("FETCH_SITE_DATA_FAILED",n);const a={};return j.each(r,o=>{var s;a[o.id]={name:o.name,isPartial:j.isEmpty(o.slug),partialBlocks:o.partialBlocks?(s=o.partialBlocks)==null?void 0:s.split("|").filter(Boolean):[],links:o.links?o.links.split("|").filter(Boolean):[],designTokens:o.designTokens??{}}}),a}}class lw extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string().min(1)})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{pageType:n}=t,{data:a,error:o}=await A(()=>S.query.libraries.findFirst({where:h.eq(W.app,r),columns:{id:!0}}));if(o)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,o);const{data:s,error:i}=await A(()=>S.select({id:W.id}).from(W).where(h.eq(W.type,"shared")));if(i)throw new T("Failed to fetch shared libraries","GET_SHARED_LIBRARIES_FAILED",500,i);const l=[...a?[a.id]:[],...(s||[]).map(d=>d.id)];if(l.length===0)return[];const{data:u,error:c}=await A(()=>S.select({id:te.id,library:te.library,pageId:te.pageId,pageType:te.pageType,name:te.name,description:te.description,preview:te.preview,user:te.user,createdAt:te.createdAt}).from(te).where(h.and(h.eq(te.pageType,n),h.inArray(te.library,l))));if(c)throw new T("Failed to fetch templates","GET_TEMPLATES_FAILED",500,c);return u||[]}}class du extends Z{getValidationSchema(){return v.z.object({lang:v.z.string().optional()})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,a=(t??{lang:""}).lang??"",{data:o,error:s}=await A(()=>S.select({id:f.id,name:f.name,slug:f.slug,pageType:f.pageType,currentEditor:f.currentEditor,parent:f.parent,online:f.online,lastSaved:f.lastSaved,createdAt:f.createdAt,dynamic:f.dynamic,dynamicSlugCustom:f.dynamicSlugCustom,primaryPage:f.primaryPage,changes:f.changes,lang:f.lang,designTokens:f.designTokens,links:f.links,partialBlocks:f.partialBlocks}).from(f).where(h.and(h.eq(f.app,r),h.eq(f.lang,a))));if(s)throw ie("ERROR_GETTING_WEBSITE_PAGES",s);if(!o||o.length===0)return[];const i=o.filter(d=>!j.isEmpty(d.slug)).map(d=>d.id),{data:l,error:u}=await A(()=>S.select({pageId:te.pageId}).from(te).where(h.inArray(te.pageId,i)));if(u)throw ie("ERROR_GETTING_TEMPLATE_INFO",u);const c=new Set((l||[]).map(d=>d.pageId));return o.map(d=>({...d,pageType:d.pageType??"page",isTemplate:c.has(d.id),changes:d.changes,lang:d.lang,designTokens:d.designTokens,links:d.links,partialBlocks:d.partialBlocks}))}}class pu extends Z{getValidationSchema(){return v.z.object({draft:v.z.boolean()})}async execute(t){if(!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,{draft:n}=t,a=n?ge:mt,{data:o,error:s}=await A(()=>S.select({theme:a.theme,fallbackLang:a.fallbackLang,languages:a.languages,settings:a.settings,designTokens:a.designTokens,changes:a.changes}).from(a).where(h.eq(a.id,r)).limit(1));if(s)throw ie("ERROR_PROJECT_CONFIG",s);if(!o||o.length===0)throw ie("PROJECT_NOT_FOUND",new Error("Project not found"));const i=j.first(o),l=(i==null?void 0:i.changes)??[];return{...this.getDefaultSettings(),...i,fallbackLang:(i==null?void 0:i.fallbackLang)||this.getDefaultSettings().fallbackLang,languages:(i==null?void 0:i.languages)||this.getDefaultSettings().languages,theme:(i==null?void 0:i.theme)||this.getDefaultSettings().theme,appKey:this.generateDeterministicUuid(r),appChanges:l}}getDefaultSettings(){return{fallbackLang:"en",languages:[],theme:{colors:{card:["#FFFFFF","#09090B"],ring:["#2563EB","#3B82F6"],input:["#E4E4E7","#27272A"],muted:["#F4F4F5","#27272A"],accent:["#F4F4F5","#27272A"],border:["#E4E4E7","#27272A"],popover:["#FFFFFF","#09090B"],primary:["#2563EB","#3B82F6"],secondary:["#F4F4F5","#27272A"],background:["#FFFFFF","#09090B"],foreground:["#09090B","#FFFFFF"],destructive:["#EF4444","#7F1D1D"],"card-foreground":["#09090B","#FFFFFF"],"muted-foreground":["#71717A","#A1A1AA"],"accent-foreground":["#09090B","#FFFFFF"],"popover-foreground":["#09090B","#FFFFFF"],"primary-foreground":["#FFFFFF","#FFFFFF"],"secondary-foreground":["#09090B","#FFFFFF"],"destructive-foreground":["#FFFFFF","#FFFFFF"]},fontFamily:{body:"Roboto",heading:"Poppins"},borderRadius:"30px"},settings:{},designTokens:{}}}generateDeterministicUuid(t){const r=is.createHash("sha256").update(t).digest("hex");return[r.substring(0,8),r.substring(8,12),"4"+r.substring(13,16),(parseInt(r.substring(16,17),16)&3|8).toString(16)+r.substring(17,20),r.substring(20,32)].join("-")}}class uw extends Z{getValidationSchema(){return v.z.object({}).optional().default({})}async execute(){const t=new pu,r=new du,n=new cu,a=new uu,o=new su;this.context&&(t.setContext(this.context),r.setContext(this.context),n.setContext(this.context),a.setContext(this.context),o.setContext(this.context));const[s,i,l,u,c]=await Promise.all([t.execute({draft:!0}),r.execute({lang:""}),n.execute(),a.execute(),o.execute()]);return{websiteSettings:s,websitePages:i,pageTypes:l,libraries:u,collections:c}}}class cw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1),description:v.z.string().optional(),name:v.z.string().min(1),pageType:v.z.string().min(1),previewImage:v.z.string().optional(),previewImageUrl:v.z.string().optional()})}async execute(t){var _;if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r,userId:n}=this.context,{id:a,description:o,name:s,pageType:i,previewImage:l,previewImageUrl:u}=t,{data:c,error:d}=await A(()=>S.query.libraries.findFirst({where:h.eq(W.app,r),columns:{id:!0}}));if(d)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,d);if(!c)throw new T("Library not found for this app","GET_SITE_LIBRARY_FAILED");let p=u;if(l){const I=mn("UPLOAD_TO_STORAGE");I==null||I.setContext(this.context);const k=`template-${Date.now()}.webp`,P=`${r}/templates`,m=await(I==null?void 0:I.execute({file:l,fileName:k,contentType:"image/webp",folder:P}));if(m!=null&&m.error)throw new T("Failed to upload preview image","UPLOAD_PREVIEW_FAILED",500,m.error);p=((_=m==null?void 0:m.data)==null?void 0:_.url)||u}const{data:w,error:b}=await A(()=>S.insert(te).values({library:c.id,user:n??null,pageId:a,description:o??null,name:s+" Template",pageType:i,preview:p??null}).returning({id:te.id,library:te.library,pageType:te.pageType,pageId:te.pageId,description:te.description,preview:te.preview}));if(b||!w||w.length===0)throw new T("Failed to mark page as template","UPDATE_FAILED",500,b);return w[0]}}class fu extends Z{constructor(){super(...arguments);Ie(this,"appId","");Ie(this,"revisionsEnabled",!1)}getValidationSchema(){return v.z.object({ids:v.z.array(v.z.string()).optional(),revisions:v.z.boolean().optional()})}async execute(r){await this.verifyAccess(),this.validateContext(),this.appId=this.context.appId,this.revisionsEnabled=r.revisions??!1;try{const n=r.ids??[];if(n.length===0)throw new T("IDS_REQUIRED","At least one page ID or THEME must be provided");const a=await Promise.all(n.map(i=>i==="THEME"?this.publishTheme():i==="DESIGN_TOKENS"?this.publishDesignToken():this.publishPage(i)));await this.clearChanges(n);const o=j.uniq(j.flattenDeep(a.map(i=>i.tags))),s=j.uniq(j.flattenDeep(a.map(i=>i.paths)));return{tags:o,paths:s}}catch(n){return this.handleExecutionError(n)}}validateContext(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET")}async publishTheme(){const r=await this.cloneApp(),{error:n}=await A(()=>S.delete(mt).where(h.eq(mt.id,this.appId)));if(n)throw new T("Error deleting online theme","ERROR_PUBLISHING_THEME",500,n);const{error:a}=await A(()=>S.insert(mt).values({...r,changes:null}));if(a)throw new T("Error inserting online theme","ERROR_PUBLISHING_THEME",500,a);return await this.removeFromChangesArray("THEME","ERROR_PUBLISHING_THEME"),{tags:[`website-settings-${this.appId}`],paths:[]}}async publishDesignToken(){const r=await this.cloneApp(),{error:n}=await A(()=>S.delete(mt).where(h.eq(mt.id,this.appId)));if(n)throw new T("Error deleting online app","ERROR_PUBLISHING_DESIGN_TOKEN",500,n);const{error:a}=await A(()=>S.insert(mt).values({...r,changes:null}));if(a)throw new T("Error inserting online app","ERROR_PUBLISHING_DESIGN_TOKEN",500,a);return await this.removeFromChangesArray("DESIGN_TOKENS","ERROR_PUBLISHING_DESIGN_TOKEN"),{tags:[`website-settings-${this.appId}`],paths:[]}}async removeFromChangesArray(r,n){var u;const{data:a,error:o}=await A(()=>S.select({changes:ge.changes}).from(ge).where(h.eq(ge.id,this.appId)));if(o)throw new T("Error fetching changes",n,500,o);const i=(((u=a==null?void 0:a[0])==null?void 0:u.changes)??[]).filter(c=>c!==r),{error:l}=await A(()=>S.update(ge).set({changes:i.length>0?i:null}).where(h.eq(ge.id,this.appId)));if(l)throw new T("Error updating changes",n,500,l)}async cloneApp(){const{data:r,error:n}=await A(()=>S.query.apps.findFirst({where:h.eq(ge.id,this.appId)}));if(n||!r)throw new T("Site not found","SITE_NOT_FOUND",404,n);return r}async clearChanges(r){const n=r.filter(o=>o!=="THEME"&&o!=="DESIGN_TOKENS");if(n.length===0)return;const{error:a}=await A(()=>S.update(f).set({changes:null,online:!0}).where(h.and(h.inArray(f.id,n),h.eq(f.app,this.appId))));if(a)throw new T("Error clearing changes","ERROR_CLEARING_CHANGES",500,a)}async getPartialBlockUsage(r){const{data:n}=await A(()=>S.query.appPagesOnline.findMany({where:h.and(h.eq(he.app,this.appId),h.like(he.partialBlocks,`%${r}%`)),columns:{id:!0}}));return j.uniq(n??[]).map(a=>a.id).map(a=>`page-${a}`)}async publishPage(r){const n=await this.clonePage(r);await this.addOnlinePage(n);const a=[`page-${n.primaryPage??n.id}`],o=[];return j.isEmpty(n.slug)?a.push(...await this.getPartialBlockUsage(n.primaryPage??n.id)):o.push(`${n.slug}`),{tags:a,paths:o}}async createRevision(r){if(!this.revisionsEnabled)return!1;const{data:n,error:a}=await A(()=>S.query.appPagesOnline.findFirst({where:h.eq(he.id,r)}));if(a||!n||!j.isEmpty(n.primaryPage))return!1;const{error:o}=await A(()=>S.insert(Se).values({...n,type:"published",uid:void 0}));if(o)throw new T("Error creating revision","ERROR_CREATING_REVISION",500,o);return!0}async addOnlinePage(r){await this.createRevision(r.id);const{error:n}=await A(()=>S.delete(he).where(h.eq(he.id,r.id)));if(n)throw new T("Error deleting online page","ERROR_PUBLISHING_PAGE",500,n);const{changes:a,createdAt:o,...s}=r,{data:i,error:l}=await A(()=>{var c;return S.insert(he).values({...s,currentEditor:(c=this.context)==null?void 0:c.userId}).returning({id:he.id,primaryPage:he.primaryPage})});if(l||!i||i.length===0)throw new T("Error publishing page","ERROR_PUBLISHING_PAGE",500,l);const{error:u}=await A(()=>S.update(f).set({changes:null}).where(h.eq(f.id,r.id)));if(u)throw new T("Error clearing page changes","ERROR_PUBLISHING_PAGE",500,u);return i[0]}async clonePage(r){const{data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,r),h.eq(f.app,this.appId))}));if(a||!n)throw new T("Page not found","PAGE_NOT_FOUND",404,a);return n}handleExecutionError(r){throw r instanceof T?r:new T(`Failed to publish changes: ${r instanceof Error?r.message:"Unknown error"}`,"PUBLISH_CHANGES_FAILED")}}class dw extends Z{getValidationSchema(){return v.z.object({revisionId:v.z.string().nonempty(),discardCurrent:v.z.boolean(),pageId:v.z.string().optional()})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context;let n,a;if(t.revisionId==="current"){if(!t.pageId)throw new T("pageId is required when restoring current revision","PAGE_ID_REQUIRED");const{data:o,error:s}=await A(()=>S.query.appPagesOnline.findFirst({where:h.and(h.eq(he.id,t.pageId),h.eq(he.app,r)),columns:{id:!0,blocks:!0}}));if(s)throw new T("Error fetching live page","FETCH_ERROR");if(!o)throw new T("Live page not found","PAGE_NOT_FOUND");n=o.id,a=o.blocks}else{const{data:o,error:s}=await A(()=>S.query.appPagesRevisions.findFirst({where:h.and(h.eq(Se.uid,t.revisionId),h.eq(Se.app,r)),columns:{id:!0,blocks:!0,type:!0}}));if(s)throw new T("Error fetching revision","FETCH_ERROR");if(!o)throw new T("Revision not found","REVISION_NOT_FOUND");n=o.id,a=o.blocks}if(!t.discardCurrent){const{data:o,error:s}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,n),h.eq(f.app,r))}));if(s)throw new T("Error fetching current page","FETCH_ERROR");if(!o)throw new T("Current page not found","PAGE_NOT_FOUND");const i=o.blocks,l={id:n,blocks:i,type:"draft",createdAt:"now()",...j.pick(o,["name","slug","pageType","lang","app","currentEditor"])};await S.insert(Se).values(l)}return await S.update(f).set({blocks:a}).where(h.eq(f.id,n)),{success:!0,pageId:n}}}class pw extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string(),query:v.z.string()})}async execute(t){try{const{pageType:r,query:n}=t,a=ut.getChaiPageType(r);if(!a)return{error:"Page type not found"};if(a.search){const o=await a.search(n);return o instanceof Error?{error:o.message}:o}return[]}catch(r){return this.handleError(r)}}}class fw extends Z{getValidationSchema(){return v.z.object({pageType:v.z.string().min(1),query:v.z.string().optional()})}async execute(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{pageType:n,query:a=""}=t,o=this.isUUID(a),s=[h.eq(f.app,r),h.eq(f.pageType,n)];let i;a?o?i=h.and(...s,h.eq(f.id,a)):i=h.and(...s,h.or(h.ilike(f.slug,`%${a}%`),h.ilike(f.name,`%${a}%`))):i=h.and(...s);const{data:l,error:u}=await A(()=>S.select({id:f.id,slug:f.slug,name:f.name,lang:f.lang,primaryPage:f.primaryPage}).from(f).where(i));if(u)throw new T("Failed to search pages","ERROR_SEARCHING_PAGES",500,u);return l||[]}isUUID(t){return t.length===36}}class gw extends Z{constructor(){super(...arguments);Ie(this,"appId","")}getValidationSchema(){return v.z.object({id:v.z.string().min(1,"Page ID is required")})}async execute(r){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");this.appId=this.context.appId;try{return await this.takeOffline(r.id)}catch(n){if(n instanceof T)throw n;const a=n instanceof Error?n.message:"Failed to take page offline";throw new T(a,"TAKE_OFFLINE_ERROR")}}async takeOffline(r){const n=await this.getPageType(r),{error:a}=await A(()=>S.update(f).set({online:!1}).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a)throw new T("Error taking page offline","ERROR_TAKING_PAGE_OFFLINE");if(await this.deleteOnlinePage(r),n==="language")return{tags:[`page-${await this.getPrimaryPage(r)}`]};if(n==="partial")return{tags:[...(await this.getPartialBlockUsage(r)).map(l=>`page-${l}`)]};const{data:o,error:s}=await A(()=>S.select({id:f.id,slug:f.slug,lang:f.lang,pageType:f.pageType,name:f.name,online:f.online,seo:f.seo}).from(f).where(h.eq(f.id,r)));if(s||!o||o.length===0)throw new T("Error getting page after taking offline","ERROR_TAKING_PAGE_OFFLINE");return{tags:[`page-${r}`],page:o[0]}}async deleteOnlinePage(r){const{error:n}=await A(()=>S.delete(he).where(h.eq(he.id,r)));if(n)throw new T("Error deleting page from online pages table","ERROR_DELETING_PAGE_FROM_ONLINE_PAGES_TABLE");const{error:a}=await A(()=>S.delete(he).where(h.eq(he.primaryPage,r)));if(a)throw new T("Error deleting page from online pages table","ERROR_DELETING_PAGE_FROM_ONLINE_PAGES_TABLE")}async getPageType(r){const{data:n,error:a}=await A(()=>S.select({primaryPage:f.primaryPage,pageType:f.pageType,slug:f.slug}).from(f).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a||!n||n.length===0)throw new T("Page not found","PAGE_NOT_FOUND");const o=n[0];return(i=>!i||i.trim()==="")(o.slug)?"partial":o.primaryPage?"language":"primary"}async getPrimaryPage(r){const{data:n,error:a}=await A(()=>S.select({id:f.id,primaryPage:f.primaryPage}).from(f).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a||!n||n.length===0)throw new T("Error getting primary page","ERROR_GETTING_PRIMARY_PAGE");const o=n[0];return o.primaryPage??o.id}async getPartialBlockUsage(r){const{data:n,error:a}=await A(()=>S.select({id:f.id,partialBlocks:f.partialBlocks}).from(f).where(h.eq(f.app,this.appId)));return a||!n?[]:n.filter(o=>(o.partialBlocks||"").split("|").includes(r)).map(o=>o.id)}}class hw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{id:r}=t,{error:n}=await A(()=>S.delete(te).where(h.eq(te.pageId,r)));if(n)throw new T("Failed to unmark page as template","DELETE_FAILED",500,n);return{success:!0}}}class mw{constructor(t){Ie(this,"appId");Ie(this,"pageTreeBuilder");this.appId=t}updateNodeSlugInTree(t,r,n){for(const a of n){if(a.id===t)return a.slug=r,!0;if(a.children&&a.children.length>0&&this.updateNodeSlugInTree(t,r,a.children))return!0}return!1}validateSlugAvailabilityInTree(t,r,n,a,o=!1){const s=i=>{for(const l of i){const u=l.dynamic??!1;if(l.slug===t&&l.id!==r&&u===n||l.children&&l.children.length>0&&s(l.children))return!0}return!1};if(s(a.primaryTree)){const i=o?`Slug '${t}' conflicts with a primary page slug. Language page slugs cannot overlap with primary page slugs.`:`Slug '${t}' is already in use. Please choose another slug`;throw new T(i,"SLUG_ALREADY_EXISTS")}if(s(a.languageTree)){const i=o?`Slug '${t}' is already in use by another language page. Please choose another slug.`:`Slug '${t}' conflicts with a language page slug. Please choose another slug.`;throw new T(i,"SLUG_ALREADY_EXISTS")}}async isSlugChanged(t,r){if(!r)return!1;const{data:n,error:a}=await A(()=>S.select({slug:f.slug}).from(f).where(h.and(h.eq(f.id,t),h.eq(f.app,this.appId))).limit(1));if(a||!n||n.length===0)return!1;const o=n[0];return(o==null?void 0:o.slug)!==r}async isParentChanged(t,r){if(r===void 0)return!1;const{data:n,error:a}=await A(()=>S.select({parent:f.parent}).from(f).where(h.and(h.eq(f.id,t),h.eq(f.app,this.appId))).limit(1));if(a||!n||n.length===0)return!1;const o=n[0];return(o==null?void 0:o.parent)!==r}async handleSlugChangeWithTree(t,r){const n=r.slug;this.pageTreeBuilder||(this.pageTreeBuilder=new Ar(this.appId));const a=await this.pageTreeBuilder.getPagesTree();let o=this.pageTreeBuilder.findPageInPrimaryTree(t,a.primaryTree);if(!o&&(o=this.pageTreeBuilder.findPageInLanguageTree(t,a.languageTree),!o))throw new T("Page not found in tree","PAGE_NOT_FOUND_IN_TREE");const s=o.slug,i=o.dynamic||!1;this.validateSlugAvailabilityInTree(n,t,i,a);let l=[];const u=this.pageTreeBuilder.collectNestedChildSlugs(o,s,n);return l=[{id:t,newSlug:n},...u.map(c=>({id:c.id,newSlug:c.newSlug}))],l}async handleParentChangeWithTree(t,r){const n=r.parent;this.pageTreeBuilder||(this.pageTreeBuilder=new Ar(this.appId));const a=await this.pageTreeBuilder.getPagesTree(),o=this.pageTreeBuilder.findPageInPrimaryTree(t,a.primaryTree);if(!o)throw this.pageTreeBuilder.findPageInLanguageTree(t,a.languageTree)?new T("Cannot change parent of language pages directly","INVALID_OPERATION"):new T("Primary page not found in tree","PAGE_NOT_FOUND_IN_TREE");const s=o.slug,i=r.slug?r.slug:this.pageTreeBuilder.calculateSlugFromParent(n,s,a.primaryTree);this.validateSlugAvailabilityInTree(i,t,o.dynamic||!1,a),this.updateNodeSlugInTree(t,i,a.primaryTree);const l=this.pageTreeBuilder.collectNestedChildSlugs(o,s,i),u=[{id:t,newSlug:i},...l.map(p=>({id:p.id,newSlug:p.newSlug}))];for(const p of l)this.updateNodeSlugInTree(p.id,p.newSlug,a.primaryTree);const c=this.pageTreeBuilder.findLanguagePagesForPrimary(t,a.languageTree);let d;n&&(d=this.pageTreeBuilder.findLanguagePagesForPrimary(n,a.languageTree));for(const p of c){const w=d==null?void 0:d.filter(k=>k.lang===p.lang)[0],b=(w==null?void 0:w.id)||null,_=this.pageTreeBuilder.calculateSlugFromParent(b,p.slug,a.languageTree);this.validateSlugAvailabilityInTree(_,p.id,p.dynamic||!1,a,!0),this.updateNodeSlugInTree(p.id,_,a.languageTree);const I=this.pageTreeBuilder.collectNestedChildSlugs(p,p.slug,_);for(const k of I)this.updateNodeSlugInTree(k.id,k.newSlug,a.languageTree);u.push({id:p.id,newSlug:_}),u.push(...I.map(k=>({id:k.id,newSlug:k.newSlug})))}return u}async batchUpdateSlugs(t,r,n,a){const o=t.map(async i=>{const l={slug:i.newSlug,lastSaved:h.sql`now()`};if(i.id===n){const c=j.pick(r,["name","seo","blocks","currentEditor","buildTime","parent","pageType","dynamic","dynamicSlugCustom","links","partialBlocks","designTokens"]);Object.keys(c).forEach(d=>{c[d]===void 0&&delete c[d]}),Object.assign(l,{...c,changes:a})}const{error:u}=await A(()=>S.update(f).set(l).where(h.and(h.eq(f.id,i.id),h.eq(f.app,this.appId))));if(u)throw new T(`Failed to update page ${i.id}`,"UPDATE_PAGE_FAILED");return i.id});await Promise.all(o);const s=t.map(async i=>{await A(()=>S.update(he).set({slug:i.newSlug}).where(h.and(h.eq(he.id,i.id),h.eq(he.app,this.appId))))});await Promise.all(s)}setPageTreeBuilder(t){this.pageTreeBuilder=t}}class yw extends Z{constructor(){super(...arguments);Ie(this,"appId","");Ie(this,"pageTreeBuilder");Ie(this,"slugChangeHandler")}getValidationSchema(){return v.z.object({id:v.z.string().nonempty(),blocks:v.z.array(v.z.any()).optional(),currentEditor:v.z.string().optional(),slug:v.z.string().optional(),name:v.z.string().optional(),seo:v.z.record(v.z.string(),v.z.any()).optional(),buildTime:v.z.boolean().optional(),parent:v.z.union([v.z.string(),v.z.null()]).optional(),pageType:v.z.string().optional(),dynamic:v.z.boolean().optional(),dynamicSlugCustom:v.z.string().optional(),needTranslations:v.z.boolean().optional()})}async execute(r){await this.verifyAccess(),this.validateContext(),this.appId=this.context.appId;try{if(this.isOnlyBlocksUpdate(r))return await this.updateBlocks(r.id,r.blocks),await this.buildResponse(r.id,r);const n=this.extractAllowedPageFields(r);this.slugChangeHandler=new mw(this.appId);const a=await this.slugChangeHandler.isSlugChanged(r.id,n.slug);return await this.slugChangeHandler.isParentChanged(r.id,n.parent)&&n.parent!==void 0?(this.pageTreeBuilder=new Ar(this.appId),this.slugChangeHandler.setPageTreeBuilder(this.pageTreeBuilder),await this.handleParentChangeWithHandler(r.id,n)):a&&n.slug?(this.pageTreeBuilder=new Ar(this.appId),this.slugChangeHandler.setPageTreeBuilder(this.pageTreeBuilder),await this.handleSlugChangeWithHandler(r.id,n)):await this.updatePageInDatabase(r.id,n),await this.syncDynamicFieldsToSecondaryPages(r.id,n),await this.buildResponse(r.id,n)}catch(n){return this.handleExecutionError(n)}}async updateBlocks(r,n){const a=this.getLinks(n),o=this.getPartialBlocks(n),s=this.getDesignTokens(n);await this.updatePageInDatabase(r,{blocks:n,links:a,partialBlocks:o,designTokens:s})}getPartialBlocks(r){return j.compact(r.filter(n=>n._type==="GlobalBlock"||n._type==="PartialBlock").map(n=>j.get(n,"partialBlockId",j.get(n,"globalBlock",!1)))).join("|")}getLinks(r){const n=JSON.stringify(r),a=/pageType:[^:]+:([a-f0-9-]{36})/gi,o=[];let s;for(;(s=a.exec(n))!==null;)s[1]&&o.push(s[1]);return j.compact(o).join("|")}getDesignTokens(r){const n=/dt#[^ "]+/g,a={};for(const o of r){const s=JSON.stringify(o);let i;for(;(i=n.exec(s))!==null;)if(i[0]){const l=i[0];a[l]||(a[l]={}),a[l][o._id]=o._name||o._type}}return a}validateContext(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET")}extractAllowedPageFields(r){return j.pick(r,["slug","name","seo","blocks","currentEditor","buildTime","parent","pageType","dynamic","dynamicSlugCustom"])}async handleSlugChangeWithHandler(r,n){const a=await this.slugChangeHandler.handleSlugChangeWithTree(r,n),o=this.determineChangeTypes(n);await this.slugChangeHandler.batchUpdateSlugs(a,n,r,o)}async handleParentChangeWithHandler(r,n){const a=await this.slugChangeHandler.handleParentChangeWithTree(r,n),o=this.determineChangeTypes(n);await this.slugChangeHandler.batchUpdateSlugs(a,n,r,o)}determineChangeTypes(r){const n=[],a=j.keys(r);return a.includes("blocks")&&n.push("Page"),a.includes("seo")&&n.push("SEO"),n.length>0?n:["Updated"]}async updatePageInDatabase(r,n){const a=this.determineChangeTypes(n),{error:o}=await A(()=>S.update(f).set({...n,changes:a,lastSaved:h.sql`now()`}).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))));if(a.includes("Page")){const{error:s}=await A(()=>S.update(f).set({changes:a}).where(h.and(h.eq(f.primaryPage,r),h.eq(f.app,this.appId))));if(s)throw new T("Error updating page","ERROR_UPDATING_PAGE")}if(o)throw new T("Error updating page","ERROR_UPDATING_PAGE")}isOnlyBlocksUpdate(r){return j.keys(r).includes("blocks")}async fetchUpdatedPageData(r){const{data:n,error:a}=await A(()=>S.select({id:f.id,slug:f.slug,lang:f.lang,pageType:f.pageType,name:f.name,online:f.online,parent:f.parent,seo:f.seo}).from(f).where(h.eq(f.id,r)).limit(1));if(a||!n||n.length===0)throw new T("Error getting updated page","ERROR_GETTING_PAGE");return n[0]}async buildResponse(r,n){return this.isOnlyBlocksUpdate(n)?{success:!0}:{page:await this.fetchUpdatedPageData(r)}}async syncDynamicFieldsToSecondaryPages(r,n){const a=j.keys(n);if(!(a.includes("dynamic")||a.includes("dynamicSlugCustom")))return;const s={};a.includes("dynamic")&&(s.dynamic=n.dynamic),a.includes("dynamicSlugCustom")&&(s.dynamicSlugCustom=n.dynamicSlugCustom);const{error:i}=await A(()=>S.update(f).set(s).where(h.and(h.eq(f.primaryPage,r),h.eq(f.app,this.appId))));i&&console.error("Failed to sync dynamic fields to secondary pages:",i)}handleExecutionError(r){throw console.log("Error updating page:",r),r instanceof T?r:new T(`Failed to update page: ${r instanceof Error?r.message:"Unknown error"}`,"UPDATE_PAGE_FAILED")}}class vw extends Z{getValidationSchema(){return v.z.object({id:v.z.string().nonempty(),metadata:v.z.record(v.z.string(),v.z.any())})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.id),h.eq(f.app,r)),columns:{id:!0}}));if(a)throw new T(`Failed to fetch page: ${a.message}`,"FETCH_FAILED");if(!n)throw new T("Page not found","PAGE_NOT_FOUND");const{error:o}=await A(()=>S.update(f).set({metadata:t.metadata}).where(h.and(h.eq(f.id,t.id),h.eq(f.app,r))));if(o)throw console.error(o),new T("Failed to update page metadata","UPDATE_FAILED");return{success:!0}}}class ww extends Z{getValidationSchema(){return v.z.object({settings:v.z.any()})}async execute(t){if(await this.verifyAccess(),!this.context)throw ie("CONTEXT_NOT_SET",new Error("CONTEXT_NOT_SET"));const{appId:r}=this.context,n=j.pick(t.settings,["theme","designTokens"]),{data:a,error:o}=await A(()=>S.select({changes:ge.changes}).from(ge).where(h.eq(ge.id,r)));if(o)throw ie("ERROR_UPDATE_WEBSITE_FIELDS",o);const s=a[0].changes??[],i={theme:"THEME",designTokens:"DESIGN_TOKENS"},l=Object.keys(n).map(p=>i[p]).filter(Boolean),u=[...new Set([...s,...l])],c={...n,changes:u},{error:d}=await A(()=>S.update(ge).set(c).where(h.eq(ge.id,r)));if(d)throw ie("ERROR_UPDATE_WEBSITE_FIELDS",d);return{success:!0}}}class _w extends Z{getValidationSchema(){return v.z.object({name:v.z.string().min(1),group:v.z.string().min(1),blocks:v.z.array(v.z.any()),description:v.z.string().optional(),previewImage:v.z.string().optional(),id:v.z.string().optional(),previewImageUrl:v.z.string().optional()})}async execute(t){var b;if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r,userId:n}=this.context,{name:a,group:o,blocks:s,description:i,previewImage:l,previewImageUrl:u,id:c}=t,{data:d,error:p}=await A(()=>S.query.libraries.findFirst({where:h.eq(W.app,r),columns:{id:!0}}));if(p)throw new T("Failed to fetch site library","GET_SITE_LIBRARY_FAILED",500,p);if(!d)throw new T("Library not found for this app","GET_SITE_LIBRARY_FAILED");let w=u;if(l){const _=mn("UPLOAD_TO_STORAGE");_==null||_.setContext(this.context);const I=`library-item-${Date.now()}.webp`,k=`${r}/library-items`,P=await(_==null?void 0:_.execute({file:l,fileName:I,contentType:"image/webp",folder:k}));if(P!=null&&P.error)throw new T("Failed to upload preview image","UPLOAD_PREVIEW_FAILED",500,P.error);w=((b=P==null?void 0:P.data)==null?void 0:b.url)||u}if(c){const _={name:a,blocks:s,library:d.id,description:i??null,group:o,user:n??null};w&&(_.preview=w);const{data:I,error:k}=await A(()=>S.update(re).set(_).where(h.eq(re.id,c)).returning());if(k||!I||I.length===0)throw new T("Failed to update library item","UPDATE_LIBRARY_ITEM_FAILED",500,k);return I[0]}else{const _=Su.randomUUID(),I=[...s];j.set(I,"0._libBlockId",_);const k={id:_,name:a,blocks:I,library:d.id,description:i??null,group:o,user:n??null,preview:w??null},{data:P,error:m}=await A(()=>S.insert(re).values(k).returning());if(m||!P||P.length===0)throw new T("Failed to create library item","CREATE_LIBRARY_ITEM_FAILED",500,m);return P[0]}}}const xt=class xt{constructor(){Ie(this,"actions",{});ut.registerChaiPageType("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>'}),ut.registerChaiPartialType("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>'}),this.register("ASK_AI",new Mv),this.register("CHECK_USER_ACCESS",new Lv),this.register("CREATE_PAGE",new Uv),this.register("DELETE_PAGE",new qv),this.register("DUPLICATE_PAGE",new Gv),this.register("RESTORE_PAGE_REVISION",new dw),this.register("UPDATE_PAGE_METADATA",new vw),this.register("GENERATE_SEO_FIELD",new Kv),this.register("GENERATE_HTML_FROM_PROMPT",new Jv),this.register("GET_REVISION_PAGE",new sw),this.register("UPDATE_PAGE",new yw),this.register("GET_COMPARE_DATA",new Qv),this.register("GET_SITE_WIDE_USAGE",new iw),this.register("GET_WEBSITE_DRAFT_SETTINGS",new pu),this.register("GET_WEBSITE_PAGES",new du),this.register("GET_LIBRARIES",new uu),this.register("GET_DRAFT_PAGE",new iu),this.register("GET_LANGUAGE_PAGES",new lu),this.register("UPSERT_LIBRARY_ITEM",new _w),this.register("MARK_AS_TEMPLATE",new cw),this.register("GET_LIBRARY_ITEM",new rw),this.register("GET_LIBRARY_ITEMS",new nw),this.register("DELETE_LIBRARY_ITEM",new jv),this.register("UNMARK_AS_TEMPLATE",new hw),this.register("GET_TEMPLATES_BY_TYPE",new lw),this.register("SEARCH_PAGES",new fw),this.register("GET_PAGE_REVISIONS",new ow),this.register("PUBLISH_CHANGES",new fu),this.register("UPDATE_WEBSITE_FIELDS",new ww),this.register("TAKE_OFFLINE",new gw),this.register("GET_CHANGES",new Xv),this.register("GET_LIBRARY_GROUPS",new tw),this.register("DELETE_PAGE_REVISION",new Zv),this.register("GET_COLLECTIONS",new su),this.register("GET_BLOCK_ASYNC_PROPS",new Wv),this.register("GET_BUILDER_PAGE_DATA",new ou),this.register("GET_PAGE_TYPES",new cu),this.register("SEARCH_PAGE_TYPE_ITEMS",new pw),this.register("GET_DYNAMIC_PAGES",new ew),this.register("GET_WEBSITE_DATA",new uw),this.register("GET_PAGE_ALL_DATA",new aw)}static getInstance(){return xt.instance||(xt.instance=new xt),xt.instance}register(t,r){this.actions[t]=r}registerActions(t){for(const[r,n]of Object.entries(t))this.register(r,n)}getAction(t){return j.get(this.actions,t)}getAllActions(){return this.actions}};Ie(xt,"instance");let ln=xt;const mn=e=>ln.getInstance().getAction(e),gu=ln.getInstance(),Tw=Object.freeze(Object.defineProperty({__proto__:null,default:gu,getChaiAction:mn},Symbol.toStringTag,{value:"Module"}));exports.ActionError=T;exports.ChaiBaseAction=Z;exports.PublishChangesAction=fu;exports.actionsRegistery=gu;exports.db=S;exports.getAskAiSystemPrompt=ru;exports.getChaiAction=mn;exports.safeQuery=A;exports.schema=au;