@upstart.gg/sdk 0.0.136 → 0.0.137

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 (447) hide show
  1. package/dist/shared/ai/schemas.d.ts.map +1 -1
  2. package/dist/shared/ai/schemas.js +24 -29
  3. package/dist/shared/ai/schemas.js.map +1 -1
  4. package/dist/shared/ai/types.d.ts +13 -61
  5. package/dist/shared/ai/types.d.ts.map +1 -1
  6. package/dist/shared/ajv.js +33 -32
  7. package/dist/shared/ajv.js.map +1 -1
  8. package/dist/shared/attributes.d.ts +83 -85
  9. package/dist/shared/attributes.d.ts.map +1 -1
  10. package/dist/shared/attributes.js +20 -23
  11. package/dist/shared/brick-manifest.d.ts +8 -5
  12. package/dist/shared/brick-manifest.d.ts.map +1 -1
  13. package/dist/shared/brick-manifest.js +3 -18
  14. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +2 -2
  15. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  16. package/dist/shared/bricks/manifests/accordion.manifest.js +13 -20
  17. package/dist/shared/bricks/manifests/all-manifests.js +44 -43
  18. package/dist/shared/bricks/manifests/all-props.d.ts +1501 -0
  19. package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
  20. package/dist/shared/bricks/manifests/all-props.js +243 -0
  21. package/dist/shared/bricks/manifests/all-props.js.map +1 -0
  22. package/dist/shared/bricks/manifests/box.manifest.d.ts +2 -2
  23. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  24. package/dist/shared/bricks/manifests/box.manifest.js +16 -20
  25. package/dist/shared/bricks/manifests/button.manifest.d.ts +3 -6
  26. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  27. package/dist/shared/bricks/manifests/button.manifest.js +13 -20
  28. package/dist/shared/bricks/manifests/card.manifest.d.ts +3 -3
  29. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  30. package/dist/shared/bricks/manifests/card.manifest.js +18 -20
  31. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +2 -2
  32. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  33. package/dist/shared/bricks/manifests/carousel.manifest.js +15 -20
  34. package/dist/shared/bricks/manifests/footer.manifest.d.ts +3 -3
  35. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  36. package/dist/shared/bricks/manifests/footer.manifest.js +13 -20
  37. package/dist/shared/bricks/manifests/form.manifest.d.ts +3 -3
  38. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  39. package/dist/shared/bricks/manifests/form.manifest.js +13 -20
  40. package/dist/shared/bricks/manifests/hero.manifest.d.ts +2 -2
  41. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  42. package/dist/shared/bricks/manifests/hero.manifest.js +13 -20
  43. package/dist/shared/bricks/manifests/html.manifest.d.ts +1 -1
  44. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  45. package/dist/shared/bricks/manifests/html.manifest.js +8 -20
  46. package/dist/shared/bricks/manifests/icon.manifest.d.ts +1 -1
  47. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  48. package/dist/shared/bricks/manifests/icon.manifest.js +13 -20
  49. package/dist/shared/bricks/manifests/image.manifest.d.ts +2 -2
  50. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  51. package/dist/shared/bricks/manifests/image.manifest.js +16 -20
  52. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +2 -2
  53. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  54. package/dist/shared/bricks/manifests/images-gallery.manifest.js +15 -20
  55. package/dist/shared/bricks/manifests/map.manifest.d.ts +1 -1
  56. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  57. package/dist/shared/bricks/manifests/map.manifest.js +11 -20
  58. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +5 -5
  59. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  60. package/dist/shared/bricks/manifests/navbar.manifest.js +15 -20
  61. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +1 -1
  62. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  63. package/dist/shared/bricks/manifests/sidebar.manifest.js +13 -20
  64. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +2 -2
  65. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  66. package/dist/shared/bricks/manifests/social-links.manifest.js +14 -20
  67. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +1 -1
  68. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  69. package/dist/shared/bricks/manifests/spacer.manifest.js +8 -20
  70. package/dist/shared/bricks/manifests/table.manifest.d.ts +4 -4
  71. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  72. package/dist/shared/bricks/manifests/table.manifest.js +15 -20
  73. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +4 -4
  74. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  75. package/dist/shared/bricks/manifests/tabs.manifest.js +15 -20
  76. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +2 -2
  77. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  78. package/dist/shared/bricks/manifests/testimonials.manifest.js +18 -20
  79. package/dist/shared/bricks/manifests/text.manifest.d.ts +2 -6
  80. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  81. package/dist/shared/bricks/manifests/text.manifest.js +13 -20
  82. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +7 -7
  83. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
  84. package/dist/shared/bricks/manifests/timeline.manifest.js +15 -20
  85. package/dist/shared/bricks/manifests/video.manifest.d.ts +1 -1
  86. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  87. package/dist/shared/bricks/manifests/video.manifest.js +11 -20
  88. package/dist/shared/bricks/props/align.d.ts +0 -3
  89. package/dist/shared/bricks/props/align.d.ts.map +1 -1
  90. package/dist/shared/bricks/props/align.js +4 -11
  91. package/dist/shared/bricks/props/background.d.ts +2 -8
  92. package/dist/shared/bricks/props/background.d.ts.map +1 -1
  93. package/dist/shared/bricks/props/background.js +4 -9
  94. package/dist/shared/bricks/props/border.d.ts +0 -7
  95. package/dist/shared/bricks/props/border.d.ts.map +1 -1
  96. package/dist/shared/bricks/props/border.js +5 -10
  97. package/dist/shared/bricks/props/color-preset.d.ts +316 -6
  98. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  99. package/dist/shared/bricks/props/color-preset.js +2 -5
  100. package/dist/shared/bricks/props/color.d.ts +3 -5
  101. package/dist/shared/bricks/props/color.d.ts.map +1 -1
  102. package/dist/shared/bricks/props/color.js +3 -8
  103. package/dist/shared/bricks/props/common.d.ts.map +1 -1
  104. package/dist/shared/bricks/props/common.js +4 -5
  105. package/dist/shared/bricks/props/css-length.d.ts +0 -1
  106. package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
  107. package/dist/shared/bricks/props/css-length.js +1 -4
  108. package/dist/shared/bricks/props/datasource.d.ts +3 -3
  109. package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
  110. package/dist/shared/bricks/props/datasource.js +74 -76
  111. package/dist/shared/bricks/props/datasource.js.map +1 -1
  112. package/dist/shared/bricks/props/date.js +21 -4
  113. package/dist/shared/bricks/props/date.js.map +1 -1
  114. package/dist/shared/bricks/props/direction.d.ts +1 -2
  115. package/dist/shared/bricks/props/direction.d.ts.map +1 -1
  116. package/dist/shared/bricks/props/direction.js +4 -7
  117. package/dist/shared/bricks/props/dynamic.d.ts +5 -67
  118. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  119. package/dist/shared/bricks/props/dynamic.js +6 -24
  120. package/dist/shared/bricks/props/effects.d.ts +1 -3
  121. package/dist/shared/bricks/props/effects.d.ts.map +1 -1
  122. package/dist/shared/bricks/props/effects.js +4 -9
  123. package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
  124. package/dist/shared/bricks/props/geolocation.js +3 -6
  125. package/dist/shared/bricks/props/geolocation.js.map +1 -1
  126. package/dist/shared/bricks/props/helpers.js +5 -6
  127. package/dist/shared/bricks/props/image.d.ts +2 -8
  128. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  129. package/dist/shared/bricks/props/image.js +4 -7
  130. package/dist/shared/bricks/props/string.d.ts +2 -5
  131. package/dist/shared/bricks/props/string.d.ts.map +1 -1
  132. package/dist/shared/bricks/props/string.js +3 -10
  133. package/dist/shared/bricks/props/tags.d.ts +0 -1
  134. package/dist/shared/bricks/props/tags.d.ts.map +1 -1
  135. package/dist/shared/bricks/props/tags.js +3 -6
  136. package/dist/shared/bricks/props/text.d.ts +0 -3
  137. package/dist/shared/bricks/props/text.d.ts.map +1 -1
  138. package/dist/shared/bricks/props/text.js +4 -11
  139. package/dist/shared/bricks/props/types.d.ts +2 -2
  140. package/dist/shared/bricks/props/types.d.ts.map +1 -1
  141. package/dist/shared/bricks.d.ts +64 -154
  142. package/dist/shared/bricks.d.ts.map +1 -1
  143. package/dist/shared/bricks.js +47 -52
  144. package/dist/shared/chunk-2O5HVPID.js +41 -0
  145. package/dist/shared/chunk-2O5HVPID.js.map +1 -0
  146. package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
  147. package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
  148. package/dist/shared/{chunk-LTIJI7Y3.js → chunk-4KY7OZWD.js} +35 -35
  149. package/dist/shared/chunk-4KY7OZWD.js.map +1 -0
  150. package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
  151. package/dist/shared/chunk-5RCC2STG.js.map +1 -0
  152. package/dist/shared/{chunk-KIDICX3Y.js → chunk-6AE7UD73.js} +27 -33
  153. package/dist/shared/chunk-6AE7UD73.js.map +1 -0
  154. package/dist/shared/{chunk-CRS7QCPZ.js → chunk-7U5WPHXB.js} +65 -27
  155. package/dist/shared/chunk-7U5WPHXB.js.map +1 -0
  156. package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
  157. package/dist/shared/chunk-BHARJBEK.js.map +1 -0
  158. package/dist/shared/{chunk-H5JM2M2T.js → chunk-BZTWZC77.js} +46 -31
  159. package/dist/shared/chunk-BZTWZC77.js.map +1 -0
  160. package/dist/shared/{chunk-LLNPH3XR.js → chunk-DCM4732T.js} +6 -8
  161. package/dist/shared/chunk-DCM4732T.js.map +1 -0
  162. package/dist/shared/{chunk-W6MRYRGJ.js → chunk-DRQKKPTX.js} +6 -20
  163. package/dist/shared/chunk-DRQKKPTX.js.map +1 -0
  164. package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
  165. package/dist/shared/chunk-EID5HPF3.js.map +1 -0
  166. package/dist/shared/chunk-EMF5TCPX.js +389 -0
  167. package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
  168. package/dist/shared/chunk-FD7YYFRI.js +225 -0
  169. package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
  170. package/dist/shared/{chunk-36PLZKMW.js → chunk-FHA4DFIM.js} +26 -27
  171. package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
  172. package/dist/shared/{chunk-L6C7HUSA.js → chunk-FUUSAMN3.js} +21 -24
  173. package/dist/shared/chunk-FUUSAMN3.js.map +1 -0
  174. package/dist/shared/chunk-GDYCCB3B.js +22 -0
  175. package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
  176. package/dist/shared/chunk-GLV6QIIM.js +41 -0
  177. package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
  178. package/dist/shared/chunk-H6TMBELF.js +374 -0
  179. package/dist/shared/chunk-H6TMBELF.js.map +1 -0
  180. package/dist/shared/{chunk-YWOTQWIQ.js → chunk-HUWMIXNN.js} +26 -28
  181. package/dist/shared/chunk-HUWMIXNN.js.map +1 -0
  182. package/dist/shared/chunk-HY7JOP3J.js +150 -0
  183. package/dist/shared/chunk-HY7JOP3J.js.map +1 -0
  184. package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
  185. package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
  186. package/dist/shared/{chunk-EVLRH6VG.js → chunk-J45LSQT6.js} +2 -2
  187. package/dist/shared/chunk-J45LSQT6.js.map +1 -0
  188. package/dist/shared/{chunk-DFAFDBYZ.js → chunk-JF52BBFD.js} +27 -28
  189. package/dist/shared/chunk-JF52BBFD.js.map +1 -0
  190. package/dist/shared/{chunk-ZR6R6Z6O.js → chunk-JLDAS3VE.js} +34 -32
  191. package/dist/shared/chunk-JLDAS3VE.js.map +1 -0
  192. package/dist/shared/{chunk-SE6O65HC.js → chunk-JSDKK5QN.js} +10 -23
  193. package/dist/shared/chunk-JSDKK5QN.js.map +1 -0
  194. package/dist/shared/{chunk-KILJYJFE.js → chunk-JW7MQAU4.js} +19 -19
  195. package/dist/shared/chunk-JW7MQAU4.js.map +1 -0
  196. package/dist/shared/{chunk-RV7AYVFV.js → chunk-KKWT3OXF.js} +4 -19
  197. package/dist/shared/chunk-KKWT3OXF.js.map +1 -0
  198. package/dist/shared/{chunk-N3BEBLWF.js → chunk-KQH6V22E.js} +34 -34
  199. package/dist/shared/{chunk-GFAQWQER.js → chunk-LGDDJJHK.js} +33 -35
  200. package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
  201. package/dist/shared/{chunk-FOGAVJC2.js → chunk-LGGPCCCY.js} +3 -3
  202. package/dist/shared/{chunk-4MNWMEMM.js → chunk-LPAQ47C6.js} +23 -23
  203. package/dist/shared/chunk-LPAQ47C6.js.map +1 -0
  204. package/dist/shared/chunk-MO6CRLQA.js +73 -0
  205. package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
  206. package/dist/shared/{chunk-GQTZPN5D.js → chunk-MYOLWTB2.js} +29 -32
  207. package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
  208. package/dist/shared/{chunk-KEM5N6GJ.js → chunk-O24RDXZS.js} +34 -34
  209. package/dist/shared/chunk-O24RDXZS.js.map +1 -0
  210. package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
  211. package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
  212. package/dist/shared/{chunk-LCJ2VFPM.js → chunk-PF75LW33.js} +24 -27
  213. package/dist/shared/chunk-PF75LW33.js.map +1 -0
  214. package/dist/shared/{chunk-U5ZECCJM.js → chunk-QEJGPYTB.js} +32 -34
  215. package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
  216. package/dist/shared/{chunk-2VDR4ZYY.js → chunk-SK2O7GFC.js} +17 -18
  217. package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
  218. package/dist/shared/{chunk-N3ZTQD5I.js → chunk-SQXZNGQF.js} +8 -23
  219. package/dist/shared/chunk-SQXZNGQF.js.map +1 -0
  220. package/dist/shared/{chunk-NTLAKMMQ.js → chunk-SRYBJ6NQ.js} +6 -17
  221. package/dist/shared/chunk-SRYBJ6NQ.js.map +1 -0
  222. package/dist/shared/{chunk-UXTASZ23.js → chunk-T6C3NG2L.js} +66 -63
  223. package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
  224. package/dist/shared/{chunk-ZRRAK5NS.js → chunk-TBT2PTGB.js} +41 -33
  225. package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
  226. package/dist/shared/{chunk-2IHKVMKW.js → chunk-U4KZUX37.js} +18 -19
  227. package/dist/shared/chunk-U4KZUX37.js.map +1 -0
  228. package/dist/shared/{chunk-FQDR2BBZ.js → chunk-VSLRTXLF.js} +11 -4
  229. package/dist/shared/chunk-VSLRTXLF.js.map +1 -0
  230. package/dist/shared/{chunk-BHC2A43S.js → chunk-VTCHJT4O.js} +3 -3
  231. package/dist/shared/{chunk-BHC2A43S.js.map → chunk-VTCHJT4O.js.map} +1 -1
  232. package/dist/shared/{chunk-GIGFNQBO.js → chunk-W2RFDII5.js} +3 -3
  233. package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
  234. package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
  235. package/dist/shared/chunk-XFZQGRRL.js +101 -0
  236. package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
  237. package/dist/shared/{chunk-42OUNI7C.js → chunk-XK2CERPB.js} +27 -29
  238. package/dist/shared/chunk-XK2CERPB.js.map +1 -0
  239. package/dist/shared/chunk-XNRSL6FL.js +78 -0
  240. package/dist/shared/chunk-XNRSL6FL.js.map +1 -0
  241. package/dist/shared/{chunk-2RK3CPYJ.js → chunk-XXPSM6UA.js} +9 -12
  242. package/dist/shared/chunk-XXPSM6UA.js.map +1 -0
  243. package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
  244. package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
  245. package/dist/shared/{chunk-F247VKAE.js → chunk-ZVJNRKT4.js} +18 -20
  246. package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
  247. package/dist/shared/context.d.ts +402 -23
  248. package/dist/shared/context.d.ts.map +1 -1
  249. package/dist/shared/context.js +93 -0
  250. package/dist/shared/context.js.map +1 -1
  251. package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
  252. package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
  253. package/dist/shared/datarecords/external/airtable/types.js +2 -1
  254. package/dist/shared/datarecords/types.d.ts +3 -3
  255. package/dist/shared/datarecords/types.d.ts.map +1 -1
  256. package/dist/shared/datarecords/types.js +3 -2
  257. package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
  258. package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
  259. package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
  260. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  261. package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
  262. package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
  263. package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
  264. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  265. package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
  266. package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
  267. package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
  268. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  269. package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
  270. package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
  271. package/dist/shared/datasources/external/threads/media/schema.js +4 -8
  272. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  273. package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
  274. package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
  275. package/dist/shared/datasources/internal/blog/schema.js +4 -1
  276. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  277. package/dist/shared/datasources/types.d.ts +25 -25
  278. package/dist/shared/datasources/types.d.ts.map +1 -1
  279. package/dist/shared/datasources/types.js +3 -16
  280. package/dist/shared/images.d.ts +1 -1
  281. package/dist/shared/images.d.ts.map +1 -1
  282. package/dist/shared/images.js +4 -38
  283. package/dist/shared/images.js.map +1 -1
  284. package/dist/shared/page.d.ts +139 -22
  285. package/dist/shared/page.d.ts.map +1 -1
  286. package/dist/shared/page.js +51 -49
  287. package/dist/shared/responsive.js +1 -1
  288. package/dist/shared/site.d.ts +74 -191
  289. package/dist/shared/site.d.ts.map +1 -1
  290. package/dist/shared/site.js +55 -114
  291. package/dist/shared/site.js.map +1 -1
  292. package/dist/shared/sitemap.d.ts +4 -326
  293. package/dist/shared/sitemap.d.ts.map +1 -1
  294. package/dist/shared/sitemap.js +50 -58
  295. package/dist/shared/theme.d.ts +0 -37
  296. package/dist/shared/theme.d.ts.map +1 -1
  297. package/dist/shared/theme.js +4 -21
  298. package/dist/shared/utils/llm.d.ts +1 -10
  299. package/dist/shared/utils/llm.d.ts.map +1 -1
  300. package/dist/shared/utils/llm.js +1 -18
  301. package/dist/shared/utils/schema.d.ts +3 -2
  302. package/dist/shared/utils/schema.d.ts.map +1 -1
  303. package/dist/shared/utils/schema.js +2 -17
  304. package/dist/shared/utils/string-enum.d.ts +9 -3
  305. package/dist/shared/utils/string-enum.d.ts.map +1 -1
  306. package/dist/shared/utils/string-enum.js +1 -1
  307. package/package.json +21 -5
  308. package/src/shared/ai/schemas.ts +24 -29
  309. package/src/shared/ai/types.ts +22 -88
  310. package/src/shared/attributes.ts +53 -51
  311. package/src/shared/brick-manifest.ts +5 -6
  312. package/src/shared/bricks/manifests/accordion.manifest.ts +11 -11
  313. package/src/shared/bricks/manifests/all-props.ts +165 -0
  314. package/src/shared/bricks/manifests/box.manifest.ts +19 -21
  315. package/src/shared/bricks/manifests/button.manifest.ts +54 -16
  316. package/src/shared/bricks/manifests/card.manifest.ts +32 -18
  317. package/src/shared/bricks/manifests/carousel.manifest.ts +11 -13
  318. package/src/shared/bricks/manifests/footer.manifest.ts +16 -15
  319. package/src/shared/bricks/manifests/form.manifest.ts +14 -15
  320. package/src/shared/bricks/manifests/hero.manifest.ts +18 -20
  321. package/src/shared/bricks/manifests/icon.manifest.ts +9 -10
  322. package/src/shared/bricks/manifests/image.manifest.ts +22 -19
  323. package/src/shared/bricks/manifests/images-gallery.manifest.ts +13 -15
  324. package/src/shared/bricks/manifests/map.manifest.ts +10 -10
  325. package/src/shared/bricks/manifests/navbar.manifest.ts +20 -21
  326. package/src/shared/bricks/manifests/sidebar.manifest.ts +9 -9
  327. package/src/shared/bricks/manifests/social-links.manifest.ts +17 -19
  328. package/src/shared/bricks/manifests/table.manifest.ts +15 -15
  329. package/src/shared/bricks/manifests/tabs.manifest.ts +14 -16
  330. package/src/shared/bricks/manifests/testimonials.manifest.ts +21 -20
  331. package/src/shared/bricks/manifests/text.manifest.ts +16 -19
  332. package/src/shared/bricks/manifests/timeline.manifest.ts +29 -24
  333. package/src/shared/bricks/manifests/video.manifest.ts +9 -10
  334. package/src/shared/bricks/props/align.ts +0 -13
  335. package/src/shared/bricks/props/background.ts +1 -14
  336. package/src/shared/bricks/props/border.ts +2 -13
  337. package/src/shared/bricks/props/color-preset.ts +9 -10
  338. package/src/shared/bricks/props/color.ts +7 -18
  339. package/src/shared/bricks/props/common.ts +6 -7
  340. package/src/shared/bricks/props/css-length.ts +0 -5
  341. package/src/shared/bricks/props/datasource.ts +72 -74
  342. package/src/shared/bricks/props/direction.ts +1 -5
  343. package/src/shared/bricks/props/dynamic.ts +0 -11
  344. package/src/shared/bricks/props/effects.ts +0 -9
  345. package/src/shared/bricks/props/geolocation.ts +3 -3
  346. package/src/shared/bricks/props/helpers.ts +1 -1
  347. package/src/shared/bricks/props/image.ts +4 -16
  348. package/src/shared/bricks/props/string.ts +5 -18
  349. package/src/shared/bricks/props/tags.ts +0 -5
  350. package/src/shared/bricks/props/tests/background.test.ts +1 -15
  351. package/src/shared/bricks/props/tests/image.test.ts +3 -9
  352. package/src/shared/bricks/props/tests/string.test.ts +2 -26
  353. package/src/shared/bricks/props/text.ts +0 -12
  354. package/src/shared/bricks/props/types.ts +4 -3
  355. package/src/shared/bricks.ts +156 -1020
  356. package/src/shared/context.ts +24 -24
  357. package/src/shared/datarecords/external/airtable/types.ts +12 -11
  358. package/src/shared/datarecords/types.ts +2 -34
  359. package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
  360. package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
  361. package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
  362. package/src/shared/datasources/external/threads/media/schema.ts +2 -8
  363. package/src/shared/datasources/internal/blog/schema.ts +2 -1
  364. package/src/shared/datasources/types.ts +64 -79
  365. package/src/shared/images.ts +12 -18
  366. package/src/shared/page.ts +9 -1
  367. package/src/shared/sitemap.ts +3 -70
  368. package/src/shared/tests/attributes.test.ts +2 -0
  369. package/src/shared/theme.ts +81 -96
  370. package/src/shared/utils/llm.ts +5 -191
  371. package/src/shared/utils/schema.ts +71 -244
  372. package/src/shared/utils/string-enum.ts +25 -4
  373. package/src/shared/utils/tests/schema.test.ts +70 -313
  374. package/dist/shared/chunk-2IHKVMKW.js.map +0 -1
  375. package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
  376. package/dist/shared/chunk-2VDR4ZYY.js.map +0 -1
  377. package/dist/shared/chunk-36PLZKMW.js.map +0 -1
  378. package/dist/shared/chunk-42OUNI7C.js.map +0 -1
  379. package/dist/shared/chunk-4MNWMEMM.js.map +0 -1
  380. package/dist/shared/chunk-A2QPY54H.js +0 -13
  381. package/dist/shared/chunk-A2QPY54H.js.map +0 -1
  382. package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
  383. package/dist/shared/chunk-CRS7QCPZ.js.map +0 -1
  384. package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
  385. package/dist/shared/chunk-DFAFDBYZ.js.map +0 -1
  386. package/dist/shared/chunk-DV3G7X34.js +0 -244
  387. package/dist/shared/chunk-DV3G7X34.js.map +0 -1
  388. package/dist/shared/chunk-EVLRH6VG.js.map +0 -1
  389. package/dist/shared/chunk-F22LDHEO.js.map +0 -1
  390. package/dist/shared/chunk-F247VKAE.js.map +0 -1
  391. package/dist/shared/chunk-FQDR2BBZ.js.map +0 -1
  392. package/dist/shared/chunk-GFAQWQER.js.map +0 -1
  393. package/dist/shared/chunk-GQTZPN5D.js.map +0 -1
  394. package/dist/shared/chunk-H5JM2M2T.js.map +0 -1
  395. package/dist/shared/chunk-HTUSL2U7.js +0 -260
  396. package/dist/shared/chunk-HTUSL2U7.js.map +0 -1
  397. package/dist/shared/chunk-IQIISR22.js +0 -794
  398. package/dist/shared/chunk-IQIISR22.js.map +0 -1
  399. package/dist/shared/chunk-JK2FWFJU.js +0 -15
  400. package/dist/shared/chunk-JK2FWFJU.js.map +0 -1
  401. package/dist/shared/chunk-KEM5N6GJ.js.map +0 -1
  402. package/dist/shared/chunk-KIDICX3Y.js.map +0 -1
  403. package/dist/shared/chunk-KILJYJFE.js.map +0 -1
  404. package/dist/shared/chunk-L6C7HUSA.js.map +0 -1
  405. package/dist/shared/chunk-LCJ2VFPM.js.map +0 -1
  406. package/dist/shared/chunk-LLNPH3XR.js.map +0 -1
  407. package/dist/shared/chunk-LTIJI7Y3.js.map +0 -1
  408. package/dist/shared/chunk-MFNHFN2B.js +0 -103
  409. package/dist/shared/chunk-MFNHFN2B.js.map +0 -1
  410. package/dist/shared/chunk-N3ZTQD5I.js.map +0 -1
  411. package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
  412. package/dist/shared/chunk-Q4NPPLEU.js.map +0 -1
  413. package/dist/shared/chunk-RV7AYVFV.js.map +0 -1
  414. package/dist/shared/chunk-SE6O65HC.js.map +0 -1
  415. package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
  416. package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
  417. package/dist/shared/chunk-TNTFKLCR.js +0 -1225
  418. package/dist/shared/chunk-TNTFKLCR.js.map +0 -1
  419. package/dist/shared/chunk-U5ZECCJM.js.map +0 -1
  420. package/dist/shared/chunk-UXTASZ23.js.map +0 -1
  421. package/dist/shared/chunk-W6MRYRGJ.js.map +0 -1
  422. package/dist/shared/chunk-WKN566LN.js +0 -29
  423. package/dist/shared/chunk-WKN566LN.js.map +0 -1
  424. package/dist/shared/chunk-Y74LZNND.js.map +0 -1
  425. package/dist/shared/chunk-YWOTQWIQ.js.map +0 -1
  426. package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
  427. package/dist/shared/chunk-ZR6R6Z6O.js.map +0 -1
  428. package/dist/shared/chunk-ZRRAK5NS.js.map +0 -1
  429. package/dist/shared/tests/schema-registry.test.d.ts +0 -2
  430. package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
  431. package/dist/shared/utils/schema-registry.d.ts +0 -5
  432. package/dist/shared/utils/schema-registry.d.ts.map +0 -1
  433. package/dist/shared/utils/schema-registry.js +0 -29
  434. package/dist/shared/utils/schema-registry.js.map +0 -1
  435. package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
  436. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
  437. package/dist/shared/utils/typed-ref.d.ts +0 -43
  438. package/dist/shared/utils/typed-ref.d.ts.map +0 -1
  439. package/dist/shared/utils/typed-ref.js +0 -10
  440. package/dist/shared/utils/typed-ref.js.map +0 -1
  441. package/src/shared/tests/schema-registry.test.ts +0 -12
  442. package/src/shared/utils/schema-registry.ts +0 -82
  443. package/src/shared/utils/tests/schema-registry.test.ts +0 -13
  444. package/src/shared/utils/typed-ref.ts +0 -53
  445. /package/dist/shared/{chunk-N3BEBLWF.js.map → chunk-KQH6V22E.js.map} +0 -0
  446. /package/dist/shared/{chunk-FOGAVJC2.js.map → chunk-LGGPCCCY.js.map} +0 -0
  447. /package/dist/shared/{chunk-GIGFNQBO.js.map → chunk-W2RFDII5.js.map} +0 -0
@@ -1,8 +1,53 @@
1
1
  import { type TArray, type TObject, type TSchema, Kind, type Static } from "@sinclair/typebox";
2
+ import { Value } from "@sinclair/typebox/value";
2
3
  import type { PageAttributes } from "../attributes";
3
- import { schemaRegistry } from "./schema-registry";
4
- import { Cabidela } from "@cloudflare/cabidela";
5
- import { defaultsDeep as applyDefaultsDeep } from "lodash-es";
4
+ import { defaultsDeep as applyDefaultsDeep, merge } from "lodash-es";
5
+ import { FormatRegistry } from "@sinclair/typebox";
6
+ import { DefaultErrorFunction, SetErrorFunction, ValueErrorType } from "@sinclair/typebox/errors";
7
+ // export const jsonStringsSupportedFormats = ["date-time", "date", "email", "url"] as const;
8
+
9
+ // import string enum for its side effects
10
+ import "./string-enum";
11
+
12
+ const urlValidator = (value: string) => {
13
+ try {
14
+ const url = new URL(value);
15
+ return url.protocol === "http:" || url.protocol === "https:";
16
+ } catch {
17
+ return false;
18
+ }
19
+ };
20
+
21
+ const noCheck = (value: string) => true;
22
+
23
+ FormatRegistry.Set("uuid", (value) =>
24
+ /^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value),
25
+ );
26
+ // Allow different lengths for nanoid
27
+ FormatRegistry.Set("nanoid", (value) => /^[A-Za-z0-9_-]{7,32}$/.test(value));
28
+ FormatRegistry.Set("slug", (value) => /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(value));
29
+ // Simple format checks for richtext, markdown, multiline, password, image, file
30
+ FormatRegistry.Set("richtext", noCheck);
31
+ FormatRegistry.Set("markdown", noCheck);
32
+ FormatRegistry.Set("multiline", noCheck);
33
+ FormatRegistry.Set("password", noCheck);
34
+ FormatRegistry.Set("image", urlValidator);
35
+ FormatRegistry.Set("file", urlValidator);
36
+
37
+ SetErrorFunction((error) => {
38
+ if (error.errorType === ValueErrorType.Kind) {
39
+ if (
40
+ error.schema.type === "string" &&
41
+ typeof error.value === "string" &&
42
+ error.schema.enum &&
43
+ !error.schema.enum.includes(error.value)
44
+ ) {
45
+ return `Must include valid value: [${error.schema.enum.join(", ")}]`;
46
+ }
47
+ }
48
+
49
+ return DefaultErrorFunction(error);
50
+ });
6
51
 
7
52
  export function normalizeSchemaEnum(schema: TSchema): Array<{ const: string; title: string }> {
8
53
  if (!("enum" in schema)) {
@@ -24,11 +69,11 @@ export function normalizeSchemaEnum(schema: TSchema): Array<{ const: string; tit
24
69
  export function getSchemaDefaults<T extends TObject | TArray>(
25
70
  schema: T,
26
71
  mode?: "mobile" | "desktop",
27
- ): T extends TObject ? Record<string, unknown> : unknown[] {
72
+ ): Static<T> {
28
73
  // Handle object schemas
29
74
  if (schema.type === "object" && "properties" in schema) {
30
75
  const objectSchema = schema as TObject;
31
- const defaults: Record<string, unknown> = {};
76
+ const defaults: Static<T> = {};
32
77
 
33
78
  for (const [key, propertySchema] of Object.entries(objectSchema.properties)) {
34
79
  const defaultValue = getNestedDefaults(propertySchema as TSchema, mode);
@@ -39,8 +84,7 @@ export function getSchemaDefaults<T extends TObject | TArray>(
39
84
  }
40
85
  }
41
86
 
42
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
43
- return defaults as any;
87
+ return defaults as Static<T>;
44
88
  }
45
89
 
46
90
  // Handle array schemas
@@ -48,19 +92,16 @@ export function getSchemaDefaults<T extends TObject | TArray>(
48
92
  const arraySchema = schema as TArray;
49
93
 
50
94
  if (mode && typeof arraySchema[`default:${mode}`] !== "undefined") {
51
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
52
- return arraySchema[`default:${mode}`] as any;
95
+ return arraySchema[`default:${mode}`];
53
96
  }
54
97
 
55
98
  // If the array itself has an explicit default, return it
56
99
  if (arraySchema.default) {
57
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
58
- return arraySchema.default as any;
100
+ return arraySchema.default;
59
101
  }
60
102
 
61
103
  // Otherwise return empty array
62
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
63
- return [] as any;
104
+ return [];
64
105
  }
65
106
 
66
107
  throw new Error("Schema must be either TObject or TArray");
@@ -131,244 +172,30 @@ export function filterSchemaProperties(schema: TObject, filter: (prop: TSchema)
131
172
  * Handles nested objects, arrays, and complex schema structures.
132
173
  */
133
174
  export function resolveSchema<T extends TSchema = TSchema>(schema: T): T {
134
- return resolveSchemaRecursive(schema, new Set()) as T;
175
+ console.warn("resolveSchema is deprecated, use resolveSchemaRecursive instead");
176
+ return schema;
135
177
  }
136
178
 
137
- /**
138
- * Internal recursive function with circular reference detection
139
- */
140
- function resolveSchemaRecursive(schema: TSchema, visited: Set<string>): TSchema {
141
- // Handle primitive types and null
142
- if (!schema || typeof schema !== "object") {
143
- return schema;
144
- }
145
-
146
- // Handle $ref resolution
147
- if ("$ref" in schema && typeof schema.$ref === "string") {
148
- // Prevent infinite recursion with circular references
149
- if (visited.has(schema.$ref) || schema[Kind] === "This") {
150
- // console.warn(`Circular reference detected: ${schema.$ref}`);
151
- return schema; // Return original schema to avoid infinite loop
152
- }
153
-
154
- const resolved = schemaRegistry.get(schema.$ref);
155
- if (!resolved) {
156
- console.error("Schema not found for reference:", schema);
157
- return schema;
158
- }
159
-
160
- // Add to visited set and recursively resolve the referenced schema
161
- visited.add(schema.$ref);
162
- const { $ref, ...rest } = schema;
163
- const resolvedSchema = {
164
- ...resolveSchemaRecursive(resolved, visited),
165
- ...rest,
166
- };
167
- visited.delete(schema.$ref); // Remove from visited after processing
168
-
169
- return resolvedSchema as TSchema;
170
- }
171
-
172
- // Handle object schemas
173
- if ("type" in schema && schema.type === "object" && "properties" in schema) {
174
- const resolvedProperties: Record<string, TSchema> = {};
175
-
176
- if (schema.properties && typeof schema.properties === "object") {
177
- for (const [key, value] of Object.entries(schema.properties)) {
178
- if (value && typeof value === "object") {
179
- resolvedProperties[key] = resolveSchemaRecursive(value as TSchema, visited);
180
- } else {
181
- resolvedProperties[key] = value as TSchema;
182
- }
183
- }
184
- }
185
-
186
- const resolvedSchema = { ...schema };
187
- if (Object.keys(resolvedProperties).length > 0) {
188
- resolvedSchema.properties = resolvedProperties;
189
- }
190
-
191
- // Handle additionalProperties
192
- if (
193
- "additionalProperties" in schema &&
194
- schema.additionalProperties &&
195
- typeof schema.additionalProperties === "object" &&
196
- schema.additionalProperties !== true
197
- ) {
198
- resolvedSchema.additionalProperties = resolveSchemaRecursive(
199
- schema.additionalProperties as TSchema,
200
- visited,
201
- );
202
- }
203
-
204
- // Handle patternProperties
205
- if (
206
- "patternProperties" in schema &&
207
- schema.patternProperties &&
208
- typeof schema.patternProperties === "object"
209
- ) {
210
- const resolvedPatternProperties: Record<string, TSchema> = {};
211
- for (const [pattern, patternSchema] of Object.entries(schema.patternProperties)) {
212
- if (patternSchema && typeof patternSchema === "object") {
213
- resolvedPatternProperties[pattern] = resolveSchemaRecursive(patternSchema as TSchema, visited);
214
- } else {
215
- resolvedPatternProperties[pattern] = patternSchema as TSchema;
216
- }
217
- }
218
- resolvedSchema.patternProperties = resolvedPatternProperties;
219
- }
220
-
221
- return resolvedSchema as TSchema;
222
- }
223
-
224
- // Handle array schemas
225
- if ("type" in schema && schema.type === "array") {
226
- const resolvedSchema = { ...schema };
227
-
228
- if ("items" in schema && schema.items) {
229
- if (Array.isArray(schema.items)) {
230
- resolvedSchema.items = schema.items.map((item) => resolveSchemaRecursive(item as TSchema, visited));
231
- } else if (typeof schema.items === "object") {
232
- resolvedSchema.items = resolveSchemaRecursive(schema.items as TSchema, visited);
233
- }
234
- }
235
-
236
- // Handle additionalItems
237
- if (
238
- "additionalItems" in schema &&
239
- schema.additionalItems &&
240
- typeof schema.additionalItems === "object" &&
241
- schema.additionalItems !== true
242
- ) {
243
- resolvedSchema.additionalItems = resolveSchemaRecursive(schema.additionalItems as TSchema, visited);
244
- }
245
-
246
- return resolvedSchema as TSchema;
247
- }
248
-
249
- // Handle union schemas (anyOf)
250
- if ("anyOf" in schema && Array.isArray(schema.anyOf)) {
251
- const resolvedAnyOf = schema.anyOf.map((subSchema) => {
252
- return resolveSchemaRecursive(subSchema as TSchema, visited);
253
- });
254
-
255
- return { ...schema, anyOf: resolvedAnyOf } as TSchema;
256
- }
257
-
258
- // Handle union schemas (oneOf)
259
- if ("oneOf" in schema && Array.isArray(schema.oneOf)) {
260
- const resolvedOneOf = schema.oneOf.map((subSchema) =>
261
- resolveSchemaRecursive(subSchema as TSchema, visited),
262
- );
263
-
264
- return { ...schema, oneOf: resolvedOneOf } as TSchema;
265
- }
266
-
267
- // Handle intersection schemas (allOf)
268
- if ("allOf" in schema && Array.isArray(schema.allOf)) {
269
- const resolvedAllOf = schema.allOf.map((subSchema) =>
270
- resolveSchemaRecursive(subSchema as TSchema, visited),
271
- );
272
-
273
- return { ...schema, allOf: resolvedAllOf } as TSchema;
274
- }
275
-
276
- // Handle not schemas
277
- if ("not" in schema && schema.not && typeof schema.not === "object") {
278
- const resolvedNot = resolveSchemaRecursive(schema.not as TSchema, visited);
279
-
280
- return { ...schema, not: resolvedNot } as TSchema;
281
- }
282
-
283
- // Handle conditional schemas (if/then/else)
284
- if ("if" in schema || "then" in schema || "else" in schema) {
285
- const resolvedSchema = { ...schema };
286
-
287
- if ("if" in schema && schema.if && typeof schema.if === "object") {
288
- resolvedSchema.if = resolveSchemaRecursive(schema.if as TSchema, visited);
289
- }
290
-
291
- if ("then" in schema && schema.then && typeof schema.then === "object") {
292
- // biome-ignore lint/suspicious/noThenProperty: <explanation>
293
- resolvedSchema.then = resolveSchemaRecursive(schema.then as TSchema, visited);
294
- }
295
-
296
- if ("else" in schema && schema.else && typeof schema.else === "object") {
297
- resolvedSchema.else = resolveSchemaRecursive(schema.else as TSchema, visited);
298
- }
299
-
300
- return resolvedSchema as TSchema;
301
- }
302
-
303
- // Handle schemas with definitions
304
- if ("definitions" in schema || "$defs" in schema) {
305
- const resolvedSchema = { ...schema };
306
-
307
- if ("definitions" in schema && schema.definitions && typeof schema.definitions === "object") {
308
- const resolvedDefinitions: Record<string, TSchema> = {};
309
- for (const [key, def] of Object.entries(schema.definitions)) {
310
- if (def && typeof def === "object") {
311
- resolvedDefinitions[key] = resolveSchemaRecursive(def as TSchema, visited);
312
- } else {
313
- resolvedDefinitions[key] = def as TSchema;
314
- }
179
+ export function validate<T extends TSchema>(schema: TSchema, data: unknown): Static<T> {
180
+ try {
181
+ const valid = Value.Check(schema, data);
182
+ if (!valid) {
183
+ let finalError = "";
184
+ for (const error of Value.Errors(schema, data)) {
185
+ finalError += `Error at ${error.path} with value ${error.value}: ${error.message}\n`;
315
186
  }
316
- resolvedSchema.definitions = resolvedDefinitions;
187
+ console.error("Validation errors:\n", finalError);
188
+ throw new Error(finalError);
317
189
  }
318
-
319
- if ("$defs" in schema && schema.$defs && typeof schema.$defs === "object") {
320
- const resolved$Defs: Record<string, TSchema> = {};
321
- for (const [key, def] of Object.entries(schema.$defs)) {
322
- if (def && typeof def === "object") {
323
- resolved$Defs[key] = resolveSchemaRecursive(def as TSchema, visited);
324
- } else {
325
- resolved$Defs[key] = def as TSchema;
326
- }
327
- }
328
- resolvedSchema.$defs = resolved$Defs;
329
- }
330
-
331
- return resolvedSchema as TSchema;
190
+ } catch (e) {
191
+ console.error("Validation exception:", e);
192
+ console.dir(e, { depth: null });
193
+ throw e;
332
194
  }
333
195
 
334
- // Handle any other schema types that might contain nested schemas
335
- const resolvedSchema = { ...schema };
336
-
337
- for (const [key, value] of Object.entries(schema)) {
338
- if (value && typeof value === "object" && !Array.isArray(value)) {
339
- // Check if this looks like a schema object
340
- if ("type" in value || "$ref" in value || "properties" in value || "items" in value) {
341
- (resolvedSchema as Record<string, unknown>)[key] = resolveSchemaRecursive(value as TSchema, visited);
342
- }
343
- } else if (Array.isArray(value)) {
344
- // Check if array contains schemas
345
- const hasSchemas = value.some(
346
- (item) =>
347
- item &&
348
- typeof item === "object" &&
349
- ("type" in item || "$ref" in item || "properties" in item || "items" in item),
350
- );
351
-
352
- if (hasSchemas) {
353
- (resolvedSchema as Record<string, unknown>)[key] = value.map((item) =>
354
- item && typeof item === "object" ? resolveSchemaRecursive(item as TSchema, visited) : item,
355
- );
356
- }
357
- }
358
- }
359
-
360
- return resolvedSchema as TSchema;
361
- }
362
-
363
- export function validate<T extends TSchema>(schema: TSchema, data: unknown): data is Static<T> {
364
- const validator = new Cabidela(schema, {
365
- fullErrors: true,
366
- });
367
- validator.validate(data);
368
-
369
196
  // Mutate data with defaults
370
197
  const defaults = getSchemaDefaults(schema as TObject | TArray);
371
- applyDefaultsDeep(data, defaults);
198
+ const finalObject = applyDefaultsDeep({}, data, defaults);
372
199
 
373
- return true;
200
+ return finalObject as Static<T>;
374
201
  }
@@ -1,12 +1,33 @@
1
- import { Type, type UnsafeOptions } from "@sinclair/typebox";
1
+ import { TypeRegistry, Kind, type TSchema, type SchemaOptions, Type } from "@sinclair/typebox";
2
2
 
3
- export type StringEnumOptions = Partial<UnsafeOptions> & {
3
+ export type StringEnumOptions = Partial<SchemaOptions> & {
4
4
  enumNames?: string[];
5
5
  };
6
6
 
7
- export const StringEnum = <T extends string[]>(values: [...T], options: StringEnumOptions = {}) =>
8
- Type.Unsafe<T[number]>({
7
+ // -------------------------------------------------------------------------------------
8
+ // TStringEnum
9
+ // -------------------------------------------------------------------------------------
10
+ export interface TStringEnum<T extends string[]> extends TSchema {
11
+ [Kind]: "StringEnum";
12
+ static: T[number];
13
+ enum: T;
14
+ }
15
+
16
+ function StringEnumCheck(schema: TStringEnum<string[]>, value: unknown) {
17
+ return typeof value === "string" && schema.enum.includes(value);
18
+ }
19
+
20
+ TypeRegistry.Set("StringEnum", StringEnumCheck);
21
+
22
+ // -------------------------------------------------------------------------------------
23
+ // UnionEnum
24
+ // -------------------------------------------------------------------------------------
25
+ /** `[Experimental]` Creates a Union type with a `enum` schema representation */
26
+ export function StringEnum<T extends string[]>(values: [...T], options: StringEnumOptions = {}) {
27
+ return Type.Unsafe<T[number]>({
28
+ [Kind]: "StringEnum",
9
29
  type: "string",
10
30
  enum: values,
11
31
  ...options,
12
32
  });
33
+ }