@revealui/core 0.2.0 → 0.3.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 (341) hide show
  1. package/README.md +137 -30
  2. package/dist/api/compression.d.ts.map +1 -1
  3. package/dist/api/payload-optimization.d.ts.map +1 -1
  4. package/dist/api/rate-limit.d.ts +30 -29
  5. package/dist/api/rate-limit.d.ts.map +1 -1
  6. package/dist/api/rate-limit.js +79 -4
  7. package/dist/api/response-cache.d.ts.map +1 -1
  8. package/dist/api/response-cache.js +1 -1
  9. package/dist/api/rest.d.ts.map +1 -1
  10. package/dist/api/rest.js +5 -4
  11. package/dist/auth/access.d.ts.map +1 -1
  12. package/dist/auth/index.d.ts.map +1 -1
  13. package/dist/cache/query-cache.d.ts +12 -10
  14. package/dist/cache/query-cache.d.ts.map +1 -1
  15. package/dist/cache/query-cache.js +38 -42
  16. package/dist/caching/app-cache.d.ts +5 -0
  17. package/dist/caching/app-cache.d.ts.map +1 -1
  18. package/dist/caching/app-cache.js +9 -1
  19. package/dist/caching/cdn-config.d.ts +2 -2
  20. package/dist/caching/cdn-config.d.ts.map +1 -1
  21. package/dist/caching/cdn-config.js +5 -15
  22. package/dist/caching/edge-cache.d.ts +1 -1
  23. package/dist/caching/edge-cache.d.ts.map +1 -1
  24. package/dist/caching/edge-cache.js +44 -11
  25. package/dist/caching/index.d.ts +6 -0
  26. package/dist/caching/index.d.ts.map +1 -0
  27. package/dist/caching/index.js +5 -0
  28. package/dist/caching/service-worker.d.ts +10 -18
  29. package/dist/caching/service-worker.d.ts.map +1 -1
  30. package/dist/caching/service-worker.js +5 -4
  31. package/dist/client/admin/RichText.d.ts +1 -1
  32. package/dist/client/admin/RichText.d.ts.map +1 -1
  33. package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -1
  34. package/dist/client/admin/components/AdminDashboard.js +178 -205
  35. package/dist/client/admin/components/CollectionList.d.ts.map +1 -1
  36. package/dist/client/admin/components/DocumentForm.d.ts.map +1 -1
  37. package/dist/client/admin/components/DocumentForm.js +130 -6
  38. package/dist/client/admin/components/GlobalForm.d.ts.map +1 -1
  39. package/dist/client/admin/context/ServerFunctionContext.d.ts +8 -0
  40. package/dist/client/admin/context/ServerFunctionContext.d.ts.map +1 -0
  41. package/dist/client/admin/context/ServerFunctionContext.js +15 -0
  42. package/dist/client/admin/i18n/en.d.ts.map +1 -1
  43. package/dist/client/admin/index.d.ts +1 -0
  44. package/dist/client/admin/index.d.ts.map +1 -1
  45. package/dist/client/admin/index.js +1 -0
  46. package/dist/client/admin/layout.d.ts +1 -1
  47. package/dist/client/admin/layout.d.ts.map +1 -1
  48. package/dist/client/admin/layout.js +3 -2
  49. package/dist/client/admin/page.d.ts.map +1 -1
  50. package/dist/client/admin/utils/apiClient.d.ts.map +1 -1
  51. package/dist/client/admin/utils/apiClient.js +0 -4
  52. package/dist/client/admin/utils/auth.d.ts +0 -4
  53. package/dist/client/admin/utils/auth.d.ts.map +1 -1
  54. package/dist/client/admin/utils/auth.js +0 -6
  55. package/dist/client/admin/utils/index.d.ts +0 -1
  56. package/dist/client/admin/utils/index.d.ts.map +1 -1
  57. package/dist/client/admin/utils/index.js +0 -1
  58. package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -1
  59. package/dist/client/hooks.d.ts.map +1 -1
  60. package/dist/client/index.d.ts +0 -1
  61. package/dist/client/index.d.ts.map +1 -1
  62. package/dist/client/index.js +0 -2
  63. package/dist/client/richtext/RichTextEditor.d.ts.map +1 -1
  64. package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -1
  65. package/dist/client/richtext/components/ImageNodeComponent.js +0 -1
  66. package/dist/client/richtext/components/ImageUploadButton.d.ts +2 -0
  67. package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -1
  68. package/dist/client/richtext/components/ImageUploadButton.js +30 -15
  69. package/dist/client/richtext/index.d.ts.map +1 -1
  70. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -1
  71. package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -1
  72. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -1
  73. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -1
  74. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -1
  75. package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -1
  76. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -1
  77. package/dist/client/ui/index.d.ts.map +1 -1
  78. package/dist/client/ui/index.js +1 -1
  79. package/dist/collections/CollectionOperations.d.ts +7 -7
  80. package/dist/collections/CollectionOperations.d.ts.map +1 -1
  81. package/dist/collections/CollectionOperations.js +15 -1
  82. package/dist/collections/hooks.d.ts.map +1 -1
  83. package/dist/collections/index.d.ts.map +1 -1
  84. package/dist/collections/operations/create.d.ts +2 -4
  85. package/dist/collections/operations/create.d.ts.map +1 -1
  86. package/dist/collections/operations/create.js +9 -7
  87. package/dist/collections/operations/createMany.d.ts +12 -0
  88. package/dist/collections/operations/createMany.d.ts.map +1 -0
  89. package/dist/collections/operations/createMany.js +43 -0
  90. package/dist/collections/operations/delete.d.ts +1 -1
  91. package/dist/collections/operations/delete.d.ts.map +1 -1
  92. package/dist/collections/operations/delete.js +31 -2
  93. package/dist/collections/operations/deleteMany.d.ts +11 -0
  94. package/dist/collections/operations/deleteMany.d.ts.map +1 -0
  95. package/dist/collections/operations/deleteMany.js +50 -0
  96. package/dist/collections/operations/fieldHooks.d.ts +2 -2
  97. package/dist/collections/operations/fieldHooks.d.ts.map +1 -1
  98. package/dist/collections/operations/fieldHooks.js +4 -4
  99. package/dist/collections/operations/find.d.ts +2 -4
  100. package/dist/collections/operations/find.d.ts.map +1 -1
  101. package/dist/collections/operations/find.js +115 -8
  102. package/dist/collections/operations/findById.d.ts +3 -4
  103. package/dist/collections/operations/findById.d.ts.map +1 -1
  104. package/dist/collections/operations/findById.js +53 -1
  105. package/dist/collections/operations/sqlAdapter.d.ts +23 -0
  106. package/dist/collections/operations/sqlAdapter.d.ts.map +1 -0
  107. package/dist/collections/operations/sqlAdapter.js +76 -0
  108. package/dist/collections/operations/update.d.ts +3 -5
  109. package/dist/collections/operations/update.d.ts.map +1 -1
  110. package/dist/collections/operations/update.js +103 -11
  111. package/dist/collections/operations/updateMany.d.ts +11 -0
  112. package/dist/collections/operations/updateMany.d.ts.map +1 -0
  113. package/dist/collections/operations/updateMany.js +52 -0
  114. package/dist/collections/registry.d.ts +12 -0
  115. package/dist/collections/registry.d.ts.map +1 -0
  116. package/dist/collections/registry.js +38 -0
  117. package/dist/config/index.d.ts.map +1 -1
  118. package/dist/config/runtime.d.ts.map +1 -1
  119. package/dist/config/utils.d.ts +0 -10
  120. package/dist/config/utils.d.ts.map +1 -1
  121. package/dist/config/utils.js +18 -17
  122. package/dist/database/index.d.ts +3 -0
  123. package/dist/database/index.d.ts.map +1 -1
  124. package/dist/database/index.js +1 -5
  125. package/dist/database/safe-parse.d.ts +26 -0
  126. package/dist/database/safe-parse.d.ts.map +1 -0
  127. package/dist/database/safe-parse.js +42 -0
  128. package/dist/database/ssl-config.d.ts.map +1 -1
  129. package/dist/database/type-adapter.d.ts.map +1 -1
  130. package/dist/database/universal-postgres.d.ts.map +1 -1
  131. package/dist/database/universal-postgres.js +18 -13
  132. package/dist/dataloader.d.ts.map +1 -1
  133. package/dist/dataloader.js +16 -2
  134. package/dist/error-handling/circuit-breaker.d.ts +1 -1
  135. package/dist/error-handling/circuit-breaker.d.ts.map +1 -1
  136. package/dist/error-handling/circuit-breaker.js +11 -3
  137. package/dist/error-handling/error-boundary.d.ts.map +1 -1
  138. package/dist/error-handling/error-reporter.d.ts +6 -5
  139. package/dist/error-handling/error-reporter.d.ts.map +1 -1
  140. package/dist/error-handling/error-reporter.js +26 -41
  141. package/dist/error-handling/fallback-components.d.ts.map +1 -1
  142. package/dist/error-handling/fallback-components.js +1 -1
  143. package/dist/error-handling/index.d.ts +3 -5
  144. package/dist/error-handling/index.d.ts.map +1 -1
  145. package/dist/error-handling/index.js +2 -5
  146. package/dist/error-handling/retry.d.ts.map +1 -1
  147. package/dist/error-handling/retry.js +13 -8
  148. package/dist/factories/builders.d.ts.map +1 -1
  149. package/dist/factories/index.d.ts.map +1 -1
  150. package/dist/features.d.ts +5 -5
  151. package/dist/features.d.ts.map +1 -1
  152. package/dist/features.js +6 -5
  153. package/dist/fieldTraversal.d.ts.map +1 -1
  154. package/dist/fields/config/types.d.ts.map +1 -1
  155. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  156. package/dist/fields/getFieldPaths.d.ts.map +1 -1
  157. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  158. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  159. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  160. package/dist/generated/types/cms.d.ts.map +1 -1
  161. package/dist/generated/types/cms.js +0 -1
  162. package/dist/generated/types/index.d.ts +0 -3
  163. package/dist/generated/types/index.d.ts.map +1 -1
  164. package/dist/generated/types/index.js +0 -7
  165. package/dist/generated/types/neon.d.ts.map +1 -1
  166. package/dist/generated/types/neon.js +4 -2
  167. package/dist/globals/GlobalOperations.d.ts.map +1 -1
  168. package/dist/globals/GlobalOperations.js +4 -2
  169. package/dist/globals/index.d.ts.map +1 -1
  170. package/dist/index.d.ts +4 -4
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +4 -6
  173. package/dist/instance/RevealUIInstance.d.ts.map +1 -1
  174. package/dist/instance/RevealUIInstance.js +50 -69
  175. package/dist/instance/index.d.ts.map +1 -1
  176. package/dist/instance/logger.d.ts.map +1 -1
  177. package/dist/instance/methods/create.d.ts.map +1 -1
  178. package/dist/instance/methods/create.js +4 -4
  179. package/dist/instance/methods/delete.d.ts.map +1 -1
  180. package/dist/instance/methods/delete.js +5 -5
  181. package/dist/instance/methods/find.d.ts.map +1 -1
  182. package/dist/instance/methods/find.js +0 -3
  183. package/dist/instance/methods/findById.d.ts.map +1 -1
  184. package/dist/instance/methods/findById.js +0 -3
  185. package/dist/instance/methods/hooks.d.ts.map +1 -1
  186. package/dist/instance/methods/hooks.js +3 -1
  187. package/dist/instance/methods/update.d.ts.map +1 -1
  188. package/dist/instance/methods/update.js +4 -4
  189. package/dist/jobs/index.d.ts +16 -0
  190. package/dist/jobs/index.d.ts.map +1 -0
  191. package/dist/jobs/index.js +14 -0
  192. package/dist/jobs/queue.d.ts +57 -0
  193. package/dist/jobs/queue.d.ts.map +1 -0
  194. package/dist/jobs/queue.js +134 -0
  195. package/dist/license-encryption.d.ts +21 -0
  196. package/dist/license-encryption.d.ts.map +1 -0
  197. package/dist/license-encryption.js +74 -0
  198. package/dist/license.d.ts +33 -7
  199. package/dist/license.d.ts.map +1 -1
  200. package/dist/license.js +119 -16
  201. package/dist/monitoring/alerts.d.ts.map +1 -1
  202. package/dist/monitoring/cleanup-manager.d.ts.map +1 -1
  203. package/dist/monitoring/health-monitor.d.ts.map +1 -1
  204. package/dist/monitoring/index.d.ts.map +1 -1
  205. package/dist/monitoring/process-registry.d.ts.map +1 -1
  206. package/dist/monitoring/query-monitor.d.ts.map +1 -1
  207. package/dist/monitoring/types.d.ts.map +1 -1
  208. package/dist/monitoring/zombie-detector.d.ts.map +1 -1
  209. package/dist/monitoring/zombie-detector.js +5 -0
  210. package/dist/nextjs/index.d.ts.map +1 -1
  211. package/dist/nextjs/utilities.d.ts.map +1 -1
  212. package/dist/nextjs/withRevealUI.d.ts.map +1 -1
  213. package/dist/observability/alerts.d.ts.map +1 -1
  214. package/dist/observability/alerts.js +1 -2
  215. package/dist/observability/health-check.d.ts +1 -5
  216. package/dist/observability/health-check.d.ts.map +1 -1
  217. package/dist/observability/health-check.js +37 -43
  218. package/dist/observability/index.d.ts.map +1 -1
  219. package/dist/observability/logger.d.ts.map +1 -1
  220. package/dist/observability/logger.js +1 -1
  221. package/dist/observability/metrics.d.ts.map +1 -1
  222. package/dist/observability/tracing.d.ts.map +1 -1
  223. package/dist/observability/tracing.js +0 -1
  224. package/dist/optimization/asset-optimizer.d.ts +6 -2
  225. package/dist/optimization/asset-optimizer.d.ts.map +1 -1
  226. package/dist/optimization/asset-optimizer.js +31 -7
  227. package/dist/optimization/bundle-analyzer.d.ts +1 -1
  228. package/dist/optimization/bundle-analyzer.d.ts.map +1 -1
  229. package/dist/optimization/bundle-analyzer.js +29 -5
  230. package/dist/optimization/code-splitting.d.ts +0 -23
  231. package/dist/optimization/code-splitting.d.ts.map +1 -1
  232. package/dist/optimization/code-splitting.js +0 -29
  233. package/dist/plugins/form-builder.d.ts.map +1 -1
  234. package/dist/plugins/index.d.ts.map +1 -1
  235. package/dist/plugins/nested-docs.d.ts +4 -0
  236. package/dist/plugins/nested-docs.d.ts.map +1 -1
  237. package/dist/plugins/nested-docs.js +50 -5
  238. package/dist/plugins/redirects.d.ts.map +1 -1
  239. package/dist/queries/index.d.ts.map +1 -1
  240. package/dist/queries/queryBuilder.d.ts.map +1 -1
  241. package/dist/queries/queryBuilder.js +15 -5
  242. package/dist/relationships/analyzer.d.ts.map +1 -1
  243. package/dist/relationships/analyzer.js +8 -0
  244. package/dist/relationships/index.d.ts.map +1 -1
  245. package/dist/relationships/populate-core.d.ts +57 -0
  246. package/dist/relationships/populate-core.d.ts.map +1 -0
  247. package/dist/relationships/populate-core.js +116 -0
  248. package/dist/relationships/populate-helpers.d.ts +5 -51
  249. package/dist/relationships/populate-helpers.d.ts.map +1 -1
  250. package/dist/relationships/populate-helpers.js +4 -109
  251. package/dist/relationships/population.d.ts +1 -9
  252. package/dist/relationships/population.d.ts.map +1 -1
  253. package/dist/relationships/population.js +8 -3
  254. package/dist/revealui.d.ts.map +1 -1
  255. package/dist/richtext/exports/client/rcc.d.ts.map +1 -1
  256. package/dist/richtext/exports/client/rcc.js +1 -1
  257. package/dist/richtext/exports/server/rsc.d.ts +17 -0
  258. package/dist/richtext/exports/server/rsc.d.ts.map +1 -1
  259. package/dist/richtext/exports/server/rsc.js +61 -5
  260. package/dist/richtext/index.d.ts.map +1 -1
  261. package/dist/richtext/lexical.d.ts.map +1 -1
  262. package/dist/security/audit.d.ts +1 -1
  263. package/dist/security/audit.d.ts.map +1 -1
  264. package/dist/security/audit.js +4 -2
  265. package/dist/security/auth.d.ts +29 -160
  266. package/dist/security/auth.d.ts.map +1 -1
  267. package/dist/security/auth.js +150 -367
  268. package/dist/security/authorization.d.ts +7 -31
  269. package/dist/security/authorization.d.ts.map +1 -1
  270. package/dist/security/authorization.js +72 -14
  271. package/dist/security/encryption.d.ts +56 -44
  272. package/dist/security/encryption.d.ts.map +1 -1
  273. package/dist/security/encryption.js +128 -100
  274. package/dist/security/gdpr-storage.d.ts +102 -0
  275. package/dist/security/gdpr-storage.d.ts.map +1 -0
  276. package/dist/security/gdpr-storage.js +65 -0
  277. package/dist/security/gdpr.d.ts +57 -37
  278. package/dist/security/gdpr.d.ts.map +1 -1
  279. package/dist/security/gdpr.js +155 -94
  280. package/dist/security/headers.d.ts +4 -2
  281. package/dist/security/headers.d.ts.map +1 -1
  282. package/dist/security/headers.js +35 -17
  283. package/dist/security/index.d.ts +3 -16
  284. package/dist/security/index.d.ts.map +1 -1
  285. package/dist/security/index.js +3 -16
  286. package/dist/server/index.d.ts.map +1 -1
  287. package/dist/server/renderPage.d.ts.map +1 -1
  288. package/dist/storage/index.d.ts +1 -0
  289. package/dist/storage/index.d.ts.map +1 -1
  290. package/dist/storage/index.js +2 -4
  291. package/dist/storage/vercel-blob.d.ts.map +1 -1
  292. package/dist/translations/index.d.ts.map +1 -1
  293. package/dist/types/access.d.ts.map +1 -1
  294. package/dist/types/api.d.ts.map +1 -1
  295. package/dist/types/cms.d.ts.map +1 -1
  296. package/dist/types/config.d.ts.map +1 -1
  297. package/dist/types/core.d.ts.map +1 -1
  298. package/dist/types/extensions.d.ts.map +1 -1
  299. package/dist/types/frontend.d.ts.map +1 -1
  300. package/dist/types/generated.d.ts +0 -2
  301. package/dist/types/generated.d.ts.map +1 -1
  302. package/dist/types/generated.js +0 -1
  303. package/dist/types/hooks.d.ts.map +1 -1
  304. package/dist/types/index.d.ts +1 -1
  305. package/dist/types/index.d.ts.map +1 -1
  306. package/dist/types/interfaces/app.d.ts.map +1 -1
  307. package/dist/types/jobs.d.ts.map +1 -1
  308. package/dist/types/legacy.d.ts.map +1 -1
  309. package/dist/types/plugins.d.ts.map +1 -1
  310. package/dist/types/query.d.ts.map +1 -1
  311. package/dist/types/request.d.ts.map +1 -1
  312. package/dist/types/richtext.d.ts.map +1 -1
  313. package/dist/types/runtime.d.ts +59 -1
  314. package/dist/types/runtime.d.ts.map +1 -1
  315. package/dist/types/schema.d.ts.map +1 -1
  316. package/dist/types/user.d.ts.map +1 -1
  317. package/dist/utils/access-conversion.d.ts.map +1 -1
  318. package/dist/utils/api-wrapper.d.ts.map +1 -1
  319. package/dist/utils/api-wrapper.js +1 -1
  320. package/dist/utils/block-conversion.d.ts.map +1 -1
  321. package/dist/utils/cache.d.ts.map +1 -1
  322. package/dist/utils/deep-clone.js +0 -1
  323. package/dist/utils/error-responses.d.ts.map +1 -1
  324. package/dist/utils/errors.d.ts +36 -0
  325. package/dist/utils/errors.d.ts.map +1 -1
  326. package/dist/utils/errors.js +103 -0
  327. package/dist/utils/field-conversion.d.ts +1 -1
  328. package/dist/utils/field-conversion.d.ts.map +1 -1
  329. package/dist/utils/flattenResult.d.ts.map +1 -1
  330. package/dist/utils/flattenResult.js +0 -1
  331. package/dist/utils/getBlockSelect.d.ts.map +1 -1
  332. package/dist/utils/getSelectMode.d.ts.map +1 -1
  333. package/dist/utils/isValidID.d.ts.map +1 -1
  334. package/dist/utils/json-parsing.d.ts.map +1 -1
  335. package/dist/utils/logger-client.d.ts.map +1 -1
  336. package/dist/utils/logger-server.d.ts.map +1 -1
  337. package/dist/utils/logger.d.ts.map +1 -1
  338. package/dist/utils/request-context.d.ts.map +1 -1
  339. package/dist/utils/stripUnselectedFields.d.ts.map +1 -1
  340. package/dist/utils/type-guards.d.ts.map +1 -1
  341. package/package.json +39 -16
@@ -1,263 +1,10 @@
1
1
  /**
2
- * Authentication System
2
+ * Authentication Utilities
3
3
  *
4
- * JWT-based authentication with session management, token refresh, and OAuth support
4
+ * OAuth support, password hashing, and two-factor authentication.
5
+ * JWT-based auth was removed — session auth is handled by @revealui/auth.
5
6
  */
6
- import { createHmac, randomBytes } from 'node:crypto';
7
- import { jwtVerify, SignJWT } from 'jose';
8
- const DEFAULT_CONFIG = {
9
- jwtAlgorithm: 'HS256',
10
- accessTokenExpiry: 3600, // 1 hour
11
- refreshTokenExpiry: 604800, // 7 days
12
- issuer: 'revealui',
13
- audience: 'revealui-app',
14
- sessionTimeout: 1800, // 30 minutes
15
- refreshThreshold: 300, // 5 minutes before expiry
16
- };
17
- /**
18
- * Authentication system
19
- */
20
- export class AuthSystem {
21
- static MAX_SESSIONS = 10_000;
22
- config;
23
- sessions = new Map();
24
- refreshTokens = new Map(); // refreshToken -> userId
25
- sessionCleanupInterval;
26
- constructor(config) {
27
- this.config = { ...DEFAULT_CONFIG, ...config };
28
- this.startSessionCleanup();
29
- }
30
- /**
31
- * Authenticate user with credentials
32
- */
33
- async authenticate(_email, _password, _deviceInfo) {
34
- // This would integrate with your authentication backend
35
- // For now, this is a placeholder implementation
36
- throw new Error('Implement authenticate() with your auth backend');
37
- }
38
- /**
39
- * Create JWT token
40
- */
41
- async createToken(user, expiresIn = this.config.accessTokenExpiry) {
42
- const now = Math.floor(Date.now() / 1000);
43
- const expiresAt = now + expiresIn;
44
- const payload = {
45
- sub: user.id,
46
- email: user.email,
47
- roles: user.roles,
48
- permissions: user.permissions,
49
- iat: now,
50
- exp: expiresAt,
51
- iss: this.config.issuer,
52
- aud: this.config.audience,
53
- };
54
- const accessToken = await this.encodeJWT(payload);
55
- // Create refresh token
56
- const refreshToken = this.generateRefreshToken(user.id);
57
- return {
58
- accessToken,
59
- refreshToken,
60
- expiresAt: expiresAt * 1000, // Convert to ms
61
- tokenType: 'Bearer',
62
- };
63
- }
64
- /**
65
- * Verify and decode JWT token
66
- */
67
- async verifyToken(token) {
68
- try {
69
- const payload = await this.decodeJWT(token);
70
- // Check expiration
71
- const now = Math.floor(Date.now() / 1000);
72
- if (payload.exp && payload.exp < now) {
73
- throw new Error('Token expired');
74
- }
75
- // Check issuer
76
- if (payload.iss !== this.config.issuer) {
77
- throw new Error('Invalid token issuer');
78
- }
79
- // Check audience
80
- if (payload.aud !== this.config.audience) {
81
- throw new Error('Invalid token audience');
82
- }
83
- return payload;
84
- }
85
- catch (error) {
86
- throw new Error(`Token verification failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
87
- }
88
- }
89
- /**
90
- * Refresh access token
91
- */
92
- async refreshAccessToken(refreshToken) {
93
- const userId = this.refreshTokens.get(refreshToken);
94
- if (!userId) {
95
- throw new Error('Invalid refresh token');
96
- }
97
- // Get user session
98
- const session = Array.from(this.sessions.values()).find((s) => s.user.id === userId);
99
- if (!session) {
100
- throw new Error('Session not found');
101
- }
102
- // Create new access token
103
- return await this.createToken(session.user);
104
- }
105
- /**
106
- * Create session
107
- */
108
- createSession(user, token, deviceInfo) {
109
- const now = Date.now();
110
- // Evict oldest session if at capacity
111
- if (this.sessions.size >= AuthSystem.MAX_SESSIONS) {
112
- let oldestKey;
113
- let oldestTime = Number.POSITIVE_INFINITY;
114
- for (const [key, session] of this.sessions.entries()) {
115
- if (session.lastActivity < oldestTime) {
116
- oldestTime = session.lastActivity;
117
- oldestKey = key;
118
- }
119
- }
120
- if (oldestKey) {
121
- this.destroySession(oldestKey);
122
- }
123
- }
124
- const session = {
125
- user,
126
- token,
127
- createdAt: now,
128
- lastActivity: now,
129
- expiresAt: now + this.config.sessionTimeout * 1000,
130
- deviceInfo,
131
- };
132
- this.sessions.set(user.id, session);
133
- if (token.refreshToken) {
134
- this.refreshTokens.set(token.refreshToken, user.id);
135
- }
136
- return session;
137
- }
138
- /**
139
- * Get session
140
- */
141
- getSession(userId) {
142
- const session = this.sessions.get(userId);
143
- if (!session) {
144
- return undefined;
145
- }
146
- // Check if session expired
147
- if (Date.now() > session.expiresAt) {
148
- this.destroySession(userId);
149
- return undefined;
150
- }
151
- return session;
152
- }
153
- /**
154
- * Update session activity
155
- */
156
- updateSessionActivity(userId) {
157
- const session = this.sessions.get(userId);
158
- if (session) {
159
- session.lastActivity = Date.now();
160
- session.expiresAt = Date.now() + this.config.sessionTimeout * 1000;
161
- }
162
- }
163
- /**
164
- * Destroy session
165
- */
166
- destroySession(userId) {
167
- const session = this.sessions.get(userId);
168
- if (session?.token.refreshToken) {
169
- this.refreshTokens.delete(session.token.refreshToken);
170
- }
171
- this.sessions.delete(userId);
172
- }
173
- /**
174
- * Destroy all sessions for user
175
- */
176
- destroyAllSessions(userId) {
177
- this.destroySession(userId);
178
- }
179
- /**
180
- * Check if token needs refresh
181
- */
182
- shouldRefreshToken(token) {
183
- const timeUntilExpiry = token.expiresAt - Date.now();
184
- return timeUntilExpiry < this.config.refreshThreshold * 1000;
185
- }
186
- /**
187
- * Get user from token
188
- */
189
- async getUserFromToken(token) {
190
- try {
191
- const payload = await this.verifyToken(token);
192
- return {
193
- id: payload.sub,
194
- email: payload.email,
195
- roles: payload.roles,
196
- permissions: payload.permissions,
197
- };
198
- }
199
- catch {
200
- return null;
201
- }
202
- }
203
- /**
204
- * Encode JWT using jose library (Web Crypto API)
205
- */
206
- async encodeJWT(payload) {
207
- const secret = new TextEncoder().encode(this.config.jwtSecret);
208
- const alg = this.config.jwtAlgorithm === 'RS256' ? 'RS256' : this.config.jwtAlgorithm;
209
- const builder = new SignJWT({
210
- email: payload.email,
211
- roles: payload.roles,
212
- permissions: payload.permissions,
213
- })
214
- .setProtectedHeader({ alg })
215
- .setSubject(payload.sub)
216
- .setIssuedAt(payload.iat)
217
- .setExpirationTime(payload.exp);
218
- if (payload.iss)
219
- builder.setIssuer(payload.iss);
220
- if (payload.aud)
221
- builder.setAudience(payload.aud);
222
- return builder.sign(secret);
223
- }
224
- /**
225
- * Decode and verify JWT using jose library (Web Crypto API)
226
- */
227
- async decodeJWT(token) {
228
- const secret = new TextEncoder().encode(this.config.jwtSecret);
229
- const { payload } = await jwtVerify(token, secret);
230
- return payload;
231
- }
232
- /**
233
- * Generate cryptographically secure refresh token
234
- */
235
- generateRefreshToken(userId) {
236
- const token = randomBytes(32).toString('hex');
237
- return `${userId}.${token}`;
238
- }
239
- /**
240
- * Start session cleanup interval
241
- */
242
- startSessionCleanup() {
243
- this.sessionCleanupInterval = setInterval(() => {
244
- const now = Date.now();
245
- for (const [userId, session] of this.sessions.entries()) {
246
- if (now > session.expiresAt) {
247
- this.destroySession(userId);
248
- }
249
- }
250
- }, 60000); // Every minute
251
- }
252
- /**
253
- * Stop session cleanup
254
- */
255
- destroy() {
256
- if (this.sessionCleanupInterval) {
257
- clearInterval(this.sessionCleanupInterval);
258
- }
259
- }
260
- }
7
+ import { createHmac, timingSafeEqual } from 'node:crypto';
261
8
  /**
262
9
  * OAuth provider configurations
263
10
  */
@@ -287,9 +34,10 @@ export const OAuthProviders = {
287
34
  export class OAuthClient {
288
35
  config;
289
36
  constructor(config) {
37
+ // Provider defaults fill in missing fields; user-provided config takes precedence
290
38
  this.config = {
291
- ...config,
292
39
  ...OAuthProviders[config.provider],
40
+ ...config,
293
41
  };
294
42
  }
295
43
  /**
@@ -311,6 +59,8 @@ export class OAuthClient {
311
59
  * Exchange code for token
312
60
  */
313
61
  async exchangeCodeForToken(code) {
62
+ if (!this.config.tokenUrl)
63
+ throw new Error('tokenUrl is required for OAuth');
314
64
  const response = await fetch(this.config.tokenUrl, {
315
65
  method: 'POST',
316
66
  headers: {
@@ -325,7 +75,15 @@ export class OAuthClient {
325
75
  }),
326
76
  });
327
77
  if (!response.ok) {
328
- throw new Error('Failed to exchange code for token');
78
+ let detail = '';
79
+ try {
80
+ const body = await response.text();
81
+ detail = `: ${response.status} ${body.slice(0, 200)}`;
82
+ }
83
+ catch {
84
+ detail = `: ${response.status}`;
85
+ }
86
+ throw new Error(`Failed to exchange code for token${detail}`);
329
87
  }
330
88
  return response.json();
331
89
  }
@@ -333,13 +91,24 @@ export class OAuthClient {
333
91
  * Get user info
334
92
  */
335
93
  async getUserInfo(accessToken) {
94
+ if (!this.config.userInfoUrl)
95
+ throw new Error('userInfoUrl is required for OAuth');
336
96
  const response = await fetch(this.config.userInfoUrl, {
337
97
  headers: {
98
+ // biome-ignore lint/style/useNamingConvention: HTTP header convention
338
99
  Authorization: `Bearer ${accessToken}`,
339
100
  },
340
101
  });
341
102
  if (!response.ok) {
342
- throw new Error('Failed to fetch user info');
103
+ let detail = '';
104
+ try {
105
+ const body = await response.text();
106
+ detail = `: ${response.status} ${body.slice(0, 200)}`;
107
+ }
108
+ catch {
109
+ detail = `: ${response.status}`;
110
+ }
111
+ throw new Error(`Failed to fetch user info${detail}`);
343
112
  }
344
113
  return response.json();
345
114
  }
@@ -348,127 +117,141 @@ export class OAuthClient {
348
117
  * Password hashing utilities
349
118
  *
350
119
  * Uses PBKDF2 with a random salt for secure password hashing.
351
- * For even stronger hashing, use bcryptjs (available in @revealui/auth).
120
+ *
121
+ * @deprecated Use `@revealui/auth` instead — it uses bcrypt which is more
122
+ * resistant to GPU brute-force attacks. This PBKDF2 implementation will be
123
+ * removed in a future major version.
352
124
  */
353
- export class PasswordHasher {
354
- static ITERATIONS = 100000;
355
- static KEY_LENGTH = 64;
356
- static DIGEST = 'sha512';
357
- /**
358
- * Hash password with PBKDF2 and random salt
359
- */
360
- static async hash(password) {
361
- const { pbkdf2, randomBytes: rb } = await import('node:crypto');
362
- const salt = rb(16).toString('hex');
363
- return new Promise((resolve, reject) => {
364
- pbkdf2(password, salt, PasswordHasher.ITERATIONS, PasswordHasher.KEY_LENGTH, PasswordHasher.DIGEST, (err, derivedKey) => {
365
- if (err)
366
- reject(err);
367
- else
368
- resolve(`${salt}:${derivedKey.toString('hex')}`);
369
- });
125
+ const PH_ITERATIONS = 100000;
126
+ const PH_KEY_LENGTH = 64;
127
+ const PH_DIGEST = 'sha512';
128
+ /**
129
+ * Hash password with PBKDF2 and random salt
130
+ */
131
+ async function hashPassword(password) {
132
+ const { pbkdf2, randomBytes: rb } = await import('node:crypto');
133
+ const salt = rb(16).toString('hex');
134
+ return new Promise((resolve, reject) => {
135
+ pbkdf2(password, salt, PH_ITERATIONS, PH_KEY_LENGTH, PH_DIGEST, (err, derivedKey) => {
136
+ if (err)
137
+ reject(err);
138
+ else
139
+ resolve(`${salt}:${derivedKey.toString('hex')}`);
370
140
  });
141
+ });
142
+ }
143
+ /**
144
+ * Verify password against stored hash
145
+ */
146
+ async function verifyPassword(password, storedHash) {
147
+ const { pbkdf2, timingSafeEqual: tse } = await import('node:crypto');
148
+ const [salt, hash] = storedHash.split(':');
149
+ if (!(salt && hash)) {
150
+ return false;
371
151
  }
372
- /**
373
- * Verify password against stored hash
374
- */
375
- static async verify(password, storedHash) {
376
- const { pbkdf2, timingSafeEqual } = await import('node:crypto');
377
- const [salt, hash] = storedHash.split(':');
378
- if (!(salt && hash)) {
379
- return false;
380
- }
381
- return new Promise((resolve, reject) => {
382
- pbkdf2(password, salt, PasswordHasher.ITERATIONS, PasswordHasher.KEY_LENGTH, PasswordHasher.DIGEST, (err, derivedKey) => {
383
- if (err)
384
- reject(err);
152
+ return new Promise((resolve, reject) => {
153
+ pbkdf2(password, salt, PH_ITERATIONS, PH_KEY_LENGTH, PH_DIGEST, (err, derivedKey) => {
154
+ if (err)
155
+ reject(err);
156
+ else {
157
+ const derived = Buffer.from(derivedKey.toString('hex'), 'utf-8');
158
+ const expected = Buffer.from(hash, 'utf-8');
159
+ if (derived.length !== expected.length) {
160
+ resolve(false);
161
+ }
385
162
  else {
386
- const derived = Buffer.from(derivedKey.toString('hex'), 'utf-8');
387
- const expected = Buffer.from(hash, 'utf-8');
388
- if (derived.length !== expected.length) {
389
- resolve(false);
390
- }
391
- else {
392
- resolve(timingSafeEqual(derived, expected));
393
- }
163
+ resolve(tse(derived, expected));
394
164
  }
395
- });
165
+ }
396
166
  });
397
- }
167
+ });
398
168
  }
169
+ export const PasswordHasher = {
170
+ hash: hashPassword,
171
+ verify: verifyPassword,
172
+ };
399
173
  /**
400
174
  * Two-factor authentication
401
175
  */
402
- export class TwoFactorAuth {
403
- /**
404
- * Generate TOTP secret
405
- */
406
- static generateSecret() {
407
- const crypto = globalThis.crypto;
408
- if (!crypto) {
409
- throw new Error('Crypto API not available');
176
+ /**
177
+ * Base32 encode
178
+ */
179
+ function base32Encode(buffer) {
180
+ const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
181
+ let result = '';
182
+ let bits = 0;
183
+ let value = 0;
184
+ for (const byte of buffer) {
185
+ if (byte === undefined)
186
+ continue;
187
+ value = (value << 8) | byte;
188
+ bits += 8;
189
+ while (bits >= 5) {
190
+ result += alphabet[(value >>> (bits - 5)) & 31];
191
+ bits -= 5;
410
192
  }
411
- const buffer = new Uint8Array(20);
412
- crypto.getRandomValues(buffer);
413
- return TwoFactorAuth.base32Encode(buffer);
414
193
  }
415
- /**
416
- * Generate TOTP code
417
- */
418
- static generateCode(secret, timestamp) {
419
- const time = Math.floor((timestamp || Date.now()) / 30000);
420
- const hmacDigest = TwoFactorAuth.hmac(secret, time.toString());
421
- const offset = hmacDigest[hmacDigest.length - 1] & 0x0f;
422
- const code = (((hmacDigest[offset] & 0x7f) << 24) |
423
- ((hmacDigest[offset + 1] & 0xff) << 16) |
424
- ((hmacDigest[offset + 2] & 0xff) << 8) |
425
- (hmacDigest[offset + 3] & 0xff)) %
426
- 1000000;
427
- return code.toString().padStart(6, '0');
194
+ if (bits > 0) {
195
+ result += alphabet[(value << (5 - bits)) & 31];
428
196
  }
429
- /**
430
- * Verify TOTP code
431
- */
432
- static verifyCode(secret, code, window = 1) {
433
- const timestamp = Date.now();
434
- // Check current and adjacent time windows
435
- for (let i = -window; i <= window; i++) {
436
- const testTime = timestamp + i * 30000;
437
- const testCode = TwoFactorAuth.generateCode(secret, testTime);
438
- if (testCode === code) {
439
- return true;
440
- }
441
- }
442
- return false;
197
+ return result;
198
+ }
199
+ /**
200
+ * HMAC-SHA1 implementation for TOTP
201
+ */
202
+ function totpHmac(key, message) {
203
+ const hmacDigest = createHmac('sha1', key).update(message).digest();
204
+ return new Uint8Array(hmacDigest);
205
+ }
206
+ /**
207
+ * Generate TOTP secret
208
+ */
209
+ function generateSecret() {
210
+ const crypto = globalThis.crypto;
211
+ if (!crypto) {
212
+ throw new Error('Crypto API not available');
443
213
  }
444
- /**
445
- * Base32 encode
446
- */
447
- static base32Encode(buffer) {
448
- const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
449
- let result = '';
450
- let bits = 0;
451
- let value = 0;
452
- for (const byte of buffer) {
453
- if (byte === undefined)
454
- continue;
455
- value = (value << 8) | byte;
456
- bits += 8;
457
- while (bits >= 5) {
458
- result += alphabet[(value >>> (bits - 5)) & 31];
459
- bits -= 5;
460
- }
461
- }
462
- if (bits > 0) {
463
- result += alphabet[(value << (5 - bits)) & 31];
214
+ const buffer = new Uint8Array(20);
215
+ crypto.getRandomValues(buffer);
216
+ return base32Encode(buffer);
217
+ }
218
+ /**
219
+ * Generate TOTP code
220
+ */
221
+ function generateCode(secret, timestamp) {
222
+ const time = Math.floor((timestamp || Date.now()) / 30000);
223
+ const hmacDigest = totpHmac(secret, time.toString());
224
+ // biome-ignore lint/style/noNonNullAssertion: HMAC-SHA1 always produces 20 bytes; buffer indices are guaranteed valid
225
+ const offset = hmacDigest[hmacDigest.length - 1] & 0x0f;
226
+ // biome-ignore lint/style/noNonNullAssertion: HMAC-SHA1 always produces 20 bytes; buffer indices are guaranteed valid
227
+ const b0 = hmacDigest[offset] & 0x7f;
228
+ // biome-ignore lint/style/noNonNullAssertion: HMAC-SHA1 always produces 20 bytes; buffer indices are guaranteed valid
229
+ const b1 = hmacDigest[offset + 1] & 0xff;
230
+ // biome-ignore lint/style/noNonNullAssertion: HMAC-SHA1 always produces 20 bytes; buffer indices are guaranteed valid
231
+ const b2 = hmacDigest[offset + 2] & 0xff;
232
+ // biome-ignore lint/style/noNonNullAssertion: HMAC-SHA1 always produces 20 bytes; buffer indices are guaranteed valid
233
+ const b3 = hmacDigest[offset + 3] & 0xff;
234
+ const code = ((b0 << 24) | (b1 << 16) | (b2 << 8) | b3) % 1000000;
235
+ return code.toString().padStart(6, '0');
236
+ }
237
+ /**
238
+ * Verify TOTP code
239
+ */
240
+ function verifyCode(secret, code, window = 1) {
241
+ const timestamp = Date.now();
242
+ // Check current and adjacent time windows
243
+ for (let i = -window; i <= window; i++) {
244
+ const testTime = timestamp + i * 30000;
245
+ const testCode = generateCode(secret, testTime);
246
+ if (testCode.length === code.length &&
247
+ timingSafeEqual(Buffer.from(testCode), Buffer.from(code))) {
248
+ return true;
464
249
  }
465
- return result;
466
- }
467
- /**
468
- * HMAC-SHA1 implementation for TOTP
469
- */
470
- static hmac(key, message) {
471
- const hmacDigest = createHmac('sha1', key).update(message).digest();
472
- return new Uint8Array(hmacDigest);
473
250
  }
251
+ return false;
474
252
  }
253
+ export const TwoFactorAuth = {
254
+ generateSecret,
255
+ generateCode,
256
+ verifyCode,
257
+ };
@@ -120,37 +120,12 @@ export declare class AuthorizationSystem {
120
120
  */
121
121
  export declare const authorization: AuthorizationSystem;
122
122
  /**
123
- * Common roles
123
+ * Common roles — aligned with DB schema (`users.role` column)
124
+ * and `UserRoleSchema` in @revealui/contracts.
125
+ *
126
+ * Values: owner | admin | editor | viewer | agent | contributor
124
127
  */
125
- export declare const CommonRoles: {
126
- admin: {
127
- id: string;
128
- name: string;
129
- description: string;
130
- permissions: {
131
- resource: string;
132
- action: string;
133
- }[];
134
- };
135
- user: {
136
- id: string;
137
- name: string;
138
- description: string;
139
- permissions: {
140
- resource: string;
141
- action: string;
142
- }[];
143
- };
144
- guest: {
145
- id: string;
146
- name: string;
147
- description: string;
148
- permissions: {
149
- resource: string;
150
- action: string;
151
- }[];
152
- };
153
- };
128
+ export declare const CommonRoles: Record<string, Role>;
154
129
  /**
155
130
  * Permission builder
156
131
  */
@@ -206,7 +181,8 @@ export declare function checkAttributeAccess(context: AuthorizationContext, reso
206
181
  export declare class PermissionCache {
207
182
  private cache;
208
183
  private ttl;
209
- constructor(ttl?: number);
184
+ private maxEntries;
185
+ constructor(ttl?: number, maxEntries?: number);
210
186
  /**
211
187
  * Get cached permission
212
188
  */
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/security/authorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/security/authorization.ts"],"names":[],"mappings":"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"}