@revealui/core 0.0.1-pre.4 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/LICENSE +22 -202
  2. package/README.md +108 -152
  3. package/dist/api/compression.d.ts +83 -0
  4. package/dist/api/compression.d.ts.map +1 -0
  5. package/dist/api/compression.js +233 -0
  6. package/dist/api/payload-optimization.d.ts +138 -0
  7. package/dist/api/payload-optimization.d.ts.map +1 -0
  8. package/dist/api/payload-optimization.js +320 -0
  9. package/dist/api/rate-limit.d.ts +113 -0
  10. package/dist/api/rate-limit.d.ts.map +1 -0
  11. package/dist/api/rate-limit.js +316 -0
  12. package/dist/api/response-cache.d.ts +125 -0
  13. package/dist/api/response-cache.d.ts.map +1 -0
  14. package/dist/api/response-cache.js +335 -0
  15. package/dist/api/rest.d.ts +54 -0
  16. package/dist/api/rest.d.ts.map +1 -0
  17. package/dist/api/rest.js +464 -0
  18. package/dist/auth/access.d.ts +25 -0
  19. package/dist/auth/access.d.ts.map +1 -0
  20. package/dist/auth/access.js +20 -0
  21. package/dist/auth/index.d.ts +2 -0
  22. package/dist/auth/index.d.ts.map +1 -0
  23. package/dist/auth/index.js +2 -0
  24. package/dist/cache/query-cache.d.ts +98 -0
  25. package/dist/cache/query-cache.d.ts.map +1 -0
  26. package/dist/cache/query-cache.js +260 -0
  27. package/dist/caching/app-cache.d.ts +237 -0
  28. package/dist/caching/app-cache.d.ts.map +1 -0
  29. package/dist/caching/app-cache.js +430 -0
  30. package/dist/caching/cdn-config.d.ts +155 -0
  31. package/dist/caching/cdn-config.d.ts.map +1 -0
  32. package/dist/caching/cdn-config.js +411 -0
  33. package/dist/caching/edge-cache.d.ts +177 -0
  34. package/dist/caching/edge-cache.d.ts.map +1 -0
  35. package/dist/caching/edge-cache.js +385 -0
  36. package/dist/caching/service-worker.d.ts +154 -0
  37. package/dist/caching/service-worker.d.ts.map +1 -0
  38. package/dist/caching/service-worker.js +437 -0
  39. package/dist/client/admin/RichText.d.ts +12 -0
  40. package/dist/client/admin/RichText.d.ts.map +1 -0
  41. package/dist/client/admin/RichText.js +5 -0
  42. package/dist/client/admin/components/AdminDashboard.d.ts +7 -0
  43. package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -0
  44. package/dist/client/admin/components/AdminDashboard.js +318 -0
  45. package/dist/client/admin/components/CollectionList.d.ts +16 -0
  46. package/dist/client/admin/components/CollectionList.d.ts.map +1 -0
  47. package/dist/client/admin/components/CollectionList.js +67 -0
  48. package/dist/client/admin/components/DocumentForm.d.ts +11 -0
  49. package/dist/client/admin/components/DocumentForm.d.ts.map +1 -0
  50. package/dist/client/admin/components/DocumentForm.js +99 -0
  51. package/dist/client/admin/components/GlobalForm.d.ts +11 -0
  52. package/dist/client/admin/components/GlobalForm.d.ts.map +1 -0
  53. package/dist/client/admin/components/GlobalForm.js +74 -0
  54. package/dist/client/admin/i18n/en.d.ts +25 -0
  55. package/dist/client/admin/i18n/en.d.ts.map +1 -0
  56. package/dist/client/admin/i18n/en.js +25 -0
  57. package/dist/client/admin/index.d.ts +10 -0
  58. package/dist/client/admin/index.d.ts.map +1 -0
  59. package/dist/client/admin/index.js +10 -0
  60. package/dist/client/admin/layout.d.ts +10 -0
  61. package/dist/client/admin/layout.d.ts.map +1 -0
  62. package/dist/client/admin/layout.js +6 -0
  63. package/dist/client/admin/page.d.ts +38 -0
  64. package/dist/client/admin/page.d.ts.map +1 -0
  65. package/dist/client/admin/page.js +15 -0
  66. package/dist/client/admin/utils/apiClient.d.ts +110 -0
  67. package/dist/client/admin/utils/apiClient.d.ts.map +1 -0
  68. package/dist/client/admin/utils/apiClient.js +220 -0
  69. package/dist/client/admin/utils/auth.d.ts +23 -0
  70. package/dist/client/admin/utils/auth.d.ts.map +1 -0
  71. package/dist/client/admin/utils/auth.js +52 -0
  72. package/dist/client/admin/utils/index.d.ts +6 -0
  73. package/dist/client/admin/utils/index.d.ts.map +1 -0
  74. package/dist/client/admin/utils/index.js +5 -0
  75. package/dist/client/admin/utils/serializeConfig.d.ts +7 -0
  76. package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -0
  77. package/dist/client/admin/utils/serializeConfig.js +35 -0
  78. package/dist/client/hooks.d.ts +18 -0
  79. package/dist/client/hooks.d.ts.map +1 -0
  80. package/dist/client/hooks.js +29 -0
  81. package/dist/client/http/client.d.ts +15 -0
  82. package/dist/client/http/client.d.ts.map +1 -0
  83. package/dist/client/http/client.js +49 -0
  84. package/dist/client/http/fetchBanner.d.ts +18 -0
  85. package/dist/client/http/fetchBanner.d.ts.map +1 -0
  86. package/dist/client/http/fetchBanner.js +44 -0
  87. package/dist/client/http/fetchCard.d.ts +18 -0
  88. package/dist/client/http/fetchCard.d.ts.map +1 -0
  89. package/dist/client/http/fetchCard.js +46 -0
  90. package/dist/client/http/fetchEvents.d.ts +18 -0
  91. package/dist/client/http/fetchEvents.d.ts.map +1 -0
  92. package/dist/client/http/fetchEvents.js +44 -0
  93. package/dist/client/http/fetchHero.d.ts +17 -0
  94. package/dist/client/http/fetchHero.d.ts.map +1 -0
  95. package/dist/client/http/fetchHero.js +55 -0
  96. package/dist/client/http/fetchMainInfos.d.ts +17 -0
  97. package/dist/client/http/fetchMainInfos.d.ts.map +1 -0
  98. package/dist/client/http/fetchMainInfos.js +44 -0
  99. package/dist/client/http/fetchVideos.d.ts +13 -0
  100. package/dist/client/http/fetchVideos.d.ts.map +1 -0
  101. package/dist/client/http/fetchVideos.js +36 -0
  102. package/dist/client/http/index.d.ts +19 -0
  103. package/dist/client/http/index.d.ts.map +1 -0
  104. package/dist/client/http/index.js +11 -0
  105. package/dist/client/index.d.ts +11 -0
  106. package/dist/client/index.d.ts.map +1 -0
  107. package/dist/client/index.js +13 -0
  108. package/dist/client/richtext/RichTextEditor.d.ts +48 -0
  109. package/dist/client/richtext/RichTextEditor.d.ts.map +1 -0
  110. package/dist/client/richtext/RichTextEditor.js +360 -0
  111. package/dist/client/richtext/components/ImageNodeComponent.d.ts +9 -0
  112. package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -0
  113. package/dist/client/richtext/components/ImageNodeComponent.js +99 -0
  114. package/dist/client/richtext/components/ImageUploadButton.d.ts +11 -0
  115. package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -0
  116. package/dist/client/richtext/components/ImageUploadButton.js +103 -0
  117. package/dist/client/richtext/index.d.ts +92 -0
  118. package/dist/client/richtext/index.d.ts.map +1 -0
  119. package/dist/client/richtext/index.js +74 -0
  120. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts +20 -0
  121. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -0
  122. package/dist/client/richtext/nodes/DecoratorBlockNode.js +29 -0
  123. package/dist/client/richtext/nodes/ImageNode.d.ts +51 -0
  124. package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -0
  125. package/dist/client/richtext/nodes/ImageNode.js +95 -0
  126. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts +13 -0
  127. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -0
  128. package/dist/client/richtext/plugins/CollaborationPlugin.js +8 -0
  129. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts +4 -0
  130. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -0
  131. package/dist/client/richtext/plugins/CursorsOverlayPlugin.js +50 -0
  132. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts +7 -0
  133. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -0
  134. package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +248 -0
  135. package/dist/client/richtext/plugins/ImagePlugin.d.ts +3 -0
  136. package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -0
  137. package/dist/client/richtext/plugins/ImagePlugin.js +73 -0
  138. package/dist/client/richtext/plugins/PastePlugin.d.ts +2 -0
  139. package/dist/client/richtext/plugins/PastePlugin.d.ts.map +1 -0
  140. package/dist/client/richtext/plugins/PastePlugin.js +36 -0
  141. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts +8 -0
  142. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -0
  143. package/dist/client/richtext/plugins/ToolbarPlugin.js +204 -0
  144. package/dist/client/ui/index.d.ts +111 -0
  145. package/dist/client/ui/index.d.ts.map +1 -0
  146. package/dist/client/ui/index.js +130 -0
  147. package/dist/collections/CollectionOperations.d.ts +27 -0
  148. package/dist/collections/CollectionOperations.d.ts.map +1 -0
  149. package/dist/collections/CollectionOperations.js +34 -0
  150. package/dist/collections/hooks.d.ts +11 -0
  151. package/dist/collections/hooks.d.ts.map +1 -0
  152. package/dist/collections/hooks.js +35 -0
  153. package/dist/collections/index.d.ts +2 -0
  154. package/dist/collections/index.d.ts.map +1 -0
  155. package/dist/collections/index.js +1 -0
  156. package/dist/collections/operations/create.d.ts +10 -0
  157. package/dist/collections/operations/create.d.ts.map +1 -0
  158. package/dist/collections/operations/create.js +101 -0
  159. package/dist/collections/operations/delete.d.ts +10 -0
  160. package/dist/collections/operations/delete.d.ts.map +1 -0
  161. package/dist/collections/operations/delete.js +16 -0
  162. package/dist/collections/operations/fieldHooks.d.ts +21 -0
  163. package/dist/collections/operations/fieldHooks.d.ts.map +1 -0
  164. package/dist/collections/operations/fieldHooks.js +51 -0
  165. package/dist/collections/operations/find.d.ts +10 -0
  166. package/dist/collections/operations/find.d.ts.map +1 -0
  167. package/dist/collections/operations/find.js +124 -0
  168. package/dist/collections/operations/findById.d.ts +15 -0
  169. package/dist/collections/operations/findById.d.ts.map +1 -0
  170. package/dist/collections/operations/findById.js +59 -0
  171. package/dist/collections/operations/update.d.ts +10 -0
  172. package/dist/collections/operations/update.d.ts.map +1 -0
  173. package/dist/collections/operations/update.js +134 -0
  174. package/dist/config/index.d.ts +9 -0
  175. package/dist/config/index.d.ts.map +1 -0
  176. package/dist/config/index.js +61 -0
  177. package/dist/config/runtime.d.ts +22 -0
  178. package/dist/config/runtime.d.ts.map +1 -0
  179. package/dist/config/runtime.js +32 -0
  180. package/dist/config/utils.d.ts +12 -0
  181. package/dist/config/utils.d.ts.map +1 -0
  182. package/dist/config/utils.js +34 -0
  183. package/dist/database/index.d.ts +1 -0
  184. package/dist/database/index.d.ts.map +1 -0
  185. package/dist/database/index.js +6 -0
  186. package/dist/database/safe-parse.d.ts +26 -0
  187. package/dist/database/safe-parse.d.ts.map +1 -0
  188. package/dist/database/safe-parse.js +42 -0
  189. package/dist/database/ssl-config.d.ts +9 -0
  190. package/dist/database/ssl-config.d.ts.map +1 -0
  191. package/dist/database/ssl-config.js +7 -0
  192. package/dist/database/type-adapter.d.ts +113 -0
  193. package/dist/database/type-adapter.d.ts.map +1 -0
  194. package/dist/database/type-adapter.js +97 -0
  195. package/dist/database/universal-postgres.d.ts +45 -0
  196. package/dist/database/universal-postgres.d.ts.map +1 -0
  197. package/dist/database/universal-postgres.js +526 -0
  198. package/dist/dataloader.d.ts +26 -0
  199. package/dist/dataloader.d.ts.map +1 -0
  200. package/dist/dataloader.js +176 -0
  201. package/dist/error-handling/circuit-breaker.d.ts +262 -0
  202. package/dist/error-handling/circuit-breaker.d.ts.map +1 -0
  203. package/dist/error-handling/circuit-breaker.js +542 -0
  204. package/dist/error-handling/error-boundary.d.ts +94 -0
  205. package/dist/error-handling/error-boundary.d.ts.map +1 -0
  206. package/dist/error-handling/error-boundary.js +285 -0
  207. package/dist/error-handling/error-reporter.d.ts +214 -0
  208. package/dist/error-handling/error-reporter.d.ts.map +1 -0
  209. package/dist/error-handling/error-reporter.js +477 -0
  210. package/dist/error-handling/fallback-components.d.ts +131 -0
  211. package/dist/error-handling/fallback-components.d.ts.map +1 -0
  212. package/dist/error-handling/fallback-components.js +371 -0
  213. package/dist/error-handling/index.d.ts +16 -0
  214. package/dist/error-handling/index.d.ts.map +1 -0
  215. package/dist/error-handling/index.js +15 -0
  216. package/dist/error-handling/retry.d.ts +194 -0
  217. package/dist/error-handling/retry.d.ts.map +1 -0
  218. package/dist/error-handling/retry.js +450 -0
  219. package/dist/errors/index.d.ts +23 -0
  220. package/dist/errors/index.d.ts.map +1 -0
  221. package/dist/errors/index.js +40 -0
  222. package/dist/factories/builders.d.ts +50 -0
  223. package/dist/factories/builders.d.ts.map +1 -0
  224. package/dist/factories/builders.js +77 -0
  225. package/dist/factories/index.d.ts +2 -0
  226. package/dist/factories/index.d.ts.map +1 -0
  227. package/dist/factories/index.js +1 -0
  228. package/dist/features.d.ts +86 -0
  229. package/dist/features.d.ts.map +1 -0
  230. package/dist/features.js +92 -0
  231. package/dist/fieldTraversal.d.ts +26 -0
  232. package/dist/fieldTraversal.d.ts.map +1 -0
  233. package/dist/fieldTraversal.js +132 -0
  234. package/dist/fields/config/types.d.ts +48 -0
  235. package/dist/fields/config/types.d.ts.map +1 -0
  236. package/dist/fields/config/types.js +20 -0
  237. package/dist/fields/getDefaultValue.d.ts +16 -0
  238. package/dist/fields/getDefaultValue.d.ts.map +1 -0
  239. package/dist/fields/getDefaultValue.js +20 -0
  240. package/dist/fields/getFieldPaths.d.ts +25 -0
  241. package/dist/fields/getFieldPaths.d.ts.map +1 -0
  242. package/dist/fields/getFieldPaths.js +23 -0
  243. package/dist/fields/hooks/afterRead/index.d.ts +36 -0
  244. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -0
  245. package/dist/fields/hooks/afterRead/index.js +70 -0
  246. package/dist/fields/hooks/afterRead/promise.d.ts +46 -0
  247. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -0
  248. package/dist/fields/hooks/afterRead/promise.js +178 -0
  249. package/dist/fields/hooks/afterRead/traverseFields.d.ts +44 -0
  250. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -0
  251. package/dist/fields/hooks/afterRead/traverseFields.js +37 -0
  252. package/dist/generated/agents/index.d.ts +8 -0
  253. package/dist/generated/agents/index.d.ts.map +1 -0
  254. package/dist/generated/agents/index.js +7 -0
  255. package/dist/generated/components/index.d.ts +8 -0
  256. package/dist/generated/components/index.d.ts.map +1 -0
  257. package/dist/generated/components/index.js +7 -0
  258. package/dist/generated/functions/index.d.ts +8 -0
  259. package/dist/generated/functions/index.d.ts.map +1 -0
  260. package/dist/generated/functions/index.js +7 -0
  261. package/dist/generated/hooks/index.d.ts +8 -0
  262. package/dist/generated/hooks/index.d.ts.map +1 -0
  263. package/dist/generated/hooks/index.js +7 -0
  264. package/dist/generated/index.d.ts +10 -0
  265. package/dist/generated/index.d.ts.map +1 -0
  266. package/dist/generated/index.js +9 -0
  267. package/dist/generated/plans/index.d.ts +8 -0
  268. package/dist/generated/plans/index.d.ts.map +1 -0
  269. package/dist/generated/plans/index.js +7 -0
  270. package/dist/generated/prompts/index.d.ts +8 -0
  271. package/dist/generated/prompts/index.d.ts.map +1 -0
  272. package/dist/generated/prompts/index.js +7 -0
  273. package/dist/generated/tools/index.d.ts +8 -0
  274. package/dist/generated/tools/index.d.ts.map +1 -0
  275. package/dist/generated/tools/index.js +7 -0
  276. package/dist/generated/types/cms.d.ts +1766 -0
  277. package/dist/generated/types/cms.d.ts.map +1 -0
  278. package/dist/generated/types/cms.js +12 -0
  279. package/dist/generated/types/index.d.ts +16 -0
  280. package/dist/generated/types/index.d.ts.map +1 -0
  281. package/dist/generated/types/index.js +21 -0
  282. package/dist/generated/types/neon.d.ts +11 -0
  283. package/dist/generated/types/neon.d.ts.map +1 -0
  284. package/dist/generated/types/neon.js +11 -0
  285. package/dist/generated/types/supabase.d.ts +193 -0
  286. package/dist/generated/types/supabase.d.ts.map +1 -0
  287. package/dist/generated/types/supabase.js +5 -0
  288. package/dist/globals/GlobalOperations.d.ts +24 -0
  289. package/dist/globals/GlobalOperations.d.ts.map +1 -0
  290. package/dist/globals/GlobalOperations.js +149 -0
  291. package/dist/globals/index.d.ts +2 -0
  292. package/dist/globals/index.d.ts.map +1 -0
  293. package/dist/globals/index.js +1 -0
  294. package/dist/index.d.ts +64 -1
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +126 -33
  297. package/dist/instance/RevealUIInstance.d.ts +6 -0
  298. package/dist/instance/RevealUIInstance.d.ts.map +1 -0
  299. package/dist/instance/RevealUIInstance.js +306 -0
  300. package/dist/instance/index.d.ts +3 -0
  301. package/dist/instance/index.d.ts.map +1 -0
  302. package/dist/instance/index.js +2 -0
  303. package/dist/instance/logger.d.ts +31 -0
  304. package/dist/instance/logger.d.ts.map +1 -0
  305. package/dist/instance/logger.js +42 -0
  306. package/dist/instance/methods/create.d.ts +10 -0
  307. package/dist/instance/methods/create.d.ts.map +1 -0
  308. package/dist/instance/methods/create.js +41 -0
  309. package/dist/instance/methods/delete.d.ts +10 -0
  310. package/dist/instance/methods/delete.d.ts.map +1 -0
  311. package/dist/instance/methods/delete.js +27 -0
  312. package/dist/instance/methods/find.d.ts +10 -0
  313. package/dist/instance/methods/find.d.ts.map +1 -0
  314. package/dist/instance/methods/find.js +23 -0
  315. package/dist/instance/methods/findById.d.ts +13 -0
  316. package/dist/instance/methods/findById.d.ts.map +1 -0
  317. package/dist/instance/methods/findById.js +23 -0
  318. package/dist/instance/methods/hooks.d.ts +14 -0
  319. package/dist/instance/methods/hooks.d.ts.map +1 -0
  320. package/dist/instance/methods/hooks.js +34 -0
  321. package/dist/instance/methods/update.d.ts +10 -0
  322. package/dist/instance/methods/update.d.ts.map +1 -0
  323. package/dist/instance/methods/update.js +45 -0
  324. package/dist/license.d.ts +82 -0
  325. package/dist/license.d.ts.map +1 -0
  326. package/dist/license.js +193 -0
  327. package/dist/monitoring/alerts.d.ts +118 -0
  328. package/dist/monitoring/alerts.d.ts.map +1 -0
  329. package/dist/monitoring/alerts.js +324 -0
  330. package/dist/monitoring/cleanup-manager.d.ts +71 -0
  331. package/dist/monitoring/cleanup-manager.d.ts.map +1 -0
  332. package/dist/monitoring/cleanup-manager.js +226 -0
  333. package/dist/monitoring/health-monitor.d.ts +22 -0
  334. package/dist/monitoring/health-monitor.d.ts.map +1 -0
  335. package/dist/monitoring/health-monitor.js +142 -0
  336. package/dist/monitoring/index.d.ts +14 -0
  337. package/dist/monitoring/index.d.ts.map +1 -0
  338. package/dist/monitoring/index.js +17 -0
  339. package/dist/monitoring/process-registry.d.ts +97 -0
  340. package/dist/monitoring/process-registry.d.ts.map +1 -0
  341. package/dist/monitoring/process-registry.js +222 -0
  342. package/dist/monitoring/query-monitor.d.ts +153 -0
  343. package/dist/monitoring/query-monitor.d.ts.map +1 -0
  344. package/dist/monitoring/query-monitor.js +209 -0
  345. package/dist/monitoring/types.d.ts +231 -0
  346. package/dist/monitoring/types.d.ts.map +1 -0
  347. package/dist/monitoring/types.js +42 -0
  348. package/dist/monitoring/zombie-detector.d.ts +81 -0
  349. package/dist/monitoring/zombie-detector.d.ts.map +1 -0
  350. package/dist/monitoring/zombie-detector.js +231 -0
  351. package/dist/nextjs/index.d.ts +4 -0
  352. package/dist/nextjs/index.d.ts.map +1 -0
  353. package/dist/nextjs/index.js +3 -0
  354. package/dist/nextjs/utilities.d.ts +5 -0
  355. package/dist/nextjs/utilities.d.ts.map +1 -0
  356. package/dist/nextjs/utilities.js +16 -0
  357. package/dist/nextjs/withRevealUI.d.ts +20 -0
  358. package/dist/nextjs/withRevealUI.d.ts.map +1 -0
  359. package/dist/nextjs/withRevealUI.js +181 -0
  360. package/dist/observability/alerts.d.ts +138 -0
  361. package/dist/observability/alerts.d.ts.map +1 -0
  362. package/dist/observability/alerts.js +390 -0
  363. package/dist/observability/health-check.d.ts +95 -0
  364. package/dist/observability/health-check.d.ts.map +1 -0
  365. package/dist/observability/health-check.js +375 -0
  366. package/dist/observability/index.d.ts +12 -0
  367. package/dist/observability/index.d.ts.map +1 -0
  368. package/dist/observability/index.js +11 -0
  369. package/dist/observability/logger.d.ts +47 -0
  370. package/dist/observability/logger.d.ts.map +1 -0
  371. package/dist/observability/logger.js +140 -0
  372. package/dist/observability/metrics.d.ts +205 -0
  373. package/dist/observability/metrics.d.ts.map +1 -0
  374. package/dist/observability/metrics.js +429 -0
  375. package/dist/observability/tracing.d.ts +149 -0
  376. package/dist/observability/tracing.d.ts.map +1 -0
  377. package/dist/observability/tracing.js +381 -0
  378. package/dist/optimization/asset-optimizer.d.ts +202 -0
  379. package/dist/optimization/asset-optimizer.d.ts.map +1 -0
  380. package/dist/optimization/asset-optimizer.js +312 -0
  381. package/dist/optimization/build-optimizer.d.ts +202 -0
  382. package/dist/optimization/build-optimizer.d.ts.map +1 -0
  383. package/dist/optimization/build-optimizer.js +271 -0
  384. package/dist/optimization/bundle-analyzer.d.ts +98 -0
  385. package/dist/optimization/bundle-analyzer.d.ts.map +1 -0
  386. package/dist/optimization/bundle-analyzer.js +322 -0
  387. package/dist/optimization/code-splitting.d.ts +131 -0
  388. package/dist/optimization/code-splitting.d.ts.map +1 -0
  389. package/dist/optimization/code-splitting.js +277 -0
  390. package/dist/plugin/index.d.ts +12 -0
  391. package/dist/plugin/index.d.ts.map +1 -0
  392. package/dist/plugin/index.js +4 -0
  393. package/dist/plugins/form-builder.d.ts +115 -0
  394. package/dist/plugins/form-builder.d.ts.map +1 -0
  395. package/dist/plugins/form-builder.js +239 -0
  396. package/dist/plugins/index.d.ts +5 -0
  397. package/dist/plugins/index.d.ts.map +1 -0
  398. package/dist/plugins/index.js +4 -0
  399. package/dist/plugins/nested-docs.d.ts +8 -0
  400. package/dist/plugins/nested-docs.d.ts.map +1 -0
  401. package/dist/plugins/nested-docs.js +67 -0
  402. package/dist/plugins/redirects.d.ts +17 -0
  403. package/dist/plugins/redirects.d.ts.map +1 -0
  404. package/dist/plugins/redirects.js +62 -0
  405. package/dist/queries/index.d.ts +2 -0
  406. package/dist/queries/index.d.ts.map +1 -0
  407. package/dist/queries/index.js +1 -0
  408. package/dist/queries/queryBuilder.d.ts +47 -0
  409. package/dist/queries/queryBuilder.d.ts.map +1 -0
  410. package/dist/queries/queryBuilder.js +255 -0
  411. package/dist/relationships/analyzer.d.ts +39 -0
  412. package/dist/relationships/analyzer.d.ts.map +1 -0
  413. package/dist/relationships/analyzer.js +127 -0
  414. package/dist/relationships/index.d.ts +3 -0
  415. package/dist/relationships/index.d.ts.map +1 -0
  416. package/dist/relationships/index.js +2 -0
  417. package/dist/relationships/populate-helpers.d.ts +104 -0
  418. package/dist/relationships/populate-helpers.d.ts.map +1 -0
  419. package/dist/relationships/populate-helpers.js +187 -0
  420. package/dist/relationships/population.d.ts +42 -0
  421. package/dist/relationships/population.d.ts.map +1 -0
  422. package/dist/relationships/population.js +188 -0
  423. package/dist/revealui.d.ts +46 -0
  424. package/dist/revealui.d.ts.map +1 -0
  425. package/dist/revealui.js +92 -0
  426. package/dist/richtext/exports/client/rcc.d.ts +37 -0
  427. package/dist/richtext/exports/client/rcc.d.ts.map +1 -0
  428. package/dist/richtext/exports/client/rcc.js +182 -0
  429. package/dist/richtext/exports/server/rsc.d.ts +117 -0
  430. package/dist/richtext/exports/server/rsc.d.ts.map +1 -0
  431. package/dist/richtext/exports/server/rsc.js +288 -0
  432. package/dist/richtext/index.d.ts +161 -0
  433. package/dist/richtext/index.d.ts.map +1 -0
  434. package/dist/richtext/index.js +243 -0
  435. package/dist/richtext/lexical.d.ts +23 -0
  436. package/dist/richtext/lexical.d.ts.map +1 -0
  437. package/dist/richtext/lexical.js +35 -0
  438. package/dist/security/audit.d.ts +188 -0
  439. package/dist/security/audit.d.ts.map +1 -0
  440. package/dist/security/audit.js +431 -0
  441. package/dist/security/auth.d.ts +241 -0
  442. package/dist/security/auth.d.ts.map +1 -0
  443. package/dist/security/auth.js +476 -0
  444. package/dist/security/authorization.d.ts +235 -0
  445. package/dist/security/authorization.d.ts.map +1 -0
  446. package/dist/security/authorization.js +434 -0
  447. package/dist/security/encryption.d.ts +214 -0
  448. package/dist/security/encryption.d.ts.map +1 -0
  449. package/dist/security/encryption.js +517 -0
  450. package/dist/security/gdpr.d.ts +300 -0
  451. package/dist/security/gdpr.d.ts.map +1 -0
  452. package/dist/security/gdpr.js +465 -0
  453. package/dist/security/headers.d.ts +182 -0
  454. package/dist/security/headers.d.ts.map +1 -0
  455. package/dist/security/headers.js +402 -0
  456. package/dist/security/index.d.ts +19 -0
  457. package/dist/security/index.d.ts.map +1 -0
  458. package/dist/security/index.js +18 -0
  459. package/dist/server/index.d.ts +21 -0
  460. package/dist/server/index.d.ts.map +1 -0
  461. package/dist/server/index.js +28 -0
  462. package/dist/server/renderPage.d.ts +69 -0
  463. package/dist/server/renderPage.d.ts.map +1 -0
  464. package/dist/server/renderPage.js +109 -0
  465. package/dist/storage/index.d.ts +1 -0
  466. package/dist/storage/index.d.ts.map +1 -0
  467. package/dist/storage/index.js +4 -0
  468. package/dist/storage/vercel-blob.d.ts +17 -0
  469. package/dist/storage/vercel-blob.d.ts.map +1 -0
  470. package/dist/storage/vercel-blob.js +83 -0
  471. package/dist/translations/index.d.ts +17 -0
  472. package/dist/translations/index.d.ts.map +1 -0
  473. package/dist/translations/index.js +1 -0
  474. package/dist/types/access.d.ts +67 -0
  475. package/dist/types/access.d.ts.map +1 -0
  476. package/dist/types/access.js +8 -0
  477. package/dist/types/api.d.ts +57 -0
  478. package/dist/types/api.d.ts.map +1 -0
  479. package/dist/types/api.js +8 -0
  480. package/dist/types/cms.d.ts +8 -0
  481. package/dist/types/cms.d.ts.map +1 -0
  482. package/dist/types/cms.js +6 -0
  483. package/dist/types/config.d.ts +152 -0
  484. package/dist/types/config.d.ts.map +1 -0
  485. package/dist/types/config.js +9 -0
  486. package/dist/types/core.d.ts +11 -0
  487. package/dist/types/core.d.ts.map +1 -0
  488. package/dist/types/core.js +9 -0
  489. package/dist/types/extensions.d.ts +116 -0
  490. package/dist/types/extensions.d.ts.map +1 -0
  491. package/dist/types/extensions.js +8 -0
  492. package/dist/types/frontend.d.ts +53 -0
  493. package/dist/types/frontend.d.ts.map +1 -0
  494. package/dist/types/frontend.js +7 -0
  495. package/dist/types/generated.d.ts +12 -0
  496. package/dist/types/generated.d.ts.map +1 -0
  497. package/dist/types/generated.js +10 -0
  498. package/dist/types/hooks.d.ts +53 -0
  499. package/dist/types/hooks.d.ts.map +1 -0
  500. package/dist/types/hooks.js +8 -0
  501. package/dist/types/index.d.ts +49 -0
  502. package/dist/types/index.d.ts.map +1 -0
  503. package/dist/types/index.js +61 -0
  504. package/dist/types/interfaces/app.d.ts +50 -0
  505. package/dist/types/interfaces/app.d.ts.map +1 -0
  506. package/dist/types/interfaces/app.js +5 -0
  507. package/dist/types/jobs.d.ts +112 -0
  508. package/dist/types/jobs.d.ts.map +1 -0
  509. package/dist/types/jobs.js +7 -0
  510. package/dist/types/legacy.d.ts +147 -0
  511. package/dist/types/legacy.d.ts.map +1 -0
  512. package/dist/types/legacy.js +8 -0
  513. package/dist/types/plugins.d.ts +17 -0
  514. package/dist/types/plugins.d.ts.map +1 -0
  515. package/dist/types/plugins.js +8 -0
  516. package/dist/types/query.d.ts +99 -0
  517. package/dist/types/query.d.ts.map +1 -0
  518. package/dist/types/query.js +24 -0
  519. package/dist/types/request.d.ts +40 -0
  520. package/dist/types/request.d.ts.map +1 -0
  521. package/dist/types/request.js +8 -0
  522. package/dist/types/richtext.d.ts +23 -0
  523. package/dist/types/richtext.d.ts.map +1 -0
  524. package/dist/types/richtext.js +8 -0
  525. package/dist/types/runtime.d.ts +216 -0
  526. package/dist/types/runtime.d.ts.map +1 -0
  527. package/dist/types/runtime.js +9 -0
  528. package/dist/types/schema.d.ts +9 -0
  529. package/dist/types/schema.d.ts.map +1 -0
  530. package/dist/types/schema.js +7 -0
  531. package/dist/types/user.d.ts +48 -0
  532. package/dist/types/user.d.ts.map +1 -0
  533. package/dist/types/user.js +8 -0
  534. package/dist/utils/access-conversion.d.ts +17 -0
  535. package/dist/utils/access-conversion.d.ts.map +1 -0
  536. package/dist/utils/access-conversion.js +96 -0
  537. package/dist/utils/api-wrapper.d.ts +63 -0
  538. package/dist/utils/api-wrapper.d.ts.map +1 -0
  539. package/dist/utils/api-wrapper.js +151 -0
  540. package/dist/utils/block-conversion.d.ts +21 -0
  541. package/dist/utils/block-conversion.d.ts.map +1 -0
  542. package/dist/utils/block-conversion.js +109 -0
  543. package/dist/utils/cache.d.ts +86 -0
  544. package/dist/utils/cache.d.ts.map +1 -0
  545. package/dist/utils/cache.js +154 -0
  546. package/dist/utils/deep-clone.d.ts +25 -0
  547. package/dist/utils/deep-clone.d.ts.map +1 -0
  548. package/dist/utils/deep-clone.js +115 -0
  549. package/dist/utils/error-responses.d.ts +57 -0
  550. package/dist/utils/error-responses.d.ts.map +1 -0
  551. package/dist/utils/error-responses.js +96 -0
  552. package/dist/utils/errors.d.ts +97 -0
  553. package/dist/utils/errors.d.ts.map +1 -0
  554. package/dist/utils/errors.js +397 -0
  555. package/dist/utils/field-conversion.d.ts +40 -0
  556. package/dist/utils/field-conversion.d.ts.map +1 -0
  557. package/dist/utils/field-conversion.js +275 -0
  558. package/dist/utils/flattenResult.d.ts +7 -0
  559. package/dist/utils/flattenResult.d.ts.map +1 -0
  560. package/dist/utils/flattenResult.js +23 -0
  561. package/dist/utils/getBlockSelect.d.ts +12 -0
  562. package/dist/utils/getBlockSelect.d.ts.map +1 -0
  563. package/dist/utils/getBlockSelect.js +12 -0
  564. package/dist/utils/getSelectMode.d.ts +8 -0
  565. package/dist/utils/getSelectMode.d.ts.map +1 -0
  566. package/dist/utils/getSelectMode.js +21 -0
  567. package/dist/utils/isValidID.d.ts +5 -0
  568. package/dist/utils/isValidID.d.ts.map +1 -0
  569. package/dist/utils/isValidID.js +13 -0
  570. package/dist/utils/json-parsing.d.ts +48 -0
  571. package/dist/utils/json-parsing.d.ts.map +1 -0
  572. package/dist/utils/json-parsing.js +130 -0
  573. package/dist/utils/jwt-validation.d.ts +14 -0
  574. package/dist/utils/jwt-validation.d.ts.map +1 -0
  575. package/dist/utils/jwt-validation.js +36 -0
  576. package/dist/utils/logger-client.d.ts +32 -0
  577. package/dist/utils/logger-client.d.ts.map +1 -0
  578. package/dist/utils/logger-client.js +55 -0
  579. package/dist/utils/logger-server.d.ts +32 -0
  580. package/dist/utils/logger-server.d.ts.map +1 -0
  581. package/dist/utils/logger-server.js +68 -0
  582. package/dist/utils/logger.d.ts +14 -0
  583. package/dist/utils/logger.d.ts.map +1 -0
  584. package/dist/utils/logger.js +12 -0
  585. package/dist/utils/request-context.d.ts +143 -0
  586. package/dist/utils/request-context.d.ts.map +1 -0
  587. package/dist/utils/request-context.js +168 -0
  588. package/dist/utils/request-headers.d.ts +15 -0
  589. package/dist/utils/request-headers.d.ts.map +1 -0
  590. package/dist/utils/request-headers.js +31 -0
  591. package/dist/utils/stripUnselectedFields.d.ts +10 -0
  592. package/dist/utils/stripUnselectedFields.d.ts.map +1 -0
  593. package/dist/utils/stripUnselectedFields.js +20 -0
  594. package/dist/utils/type-guards.d.ts +33 -0
  595. package/dist/utils/type-guards.d.ts.map +1 -0
  596. package/dist/utils/type-guards.js +63 -0
  597. package/dist/utils/user.d.ts +14 -0
  598. package/dist/utils/user.d.ts.map +1 -0
  599. package/dist/utils/user.js +15 -0
  600. package/package.json +241 -724
  601. package/LICENSE_SUMMARY.md +0 -55
  602. package/NOTICE +0 -34
  603. package/dist/exports/RenderErrorPage.js +0 -3
  604. package/dist/exports/__internal.js +0 -3
  605. package/dist/exports/abort.js +0 -3
  606. package/dist/exports/bin-entry.js +0 -5
  607. package/dist/exports/client.js +0 -3
  608. package/dist/exports/config.js +0 -1
  609. package/dist/exports/helpers.js +0 -1
  610. package/dist/exports/index.js +0 -33
  611. package/dist/exports/plugin.js +0 -3
  612. package/dist/exports/prerender.js +0 -3
  613. package/dist/exports/router.js +0 -3
  614. package/dist/exports/routing.js +0 -3
  615. package/dist/exports/server.js +0 -3
  616. package/dist/exports/setup.js +0 -3
  617. package/dist/exports/types.js +0 -1
  618. package/dist/integration/styles.css +0 -141
  619. package/dist/shared/RenderErrorPage.d.ts +0 -3
  620. package/dist/shared/RenderErrorPage.js +0 -3
  621. package/dist/shared/abort.js +0 -3
  622. package/dist/shared/route/routing.js +0 -3
@@ -0,0 +1,517 @@
1
+ /**
2
+ * Encryption Utilities
3
+ *
4
+ * Data encryption for at-rest and in-transit protection
5
+ */
6
+ const DEFAULT_CONFIG = {
7
+ algorithm: 'AES-GCM',
8
+ keySize: 256,
9
+ ivSize: 12,
10
+ };
11
+ /**
12
+ * Encryption system
13
+ */
14
+ export class EncryptionSystem {
15
+ config;
16
+ keys = new Map();
17
+ constructor(config = {}) {
18
+ this.config = { ...DEFAULT_CONFIG, ...config };
19
+ }
20
+ /**
21
+ * Generate encryption key
22
+ */
23
+ async generateKey(keyId) {
24
+ const crypto = globalThis.crypto;
25
+ if (!crypto) {
26
+ throw new Error('Crypto API not available');
27
+ }
28
+ const key = await crypto.subtle.generateKey({
29
+ name: this.config.algorithm,
30
+ length: this.config.keySize,
31
+ }, true, // extractable
32
+ ['encrypt', 'decrypt']);
33
+ if (keyId) {
34
+ this.keys.set(keyId, key);
35
+ }
36
+ return key;
37
+ }
38
+ /**
39
+ * Import key from raw data
40
+ */
41
+ async importKey(keyData, keyId) {
42
+ const crypto = globalThis.crypto;
43
+ if (!crypto) {
44
+ throw new Error('Crypto API not available');
45
+ }
46
+ const key = await crypto.subtle.importKey('raw', keyData, {
47
+ name: this.config.algorithm,
48
+ length: this.config.keySize,
49
+ }, true, ['encrypt', 'decrypt']);
50
+ if (keyId) {
51
+ this.keys.set(keyId, key);
52
+ }
53
+ return key;
54
+ }
55
+ /**
56
+ * Export key to raw data
57
+ */
58
+ async exportKey(key) {
59
+ const crypto = globalThis.crypto;
60
+ if (!crypto) {
61
+ throw new Error('Crypto API not available');
62
+ }
63
+ return crypto.subtle.exportKey('raw', key);
64
+ }
65
+ /**
66
+ * Encrypt data
67
+ */
68
+ async encrypt(data, keyOrId) {
69
+ const crypto = globalThis.crypto;
70
+ if (!crypto) {
71
+ throw new Error('Crypto API not available');
72
+ }
73
+ // Get key
74
+ const key = typeof keyOrId === 'string' ? this.keys.get(keyOrId) : keyOrId;
75
+ if (!key) {
76
+ throw new Error('Key not found');
77
+ }
78
+ // Generate IV
79
+ const iv = crypto.getRandomValues(new Uint8Array(this.config.ivSize || 12));
80
+ // Encode data
81
+ const encoder = new TextEncoder();
82
+ const encodedData = encoder.encode(data);
83
+ // Encrypt
84
+ const encrypted = await crypto.subtle.encrypt({
85
+ name: this.config.algorithm,
86
+ iv,
87
+ }, key, encodedData);
88
+ // Convert to base64
89
+ const encryptedArray = new Uint8Array(encrypted);
90
+ const ivArray = new Uint8Array(iv);
91
+ return {
92
+ data: this.arrayBufferToBase64(encryptedArray),
93
+ iv: this.arrayBufferToBase64(ivArray),
94
+ algorithm: this.config.algorithm,
95
+ };
96
+ }
97
+ /**
98
+ * Decrypt data
99
+ */
100
+ async decrypt(encryptedData, keyOrId) {
101
+ const crypto = globalThis.crypto;
102
+ if (!crypto) {
103
+ throw new Error('Crypto API not available');
104
+ }
105
+ // Get key
106
+ const key = typeof keyOrId === 'string' ? this.keys.get(keyOrId) : keyOrId;
107
+ if (!key) {
108
+ throw new Error('Key not found');
109
+ }
110
+ // Decode data
111
+ const data = this.base64ToArrayBuffer(encryptedData.data);
112
+ const iv = this.base64ToArrayBuffer(encryptedData.iv);
113
+ // Decrypt
114
+ const decrypted = await crypto.subtle.decrypt({
115
+ name: encryptedData.algorithm,
116
+ iv: iv,
117
+ }, key, data);
118
+ // Decode text
119
+ const decoder = new TextDecoder();
120
+ return decoder.decode(decrypted);
121
+ }
122
+ /**
123
+ * Encrypt object
124
+ */
125
+ async encryptObject(obj, keyOrId) {
126
+ const json = JSON.stringify(obj);
127
+ return this.encrypt(json, keyOrId);
128
+ }
129
+ /**
130
+ * Decrypt object
131
+ */
132
+ async decryptObject(encryptedData, keyOrId) {
133
+ const json = await this.decrypt(encryptedData, keyOrId);
134
+ return JSON.parse(json);
135
+ }
136
+ /**
137
+ * Hash data
138
+ */
139
+ async hash(data, algorithm = 'SHA-256') {
140
+ const crypto = globalThis.crypto;
141
+ if (!crypto) {
142
+ throw new Error('Crypto API not available');
143
+ }
144
+ const encoder = new TextEncoder();
145
+ const encodedData = encoder.encode(data);
146
+ const hashBuffer = await crypto.subtle.digest(algorithm, encodedData);
147
+ return this.arrayBufferToBase64(new Uint8Array(hashBuffer));
148
+ }
149
+ /**
150
+ * Generate random bytes
151
+ */
152
+ randomBytes(length) {
153
+ const crypto = globalThis.crypto;
154
+ if (!crypto) {
155
+ throw new Error('Crypto API not available');
156
+ }
157
+ return crypto.getRandomValues(new Uint8Array(length));
158
+ }
159
+ /**
160
+ * Generate random string
161
+ */
162
+ randomString(length, charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') {
163
+ // Rejection sampling to avoid modulo bias:
164
+ // Only accept bytes below the largest multiple of charset.length that fits in a byte.
165
+ const maxValid = 256 - (256 % charset.length);
166
+ const result = [];
167
+ while (result.length < length) {
168
+ const bytes = this.randomBytes(length - result.length + 16);
169
+ for (const byte of bytes) {
170
+ if (byte < maxValid) {
171
+ result.push(charset[byte % charset.length]);
172
+ if (result.length === length)
173
+ break;
174
+ }
175
+ }
176
+ }
177
+ return result.join('');
178
+ }
179
+ /**
180
+ * Convert ArrayBuffer to base64
181
+ */
182
+ arrayBufferToBase64(buffer) {
183
+ const bytes = Array.from(buffer);
184
+ const binary = bytes.map((byte) => String.fromCharCode(byte)).join('');
185
+ if (typeof btoa !== 'undefined') {
186
+ return btoa(binary);
187
+ }
188
+ if (typeof Buffer !== 'undefined') {
189
+ return Buffer.from(binary, 'binary').toString('base64');
190
+ }
191
+ throw new Error('No base64 encoding available');
192
+ }
193
+ /**
194
+ * Convert base64 to ArrayBuffer
195
+ */
196
+ base64ToArrayBuffer(base64) {
197
+ let binary;
198
+ if (typeof atob !== 'undefined') {
199
+ binary = atob(base64);
200
+ }
201
+ else if (typeof Buffer !== 'undefined') {
202
+ binary = Buffer.from(base64, 'base64').toString('binary');
203
+ }
204
+ else {
205
+ throw new Error('No base64 decoding available');
206
+ }
207
+ const bytes = new Uint8Array(binary.length);
208
+ for (let i = 0; i < binary.length; i++) {
209
+ bytes[i] = binary.charCodeAt(i);
210
+ }
211
+ return bytes;
212
+ }
213
+ /**
214
+ * Store key
215
+ */
216
+ storeKey(keyId, key) {
217
+ this.keys.set(keyId, key);
218
+ }
219
+ /**
220
+ * Get key
221
+ */
222
+ getKey(keyId) {
223
+ return this.keys.get(keyId);
224
+ }
225
+ /**
226
+ * Remove key
227
+ */
228
+ removeKey(keyId) {
229
+ this.keys.delete(keyId);
230
+ }
231
+ /**
232
+ * Clear all keys
233
+ */
234
+ clearKeys() {
235
+ this.keys.clear();
236
+ }
237
+ }
238
+ /**
239
+ * Global encryption instance
240
+ */
241
+ export const encryption = new EncryptionSystem();
242
+ /**
243
+ * Field-level encryption
244
+ */
245
+ export class FieldEncryption {
246
+ encryption;
247
+ key = null;
248
+ constructor(encryption) {
249
+ this.encryption = encryption;
250
+ }
251
+ /**
252
+ * Initialize with key
253
+ */
254
+ async initialize(key) {
255
+ this.key = key;
256
+ }
257
+ /**
258
+ * Encrypt field
259
+ */
260
+ async encryptField(value) {
261
+ if (!this.key) {
262
+ throw new Error('Encryption not initialized');
263
+ }
264
+ const stringValue = typeof value === 'string' ? value : JSON.stringify(value);
265
+ return this.encryption.encrypt(stringValue, this.key);
266
+ }
267
+ /**
268
+ * Decrypt field
269
+ */
270
+ async decryptField(encryptedData) {
271
+ if (!this.key) {
272
+ throw new Error('Encryption not initialized');
273
+ }
274
+ const decrypted = await this.encryption.decrypt(encryptedData, this.key);
275
+ // Try to parse as JSON
276
+ try {
277
+ return JSON.parse(decrypted);
278
+ }
279
+ catch {
280
+ return decrypted;
281
+ }
282
+ }
283
+ /**
284
+ * Encrypt object fields
285
+ */
286
+ async encryptFields(obj, fields) {
287
+ const result = { ...obj };
288
+ for (const field of fields) {
289
+ if (field in result) {
290
+ result[field] = (await this.encryptField(result[field]));
291
+ }
292
+ }
293
+ return result;
294
+ }
295
+ /**
296
+ * Decrypt object fields
297
+ */
298
+ async decryptFields(obj, fields) {
299
+ const result = { ...obj };
300
+ for (const field of fields) {
301
+ if (field in result && typeof result[field] === 'object' && result[field] !== null) {
302
+ const encryptedData = result[field];
303
+ if ('data' in encryptedData && 'iv' in encryptedData) {
304
+ result[field] = (await this.decryptField(encryptedData));
305
+ }
306
+ }
307
+ }
308
+ return result;
309
+ }
310
+ }
311
+ /**
312
+ * Key rotation
313
+ */
314
+ export class KeyRotationManager {
315
+ encryption;
316
+ currentKeyId;
317
+ oldKeys = new Map();
318
+ constructor(encryption, initialKeyId) {
319
+ this.encryption = encryption;
320
+ this.currentKeyId = initialKeyId;
321
+ }
322
+ /**
323
+ * Rotate to new key
324
+ */
325
+ async rotate(newKeyId, newKey) {
326
+ // Store old key
327
+ const oldKey = this.encryption.getKey(this.currentKeyId);
328
+ if (oldKey) {
329
+ this.oldKeys.set(this.currentKeyId, oldKey);
330
+ }
331
+ // Set new key
332
+ this.encryption.storeKey(newKeyId, newKey);
333
+ this.currentKeyId = newKeyId;
334
+ }
335
+ /**
336
+ * Re-encrypt data with new key
337
+ */
338
+ async reencrypt(encryptedData, oldKeyId) {
339
+ // Get keys
340
+ const oldKey = this.oldKeys.get(oldKeyId) || this.encryption.getKey(oldKeyId);
341
+ const newKey = this.encryption.getKey(this.currentKeyId);
342
+ if (!(oldKey && newKey)) {
343
+ throw new Error('Keys not found');
344
+ }
345
+ // Decrypt with old key
346
+ const decrypted = await this.encryption.decrypt(encryptedData, oldKey);
347
+ // Encrypt with new key
348
+ return this.encryption.encrypt(decrypted, newKey);
349
+ }
350
+ /**
351
+ * Get current key ID
352
+ */
353
+ getCurrentKeyId() {
354
+ return this.currentKeyId;
355
+ }
356
+ /**
357
+ * Clean up old keys
358
+ */
359
+ cleanupOldKeys(_olderThan) {
360
+ // In a real implementation, you'd track key creation dates
361
+ // and remove keys older than the specified date
362
+ this.oldKeys.clear();
363
+ }
364
+ }
365
+ /**
366
+ * Envelope encryption for large data
367
+ */
368
+ export class EnvelopeEncryption {
369
+ encryption;
370
+ masterKey;
371
+ constructor(encryption, masterKey) {
372
+ this.encryption = encryption;
373
+ this.masterKey = masterKey;
374
+ }
375
+ /**
376
+ * Encrypt with envelope encryption
377
+ */
378
+ async encrypt(data) {
379
+ // Generate data encryption key (DEK)
380
+ const dek = await this.encryption.generateKey();
381
+ // Encrypt data with DEK
382
+ const encryptedData = await this.encryption.encrypt(data, dek);
383
+ // Export DEK
384
+ const dekRaw = await this.encryption.exportKey(dek);
385
+ const dekBase64 = this.arrayBufferToBase64(new Uint8Array(dekRaw));
386
+ // Encrypt DEK with master key
387
+ const encryptedKey = await this.encryption.encrypt(dekBase64, this.masterKey);
388
+ return { encryptedData, encryptedKey };
389
+ }
390
+ /**
391
+ * Decrypt with envelope encryption
392
+ */
393
+ async decrypt(encryptedData, encryptedKey) {
394
+ // Decrypt DEK with master key
395
+ const dekBase64 = await this.encryption.decrypt(encryptedKey, this.masterKey);
396
+ const dekRaw = this.base64ToArrayBuffer(dekBase64);
397
+ // Import DEK
398
+ const dek = await this.encryption.importKey(dekRaw.buffer);
399
+ // Decrypt data with DEK
400
+ return this.encryption.decrypt(encryptedData, dek);
401
+ }
402
+ arrayBufferToBase64(buffer) {
403
+ const bytes = Array.from(buffer);
404
+ const binary = bytes.map((byte) => String.fromCharCode(byte)).join('');
405
+ return typeof btoa !== 'undefined'
406
+ ? btoa(binary)
407
+ : Buffer.from(binary, 'binary').toString('base64');
408
+ }
409
+ base64ToArrayBuffer(base64) {
410
+ const binary = typeof atob !== 'undefined' ? atob(base64) : Buffer.from(base64, 'base64').toString('binary');
411
+ const bytes = new Uint8Array(binary.length);
412
+ for (let i = 0; i < binary.length; i++) {
413
+ bytes[i] = binary.charCodeAt(i);
414
+ }
415
+ return bytes;
416
+ }
417
+ }
418
+ /**
419
+ * Data masking utilities
420
+ */
421
+ export class DataMasking {
422
+ /**
423
+ * Mask email
424
+ */
425
+ static maskEmail(email) {
426
+ const [local, domain] = email.split('@');
427
+ if (!(local && domain))
428
+ return email;
429
+ const maskedLocal = local.length > 2
430
+ ? local[0] + '*'.repeat(local.length - 2) + local[local.length - 1]
431
+ : `${local[0]}*`;
432
+ return `${maskedLocal}@${domain}`;
433
+ }
434
+ /**
435
+ * Mask phone number
436
+ */
437
+ static maskPhone(phone) {
438
+ const digits = phone.replace(/\D/g, '');
439
+ if (digits.length < 4)
440
+ return phone;
441
+ const lastFour = digits.slice(-4);
442
+ const masked = '*'.repeat(digits.length - 4) + lastFour;
443
+ return phone.replace(/\d/g, (char, index) => {
444
+ const digitIndex = phone.slice(0, index + 1).replace(/\D/g, '').length - 1;
445
+ return masked[digitIndex] || char;
446
+ });
447
+ }
448
+ /**
449
+ * Mask credit card
450
+ */
451
+ static maskCreditCard(card) {
452
+ const digits = card.replace(/\D/g, '');
453
+ if (digits.length < 4)
454
+ return card;
455
+ const lastFour = digits.slice(-4);
456
+ return `****-****-****-${lastFour}`;
457
+ }
458
+ /**
459
+ * Mask SSN
460
+ */
461
+ static maskSSN(ssn) {
462
+ const digits = ssn.replace(/\D/g, '');
463
+ if (digits.length !== 9)
464
+ return ssn;
465
+ return `***-**-${digits.slice(-4)}`;
466
+ }
467
+ /**
468
+ * Mask string (keep first and last character)
469
+ */
470
+ static maskString(str, keepChars = 1) {
471
+ if (str.length <= keepChars * 2) {
472
+ return '*'.repeat(str.length);
473
+ }
474
+ const prefix = str.slice(0, keepChars);
475
+ const suffix = str.slice(-keepChars);
476
+ const masked = '*'.repeat(str.length - keepChars * 2);
477
+ return `${prefix}${masked}${suffix}`;
478
+ }
479
+ }
480
+ /**
481
+ * Secure random token generator
482
+ */
483
+ export class TokenGenerator {
484
+ /**
485
+ * Generate secure token. `length` is the number of random bytes;
486
+ * the returned string is hex-encoded, so it will be `length * 2` characters.
487
+ */
488
+ static generate(length = 32) {
489
+ const bytes = encryption.randomBytes(length);
490
+ return Array.from(bytes)
491
+ .map((b) => b.toString(16).padStart(2, '0'))
492
+ .join('');
493
+ }
494
+ /**
495
+ * Generate UUID v4
496
+ */
497
+ static generateUUID() {
498
+ const crypto = globalThis.crypto;
499
+ if (!crypto) {
500
+ throw new Error('Crypto API not available');
501
+ }
502
+ return crypto.randomUUID();
503
+ }
504
+ /**
505
+ * Generate API key
506
+ */
507
+ static generateAPIKey(prefix = 'sk') {
508
+ const token = TokenGenerator.generate(32);
509
+ return `${prefix}_${token}`;
510
+ }
511
+ /**
512
+ * Generate session ID
513
+ */
514
+ static generateSessionID() {
515
+ return TokenGenerator.generate(64);
516
+ }
517
+ }