@revealui/core 0.0.1-pre.4 → 0.2.1

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 (622) hide show
  1. package/LICENSE +22 -202
  2. package/README.md +108 -152
  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 +316 -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 +411 -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 +385 -0
  36. package/dist/caching/service-worker.d.ts +154 -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 +23 -0
  70. package/dist/client/admin/utils/auth.d.ts.map +1 -0
  71. package/dist/client/admin/utils/auth.js +52 -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 +11 -0
  106. package/dist/client/index.d.ts.map +1 -0
  107. package/dist/client/index.js +13 -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 +34 -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/safe-parse.d.ts +26 -0
  187. package/dist/database/safe-parse.d.ts.map +1 -0
  188. package/dist/database/safe-parse.js +42 -0
  189. package/dist/database/ssl-config.d.ts +9 -0
  190. package/dist/database/ssl-config.d.ts.map +1 -0
  191. package/dist/database/ssl-config.js +7 -0
  192. package/dist/database/type-adapter.d.ts +113 -0
  193. package/dist/database/type-adapter.d.ts.map +1 -0
  194. package/dist/database/type-adapter.js +97 -0
  195. package/dist/database/universal-postgres.d.ts +45 -0
  196. package/dist/database/universal-postgres.d.ts.map +1 -0
  197. package/dist/database/universal-postgres.js +526 -0
  198. package/dist/dataloader.d.ts +26 -0
  199. package/dist/dataloader.d.ts.map +1 -0
  200. package/dist/dataloader.js +176 -0
  201. package/dist/error-handling/circuit-breaker.d.ts +262 -0
  202. package/dist/error-handling/circuit-breaker.d.ts.map +1 -0
  203. package/dist/error-handling/circuit-breaker.js +542 -0
  204. package/dist/error-handling/error-boundary.d.ts +94 -0
  205. package/dist/error-handling/error-boundary.d.ts.map +1 -0
  206. package/dist/error-handling/error-boundary.js +285 -0
  207. package/dist/error-handling/error-reporter.d.ts +214 -0
  208. package/dist/error-handling/error-reporter.d.ts.map +1 -0
  209. package/dist/error-handling/error-reporter.js +477 -0
  210. package/dist/error-handling/fallback-components.d.ts +131 -0
  211. package/dist/error-handling/fallback-components.d.ts.map +1 -0
  212. package/dist/error-handling/fallback-components.js +371 -0
  213. package/dist/error-handling/index.d.ts +16 -0
  214. package/dist/error-handling/index.d.ts.map +1 -0
  215. package/dist/error-handling/index.js +15 -0
  216. package/dist/error-handling/retry.d.ts +194 -0
  217. package/dist/error-handling/retry.d.ts.map +1 -0
  218. package/dist/error-handling/retry.js +450 -0
  219. package/dist/errors/index.d.ts +23 -0
  220. package/dist/errors/index.d.ts.map +1 -0
  221. package/dist/errors/index.js +40 -0
  222. package/dist/factories/builders.d.ts +50 -0
  223. package/dist/factories/builders.d.ts.map +1 -0
  224. package/dist/factories/builders.js +77 -0
  225. package/dist/factories/index.d.ts +2 -0
  226. package/dist/factories/index.d.ts.map +1 -0
  227. package/dist/factories/index.js +1 -0
  228. package/dist/features.d.ts +86 -0
  229. package/dist/features.d.ts.map +1 -0
  230. package/dist/features.js +92 -0
  231. package/dist/fieldTraversal.d.ts +26 -0
  232. package/dist/fieldTraversal.d.ts.map +1 -0
  233. package/dist/fieldTraversal.js +132 -0
  234. package/dist/fields/config/types.d.ts +48 -0
  235. package/dist/fields/config/types.d.ts.map +1 -0
  236. package/dist/fields/config/types.js +20 -0
  237. package/dist/fields/getDefaultValue.d.ts +16 -0
  238. package/dist/fields/getDefaultValue.d.ts.map +1 -0
  239. package/dist/fields/getDefaultValue.js +20 -0
  240. package/dist/fields/getFieldPaths.d.ts +25 -0
  241. package/dist/fields/getFieldPaths.d.ts.map +1 -0
  242. package/dist/fields/getFieldPaths.js +23 -0
  243. package/dist/fields/hooks/afterRead/index.d.ts +36 -0
  244. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -0
  245. package/dist/fields/hooks/afterRead/index.js +70 -0
  246. package/dist/fields/hooks/afterRead/promise.d.ts +46 -0
  247. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -0
  248. package/dist/fields/hooks/afterRead/promise.js +178 -0
  249. package/dist/fields/hooks/afterRead/traverseFields.d.ts +44 -0
  250. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -0
  251. package/dist/fields/hooks/afterRead/traverseFields.js +37 -0
  252. package/dist/generated/agents/index.d.ts +8 -0
  253. package/dist/generated/agents/index.d.ts.map +1 -0
  254. package/dist/generated/agents/index.js +7 -0
  255. package/dist/generated/components/index.d.ts +8 -0
  256. package/dist/generated/components/index.d.ts.map +1 -0
  257. package/dist/generated/components/index.js +7 -0
  258. package/dist/generated/functions/index.d.ts +8 -0
  259. package/dist/generated/functions/index.d.ts.map +1 -0
  260. package/dist/generated/functions/index.js +7 -0
  261. package/dist/generated/hooks/index.d.ts +8 -0
  262. package/dist/generated/hooks/index.d.ts.map +1 -0
  263. package/dist/generated/hooks/index.js +7 -0
  264. package/dist/generated/index.d.ts +10 -0
  265. package/dist/generated/index.d.ts.map +1 -0
  266. package/dist/generated/index.js +9 -0
  267. package/dist/generated/plans/index.d.ts +8 -0
  268. package/dist/generated/plans/index.d.ts.map +1 -0
  269. package/dist/generated/plans/index.js +7 -0
  270. package/dist/generated/prompts/index.d.ts +8 -0
  271. package/dist/generated/prompts/index.d.ts.map +1 -0
  272. package/dist/generated/prompts/index.js +7 -0
  273. package/dist/generated/tools/index.d.ts +8 -0
  274. package/dist/generated/tools/index.d.ts.map +1 -0
  275. package/dist/generated/tools/index.js +7 -0
  276. package/dist/generated/types/cms.d.ts +1766 -0
  277. package/dist/generated/types/cms.d.ts.map +1 -0
  278. package/dist/generated/types/cms.js +12 -0
  279. package/dist/generated/types/index.d.ts +16 -0
  280. package/dist/generated/types/index.d.ts.map +1 -0
  281. package/dist/generated/types/index.js +21 -0
  282. package/dist/generated/types/neon.d.ts +11 -0
  283. package/dist/generated/types/neon.d.ts.map +1 -0
  284. package/dist/generated/types/neon.js +11 -0
  285. package/dist/generated/types/supabase.d.ts +193 -0
  286. package/dist/generated/types/supabase.d.ts.map +1 -0
  287. package/dist/generated/types/supabase.js +5 -0
  288. package/dist/globals/GlobalOperations.d.ts +24 -0
  289. package/dist/globals/GlobalOperations.d.ts.map +1 -0
  290. package/dist/globals/GlobalOperations.js +149 -0
  291. package/dist/globals/index.d.ts +2 -0
  292. package/dist/globals/index.d.ts.map +1 -0
  293. package/dist/globals/index.js +1 -0
  294. package/dist/index.d.ts +64 -1
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +126 -33
  297. package/dist/instance/RevealUIInstance.d.ts +6 -0
  298. package/dist/instance/RevealUIInstance.d.ts.map +1 -0
  299. package/dist/instance/RevealUIInstance.js +306 -0
  300. package/dist/instance/index.d.ts +3 -0
  301. package/dist/instance/index.d.ts.map +1 -0
  302. package/dist/instance/index.js +2 -0
  303. package/dist/instance/logger.d.ts +31 -0
  304. package/dist/instance/logger.d.ts.map +1 -0
  305. package/dist/instance/logger.js +42 -0
  306. package/dist/instance/methods/create.d.ts +10 -0
  307. package/dist/instance/methods/create.d.ts.map +1 -0
  308. package/dist/instance/methods/create.js +41 -0
  309. package/dist/instance/methods/delete.d.ts +10 -0
  310. package/dist/instance/methods/delete.d.ts.map +1 -0
  311. package/dist/instance/methods/delete.js +27 -0
  312. package/dist/instance/methods/find.d.ts +10 -0
  313. package/dist/instance/methods/find.d.ts.map +1 -0
  314. package/dist/instance/methods/find.js +23 -0
  315. package/dist/instance/methods/findById.d.ts +13 -0
  316. package/dist/instance/methods/findById.d.ts.map +1 -0
  317. package/dist/instance/methods/findById.js +23 -0
  318. package/dist/instance/methods/hooks.d.ts +14 -0
  319. package/dist/instance/methods/hooks.d.ts.map +1 -0
  320. package/dist/instance/methods/hooks.js +34 -0
  321. package/dist/instance/methods/update.d.ts +10 -0
  322. package/dist/instance/methods/update.d.ts.map +1 -0
  323. package/dist/instance/methods/update.js +45 -0
  324. package/dist/license.d.ts +82 -0
  325. package/dist/license.d.ts.map +1 -0
  326. package/dist/license.js +193 -0
  327. package/dist/monitoring/alerts.d.ts +118 -0
  328. package/dist/monitoring/alerts.d.ts.map +1 -0
  329. package/dist/monitoring/alerts.js +324 -0
  330. package/dist/monitoring/cleanup-manager.d.ts +71 -0
  331. package/dist/monitoring/cleanup-manager.d.ts.map +1 -0
  332. package/dist/monitoring/cleanup-manager.js +226 -0
  333. package/dist/monitoring/health-monitor.d.ts +22 -0
  334. package/dist/monitoring/health-monitor.d.ts.map +1 -0
  335. package/dist/monitoring/health-monitor.js +142 -0
  336. package/dist/monitoring/index.d.ts +14 -0
  337. package/dist/monitoring/index.d.ts.map +1 -0
  338. package/dist/monitoring/index.js +17 -0
  339. package/dist/monitoring/process-registry.d.ts +97 -0
  340. package/dist/monitoring/process-registry.d.ts.map +1 -0
  341. package/dist/monitoring/process-registry.js +222 -0
  342. package/dist/monitoring/query-monitor.d.ts +153 -0
  343. package/dist/monitoring/query-monitor.d.ts.map +1 -0
  344. package/dist/monitoring/query-monitor.js +209 -0
  345. package/dist/monitoring/types.d.ts +231 -0
  346. package/dist/monitoring/types.d.ts.map +1 -0
  347. package/dist/monitoring/types.js +42 -0
  348. package/dist/monitoring/zombie-detector.d.ts +81 -0
  349. package/dist/monitoring/zombie-detector.d.ts.map +1 -0
  350. package/dist/monitoring/zombie-detector.js +231 -0
  351. package/dist/nextjs/index.d.ts +4 -0
  352. package/dist/nextjs/index.d.ts.map +1 -0
  353. package/dist/nextjs/index.js +3 -0
  354. package/dist/nextjs/utilities.d.ts +5 -0
  355. package/dist/nextjs/utilities.d.ts.map +1 -0
  356. package/dist/nextjs/utilities.js +16 -0
  357. package/dist/nextjs/withRevealUI.d.ts +20 -0
  358. package/dist/nextjs/withRevealUI.d.ts.map +1 -0
  359. package/dist/nextjs/withRevealUI.js +181 -0
  360. package/dist/observability/alerts.d.ts +138 -0
  361. package/dist/observability/alerts.d.ts.map +1 -0
  362. package/dist/observability/alerts.js +390 -0
  363. package/dist/observability/health-check.d.ts +95 -0
  364. package/dist/observability/health-check.d.ts.map +1 -0
  365. package/dist/observability/health-check.js +375 -0
  366. package/dist/observability/index.d.ts +12 -0
  367. package/dist/observability/index.d.ts.map +1 -0
  368. package/dist/observability/index.js +11 -0
  369. package/dist/observability/logger.d.ts +47 -0
  370. package/dist/observability/logger.d.ts.map +1 -0
  371. package/dist/observability/logger.js +140 -0
  372. package/dist/observability/metrics.d.ts +205 -0
  373. package/dist/observability/metrics.d.ts.map +1 -0
  374. package/dist/observability/metrics.js +429 -0
  375. package/dist/observability/tracing.d.ts +149 -0
  376. package/dist/observability/tracing.d.ts.map +1 -0
  377. package/dist/observability/tracing.js +381 -0
  378. package/dist/optimization/asset-optimizer.d.ts +202 -0
  379. package/dist/optimization/asset-optimizer.d.ts.map +1 -0
  380. package/dist/optimization/asset-optimizer.js +312 -0
  381. package/dist/optimization/build-optimizer.d.ts +202 -0
  382. package/dist/optimization/build-optimizer.d.ts.map +1 -0
  383. package/dist/optimization/build-optimizer.js +271 -0
  384. package/dist/optimization/bundle-analyzer.d.ts +98 -0
  385. package/dist/optimization/bundle-analyzer.d.ts.map +1 -0
  386. package/dist/optimization/bundle-analyzer.js +322 -0
  387. package/dist/optimization/code-splitting.d.ts +131 -0
  388. package/dist/optimization/code-splitting.d.ts.map +1 -0
  389. package/dist/optimization/code-splitting.js +277 -0
  390. package/dist/plugin/index.d.ts +12 -0
  391. package/dist/plugin/index.d.ts.map +1 -0
  392. package/dist/plugin/index.js +4 -0
  393. package/dist/plugins/form-builder.d.ts +115 -0
  394. package/dist/plugins/form-builder.d.ts.map +1 -0
  395. package/dist/plugins/form-builder.js +239 -0
  396. package/dist/plugins/index.d.ts +5 -0
  397. package/dist/plugins/index.d.ts.map +1 -0
  398. package/dist/plugins/index.js +4 -0
  399. package/dist/plugins/nested-docs.d.ts +8 -0
  400. package/dist/plugins/nested-docs.d.ts.map +1 -0
  401. package/dist/plugins/nested-docs.js +67 -0
  402. package/dist/plugins/redirects.d.ts +17 -0
  403. package/dist/plugins/redirects.d.ts.map +1 -0
  404. package/dist/plugins/redirects.js +62 -0
  405. package/dist/queries/index.d.ts +2 -0
  406. package/dist/queries/index.d.ts.map +1 -0
  407. package/dist/queries/index.js +1 -0
  408. package/dist/queries/queryBuilder.d.ts +47 -0
  409. package/dist/queries/queryBuilder.d.ts.map +1 -0
  410. package/dist/queries/queryBuilder.js +255 -0
  411. package/dist/relationships/analyzer.d.ts +39 -0
  412. package/dist/relationships/analyzer.d.ts.map +1 -0
  413. package/dist/relationships/analyzer.js +127 -0
  414. package/dist/relationships/index.d.ts +3 -0
  415. package/dist/relationships/index.d.ts.map +1 -0
  416. package/dist/relationships/index.js +2 -0
  417. package/dist/relationships/populate-helpers.d.ts +104 -0
  418. package/dist/relationships/populate-helpers.d.ts.map +1 -0
  419. package/dist/relationships/populate-helpers.js +187 -0
  420. package/dist/relationships/population.d.ts +42 -0
  421. package/dist/relationships/population.d.ts.map +1 -0
  422. package/dist/relationships/population.js +188 -0
  423. package/dist/revealui.d.ts +46 -0
  424. package/dist/revealui.d.ts.map +1 -0
  425. package/dist/revealui.js +92 -0
  426. package/dist/richtext/exports/client/rcc.d.ts +37 -0
  427. package/dist/richtext/exports/client/rcc.d.ts.map +1 -0
  428. package/dist/richtext/exports/client/rcc.js +182 -0
  429. package/dist/richtext/exports/server/rsc.d.ts +117 -0
  430. package/dist/richtext/exports/server/rsc.d.ts.map +1 -0
  431. package/dist/richtext/exports/server/rsc.js +288 -0
  432. package/dist/richtext/index.d.ts +161 -0
  433. package/dist/richtext/index.d.ts.map +1 -0
  434. package/dist/richtext/index.js +243 -0
  435. package/dist/richtext/lexical.d.ts +23 -0
  436. package/dist/richtext/lexical.d.ts.map +1 -0
  437. package/dist/richtext/lexical.js +35 -0
  438. package/dist/security/audit.d.ts +188 -0
  439. package/dist/security/audit.d.ts.map +1 -0
  440. package/dist/security/audit.js +431 -0
  441. package/dist/security/auth.d.ts +241 -0
  442. package/dist/security/auth.d.ts.map +1 -0
  443. package/dist/security/auth.js +476 -0
  444. package/dist/security/authorization.d.ts +235 -0
  445. package/dist/security/authorization.d.ts.map +1 -0
  446. package/dist/security/authorization.js +434 -0
  447. package/dist/security/encryption.d.ts +214 -0
  448. package/dist/security/encryption.d.ts.map +1 -0
  449. package/dist/security/encryption.js +517 -0
  450. package/dist/security/gdpr.d.ts +300 -0
  451. package/dist/security/gdpr.d.ts.map +1 -0
  452. package/dist/security/gdpr.js +465 -0
  453. package/dist/security/headers.d.ts +182 -0
  454. package/dist/security/headers.d.ts.map +1 -0
  455. package/dist/security/headers.js +402 -0
  456. package/dist/security/index.d.ts +19 -0
  457. package/dist/security/index.d.ts.map +1 -0
  458. package/dist/security/index.js +18 -0
  459. package/dist/server/index.d.ts +21 -0
  460. package/dist/server/index.d.ts.map +1 -0
  461. package/dist/server/index.js +28 -0
  462. package/dist/server/renderPage.d.ts +69 -0
  463. package/dist/server/renderPage.d.ts.map +1 -0
  464. package/dist/server/renderPage.js +109 -0
  465. package/dist/storage/index.d.ts +1 -0
  466. package/dist/storage/index.d.ts.map +1 -0
  467. package/dist/storage/index.js +4 -0
  468. package/dist/storage/vercel-blob.d.ts +17 -0
  469. package/dist/storage/vercel-blob.d.ts.map +1 -0
  470. package/dist/storage/vercel-blob.js +83 -0
  471. package/dist/translations/index.d.ts +17 -0
  472. package/dist/translations/index.d.ts.map +1 -0
  473. package/dist/translations/index.js +1 -0
  474. package/dist/types/access.d.ts +67 -0
  475. package/dist/types/access.d.ts.map +1 -0
  476. package/dist/types/access.js +8 -0
  477. package/dist/types/api.d.ts +57 -0
  478. package/dist/types/api.d.ts.map +1 -0
  479. package/dist/types/api.js +8 -0
  480. package/dist/types/cms.d.ts +8 -0
  481. package/dist/types/cms.d.ts.map +1 -0
  482. package/dist/types/cms.js +6 -0
  483. package/dist/types/config.d.ts +152 -0
  484. package/dist/types/config.d.ts.map +1 -0
  485. package/dist/types/config.js +9 -0
  486. package/dist/types/core.d.ts +11 -0
  487. package/dist/types/core.d.ts.map +1 -0
  488. package/dist/types/core.js +9 -0
  489. package/dist/types/extensions.d.ts +116 -0
  490. package/dist/types/extensions.d.ts.map +1 -0
  491. package/dist/types/extensions.js +8 -0
  492. package/dist/types/frontend.d.ts +53 -0
  493. package/dist/types/frontend.d.ts.map +1 -0
  494. package/dist/types/frontend.js +7 -0
  495. package/dist/types/generated.d.ts +12 -0
  496. package/dist/types/generated.d.ts.map +1 -0
  497. package/dist/types/generated.js +10 -0
  498. package/dist/types/hooks.d.ts +53 -0
  499. package/dist/types/hooks.d.ts.map +1 -0
  500. package/dist/types/hooks.js +8 -0
  501. package/dist/types/index.d.ts +49 -0
  502. package/dist/types/index.d.ts.map +1 -0
  503. package/dist/types/index.js +61 -0
  504. package/dist/types/interfaces/app.d.ts +50 -0
  505. package/dist/types/interfaces/app.d.ts.map +1 -0
  506. package/dist/types/interfaces/app.js +5 -0
  507. package/dist/types/jobs.d.ts +112 -0
  508. package/dist/types/jobs.d.ts.map +1 -0
  509. package/dist/types/jobs.js +7 -0
  510. package/dist/types/legacy.d.ts +147 -0
  511. package/dist/types/legacy.d.ts.map +1 -0
  512. package/dist/types/legacy.js +8 -0
  513. package/dist/types/plugins.d.ts +17 -0
  514. package/dist/types/plugins.d.ts.map +1 -0
  515. package/dist/types/plugins.js +8 -0
  516. package/dist/types/query.d.ts +99 -0
  517. package/dist/types/query.d.ts.map +1 -0
  518. package/dist/types/query.js +24 -0
  519. package/dist/types/request.d.ts +40 -0
  520. package/dist/types/request.d.ts.map +1 -0
  521. package/dist/types/request.js +8 -0
  522. package/dist/types/richtext.d.ts +23 -0
  523. package/dist/types/richtext.d.ts.map +1 -0
  524. package/dist/types/richtext.js +8 -0
  525. package/dist/types/runtime.d.ts +216 -0
  526. package/dist/types/runtime.d.ts.map +1 -0
  527. package/dist/types/runtime.js +9 -0
  528. package/dist/types/schema.d.ts +9 -0
  529. package/dist/types/schema.d.ts.map +1 -0
  530. package/dist/types/schema.js +7 -0
  531. package/dist/types/user.d.ts +48 -0
  532. package/dist/types/user.d.ts.map +1 -0
  533. package/dist/types/user.js +8 -0
  534. package/dist/utils/access-conversion.d.ts +17 -0
  535. package/dist/utils/access-conversion.d.ts.map +1 -0
  536. package/dist/utils/access-conversion.js +96 -0
  537. package/dist/utils/api-wrapper.d.ts +63 -0
  538. package/dist/utils/api-wrapper.d.ts.map +1 -0
  539. package/dist/utils/api-wrapper.js +151 -0
  540. package/dist/utils/block-conversion.d.ts +21 -0
  541. package/dist/utils/block-conversion.d.ts.map +1 -0
  542. package/dist/utils/block-conversion.js +109 -0
  543. package/dist/utils/cache.d.ts +86 -0
  544. package/dist/utils/cache.d.ts.map +1 -0
  545. package/dist/utils/cache.js +154 -0
  546. package/dist/utils/deep-clone.d.ts +25 -0
  547. package/dist/utils/deep-clone.d.ts.map +1 -0
  548. package/dist/utils/deep-clone.js +115 -0
  549. package/dist/utils/error-responses.d.ts +57 -0
  550. package/dist/utils/error-responses.d.ts.map +1 -0
  551. package/dist/utils/error-responses.js +96 -0
  552. package/dist/utils/errors.d.ts +97 -0
  553. package/dist/utils/errors.d.ts.map +1 -0
  554. package/dist/utils/errors.js +397 -0
  555. package/dist/utils/field-conversion.d.ts +40 -0
  556. package/dist/utils/field-conversion.d.ts.map +1 -0
  557. package/dist/utils/field-conversion.js +275 -0
  558. package/dist/utils/flattenResult.d.ts +7 -0
  559. package/dist/utils/flattenResult.d.ts.map +1 -0
  560. package/dist/utils/flattenResult.js +23 -0
  561. package/dist/utils/getBlockSelect.d.ts +12 -0
  562. package/dist/utils/getBlockSelect.d.ts.map +1 -0
  563. package/dist/utils/getBlockSelect.js +12 -0
  564. package/dist/utils/getSelectMode.d.ts +8 -0
  565. package/dist/utils/getSelectMode.d.ts.map +1 -0
  566. package/dist/utils/getSelectMode.js +21 -0
  567. package/dist/utils/isValidID.d.ts +5 -0
  568. package/dist/utils/isValidID.d.ts.map +1 -0
  569. package/dist/utils/isValidID.js +13 -0
  570. package/dist/utils/json-parsing.d.ts +48 -0
  571. package/dist/utils/json-parsing.d.ts.map +1 -0
  572. package/dist/utils/json-parsing.js +130 -0
  573. package/dist/utils/jwt-validation.d.ts +14 -0
  574. package/dist/utils/jwt-validation.d.ts.map +1 -0
  575. package/dist/utils/jwt-validation.js +36 -0
  576. package/dist/utils/logger-client.d.ts +32 -0
  577. package/dist/utils/logger-client.d.ts.map +1 -0
  578. package/dist/utils/logger-client.js +55 -0
  579. package/dist/utils/logger-server.d.ts +32 -0
  580. package/dist/utils/logger-server.d.ts.map +1 -0
  581. package/dist/utils/logger-server.js +68 -0
  582. package/dist/utils/logger.d.ts +14 -0
  583. package/dist/utils/logger.d.ts.map +1 -0
  584. package/dist/utils/logger.js +12 -0
  585. package/dist/utils/request-context.d.ts +143 -0
  586. package/dist/utils/request-context.d.ts.map +1 -0
  587. package/dist/utils/request-context.js +168 -0
  588. package/dist/utils/request-headers.d.ts +15 -0
  589. package/dist/utils/request-headers.d.ts.map +1 -0
  590. package/dist/utils/request-headers.js +31 -0
  591. package/dist/utils/stripUnselectedFields.d.ts +10 -0
  592. package/dist/utils/stripUnselectedFields.d.ts.map +1 -0
  593. package/dist/utils/stripUnselectedFields.js +20 -0
  594. package/dist/utils/type-guards.d.ts +33 -0
  595. package/dist/utils/type-guards.d.ts.map +1 -0
  596. package/dist/utils/type-guards.js +63 -0
  597. package/dist/utils/user.d.ts +14 -0
  598. package/dist/utils/user.d.ts.map +1 -0
  599. package/dist/utils/user.js +15 -0
  600. package/package.json +241 -724
  601. package/LICENSE_SUMMARY.md +0 -55
  602. package/NOTICE +0 -34
  603. package/dist/exports/RenderErrorPage.js +0 -3
  604. package/dist/exports/__internal.js +0 -3
  605. package/dist/exports/abort.js +0 -3
  606. package/dist/exports/bin-entry.js +0 -5
  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/shared/RenderErrorPage.d.ts +0 -3
  620. package/dist/shared/RenderErrorPage.js +0 -3
  621. package/dist/shared/abort.js +0 -3
  622. package/dist/shared/route/routing.js +0 -3
@@ -0,0 +1,464 @@
1
+ /**
2
+ * RevealUI REST API Implementation
3
+ *
4
+ * Based on RevealUI CMS REST API but adapted for RevealUI.
5
+ *
6
+ * WARNING: This module is server-only.
7
+ * Do NOT import in client-side code or edge runtime.
8
+ */
9
+ import { defaultLogger } from '../instance/logger.js';
10
+ function parseQueryParams(searchParams) {
11
+ const options = {};
12
+ // Parse depth
13
+ const depth = searchParams.get('depth');
14
+ if (depth) {
15
+ options.depth = parseInt(depth, 10);
16
+ }
17
+ // Parse locale
18
+ const locale = searchParams.get('locale');
19
+ if (locale) {
20
+ options.locale = locale;
21
+ }
22
+ // Parse fallbackLocale
23
+ const fallbackLocale = searchParams.get('fallbackLocale');
24
+ if (fallbackLocale) {
25
+ options.fallbackLocale = fallbackLocale;
26
+ }
27
+ // Parse overrideAccess
28
+ const overrideAccess = searchParams.get('overrideAccess');
29
+ if (overrideAccess !== null) {
30
+ options.overrideAccess = overrideAccess === 'true';
31
+ }
32
+ // Parse showHiddenFields
33
+ const showHiddenFields = searchParams.get('showHiddenFields');
34
+ if (showHiddenFields !== null) {
35
+ options.showHiddenFields = showHiddenFields === 'true';
36
+ }
37
+ // Parse draft
38
+ const draft = searchParams.get('draft');
39
+ if (draft !== null) {
40
+ options.draft = draft === 'true';
41
+ }
42
+ // Parse where (JSON)
43
+ const where = searchParams.get('where');
44
+ if (where) {
45
+ try {
46
+ options.where = JSON.parse(where);
47
+ }
48
+ catch {
49
+ // Invalid JSON, ignore
50
+ }
51
+ }
52
+ // Parse limit
53
+ const limit = searchParams.get('limit');
54
+ if (limit) {
55
+ options.limit = parseInt(limit, 10);
56
+ }
57
+ // Parse page
58
+ const page = searchParams.get('page');
59
+ if (page) {
60
+ options.page = parseInt(page, 10);
61
+ }
62
+ // Parse sort
63
+ const sort = searchParams.get('sort');
64
+ if (sort) {
65
+ options.sort = sort;
66
+ }
67
+ // Parse select (JSON)
68
+ const select = searchParams.get('select');
69
+ if (select) {
70
+ try {
71
+ options.select = JSON.parse(select);
72
+ }
73
+ catch {
74
+ // Invalid JSON, ignore
75
+ }
76
+ }
77
+ // Parse populate (JSON)
78
+ const populate = searchParams.get('populate');
79
+ if (populate) {
80
+ try {
81
+ options.populate = JSON.parse(populate);
82
+ }
83
+ catch {
84
+ // Invalid JSON, ignore
85
+ }
86
+ }
87
+ return options;
88
+ }
89
+ function createRevealRequest(request) {
90
+ const url = new URL(request.url);
91
+ return {
92
+ revealui: undefined, // Will be set by the handler
93
+ user: undefined,
94
+ locale: url.searchParams.get('locale') || undefined,
95
+ fallbackLocale: url.searchParams.get('fallbackLocale') || undefined,
96
+ context: {},
97
+ transactionID: undefined,
98
+ url: request.url,
99
+ method: request.method,
100
+ headers: request.headers,
101
+ json: () => request.json(),
102
+ text: () => request.text(),
103
+ formData: () => request.formData(),
104
+ arrayBuffer: () => request.arrayBuffer(),
105
+ blob: () => request.blob(),
106
+ };
107
+ }
108
+ /**
109
+ * Type guard to check if config has cors property
110
+ */
111
+ function hasCorsProperty(config) {
112
+ return typeof config === 'object' && config !== null && 'cors' in config;
113
+ }
114
+ /**
115
+ * Type guard to check if config has reveal.corsOrigins property (Config from @revealui/config)
116
+ */
117
+ function hasRevealCorsOrigins(config) {
118
+ return (typeof config === 'object' &&
119
+ config !== null &&
120
+ 'reveal' in config &&
121
+ typeof config.reveal === 'object' &&
122
+ config.reveal !== null);
123
+ }
124
+ /**
125
+ * Extract CORS origins from config
126
+ */
127
+ function getCorsOriginsFromConfig(config) {
128
+ if (!config) {
129
+ return [];
130
+ }
131
+ // Check for cors property (RevealConfig from schema/core or runtime config)
132
+ if (hasCorsProperty(config)) {
133
+ const corsConfig = config.cors;
134
+ if (typeof corsConfig === 'string') {
135
+ return [corsConfig];
136
+ }
137
+ if (Array.isArray(corsConfig)) {
138
+ return corsConfig;
139
+ }
140
+ if (corsConfig && typeof corsConfig === 'object' && 'origins' in corsConfig) {
141
+ return corsConfig.origins;
142
+ }
143
+ }
144
+ // Check for reveal.corsOrigins (Config from @revealui/config)
145
+ if (hasRevealCorsOrigins(config)) {
146
+ const corsOrigins = config.reveal?.corsOrigins;
147
+ if (Array.isArray(corsOrigins)) {
148
+ return corsOrigins;
149
+ }
150
+ }
151
+ return [];
152
+ }
153
+ /**
154
+ * Get allowed CORS origin for a request
155
+ * Checks config first, then environment variable, then allows all for development
156
+ */
157
+ function getAllowedOrigin(request, config) {
158
+ let allowedOrigins = getCorsOriginsFromConfig(config);
159
+ // Fallback to environment variable
160
+ if (allowedOrigins.length === 0 && process.env.REVEALUI_CORS_ORIGINS) {
161
+ allowedOrigins = process.env.REVEALUI_CORS_ORIGINS.split(',').map((s) => s.trim());
162
+ }
163
+ const origin = request.headers.get('origin');
164
+ // If config has specific origins and request origin matches, use it
165
+ if (allowedOrigins.length > 0 && origin && allowedOrigins.includes(origin)) {
166
+ return origin;
167
+ }
168
+ // In development, allow all origins for convenience
169
+ // In production, this should never be reached if CORS is properly configured
170
+ if (process.env.NODE_ENV === 'development') {
171
+ return '*';
172
+ }
173
+ // In production, if no allowed origins configured, deny all (secure default)
174
+ // This prevents accidental exposure in production
175
+ return origin || '';
176
+ }
177
+ /**
178
+ * Get standard CORS headers for a response
179
+ */
180
+ function getCORSHeaders(request, config) {
181
+ return {
182
+ 'Access-Control-Allow-Origin': getAllowedOrigin(request, config),
183
+ 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
184
+ 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',
185
+ 'Access-Control-Allow-Credentials': 'true',
186
+ };
187
+ }
188
+ /**
189
+ * Handle CORS preflight requests
190
+ * Note: Next.js middleware (proxy.ts) handles CORS for actual requests
191
+ * This function only handles OPTIONS preflight requests
192
+ */
193
+ function handleCORS(request, config) {
194
+ if (request.method === 'OPTIONS') {
195
+ return new Response(null, {
196
+ status: 200,
197
+ headers: {
198
+ ...getCORSHeaders(request, config),
199
+ 'Access-Control-Max-Age': '86400',
200
+ },
201
+ });
202
+ }
203
+ return null;
204
+ }
205
+ async function handleCollectionOperation(method, collection, id, revealui, request, options) {
206
+ try {
207
+ let result;
208
+ switch (method) {
209
+ case 'GET':
210
+ if (id) {
211
+ // Find by ID
212
+ result = await revealui.findByID({
213
+ collection,
214
+ id,
215
+ ...options,
216
+ });
217
+ }
218
+ else {
219
+ // Find multiple
220
+ result = await revealui.find({
221
+ collection,
222
+ ...options,
223
+ });
224
+ }
225
+ break;
226
+ case 'POST': {
227
+ // Create
228
+ const createData = (await request.json());
229
+ result = await revealui.create({
230
+ collection,
231
+ data: createData,
232
+ ...options,
233
+ });
234
+ break;
235
+ }
236
+ case 'PATCH': {
237
+ if (!id) {
238
+ return new Response(JSON.stringify({ message: 'ID required for update operation' }), {
239
+ status: 400,
240
+ headers: { 'Content-Type': 'application/json' },
241
+ });
242
+ }
243
+ // Update
244
+ const updateData = (await request.json());
245
+ result = await revealui.update({
246
+ collection,
247
+ id,
248
+ data: updateData,
249
+ ...options,
250
+ });
251
+ break;
252
+ }
253
+ case 'DELETE':
254
+ if (!id) {
255
+ return new Response(JSON.stringify({ message: 'ID required for delete operation' }), {
256
+ status: 400,
257
+ headers: { 'Content-Type': 'application/json' },
258
+ });
259
+ }
260
+ // Delete
261
+ result = await revealui.delete({
262
+ collection,
263
+ id,
264
+ ...options,
265
+ });
266
+ break;
267
+ default:
268
+ return new Response(JSON.stringify({ message: 'Method not allowed' }), {
269
+ status: 405,
270
+ headers: { 'Content-Type': 'application/json' },
271
+ });
272
+ }
273
+ return new Response(JSON.stringify(result), {
274
+ status: 200,
275
+ headers: {
276
+ 'Content-Type': 'application/json',
277
+ ...getCORSHeaders(request, revealui.config),
278
+ },
279
+ });
280
+ }
281
+ catch (error) {
282
+ const message = error instanceof Error ? error.message : 'Internal server error';
283
+ const status = 'status' in error ? error.status : 500;
284
+ // Log error with context for debugging
285
+ defaultLogger.error('RevealUI Collection API Error:', {
286
+ collection,
287
+ method: request.method,
288
+ error: error instanceof Error
289
+ ? {
290
+ message: error.message,
291
+ name: error.name,
292
+ stack: process.env.NODE_ENV === 'development' ? error.stack : undefined,
293
+ }
294
+ : error,
295
+ });
296
+ // Sanitize error message for client (don't expose internal details)
297
+ const clientMessage = status >= 500 ? 'An internal server error occurred' : message;
298
+ return new Response(JSON.stringify({
299
+ message: clientMessage,
300
+ errors: [{ message: clientMessage }],
301
+ }), {
302
+ status,
303
+ headers: {
304
+ 'Content-Type': 'application/json',
305
+ ...getCORSHeaders(request, revealui.config),
306
+ },
307
+ });
308
+ }
309
+ }
310
+ async function handleGlobalOperation(method, global, revealui, request, options) {
311
+ try {
312
+ let result;
313
+ switch (method) {
314
+ case 'GET':
315
+ // Find global
316
+ result = (await revealui.globals[global]?.find(options)) ?? null;
317
+ break;
318
+ case 'POST':
319
+ case 'PATCH': {
320
+ // Update global
321
+ const updateData = (await request.json());
322
+ result =
323
+ (await revealui.globals[global]?.update({
324
+ data: updateData,
325
+ ...options,
326
+ })) ?? null;
327
+ break;
328
+ }
329
+ default:
330
+ return new Response(JSON.stringify({ message: 'Method not allowed' }), {
331
+ status: 405,
332
+ headers: { 'Content-Type': 'application/json' },
333
+ });
334
+ }
335
+ return new Response(JSON.stringify(result), {
336
+ status: 200,
337
+ headers: {
338
+ 'Content-Type': 'application/json',
339
+ ...getCORSHeaders(request, revealui.config),
340
+ },
341
+ });
342
+ }
343
+ catch (error) {
344
+ const message = error instanceof Error ? error.message : 'Internal server error';
345
+ const status = 'status' in error ? error.status : 500;
346
+ // Log error with context for debugging
347
+ defaultLogger.error('RevealUI Global API Error:', {
348
+ global,
349
+ method: request.method,
350
+ error: error instanceof Error
351
+ ? {
352
+ message: error.message,
353
+ name: error.name,
354
+ stack: process.env.NODE_ENV === 'development' ? error.stack : undefined,
355
+ }
356
+ : error,
357
+ });
358
+ // Sanitize error message for client (don't expose internal details)
359
+ const clientMessage = status >= 500 ? 'An internal server error occurred' : message;
360
+ return new Response(JSON.stringify({
361
+ message: clientMessage,
362
+ errors: [{ message: clientMessage }],
363
+ }), {
364
+ status,
365
+ headers: {
366
+ 'Content-Type': 'application/json',
367
+ ...getCORSHeaders(request, revealui.config),
368
+ },
369
+ });
370
+ }
371
+ }
372
+ export async function handleRESTRequest(request, config, revealui) {
373
+ // Handle CORS preflight requests
374
+ // Note: Next.js middleware (proxy.ts) handles CORS for actual requests
375
+ const corsResponse = handleCORS(request, config);
376
+ if (corsResponse) {
377
+ return corsResponse;
378
+ }
379
+ const url = new URL(request.url);
380
+ let pathParts = url.pathname.split('/').filter(Boolean);
381
+ // Skip 'api' prefix if present (Next.js routes include /api in the path)
382
+ if (pathParts[0] === 'api') {
383
+ pathParts = pathParts.slice(1);
384
+ }
385
+ // Parse query parameters
386
+ const options = parseQueryParams(url.searchParams);
387
+ // Create reveal request
388
+ const revealRequest = createRevealRequest(request);
389
+ revealRequest.revealui = revealui;
390
+ try {
391
+ // Route handling
392
+ if (pathParts[0] === 'collections' && pathParts[1]) {
393
+ const collection = pathParts[1];
394
+ const id = pathParts[2]; // Optional ID
395
+ if (!revealui.collections[collection]) {
396
+ return new Response(JSON.stringify({ message: `Collection '${collection}' not found` }), {
397
+ status: 404,
398
+ headers: { 'Content-Type': 'application/json' },
399
+ });
400
+ }
401
+ return await handleCollectionOperation(request.method, collection, id, revealui, request, options);
402
+ }
403
+ else if (pathParts[0] === 'globals' && pathParts[1]) {
404
+ const global = pathParts[1];
405
+ if (!revealui.globals[global]) {
406
+ return new Response(JSON.stringify({ message: `Global '${global}' not found` }), {
407
+ status: 404,
408
+ headers: { 'Content-Type': 'application/json' },
409
+ });
410
+ }
411
+ return await handleGlobalOperation(request.method, global, revealui, request, options);
412
+ }
413
+ else {
414
+ return new Response(JSON.stringify({ message: 'Route not found' }), {
415
+ status: 404,
416
+ headers: { 'Content-Type': 'application/json' },
417
+ });
418
+ }
419
+ }
420
+ catch (error) {
421
+ // Extract error message safely
422
+ const message = error instanceof Error ? error.message : 'Internal server error';
423
+ // Log error with context for debugging
424
+ defaultLogger.error('RevealUI REST API Error:', {
425
+ message,
426
+ path: url.pathname,
427
+ method: request.method,
428
+ error: error instanceof Error
429
+ ? {
430
+ message: error.message,
431
+ name: error.name,
432
+ stack: process.env.NODE_ENV === 'development' ? error.stack : undefined,
433
+ }
434
+ : error,
435
+ });
436
+ // Sanitize error message for client (don't expose internal details)
437
+ const clientMessage = 'An internal server error occurred';
438
+ return new Response(JSON.stringify({
439
+ message: clientMessage,
440
+ errors: [{ message: clientMessage }],
441
+ }), {
442
+ status: 500,
443
+ headers: {
444
+ 'Content-Type': 'application/json',
445
+ ...getCORSHeaders(request, config),
446
+ },
447
+ });
448
+ }
449
+ }
450
+ // Route handlers for Next.js
451
+ export function createRESTHandlers(config, revealui) {
452
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
453
+ const handler = async (request, _context) => {
454
+ return await handleRESTRequest(request, config, revealui);
455
+ };
456
+ return {
457
+ GET: handler,
458
+ POST: handler,
459
+ PUT: handler,
460
+ DELETE: handler,
461
+ PATCH: handler,
462
+ OPTIONS: handler,
463
+ };
464
+ }
@@ -0,0 +1,25 @@
1
+ import type { AccessResult } from '../types/index.js';
2
+ interface UserWithRoles {
3
+ id?: string | number;
4
+ email?: string;
5
+ roles?: string[];
6
+ }
7
+ interface AccessRequest {
8
+ user?: UserWithRoles | null;
9
+ revealui?: unknown;
10
+ }
11
+ type RevealAccessFunction = (args: {
12
+ req: AccessRequest;
13
+ }) => AccessResult | Promise<AccessResult>;
14
+ export declare const anyone: RevealAccessFunction;
15
+ export declare const authenticated: RevealAccessFunction;
16
+ export declare function isAdmin({ req }: {
17
+ req: AccessRequest;
18
+ }): boolean;
19
+ export declare function isSuperAdmin({ req }: {
20
+ req: AccessRequest;
21
+ }): boolean;
22
+ export declare function hasRole(role: string): RevealAccessFunction;
23
+ export declare function hasAnyRole(roles: string[]): RevealAccessFunction;
24
+ export {};
25
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/auth/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,UAAU,aAAa;IACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAGD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAGD,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAElG,eAAO,MAAM,MAAM,EAAE,oBAAiC,CAAA;AAEtD,eAAO,MAAM,aAAa,EAAE,oBAE3B,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAEhE;AAED,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAErE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAI1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAIhE"}
@@ -0,0 +1,20 @@
1
+ export const anyone = () => true;
2
+ export const authenticated = ({ req }) => {
3
+ return !!req.user;
4
+ };
5
+ export function isAdmin({ req }) {
6
+ return !!req.user && !!req.user.roles?.includes('admin');
7
+ }
8
+ export function isSuperAdmin({ req }) {
9
+ return !!req.user && !!req.user.roles?.includes('super-admin');
10
+ }
11
+ export function hasRole(role) {
12
+ return ({ req }) => {
13
+ return !!req.user && !!req.user.roles?.includes(role);
14
+ };
15
+ }
16
+ export function hasAnyRole(roles) {
17
+ return ({ req }) => {
18
+ return !!req.user && roles.some((role) => req.user?.roles?.includes(role));
19
+ };
20
+ }
@@ -0,0 +1,2 @@
1
+ export * from './access.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ // Re-export auth utilities
2
+ export * from './access.js';
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Query Result Caching with Redis
3
+ *
4
+ * Implements multi-layer caching for database queries
5
+ */
6
+ interface CacheOptions {
7
+ ttl?: number;
8
+ prefix?: string;
9
+ tags?: string[];
10
+ }
11
+ interface CacheStats {
12
+ hits: number;
13
+ misses: number;
14
+ sets: number;
15
+ deletes: number;
16
+ hitRate: number;
17
+ }
18
+ /**
19
+ * Cache a query result
20
+ */
21
+ export declare function cacheQuery<T>(key: string, queryFn: () => Promise<T>, options?: CacheOptions): Promise<T>;
22
+ /**
23
+ * Invalidate cache by key
24
+ */
25
+ export declare function invalidateCache(key: string): Promise<void>;
26
+ /**
27
+ * Invalidate cache by pattern
28
+ */
29
+ export declare function invalidateCachePattern(pattern: string): Promise<void>;
30
+ /**
31
+ * Invalidate cache by tags
32
+ */
33
+ export declare function invalidateCacheTags(tags: string[]): Promise<void>;
34
+ /**
35
+ * Clear all cache
36
+ */
37
+ export declare function clearCache(): Promise<void>;
38
+ /**
39
+ * Get cache statistics
40
+ */
41
+ export declare function getCacheStats(): CacheStats;
42
+ /**
43
+ * Cache for list queries
44
+ */
45
+ export declare function cacheList<T>(resource: string, filters: Record<string, unknown>, queryFn: () => Promise<T[]>, ttl?: number): Promise<T[]>;
46
+ /**
47
+ * Cache for single item queries
48
+ */
49
+ export declare function cacheItem<T>(resource: string, id: string | number, queryFn: () => Promise<T>, ttl?: number): Promise<T>;
50
+ /**
51
+ * Cache for count queries
52
+ */
53
+ export declare function cacheCount(resource: string, filters: Record<string, unknown>, queryFn: () => Promise<number>, ttl?: number): Promise<number>;
54
+ /**
55
+ * Invalidate resource cache
56
+ */
57
+ export declare function invalidateResource(resource: string): Promise<void>;
58
+ /**
59
+ * Warm cache with data
60
+ */
61
+ export declare function warmCache<T>(key: string, data: T, ttl?: number): Promise<void>;
62
+ /**
63
+ * Get cached value without executing query
64
+ */
65
+ export declare function getCached<T>(key: string): Promise<T | null>;
66
+ /**
67
+ * Check if key exists in cache
68
+ */
69
+ export declare function cacheExists(key: string): Promise<boolean>;
70
+ /**
71
+ * Memoize function with cache
72
+ */
73
+ export declare function memoize<T extends (...args: unknown[]) => Promise<unknown>>(fn: T, options?: CacheOptions): T;
74
+ /**
75
+ * Create cache wrapper for query function
76
+ */
77
+ export declare function withCache<T extends (...args: unknown[]) => Promise<unknown>>(queryFn: T, options: {
78
+ keyFn: (...args: Parameters<T>) => string;
79
+ ttl?: number;
80
+ prefix?: string;
81
+ }): T;
82
+ /**
83
+ * Batch cache operations
84
+ */
85
+ export declare function batchCache<T>(operations: Array<{
86
+ key: string;
87
+ queryFn: () => Promise<T>;
88
+ ttl?: number;
89
+ }>): Promise<T[]>;
90
+ /**
91
+ * Cache with stale-while-revalidate pattern
92
+ */
93
+ export declare function cacheSWR<T>(key: string, queryFn: () => Promise<T>, options?: {
94
+ ttl?: number;
95
+ staleTime?: number;
96
+ }): Promise<T>;
97
+ export {};
98
+ //# sourceMappingURL=query-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/cache/query-cache.ts"],"names":[],"mappings":"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"}