@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,104 @@
1
+ /**
2
+ * Population Helper Functions
3
+ *
4
+ * Extracted from the monolithic populate() function to improve
5
+ * maintainability, testability, and clarity.
6
+ */
7
+ import type { RevealRequest, TypedFallbackLocale } from '../types/index.js';
8
+ /** Relationship field types supported by population */
9
+ export interface PopulateRelationshipField {
10
+ type: 'relationship' | 'upload' | 'join';
11
+ name: string;
12
+ relationTo?: string | string[];
13
+ collection?: string | string[];
14
+ hasMany?: boolean;
15
+ maxDepth?: number;
16
+ localized?: boolean;
17
+ }
18
+ /** Information extracted about a relationship */
19
+ export interface RelationInfo {
20
+ /** The collection slug this relationship points to */
21
+ relationName: string | undefined;
22
+ /** The ID(s) to populate */
23
+ id: unknown;
24
+ /** The related collection config if available */
25
+ relatedCollection: unknown;
26
+ }
27
+ /**
28
+ * Extract relationship information from field and data
29
+ *
30
+ * Handles polymorphic relationships, join tables, and direct FK relationships.
31
+ */
32
+ export declare function extractRelationInfo(field: PopulateRelationshipField, data: unknown, req: {
33
+ revealui?: {
34
+ collections?: Record<string, unknown>;
35
+ };
36
+ }): RelationInfo;
37
+ /**
38
+ * Check if a relationship should be populated based on depth
39
+ */
40
+ export declare function shouldPopulateRelationship(currentDepth: number, depth: number): boolean;
41
+ /**
42
+ * Load a related document using the dataLoader
43
+ *
44
+ * Returns the populated document or undefined if not found.
45
+ */
46
+ export declare function loadRelatedDocument(args: {
47
+ id: unknown;
48
+ relationName: string;
49
+ relatedCollection: unknown;
50
+ currentDepth: number;
51
+ depth: number;
52
+ draft: boolean;
53
+ fallbackLocale: TypedFallbackLocale;
54
+ locale: string | null;
55
+ overrideAccess: boolean;
56
+ populateArg: unknown;
57
+ showHiddenFields: boolean;
58
+ req: {
59
+ dataLoader?: {
60
+ load?: (key: string) => Promise<unknown>;
61
+ };
62
+ };
63
+ }): Promise<unknown>;
64
+ /**
65
+ * Recursively populate nested relationships on a document
66
+ *
67
+ * Applies afterRead hook to populate relationships within the document.
68
+ */
69
+ export declare function applyNestedPopulation(args: {
70
+ doc: unknown;
71
+ collectionConfig: {
72
+ slug?: string;
73
+ fields?: unknown[];
74
+ defaultPopulate?: unknown;
75
+ };
76
+ currentDepth: number;
77
+ depth: number;
78
+ draft: boolean;
79
+ fallbackLocale: TypedFallbackLocale;
80
+ locale: string | null;
81
+ overrideAccess: boolean;
82
+ populateArg: unknown;
83
+ showHiddenFields: boolean;
84
+ req: RevealRequest;
85
+ }): Promise<unknown>;
86
+ /**
87
+ * Location information for updating a document with populated values
88
+ */
89
+ export interface UpdateLocation {
90
+ index?: number;
91
+ key?: string;
92
+ }
93
+ /**
94
+ * Update document with populated relationship value
95
+ *
96
+ * Handles various field configurations: arrays, localized fields, join tables, etc.
97
+ */
98
+ export declare function updateDocumentWithPopulatedValue(args: {
99
+ dataReference: Record<string, unknown>;
100
+ field: PopulateRelationshipField;
101
+ relationshipValue: unknown;
102
+ location: UpdateLocation;
103
+ }): void;
104
+ //# sourceMappingURL=populate-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate-helpers.d.ts","sourceRoot":"","sources":["../../src/relationships/populate-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Population Helper Functions
3
+ *
4
+ * Extracted from the monolithic populate() function to improve
5
+ * maintainability, testability, and clarity.
6
+ */
7
+ import { createDataloaderCacheKey } from '../dataloader.js';
8
+ import { afterRead } from '../fields/hooks/afterRead/index.js';
9
+ /**
10
+ * Extract relationship information from field and data
11
+ *
12
+ * Handles polymorphic relationships, join tables, and direct FK relationships.
13
+ */
14
+ export function extractRelationInfo(field, data, req) {
15
+ const dataRecord = data;
16
+ // Determine relation name based on field type
17
+ let relationName;
18
+ if (field.type === 'join') {
19
+ relationName = Array.isArray(field.collection)
20
+ ? dataRecord.relationTo
21
+ : field.collection;
22
+ }
23
+ else {
24
+ relationName = Array.isArray(field.relationTo)
25
+ ? dataRecord.relationTo
26
+ : field.relationTo;
27
+ }
28
+ // Get related collection config
29
+ const relatedCollection = relationName && req.revealui?.collections ? req.revealui.collections[relationName] : undefined;
30
+ // Extract ID based on field configuration
31
+ let id;
32
+ if (field.type === 'join' && Array.isArray(field.collection)) {
33
+ id = dataRecord.value;
34
+ }
35
+ else if (field.type !== 'join' && Array.isArray(field.relationTo)) {
36
+ id = dataRecord.value;
37
+ }
38
+ else {
39
+ id = data;
40
+ }
41
+ // Normalize ID to string or number
42
+ if (typeof id !== 'string' &&
43
+ typeof id !== 'number' &&
44
+ typeof id?.toString === 'function' &&
45
+ typeof id !== 'object') {
46
+ id = id.toString();
47
+ }
48
+ return { relationName, id, relatedCollection };
49
+ }
50
+ /**
51
+ * Check if a relationship should be populated based on depth
52
+ */
53
+ export function shouldPopulateRelationship(currentDepth, depth) {
54
+ return depth > 0 && currentDepth <= depth;
55
+ }
56
+ /**
57
+ * Load a related document using the dataLoader
58
+ *
59
+ * Returns the populated document or undefined if not found.
60
+ */
61
+ export async function loadRelatedDocument(args) {
62
+ const { id, relationName, relatedCollection, currentDepth, depth, draft, fallbackLocale, locale, overrideAccess, populateArg, showHiddenFields, req, } = args;
63
+ if (!req.dataLoader?.load) {
64
+ return undefined;
65
+ }
66
+ const relatedCollectionWithConfig = relatedCollection;
67
+ const collectionConfig = relatedCollectionWithConfig.config || relatedCollectionWithConfig;
68
+ const collectionSlug = collectionConfig?.slug || relationName;
69
+ // Load the document via dataLoader
70
+ const relationshipValue = await req.dataLoader.load(createDataloaderCacheKey({
71
+ collectionSlug: String(collectionSlug),
72
+ currentDepth: currentDepth + 1,
73
+ depth,
74
+ docID: id,
75
+ draft,
76
+ fallbackLocale,
77
+ locale: locale || 'en',
78
+ overrideAccess,
79
+ populate: populateArg || undefined,
80
+ select: populateArg && typeof populateArg === 'object'
81
+ ? (populateArg[String(collectionSlug)] ??
82
+ collectionConfig?.defaultPopulate)
83
+ : collectionConfig?.defaultPopulate,
84
+ showHiddenFields,
85
+ transactionID: '',
86
+ }));
87
+ return relationshipValue;
88
+ }
89
+ /**
90
+ * Recursively populate nested relationships on a document
91
+ *
92
+ * Applies afterRead hook to populate relationships within the document.
93
+ */
94
+ export async function applyNestedPopulation(args) {
95
+ const { doc, collectionConfig, currentDepth, depth, draft, fallbackLocale, locale, overrideAccess, populateArg, showHiddenFields, req, } = args;
96
+ if (!doc || currentDepth >= depth) {
97
+ return doc;
98
+ }
99
+ const sanitizedConfig = {
100
+ ...collectionConfig,
101
+ flattenedFields: collectionConfig?.fields,
102
+ customIDType: 'text',
103
+ trash: false,
104
+ defaultPopulate: [],
105
+ };
106
+ const localeForAfterRead = locale ?? 'en';
107
+ return await afterRead({
108
+ collection: sanitizedConfig,
109
+ context: {},
110
+ currentDepth: currentDepth + 1,
111
+ depth,
112
+ doc: doc,
113
+ draft,
114
+ fallbackLocale,
115
+ findMany: false,
116
+ flattenLocales: true,
117
+ global: null,
118
+ locale: localeForAfterRead,
119
+ overrideAccess,
120
+ populate: populateArg || undefined,
121
+ req,
122
+ select: undefined,
123
+ showHiddenFields,
124
+ });
125
+ }
126
+ /**
127
+ * Update document with populated relationship value
128
+ *
129
+ * Handles various field configurations: arrays, localized fields, join tables, etc.
130
+ */
131
+ export function updateDocumentWithPopulatedValue(args) {
132
+ const { dataReference, field, relationshipValue, location } = args;
133
+ const { index, key } = location;
134
+ // Case 1: Localized array field (has both index and key)
135
+ if (typeof index === 'number' && typeof key === 'string') {
136
+ const fieldRecord = dataReference[field.name];
137
+ const localeRecords = fieldRecord[key];
138
+ const localeEntry = localeRecords[index];
139
+ if (field.type !== 'join' && Array.isArray(field.relationTo)) {
140
+ localeEntry.value = relationshipValue;
141
+ }
142
+ else if (field.type === 'join' && Array.isArray(field.collection)) {
143
+ localeEntry.value = relationshipValue;
144
+ }
145
+ else {
146
+ localeRecords[index] = relationshipValue;
147
+ }
148
+ return;
149
+ }
150
+ // Case 2: Array field or localized field (has index or key, but not both)
151
+ if (typeof index === 'number' || typeof key === 'string') {
152
+ const fieldRecord = dataReference[field.name];
153
+ const target = (index ?? key);
154
+ if (field.type === 'join') {
155
+ if (!Array.isArray(field.collection)) {
156
+ const docs = fieldRecord.docs;
157
+ docs[target] = relationshipValue;
158
+ }
159
+ else {
160
+ const docs = fieldRecord.docs;
161
+ const docEntry = docs[target];
162
+ docEntry.value = relationshipValue;
163
+ }
164
+ }
165
+ else if (Array.isArray(field.relationTo)) {
166
+ const entries = fieldRecord;
167
+ const entry = entries[target];
168
+ entry.value = relationshipValue;
169
+ }
170
+ else {
171
+ fieldRecord[target] = relationshipValue;
172
+ }
173
+ return;
174
+ }
175
+ // Case 3: Single value (no index or key)
176
+ if (field.type !== 'join' && Array.isArray(field.relationTo)) {
177
+ const fieldRecord = dataReference[field.name];
178
+ fieldRecord.value = relationshipValue;
179
+ }
180
+ else if (field.type === 'join' && Array.isArray(field.collection)) {
181
+ const fieldRecord = dataReference[field.name];
182
+ fieldRecord.value = relationshipValue;
183
+ }
184
+ else {
185
+ dataReference[field.name] = relationshipValue;
186
+ }
187
+ }
@@ -0,0 +1,42 @@
1
+ import type { PopulateType, TypedFallbackLocale } from '../types/index.js';
2
+ interface PopulateRequest {
3
+ revealui?: {
4
+ collections?: Record<string, {
5
+ config?: {
6
+ defaultPopulate?: unknown;
7
+ };
8
+ }>;
9
+ config?: {
10
+ collections?: unknown[];
11
+ };
12
+ };
13
+ dataLoader?: {
14
+ load?: (key: string) => Promise<unknown>;
15
+ find?: (options: unknown) => Promise<unknown>;
16
+ };
17
+ }
18
+ interface PopulateRelationshipField {
19
+ type: 'relationship' | 'upload' | 'join';
20
+ name: string;
21
+ relationTo?: string | string[];
22
+ collection?: string | string[];
23
+ hasMany?: boolean;
24
+ maxDepth?: number;
25
+ localized?: boolean;
26
+ }
27
+ type PromiseArgs = {
28
+ currentDepth: number;
29
+ depth: number;
30
+ draft: boolean;
31
+ fallbackLocale: TypedFallbackLocale;
32
+ field: PopulateRelationshipField;
33
+ locale: null | string;
34
+ overrideAccess: boolean;
35
+ populate?: PopulateType;
36
+ req: PopulateRequest;
37
+ showHiddenFields: boolean;
38
+ siblingDoc: Record<string, unknown>;
39
+ };
40
+ export declare const relationshipPopulationPromise: ({ currentDepth, depth, draft, fallbackLocale, field, locale, overrideAccess, populate: populateArg, req, showHiddenFields, siblingDoc, }: PromiseArgs) => Promise<void>;
41
+ export {};
42
+ //# sourceMappingURL=population.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"population.d.ts","sourceRoot":"","sources":["../../src/relationships/population.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAiB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAGzF,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,eAAe,CAAC,EAAE,OAAO,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;QACxE,MAAM,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE,CAAA;KACrC,CAAA;IACD,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC9C,CAAA;CACF;AAGD,UAAU,yBAAyB;IACjC,IAAI,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAkID,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,mBAAmB,CAAA;IACnC,KAAK,EAAE,yBAAyB,CAAA;IAChC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,eAAe,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAU,0IAYjD,WAAW,KAAG,OAAO,CAAC,IAAI,CAoI5B,CAAA"}
@@ -0,0 +1,188 @@
1
+ import { fieldHasMaxDepth, fieldShouldBeLocalized, fieldSupportsMany, } from '../fields/config/types.js';
2
+ /**
3
+ * Populate a single relationship field
4
+ *
5
+ * Refactored from the original monolithic function for better maintainability.
6
+ * Uses helper functions from populate-helpers.ts for clarity and testability.
7
+ */
8
+ const populate = async ({ currentDepth, data, dataReference, depth, draft, fallbackLocale, field, index, key, locale, overrideAccess, populateArg, req, showHiddenFields, }) => {
9
+ // Import helpers (dynamic to avoid circular dependencies)
10
+ const { extractRelationInfo, shouldPopulateRelationship, loadRelatedDocument, applyNestedPopulation, updateDocumentWithPopulatedValue, } = await import('./populate-helpers.js');
11
+ // Step 1: Extract relationship information
12
+ const { relationName, id, relatedCollection } = extractRelationInfo(field, data, req);
13
+ if (!relatedCollection) {
14
+ return; // No collection to populate from
15
+ }
16
+ // Step 2: Check if we should populate
17
+ let relationshipValue;
18
+ if (shouldPopulateRelationship(currentDepth, depth) && req.dataLoader?.load) {
19
+ const collectionConfig = relatedCollection.config || relatedCollection;
20
+ // Step 3: Load the related document
21
+ relationshipValue = await loadRelatedDocument({
22
+ id,
23
+ relationName: relationName || collectionConfig.slug || '',
24
+ relatedCollection,
25
+ currentDepth,
26
+ depth,
27
+ draft,
28
+ fallbackLocale,
29
+ locale,
30
+ overrideAccess,
31
+ populateArg,
32
+ showHiddenFields,
33
+ req,
34
+ });
35
+ // Step 4: Recursively populate nested relationships
36
+ if (relationshipValue && currentDepth < depth) {
37
+ relationshipValue = await applyNestedPopulation({
38
+ doc: relationshipValue,
39
+ collectionConfig,
40
+ currentDepth,
41
+ depth,
42
+ draft,
43
+ fallbackLocale,
44
+ locale,
45
+ overrideAccess,
46
+ populateArg,
47
+ showHiddenFields,
48
+ req: req,
49
+ });
50
+ }
51
+ }
52
+ // Step 5: Fall back to ID if no value loaded
53
+ if (!relationshipValue) {
54
+ relationshipValue = id;
55
+ }
56
+ // Step 6: Update the document with the populated value
57
+ updateDocumentWithPopulatedValue({
58
+ dataReference,
59
+ field,
60
+ relationshipValue,
61
+ location: { index, key },
62
+ });
63
+ };
64
+ export const relationshipPopulationPromise = async ({ currentDepth, depth, draft, fallbackLocale, field, locale, overrideAccess, populate: populateArg, req, showHiddenFields, siblingDoc, }) => {
65
+ const resultingDoc = siblingDoc;
66
+ const fieldForChecks = field;
67
+ const maxDepth = fieldHasMaxDepth(fieldForChecks) ? field.maxDepth : undefined;
68
+ const populateDepth = maxDepth !== undefined && maxDepth < depth ? maxDepth : depth;
69
+ const rowPromises = [];
70
+ const siblingFieldValue = siblingDoc[field.name];
71
+ const siblingFieldRecord = typeof siblingFieldValue === 'object' && siblingFieldValue !== null
72
+ ? siblingFieldValue
73
+ : null;
74
+ if (field.type === 'join' || (fieldSupportsMany(fieldForChecks) && field.hasMany)) {
75
+ if (fieldShouldBeLocalized({ field: fieldForChecks, parentIsLocalized: false }) &&
76
+ locale === 'all' &&
77
+ siblingFieldRecord) {
78
+ Object.keys(siblingFieldRecord).forEach((localeKey) => {
79
+ const localeValue = siblingFieldRecord[localeKey];
80
+ if (Array.isArray(localeValue)) {
81
+ const localeValues = localeValue;
82
+ localeValues.forEach((_, index) => {
83
+ const rowPromise = async () => {
84
+ await populate({
85
+ currentDepth,
86
+ data: localeValues[index],
87
+ dataReference: resultingDoc,
88
+ depth: populateDepth,
89
+ draft,
90
+ fallbackLocale,
91
+ field,
92
+ index,
93
+ key: localeKey,
94
+ locale,
95
+ overrideAccess,
96
+ populateArg: populateArg || undefined,
97
+ req,
98
+ showHiddenFields,
99
+ });
100
+ };
101
+ rowPromises.push(rowPromise());
102
+ });
103
+ }
104
+ });
105
+ }
106
+ else if (Array.isArray(siblingFieldValue) ||
107
+ Array.isArray(siblingFieldRecord?.docs) ||
108
+ Array.isArray(siblingDoc[`${field.name}_ids`])) {
109
+ const docsValue = siblingFieldRecord?.docs;
110
+ const idsValue = siblingDoc[`${field.name}_ids`];
111
+ const relationshipArray = Array.isArray(siblingFieldValue)
112
+ ? siblingFieldValue
113
+ : Array.isArray(docsValue)
114
+ ? docsValue
115
+ : idsValue;
116
+ relationshipArray.forEach((relatedDoc, index) => {
117
+ const rowPromise = async () => {
118
+ if (relatedDoc) {
119
+ const relatedDocRecord = typeof relatedDoc === 'object' && relatedDoc !== null
120
+ ? relatedDoc
121
+ : null;
122
+ const relatedId = relatedDocRecord?.id;
123
+ await populate({
124
+ currentDepth,
125
+ data: !(field.type === 'join' && Array.isArray(field.collection)) && relatedId
126
+ ? relatedId
127
+ : relatedDoc,
128
+ dataReference: resultingDoc,
129
+ depth: populateDepth,
130
+ draft,
131
+ fallbackLocale,
132
+ field,
133
+ index,
134
+ locale,
135
+ overrideAccess,
136
+ populateArg: populateArg || undefined,
137
+ req,
138
+ showHiddenFields,
139
+ });
140
+ }
141
+ };
142
+ rowPromises.push(rowPromise());
143
+ });
144
+ }
145
+ }
146
+ else if (field.localized && locale === 'all' && siblingFieldRecord) {
147
+ Object.keys(siblingFieldRecord).forEach((localeKey) => {
148
+ const rowPromise = async () => {
149
+ await populate({
150
+ currentDepth,
151
+ data: siblingFieldRecord[localeKey],
152
+ dataReference: resultingDoc,
153
+ depth: populateDepth,
154
+ draft,
155
+ fallbackLocale,
156
+ field,
157
+ key: localeKey,
158
+ locale,
159
+ overrideAccess,
160
+ populateArg: populateArg || undefined,
161
+ req,
162
+ showHiddenFields,
163
+ });
164
+ };
165
+ rowPromises.push(rowPromise());
166
+ });
167
+ await Promise.all(rowPromises);
168
+ }
169
+ else if (siblingFieldValue || siblingDoc[`${field.name}_id`]) {
170
+ // For relationships, the data might be in the FK column
171
+ const relationshipData = siblingFieldValue || siblingDoc[`${field.name}_id`];
172
+ await populate({
173
+ currentDepth,
174
+ data: relationshipData,
175
+ dataReference: resultingDoc,
176
+ depth: populateDepth,
177
+ draft,
178
+ fallbackLocale,
179
+ field,
180
+ locale,
181
+ overrideAccess,
182
+ populateArg: populateArg || undefined,
183
+ req,
184
+ showHiddenFields,
185
+ });
186
+ }
187
+ await Promise.all(rowPromises);
188
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * RevealUI Core Implementation
3
+ *
4
+ * Main entry point that re-exports from organized modules.
5
+ */
6
+ export { RevealUICollection } from './collections/CollectionOperations.js';
7
+ export { RevealUIGlobal } from './globals/GlobalOperations.js';
8
+ export { createLogger, defaultLogger, Logger, type RevealUILogger, } from './instance/logger.js';
9
+ export { createRevealUIInstance } from './instance/RevealUIInstance.js';
10
+ export { buildWhereClause, extractWhereValues, } from './queries/queryBuilder.js';
11
+ export { getRelationshipFields, validateRelationshipMetadata, } from './relationships/analyzer.js';
12
+ export { relationshipPopulationPromise } from './relationships/population.js';
13
+ export { flattenResult } from './utils/flattenResult.js';
14
+ import type { RevealUITraverseFieldsArgs, RevealUITraverseFieldsResult } from './types/index.js';
15
+ export declare function afterChangeTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
16
+ export declare function afterReadTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
17
+ export declare function beforeChangeTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
18
+ export declare function beforeValidateTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
19
+ import type { RevealUIDependencyCheckArgs } from './types/index.js';
20
+ export declare function checkDependencies(args: RevealUIDependencyCheckArgs): boolean;
21
+ /**
22
+ * @deprecated Use deepMerge from '@revealui/core/config/utils' or '@revealui/core' instead
23
+ * This function is kept for backward compatibility but will be removed in a future version.
24
+ */
25
+ export declare function deepMergeSimple<T extends Record<string, unknown>>(target: T, source: Partial<T>): T;
26
+ import type { JSONSchema4TypeName } from 'json-schema';
27
+ import type React from 'react';
28
+ import type { RevealUIBlock, RevealUIEnhancedField, RevealUIField, RevealUIRichTextAdapter } from './types/index.js';
29
+ export type { Field, RevealUIField, SanitizedConfig } from './types/index.js';
30
+ export type StaticLabel = string;
31
+ export type ServerFieldBase = RevealUIField;
32
+ export type RichTextAdapter = RevealUIRichTextAdapter;
33
+ export type RichTextField = RevealUIEnhancedField;
34
+ export type Data = Record<string, unknown>;
35
+ export type FormState = Record<string, unknown>;
36
+ export type { CollectionConfig, Config, GlobalConfig } from './types/index.js';
37
+ export type BlocksFieldClient = React.ComponentType<Record<string, unknown>>;
38
+ export type ClientBlock = React.ComponentType<Record<string, unknown>>;
39
+ export type CodeFieldClient = React.ComponentType<Record<string, unknown>>;
40
+ export type CodeFieldClientProps = Record<string, unknown>;
41
+ export type BlocksField = RevealUIField;
42
+ export type Block = RevealUIBlock;
43
+ export type BlockJSX = React.ReactElement;
44
+ export type BlockSlug = string;
45
+ export declare function withNullableJSONSchemaType(typeName: JSONSchema4TypeName, isRequired: boolean): JSONSchema4TypeName | JSONSchema4TypeName[] | undefined;
46
+ //# sourceMappingURL=revealui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revealui.d.ts","sourceRoot":"","sources":["../src/revealui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * RevealUI Core Implementation
3
+ *
4
+ * Main entry point that re-exports from organized modules.
5
+ */
6
+ // Collection and Global operations
7
+ export { RevealUICollection } from './collections/CollectionOperations.js';
8
+ export { RevealUIGlobal } from './globals/GlobalOperations.js';
9
+ // Logger
10
+ export { createLogger, defaultLogger, Logger, } from './instance/logger.js';
11
+ // Main instance creation
12
+ export { createRevealUIInstance } from './instance/RevealUIInstance.js';
13
+ // Query utilities
14
+ export { buildWhereClause, extractWhereValues, } from './queries/queryBuilder.js';
15
+ // Relationship utilities
16
+ export { getRelationshipFields, validateRelationshipMetadata, } from './relationships/analyzer.js';
17
+ export { relationshipPopulationPromise } from './relationships/population.js';
18
+ // Utilities
19
+ export { flattenResult } from './utils/flattenResult.js';
20
+ import { traverseFieldsCore } from './fieldTraversal.js';
21
+ export async function afterChangeTraverseFields(args) {
22
+ // Traverse fields after changes have been made
23
+ // This allows post-processing, side effects, and cleanup
24
+ return traverseFieldsCore(args, 'afterChange');
25
+ }
26
+ export async function afterReadTraverseFields(args) {
27
+ // Traverse fields after data has been read from the database
28
+ // This allows formatting, transformation, and relationship population
29
+ return traverseFieldsCore(args, 'afterRead');
30
+ }
31
+ export async function beforeChangeTraverseFields(args) {
32
+ // Traverse fields before changes are applied
33
+ // This allows validation, transformation, and default value assignment
34
+ return traverseFieldsCore(args, 'beforeChange');
35
+ }
36
+ export async function beforeValidateTraverseFields(args) {
37
+ // Traverse fields before validation runs
38
+ // This allows data preparation, type coercion, and required field checks
39
+ return traverseFieldsCore(args, 'beforeValidate');
40
+ }
41
+ export function checkDependencies(args) {
42
+ const { field } = args;
43
+ // Check for conditional fields (fields that depend on other fields via admin.condition)
44
+ if ('admin' in field &&
45
+ field.admin &&
46
+ typeof field.admin === 'object' &&
47
+ 'condition' in field.admin) {
48
+ const condition = field.admin.condition;
49
+ // If condition is a function, we can't evaluate it without data
50
+ // Return true to allow the field to be processed (validation will happen later with data)
51
+ if (typeof condition === 'function') {
52
+ // Condition functions require data to evaluate, so we can't check dependencies here
53
+ // This is acceptable - conditions are evaluated at runtime when data is available
54
+ return true;
55
+ }
56
+ // If condition is a boolean or other simple type, evaluate it directly
57
+ if (typeof condition === 'boolean') {
58
+ return condition;
59
+ }
60
+ }
61
+ // Check for relationship dependencies
62
+ if (field.type === 'relationship' || field.type === 'upload') {
63
+ // Validate that relationTo is specified
64
+ if ('relationTo' in field && field.relationTo) {
65
+ const relationTo = field.relationTo;
66
+ const targetCollections = Array.isArray(relationTo) ? relationTo : [relationTo];
67
+ // Basic validation: ensure we have at least one target collection
68
+ // In a full implementation, we'd check if the collections exist in the config
69
+ return (targetCollections.length > 0 &&
70
+ targetCollections.every((coll) => typeof coll === 'string' && coll.length > 0));
71
+ }
72
+ // Relationship field without relationTo is invalid
73
+ return false;
74
+ }
75
+ // No dependencies found or all dependencies are valid
76
+ return true;
77
+ }
78
+ // Deep merge utility - re-exported from config/utils for convenience
79
+ import { deepMerge as coreDeepMerge } from './config/utils.js';
80
+ /**
81
+ * @deprecated Use deepMerge from '@revealui/core/config/utils' or '@revealui/core' instead
82
+ * This function is kept for backward compatibility but will be removed in a future version.
83
+ */
84
+ export function deepMergeSimple(target, source) {
85
+ // Use the canonical deepMerge implementation from config/utils
86
+ return coreDeepMerge(target, source);
87
+ }
88
+ // JSON Schema utility
89
+ export function withNullableJSONSchemaType(typeName, isRequired) {
90
+ // Return the type name, or an array including null if not required
91
+ return isRequired ? typeName : [typeName, 'null'];
92
+ }