@revealui/core 0.0.1-pre.3 → 0.2.0

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