@revealui/core 0.0.1-pre.3 → 0.2.0

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 (623) hide show
  1. package/LICENSE +22 -202
  2. package/README.md +29 -180
  3. package/dist/api/compression.d.ts +83 -0
  4. package/dist/api/compression.d.ts.map +1 -0
  5. package/dist/api/compression.js +233 -0
  6. package/dist/api/payload-optimization.d.ts +138 -0
  7. package/dist/api/payload-optimization.d.ts.map +1 -0
  8. package/dist/api/payload-optimization.js +320 -0
  9. package/dist/api/rate-limit.d.ts +113 -0
  10. package/dist/api/rate-limit.d.ts.map +1 -0
  11. package/dist/api/rate-limit.js +301 -0
  12. package/dist/api/response-cache.d.ts +125 -0
  13. package/dist/api/response-cache.d.ts.map +1 -0
  14. package/dist/api/response-cache.js +335 -0
  15. package/dist/api/rest.d.ts +54 -0
  16. package/dist/api/rest.d.ts.map +1 -0
  17. package/dist/api/rest.js +464 -0
  18. package/dist/auth/access.d.ts +25 -0
  19. package/dist/auth/access.d.ts.map +1 -0
  20. package/dist/auth/access.js +20 -0
  21. package/dist/auth/index.d.ts +2 -0
  22. package/dist/auth/index.d.ts.map +1 -0
  23. package/dist/auth/index.js +2 -0
  24. package/dist/cache/query-cache.d.ts +98 -0
  25. package/dist/cache/query-cache.d.ts.map +1 -0
  26. package/dist/cache/query-cache.js +260 -0
  27. package/dist/caching/app-cache.d.ts +237 -0
  28. package/dist/caching/app-cache.d.ts.map +1 -0
  29. package/dist/caching/app-cache.js +430 -0
  30. package/dist/caching/cdn-config.d.ts +155 -0
  31. package/dist/caching/cdn-config.d.ts.map +1 -0
  32. package/dist/caching/cdn-config.js +425 -0
  33. package/dist/caching/edge-cache.d.ts +177 -0
  34. package/dist/caching/edge-cache.d.ts.map +1 -0
  35. package/dist/caching/edge-cache.js +381 -0
  36. package/dist/caching/service-worker.d.ts +165 -0
  37. package/dist/caching/service-worker.d.ts.map +1 -0
  38. package/dist/caching/service-worker.js +437 -0
  39. package/dist/client/admin/RichText.d.ts +12 -0
  40. package/dist/client/admin/RichText.d.ts.map +1 -0
  41. package/dist/client/admin/RichText.js +5 -0
  42. package/dist/client/admin/components/AdminDashboard.d.ts +7 -0
  43. package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -0
  44. package/dist/client/admin/components/AdminDashboard.js +318 -0
  45. package/dist/client/admin/components/CollectionList.d.ts +16 -0
  46. package/dist/client/admin/components/CollectionList.d.ts.map +1 -0
  47. package/dist/client/admin/components/CollectionList.js +67 -0
  48. package/dist/client/admin/components/DocumentForm.d.ts +11 -0
  49. package/dist/client/admin/components/DocumentForm.d.ts.map +1 -0
  50. package/dist/client/admin/components/DocumentForm.js +99 -0
  51. package/dist/client/admin/components/GlobalForm.d.ts +11 -0
  52. package/dist/client/admin/components/GlobalForm.d.ts.map +1 -0
  53. package/dist/client/admin/components/GlobalForm.js +74 -0
  54. package/dist/client/admin/i18n/en.d.ts +25 -0
  55. package/dist/client/admin/i18n/en.d.ts.map +1 -0
  56. package/dist/client/admin/i18n/en.js +25 -0
  57. package/dist/client/admin/index.d.ts +10 -0
  58. package/dist/client/admin/index.d.ts.map +1 -0
  59. package/dist/client/admin/index.js +10 -0
  60. package/dist/client/admin/layout.d.ts +10 -0
  61. package/dist/client/admin/layout.d.ts.map +1 -0
  62. package/dist/client/admin/layout.js +6 -0
  63. package/dist/client/admin/page.d.ts +38 -0
  64. package/dist/client/admin/page.d.ts.map +1 -0
  65. package/dist/client/admin/page.js +15 -0
  66. package/dist/client/admin/utils/apiClient.d.ts +110 -0
  67. package/dist/client/admin/utils/apiClient.d.ts.map +1 -0
  68. package/dist/client/admin/utils/apiClient.js +220 -0
  69. package/dist/client/admin/utils/auth.d.ts +27 -0
  70. package/dist/client/admin/utils/auth.d.ts.map +1 -0
  71. package/dist/client/admin/utils/auth.js +58 -0
  72. package/dist/client/admin/utils/index.d.ts +6 -0
  73. package/dist/client/admin/utils/index.d.ts.map +1 -0
  74. package/dist/client/admin/utils/index.js +5 -0
  75. package/dist/client/admin/utils/serializeConfig.d.ts +7 -0
  76. package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -0
  77. package/dist/client/admin/utils/serializeConfig.js +35 -0
  78. package/dist/client/hooks.d.ts +18 -0
  79. package/dist/client/hooks.d.ts.map +1 -0
  80. package/dist/client/hooks.js +29 -0
  81. package/dist/client/http/client.d.ts +15 -0
  82. package/dist/client/http/client.d.ts.map +1 -0
  83. package/dist/client/http/client.js +49 -0
  84. package/dist/client/http/fetchBanner.d.ts +18 -0
  85. package/dist/client/http/fetchBanner.d.ts.map +1 -0
  86. package/dist/client/http/fetchBanner.js +44 -0
  87. package/dist/client/http/fetchCard.d.ts +18 -0
  88. package/dist/client/http/fetchCard.d.ts.map +1 -0
  89. package/dist/client/http/fetchCard.js +46 -0
  90. package/dist/client/http/fetchEvents.d.ts +18 -0
  91. package/dist/client/http/fetchEvents.d.ts.map +1 -0
  92. package/dist/client/http/fetchEvents.js +44 -0
  93. package/dist/client/http/fetchHero.d.ts +17 -0
  94. package/dist/client/http/fetchHero.d.ts.map +1 -0
  95. package/dist/client/http/fetchHero.js +55 -0
  96. package/dist/client/http/fetchMainInfos.d.ts +17 -0
  97. package/dist/client/http/fetchMainInfos.d.ts.map +1 -0
  98. package/dist/client/http/fetchMainInfos.js +44 -0
  99. package/dist/client/http/fetchVideos.d.ts +13 -0
  100. package/dist/client/http/fetchVideos.d.ts.map +1 -0
  101. package/dist/client/http/fetchVideos.js +36 -0
  102. package/dist/client/http/index.d.ts +19 -0
  103. package/dist/client/http/index.d.ts.map +1 -0
  104. package/dist/client/http/index.js +11 -0
  105. package/dist/client/index.d.ts +12 -0
  106. package/dist/client/index.d.ts.map +1 -0
  107. package/dist/client/index.js +15 -0
  108. package/dist/client/richtext/RichTextEditor.d.ts +48 -0
  109. package/dist/client/richtext/RichTextEditor.d.ts.map +1 -0
  110. package/dist/client/richtext/RichTextEditor.js +360 -0
  111. package/dist/client/richtext/components/ImageNodeComponent.d.ts +9 -0
  112. package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -0
  113. package/dist/client/richtext/components/ImageNodeComponent.js +99 -0
  114. package/dist/client/richtext/components/ImageUploadButton.d.ts +11 -0
  115. package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -0
  116. package/dist/client/richtext/components/ImageUploadButton.js +103 -0
  117. package/dist/client/richtext/index.d.ts +92 -0
  118. package/dist/client/richtext/index.d.ts.map +1 -0
  119. package/dist/client/richtext/index.js +74 -0
  120. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts +20 -0
  121. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -0
  122. package/dist/client/richtext/nodes/DecoratorBlockNode.js +29 -0
  123. package/dist/client/richtext/nodes/ImageNode.d.ts +51 -0
  124. package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -0
  125. package/dist/client/richtext/nodes/ImageNode.js +95 -0
  126. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts +13 -0
  127. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -0
  128. package/dist/client/richtext/plugins/CollaborationPlugin.js +8 -0
  129. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts +4 -0
  130. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -0
  131. package/dist/client/richtext/plugins/CursorsOverlayPlugin.js +50 -0
  132. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts +7 -0
  133. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -0
  134. package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +248 -0
  135. package/dist/client/richtext/plugins/ImagePlugin.d.ts +3 -0
  136. package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -0
  137. package/dist/client/richtext/plugins/ImagePlugin.js +73 -0
  138. package/dist/client/richtext/plugins/PastePlugin.d.ts +2 -0
  139. package/dist/client/richtext/plugins/PastePlugin.d.ts.map +1 -0
  140. package/dist/client/richtext/plugins/PastePlugin.js +36 -0
  141. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts +8 -0
  142. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -0
  143. package/dist/client/richtext/plugins/ToolbarPlugin.js +204 -0
  144. package/dist/client/ui/index.d.ts +111 -0
  145. package/dist/client/ui/index.d.ts.map +1 -0
  146. package/dist/client/ui/index.js +130 -0
  147. package/dist/collections/CollectionOperations.d.ts +27 -0
  148. package/dist/collections/CollectionOperations.d.ts.map +1 -0
  149. package/dist/collections/CollectionOperations.js +34 -0
  150. package/dist/collections/hooks.d.ts +11 -0
  151. package/dist/collections/hooks.d.ts.map +1 -0
  152. package/dist/collections/hooks.js +35 -0
  153. package/dist/collections/index.d.ts +2 -0
  154. package/dist/collections/index.d.ts.map +1 -0
  155. package/dist/collections/index.js +1 -0
  156. package/dist/collections/operations/create.d.ts +10 -0
  157. package/dist/collections/operations/create.d.ts.map +1 -0
  158. package/dist/collections/operations/create.js +101 -0
  159. package/dist/collections/operations/delete.d.ts +10 -0
  160. package/dist/collections/operations/delete.d.ts.map +1 -0
  161. package/dist/collections/operations/delete.js +16 -0
  162. package/dist/collections/operations/fieldHooks.d.ts +21 -0
  163. package/dist/collections/operations/fieldHooks.d.ts.map +1 -0
  164. package/dist/collections/operations/fieldHooks.js +51 -0
  165. package/dist/collections/operations/find.d.ts +10 -0
  166. package/dist/collections/operations/find.d.ts.map +1 -0
  167. package/dist/collections/operations/find.js +124 -0
  168. package/dist/collections/operations/findById.d.ts +15 -0
  169. package/dist/collections/operations/findById.d.ts.map +1 -0
  170. package/dist/collections/operations/findById.js +59 -0
  171. package/dist/collections/operations/update.d.ts +10 -0
  172. package/dist/collections/operations/update.d.ts.map +1 -0
  173. package/dist/collections/operations/update.js +134 -0
  174. package/dist/config/index.d.ts +9 -0
  175. package/dist/config/index.d.ts.map +1 -0
  176. package/dist/config/index.js +61 -0
  177. package/dist/config/runtime.d.ts +22 -0
  178. package/dist/config/runtime.d.ts.map +1 -0
  179. package/dist/config/runtime.js +32 -0
  180. package/dist/config/utils.d.ts +12 -0
  181. package/dist/config/utils.d.ts.map +1 -0
  182. package/dist/config/utils.js +20 -0
  183. package/dist/database/index.d.ts +1 -0
  184. package/dist/database/index.d.ts.map +1 -0
  185. package/dist/database/index.js +6 -0
  186. package/dist/database/ssl-config.d.ts +9 -0
  187. package/dist/database/ssl-config.d.ts.map +1 -0
  188. package/dist/database/ssl-config.js +7 -0
  189. package/dist/database/type-adapter.d.ts +113 -0
  190. package/dist/database/type-adapter.d.ts.map +1 -0
  191. package/dist/database/type-adapter.js +97 -0
  192. package/dist/database/universal-postgres.d.ts +45 -0
  193. package/dist/database/universal-postgres.d.ts.map +1 -0
  194. package/dist/database/universal-postgres.js +526 -0
  195. package/dist/dataloader.d.ts +26 -0
  196. package/dist/dataloader.d.ts.map +1 -0
  197. package/dist/dataloader.js +162 -0
  198. package/dist/error-handling/circuit-breaker.d.ts +262 -0
  199. package/dist/error-handling/circuit-breaker.d.ts.map +1 -0
  200. package/dist/error-handling/circuit-breaker.js +542 -0
  201. package/dist/error-handling/error-boundary.d.ts +94 -0
  202. package/dist/error-handling/error-boundary.d.ts.map +1 -0
  203. package/dist/error-handling/error-boundary.js +285 -0
  204. package/dist/error-handling/error-reporter.d.ts +213 -0
  205. package/dist/error-handling/error-reporter.d.ts.map +1 -0
  206. package/dist/error-handling/error-reporter.js +506 -0
  207. package/dist/error-handling/fallback-components.d.ts +131 -0
  208. package/dist/error-handling/fallback-components.d.ts.map +1 -0
  209. package/dist/error-handling/fallback-components.js +371 -0
  210. package/dist/error-handling/index.d.ts +16 -0
  211. package/dist/error-handling/index.d.ts.map +1 -0
  212. package/dist/error-handling/index.js +15 -0
  213. package/dist/error-handling/retry.d.ts +194 -0
  214. package/dist/error-handling/retry.d.ts.map +1 -0
  215. package/dist/error-handling/retry.js +450 -0
  216. package/dist/errors/index.d.ts +23 -0
  217. package/dist/errors/index.d.ts.map +1 -0
  218. package/dist/errors/index.js +40 -0
  219. package/dist/factories/builders.d.ts +50 -0
  220. package/dist/factories/builders.d.ts.map +1 -0
  221. package/dist/factories/builders.js +77 -0
  222. package/dist/factories/index.d.ts +2 -0
  223. package/dist/factories/index.d.ts.map +1 -0
  224. package/dist/factories/index.js +1 -0
  225. package/dist/features.d.ts +82 -0
  226. package/dist/features.d.ts.map +1 -0
  227. package/dist/features.js +89 -0
  228. package/dist/fieldTraversal.d.ts +26 -0
  229. package/dist/fieldTraversal.d.ts.map +1 -0
  230. package/dist/fieldTraversal.js +132 -0
  231. package/dist/fields/config/types.d.ts +48 -0
  232. package/dist/fields/config/types.d.ts.map +1 -0
  233. package/dist/fields/config/types.js +20 -0
  234. package/dist/fields/getDefaultValue.d.ts +16 -0
  235. package/dist/fields/getDefaultValue.d.ts.map +1 -0
  236. package/dist/fields/getDefaultValue.js +20 -0
  237. package/dist/fields/getFieldPaths.d.ts +25 -0
  238. package/dist/fields/getFieldPaths.d.ts.map +1 -0
  239. package/dist/fields/getFieldPaths.js +23 -0
  240. package/dist/fields/hooks/afterRead/index.d.ts +36 -0
  241. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -0
  242. package/dist/fields/hooks/afterRead/index.js +70 -0
  243. package/dist/fields/hooks/afterRead/promise.d.ts +46 -0
  244. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -0
  245. package/dist/fields/hooks/afterRead/promise.js +178 -0
  246. package/dist/fields/hooks/afterRead/traverseFields.d.ts +44 -0
  247. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -0
  248. package/dist/fields/hooks/afterRead/traverseFields.js +37 -0
  249. package/dist/generated/agents/index.d.ts +8 -0
  250. package/dist/generated/agents/index.d.ts.map +1 -0
  251. package/dist/generated/agents/index.js +7 -0
  252. package/dist/generated/components/index.d.ts +8 -0
  253. package/dist/generated/components/index.d.ts.map +1 -0
  254. package/dist/generated/components/index.js +7 -0
  255. package/dist/generated/functions/index.d.ts +8 -0
  256. package/dist/generated/functions/index.d.ts.map +1 -0
  257. package/dist/generated/functions/index.js +7 -0
  258. package/dist/generated/hooks/index.d.ts +8 -0
  259. package/dist/generated/hooks/index.d.ts.map +1 -0
  260. package/dist/generated/hooks/index.js +7 -0
  261. package/dist/generated/index.d.ts +10 -0
  262. package/dist/generated/index.d.ts.map +1 -0
  263. package/dist/generated/index.js +9 -0
  264. package/dist/generated/plans/index.d.ts +8 -0
  265. package/dist/generated/plans/index.d.ts.map +1 -0
  266. package/dist/generated/plans/index.js +7 -0
  267. package/dist/generated/prompts/index.d.ts +8 -0
  268. package/dist/generated/prompts/index.d.ts.map +1 -0
  269. package/dist/generated/prompts/index.js +7 -0
  270. package/dist/generated/tools/index.d.ts +8 -0
  271. package/dist/generated/tools/index.d.ts.map +1 -0
  272. package/dist/generated/tools/index.js +7 -0
  273. package/dist/generated/types/cms.d.ts +1766 -0
  274. package/dist/generated/types/cms.d.ts.map +1 -0
  275. package/dist/generated/types/cms.js +12 -0
  276. package/dist/generated/types/index.d.ts +19 -0
  277. package/dist/generated/types/index.d.ts.map +1 -0
  278. package/dist/generated/types/index.js +28 -0
  279. package/dist/generated/types/neon.d.ts +11 -0
  280. package/dist/generated/types/neon.d.ts.map +1 -0
  281. package/dist/generated/types/neon.js +11 -0
  282. package/dist/generated/types/supabase.d.ts +193 -0
  283. package/dist/generated/types/supabase.d.ts.map +1 -0
  284. package/dist/generated/types/supabase.js +5 -0
  285. package/dist/globals/GlobalOperations.d.ts +24 -0
  286. package/dist/globals/GlobalOperations.d.ts.map +1 -0
  287. package/dist/globals/GlobalOperations.js +149 -0
  288. package/dist/globals/index.d.ts +2 -0
  289. package/dist/globals/index.d.ts.map +1 -0
  290. package/dist/globals/index.js +1 -0
  291. package/dist/index.d.ts +64 -1
  292. package/dist/index.d.ts.map +1 -0
  293. package/dist/index.js +128 -33
  294. package/dist/instance/RevealUIInstance.d.ts +6 -0
  295. package/dist/instance/RevealUIInstance.d.ts.map +1 -0
  296. package/dist/instance/RevealUIInstance.js +312 -0
  297. package/dist/instance/index.d.ts +3 -0
  298. package/dist/instance/index.d.ts.map +1 -0
  299. package/dist/instance/index.js +2 -0
  300. package/dist/instance/logger.d.ts +31 -0
  301. package/dist/instance/logger.d.ts.map +1 -0
  302. package/dist/instance/logger.js +42 -0
  303. package/dist/instance/methods/create.d.ts +10 -0
  304. package/dist/instance/methods/create.d.ts.map +1 -0
  305. package/dist/instance/methods/create.js +38 -0
  306. package/dist/instance/methods/delete.d.ts +10 -0
  307. package/dist/instance/methods/delete.d.ts.map +1 -0
  308. package/dist/instance/methods/delete.js +24 -0
  309. package/dist/instance/methods/find.d.ts +10 -0
  310. package/dist/instance/methods/find.d.ts.map +1 -0
  311. package/dist/instance/methods/find.js +23 -0
  312. package/dist/instance/methods/findById.d.ts +13 -0
  313. package/dist/instance/methods/findById.d.ts.map +1 -0
  314. package/dist/instance/methods/findById.js +23 -0
  315. package/dist/instance/methods/hooks.d.ts +14 -0
  316. package/dist/instance/methods/hooks.d.ts.map +1 -0
  317. package/dist/instance/methods/hooks.js +32 -0
  318. package/dist/instance/methods/update.d.ts +10 -0
  319. package/dist/instance/methods/update.d.ts.map +1 -0
  320. package/dist/instance/methods/update.js +42 -0
  321. package/dist/license.d.ts +73 -0
  322. package/dist/license.d.ts.map +1 -0
  323. package/dist/license.js +157 -0
  324. package/dist/monitoring/alerts.d.ts +118 -0
  325. package/dist/monitoring/alerts.d.ts.map +1 -0
  326. package/dist/monitoring/alerts.js +324 -0
  327. package/dist/monitoring/cleanup-manager.d.ts +71 -0
  328. package/dist/monitoring/cleanup-manager.d.ts.map +1 -0
  329. package/dist/monitoring/cleanup-manager.js +226 -0
  330. package/dist/monitoring/health-monitor.d.ts +22 -0
  331. package/dist/monitoring/health-monitor.d.ts.map +1 -0
  332. package/dist/monitoring/health-monitor.js +142 -0
  333. package/dist/monitoring/index.d.ts +14 -0
  334. package/dist/monitoring/index.d.ts.map +1 -0
  335. package/dist/monitoring/index.js +17 -0
  336. package/dist/monitoring/process-registry.d.ts +97 -0
  337. package/dist/monitoring/process-registry.d.ts.map +1 -0
  338. package/dist/monitoring/process-registry.js +222 -0
  339. package/dist/monitoring/query-monitor.d.ts +153 -0
  340. package/dist/monitoring/query-monitor.d.ts.map +1 -0
  341. package/dist/monitoring/query-monitor.js +209 -0
  342. package/dist/monitoring/types.d.ts +231 -0
  343. package/dist/monitoring/types.d.ts.map +1 -0
  344. package/dist/monitoring/types.js +42 -0
  345. package/dist/monitoring/zombie-detector.d.ts +81 -0
  346. package/dist/monitoring/zombie-detector.d.ts.map +1 -0
  347. package/dist/monitoring/zombie-detector.js +231 -0
  348. package/dist/nextjs/index.d.ts +4 -0
  349. package/dist/nextjs/index.d.ts.map +1 -0
  350. package/dist/nextjs/index.js +3 -0
  351. package/dist/nextjs/utilities.d.ts +5 -0
  352. package/dist/nextjs/utilities.d.ts.map +1 -0
  353. package/dist/nextjs/utilities.js +16 -0
  354. package/dist/nextjs/withRevealUI.d.ts +20 -0
  355. package/dist/nextjs/withRevealUI.d.ts.map +1 -0
  356. package/dist/nextjs/withRevealUI.js +181 -0
  357. package/dist/observability/alerts.d.ts +138 -0
  358. package/dist/observability/alerts.d.ts.map +1 -0
  359. package/dist/observability/alerts.js +390 -0
  360. package/dist/observability/health-check.d.ts +95 -0
  361. package/dist/observability/health-check.d.ts.map +1 -0
  362. package/dist/observability/health-check.js +345 -0
  363. package/dist/observability/index.d.ts +12 -0
  364. package/dist/observability/index.d.ts.map +1 -0
  365. package/dist/observability/index.js +11 -0
  366. package/dist/observability/logger.d.ts +47 -0
  367. package/dist/observability/logger.d.ts.map +1 -0
  368. package/dist/observability/logger.js +140 -0
  369. package/dist/observability/metrics.d.ts +205 -0
  370. package/dist/observability/metrics.d.ts.map +1 -0
  371. package/dist/observability/metrics.js +429 -0
  372. package/dist/observability/tracing.d.ts +149 -0
  373. package/dist/observability/tracing.d.ts.map +1 -0
  374. package/dist/observability/tracing.js +381 -0
  375. package/dist/optimization/asset-optimizer.d.ts +202 -0
  376. package/dist/optimization/asset-optimizer.d.ts.map +1 -0
  377. package/dist/optimization/asset-optimizer.js +312 -0
  378. package/dist/optimization/build-optimizer.d.ts +202 -0
  379. package/dist/optimization/build-optimizer.d.ts.map +1 -0
  380. package/dist/optimization/build-optimizer.js +271 -0
  381. package/dist/optimization/bundle-analyzer.d.ts +98 -0
  382. package/dist/optimization/bundle-analyzer.d.ts.map +1 -0
  383. package/dist/optimization/bundle-analyzer.js +322 -0
  384. package/dist/optimization/code-splitting.d.ts +144 -0
  385. package/dist/optimization/code-splitting.d.ts.map +1 -0
  386. package/dist/optimization/code-splitting.js +290 -0
  387. package/dist/plugin/index.d.ts +12 -0
  388. package/dist/plugin/index.d.ts.map +1 -0
  389. package/dist/plugin/index.js +4 -0
  390. package/dist/plugins/form-builder.d.ts +115 -0
  391. package/dist/plugins/form-builder.d.ts.map +1 -0
  392. package/dist/plugins/form-builder.js +239 -0
  393. package/dist/plugins/index.d.ts +5 -0
  394. package/dist/plugins/index.d.ts.map +1 -0
  395. package/dist/plugins/index.js +4 -0
  396. package/dist/plugins/nested-docs.d.ts +8 -0
  397. package/dist/plugins/nested-docs.d.ts.map +1 -0
  398. package/dist/plugins/nested-docs.js +67 -0
  399. package/dist/plugins/redirects.d.ts +17 -0
  400. package/dist/plugins/redirects.d.ts.map +1 -0
  401. package/dist/plugins/redirects.js +62 -0
  402. package/dist/queries/index.d.ts +2 -0
  403. package/dist/queries/index.d.ts.map +1 -0
  404. package/dist/queries/index.js +1 -0
  405. package/dist/queries/queryBuilder.d.ts +47 -0
  406. package/dist/queries/queryBuilder.d.ts.map +1 -0
  407. package/dist/queries/queryBuilder.js +252 -0
  408. package/dist/relationships/analyzer.d.ts +39 -0
  409. package/dist/relationships/analyzer.d.ts.map +1 -0
  410. package/dist/relationships/analyzer.js +127 -0
  411. package/dist/relationships/index.d.ts +3 -0
  412. package/dist/relationships/index.d.ts.map +1 -0
  413. package/dist/relationships/index.js +2 -0
  414. package/dist/relationships/populate-helpers.d.ts +104 -0
  415. package/dist/relationships/populate-helpers.d.ts.map +1 -0
  416. package/dist/relationships/populate-helpers.js +187 -0
  417. package/dist/relationships/population.d.ts +42 -0
  418. package/dist/relationships/population.d.ts.map +1 -0
  419. package/dist/relationships/population.js +188 -0
  420. package/dist/revealui.d.ts +46 -0
  421. package/dist/revealui.d.ts.map +1 -0
  422. package/dist/revealui.js +92 -0
  423. package/dist/richtext/exports/client/rcc.d.ts +37 -0
  424. package/dist/richtext/exports/client/rcc.d.ts.map +1 -0
  425. package/dist/richtext/exports/client/rcc.js +182 -0
  426. package/dist/richtext/exports/server/rsc.d.ts +117 -0
  427. package/dist/richtext/exports/server/rsc.d.ts.map +1 -0
  428. package/dist/richtext/exports/server/rsc.js +288 -0
  429. package/dist/richtext/index.d.ts +161 -0
  430. package/dist/richtext/index.d.ts.map +1 -0
  431. package/dist/richtext/index.js +243 -0
  432. package/dist/richtext/lexical.d.ts +23 -0
  433. package/dist/richtext/lexical.d.ts.map +1 -0
  434. package/dist/richtext/lexical.js +35 -0
  435. package/dist/security/audit.d.ts +188 -0
  436. package/dist/security/audit.d.ts.map +1 -0
  437. package/dist/security/audit.js +431 -0
  438. package/dist/security/auth.d.ts +241 -0
  439. package/dist/security/auth.d.ts.map +1 -0
  440. package/dist/security/auth.js +474 -0
  441. package/dist/security/authorization.d.ts +235 -0
  442. package/dist/security/authorization.d.ts.map +1 -0
  443. package/dist/security/authorization.js +434 -0
  444. package/dist/security/encryption.d.ts +214 -0
  445. package/dist/security/encryption.d.ts.map +1 -0
  446. package/dist/security/encryption.js +506 -0
  447. package/dist/security/gdpr.d.ts +300 -0
  448. package/dist/security/gdpr.d.ts.map +1 -0
  449. package/dist/security/gdpr.js +470 -0
  450. package/dist/security/headers.d.ts +182 -0
  451. package/dist/security/headers.d.ts.map +1 -0
  452. package/dist/security/headers.js +402 -0
  453. package/dist/security/index.d.ts +19 -0
  454. package/dist/security/index.d.ts.map +1 -0
  455. package/dist/security/index.js +18 -0
  456. package/dist/server/index.d.ts +21 -0
  457. package/dist/server/index.d.ts.map +1 -0
  458. package/dist/server/index.js +28 -0
  459. package/dist/server/renderPage.d.ts +69 -0
  460. package/dist/server/renderPage.d.ts.map +1 -0
  461. package/dist/server/renderPage.js +109 -0
  462. package/dist/storage/index.d.ts +1 -0
  463. package/dist/storage/index.d.ts.map +1 -0
  464. package/dist/storage/index.js +4 -0
  465. package/dist/storage/vercel-blob.d.ts +17 -0
  466. package/dist/storage/vercel-blob.d.ts.map +1 -0
  467. package/dist/storage/vercel-blob.js +83 -0
  468. package/dist/translations/index.d.ts +17 -0
  469. package/dist/translations/index.d.ts.map +1 -0
  470. package/dist/translations/index.js +1 -0
  471. package/dist/types/access.d.ts +67 -0
  472. package/dist/types/access.d.ts.map +1 -0
  473. package/dist/types/access.js +8 -0
  474. package/dist/types/api.d.ts +57 -0
  475. package/dist/types/api.d.ts.map +1 -0
  476. package/dist/types/api.js +8 -0
  477. package/dist/types/cms.d.ts +8 -0
  478. package/dist/types/cms.d.ts.map +1 -0
  479. package/dist/types/cms.js +6 -0
  480. package/dist/types/config.d.ts +152 -0
  481. package/dist/types/config.d.ts.map +1 -0
  482. package/dist/types/config.js +9 -0
  483. package/dist/types/core.d.ts +11 -0
  484. package/dist/types/core.d.ts.map +1 -0
  485. package/dist/types/core.js +9 -0
  486. package/dist/types/extensions.d.ts +116 -0
  487. package/dist/types/extensions.d.ts.map +1 -0
  488. package/dist/types/extensions.js +8 -0
  489. package/dist/types/frontend.d.ts +53 -0
  490. package/dist/types/frontend.d.ts.map +1 -0
  491. package/dist/types/frontend.js +7 -0
  492. package/dist/types/generated.d.ts +14 -0
  493. package/dist/types/generated.d.ts.map +1 -0
  494. package/dist/types/generated.js +11 -0
  495. package/dist/types/hooks.d.ts +53 -0
  496. package/dist/types/hooks.d.ts.map +1 -0
  497. package/dist/types/hooks.js +8 -0
  498. package/dist/types/index.d.ts +49 -0
  499. package/dist/types/index.d.ts.map +1 -0
  500. package/dist/types/index.js +61 -0
  501. package/dist/types/interfaces/app.d.ts +50 -0
  502. package/dist/types/interfaces/app.d.ts.map +1 -0
  503. package/dist/types/interfaces/app.js +5 -0
  504. package/dist/types/jobs.d.ts +112 -0
  505. package/dist/types/jobs.d.ts.map +1 -0
  506. package/dist/types/jobs.js +7 -0
  507. package/dist/types/legacy.d.ts +147 -0
  508. package/dist/types/legacy.d.ts.map +1 -0
  509. package/dist/types/legacy.js +8 -0
  510. package/dist/types/plugins.d.ts +17 -0
  511. package/dist/types/plugins.d.ts.map +1 -0
  512. package/dist/types/plugins.js +8 -0
  513. package/dist/types/query.d.ts +99 -0
  514. package/dist/types/query.d.ts.map +1 -0
  515. package/dist/types/query.js +24 -0
  516. package/dist/types/request.d.ts +40 -0
  517. package/dist/types/request.d.ts.map +1 -0
  518. package/dist/types/request.js +8 -0
  519. package/dist/types/richtext.d.ts +23 -0
  520. package/dist/types/richtext.d.ts.map +1 -0
  521. package/dist/types/richtext.js +8 -0
  522. package/dist/types/runtime.d.ts +216 -0
  523. package/dist/types/runtime.d.ts.map +1 -0
  524. package/dist/types/runtime.js +9 -0
  525. package/dist/types/schema.d.ts +9 -0
  526. package/dist/types/schema.d.ts.map +1 -0
  527. package/dist/types/schema.js +7 -0
  528. package/dist/types/user.d.ts +48 -0
  529. package/dist/types/user.d.ts.map +1 -0
  530. package/dist/types/user.js +8 -0
  531. package/dist/utils/access-conversion.d.ts +17 -0
  532. package/dist/utils/access-conversion.d.ts.map +1 -0
  533. package/dist/utils/access-conversion.js +96 -0
  534. package/dist/utils/api-wrapper.d.ts +63 -0
  535. package/dist/utils/api-wrapper.d.ts.map +1 -0
  536. package/dist/utils/api-wrapper.js +151 -0
  537. package/dist/utils/block-conversion.d.ts +21 -0
  538. package/dist/utils/block-conversion.d.ts.map +1 -0
  539. package/dist/utils/block-conversion.js +109 -0
  540. package/dist/utils/cache.d.ts +86 -0
  541. package/dist/utils/cache.d.ts.map +1 -0
  542. package/dist/utils/cache.js +154 -0
  543. package/dist/utils/deep-clone.d.ts +25 -0
  544. package/dist/utils/deep-clone.d.ts.map +1 -0
  545. package/dist/utils/deep-clone.js +115 -0
  546. package/dist/utils/error-responses.d.ts +57 -0
  547. package/dist/utils/error-responses.d.ts.map +1 -0
  548. package/dist/utils/error-responses.js +96 -0
  549. package/dist/utils/errors.d.ts +97 -0
  550. package/dist/utils/errors.d.ts.map +1 -0
  551. package/dist/utils/errors.js +397 -0
  552. package/dist/utils/field-conversion.d.ts +40 -0
  553. package/dist/utils/field-conversion.d.ts.map +1 -0
  554. package/dist/utils/field-conversion.js +275 -0
  555. package/dist/utils/flattenResult.d.ts +7 -0
  556. package/dist/utils/flattenResult.d.ts.map +1 -0
  557. package/dist/utils/flattenResult.js +23 -0
  558. package/dist/utils/getBlockSelect.d.ts +12 -0
  559. package/dist/utils/getBlockSelect.d.ts.map +1 -0
  560. package/dist/utils/getBlockSelect.js +12 -0
  561. package/dist/utils/getSelectMode.d.ts +8 -0
  562. package/dist/utils/getSelectMode.d.ts.map +1 -0
  563. package/dist/utils/getSelectMode.js +21 -0
  564. package/dist/utils/isValidID.d.ts +5 -0
  565. package/dist/utils/isValidID.d.ts.map +1 -0
  566. package/dist/utils/isValidID.js +13 -0
  567. package/dist/utils/json-parsing.d.ts +48 -0
  568. package/dist/utils/json-parsing.d.ts.map +1 -0
  569. package/dist/utils/json-parsing.js +130 -0
  570. package/dist/utils/jwt-validation.d.ts +14 -0
  571. package/dist/utils/jwt-validation.d.ts.map +1 -0
  572. package/dist/utils/jwt-validation.js +36 -0
  573. package/dist/utils/logger-client.d.ts +32 -0
  574. package/dist/utils/logger-client.d.ts.map +1 -0
  575. package/dist/utils/logger-client.js +55 -0
  576. package/dist/utils/logger-server.d.ts +32 -0
  577. package/dist/utils/logger-server.d.ts.map +1 -0
  578. package/dist/utils/logger-server.js +68 -0
  579. package/dist/utils/logger.d.ts +14 -0
  580. package/dist/utils/logger.d.ts.map +1 -0
  581. package/dist/utils/logger.js +12 -0
  582. package/dist/utils/request-context.d.ts +143 -0
  583. package/dist/utils/request-context.d.ts.map +1 -0
  584. package/dist/utils/request-context.js +168 -0
  585. package/dist/utils/request-headers.d.ts +15 -0
  586. package/dist/utils/request-headers.d.ts.map +1 -0
  587. package/dist/utils/request-headers.js +31 -0
  588. package/dist/utils/stripUnselectedFields.d.ts +10 -0
  589. package/dist/utils/stripUnselectedFields.d.ts.map +1 -0
  590. package/dist/utils/stripUnselectedFields.js +20 -0
  591. package/dist/utils/type-guards.d.ts +33 -0
  592. package/dist/utils/type-guards.d.ts.map +1 -0
  593. package/dist/utils/type-guards.js +63 -0
  594. package/dist/utils/user.d.ts +14 -0
  595. package/dist/utils/user.d.ts.map +1 -0
  596. package/dist/utils/user.js +15 -0
  597. package/package.json +250 -697
  598. package/LICENSE_SUMMARY.md +0 -55
  599. package/NOTICE +0 -34
  600. package/dist/core/gaurds/logger/log404/index.spec.snapshot-1 +0 -8
  601. package/dist/core/gaurds/logger/log404/index.spec.snapshot-2 +0 -9
  602. package/dist/exports/RenderErrorPage.js +0 -3
  603. package/dist/exports/__internal.js +0 -3
  604. package/dist/exports/abort.js +0 -3
  605. package/dist/exports/bin-entry.js +0 -17
  606. package/dist/exports/cli.js +0 -3
  607. package/dist/exports/client.js +0 -3
  608. package/dist/exports/config.js +0 -1
  609. package/dist/exports/helpers.js +0 -1
  610. package/dist/exports/index.js +0 -33
  611. package/dist/exports/plugin.js +0 -3
  612. package/dist/exports/prerender.js +0 -3
  613. package/dist/exports/router.js +0 -3
  614. package/dist/exports/routing.js +0 -3
  615. package/dist/exports/server.js +0 -3
  616. package/dist/exports/setup.js +0 -3
  617. package/dist/exports/types.js +0 -1
  618. package/dist/integration/styles.css +0 -141
  619. package/dist/node/cli/index.js +0 -18
  620. package/dist/shared/RenderErrorPage.d.ts +0 -3
  621. package/dist/shared/RenderErrorPage.js +0 -3
  622. package/dist/shared/abort.js +0 -3
  623. package/dist/shared/route/routing.js +0 -3
@@ -0,0 +1,96 @@
1
+ // Create a RevealUI access rule
2
+ export function createRevealUIAccessRule(options) {
3
+ return {
4
+ tenant: options.tenant,
5
+ user: options.user,
6
+ permissions: options.permissions,
7
+ condition: options.condition,
8
+ };
9
+ }
10
+ // Convert from a simple permission-based rule to RevealUI access rule
11
+ export function convertToRevealUIAccessRule(permissions) {
12
+ return createRevealUIAccessRule({
13
+ permissions,
14
+ condition: (context) => {
15
+ // Check if user has required permissions
16
+ if (!context.user)
17
+ return false;
18
+ const userPermissions = context.user.revealUI?.isSuperAdmin
19
+ ? ['create', 'read', 'update', 'delete', 'publish', 'admin']
20
+ : context.user.roles || [];
21
+ return permissions.every((permission) => userPermissions.includes(permission) || userPermissions.includes('admin'));
22
+ },
23
+ });
24
+ }
25
+ // Create an enhanced access rule with tenant scoping
26
+ export function createEnhancedAccessRule(options) {
27
+ return createRevealUIAccessRule({
28
+ permissions: options.permissions,
29
+ condition: (context) => {
30
+ // Check super admin override
31
+ if (options.allowSuperAdmin !== false && context.user?.revealUI?.isSuperAdmin) {
32
+ return true;
33
+ }
34
+ // Check custom condition first
35
+ if (options.customCondition) {
36
+ const customResult = options.customCondition(context);
37
+ if (customResult !== true) {
38
+ return customResult;
39
+ }
40
+ }
41
+ // Check tenant scoping
42
+ if (options.tenantScoped && context.tenant) {
43
+ const userTenants = context.user?.tenants || [];
44
+ if (!userTenants.includes(context.tenant.id)) {
45
+ return false;
46
+ }
47
+ }
48
+ // Check permissions
49
+ if (!context.user)
50
+ return false;
51
+ const userPermissions = context.user.roles || [];
52
+ return options.permissions.every((permission) => userPermissions.includes(permission) || userPermissions.includes('admin'));
53
+ },
54
+ });
55
+ }
56
+ // Evaluate an access rule against a context
57
+ export function evaluateRevealUIAccessRule(rule, context) {
58
+ // Check tenant constraint
59
+ if (rule.tenant && context.tenant?.id !== rule.tenant) {
60
+ return false;
61
+ }
62
+ // Check user constraint
63
+ if (rule.user && context.user?.id !== rule.user) {
64
+ return false;
65
+ }
66
+ // Check permissions
67
+ if (rule.permissions && rule.permissions.length > 0) {
68
+ if (!context.user)
69
+ return false;
70
+ const userPermissions = context.user.revealUI?.isSuperAdmin
71
+ ? ['create', 'read', 'update', 'delete', 'publish', 'admin']
72
+ : context.user.roles || [];
73
+ const hasPermission = rule.permissions.every((permission) => userPermissions.includes(permission) || userPermissions.includes('admin'));
74
+ if (!hasPermission) {
75
+ return false;
76
+ }
77
+ }
78
+ // Check custom condition
79
+ if (rule.condition) {
80
+ return rule.condition(context);
81
+ }
82
+ return true;
83
+ }
84
+ // Combine multiple access rules with OR logic
85
+ export function combineRevealUIAccessRules(rules, operator = 'OR') {
86
+ return createRevealUIAccessRule({
87
+ condition: (context) => {
88
+ if (operator === 'OR') {
89
+ return rules.some((rule) => evaluateRevealUIAccessRule(rule, context) === true);
90
+ }
91
+ else {
92
+ return rules.every((rule) => evaluateRevealUIAccessRule(rule, context) === true);
93
+ }
94
+ },
95
+ });
96
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * API Route Wrapper
3
+ *
4
+ * Wraps Next.js API routes to automatically set up request context,
5
+ * error handling, and logging.
6
+ */
7
+ import type { NextRequest } from 'next/server';
8
+ import { NextResponse } from 'next/server';
9
+ /**
10
+ * API route handler function
11
+ */
12
+ export type ApiHandler<T = unknown> = (request: NextRequest) => Promise<Response | NextResponse<T>>;
13
+ /**
14
+ * Wrap an API route handler with request context, logging, and error handling
15
+ *
16
+ * Benefits:
17
+ * - Automatic request ID generation and propagation
18
+ * - Request context available via getRequestContext()
19
+ * - Automatic error handling with proper status codes
20
+ * - Request/response logging with timing
21
+ * - All logs include request ID automatically
22
+ *
23
+ * @param handler - API route handler function
24
+ * @returns Wrapped handler with request context
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // app/api/users/route.ts
29
+ * import { withRequestContext } from '@revealui/core/utils/api-wrapper'
30
+ * import { NextResponse } from 'next/server'
31
+ *
32
+ * export const GET = withRequestContext(async (request) => {
33
+ * // Request ID automatically available in logs
34
+ * logger.info('Fetching users') // Includes requestId automatically
35
+ *
36
+ * const users = await db.query.users.findMany()
37
+ * return NextResponse.json(users)
38
+ * })
39
+ * ```
40
+ */
41
+ export declare function withRequestContext<T = unknown>(handler: ApiHandler<T>): ApiHandler<T>;
42
+ /**
43
+ * Server action wrapper for request context
44
+ *
45
+ * Use this for Next.js Server Actions to enable request tracing
46
+ *
47
+ * @param action - Server action function
48
+ * @returns Wrapped action with request context
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * 'use server'
53
+ *
54
+ * import { withServerActionContext } from '@revealui/core/utils/api-wrapper'
55
+ *
56
+ * export const createUser = withServerActionContext(async (data) => {
57
+ * logger.info('Creating user') // Includes requestId
58
+ * return await db.insert(users).values(data)
59
+ * })
60
+ * ```
61
+ */
62
+ export declare function withServerActionContext<TArgs extends unknown[], TReturn>(action: (...args: TArgs) => Promise<TReturn>): (...args: TArgs) => Promise<TReturn>;
63
+ //# sourceMappingURL=api-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-wrapper.d.ts","sourceRoot":"","sources":["../../src/utils/api-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAwErF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACtE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3C,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAkCtC"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * API Route Wrapper
3
+ *
4
+ * Wraps Next.js API routes to automatically set up request context,
5
+ * error handling, and logging.
6
+ */
7
+ import { NextResponse } from 'next/server';
8
+ import { handleApiError } from './errors.js';
9
+ import { logger } from './logger.js';
10
+ import { createRequestContext, getRequestDuration, runInRequestContext } from './request-context.js';
11
+ /**
12
+ * Wrap an API route handler with request context, logging, and error handling
13
+ *
14
+ * Benefits:
15
+ * - Automatic request ID generation and propagation
16
+ * - Request context available via getRequestContext()
17
+ * - Automatic error handling with proper status codes
18
+ * - Request/response logging with timing
19
+ * - All logs include request ID automatically
20
+ *
21
+ * @param handler - API route handler function
22
+ * @returns Wrapped handler with request context
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // app/api/users/route.ts
27
+ * import { withRequestContext } from '@revealui/core/utils/api-wrapper'
28
+ * import { NextResponse } from 'next/server'
29
+ *
30
+ * export const GET = withRequestContext(async (request) => {
31
+ * // Request ID automatically available in logs
32
+ * logger.info('Fetching users') // Includes requestId automatically
33
+ *
34
+ * const users = await db.query.users.findMany()
35
+ * return NextResponse.json(users)
36
+ * })
37
+ * ```
38
+ */
39
+ export function withRequestContext(handler) {
40
+ return async (request) => {
41
+ // Create request context from headers
42
+ const context = createRequestContext({
43
+ headers: Object.fromEntries(request.headers.entries()),
44
+ path: request.nextUrl.pathname,
45
+ method: request.method,
46
+ ip: request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip') || undefined,
47
+ });
48
+ // Log incoming request
49
+ logger.info('Incoming request', {
50
+ method: context.method,
51
+ path: context.path,
52
+ ip: context.ip,
53
+ userAgent: context.userAgent,
54
+ });
55
+ try {
56
+ // Run handler within request context
57
+ const response = await runInRequestContext(context, () => handler(request));
58
+ // Log successful response
59
+ const duration = getRequestDuration();
60
+ logger.info('Request completed', {
61
+ method: context.method,
62
+ path: context.path,
63
+ status: response.status,
64
+ duration,
65
+ });
66
+ // Add request ID to response headers
67
+ if (response instanceof NextResponse) {
68
+ response.headers.set('x-request-id', context.requestId);
69
+ response.headers.set('x-request-duration', duration?.toString() || '0');
70
+ }
71
+ return response;
72
+ }
73
+ catch (error) {
74
+ // Handle errors with proper logging and status codes
75
+ const duration = getRequestDuration();
76
+ logger.error('Request failed', {
77
+ method: context.method,
78
+ path: context.path,
79
+ error: error instanceof Error ? error.message : String(error),
80
+ duration,
81
+ });
82
+ // Convert error to API response
83
+ const apiError = handleApiError(error, {
84
+ method: context.method,
85
+ path: context.path,
86
+ });
87
+ const errorResponse = NextResponse.json({
88
+ error: {
89
+ message: apiError.message,
90
+ code: apiError.code,
91
+ ...(apiError.retryable !== undefined && { retryable: apiError.retryable }),
92
+ },
93
+ }, { status: apiError.statusCode });
94
+ // Add request ID to error response
95
+ errorResponse.headers.set('x-request-id', context.requestId);
96
+ errorResponse.headers.set('x-request-duration', duration?.toString() || '0');
97
+ return errorResponse;
98
+ }
99
+ };
100
+ }
101
+ /**
102
+ * Server action wrapper for request context
103
+ *
104
+ * Use this for Next.js Server Actions to enable request tracing
105
+ *
106
+ * @param action - Server action function
107
+ * @returns Wrapped action with request context
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * 'use server'
112
+ *
113
+ * import { withServerActionContext } from '@revealui/core/utils/api-wrapper'
114
+ *
115
+ * export const createUser = withServerActionContext(async (data) => {
116
+ * logger.info('Creating user') // Includes requestId
117
+ * return await db.insert(users).values(data)
118
+ * })
119
+ * ```
120
+ */
121
+ export function withServerActionContext(action) {
122
+ return async (...args) => {
123
+ // Create request context (no headers available in server actions)
124
+ const context = createRequestContext({});
125
+ // Log server action execution
126
+ logger.info('Server action started', {
127
+ action: action.name || 'anonymous',
128
+ });
129
+ try {
130
+ // Run action within request context
131
+ const result = await runInRequestContext(context, () => action(...args));
132
+ // Log successful execution
133
+ const duration = getRequestDuration();
134
+ logger.info('Server action completed', {
135
+ action: action.name || 'anonymous',
136
+ duration,
137
+ });
138
+ return result;
139
+ }
140
+ catch (error) {
141
+ // Log error
142
+ const duration = getRequestDuration();
143
+ logger.error('Server action failed', {
144
+ action: action.name || 'anonymous',
145
+ error: error instanceof Error ? error.message : String(error),
146
+ duration,
147
+ });
148
+ throw error;
149
+ }
150
+ };
151
+ }
@@ -0,0 +1,21 @@
1
+ import type React from 'react';
2
+ import type { Block, RevealUIBlock, RevealUIContext } from '../types/index.js';
3
+ export declare function convertToRevealUIBlock(block: Block): RevealUIBlock;
4
+ export declare function convertFromRevealUIBlock(revealUIBlock: RevealUIBlock): Block;
5
+ export declare function enhanceBlockWithRevealUI(block: Block, revealUIOptions?: RevealUIBlock['revealUI']): RevealUIBlock;
6
+ /**
7
+ * Validate a RevealUI block
8
+ *
9
+ * @async
10
+ * @param block - The RevealUI block to validate
11
+ * @param data - The data to validate against the block
12
+ * @param context - The RevealUI context for validation
13
+ * @returns Promise resolving to a record of field errors (empty if valid)
14
+ */
15
+ export declare function validateRevealUIBlock(block: RevealUIBlock, data: Record<string, unknown>, context: RevealUIContext): Promise<Record<string, string>>;
16
+ export declare function getRevealUIBlockComponent(block: RevealUIBlock): React.ComponentType<{
17
+ data: Record<string, unknown>;
18
+ onChange: (data: Record<string, unknown>) => void;
19
+ revealUI?: RevealUIContext;
20
+ }>;
21
+ //# sourceMappingURL=block-conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-conversion.d.ts","sourceRoot":"","sources":["../../src/utils/block-conversion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAS,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAIrF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAalE;AAGD,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,KAAK,CAa5E;AAGD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,eAAe,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAC1C,aAAa,CAWf;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0BjC;AAGD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACnF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACjD,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B,CAAC,CAsDD"}
@@ -0,0 +1,109 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { convertToRevealUIField } from './field-conversion.js';
3
+ // Convert from standard block to RevealUI block
4
+ export function convertToRevealUIBlock(block) {
5
+ return {
6
+ slug: block.slug,
7
+ fields: block.fields.map(convertToRevealUIField),
8
+ revealUI: {
9
+ category: 'content',
10
+ icon: 'block',
11
+ preview: undefined,
12
+ permissions: ['read', 'write'],
13
+ tenantScoped: false,
14
+ },
15
+ labels: block.labels || { singular: block.slug, plural: `${block.slug}s` },
16
+ };
17
+ }
18
+ // Convert from RevealUI block to standard block
19
+ export function convertFromRevealUIBlock(revealUIBlock) {
20
+ return {
21
+ slug: revealUIBlock.slug,
22
+ fields: revealUIBlock.fields.map((field) => ({
23
+ name: field.name,
24
+ type: field.type,
25
+ label: field.label,
26
+ required: field.required,
27
+ admin: field.admin,
28
+ validate: field.validate,
29
+ })),
30
+ labels: revealUIBlock.labels,
31
+ };
32
+ }
33
+ // Enhance a standard block with RevealUI features
34
+ export function enhanceBlockWithRevealUI(block, revealUIOptions) {
35
+ const revealUIBlock = convertToRevealUIBlock(block);
36
+ if (revealUIOptions) {
37
+ revealUIBlock.revealUI = {
38
+ ...revealUIBlock.revealUI,
39
+ ...revealUIOptions,
40
+ };
41
+ }
42
+ return revealUIBlock;
43
+ }
44
+ /**
45
+ * Validate a RevealUI block
46
+ *
47
+ * @async
48
+ * @param block - The RevealUI block to validate
49
+ * @param data - The data to validate against the block
50
+ * @param context - The RevealUI context for validation
51
+ * @returns Promise resolving to a record of field errors (empty if valid)
52
+ */
53
+ export async function validateRevealUIBlock(block, data, context) {
54
+ const errors = {};
55
+ // Validate each field in the block
56
+ for (const field of block.fields) {
57
+ if (!field.name)
58
+ continue; // Skip fields without names
59
+ const value = data[field.name];
60
+ const validationContext = {
61
+ data,
62
+ siblingData: data,
63
+ user: context.user ?? undefined,
64
+ tenant: context.tenant,
65
+ operation: 'update',
66
+ };
67
+ // Import the validation function dynamically to avoid circular imports
68
+ const { validateRevealUIField } = await import('./field-conversion.js');
69
+ const result = validateRevealUIField(field, value, validationContext);
70
+ if (result !== true) {
71
+ errors[field.name] = result;
72
+ }
73
+ }
74
+ return errors;
75
+ }
76
+ // Get a React component for rendering a RevealUI block
77
+ export function getRevealUIBlockComponent(block) {
78
+ return function RevealUIBlockComponent({ data, onChange, revealUI }) {
79
+ void revealUI;
80
+ const blockFields = block.fields.map((field) => {
81
+ return {
82
+ name: field.name,
83
+ type: field.type,
84
+ label: field.label,
85
+ required: field.required,
86
+ };
87
+ });
88
+ const formatValue = (value) => {
89
+ if (value === null || value === undefined)
90
+ return '';
91
+ if (typeof value === 'string')
92
+ return value;
93
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
94
+ return String(value);
95
+ }
96
+ if (typeof value === 'symbol')
97
+ return value.description ?? value.toString();
98
+ if (typeof value === 'function')
99
+ return value.name || 'function';
100
+ return JSON.stringify(value);
101
+ };
102
+ return (_jsx("div", { className: "reveal-ui-block", "data-block-slug": block.slug, children: _jsx("div", { className: "reveal-ui-block-fields", children: blockFields.map((field) => {
103
+ const fieldName = typeof field.name === 'string' ? field.name : '';
104
+ const fieldLabel = typeof field.label === 'string' ? field.label : fieldName || 'Field';
105
+ const value = fieldName ? data[fieldName] : undefined;
106
+ return (_jsxs("div", { className: "reveal-ui-field", children: [_jsxs("label", { className: "reveal-ui-field-label", htmlFor: `field-${fieldName}`, children: [fieldLabel, field.required && _jsx("span", { className: "required", children: "*" })] }), _jsx("div", { className: "reveal-ui-field-input", children: _jsx("input", { type: "text", id: `field-${fieldName}`, value: formatValue(value), onChange: (e) => onChange({ ...data, [fieldName]: e.target.value }), required: field.required }) })] }, fieldName || Math.random()));
107
+ }) }) }));
108
+ };
109
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * LRU Cache with TTL (Time To Live)
3
+ *
4
+ * Provides a cache implementation with:
5
+ * - TTL (Time To Live) expiration
6
+ * - Size limits with LRU eviction
7
+ * - Type-safe generic interface
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const cache = new LRUCache<string, User>({ maxSize: 100, ttlMs: 5 * 60 * 1000 })
12
+ * const user = await cache.fetch('user:123', () => fetchUserFromDB('123'))
13
+ * ```
14
+ */
15
+ export interface LRUCacheOptions {
16
+ /**
17
+ * Maximum number of entries in the cache
18
+ * @default 100
19
+ */
20
+ maxSize?: number;
21
+ /**
22
+ * Time to live in milliseconds
23
+ * @default 5 minutes (300000)
24
+ */
25
+ ttlMs?: number;
26
+ }
27
+ /**
28
+ * LRU Cache with TTL for storing key-value pairs
29
+ *
30
+ * Features:
31
+ * - Automatic expiration based on TTL
32
+ * - Size limits with LRU (Least Recently Used) eviction
33
+ * - Type-safe generic interface
34
+ */
35
+ export declare class LRUCache<K = string, V = unknown> {
36
+ private cache;
37
+ private readonly maxSize;
38
+ private readonly ttlMs;
39
+ constructor(options?: LRUCacheOptions);
40
+ /**
41
+ * Fetch a value from cache or compute it using the fetcher function
42
+ *
43
+ * @param key - Cache key
44
+ * @param fetcher - Function to fetch the value if not in cache
45
+ * @returns The cached or newly fetched value
46
+ */
47
+ fetch(key: K, fetcher: () => Promise<V> | V): Promise<V>;
48
+ /**
49
+ * Get a value from cache without fetching (returns undefined if not found or expired)
50
+ *
51
+ * @param key - Cache key
52
+ * @returns The cached value or undefined
53
+ */
54
+ get(key: K): V | undefined;
55
+ /**
56
+ * Set a value in the cache
57
+ *
58
+ * @param key - Cache key
59
+ * @param value - Value to cache
60
+ */
61
+ set(key: K, value: V): void;
62
+ /**
63
+ * Delete a value from the cache
64
+ *
65
+ * @param key - Cache key
66
+ * @returns true if the entry was deleted, false if it didn't exist
67
+ */
68
+ delete(key: K): boolean;
69
+ /**
70
+ * Clear all entries from the cache
71
+ */
72
+ clear(): void;
73
+ /**
74
+ * Get the current size of the cache
75
+ */
76
+ get size(): number;
77
+ /**
78
+ * Evict expired entries and LRU entries if at capacity
79
+ */
80
+ private evictIfNeeded;
81
+ /**
82
+ * Clean up expired entries (can be called periodically)
83
+ */
84
+ cleanup(): void;
85
+ }
86
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAQD;;;;;;;GAOG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAElB,OAAO,GAAE,eAAoB;IAKzC;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8B9D;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAiB1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAW3B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}