@revealui/core 0.0.0-canary-20260409021642

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 (522) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +171 -0
  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 +114 -0
  10. package/dist/api/rate-limit.d.ts.map +1 -0
  11. package/dist/api/rate-limit.js +376 -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 +465 -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 +100 -0
  25. package/dist/cache/query-cache.d.ts.map +1 -0
  26. package/dist/cache/query-cache.js +266 -0
  27. package/dist/caching/index.d.ts +6 -0
  28. package/dist/caching/index.d.ts.map +1 -0
  29. package/dist/caching/index.js +5 -0
  30. package/dist/client/admin/RichText.d.ts +12 -0
  31. package/dist/client/admin/RichText.d.ts.map +1 -0
  32. package/dist/client/admin/RichText.js +5 -0
  33. package/dist/client/admin/components/AdminDashboard.d.ts +7 -0
  34. package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -0
  35. package/dist/client/admin/components/AdminDashboard.js +308 -0
  36. package/dist/client/admin/components/CollectionList.d.ts +16 -0
  37. package/dist/client/admin/components/CollectionList.d.ts.map +1 -0
  38. package/dist/client/admin/components/CollectionList.js +67 -0
  39. package/dist/client/admin/components/DocumentForm.d.ts +11 -0
  40. package/dist/client/admin/components/DocumentForm.d.ts.map +1 -0
  41. package/dist/client/admin/components/DocumentForm.js +223 -0
  42. package/dist/client/admin/components/GlobalForm.d.ts +11 -0
  43. package/dist/client/admin/components/GlobalForm.d.ts.map +1 -0
  44. package/dist/client/admin/components/GlobalForm.js +74 -0
  45. package/dist/client/admin/context/ServerFunctionContext.d.ts +8 -0
  46. package/dist/client/admin/context/ServerFunctionContext.d.ts.map +1 -0
  47. package/dist/client/admin/context/ServerFunctionContext.js +15 -0
  48. package/dist/client/admin/i18n/en.d.ts +25 -0
  49. package/dist/client/admin/i18n/en.d.ts.map +1 -0
  50. package/dist/client/admin/i18n/en.js +25 -0
  51. package/dist/client/admin/index.d.ts +11 -0
  52. package/dist/client/admin/index.d.ts.map +1 -0
  53. package/dist/client/admin/index.js +11 -0
  54. package/dist/client/admin/layout.d.ts +10 -0
  55. package/dist/client/admin/layout.d.ts.map +1 -0
  56. package/dist/client/admin/layout.js +7 -0
  57. package/dist/client/admin/page.d.ts +38 -0
  58. package/dist/client/admin/page.d.ts.map +1 -0
  59. package/dist/client/admin/page.js +15 -0
  60. package/dist/client/admin/utils/apiClient.d.ts +110 -0
  61. package/dist/client/admin/utils/apiClient.d.ts.map +1 -0
  62. package/dist/client/admin/utils/apiClient.js +216 -0
  63. package/dist/client/admin/utils/index.d.ts +5 -0
  64. package/dist/client/admin/utils/index.d.ts.map +1 -0
  65. package/dist/client/admin/utils/index.js +4 -0
  66. package/dist/client/admin/utils/serializeConfig.d.ts +7 -0
  67. package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -0
  68. package/dist/client/admin/utils/serializeConfig.js +35 -0
  69. package/dist/client/hooks.d.ts +18 -0
  70. package/dist/client/hooks.d.ts.map +1 -0
  71. package/dist/client/hooks.js +29 -0
  72. package/dist/client/index.d.ts +11 -0
  73. package/dist/client/index.d.ts.map +1 -0
  74. package/dist/client/index.js +13 -0
  75. package/dist/client/richtext/RichTextEditor.d.ts +48 -0
  76. package/dist/client/richtext/RichTextEditor.d.ts.map +1 -0
  77. package/dist/client/richtext/RichTextEditor.js +360 -0
  78. package/dist/client/richtext/components/ImageNodeComponent.d.ts +9 -0
  79. package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -0
  80. package/dist/client/richtext/components/ImageNodeComponent.js +98 -0
  81. package/dist/client/richtext/components/ImageUploadButton.d.ts +13 -0
  82. package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -0
  83. package/dist/client/richtext/components/ImageUploadButton.js +118 -0
  84. package/dist/client/richtext/index.d.ts +92 -0
  85. package/dist/client/richtext/index.d.ts.map +1 -0
  86. package/dist/client/richtext/index.js +74 -0
  87. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts +20 -0
  88. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -0
  89. package/dist/client/richtext/nodes/DecoratorBlockNode.js +29 -0
  90. package/dist/client/richtext/nodes/ImageNode.d.ts +51 -0
  91. package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -0
  92. package/dist/client/richtext/nodes/ImageNode.js +95 -0
  93. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts +13 -0
  94. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -0
  95. package/dist/client/richtext/plugins/CollaborationPlugin.js +8 -0
  96. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts +4 -0
  97. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -0
  98. package/dist/client/richtext/plugins/CursorsOverlayPlugin.js +50 -0
  99. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts +7 -0
  100. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -0
  101. package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +246 -0
  102. package/dist/client/richtext/plugins/ImagePlugin.d.ts +3 -0
  103. package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -0
  104. package/dist/client/richtext/plugins/ImagePlugin.js +73 -0
  105. package/dist/client/richtext/plugins/PastePlugin.d.ts +2 -0
  106. package/dist/client/richtext/plugins/PastePlugin.d.ts.map +1 -0
  107. package/dist/client/richtext/plugins/PastePlugin.js +36 -0
  108. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts +8 -0
  109. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -0
  110. package/dist/client/richtext/plugins/ToolbarPlugin.js +204 -0
  111. package/dist/client/ui/index.d.ts +111 -0
  112. package/dist/client/ui/index.d.ts.map +1 -0
  113. package/dist/client/ui/index.js +130 -0
  114. package/dist/collections/CollectionOperations.d.ts +27 -0
  115. package/dist/collections/CollectionOperations.d.ts.map +1 -0
  116. package/dist/collections/CollectionOperations.js +48 -0
  117. package/dist/collections/hooks.d.ts +11 -0
  118. package/dist/collections/hooks.d.ts.map +1 -0
  119. package/dist/collections/hooks.js +35 -0
  120. package/dist/collections/index.d.ts +2 -0
  121. package/dist/collections/index.d.ts.map +1 -0
  122. package/dist/collections/index.js +1 -0
  123. package/dist/collections/operations/create.d.ts +9 -0
  124. package/dist/collections/operations/create.d.ts.map +1 -0
  125. package/dist/collections/operations/create.js +130 -0
  126. package/dist/collections/operations/createMany.d.ts +12 -0
  127. package/dist/collections/operations/createMany.d.ts.map +1 -0
  128. package/dist/collections/operations/createMany.js +43 -0
  129. package/dist/collections/operations/delete.d.ts +10 -0
  130. package/dist/collections/operations/delete.d.ts.map +1 -0
  131. package/dist/collections/operations/delete.js +45 -0
  132. package/dist/collections/operations/deleteMany.d.ts +11 -0
  133. package/dist/collections/operations/deleteMany.d.ts.map +1 -0
  134. package/dist/collections/operations/deleteMany.js +50 -0
  135. package/dist/collections/operations/fieldHooks.d.ts +21 -0
  136. package/dist/collections/operations/fieldHooks.d.ts.map +1 -0
  137. package/dist/collections/operations/fieldHooks.js +51 -0
  138. package/dist/collections/operations/find.d.ts +8 -0
  139. package/dist/collections/operations/find.d.ts.map +1 -0
  140. package/dist/collections/operations/find.js +231 -0
  141. package/dist/collections/operations/findById.d.ts +14 -0
  142. package/dist/collections/operations/findById.d.ts.map +1 -0
  143. package/dist/collections/operations/findById.js +111 -0
  144. package/dist/collections/operations/sqlAdapter.d.ts +23 -0
  145. package/dist/collections/operations/sqlAdapter.d.ts.map +1 -0
  146. package/dist/collections/operations/sqlAdapter.js +108 -0
  147. package/dist/collections/operations/update.d.ts +8 -0
  148. package/dist/collections/operations/update.d.ts.map +1 -0
  149. package/dist/collections/operations/update.js +226 -0
  150. package/dist/collections/operations/updateMany.d.ts +11 -0
  151. package/dist/collections/operations/updateMany.d.ts.map +1 -0
  152. package/dist/collections/operations/updateMany.js +52 -0
  153. package/dist/collections/registry.d.ts +12 -0
  154. package/dist/collections/registry.d.ts.map +1 -0
  155. package/dist/collections/registry.js +38 -0
  156. package/dist/config/index.d.ts +9 -0
  157. package/dist/config/index.d.ts.map +1 -0
  158. package/dist/config/index.js +61 -0
  159. package/dist/config/runtime.d.ts +22 -0
  160. package/dist/config/runtime.d.ts.map +1 -0
  161. package/dist/config/runtime.js +32 -0
  162. package/dist/config/utils.d.ts +2 -0
  163. package/dist/config/utils.d.ts.map +1 -0
  164. package/dist/config/utils.js +21 -0
  165. package/dist/database/index.d.ts +4 -0
  166. package/dist/database/index.d.ts.map +1 -0
  167. package/dist/database/index.js +2 -0
  168. package/dist/database/safe-parse.d.ts +26 -0
  169. package/dist/database/safe-parse.d.ts.map +1 -0
  170. package/dist/database/safe-parse.js +42 -0
  171. package/dist/database/ssl-config.d.ts +9 -0
  172. package/dist/database/ssl-config.d.ts.map +1 -0
  173. package/dist/database/ssl-config.js +7 -0
  174. package/dist/database/type-adapter.d.ts +113 -0
  175. package/dist/database/type-adapter.d.ts.map +1 -0
  176. package/dist/database/type-adapter.js +97 -0
  177. package/dist/database/universal-postgres.d.ts +45 -0
  178. package/dist/database/universal-postgres.d.ts.map +1 -0
  179. package/dist/database/universal-postgres.js +531 -0
  180. package/dist/dataloader.d.ts +26 -0
  181. package/dist/dataloader.d.ts.map +1 -0
  182. package/dist/dataloader.js +176 -0
  183. package/dist/error-handling/error-boundary.d.ts +94 -0
  184. package/dist/error-handling/error-boundary.d.ts.map +1 -0
  185. package/dist/error-handling/error-boundary.js +285 -0
  186. package/dist/error-handling/error-reporter.d.ts +214 -0
  187. package/dist/error-handling/error-reporter.d.ts.map +1 -0
  188. package/dist/error-handling/error-reporter.js +491 -0
  189. package/dist/error-handling/fallback-components.d.ts +131 -0
  190. package/dist/error-handling/fallback-components.d.ts.map +1 -0
  191. package/dist/error-handling/fallback-components.js +371 -0
  192. package/dist/error-handling/index.d.ts +14 -0
  193. package/dist/error-handling/index.d.ts.map +1 -0
  194. package/dist/error-handling/index.js +12 -0
  195. package/dist/factories/builders.d.ts +50 -0
  196. package/dist/factories/builders.d.ts.map +1 -0
  197. package/dist/factories/builders.js +77 -0
  198. package/dist/factories/index.d.ts +2 -0
  199. package/dist/factories/index.d.ts.map +1 -0
  200. package/dist/factories/index.js +1 -0
  201. package/dist/features.d.ts +88 -0
  202. package/dist/features.d.ts.map +1 -0
  203. package/dist/features.js +105 -0
  204. package/dist/fieldTraversal.d.ts +26 -0
  205. package/dist/fieldTraversal.d.ts.map +1 -0
  206. package/dist/fieldTraversal.js +132 -0
  207. package/dist/fields/config/types.d.ts +48 -0
  208. package/dist/fields/config/types.d.ts.map +1 -0
  209. package/dist/fields/config/types.js +20 -0
  210. package/dist/fields/getDefaultValue.d.ts +16 -0
  211. package/dist/fields/getDefaultValue.d.ts.map +1 -0
  212. package/dist/fields/getDefaultValue.js +20 -0
  213. package/dist/fields/getFieldPaths.d.ts +25 -0
  214. package/dist/fields/getFieldPaths.d.ts.map +1 -0
  215. package/dist/fields/getFieldPaths.js +23 -0
  216. package/dist/fields/hooks/afterRead/index.d.ts +36 -0
  217. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -0
  218. package/dist/fields/hooks/afterRead/index.js +70 -0
  219. package/dist/fields/hooks/afterRead/promise.d.ts +46 -0
  220. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -0
  221. package/dist/fields/hooks/afterRead/promise.js +178 -0
  222. package/dist/fields/hooks/afterRead/traverseFields.d.ts +44 -0
  223. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -0
  224. package/dist/fields/hooks/afterRead/traverseFields.js +37 -0
  225. package/dist/generated/index.d.ts +10 -0
  226. package/dist/generated/index.d.ts.map +1 -0
  227. package/dist/generated/index.js +9 -0
  228. package/dist/generated/types/cms.d.ts +1766 -0
  229. package/dist/generated/types/cms.d.ts.map +1 -0
  230. package/dist/generated/types/cms.js +11 -0
  231. package/dist/generated/types/index.d.ts +16 -0
  232. package/dist/generated/types/index.d.ts.map +1 -0
  233. package/dist/generated/types/index.js +21 -0
  234. package/dist/generated/types/neon.d.ts +11 -0
  235. package/dist/generated/types/neon.d.ts.map +1 -0
  236. package/dist/generated/types/neon.js +13 -0
  237. package/dist/globals/GlobalOperations.d.ts +24 -0
  238. package/dist/globals/GlobalOperations.d.ts.map +1 -0
  239. package/dist/globals/GlobalOperations.js +165 -0
  240. package/dist/globals/index.d.ts +2 -0
  241. package/dist/globals/index.d.ts.map +1 -0
  242. package/dist/globals/index.js +1 -0
  243. package/dist/index.d.ts +75 -0
  244. package/dist/index.d.ts.map +1 -0
  245. package/dist/index.js +136 -0
  246. package/dist/instance/RevealUIInstance.d.ts +6 -0
  247. package/dist/instance/RevealUIInstance.d.ts.map +1 -0
  248. package/dist/instance/RevealUIInstance.js +293 -0
  249. package/dist/instance/index.d.ts +3 -0
  250. package/dist/instance/index.d.ts.map +1 -0
  251. package/dist/instance/index.js +2 -0
  252. package/dist/instance/logger.d.ts +31 -0
  253. package/dist/instance/logger.d.ts.map +1 -0
  254. package/dist/instance/logger.js +42 -0
  255. package/dist/instance/methods/create.d.ts +10 -0
  256. package/dist/instance/methods/create.d.ts.map +1 -0
  257. package/dist/instance/methods/create.js +38 -0
  258. package/dist/instance/methods/delete.d.ts +10 -0
  259. package/dist/instance/methods/delete.d.ts.map +1 -0
  260. package/dist/instance/methods/delete.js +24 -0
  261. package/dist/instance/methods/find.d.ts +10 -0
  262. package/dist/instance/methods/find.d.ts.map +1 -0
  263. package/dist/instance/methods/find.js +20 -0
  264. package/dist/instance/methods/findById.d.ts +13 -0
  265. package/dist/instance/methods/findById.d.ts.map +1 -0
  266. package/dist/instance/methods/findById.js +20 -0
  267. package/dist/instance/methods/hooks.d.ts +14 -0
  268. package/dist/instance/methods/hooks.d.ts.map +1 -0
  269. package/dist/instance/methods/hooks.js +34 -0
  270. package/dist/instance/methods/update.d.ts +10 -0
  271. package/dist/instance/methods/update.d.ts.map +1 -0
  272. package/dist/instance/methods/update.js +42 -0
  273. package/dist/jobs/index.d.ts +16 -0
  274. package/dist/jobs/index.d.ts.map +1 -0
  275. package/dist/jobs/index.js +14 -0
  276. package/dist/jobs/queue.d.ts +57 -0
  277. package/dist/jobs/queue.d.ts.map +1 -0
  278. package/dist/jobs/queue.js +134 -0
  279. package/dist/license-encryption.d.ts +21 -0
  280. package/dist/license-encryption.d.ts.map +1 -0
  281. package/dist/license-encryption.js +74 -0
  282. package/dist/license.d.ts +99 -0
  283. package/dist/license.d.ts.map +1 -0
  284. package/dist/license.js +262 -0
  285. package/dist/monitoring/alerts.d.ts +118 -0
  286. package/dist/monitoring/alerts.d.ts.map +1 -0
  287. package/dist/monitoring/alerts.js +324 -0
  288. package/dist/monitoring/cleanup-manager.d.ts +71 -0
  289. package/dist/monitoring/cleanup-manager.d.ts.map +1 -0
  290. package/dist/monitoring/cleanup-manager.js +226 -0
  291. package/dist/monitoring/health-monitor.d.ts +22 -0
  292. package/dist/monitoring/health-monitor.d.ts.map +1 -0
  293. package/dist/monitoring/health-monitor.js +142 -0
  294. package/dist/monitoring/index.d.ts +14 -0
  295. package/dist/monitoring/index.d.ts.map +1 -0
  296. package/dist/monitoring/index.js +17 -0
  297. package/dist/monitoring/process-registry.d.ts +97 -0
  298. package/dist/monitoring/process-registry.d.ts.map +1 -0
  299. package/dist/monitoring/process-registry.js +222 -0
  300. package/dist/monitoring/query-monitor.d.ts +153 -0
  301. package/dist/monitoring/query-monitor.d.ts.map +1 -0
  302. package/dist/monitoring/query-monitor.js +209 -0
  303. package/dist/monitoring/types.d.ts +231 -0
  304. package/dist/monitoring/types.d.ts.map +1 -0
  305. package/dist/monitoring/types.js +42 -0
  306. package/dist/monitoring/zombie-detector.d.ts +81 -0
  307. package/dist/monitoring/zombie-detector.d.ts.map +1 -0
  308. package/dist/monitoring/zombie-detector.js +236 -0
  309. package/dist/nextjs/index.d.ts +4 -0
  310. package/dist/nextjs/index.d.ts.map +1 -0
  311. package/dist/nextjs/index.js +3 -0
  312. package/dist/nextjs/utilities.d.ts +5 -0
  313. package/dist/nextjs/utilities.d.ts.map +1 -0
  314. package/dist/nextjs/utilities.js +16 -0
  315. package/dist/nextjs/withRevealUI.d.ts +20 -0
  316. package/dist/nextjs/withRevealUI.d.ts.map +1 -0
  317. package/dist/nextjs/withRevealUI.js +181 -0
  318. package/dist/observability/alerts.d.ts +138 -0
  319. package/dist/observability/alerts.d.ts.map +1 -0
  320. package/dist/observability/alerts.js +389 -0
  321. package/dist/observability/health-check.d.ts +91 -0
  322. package/dist/observability/health-check.d.ts.map +1 -0
  323. package/dist/observability/health-check.js +345 -0
  324. package/dist/observability/index.d.ts +12 -0
  325. package/dist/observability/index.d.ts.map +1 -0
  326. package/dist/observability/index.js +11 -0
  327. package/dist/observability/logger.d.ts +47 -0
  328. package/dist/observability/logger.d.ts.map +1 -0
  329. package/dist/observability/logger.js +140 -0
  330. package/dist/observability/metrics.d.ts +205 -0
  331. package/dist/observability/metrics.d.ts.map +1 -0
  332. package/dist/observability/metrics.js +429 -0
  333. package/dist/observability/tracing.d.ts +149 -0
  334. package/dist/observability/tracing.d.ts.map +1 -0
  335. package/dist/observability/tracing.js +380 -0
  336. package/dist/plugins/form-builder.d.ts +115 -0
  337. package/dist/plugins/form-builder.d.ts.map +1 -0
  338. package/dist/plugins/form-builder.js +239 -0
  339. package/dist/plugins/index.d.ts +5 -0
  340. package/dist/plugins/index.d.ts.map +1 -0
  341. package/dist/plugins/index.js +4 -0
  342. package/dist/plugins/nested-docs.d.ts +12 -0
  343. package/dist/plugins/nested-docs.d.ts.map +1 -0
  344. package/dist/plugins/nested-docs.js +111 -0
  345. package/dist/plugins/redirects.d.ts +17 -0
  346. package/dist/plugins/redirects.d.ts.map +1 -0
  347. package/dist/plugins/redirects.js +62 -0
  348. package/dist/queries/index.d.ts +2 -0
  349. package/dist/queries/index.d.ts.map +1 -0
  350. package/dist/queries/index.js +1 -0
  351. package/dist/queries/queryBuilder.d.ts +47 -0
  352. package/dist/queries/queryBuilder.d.ts.map +1 -0
  353. package/dist/queries/queryBuilder.js +276 -0
  354. package/dist/relationships/analyzer.d.ts +39 -0
  355. package/dist/relationships/analyzer.d.ts.map +1 -0
  356. package/dist/relationships/analyzer.js +135 -0
  357. package/dist/relationships/index.d.ts +3 -0
  358. package/dist/relationships/index.d.ts.map +1 -0
  359. package/dist/relationships/index.js +2 -0
  360. package/dist/relationships/populate-core.d.ts +57 -0
  361. package/dist/relationships/populate-core.d.ts.map +1 -0
  362. package/dist/relationships/populate-core.js +116 -0
  363. package/dist/relationships/populate-helpers.d.ts +58 -0
  364. package/dist/relationships/populate-helpers.d.ts.map +1 -0
  365. package/dist/relationships/populate-helpers.js +82 -0
  366. package/dist/relationships/population.d.ts +34 -0
  367. package/dist/relationships/population.d.ts.map +1 -0
  368. package/dist/relationships/population.js +193 -0
  369. package/dist/revealui.d.ts +46 -0
  370. package/dist/revealui.d.ts.map +1 -0
  371. package/dist/revealui.js +92 -0
  372. package/dist/richtext/exports/client/rcc.d.ts +37 -0
  373. package/dist/richtext/exports/client/rcc.d.ts.map +1 -0
  374. package/dist/richtext/exports/client/rcc.js +182 -0
  375. package/dist/richtext/exports/server/rsc.d.ts +134 -0
  376. package/dist/richtext/exports/server/rsc.d.ts.map +1 -0
  377. package/dist/richtext/exports/server/rsc.js +344 -0
  378. package/dist/richtext/index.d.ts +161 -0
  379. package/dist/richtext/index.d.ts.map +1 -0
  380. package/dist/richtext/index.js +243 -0
  381. package/dist/richtext/lexical.d.ts +23 -0
  382. package/dist/richtext/lexical.d.ts.map +1 -0
  383. package/dist/richtext/lexical.js +35 -0
  384. package/dist/security/index.d.ts +6 -0
  385. package/dist/security/index.d.ts.map +1 -0
  386. package/dist/security/index.js +5 -0
  387. package/dist/server/index.d.ts +21 -0
  388. package/dist/server/index.d.ts.map +1 -0
  389. package/dist/server/index.js +28 -0
  390. package/dist/server/renderPage.d.ts +69 -0
  391. package/dist/server/renderPage.d.ts.map +1 -0
  392. package/dist/server/renderPage.js +109 -0
  393. package/dist/storage/index.d.ts +2 -0
  394. package/dist/storage/index.d.ts.map +1 -0
  395. package/dist/storage/index.js +2 -0
  396. package/dist/storage/vercel-blob.d.ts +17 -0
  397. package/dist/storage/vercel-blob.d.ts.map +1 -0
  398. package/dist/storage/vercel-blob.js +86 -0
  399. package/dist/translations/index.d.ts +17 -0
  400. package/dist/translations/index.d.ts.map +1 -0
  401. package/dist/translations/index.js +1 -0
  402. package/dist/types/access.d.ts +67 -0
  403. package/dist/types/access.d.ts.map +1 -0
  404. package/dist/types/access.js +8 -0
  405. package/dist/types/api.d.ts +57 -0
  406. package/dist/types/api.d.ts.map +1 -0
  407. package/dist/types/api.js +8 -0
  408. package/dist/types/cms.d.ts +8 -0
  409. package/dist/types/cms.d.ts.map +1 -0
  410. package/dist/types/cms.js +6 -0
  411. package/dist/types/config.d.ts +152 -0
  412. package/dist/types/config.d.ts.map +1 -0
  413. package/dist/types/config.js +9 -0
  414. package/dist/types/core.d.ts +11 -0
  415. package/dist/types/core.d.ts.map +1 -0
  416. package/dist/types/core.js +9 -0
  417. package/dist/types/extensions.d.ts +116 -0
  418. package/dist/types/extensions.d.ts.map +1 -0
  419. package/dist/types/extensions.js +8 -0
  420. package/dist/types/frontend.d.ts +53 -0
  421. package/dist/types/frontend.d.ts.map +1 -0
  422. package/dist/types/frontend.js +7 -0
  423. package/dist/types/generated.d.ts +12 -0
  424. package/dist/types/generated.d.ts.map +1 -0
  425. package/dist/types/generated.js +10 -0
  426. package/dist/types/hooks.d.ts +53 -0
  427. package/dist/types/hooks.d.ts.map +1 -0
  428. package/dist/types/hooks.js +8 -0
  429. package/dist/types/index.d.ts +49 -0
  430. package/dist/types/index.d.ts.map +1 -0
  431. package/dist/types/index.js +61 -0
  432. package/dist/types/interfaces/app.d.ts +50 -0
  433. package/dist/types/interfaces/app.d.ts.map +1 -0
  434. package/dist/types/interfaces/app.js +5 -0
  435. package/dist/types/jobs.d.ts +112 -0
  436. package/dist/types/jobs.d.ts.map +1 -0
  437. package/dist/types/jobs.js +7 -0
  438. package/dist/types/legacy.d.ts +147 -0
  439. package/dist/types/legacy.d.ts.map +1 -0
  440. package/dist/types/legacy.js +8 -0
  441. package/dist/types/plugins.d.ts +17 -0
  442. package/dist/types/plugins.d.ts.map +1 -0
  443. package/dist/types/plugins.js +8 -0
  444. package/dist/types/query.d.ts +99 -0
  445. package/dist/types/query.d.ts.map +1 -0
  446. package/dist/types/query.js +24 -0
  447. package/dist/types/request.d.ts +40 -0
  448. package/dist/types/request.d.ts.map +1 -0
  449. package/dist/types/request.js +8 -0
  450. package/dist/types/richtext.d.ts +23 -0
  451. package/dist/types/richtext.d.ts.map +1 -0
  452. package/dist/types/richtext.js +8 -0
  453. package/dist/types/runtime.d.ts +275 -0
  454. package/dist/types/runtime.d.ts.map +1 -0
  455. package/dist/types/runtime.js +9 -0
  456. package/dist/types/schema.d.ts +9 -0
  457. package/dist/types/schema.d.ts.map +1 -0
  458. package/dist/types/schema.js +7 -0
  459. package/dist/types/user.d.ts +48 -0
  460. package/dist/types/user.d.ts.map +1 -0
  461. package/dist/types/user.js +8 -0
  462. package/dist/utils/access-conversion.d.ts +17 -0
  463. package/dist/utils/access-conversion.d.ts.map +1 -0
  464. package/dist/utils/access-conversion.js +96 -0
  465. package/dist/utils/api-wrapper.d.ts +63 -0
  466. package/dist/utils/api-wrapper.d.ts.map +1 -0
  467. package/dist/utils/api-wrapper.js +151 -0
  468. package/dist/utils/block-conversion.d.ts +21 -0
  469. package/dist/utils/block-conversion.d.ts.map +1 -0
  470. package/dist/utils/block-conversion.js +109 -0
  471. package/dist/utils/cache.d.ts +86 -0
  472. package/dist/utils/cache.d.ts.map +1 -0
  473. package/dist/utils/cache.js +154 -0
  474. package/dist/utils/deep-clone.d.ts +25 -0
  475. package/dist/utils/deep-clone.d.ts.map +1 -0
  476. package/dist/utils/deep-clone.js +114 -0
  477. package/dist/utils/error-responses.d.ts +57 -0
  478. package/dist/utils/error-responses.d.ts.map +1 -0
  479. package/dist/utils/error-responses.js +95 -0
  480. package/dist/utils/errors.d.ts +133 -0
  481. package/dist/utils/errors.d.ts.map +1 -0
  482. package/dist/utils/errors.js +500 -0
  483. package/dist/utils/field-conversion.d.ts +40 -0
  484. package/dist/utils/field-conversion.d.ts.map +1 -0
  485. package/dist/utils/field-conversion.js +275 -0
  486. package/dist/utils/flattenResult.d.ts +7 -0
  487. package/dist/utils/flattenResult.d.ts.map +1 -0
  488. package/dist/utils/flattenResult.js +22 -0
  489. package/dist/utils/getBlockSelect.d.ts +12 -0
  490. package/dist/utils/getBlockSelect.d.ts.map +1 -0
  491. package/dist/utils/getBlockSelect.js +12 -0
  492. package/dist/utils/getSelectMode.d.ts +8 -0
  493. package/dist/utils/getSelectMode.d.ts.map +1 -0
  494. package/dist/utils/getSelectMode.js +21 -0
  495. package/dist/utils/isValidID.d.ts +5 -0
  496. package/dist/utils/isValidID.d.ts.map +1 -0
  497. package/dist/utils/isValidID.js +13 -0
  498. package/dist/utils/json-parsing.d.ts +48 -0
  499. package/dist/utils/json-parsing.d.ts.map +1 -0
  500. package/dist/utils/json-parsing.js +130 -0
  501. package/dist/utils/logger-client.d.ts +32 -0
  502. package/dist/utils/logger-client.d.ts.map +1 -0
  503. package/dist/utils/logger-client.js +55 -0
  504. package/dist/utils/logger-server.d.ts +32 -0
  505. package/dist/utils/logger-server.d.ts.map +1 -0
  506. package/dist/utils/logger-server.js +68 -0
  507. package/dist/utils/logger.d.ts +14 -0
  508. package/dist/utils/logger.d.ts.map +1 -0
  509. package/dist/utils/logger.js +12 -0
  510. package/dist/utils/request-context.d.ts +143 -0
  511. package/dist/utils/request-context.d.ts.map +1 -0
  512. package/dist/utils/request-context.js +168 -0
  513. package/dist/utils/stripUnselectedFields.d.ts +10 -0
  514. package/dist/utils/stripUnselectedFields.d.ts.map +1 -0
  515. package/dist/utils/stripUnselectedFields.js +20 -0
  516. package/dist/utils/type-guards.d.ts +33 -0
  517. package/dist/utils/type-guards.d.ts.map +1 -0
  518. package/dist/utils/type-guards.js +63 -0
  519. package/dist/utils/user.d.ts +14 -0
  520. package/dist/utils/user.d.ts.map +1 -0
  521. package/dist/utils/user.js +15 -0
  522. package/package.json +302 -0
@@ -0,0 +1,500 @@
1
+ /**
2
+ * Error Handling Utilities
3
+ *
4
+ * Standardized error handling for RevealUI framework.
5
+ */
6
+ import { logger } from './logger.js';
7
+ /**
8
+ * Application Error
9
+ * Use for business logic failures, validation failures, expected errors
10
+ */
11
+ export class ApplicationError extends Error {
12
+ code;
13
+ statusCode;
14
+ context;
15
+ constructor(message, code, statusCode = 500, context) {
16
+ super(message);
17
+ this.code = code;
18
+ this.statusCode = statusCode;
19
+ this.context = context;
20
+ this.name = 'ApplicationError';
21
+ Error.captureStackTrace(this, ApplicationError);
22
+ }
23
+ }
24
+ /**
25
+ * Validation Error
26
+ * Use for input validation failures, schema validation failures
27
+ */
28
+ export class ValidationError extends Error {
29
+ field;
30
+ value;
31
+ context;
32
+ constructor(message, field, value, context) {
33
+ super(message);
34
+ this.field = field;
35
+ this.value = value;
36
+ this.context = context;
37
+ this.name = 'ValidationError';
38
+ Error.captureStackTrace(this, ValidationError);
39
+ }
40
+ }
41
+ /**
42
+ * Database Error
43
+ * Use for database operation failures with Postgres error code parsing
44
+ */
45
+ export class DatabaseError extends Error {
46
+ code;
47
+ statusCode;
48
+ pgCode;
49
+ constraint;
50
+ table;
51
+ column;
52
+ context;
53
+ constructor(message, code, statusCode = 500, pgCode, constraint, table, column, context) {
54
+ super(message);
55
+ this.code = code;
56
+ this.statusCode = statusCode;
57
+ this.pgCode = pgCode;
58
+ this.constraint = constraint;
59
+ this.table = table;
60
+ this.column = column;
61
+ this.context = context;
62
+ this.name = 'DatabaseError';
63
+ Error.captureStackTrace(this, DatabaseError);
64
+ }
65
+ }
66
+ /**
67
+ * Authentication Error
68
+ * Use for failed login, expired sessions, invalid tokens
69
+ */
70
+ export class AuthenticationError extends ApplicationError {
71
+ constructor(message = 'Authentication required', context) {
72
+ super(message, 'AUTHENTICATION_ERROR', 401, context);
73
+ this.name = 'AuthenticationError';
74
+ Error.captureStackTrace(this, AuthenticationError);
75
+ }
76
+ }
77
+ /**
78
+ * Authorization Error
79
+ * Use for insufficient permissions, forbidden access
80
+ */
81
+ export class AuthorizationError extends ApplicationError {
82
+ constructor(message = 'Insufficient permissions', context) {
83
+ super(message, 'AUTHORIZATION_ERROR', 403, context);
84
+ this.name = 'AuthorizationError';
85
+ Error.captureStackTrace(this, AuthorizationError);
86
+ }
87
+ }
88
+ /**
89
+ * Not Found Error
90
+ * Use for missing resources (users, posts, pages, etc.)
91
+ */
92
+ export class NotFoundError extends ApplicationError {
93
+ constructor(resource, identifier, context) {
94
+ const message = identifier ? `${resource} not found: ${identifier}` : `${resource} not found`;
95
+ super(message, 'NOT_FOUND', 404, { resource, identifier, ...context });
96
+ this.name = 'NotFoundError';
97
+ Error.captureStackTrace(this, NotFoundError);
98
+ }
99
+ }
100
+ /**
101
+ * Conflict Error
102
+ * Use for duplicate resources, concurrent modification conflicts
103
+ */
104
+ export class ConflictError extends ApplicationError {
105
+ constructor(message = 'Resource conflict', context) {
106
+ super(message, 'CONFLICT', 409, context);
107
+ this.name = 'ConflictError';
108
+ Error.captureStackTrace(this, ConflictError);
109
+ }
110
+ }
111
+ /**
112
+ * Rate Limit Error
113
+ * Use for too many requests, throttling
114
+ */
115
+ export class RateLimitError extends ApplicationError {
116
+ retryAfterMs;
117
+ constructor(message = 'Too many requests', retryAfterMs, context) {
118
+ super(message, 'RATE_LIMITED', 429, { retryAfterMs, ...context });
119
+ this.retryAfterMs = retryAfterMs;
120
+ this.name = 'RateLimitError';
121
+ Error.captureStackTrace(this, RateLimitError);
122
+ }
123
+ }
124
+ /**
125
+ * Postgres Error Codes
126
+ * Reference: https://www.postgresql.org/docs/current/errcodes-appendix.html
127
+ */
128
+ export const PostgresErrorCode = {
129
+ // Class 23 - Integrity Constraint Violation
130
+ UNIQUE_VIOLATION: '23505',
131
+ FOREIGN_KEY_VIOLATION: '23503',
132
+ NOT_NULL_VIOLATION: '23502',
133
+ CHECK_VIOLATION: '23514',
134
+ // Class 42 - Syntax Error or Access Rule Violation
135
+ UNDEFINED_TABLE: '42P01',
136
+ UNDEFINED_COLUMN: '42703',
137
+ DUPLICATE_TABLE: '42P07',
138
+ DUPLICATE_COLUMN: '42701',
139
+ // Class 40 - Transaction Rollback
140
+ DEADLOCK_DETECTED: '40P01',
141
+ SERIALIZATION_FAILURE: '40001',
142
+ // Class 57 - Operator Intervention
143
+ QUERY_CANCELED: '57014',
144
+ ADMIN_SHUTDOWN: '57P01',
145
+ // Class 53 - Insufficient Resources
146
+ DISK_FULL: '53100',
147
+ OUT_OF_MEMORY: '53200',
148
+ TOO_MANY_CONNECTIONS: '53300',
149
+ // Class 08 - Connection Exception
150
+ CONNECTION_EXCEPTION: '08000',
151
+ CONNECTION_FAILURE: '08006',
152
+ CONNECTION_DOES_NOT_EXIST: '08003',
153
+ // Class 25 - Invalid Transaction State
154
+ INVALID_TRANSACTION_STATE: '25000',
155
+ ACTIVE_SQL_TRANSACTION: '25001',
156
+ };
157
+ /**
158
+ * Extract Postgres error information from an error object
159
+ */
160
+ function parsePostgresError(error) {
161
+ // Handle Postgres/pg library errors
162
+ if (error && typeof error === 'object' && 'code' in error && typeof error.code === 'string') {
163
+ const pgError = error;
164
+ return {
165
+ pgCode: pgError.code,
166
+ constraint: pgError.constraint,
167
+ table: pgError.table,
168
+ column: pgError.column,
169
+ detail: pgError.detail,
170
+ };
171
+ }
172
+ return {};
173
+ }
174
+ /**
175
+ * Handle and log error in API routes
176
+ *
177
+ * @param error - The error to handle
178
+ * @param context - Additional context to log
179
+ * @returns User-friendly error message
180
+ */
181
+ export function handleApiError(error, context) {
182
+ if (error instanceof DatabaseError) {
183
+ logger.error('Database error in API', {
184
+ message: error.message,
185
+ code: error.code,
186
+ statusCode: error.statusCode,
187
+ pgCode: error.pgCode,
188
+ constraint: error.constraint,
189
+ table: error.table,
190
+ column: error.column,
191
+ ...error.context,
192
+ ...context,
193
+ });
194
+ return {
195
+ message: error.message,
196
+ statusCode: error.statusCode,
197
+ code: error.code,
198
+ retryable: error.context?.retryable,
199
+ };
200
+ }
201
+ if (error instanceof RateLimitError) {
202
+ logger.warn('Rate limit exceeded', {
203
+ message: error.message,
204
+ retryAfterMs: error.retryAfterMs,
205
+ ...error.context,
206
+ ...context,
207
+ });
208
+ return {
209
+ message: error.message,
210
+ statusCode: 429,
211
+ code: error.code,
212
+ retryable: true,
213
+ };
214
+ }
215
+ if (error instanceof AuthenticationError) {
216
+ logger.warn('Authentication failed', {
217
+ message: error.message,
218
+ ...error.context,
219
+ ...context,
220
+ });
221
+ return {
222
+ message: error.message,
223
+ statusCode: 401,
224
+ code: error.code,
225
+ };
226
+ }
227
+ if (error instanceof AuthorizationError) {
228
+ logger.warn('Authorization denied', {
229
+ message: error.message,
230
+ ...error.context,
231
+ ...context,
232
+ });
233
+ return {
234
+ message: error.message,
235
+ statusCode: 403,
236
+ code: error.code,
237
+ };
238
+ }
239
+ if (error instanceof NotFoundError) {
240
+ return {
241
+ message: error.message,
242
+ statusCode: 404,
243
+ code: error.code,
244
+ };
245
+ }
246
+ if (error instanceof ApplicationError) {
247
+ logger.error('Application error', {
248
+ message: error.message,
249
+ code: error.code,
250
+ statusCode: error.statusCode,
251
+ ...error.context,
252
+ ...context,
253
+ });
254
+ return {
255
+ message: error.message,
256
+ statusCode: error.statusCode,
257
+ code: error.code,
258
+ };
259
+ }
260
+ if (error instanceof ValidationError) {
261
+ logger.warn('Validation error', {
262
+ message: error.message,
263
+ field: error.field,
264
+ ...error.context,
265
+ ...context,
266
+ });
267
+ return {
268
+ message: error.message,
269
+ statusCode: 400,
270
+ code: 'VALIDATION_ERROR',
271
+ };
272
+ }
273
+ // Unknown error - log with full details, return generic message
274
+ const err = error instanceof Error ? error : new Error(String(error));
275
+ // Always use logger - it's always available from the same package
276
+ logger.error('Unexpected error', { error: err.message, stack: err.stack });
277
+ return {
278
+ message: 'An error occurred',
279
+ statusCode: 500,
280
+ };
281
+ }
282
+ /**
283
+ * Handle database errors with Postgres error code parsing
284
+ *
285
+ * @param error - Database error
286
+ * @param operation - Operation being performed (e.g., 'insert user', 'update order')
287
+ * @param context - Additional context (e.g., { userId: '123', table: 'users' })
288
+ * @returns Never - always throws a DatabaseError
289
+ *
290
+ * @example
291
+ * ```typescript
292
+ * try {
293
+ * await db.insert(users).values({ email: 'existing@example.com' })
294
+ * } catch (error) {
295
+ * handleDatabaseError(error, 'insert user', { email: 'existing@example.com' })
296
+ * }
297
+ * ```
298
+ */
299
+ export function handleDatabaseError(error, operation, context) {
300
+ const pgError = parsePostgresError(error);
301
+ const errorMessage = error instanceof Error ? error.message : String(error);
302
+ // Parse Postgres error codes for specific error types
303
+ if (pgError.pgCode) {
304
+ switch (pgError.pgCode) {
305
+ // Unique constraint violation
306
+ case PostgresErrorCode.UNIQUE_VIOLATION: {
307
+ const field = pgError.constraint?.replace(/_/g, ' ') || 'field';
308
+ const message = `Duplicate ${field}: this value already exists`;
309
+ logger.warn('Unique constraint violation', {
310
+ operation,
311
+ constraint: pgError.constraint,
312
+ table: pgError.table,
313
+ detail: pgError.detail,
314
+ ...context,
315
+ });
316
+ throw new DatabaseError(message, 'UNIQUE_VIOLATION', 409, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
317
+ operation,
318
+ detail: pgError.detail,
319
+ ...context,
320
+ });
321
+ }
322
+ // Foreign key constraint violation
323
+ case PostgresErrorCode.FOREIGN_KEY_VIOLATION: {
324
+ const constraint = pgError.constraint?.replace(/_/g, ' ') || 'reference';
325
+ const message = `Invalid ${constraint}: referenced record does not exist`;
326
+ logger.warn('Foreign key violation', {
327
+ operation,
328
+ constraint: pgError.constraint,
329
+ table: pgError.table,
330
+ detail: pgError.detail,
331
+ ...context,
332
+ });
333
+ throw new DatabaseError(message, 'FOREIGN_KEY_VIOLATION', 400, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
334
+ operation,
335
+ detail: pgError.detail,
336
+ ...context,
337
+ });
338
+ }
339
+ // Not null constraint violation
340
+ case PostgresErrorCode.NOT_NULL_VIOLATION: {
341
+ const field = pgError.column || 'field';
342
+ const message = `Missing required field: ${field} cannot be null`;
343
+ logger.warn('Not null violation', {
344
+ operation,
345
+ column: pgError.column,
346
+ table: pgError.table,
347
+ ...context,
348
+ });
349
+ throw new DatabaseError(message, 'NOT_NULL_VIOLATION', 400, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
350
+ operation,
351
+ ...context,
352
+ });
353
+ }
354
+ // Check constraint violation
355
+ case PostgresErrorCode.CHECK_VIOLATION: {
356
+ const constraint = pgError.constraint?.replace(/_/g, ' ') || 'constraint';
357
+ const message = `Validation failed: ${constraint} check constraint violated`;
358
+ logger.warn('Check constraint violation', {
359
+ operation,
360
+ constraint: pgError.constraint,
361
+ table: pgError.table,
362
+ detail: pgError.detail,
363
+ ...context,
364
+ });
365
+ throw new DatabaseError(message, 'CHECK_VIOLATION', 400, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
366
+ operation,
367
+ detail: pgError.detail,
368
+ ...context,
369
+ });
370
+ }
371
+ // Deadlock detected
372
+ case PostgresErrorCode.DEADLOCK_DETECTED: {
373
+ const message = 'Database deadlock detected - please retry the operation';
374
+ logger.error('Deadlock detected', {
375
+ operation,
376
+ table: pgError.table,
377
+ ...context,
378
+ });
379
+ throw new DatabaseError(message, 'DEADLOCK_DETECTED', 409, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
380
+ operation,
381
+ retryable: true,
382
+ ...context,
383
+ });
384
+ }
385
+ // Serialization failure (concurrent update conflict)
386
+ case PostgresErrorCode.SERIALIZATION_FAILURE: {
387
+ const message = 'Concurrent update conflict - please retry the operation';
388
+ logger.warn('Serialization failure', {
389
+ operation,
390
+ ...context,
391
+ });
392
+ throw new DatabaseError(message, 'SERIALIZATION_FAILURE', 409, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
393
+ operation,
394
+ retryable: true,
395
+ ...context,
396
+ });
397
+ }
398
+ // Query canceled (timeout)
399
+ case PostgresErrorCode.QUERY_CANCELED: {
400
+ const message = 'Database query timeout - operation took too long';
401
+ logger.error('Query timeout', {
402
+ operation,
403
+ ...context,
404
+ });
405
+ throw new DatabaseError(message, 'QUERY_TIMEOUT', 504, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
406
+ operation,
407
+ ...context,
408
+ });
409
+ }
410
+ // Connection errors
411
+ case PostgresErrorCode.CONNECTION_EXCEPTION:
412
+ case PostgresErrorCode.CONNECTION_FAILURE:
413
+ case PostgresErrorCode.CONNECTION_DOES_NOT_EXIST: {
414
+ const message = 'Database connection error - please try again';
415
+ logger.error('Database connection error', {
416
+ operation,
417
+ pgCode: pgError.pgCode,
418
+ ...context,
419
+ });
420
+ throw new DatabaseError(message, 'CONNECTION_ERROR', 503, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
421
+ operation,
422
+ retryable: true,
423
+ ...context,
424
+ });
425
+ }
426
+ // Resource errors
427
+ case PostgresErrorCode.DISK_FULL:
428
+ case PostgresErrorCode.OUT_OF_MEMORY:
429
+ case PostgresErrorCode.TOO_MANY_CONNECTIONS: {
430
+ const message = 'Database resource limit reached - please try again later';
431
+ logger.error('Database resource error', {
432
+ operation,
433
+ pgCode: pgError.pgCode,
434
+ ...context,
435
+ });
436
+ throw new DatabaseError(message, 'RESOURCE_ERROR', 503, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
437
+ operation,
438
+ retryable: true,
439
+ ...context,
440
+ });
441
+ }
442
+ // Undefined table/column
443
+ case PostgresErrorCode.UNDEFINED_TABLE:
444
+ case PostgresErrorCode.UNDEFINED_COLUMN: {
445
+ const message = 'Database schema error - table or column does not exist';
446
+ logger.error('Schema error', {
447
+ operation,
448
+ pgCode: pgError.pgCode,
449
+ table: pgError.table,
450
+ column: pgError.column,
451
+ ...context,
452
+ });
453
+ throw new DatabaseError(message, 'SCHEMA_ERROR', 500, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
454
+ operation,
455
+ ...context,
456
+ });
457
+ }
458
+ }
459
+ }
460
+ // Fallback: Check error message for common patterns (if no pgCode)
461
+ if (error instanceof Error) {
462
+ if (errorMessage.includes('unique') || errorMessage.includes('duplicate')) {
463
+ logger.warn('Unique violation (message-based)', {
464
+ operation,
465
+ message: errorMessage,
466
+ ...context,
467
+ });
468
+ throw new DatabaseError('Resource already exists', 'UNIQUE_VIOLATION', 409, undefined, undefined, undefined, undefined, { operation, ...context });
469
+ }
470
+ if (errorMessage.includes('foreign key') ||
471
+ errorMessage.includes('violates foreign key constraint')) {
472
+ logger.warn('Foreign key violation (message-based)', {
473
+ operation,
474
+ message: errorMessage,
475
+ ...context,
476
+ });
477
+ throw new DatabaseError('Invalid reference', 'FOREIGN_KEY_VIOLATION', 400, undefined, undefined, undefined, undefined, { operation, ...context });
478
+ }
479
+ if (errorMessage.includes('not found') || errorMessage.includes('does not exist')) {
480
+ logger.warn('Not found (message-based)', { operation, message: errorMessage, ...context });
481
+ throw new DatabaseError('Resource not found', 'NOT_FOUND', 404, undefined, undefined, undefined, undefined, { operation, ...context });
482
+ }
483
+ }
484
+ // Unknown database error - log with full details
485
+ logger.error('Unexpected database error', {
486
+ operation,
487
+ error: errorMessage,
488
+ pgCode: pgError.pgCode,
489
+ constraint: pgError.constraint,
490
+ table: pgError.table,
491
+ column: pgError.column,
492
+ detail: pgError.detail,
493
+ ...context,
494
+ });
495
+ throw new DatabaseError('Database operation failed', 'DATABASE_ERROR', 500, pgError.pgCode, pgError.constraint, pgError.table, pgError.column, {
496
+ operation,
497
+ originalError: errorMessage,
498
+ ...context,
499
+ });
500
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Field Conversion Utilities
3
+ *
4
+ * Converts between standard Field types and RevealUIField types.
5
+ *
6
+ * NOTE ON TYPE ASSERTIONS:
7
+ * The type assertions in this file are necessary due to TypeScript's limitation
8
+ * with narrowing separate variables. Here's why:
9
+ *
10
+ * 1. `baseField` is initialized as `RevealUIField` (a union type) or `Field` (a union type)
11
+ * 2. TypeScript can narrow `field` or `revealUIField` in conditionals/switches
12
+ * 3. However, TypeScript CANNOT narrow `baseField` because it's a separate variable
13
+ * that was explicitly typed, not derived from the narrowed value
14
+ *
15
+ * The assertions (`as RevealUITextField`, etc.) are used to tell TypeScript that
16
+ * after type narrowing checks, we're assigning type-specific properties that exist
17
+ * on the narrowed type but not on the base union type.
18
+ *
19
+ * Alternative approaches considered:
20
+ * - Returning different object literals per type: Would work but duplicates code
21
+ * - Using type predicates on baseField: Not possible without runtime checks
22
+ * - Restructuring to avoid mutations: Would require significant refactoring
23
+ *
24
+ * These assertions are safe because they're guarded by runtime type checks
25
+ * (isTextField, isArrayField, switch on field.type).
26
+ */
27
+ import type { Field, RevealUIField } from '../types/index.js';
28
+ export declare function convertToRevealUIField(field: Field): RevealUIField;
29
+ export declare function convertFromRevealUIField(revealUIField: RevealUIField): Field;
30
+ export declare function enhanceFieldWithRevealUI(field: Field, revealUIOptions?: RevealUIField['revealUI']): RevealUIField;
31
+ interface RevealUIValidationContext {
32
+ data: Record<string, unknown>;
33
+ siblingData: Record<string, unknown>;
34
+ user?: import('@revealui/contracts').BaseRevealUser | null;
35
+ operation: 'create' | 'update';
36
+ tenant?: string;
37
+ }
38
+ export declare function validateRevealUIField(field: RevealUIField, value: unknown, context: RevealUIValidationContext): string | true;
39
+ export {};
40
+ //# sourceMappingURL=field-conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-conversion.d.ts","sourceRoot":"","sources":["../../src/utils/field-conversion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAGV,KAAK,EACL,aAAa,EAGd,MAAM,mBAAmB,CAAC;AAoB3B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CA6ElE;AAGD,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,KAAK,CAqE5E;AAGD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,eAAe,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAC1C,aAAa,CAWf;AAGD,UAAU,yBAAyB;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,OAAO,qBAAqB,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,yBAAyB,GACjC,MAAM,GAAG,IAAI,CAqFf"}