@authup/server-core 1.0.0-beta.52 → 1.0.0-beta.54

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 (1541) hide show
  1. package/dist/adapters/database/data-source/options/module.d.ts.map +1 -1
  2. package/dist/adapters/database/data-source/options/module.mjs +18 -21
  3. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  4. package/dist/adapters/database/domains/client/entity.d.ts +17 -14
  5. package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
  6. package/dist/adapters/database/domains/client/entity.mjs +72 -30
  7. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  8. package/dist/adapters/database/domains/client/subscriber.mjs +1 -1
  9. package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
  10. package/dist/adapters/database/domains/client-permission/entity.d.ts +10 -10
  11. package/dist/adapters/database/domains/client-permission/entity.d.ts.map +1 -1
  12. package/dist/adapters/database/domains/client-permission/entity.mjs +42 -23
  13. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  14. package/dist/adapters/database/domains/client-permission/subscriber.mjs +2 -2
  15. package/dist/adapters/database/domains/client-permission/subscriber.mjs.map +1 -1
  16. package/dist/adapters/database/domains/client-role/entity.d.ts +8 -8
  17. package/dist/adapters/database/domains/client-role/entity.d.ts.map +1 -1
  18. package/dist/adapters/database/domains/client-role/entity.mjs +29 -17
  19. package/dist/adapters/database/domains/client-role/entity.mjs.map +1 -1
  20. package/dist/adapters/database/domains/client-role/subscriber.mjs +2 -2
  21. package/dist/adapters/database/domains/client-role/subscriber.mjs.map +1 -1
  22. package/dist/adapters/database/domains/client-scope/entity.d.ts +8 -8
  23. package/dist/adapters/database/domains/client-scope/entity.d.ts.map +1 -1
  24. package/dist/adapters/database/domains/client-scope/entity.mjs +29 -17
  25. package/dist/adapters/database/domains/client-scope/entity.mjs.map +1 -1
  26. package/dist/adapters/database/domains/consent/entity.d.ts +20 -0
  27. package/dist/adapters/database/domains/consent/entity.d.ts.map +1 -0
  28. package/dist/adapters/database/domains/consent/entity.mjs +125 -0
  29. package/dist/adapters/database/domains/consent/entity.mjs.map +1 -0
  30. package/dist/adapters/database/domains/consent/index.d.ts.map +1 -0
  31. package/dist/adapters/database/domains/consent/index.mjs +6 -0
  32. package/dist/adapters/database/domains/consent/subscriber.d.ts +6 -0
  33. package/dist/adapters/database/domains/consent/subscriber.d.ts.map +1 -0
  34. package/dist/adapters/database/domains/{robot-role → consent}/subscriber.mjs +11 -11
  35. package/dist/adapters/database/domains/consent/subscriber.mjs.map +1 -0
  36. package/dist/adapters/database/domains/constants.d.ts +1 -3
  37. package/dist/adapters/database/domains/constants.d.ts.map +1 -1
  38. package/dist/adapters/database/domains/constants.mjs +1 -3
  39. package/dist/adapters/database/domains/constants.mjs.map +1 -1
  40. package/dist/adapters/database/domains/event/entity.d.ts +22 -0
  41. package/dist/adapters/database/domains/event/entity.d.ts.map +1 -0
  42. package/dist/adapters/database/domains/event/entity.mjs +189 -0
  43. package/dist/adapters/database/domains/event/entity.mjs.map +1 -0
  44. package/dist/adapters/database/domains/event/index.d.ts +2 -0
  45. package/dist/adapters/database/domains/event/index.d.ts.map +1 -0
  46. package/dist/adapters/database/domains/event/index.mjs +5 -0
  47. package/dist/adapters/database/domains/identity-provider/entity.d.ts +4 -4
  48. package/dist/adapters/database/domains/identity-provider/entity.d.ts.map +1 -1
  49. package/dist/adapters/database/domains/identity-provider/entity.mjs +17 -10
  50. package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
  51. package/dist/adapters/database/domains/identity-provider/repository.mjs +3 -3
  52. package/dist/adapters/database/domains/identity-provider/repository.mjs.map +1 -1
  53. package/dist/adapters/database/domains/identity-provider/subscriber.mjs +1 -1
  54. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  55. package/dist/adapters/database/domains/identity-provider-account/entity.d.ts +15 -15
  56. package/dist/adapters/database/domains/identity-provider-account/entity.d.ts.map +1 -1
  57. package/dist/adapters/database/domains/identity-provider-account/entity.mjs +52 -33
  58. package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
  59. package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts +4 -4
  60. package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts.map +1 -1
  61. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs +18 -9
  62. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
  63. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts +9 -9
  64. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts.map +1 -1
  65. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs +29 -19
  66. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
  67. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts +10 -10
  68. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts.map +1 -1
  69. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs +32 -21
  70. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
  71. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts +10 -10
  72. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts.map +1 -1
  73. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs +32 -21
  74. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
  75. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs +1 -1
  76. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  77. package/dist/adapters/database/domains/index.d.ts +4 -3
  78. package/dist/adapters/database/domains/index.d.ts.map +1 -1
  79. package/dist/adapters/database/domains/index.mjs +24 -24
  80. package/dist/adapters/database/domains/key/entity.d.ts +12 -8
  81. package/dist/adapters/database/domains/key/entity.d.ts.map +1 -1
  82. package/dist/adapters/database/domains/key/entity.mjs +56 -21
  83. package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
  84. package/dist/adapters/database/domains/permission/entity.d.ts +7 -7
  85. package/dist/adapters/database/domains/permission/entity.d.ts.map +1 -1
  86. package/dist/adapters/database/domains/permission/entity.mjs +33 -18
  87. package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
  88. package/dist/adapters/database/domains/permission/subscriber.mjs +2 -2
  89. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  90. package/dist/adapters/database/domains/permission-policy/entity.d.ts +8 -8
  91. package/dist/adapters/database/domains/permission-policy/entity.d.ts.map +1 -1
  92. package/dist/adapters/database/domains/permission-policy/entity.mjs +31 -19
  93. package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
  94. package/dist/adapters/database/domains/policy/entity.d.ts +6 -6
  95. package/dist/adapters/database/domains/policy/entity.d.ts.map +1 -1
  96. package/dist/adapters/database/domains/policy/entity.mjs +28 -14
  97. package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
  98. package/dist/adapters/database/domains/policy/repository.d.ts.map +1 -1
  99. package/dist/adapters/database/domains/policy/repository.mjs +6 -6
  100. package/dist/adapters/database/domains/policy/repository.mjs.map +1 -1
  101. package/dist/adapters/database/domains/policy-attribute/entity.d.ts +4 -4
  102. package/dist/adapters/database/domains/policy-attribute/entity.d.ts.map +1 -1
  103. package/dist/adapters/database/domains/policy-attribute/entity.mjs +18 -9
  104. package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
  105. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs +2 -2
  106. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  107. package/dist/adapters/database/domains/realm/entity.d.ts +4 -4
  108. package/dist/adapters/database/domains/realm/entity.d.ts.map +1 -1
  109. package/dist/adapters/database/domains/realm/entity.mjs +16 -8
  110. package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
  111. package/dist/adapters/database/domains/role/entity.d.ts +6 -6
  112. package/dist/adapters/database/domains/role/entity.d.ts.map +1 -1
  113. package/dist/adapters/database/domains/role/entity.mjs +30 -16
  114. package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
  115. package/dist/adapters/database/domains/role/repository.mjs +4 -4
  116. package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
  117. package/dist/adapters/database/domains/role/subscriber.mjs +1 -1
  118. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  119. package/dist/adapters/database/domains/role-attribute/entity.d.ts +4 -4
  120. package/dist/adapters/database/domains/role-attribute/entity.d.ts.map +1 -1
  121. package/dist/adapters/database/domains/role-attribute/entity.mjs +18 -9
  122. package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
  123. package/dist/adapters/database/domains/role-attribute/subscriber.mjs +2 -2
  124. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  125. package/dist/adapters/database/domains/role-permission/entity.d.ts +10 -10
  126. package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
  127. package/dist/adapters/database/domains/role-permission/entity.mjs +39 -23
  128. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  129. package/dist/adapters/database/domains/role-permission/subscriber.mjs +2 -2
  130. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  131. package/dist/adapters/database/domains/scope/entity.d.ts +5 -5
  132. package/dist/adapters/database/domains/scope/entity.d.ts.map +1 -1
  133. package/dist/adapters/database/domains/scope/entity.mjs +23 -12
  134. package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
  135. package/dist/adapters/database/domains/scope/subscriber.mjs +1 -1
  136. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  137. package/dist/adapters/database/domains/session/entity.d.ts +14 -15
  138. package/dist/adapters/database/domains/session/entity.d.ts.map +1 -1
  139. package/dist/adapters/database/domains/session/entity.mjs +50 -38
  140. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  141. package/dist/adapters/database/domains/session-token/entity.d.ts +9 -9
  142. package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -1
  143. package/dist/adapters/database/domains/session-token/entity.mjs +32 -19
  144. package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -1
  145. package/dist/adapters/database/domains/trust-anchor/entity.d.ts +13 -0
  146. package/dist/adapters/database/domains/trust-anchor/entity.d.ts.map +1 -0
  147. package/dist/adapters/database/domains/trust-anchor/entity.mjs +61 -0
  148. package/dist/adapters/database/domains/trust-anchor/entity.mjs.map +1 -0
  149. package/dist/adapters/database/domains/trust-anchor/index.d.ts +2 -0
  150. package/dist/adapters/database/domains/trust-anchor/index.d.ts.map +1 -0
  151. package/dist/adapters/database/domains/trust-anchor/index.mjs +5 -0
  152. package/dist/adapters/database/domains/user/entity.d.ts +12 -12
  153. package/dist/adapters/database/domains/user/entity.d.ts.map +1 -1
  154. package/dist/adapters/database/domains/user/entity.mjs +42 -27
  155. package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
  156. package/dist/adapters/database/domains/user/repository.mjs +3 -3
  157. package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
  158. package/dist/adapters/database/domains/user/subscriber.mjs +1 -1
  159. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  160. package/dist/adapters/database/domains/user-attribute/entity.d.ts +4 -4
  161. package/dist/adapters/database/domains/user-attribute/entity.d.ts.map +1 -1
  162. package/dist/adapters/database/domains/user-attribute/entity.mjs +15 -9
  163. package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
  164. package/dist/adapters/database/domains/user-attribute/subscriber.mjs +2 -2
  165. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  166. package/dist/adapters/database/domains/user-authenticator/entity.d.ts +20 -0
  167. package/dist/adapters/database/domains/user-authenticator/entity.d.ts.map +1 -0
  168. package/dist/adapters/database/domains/user-authenticator/entity.mjs +111 -0
  169. package/dist/adapters/database/domains/user-authenticator/entity.mjs.map +1 -0
  170. package/dist/adapters/database/domains/user-authenticator/index.d.ts +2 -0
  171. package/dist/adapters/database/domains/user-authenticator/index.d.ts.map +1 -0
  172. package/dist/adapters/database/domains/user-authenticator/index.mjs +5 -0
  173. package/dist/adapters/database/domains/user-permission/entity.d.ts +10 -10
  174. package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
  175. package/dist/adapters/database/domains/user-permission/entity.mjs +38 -22
  176. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  177. package/dist/adapters/database/domains/user-permission/subscriber.mjs +2 -2
  178. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  179. package/dist/adapters/database/domains/user-role/entity.d.ts +8 -8
  180. package/dist/adapters/database/domains/user-role/entity.d.ts.map +1 -1
  181. package/dist/adapters/database/domains/user-role/entity.mjs +29 -17
  182. package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
  183. package/dist/adapters/database/domains/user-role/subscriber.mjs +2 -2
  184. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  185. package/dist/adapters/database/errors/driver.d.ts +14 -0
  186. package/dist/adapters/database/errors/driver.d.ts.map +1 -0
  187. package/dist/adapters/database/errors/driver.mjs +32 -0
  188. package/dist/adapters/database/errors/driver.mjs.map +1 -0
  189. package/dist/adapters/database/errors/index.d.ts +1 -0
  190. package/dist/adapters/database/errors/index.d.ts.map +1 -1
  191. package/dist/adapters/database/errors/index.mjs +2 -1
  192. package/dist/adapters/database/helpers/is-supported.mjs +1 -1
  193. package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
  194. package/dist/adapters/database/index.mjs +17 -17
  195. package/dist/adapters/database/migrations/mysql/1783769340000-Default.d.ts +50 -0
  196. package/dist/adapters/database/migrations/mysql/1783769340000-Default.d.ts.map +1 -0
  197. package/dist/adapters/database/migrations/mysql/1783769340000-Default.mjs +320 -0
  198. package/dist/adapters/database/migrations/mysql/1783769340000-Default.mjs.map +1 -0
  199. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.d.ts +12 -0
  200. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.d.ts.map +1 -0
  201. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.mjs +42 -0
  202. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.mjs.map +1 -0
  203. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.d.ts +18 -0
  204. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.d.ts.map +1 -0
  205. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.mjs +161 -0
  206. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.mjs.map +1 -0
  207. package/dist/adapters/database/migrations/postgres/1783769340000-Default.d.ts +50 -0
  208. package/dist/adapters/database/migrations/postgres/1783769340000-Default.d.ts.map +1 -0
  209. package/dist/adapters/database/migrations/postgres/1783769340000-Default.mjs +310 -0
  210. package/dist/adapters/database/migrations/postgres/1783769340000-Default.mjs.map +1 -0
  211. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.d.ts +12 -0
  212. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.d.ts.map +1 -0
  213. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.mjs +42 -0
  214. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.mjs.map +1 -0
  215. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.d.ts +18 -0
  216. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.d.ts.map +1 -0
  217. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.mjs +167 -0
  218. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.mjs.map +1 -0
  219. package/dist/adapters/database/subscriber/module.d.ts +1 -1
  220. package/dist/adapters/database/subscriber/module.d.ts.map +1 -1
  221. package/dist/adapters/database/subscriber/module.mjs +4 -3
  222. package/dist/adapters/database/subscriber/module.mjs.map +1 -1
  223. package/dist/adapters/http/adapters/index.mjs +2 -2
  224. package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts +4 -1
  225. package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts.map +1 -1
  226. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +27 -2
  227. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  228. package/dist/adapters/http/adapters/oauth2/authorization/types.d.ts +9 -1
  229. package/dist/adapters/http/adapters/oauth2/authorization/types.d.ts.map +1 -1
  230. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +4 -1
  231. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
  232. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +24 -4
  233. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  234. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts +4 -3
  235. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
  236. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +13 -6
  237. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  238. package/dist/adapters/http/adapters/oauth2/grant-types/index.d.ts +0 -1
  239. package/dist/adapters/http/adapters/oauth2/grant-types/index.d.ts.map +1 -1
  240. package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +2 -2
  241. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +38 -2
  242. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
  243. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +119 -6
  244. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  245. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -0
  246. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
  247. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +16 -3
  248. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  249. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +14 -6
  250. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  251. package/dist/adapters/http/adapters/oauth2/grant-types/utils/certificate.d.ts +5 -0
  252. package/dist/adapters/http/adapters/oauth2/grant-types/utils/certificate.d.ts.map +1 -0
  253. package/dist/adapters/http/adapters/oauth2/grant-types/utils/certificate.mjs +18 -0
  254. package/dist/adapters/http/adapters/oauth2/grant-types/utils/certificate.mjs.map +1 -0
  255. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +1 -1
  256. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts.map +1 -1
  257. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +1 -4
  258. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
  259. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts +1 -0
  260. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts.map +1 -1
  261. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.mjs +2 -1
  262. package/dist/adapters/http/adapters/oauth2/index.mjs +2 -2
  263. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs +3 -3
  264. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs.map +1 -1
  265. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs +2 -2
  266. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs.map +1 -1
  267. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs +2 -2
  268. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs.map +1 -1
  269. package/dist/adapters/http/controllers/entities/consent/index.d.ts.map +1 -0
  270. package/dist/adapters/http/controllers/entities/consent/index.mjs +5 -0
  271. package/dist/adapters/http/controllers/entities/consent/module.d.ts +15 -0
  272. package/dist/adapters/http/controllers/entities/consent/module.d.ts.map +1 -0
  273. package/dist/adapters/http/controllers/entities/{robot-role → consent}/module.mjs +16 -29
  274. package/dist/adapters/http/controllers/entities/consent/module.mjs.map +1 -0
  275. package/dist/adapters/http/controllers/entities/event/index.d.ts.map +1 -0
  276. package/dist/adapters/http/controllers/entities/event/index.mjs +5 -0
  277. package/dist/adapters/http/controllers/entities/event/module.d.ts +14 -0
  278. package/dist/adapters/http/controllers/entities/event/module.d.ts.map +1 -0
  279. package/dist/adapters/http/controllers/entities/event/module.mjs +68 -0
  280. package/dist/adapters/http/controllers/entities/event/module.mjs.map +1 -0
  281. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +4 -1
  282. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  283. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +55 -21
  284. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  285. package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts +3 -1
  286. package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts.map +1 -1
  287. package/dist/adapters/http/controllers/entities/index.d.ts +5 -3
  288. package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
  289. package/dist/adapters/http/controllers/entities/index.mjs +11 -9
  290. package/dist/adapters/http/controllers/entities/key/index.d.ts.map +1 -0
  291. package/dist/adapters/http/controllers/entities/key/index.mjs +5 -0
  292. package/dist/adapters/http/controllers/entities/key/module.d.ts +17 -0
  293. package/dist/adapters/http/controllers/entities/key/module.d.ts.map +1 -0
  294. package/dist/adapters/http/controllers/entities/key/module.mjs +116 -0
  295. package/dist/adapters/http/controllers/entities/key/module.mjs.map +1 -0
  296. package/dist/adapters/http/controllers/entities/policy/utils/validation.d.ts +1 -1
  297. package/dist/adapters/http/controllers/entities/policy/utils/validation.d.ts.map +1 -1
  298. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs +4 -4
  299. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs.map +1 -1
  300. package/dist/adapters/http/controllers/entities/realm/module.d.ts +2 -0
  301. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  302. package/dist/adapters/http/controllers/entities/realm/module.mjs +16 -1
  303. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  304. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs +1 -1
  305. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs.map +1 -1
  306. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs +3 -3
  307. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs.map +1 -1
  308. package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
  309. package/dist/adapters/http/controllers/entities/trust-anchor/index.d.ts +2 -0
  310. package/dist/adapters/http/controllers/entities/trust-anchor/index.d.ts.map +1 -0
  311. package/dist/adapters/http/controllers/entities/trust-anchor/index.mjs +5 -0
  312. package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts +17 -0
  313. package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts.map +1 -0
  314. package/dist/adapters/http/controllers/entities/{robot-permission → trust-anchor}/module.mjs +30 -30
  315. package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs.map +1 -0
  316. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs +1 -1
  317. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs.map +1 -1
  318. package/dist/adapters/http/controllers/entities/user-authenticator/index.d.ts +2 -0
  319. package/dist/adapters/http/controllers/entities/user-authenticator/index.d.ts.map +1 -0
  320. package/dist/adapters/http/controllers/entities/user-authenticator/index.mjs +5 -0
  321. package/dist/adapters/http/controllers/entities/user-authenticator/module.d.ts +21 -0
  322. package/dist/adapters/http/controllers/entities/user-authenticator/module.d.ts.map +1 -0
  323. package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs +154 -0
  324. package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs.map +1 -0
  325. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs +3 -3
  326. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs.map +1 -1
  327. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs +2 -2
  328. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs.map +1 -1
  329. package/dist/adapters/http/controllers/index.mjs +7 -6
  330. package/dist/adapters/http/controllers/workflows/authenticator-challenge/index.d.ts +2 -0
  331. package/dist/adapters/http/controllers/workflows/authenticator-challenge/index.d.ts.map +1 -0
  332. package/dist/adapters/http/controllers/workflows/authenticator-challenge/index.mjs +5 -0
  333. package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.d.ts +46 -0
  334. package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.d.ts.map +1 -0
  335. package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs +132 -0
  336. package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs.map +1 -0
  337. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  338. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +38 -10
  339. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  340. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +17 -1
  341. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
  342. package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
  343. package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
  344. package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
  345. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts.map +1 -1
  346. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +32 -18
  347. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
  348. package/dist/adapters/http/controllers/workflows/jwks/module.d.ts.map +1 -1
  349. package/dist/adapters/http/controllers/workflows/jwks/module.mjs +31 -17
  350. package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
  351. package/dist/adapters/http/controllers/workflows/status/module.mjs +2 -2
  352. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  353. package/dist/adapters/http/controllers/workflows/token/module.d.ts +2 -1
  354. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  355. package/dist/adapters/http/controllers/workflows/token/module.mjs +30 -16
  356. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  357. package/dist/adapters/http/controllers/workflows/token/types.d.ts +11 -5
  358. package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
  359. package/dist/adapters/http/index.mjs +13 -9
  360. package/dist/adapters/http/middleware/built-in/assets.mjs +3 -3
  361. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  362. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +14 -2
  363. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  364. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +52 -16
  365. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  366. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts +2 -1
  367. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts.map +1 -1
  368. package/dist/adapters/http/middleware/built-in/index.mjs +2 -2
  369. package/dist/adapters/http/middleware/built-in/prometheus.d.ts +12 -1
  370. package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
  371. package/dist/adapters/http/middleware/built-in/prometheus.mjs +75 -6
  372. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  373. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
  374. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +0 -1
  375. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  376. package/dist/adapters/http/middleware/index.mjs +2 -2
  377. package/dist/adapters/http/request/client-certificate.d.ts +6 -0
  378. package/dist/adapters/http/request/client-certificate.d.ts.map +1 -0
  379. package/dist/adapters/http/request/client-certificate.mjs +89 -0
  380. package/dist/adapters/http/request/client-certificate.mjs.map +1 -0
  381. package/dist/adapters/http/request/constants.d.ts +1 -0
  382. package/dist/adapters/http/request/constants.d.ts.map +1 -1
  383. package/dist/adapters/http/request/constants.mjs +6 -1
  384. package/dist/adapters/http/request/constants.mjs.map +1 -1
  385. package/dist/adapters/http/request/event-context.d.ts +19 -0
  386. package/dist/adapters/http/request/event-context.d.ts.map +1 -0
  387. package/dist/adapters/http/request/event-context.mjs +37 -0
  388. package/dist/adapters/http/request/event-context.mjs.map +1 -0
  389. package/dist/adapters/http/request/helpers/body-realm-id.mjs +1 -1
  390. package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
  391. package/dist/adapters/http/request/helpers/identity.d.ts +2 -2
  392. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  393. package/dist/adapters/http/request/helpers/identity.mjs +2 -2
  394. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  395. package/dist/adapters/http/request/helpers/index.d.ts +1 -0
  396. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  397. package/dist/adapters/http/request/helpers/index.mjs +2 -1
  398. package/dist/adapters/http/request/helpers/mfa-login-ticket.d.ts +16 -0
  399. package/dist/adapters/http/request/helpers/mfa-login-ticket.d.ts.map +1 -0
  400. package/dist/adapters/http/request/helpers/mfa-login-ticket.mjs +15 -0
  401. package/dist/adapters/http/request/helpers/mfa-login-ticket.mjs.map +1 -0
  402. package/dist/adapters/http/request/helpers/realm-id.mjs +1 -1
  403. package/dist/adapters/http/request/helpers/realm-id.mjs.map +1 -1
  404. package/dist/adapters/http/request/index.d.ts +3 -0
  405. package/dist/adapters/http/request/index.d.ts.map +1 -1
  406. package/dist/adapters/http/request/index.mjs +5 -2
  407. package/dist/adapters/http/request/permission/module.d.ts +3 -2
  408. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  409. package/dist/adapters/http/request/permission/module.mjs +3 -0
  410. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  411. package/dist/adapters/http/request/types.d.ts +3 -0
  412. package/dist/adapters/http/request/types.d.ts.map +1 -0
  413. package/dist/adapters/http/ui/render.mjs +4 -4
  414. package/dist/adapters/http/ui/render.mjs.map +1 -1
  415. package/dist/adapters/http/ui/serve.d.ts.map +1 -1
  416. package/dist/adapters/http/ui/serve.mjs +4 -1
  417. package/dist/adapters/http/ui/serve.mjs.map +1 -1
  418. package/dist/app/index.mjs +11 -9
  419. package/dist/app/modules/authentication/repositories/session.d.ts +3 -2
  420. package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
  421. package/dist/app/modules/authentication/repositories/session.mjs +8 -40
  422. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  423. package/dist/app/modules/components/module.d.ts.map +1 -1
  424. package/dist/app/modules/components/module.mjs +22 -2
  425. package/dist/app/modules/components/module.mjs.map +1 -1
  426. package/dist/app/modules/config/constants.d.ts +14 -4
  427. package/dist/app/modules/config/constants.d.ts.map +1 -1
  428. package/dist/app/modules/config/constants.mjs +14 -4
  429. package/dist/app/modules/config/constants.mjs.map +1 -1
  430. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  431. package/dist/app/modules/config/normalize.mjs +30 -6
  432. package/dist/app/modules/config/normalize.mjs.map +1 -1
  433. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  434. package/dist/app/modules/config/read/env.mjs +57 -8
  435. package/dist/app/modules/config/read/env.mjs.map +1 -1
  436. package/dist/app/modules/config/types.d.ts +101 -19
  437. package/dist/app/modules/config/types.d.ts.map +1 -1
  438. package/dist/app/modules/config/validator.d.ts.map +1 -1
  439. package/dist/app/modules/config/validator.mjs +16 -4
  440. package/dist/app/modules/config/validator.mjs.map +1 -1
  441. package/dist/app/modules/database/constants.d.ts +3 -0
  442. package/dist/app/modules/database/constants.d.ts.map +1 -1
  443. package/dist/app/modules/database/constants.mjs +3 -1
  444. package/dist/app/modules/database/constants.mjs.map +1 -1
  445. package/dist/app/modules/database/index.mjs +7 -6
  446. package/dist/app/modules/database/module.d.ts +1 -0
  447. package/dist/app/modules/database/module.d.ts.map +1 -1
  448. package/dist/app/modules/database/module.mjs +34 -1
  449. package/dist/app/modules/database/module.mjs.map +1 -1
  450. package/dist/app/modules/database/repositories/bindings.d.ts +2 -2
  451. package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -1
  452. package/dist/app/modules/database/repositories/bindings.mjs +3 -3
  453. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  454. package/dist/app/modules/database/repositories/client/repository.d.ts +3 -2
  455. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  456. package/dist/app/modules/database/repositories/client/repository.mjs +10 -78
  457. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  458. package/dist/app/modules/database/repositories/client-permission/repository.d.ts +2 -1
  459. package/dist/app/modules/database/repositories/client-permission/repository.d.ts.map +1 -1
  460. package/dist/app/modules/database/repositories/client-permission/repository.mjs +3 -17
  461. package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
  462. package/dist/app/modules/database/repositories/client-role/repository.d.ts +2 -1
  463. package/dist/app/modules/database/repositories/client-role/repository.d.ts.map +1 -1
  464. package/dist/app/modules/database/repositories/client-role/repository.mjs +3 -17
  465. package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
  466. package/dist/app/modules/database/repositories/client-scope/repository.d.ts +2 -1
  467. package/dist/app/modules/database/repositories/client-scope/repository.d.ts.map +1 -1
  468. package/dist/app/modules/database/repositories/client-scope/repository.mjs +3 -17
  469. package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
  470. package/dist/app/modules/database/repositories/event/index.d.ts.map +1 -0
  471. package/dist/app/modules/database/repositories/event/index.mjs +5 -0
  472. package/dist/app/modules/database/repositories/event/repository.d.ts +16 -0
  473. package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -0
  474. package/dist/app/modules/database/repositories/event/repository.mjs +74 -0
  475. package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -0
  476. package/dist/app/modules/database/repositories/helpers.d.ts +21 -5
  477. package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
  478. package/dist/app/modules/database/repositories/helpers.mjs +46 -7
  479. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  480. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +2 -1
  481. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  482. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +6 -37
  483. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  484. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts +2 -1
  485. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts.map +1 -1
  486. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs +3 -17
  487. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
  488. package/dist/app/modules/database/repositories/index.d.ts +4 -3
  489. package/dist/app/modules/database/repositories/index.d.ts.map +1 -1
  490. package/dist/app/modules/database/repositories/index.mjs +9 -7
  491. package/dist/app/modules/database/repositories/key/index.d.ts.map +1 -0
  492. package/dist/app/modules/database/repositories/key/index.mjs +5 -0
  493. package/dist/app/modules/database/repositories/key/repository.d.ts +51 -0
  494. package/dist/app/modules/database/repositories/key/repository.d.ts.map +1 -0
  495. package/dist/app/modules/database/repositories/key/repository.mjs +239 -0
  496. package/dist/app/modules/database/repositories/key/repository.mjs.map +1 -0
  497. package/dist/app/modules/database/repositories/permission/repository.d.ts +2 -1
  498. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  499. package/dist/app/modules/database/repositories/permission/repository.mjs +5 -20
  500. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  501. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts +2 -1
  502. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts.map +1 -1
  503. package/dist/app/modules/database/repositories/permission-policy/repository.mjs +3 -17
  504. package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
  505. package/dist/app/modules/database/repositories/permission-provider/module.mjs +7 -7
  506. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  507. package/dist/app/modules/database/repositories/policy/repository.d.ts +2 -1
  508. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  509. package/dist/app/modules/database/repositories/policy/repository.mjs +5 -39
  510. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  511. package/dist/app/modules/database/repositories/query.d.ts +18 -0
  512. package/dist/app/modules/database/repositories/query.d.ts.map +1 -0
  513. package/dist/app/modules/database/repositories/query.mjs +29 -0
  514. package/dist/app/modules/database/repositories/query.mjs.map +1 -0
  515. package/dist/app/modules/database/repositories/realm/repository.d.ts +2 -1
  516. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  517. package/dist/app/modules/database/repositories/realm/repository.mjs +3 -25
  518. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  519. package/dist/app/modules/database/repositories/role/repository.d.ts +2 -1
  520. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  521. package/dist/app/modules/database/repositories/role/repository.mjs +6 -30
  522. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  523. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts +2 -1
  524. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  525. package/dist/app/modules/database/repositories/role-attribute/repository.mjs +3 -19
  526. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  527. package/dist/app/modules/database/repositories/role-permission/repository.d.ts +2 -1
  528. package/dist/app/modules/database/repositories/role-permission/repository.d.ts.map +1 -1
  529. package/dist/app/modules/database/repositories/role-permission/repository.mjs +3 -17
  530. package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
  531. package/dist/app/modules/database/repositories/schema-validation.d.ts +11 -0
  532. package/dist/app/modules/database/repositories/schema-validation.d.ts.map +1 -0
  533. package/dist/app/modules/database/repositories/schema-validation.mjs +77 -0
  534. package/dist/app/modules/database/repositories/schema-validation.mjs.map +1 -0
  535. package/dist/app/modules/database/repositories/scope/repository.d.ts +2 -1
  536. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  537. package/dist/app/modules/database/repositories/scope/repository.mjs +5 -29
  538. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  539. package/dist/app/modules/database/repositories/trust-anchor/index.d.ts.map +1 -0
  540. package/dist/app/modules/database/repositories/trust-anchor/index.mjs +5 -0
  541. package/dist/app/modules/database/repositories/trust-anchor/repository.d.ts +25 -0
  542. package/dist/app/modules/database/repositories/trust-anchor/repository.d.ts.map +1 -0
  543. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +89 -0
  544. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs.map +1 -0
  545. package/dist/app/modules/database/repositories/user/repository.d.ts +3 -2
  546. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  547. package/dist/app/modules/database/repositories/user/repository.mjs +9 -66
  548. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  549. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts +2 -1
  550. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  551. package/dist/app/modules/database/repositories/user-attribute/repository.mjs +4 -20
  552. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  553. package/dist/app/modules/database/repositories/user-authenticator/index.d.ts.map +1 -0
  554. package/dist/app/modules/database/repositories/user-authenticator/index.mjs +5 -0
  555. package/dist/app/modules/database/repositories/user-authenticator/repository.d.ts +20 -0
  556. package/dist/app/modules/database/repositories/user-authenticator/repository.d.ts.map +1 -0
  557. package/dist/app/modules/database/repositories/user-authenticator/repository.mjs +66 -0
  558. package/dist/app/modules/database/repositories/user-authenticator/repository.mjs.map +1 -0
  559. package/dist/app/modules/database/repositories/user-permission/repository.d.ts +2 -1
  560. package/dist/app/modules/database/repositories/user-permission/repository.d.ts.map +1 -1
  561. package/dist/app/modules/database/repositories/user-permission/repository.mjs +3 -17
  562. package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
  563. package/dist/app/modules/database/repositories/user-role/repository.d.ts +2 -1
  564. package/dist/app/modules/database/repositories/user-role/repository.d.ts.map +1 -1
  565. package/dist/app/modules/database/repositories/user-role/repository.mjs +3 -17
  566. package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
  567. package/dist/app/modules/http/module.d.ts +8 -0
  568. package/dist/app/modules/http/module.d.ts.map +1 -1
  569. package/dist/app/modules/http/module.mjs +19 -1
  570. package/dist/app/modules/http/module.mjs.map +1 -1
  571. package/dist/app/modules/http/modules/controller.d.ts +16 -6
  572. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  573. package/dist/app/modules/http/modules/controller.mjs +186 -67
  574. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  575. package/dist/app/modules/http/modules/middleware.d.ts +1 -0
  576. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  577. package/dist/app/modules/http/modules/middleware.mjs +10 -5
  578. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  579. package/dist/app/modules/identity/index.mjs +1 -2
  580. package/dist/app/modules/identity/module.d.ts.map +1 -1
  581. package/dist/app/modules/identity/module.mjs +3 -14
  582. package/dist/app/modules/identity/module.mjs.map +1 -1
  583. package/dist/app/modules/identity/repositories/client.mjs +2 -2
  584. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  585. package/dist/app/modules/identity/repositories/index.d.ts +0 -1
  586. package/dist/app/modules/identity/repositories/index.d.ts.map +1 -1
  587. package/dist/app/modules/identity/repositories/index.mjs +1 -2
  588. package/dist/app/modules/identity/repositories/provider/account/module.mjs +3 -3
  589. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  590. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs +1 -1
  591. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  592. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs +1 -1
  593. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  594. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs +1 -1
  595. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  596. package/dist/app/modules/identity/repositories/user.mjs +18 -18
  597. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  598. package/dist/app/modules/index.d.ts +1 -0
  599. package/dist/app/modules/index.d.ts.map +1 -1
  600. package/dist/app/modules/index.mjs +13 -10
  601. package/dist/app/modules/mail/module.d.ts.map +1 -1
  602. package/dist/app/modules/mail/module.mjs +2 -1
  603. package/dist/app/modules/mail/module.mjs.map +1 -1
  604. package/dist/app/modules/metrics/constants.d.ts +4 -0
  605. package/dist/app/modules/metrics/constants.d.ts.map +1 -0
  606. package/dist/app/modules/metrics/constants.mjs +10 -0
  607. package/dist/app/modules/metrics/constants.mjs.map +1 -0
  608. package/dist/app/modules/metrics/index.d.ts +3 -0
  609. package/dist/app/modules/metrics/index.d.ts.map +1 -0
  610. package/dist/app/modules/metrics/index.mjs +6 -0
  611. package/dist/app/modules/metrics/prom.d.ts +15 -0
  612. package/dist/app/modules/metrics/prom.d.ts.map +1 -0
  613. package/dist/app/modules/metrics/prom.mjs +42 -0
  614. package/dist/app/modules/metrics/prom.mjs.map +1 -0
  615. package/dist/app/modules/oauth2/constants.d.ts +9 -2
  616. package/dist/app/modules/oauth2/constants.d.ts.map +1 -1
  617. package/dist/app/modules/oauth2/constants.mjs +7 -1
  618. package/dist/app/modules/oauth2/constants.mjs.map +1 -1
  619. package/dist/app/modules/oauth2/module.d.ts.map +1 -1
  620. package/dist/app/modules/oauth2/module.mjs +23 -4
  621. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  622. package/dist/app/modules/oauth2/repositories/client/repository.mjs +1 -1
  623. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  624. package/dist/app/modules/oauth2/repositories/consent/index.d.ts +2 -0
  625. package/dist/app/modules/oauth2/repositories/consent/index.d.ts.map +1 -0
  626. package/dist/app/modules/oauth2/repositories/consent/index.mjs +5 -0
  627. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts +21 -0
  628. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts.map +1 -0
  629. package/dist/app/modules/oauth2/repositories/consent/repository.mjs +92 -0
  630. package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -0
  631. package/dist/app/modules/oauth2/repositories/index.d.ts +1 -1
  632. package/dist/app/modules/oauth2/repositories/index.d.ts.map +1 -1
  633. package/dist/app/modules/oauth2/repositories/index.mjs +3 -3
  634. package/dist/app/modules/oauth2/repositories/scope/repository.mjs +1 -1
  635. package/dist/app/modules/oauth2/repositories/scope/repository.mjs.map +1 -1
  636. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +21 -18
  637. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -1
  638. package/dist/app/modules/oauth2/repositories/token/repository.d.ts +1 -0
  639. package/dist/app/modules/oauth2/repositories/token/repository.d.ts.map +1 -1
  640. package/dist/app/modules/oauth2/repositories/token/repository.mjs +8 -0
  641. package/dist/app/modules/oauth2/repositories/token/repository.mjs.map +1 -1
  642. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  643. package/dist/app/modules/provisioning/module.mjs +25 -29
  644. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  645. package/dist/app/modules/provisioning/sources/composite/module.d.ts +17 -0
  646. package/dist/app/modules/provisioning/sources/composite/module.d.ts.map +1 -1
  647. package/dist/app/modules/provisioning/sources/composite/module.mjs +54 -2
  648. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  649. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  650. package/dist/app/modules/provisioning/sources/default/module.mjs +54 -74
  651. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  652. package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
  653. package/dist/app/modules/provisioning/sources/file/module.mjs +16 -5
  654. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  655. package/dist/app/modules/provisioning/sources/file/types.d.ts +2 -0
  656. package/dist/app/modules/provisioning/sources/file/types.d.ts.map +1 -1
  657. package/dist/app/modules/provisioning/sources/index.mjs +1 -0
  658. package/dist/components/database/unique-entries/module.mjs +6 -6
  659. package/dist/components/database/unique-entries/module.mjs.map +1 -1
  660. package/dist/components/event-cleaner/index.d.ts +2 -0
  661. package/dist/components/event-cleaner/index.d.ts.map +1 -0
  662. package/dist/components/event-cleaner/index.mjs +5 -0
  663. package/dist/components/event-cleaner/module.d.ts +5 -0
  664. package/dist/components/event-cleaner/module.d.ts.map +1 -0
  665. package/dist/components/event-cleaner/module.mjs +30 -0
  666. package/dist/components/event-cleaner/module.mjs.map +1 -0
  667. package/dist/components/index.d.ts +1 -0
  668. package/dist/components/index.d.ts.map +1 -1
  669. package/dist/components/index.mjs +3 -1
  670. package/dist/components/oauth2-cleaner/module.d.ts +2 -1
  671. package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
  672. package/dist/components/oauth2-cleaner/module.mjs +9 -4
  673. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  674. package/dist/core/authentication/credential/entities/client/module.d.ts +2 -2
  675. package/dist/core/authentication/credential/entities/client/module.d.ts.map +1 -1
  676. package/dist/core/authentication/credential/entities/client/module.mjs +4 -3
  677. package/dist/core/authentication/credential/entities/client/module.mjs.map +1 -1
  678. package/dist/core/authentication/credential/entities/index.d.ts +0 -1
  679. package/dist/core/authentication/credential/entities/index.d.ts.map +1 -1
  680. package/dist/core/authentication/credential/entities/index.mjs +1 -3
  681. package/dist/core/authentication/credential/index.mjs +1 -2
  682. package/dist/core/authentication/entities/client/module.mjs +2 -2
  683. package/dist/core/authentication/entities/client/module.mjs.map +1 -1
  684. package/dist/core/authentication/entities/index.d.ts +0 -1
  685. package/dist/core/authentication/entities/index.d.ts.map +1 -1
  686. package/dist/core/authentication/entities/index.mjs +1 -3
  687. package/dist/core/authentication/index.d.ts +1 -0
  688. package/dist/core/authentication/index.d.ts.map +1 -1
  689. package/dist/core/authentication/index.mjs +3 -3
  690. package/dist/core/authentication/login-throttle/index.d.ts.map +1 -0
  691. package/dist/core/authentication/login-throttle/index.mjs +5 -0
  692. package/dist/core/authentication/login-throttle/service.d.ts +13 -0
  693. package/dist/core/authentication/login-throttle/service.d.ts.map +1 -0
  694. package/dist/core/authentication/login-throttle/service.mjs +33 -0
  695. package/dist/core/authentication/login-throttle/service.mjs.map +1 -0
  696. package/dist/core/authentication/login-throttle/types.d.ts +34 -0
  697. package/dist/core/authentication/login-throttle/types.d.ts.map +1 -0
  698. package/dist/core/authentication/session/module.d.ts +1 -0
  699. package/dist/core/authentication/session/module.d.ts.map +1 -1
  700. package/dist/core/authentication/session/module.mjs +17 -16
  701. package/dist/core/authentication/session/module.mjs.map +1 -1
  702. package/dist/core/authentication/session/types.d.ts +12 -5
  703. package/dist/core/authentication/session/types.d.ts.map +1 -1
  704. package/dist/core/authentication/session/types.mjs +4 -5
  705. package/dist/core/authentication/session/types.mjs.map +1 -1
  706. package/dist/core/client-certificate/index.d.ts.map +1 -0
  707. package/dist/core/client-certificate/index.mjs +5 -0
  708. package/dist/core/client-certificate/module.d.ts +19 -0
  709. package/dist/core/client-certificate/module.d.ts.map +1 -0
  710. package/dist/core/client-certificate/module.mjs +196 -0
  711. package/dist/core/client-certificate/module.mjs.map +1 -0
  712. package/dist/core/client-certificate/reflect.d.ts +2 -0
  713. package/dist/core/client-certificate/reflect.d.ts.map +1 -0
  714. package/dist/core/client-certificate/reflect.mjs +5 -0
  715. package/dist/core/client-certificate/types.d.ts +22 -0
  716. package/dist/core/client-certificate/types.d.ts.map +1 -0
  717. package/dist/core/entities/client/index.d.ts +1 -0
  718. package/dist/core/entities/client/index.d.ts.map +1 -1
  719. package/dist/core/entities/client/index.mjs +2 -1
  720. package/dist/core/entities/client/schema.d.ts +3 -0
  721. package/dist/core/entities/client/schema.d.ts.map +1 -0
  722. package/dist/core/entities/client/schema.mjs +59 -0
  723. package/dist/core/entities/client/schema.mjs.map +1 -0
  724. package/dist/core/entities/client/service.d.ts.map +1 -1
  725. package/dist/core/entities/client/service.mjs +50 -19
  726. package/dist/core/entities/client/service.mjs.map +1 -1
  727. package/dist/core/entities/client/types.d.ts +2 -1
  728. package/dist/core/entities/client/types.d.ts.map +1 -1
  729. package/dist/core/entities/client/web-client.d.ts +4 -4
  730. package/dist/core/entities/client/web-client.d.ts.map +1 -1
  731. package/dist/core/entities/client/web-client.mjs +14 -13
  732. package/dist/core/entities/client/web-client.mjs.map +1 -1
  733. package/dist/core/entities/client-permission/index.d.ts +1 -0
  734. package/dist/core/entities/client-permission/index.d.ts.map +1 -1
  735. package/dist/core/entities/client-permission/index.mjs +2 -1
  736. package/dist/core/entities/client-permission/schema.d.ts +3 -0
  737. package/dist/core/entities/client-permission/schema.d.ts.map +1 -0
  738. package/dist/core/entities/client-permission/schema.mjs +41 -0
  739. package/dist/core/entities/client-permission/schema.mjs.map +1 -0
  740. package/dist/core/entities/client-permission/service.d.ts +1 -1
  741. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  742. package/dist/core/entities/client-permission/service.mjs +24 -18
  743. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  744. package/dist/core/entities/client-role/index.d.ts +1 -0
  745. package/dist/core/entities/client-role/index.d.ts.map +1 -1
  746. package/dist/core/entities/client-role/index.mjs +2 -1
  747. package/dist/core/entities/client-role/schema.d.ts +3 -0
  748. package/dist/core/entities/client-role/schema.d.ts.map +1 -0
  749. package/dist/core/entities/client-role/schema.mjs +39 -0
  750. package/dist/core/entities/client-role/schema.mjs.map +1 -0
  751. package/dist/core/entities/client-role/service.d.ts +1 -1
  752. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  753. package/dist/core/entities/client-role/service.mjs +14 -8
  754. package/dist/core/entities/client-role/service.mjs.map +1 -1
  755. package/dist/core/entities/client-scope/index.d.ts +1 -0
  756. package/dist/core/entities/client-scope/index.d.ts.map +1 -1
  757. package/dist/core/entities/client-scope/index.mjs +2 -1
  758. package/dist/core/entities/client-scope/schema.d.ts +3 -0
  759. package/dist/core/entities/client-scope/schema.d.ts.map +1 -0
  760. package/dist/core/entities/client-scope/schema.mjs +37 -0
  761. package/dist/core/entities/client-scope/schema.mjs.map +1 -0
  762. package/dist/core/entities/client-scope/service.d.ts +1 -1
  763. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  764. package/dist/core/entities/client-scope/service.mjs +12 -6
  765. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  766. package/dist/core/entities/consent/index.d.ts +4 -0
  767. package/dist/core/entities/consent/index.d.ts.map +1 -0
  768. package/dist/core/entities/consent/index.mjs +7 -0
  769. package/dist/core/entities/consent/schema.d.ts +3 -0
  770. package/dist/core/entities/consent/schema.d.ts.map +1 -0
  771. package/dist/core/entities/consent/schema.mjs +40 -0
  772. package/dist/core/entities/consent/schema.mjs.map +1 -0
  773. package/dist/core/entities/consent/service.d.ts +19 -0
  774. package/dist/core/entities/consent/service.d.ts.map +1 -0
  775. package/dist/core/entities/consent/service.mjs +138 -0
  776. package/dist/core/entities/consent/service.mjs.map +1 -0
  777. package/dist/core/entities/consent/types.d.ts +98 -0
  778. package/dist/core/entities/consent/types.d.ts.map +1 -0
  779. package/dist/core/entities/consent/types.mjs +25 -0
  780. package/dist/core/entities/consent/types.mjs.map +1 -0
  781. package/dist/core/entities/event/constants.d.ts +7 -0
  782. package/dist/core/entities/event/constants.d.ts.map +1 -0
  783. package/dist/core/entities/event/constants.mjs +13 -0
  784. package/dist/core/entities/event/constants.mjs.map +1 -0
  785. package/dist/core/entities/event/diff.d.ts +20 -0
  786. package/dist/core/entities/event/diff.d.ts.map +1 -0
  787. package/dist/core/entities/event/diff.mjs +45 -0
  788. package/dist/core/entities/event/diff.mjs.map +1 -0
  789. package/dist/core/entities/event/entity-event-handler.d.ts +19 -0
  790. package/dist/core/entities/event/entity-event-handler.d.ts.map +1 -0
  791. package/dist/core/entities/event/entity-event-handler.mjs +98 -0
  792. package/dist/core/entities/event/entity-event-handler.mjs.map +1 -0
  793. package/dist/core/entities/event/index.d.ts +8 -0
  794. package/dist/core/entities/event/index.d.ts.map +1 -0
  795. package/dist/core/entities/event/index.mjs +10 -0
  796. package/dist/core/entities/event/sanitize.d.ts +2 -0
  797. package/dist/core/entities/event/sanitize.d.ts.map +1 -0
  798. package/dist/core/entities/event/sanitize.mjs +83 -0
  799. package/dist/core/entities/event/sanitize.mjs.map +1 -0
  800. package/dist/core/entities/event/schema.d.ts +3 -0
  801. package/dist/core/entities/event/schema.d.ts.map +1 -0
  802. package/dist/core/entities/event/schema.mjs +51 -0
  803. package/dist/core/entities/event/schema.mjs.map +1 -0
  804. package/dist/core/entities/event/service.d.ts +22 -0
  805. package/dist/core/entities/event/service.d.ts.map +1 -0
  806. package/dist/core/entities/event/service.mjs +185 -0
  807. package/dist/core/entities/event/service.mjs.map +1 -0
  808. package/dist/core/entities/event/types.d.ts +125 -0
  809. package/dist/core/entities/event/types.d.ts.map +1 -0
  810. package/dist/core/entities/identity-provider/index.d.ts +1 -0
  811. package/dist/core/entities/identity-provider/index.d.ts.map +1 -1
  812. package/dist/core/entities/identity-provider/index.mjs +2 -1
  813. package/dist/core/entities/identity-provider/schema.d.ts +3 -0
  814. package/dist/core/entities/identity-provider/schema.d.ts.map +1 -0
  815. package/dist/core/entities/identity-provider/schema.mjs +43 -0
  816. package/dist/core/entities/identity-provider/schema.mjs.map +1 -0
  817. package/dist/core/entities/identity-provider-role-mapping/index.d.ts +1 -0
  818. package/dist/core/entities/identity-provider-role-mapping/index.d.ts.map +1 -1
  819. package/dist/core/entities/identity-provider-role-mapping/index.mjs +2 -1
  820. package/dist/core/entities/identity-provider-role-mapping/schema.d.ts +3 -0
  821. package/dist/core/entities/identity-provider-role-mapping/schema.d.ts.map +1 -0
  822. package/dist/core/entities/identity-provider-role-mapping/schema.mjs +43 -0
  823. package/dist/core/entities/identity-provider-role-mapping/schema.mjs.map +1 -0
  824. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +1 -1
  825. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  826. package/dist/core/entities/identity-provider-role-mapping/service.mjs +18 -12
  827. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  828. package/dist/core/entities/index.d.ts +5 -3
  829. package/dist/core/entities/index.d.ts.map +1 -1
  830. package/dist/core/entities/index.mjs +45 -7
  831. package/dist/core/entities/key/index.d.ts +4 -0
  832. package/dist/core/entities/key/index.d.ts.map +1 -0
  833. package/dist/core/entities/key/index.mjs +6 -0
  834. package/dist/core/entities/key/schema.d.ts +3 -0
  835. package/dist/core/entities/key/schema.d.ts.map +1 -0
  836. package/dist/core/entities/key/schema.mjs +53 -0
  837. package/dist/core/entities/key/schema.mjs.map +1 -0
  838. package/dist/core/entities/key/service.d.ts +55 -0
  839. package/dist/core/entities/key/service.d.ts.map +1 -0
  840. package/dist/core/entities/key/service.mjs +320 -0
  841. package/dist/core/entities/key/service.mjs.map +1 -0
  842. package/dist/core/entities/key/types.d.ts +41 -0
  843. package/dist/core/entities/key/types.d.ts.map +1 -0
  844. package/dist/core/entities/permission/index.d.ts +1 -0
  845. package/dist/core/entities/permission/index.d.ts.map +1 -1
  846. package/dist/core/entities/permission/index.mjs +2 -1
  847. package/dist/core/entities/permission/schema.d.ts +3 -0
  848. package/dist/core/entities/permission/schema.d.ts.map +1 -0
  849. package/dist/core/entities/permission/schema.mjs +28 -0
  850. package/dist/core/entities/permission/schema.mjs.map +1 -0
  851. package/dist/core/entities/permission/service.d.ts +7 -2
  852. package/dist/core/entities/permission/service.d.ts.map +1 -1
  853. package/dist/core/entities/permission/service.mjs +54 -41
  854. package/dist/core/entities/permission/service.mjs.map +1 -1
  855. package/dist/core/entities/permission-policy/index.d.ts +1 -0
  856. package/dist/core/entities/permission-policy/index.d.ts.map +1 -1
  857. package/dist/core/entities/permission-policy/index.mjs +2 -1
  858. package/dist/core/entities/permission-policy/schema.d.ts +3 -0
  859. package/dist/core/entities/permission-policy/schema.d.ts.map +1 -0
  860. package/dist/core/entities/permission-policy/schema.mjs +39 -0
  861. package/dist/core/entities/permission-policy/schema.mjs.map +1 -0
  862. package/dist/core/entities/permission-policy/service.d.ts +1 -1
  863. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  864. package/dist/core/entities/permission-policy/service.mjs +12 -6
  865. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  866. package/dist/core/entities/policy/index.d.ts +1 -0
  867. package/dist/core/entities/policy/index.d.ts.map +1 -1
  868. package/dist/core/entities/policy/index.mjs +2 -1
  869. package/dist/core/entities/policy/schema.d.ts +3 -0
  870. package/dist/core/entities/policy/schema.d.ts.map +1 -0
  871. package/dist/core/entities/policy/schema.mjs +49 -0
  872. package/dist/core/entities/policy/schema.mjs.map +1 -0
  873. package/dist/core/entities/policy/service.d.ts.map +1 -1
  874. package/dist/core/entities/policy/service.mjs +15 -9
  875. package/dist/core/entities/policy/service.mjs.map +1 -1
  876. package/dist/core/entities/realm/index.d.ts +1 -0
  877. package/dist/core/entities/realm/index.d.ts.map +1 -1
  878. package/dist/core/entities/realm/index.mjs +2 -1
  879. package/dist/core/entities/realm/schema.d.ts +3 -0
  880. package/dist/core/entities/realm/schema.d.ts.map +1 -0
  881. package/dist/core/entities/realm/schema.mjs +36 -0
  882. package/dist/core/entities/realm/schema.mjs.map +1 -0
  883. package/dist/core/entities/realm/service.d.ts +3 -0
  884. package/dist/core/entities/realm/service.d.ts.map +1 -1
  885. package/dist/core/entities/realm/service.mjs +10 -4
  886. package/dist/core/entities/realm/service.mjs.map +1 -1
  887. package/dist/core/entities/realm/types.d.ts +1 -1
  888. package/dist/core/entities/role/index.d.ts +1 -0
  889. package/dist/core/entities/role/index.d.ts.map +1 -1
  890. package/dist/core/entities/role/index.mjs +2 -1
  891. package/dist/core/entities/role/schema.d.ts +3 -0
  892. package/dist/core/entities/role/schema.d.ts.map +1 -0
  893. package/dist/core/entities/role/schema.mjs +43 -0
  894. package/dist/core/entities/role/schema.mjs.map +1 -0
  895. package/dist/core/entities/role/service.d.ts.map +1 -1
  896. package/dist/core/entities/role/service.mjs +13 -7
  897. package/dist/core/entities/role/service.mjs.map +1 -1
  898. package/dist/core/entities/role-attribute/index.d.ts +1 -0
  899. package/dist/core/entities/role-attribute/index.d.ts.map +1 -1
  900. package/dist/core/entities/role-attribute/index.mjs +2 -1
  901. package/dist/core/entities/role-attribute/schema.d.ts +3 -0
  902. package/dist/core/entities/role-attribute/schema.d.ts.map +1 -0
  903. package/dist/core/entities/role-attribute/schema.mjs +47 -0
  904. package/dist/core/entities/role-attribute/schema.mjs.map +1 -0
  905. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  906. package/dist/core/entities/role-attribute/service.mjs +22 -9
  907. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  908. package/dist/core/entities/role-permission/index.d.ts +1 -0
  909. package/dist/core/entities/role-permission/index.d.ts.map +1 -1
  910. package/dist/core/entities/role-permission/index.mjs +2 -1
  911. package/dist/core/entities/role-permission/schema.d.ts +3 -0
  912. package/dist/core/entities/role-permission/schema.d.ts.map +1 -0
  913. package/dist/core/entities/role-permission/schema.mjs +41 -0
  914. package/dist/core/entities/role-permission/schema.mjs.map +1 -0
  915. package/dist/core/entities/role-permission/service.d.ts +1 -1
  916. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  917. package/dist/core/entities/role-permission/service.mjs +24 -18
  918. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  919. package/dist/core/entities/scope/index.d.ts +1 -0
  920. package/dist/core/entities/scope/index.d.ts.map +1 -1
  921. package/dist/core/entities/scope/index.mjs +2 -1
  922. package/dist/core/entities/scope/schema.d.ts +3 -0
  923. package/dist/core/entities/scope/schema.d.ts.map +1 -0
  924. package/dist/core/entities/scope/schema.mjs +43 -0
  925. package/dist/core/entities/scope/schema.mjs.map +1 -0
  926. package/dist/core/entities/scope/service.d.ts.map +1 -1
  927. package/dist/core/entities/scope/service.mjs +11 -5
  928. package/dist/core/entities/scope/service.mjs.map +1 -1
  929. package/dist/core/entities/session/index.d.ts +1 -0
  930. package/dist/core/entities/session/index.d.ts.map +1 -1
  931. package/dist/core/entities/session/index.mjs +2 -1
  932. package/dist/core/entities/session/schema.d.ts +3 -0
  933. package/dist/core/entities/session/schema.d.ts.map +1 -0
  934. package/dist/core/entities/session/schema.mjs +44 -0
  935. package/dist/core/entities/session/schema.mjs.map +1 -0
  936. package/dist/core/entities/session/service.d.ts +11 -0
  937. package/dist/core/entities/session/service.d.ts.map +1 -1
  938. package/dist/core/entities/session/service.mjs +53 -13
  939. package/dist/core/entities/session/service.mjs.map +1 -1
  940. package/dist/core/entities/session/types.d.ts +2 -2
  941. package/dist/core/entities/trust-anchor/index.d.ts +4 -0
  942. package/dist/core/entities/trust-anchor/index.d.ts.map +1 -0
  943. package/dist/core/entities/trust-anchor/index.mjs +6 -0
  944. package/dist/core/entities/trust-anchor/schema.d.ts +3 -0
  945. package/dist/core/entities/trust-anchor/schema.d.ts.map +1 -0
  946. package/dist/core/entities/trust-anchor/schema.mjs +43 -0
  947. package/dist/core/entities/trust-anchor/schema.mjs.map +1 -0
  948. package/dist/core/entities/trust-anchor/service.d.ts +33 -0
  949. package/dist/core/entities/trust-anchor/service.d.ts.map +1 -0
  950. package/dist/core/entities/trust-anchor/service.mjs +191 -0
  951. package/dist/core/entities/trust-anchor/service.mjs.map +1 -0
  952. package/dist/core/entities/trust-anchor/types.d.ts +22 -0
  953. package/dist/core/entities/trust-anchor/types.d.ts.map +1 -0
  954. package/dist/core/entities/user/index.d.ts +1 -0
  955. package/dist/core/entities/user/index.d.ts.map +1 -1
  956. package/dist/core/entities/user/index.mjs +2 -1
  957. package/dist/core/entities/user/schema.d.ts +3 -0
  958. package/dist/core/entities/user/schema.d.ts.map +1 -0
  959. package/dist/core/entities/user/schema.mjs +50 -0
  960. package/dist/core/entities/user/schema.mjs.map +1 -0
  961. package/dist/core/entities/user/service.d.ts.map +1 -1
  962. package/dist/core/entities/user/service.mjs +35 -14
  963. package/dist/core/entities/user/service.mjs.map +1 -1
  964. package/dist/core/entities/user/types.d.ts +2 -1
  965. package/dist/core/entities/user/types.d.ts.map +1 -1
  966. package/dist/core/entities/user-attribute/index.d.ts +1 -0
  967. package/dist/core/entities/user-attribute/index.d.ts.map +1 -1
  968. package/dist/core/entities/user-attribute/index.mjs +2 -1
  969. package/dist/core/entities/user-attribute/schema.d.ts +3 -0
  970. package/dist/core/entities/user-attribute/schema.d.ts.map +1 -0
  971. package/dist/core/entities/user-attribute/schema.mjs +47 -0
  972. package/dist/core/entities/user-attribute/schema.mjs.map +1 -0
  973. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  974. package/dist/core/entities/user-attribute/service.mjs +29 -13
  975. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  976. package/dist/core/entities/user-authenticator/constants.d.ts +26 -0
  977. package/dist/core/entities/user-authenticator/constants.d.ts.map +1 -0
  978. package/dist/core/entities/user-authenticator/constants.mjs +32 -0
  979. package/dist/core/entities/user-authenticator/constants.mjs.map +1 -0
  980. package/dist/core/entities/user-authenticator/helpers.d.ts +10 -0
  981. package/dist/core/entities/user-authenticator/helpers.d.ts.map +1 -0
  982. package/dist/core/entities/user-authenticator/helpers.mjs +35 -0
  983. package/dist/core/entities/user-authenticator/helpers.mjs.map +1 -0
  984. package/dist/core/entities/user-authenticator/index.d.ts +7 -0
  985. package/dist/core/entities/user-authenticator/index.d.ts.map +1 -0
  986. package/dist/core/entities/user-authenticator/index.mjs +10 -0
  987. package/dist/core/entities/user-authenticator/schema.d.ts +3 -0
  988. package/dist/core/entities/user-authenticator/schema.d.ts.map +1 -0
  989. package/dist/core/entities/user-authenticator/schema.mjs +47 -0
  990. package/dist/core/entities/user-authenticator/schema.mjs.map +1 -0
  991. package/dist/core/entities/user-authenticator/service.d.ts +89 -0
  992. package/dist/core/entities/user-authenticator/service.d.ts.map +1 -0
  993. package/dist/core/entities/user-authenticator/service.mjs +731 -0
  994. package/dist/core/entities/user-authenticator/service.mjs.map +1 -0
  995. package/dist/core/entities/user-authenticator/types.d.ts +222 -0
  996. package/dist/core/entities/user-authenticator/types.d.ts.map +1 -0
  997. package/dist/core/entities/user-authenticator/types.mjs +15 -0
  998. package/dist/core/entities/user-authenticator/types.mjs.map +1 -0
  999. package/dist/core/entities/user-authenticator/webauthn.d.ts +28 -0
  1000. package/dist/core/entities/user-authenticator/webauthn.d.ts.map +1 -0
  1001. package/dist/core/entities/user-authenticator/webauthn.mjs +88 -0
  1002. package/dist/core/entities/user-authenticator/webauthn.mjs.map +1 -0
  1003. package/dist/core/entities/user-permission/index.d.ts +1 -0
  1004. package/dist/core/entities/user-permission/index.d.ts.map +1 -1
  1005. package/dist/core/entities/user-permission/index.mjs +2 -1
  1006. package/dist/core/entities/user-permission/schema.d.ts +3 -0
  1007. package/dist/core/entities/user-permission/schema.d.ts.map +1 -0
  1008. package/dist/core/entities/user-permission/schema.mjs +41 -0
  1009. package/dist/core/entities/user-permission/schema.mjs.map +1 -0
  1010. package/dist/core/entities/user-permission/service.d.ts +1 -1
  1011. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  1012. package/dist/core/entities/user-permission/service.mjs +24 -18
  1013. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  1014. package/dist/core/entities/user-role/index.d.ts +1 -0
  1015. package/dist/core/entities/user-role/index.d.ts.map +1 -1
  1016. package/dist/core/entities/user-role/index.mjs +2 -1
  1017. package/dist/core/entities/user-role/schema.d.ts +3 -0
  1018. package/dist/core/entities/user-role/schema.d.ts.map +1 -0
  1019. package/dist/core/entities/user-role/schema.mjs +39 -0
  1020. package/dist/core/entities/user-role/schema.mjs.map +1 -0
  1021. package/dist/core/entities/user-role/service.d.ts +1 -1
  1022. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  1023. package/dist/core/entities/user-role/service.mjs +14 -8
  1024. package/dist/core/entities/user-role/service.mjs.map +1 -1
  1025. package/dist/core/identity/entities/index.d.ts +0 -1
  1026. package/dist/core/identity/entities/index.d.ts.map +1 -1
  1027. package/dist/core/identity/index.mjs +2 -1
  1028. package/dist/core/identity/password-recovery/disabled.d.ts +2 -2
  1029. package/dist/core/identity/password-recovery/disabled.d.ts.map +1 -1
  1030. package/dist/core/identity/password-recovery/disabled.mjs +2 -2
  1031. package/dist/core/identity/password-recovery/disabled.mjs.map +1 -1
  1032. package/dist/core/identity/password-recovery/email-verification-required.d.ts +2 -2
  1033. package/dist/core/identity/password-recovery/email-verification-required.d.ts.map +1 -1
  1034. package/dist/core/identity/password-recovery/email-verification-required.mjs +2 -2
  1035. package/dist/core/identity/password-recovery/email-verification-required.mjs.map +1 -1
  1036. package/dist/core/identity/password-recovery/service.d.ts +2 -1
  1037. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  1038. package/dist/core/identity/password-recovery/service.mjs +45 -23
  1039. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  1040. package/dist/core/identity/password-recovery/token-expired.d.ts +2 -2
  1041. package/dist/core/identity/password-recovery/token-expired.d.ts.map +1 -1
  1042. package/dist/core/identity/password-recovery/token-expired.mjs +2 -2
  1043. package/dist/core/identity/password-recovery/token-expired.mjs.map +1 -1
  1044. package/dist/core/identity/password-recovery/types.d.ts +4 -3
  1045. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  1046. package/dist/core/identity/permission/checker/service.mjs +2 -2
  1047. package/dist/core/identity/permission/checker/service.mjs.map +1 -1
  1048. package/dist/core/identity/permission/identity-policy-data.mjs +2 -2
  1049. package/dist/core/identity/permission/identity-policy-data.mjs.map +1 -1
  1050. package/dist/core/identity/permission/index.d.ts +1 -0
  1051. package/dist/core/identity/permission/index.d.ts.map +1 -1
  1052. package/dist/core/identity/permission/index.mjs +2 -1
  1053. package/dist/core/identity/permission/junction-grant.d.ts +6 -6
  1054. package/dist/core/identity/permission/junction-grant.mjs +14 -14
  1055. package/dist/core/identity/permission/junction-grant.mjs.map +1 -1
  1056. package/dist/core/identity/permission/module.d.ts +0 -3
  1057. package/dist/core/identity/permission/module.d.ts.map +1 -1
  1058. package/dist/core/identity/permission/module.mjs +9 -15
  1059. package/dist/core/identity/permission/module.mjs.map +1 -1
  1060. package/dist/core/identity/permission/types.d.ts +0 -2
  1061. package/dist/core/identity/permission/types.d.ts.map +1 -1
  1062. package/dist/core/identity/policy/checker/service.mjs +2 -2
  1063. package/dist/core/identity/policy/checker/service.mjs.map +1 -1
  1064. package/dist/core/identity/provider/account/module.mjs +9 -9
  1065. package/dist/core/identity/provider/account/module.mjs.map +1 -1
  1066. package/dist/core/identity/provider/authentication/presets/facebook.mjs +5 -5
  1067. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  1068. package/dist/core/identity/provider/authentication/presets/github.mjs +3 -3
  1069. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  1070. package/dist/core/identity/provider/authentication/presets/google.mjs +5 -5
  1071. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  1072. package/dist/core/identity/provider/authentication/presets/instagram.mjs +3 -3
  1073. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  1074. package/dist/core/identity/provider/authentication/presets/paypal.mjs +3 -3
  1075. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  1076. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs +20 -20
  1077. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs.map +1 -1
  1078. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +7 -7
  1079. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  1080. package/dist/core/identity/provider/mapper/attributes/module.mjs +3 -3
  1081. package/dist/core/identity/provider/mapper/attributes/module.mjs.map +1 -1
  1082. package/dist/core/identity/provider/mapper/base.mjs +2 -2
  1083. package/dist/core/identity/provider/mapper/base.mjs.map +1 -1
  1084. package/dist/core/identity/provider/mapper/permission/module.mjs +2 -2
  1085. package/dist/core/identity/provider/mapper/permission/module.mjs.map +1 -1
  1086. package/dist/core/identity/provider/mapper/role/module.mjs +2 -2
  1087. package/dist/core/identity/provider/mapper/role/module.mjs.map +1 -1
  1088. package/dist/core/identity/registration/error.d.ts +2 -2
  1089. package/dist/core/identity/registration/error.d.ts.map +1 -1
  1090. package/dist/core/identity/registration/error.mjs +2 -2
  1091. package/dist/core/identity/registration/error.mjs.map +1 -1
  1092. package/dist/core/identity/registration/service.d.ts +2 -1
  1093. package/dist/core/identity/registration/service.d.ts.map +1 -1
  1094. package/dist/core/identity/registration/service.mjs +33 -11
  1095. package/dist/core/identity/registration/service.mjs.map +1 -1
  1096. package/dist/core/identity/registration/types.d.ts +2 -1
  1097. package/dist/core/identity/registration/types.d.ts.map +1 -1
  1098. package/dist/core/identity/resolver/module.d.ts +1 -3
  1099. package/dist/core/identity/resolver/module.d.ts.map +1 -1
  1100. package/dist/core/identity/resolver/module.mjs +0 -13
  1101. package/dist/core/identity/resolver/module.mjs.map +1 -1
  1102. package/dist/core/identity/resolver/types.d.ts +1 -2
  1103. package/dist/core/identity/resolver/types.d.ts.map +1 -1
  1104. package/dist/core/identity/role/module.d.ts +0 -2
  1105. package/dist/core/identity/role/module.d.ts.map +1 -1
  1106. package/dist/core/identity/role/module.mjs +1 -4
  1107. package/dist/core/identity/role/module.mjs.map +1 -1
  1108. package/dist/core/identity/role/types.d.ts +0 -2
  1109. package/dist/core/identity/role/types.d.ts.map +1 -1
  1110. package/dist/core/index.d.ts +4 -0
  1111. package/dist/core/index.d.ts.map +1 -1
  1112. package/dist/core/index.mjs +66 -16
  1113. package/dist/core/key/certificate-error.d.ts +10 -0
  1114. package/dist/core/key/certificate-error.d.ts.map +1 -0
  1115. package/dist/core/key/certificate-error.mjs +19 -0
  1116. package/dist/core/key/certificate-error.mjs.map +1 -0
  1117. package/dist/core/key/certificate.d.ts +15 -0
  1118. package/dist/core/key/certificate.d.ts.map +1 -0
  1119. package/dist/core/key/certificate.mjs +72 -0
  1120. package/dist/core/key/certificate.mjs.map +1 -0
  1121. package/dist/core/key/check.d.ts +3 -0
  1122. package/dist/core/key/check.d.ts.map +1 -0
  1123. package/dist/core/key/check.mjs +13 -0
  1124. package/dist/core/key/check.mjs.map +1 -0
  1125. package/dist/core/key/constants.d.ts +10 -0
  1126. package/dist/core/key/constants.d.ts.map +1 -0
  1127. package/dist/core/key/constants.mjs +15 -0
  1128. package/dist/core/key/constants.mjs.map +1 -0
  1129. package/dist/core/key/error.d.ts +14 -0
  1130. package/dist/core/key/error.d.ts.map +1 -0
  1131. package/dist/core/key/error.mjs +23 -0
  1132. package/dist/core/key/error.mjs.map +1 -0
  1133. package/dist/core/key/index.d.ts +10 -0
  1134. package/dist/core/key/index.d.ts.map +1 -0
  1135. package/dist/core/key/index.mjs +12 -0
  1136. package/dist/core/key/provisioner.d.ts +22 -0
  1137. package/dist/core/key/provisioner.d.ts.map +1 -0
  1138. package/dist/core/key/provisioner.mjs +30 -0
  1139. package/dist/core/key/provisioner.mjs.map +1 -0
  1140. package/dist/core/key/realm-cipher.d.ts +20 -0
  1141. package/dist/core/key/realm-cipher.d.ts.map +1 -0
  1142. package/dist/core/key/realm-cipher.mjs +60 -0
  1143. package/dist/core/key/realm-cipher.mjs.map +1 -0
  1144. package/dist/core/key/types.d.ts +59 -0
  1145. package/dist/core/key/types.d.ts.map +1 -0
  1146. package/dist/core/key/wrap.d.ts +5 -0
  1147. package/dist/core/key/wrap.d.ts.map +1 -0
  1148. package/dist/core/key/wrap.mjs +21 -0
  1149. package/dist/core/key/wrap.mjs.map +1 -0
  1150. package/dist/core/mail/template/registry.d.ts.map +1 -1
  1151. package/dist/core/mail/template/registry.mjs +3 -1
  1152. package/dist/core/mail/template/registry.mjs.map +1 -1
  1153. package/dist/core/mail/template/templates/mfa-email-otp.d.ts +3 -0
  1154. package/dist/core/mail/template/templates/mfa-email-otp.d.ts.map +1 -0
  1155. package/dist/core/mail/template/templates/mfa-email-otp.mjs +34 -0
  1156. package/dist/core/mail/template/templates/mfa-email-otp.mjs.map +1 -0
  1157. package/dist/core/mail/template/types.d.ts +6 -1
  1158. package/dist/core/mail/template/types.d.ts.map +1 -1
  1159. package/dist/core/mail/template/types.mjs +1 -0
  1160. package/dist/core/mail/template/types.mjs.map +1 -1
  1161. package/dist/core/metrics/index.d.ts +3 -0
  1162. package/dist/core/metrics/index.d.ts.map +1 -0
  1163. package/dist/core/metrics/index.mjs +5 -0
  1164. package/dist/core/metrics/noop.d.ts +8 -0
  1165. package/dist/core/metrics/noop.d.ts.map +1 -0
  1166. package/dist/core/metrics/noop.mjs +14 -0
  1167. package/dist/core/metrics/noop.mjs.map +1 -0
  1168. package/dist/core/metrics/types.d.ts +19 -0
  1169. package/dist/core/metrics/types.d.ts.map +1 -0
  1170. package/dist/core/oauth2/access-policy/index.d.ts +3 -0
  1171. package/dist/core/oauth2/access-policy/index.d.ts.map +1 -0
  1172. package/dist/core/oauth2/access-policy/index.mjs +5 -0
  1173. package/dist/core/oauth2/access-policy/module.d.ts +12 -0
  1174. package/dist/core/oauth2/access-policy/module.d.ts.map +1 -0
  1175. package/dist/core/oauth2/access-policy/module.mjs +32 -0
  1176. package/dist/core/oauth2/access-policy/module.mjs.map +1 -0
  1177. package/dist/core/oauth2/access-policy/types.d.ts +19 -0
  1178. package/dist/core/oauth2/access-policy/types.d.ts.map +1 -0
  1179. package/dist/core/oauth2/authorization/code/issuer/module.d.ts.map +1 -1
  1180. package/dist/core/oauth2/authorization/code/issuer/module.mjs +2 -0
  1181. package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
  1182. package/dist/core/oauth2/authorization/code/issuer/types.d.ts +6 -1
  1183. package/dist/core/oauth2/authorization/code/issuer/types.d.ts.map +1 -1
  1184. package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
  1185. package/dist/core/oauth2/authorization/code-request/validator.d.ts.map +1 -1
  1186. package/dist/core/oauth2/authorization/code-request/validator.mjs +1 -0
  1187. package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
  1188. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +6 -6
  1189. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  1190. package/dist/core/oauth2/authorization/helpers.d.ts +10 -1
  1191. package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
  1192. package/dist/core/oauth2/authorization/helpers.mjs +28 -2
  1193. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  1194. package/dist/core/oauth2/authorization/index.mjs +2 -2
  1195. package/dist/core/oauth2/authorization/module.d.ts +9 -0
  1196. package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
  1197. package/dist/core/oauth2/authorization/module.mjs +82 -5
  1198. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  1199. package/dist/core/oauth2/authorization/types.d.ts +36 -0
  1200. package/dist/core/oauth2/authorization/types.d.ts.map +1 -1
  1201. package/dist/core/oauth2/client/authenticator.d.ts +16 -7
  1202. package/dist/core/oauth2/client/authenticator.d.ts.map +1 -1
  1203. package/dist/core/oauth2/client/authenticator.mjs +49 -12
  1204. package/dist/core/oauth2/client/authenticator.mjs.map +1 -1
  1205. package/dist/core/oauth2/client/grant-type.d.ts +1 -1
  1206. package/dist/core/oauth2/client/grant-type.d.ts.map +1 -1
  1207. package/dist/core/oauth2/client/grant-type.mjs +2 -2
  1208. package/dist/core/oauth2/client/grant-type.mjs.map +1 -1
  1209. package/dist/core/oauth2/end-session/service.d.ts +2 -1
  1210. package/dist/core/oauth2/end-session/service.d.ts.map +1 -1
  1211. package/dist/core/oauth2/end-session/service.mjs +15 -2
  1212. package/dist/core/oauth2/end-session/service.mjs.map +1 -1
  1213. package/dist/core/oauth2/end-session/types.d.ts +2 -1
  1214. package/dist/core/oauth2/end-session/types.d.ts.map +1 -1
  1215. package/dist/core/oauth2/grant-types/authorize.d.ts +2 -2
  1216. package/dist/core/oauth2/grant-types/authorize.d.ts.map +1 -1
  1217. package/dist/core/oauth2/grant-types/authorize.mjs +20 -16
  1218. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  1219. package/dist/core/oauth2/grant-types/client-credentials.d.ts.map +1 -1
  1220. package/dist/core/oauth2/grant-types/client-credentials.mjs +10 -8
  1221. package/dist/core/oauth2/grant-types/client-credentials.mjs.map +1 -1
  1222. package/dist/core/oauth2/grant-types/identity.d.ts.map +1 -1
  1223. package/dist/core/oauth2/grant-types/identity.mjs +16 -9
  1224. package/dist/core/oauth2/grant-types/identity.mjs.map +1 -1
  1225. package/dist/core/oauth2/grant-types/index.d.ts +0 -1
  1226. package/dist/core/oauth2/grant-types/index.d.ts.map +1 -1
  1227. package/dist/core/oauth2/grant-types/index.mjs +1 -2
  1228. package/dist/core/oauth2/grant-types/password.d.ts +9 -0
  1229. package/dist/core/oauth2/grant-types/password.d.ts.map +1 -1
  1230. package/dist/core/oauth2/grant-types/password.mjs +39 -11
  1231. package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
  1232. package/dist/core/oauth2/grant-types/refresh-token.d.ts +4 -0
  1233. package/dist/core/oauth2/grant-types/refresh-token.d.ts.map +1 -1
  1234. package/dist/core/oauth2/grant-types/refresh-token.mjs +29 -13
  1235. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  1236. package/dist/core/oauth2/grant-types/types.d.ts +10 -3
  1237. package/dist/core/oauth2/grant-types/types.d.ts.map +1 -1
  1238. package/dist/core/oauth2/index.d.ts +2 -1
  1239. package/dist/core/oauth2/index.d.ts.map +1 -1
  1240. package/dist/core/oauth2/index.mjs +7 -3
  1241. package/dist/core/oauth2/mfa-login/index.d.ts +3 -0
  1242. package/dist/core/oauth2/mfa-login/index.d.ts.map +1 -0
  1243. package/dist/core/oauth2/mfa-login/index.mjs +5 -0
  1244. package/dist/core/oauth2/mfa-login/module.d.ts +19 -0
  1245. package/dist/core/oauth2/mfa-login/module.d.ts.map +1 -0
  1246. package/dist/core/oauth2/mfa-login/module.mjs +109 -0
  1247. package/dist/core/oauth2/mfa-login/module.mjs.map +1 -0
  1248. package/dist/core/oauth2/mfa-login/types.d.ts +64 -0
  1249. package/dist/core/oauth2/mfa-login/types.d.ts.map +1 -0
  1250. package/dist/core/oauth2/mfa-login/types.mjs +4 -0
  1251. package/dist/core/oauth2/openid/claims.d.ts +1 -3
  1252. package/dist/core/oauth2/openid/claims.d.ts.map +1 -1
  1253. package/dist/core/oauth2/openid/claims.mjs +6 -19
  1254. package/dist/core/oauth2/openid/claims.mjs.map +1 -1
  1255. package/dist/core/oauth2/scope/resolver.d.ts +1 -3
  1256. package/dist/core/oauth2/scope/resolver.d.ts.map +1 -1
  1257. package/dist/core/oauth2/scope/resolver.mjs +9 -31
  1258. package/dist/core/oauth2/scope/resolver.mjs.map +1 -1
  1259. package/dist/core/oauth2/session-token/types.d.ts +8 -8
  1260. package/dist/core/oauth2/session-token/types.d.ts.map +1 -1
  1261. package/dist/core/oauth2/token/index.mjs +2 -1
  1262. package/dist/core/oauth2/token/issuer/access/module.mjs +7 -7
  1263. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  1264. package/dist/core/oauth2/token/issuer/index.d.ts +1 -0
  1265. package/dist/core/oauth2/token/issuer/index.d.ts.map +1 -1
  1266. package/dist/core/oauth2/token/issuer/index.mjs +3 -1
  1267. package/dist/core/oauth2/token/issuer/mfa/index.d.ts +2 -0
  1268. package/dist/core/oauth2/token/issuer/mfa/index.d.ts.map +1 -0
  1269. package/dist/core/oauth2/token/issuer/mfa/index.mjs +5 -0
  1270. package/dist/core/oauth2/token/issuer/mfa/module.d.ts +18 -0
  1271. package/dist/core/oauth2/token/issuer/mfa/module.d.ts.map +1 -0
  1272. package/dist/core/oauth2/token/issuer/mfa/module.mjs +36 -0
  1273. package/dist/core/oauth2/token/issuer/mfa/module.mjs.map +1 -0
  1274. package/dist/core/oauth2/token/issuer/refresh/module.mjs +5 -5
  1275. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  1276. package/dist/core/oauth2/token/repository/types.d.ts +10 -0
  1277. package/dist/core/oauth2/token/repository/types.d.ts.map +1 -1
  1278. package/dist/core/oauth2/token/revoker/module.d.ts.map +1 -1
  1279. package/dist/core/oauth2/token/revoker/module.mjs +1 -0
  1280. package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
  1281. package/dist/core/oauth2/token/signer/module.d.ts +3 -3
  1282. package/dist/core/oauth2/token/signer/module.d.ts.map +1 -1
  1283. package/dist/core/oauth2/token/signer/module.mjs +11 -12
  1284. package/dist/core/oauth2/token/signer/module.mjs.map +1 -1
  1285. package/dist/core/oauth2/token/verifier/module.d.ts +3 -3
  1286. package/dist/core/oauth2/token/verifier/module.d.ts.map +1 -1
  1287. package/dist/core/oauth2/token/verifier/module.mjs +16 -13
  1288. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  1289. package/dist/core/provisioning/entities/index.d.ts +0 -1
  1290. package/dist/core/provisioning/entities/index.d.ts.map +1 -1
  1291. package/dist/core/provisioning/entities/index.mjs +1 -3
  1292. package/dist/core/provisioning/entities/policy/validator.d.ts +2 -0
  1293. package/dist/core/provisioning/entities/policy/validator.d.ts.map +1 -1
  1294. package/dist/core/provisioning/entities/policy/validator.mjs +10 -1
  1295. package/dist/core/provisioning/entities/policy/validator.mjs.map +1 -1
  1296. package/dist/core/provisioning/entities/realm/relations-validator.d.ts.map +1 -1
  1297. package/dist/core/provisioning/entities/realm/relations-validator.mjs +0 -4
  1298. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  1299. package/dist/core/provisioning/entities/realm/types.d.ts +0 -2
  1300. package/dist/core/provisioning/entities/realm/types.d.ts.map +1 -1
  1301. package/dist/core/provisioning/entities/role/types.d.ts +2 -2
  1302. package/dist/core/provisioning/index.mjs +1 -3
  1303. package/dist/core/provisioning/synchronizer/client/module.mjs +11 -11
  1304. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  1305. package/dist/core/provisioning/synchronizer/entity-resolver.mjs +12 -12
  1306. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  1307. package/dist/core/provisioning/synchronizer/index.d.ts +0 -1
  1308. package/dist/core/provisioning/synchronizer/index.d.ts.map +1 -1
  1309. package/dist/core/provisioning/synchronizer/index.mjs +1 -3
  1310. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts +2 -2
  1311. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts.map +1 -1
  1312. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs +2 -2
  1313. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs.map +1 -1
  1314. package/dist/core/provisioning/synchronizer/permission/module.mjs +8 -8
  1315. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  1316. package/dist/core/provisioning/synchronizer/policy/module.mjs +11 -11
  1317. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  1318. package/dist/core/provisioning/synchronizer/realm/module.d.ts +0 -2
  1319. package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
  1320. package/dist/core/provisioning/synchronizer/realm/module.mjs +5 -15
  1321. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  1322. package/dist/core/provisioning/synchronizer/realm/types.d.ts +0 -2
  1323. package/dist/core/provisioning/synchronizer/realm/types.d.ts.map +1 -1
  1324. package/dist/core/provisioning/synchronizer/role/module.mjs +7 -7
  1325. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  1326. package/dist/core/provisioning/synchronizer/scope/module.mjs +1 -1
  1327. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  1328. package/dist/core/provisioning/synchronizer/user/module.mjs +13 -13
  1329. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  1330. package/dist/core/query/index.d.ts +4 -0
  1331. package/dist/core/query/index.d.ts.map +1 -0
  1332. package/dist/core/query/index.mjs +6 -0
  1333. package/dist/core/query/module.d.ts +60 -0
  1334. package/dist/core/query/module.d.ts.map +1 -0
  1335. package/dist/core/query/module.mjs +128 -0
  1336. package/dist/core/query/module.mjs.map +1 -0
  1337. package/dist/core/query/relations.d.ts +39 -0
  1338. package/dist/core/query/relations.d.ts.map +1 -0
  1339. package/dist/core/query/relations.mjs +103 -0
  1340. package/dist/core/query/relations.mjs.map +1 -0
  1341. package/dist/core/query/types.d.ts +39 -0
  1342. package/dist/core/query/types.d.ts.map +1 -0
  1343. package/dist/core/query/types.mjs +4 -0
  1344. package/dist/core/security/policy/evaluator.d.ts +1 -0
  1345. package/dist/core/security/policy/evaluator.d.ts.map +1 -1
  1346. package/dist/core/security/policy/evaluator.mjs +52 -5
  1347. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  1348. package/dist/index.mjs +52 -46
  1349. package/dist/swagger.json +4524 -3291
  1350. package/dist/ui/client/.vite/ssr-manifest.json +4606 -934
  1351. package/dist/ui/client/assets/{index-CP9HCHoS.js → index-BmJ2X468.js} +21 -17
  1352. package/dist/ui/client/assets/index-DiOvW76Q.css +2 -0
  1353. package/dist/ui/client/index.html +2 -2
  1354. package/dist/ui/server/server.js +64002 -56519
  1355. package/package.json +35 -24
  1356. package/dist/adapters/database/domains/robot/entity.d.ts +0 -19
  1357. package/dist/adapters/database/domains/robot/entity.d.ts.map +0 -1
  1358. package/dist/adapters/database/domains/robot/entity.mjs +0 -112
  1359. package/dist/adapters/database/domains/robot/entity.mjs.map +0 -1
  1360. package/dist/adapters/database/domains/robot/index.d.ts +0 -3
  1361. package/dist/adapters/database/domains/robot/index.d.ts.map +0 -1
  1362. package/dist/adapters/database/domains/robot/index.mjs +0 -6
  1363. package/dist/adapters/database/domains/robot/subscriber.d.ts +0 -6
  1364. package/dist/adapters/database/domains/robot/subscriber.d.ts.map +0 -1
  1365. package/dist/adapters/database/domains/robot/subscriber.mjs +0 -42
  1366. package/dist/adapters/database/domains/robot/subscriber.mjs.map +0 -1
  1367. package/dist/adapters/database/domains/robot-permission/entity.d.ts +0 -18
  1368. package/dist/adapters/database/domains/robot-permission/entity.d.ts.map +0 -1
  1369. package/dist/adapters/database/domains/robot-permission/entity.mjs +0 -91
  1370. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +0 -1
  1371. package/dist/adapters/database/domains/robot-permission/index.d.ts.map +0 -1
  1372. package/dist/adapters/database/domains/robot-permission/index.mjs +0 -6
  1373. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts +0 -6
  1374. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts.map +0 -1
  1375. package/dist/adapters/database/domains/robot-permission/subscriber.mjs +0 -45
  1376. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +0 -1
  1377. package/dist/adapters/database/domains/robot-role/entity.d.ts +0 -15
  1378. package/dist/adapters/database/domains/robot-role/entity.d.ts.map +0 -1
  1379. package/dist/adapters/database/domains/robot-role/entity.mjs +0 -72
  1380. package/dist/adapters/database/domains/robot-role/entity.mjs.map +0 -1
  1381. package/dist/adapters/database/domains/robot-role/index.d.ts +0 -3
  1382. package/dist/adapters/database/domains/robot-role/index.d.ts.map +0 -1
  1383. package/dist/adapters/database/domains/robot-role/index.mjs +0 -6
  1384. package/dist/adapters/database/domains/robot-role/subscriber.d.ts +0 -6
  1385. package/dist/adapters/database/domains/robot-role/subscriber.d.ts.map +0 -1
  1386. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +0 -1
  1387. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts +0 -12
  1388. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts.map +0 -1
  1389. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs +0 -27
  1390. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +0 -1
  1391. package/dist/adapters/http/controllers/entities/robot/index.d.ts.map +0 -1
  1392. package/dist/adapters/http/controllers/entities/robot/index.mjs +0 -5
  1393. package/dist/adapters/http/controllers/entities/robot/module.d.ts +0 -25
  1394. package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +0 -1
  1395. package/dist/adapters/http/controllers/entities/robot/module.mjs +0 -180
  1396. package/dist/adapters/http/controllers/entities/robot/module.mjs.map +0 -1
  1397. package/dist/adapters/http/controllers/entities/robot-permission/index.d.ts +0 -3
  1398. package/dist/adapters/http/controllers/entities/robot-permission/index.d.ts.map +0 -1
  1399. package/dist/adapters/http/controllers/entities/robot-permission/index.mjs +0 -7
  1400. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts +0 -17
  1401. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts.map +0 -1
  1402. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +0 -1
  1403. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.d.ts +0 -2
  1404. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.d.ts.map +0 -1
  1405. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.mjs +0 -5
  1406. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.d.ts +0 -6
  1407. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.d.ts.map +0 -1
  1408. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs +0 -21
  1409. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs.map +0 -1
  1410. package/dist/adapters/http/controllers/entities/robot-role/index.d.ts +0 -3
  1411. package/dist/adapters/http/controllers/entities/robot-role/index.d.ts.map +0 -1
  1412. package/dist/adapters/http/controllers/entities/robot-role/index.mjs +0 -7
  1413. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts +0 -16
  1414. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts.map +0 -1
  1415. package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +0 -1
  1416. package/dist/adapters/http/controllers/entities/robot-role/utils/index.d.ts +0 -2
  1417. package/dist/adapters/http/controllers/entities/robot-role/utils/index.d.ts.map +0 -1
  1418. package/dist/adapters/http/controllers/entities/robot-role/utils/index.mjs +0 -5
  1419. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.d.ts +0 -6
  1420. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.d.ts.map +0 -1
  1421. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs +0 -20
  1422. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs.map +0 -1
  1423. package/dist/app/modules/database/repositories/robot/index.d.ts.map +0 -1
  1424. package/dist/app/modules/database/repositories/robot/index.mjs +0 -5
  1425. package/dist/app/modules/database/repositories/robot/repository.d.ts +0 -31
  1426. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +0 -1
  1427. package/dist/app/modules/database/repositories/robot/repository.mjs +0 -190
  1428. package/dist/app/modules/database/repositories/robot/repository.mjs.map +0 -1
  1429. package/dist/app/modules/database/repositories/robot-permission/index.d.ts.map +0 -1
  1430. package/dist/app/modules/database/repositories/robot-permission/index.mjs +0 -5
  1431. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts +0 -20
  1432. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts.map +0 -1
  1433. package/dist/app/modules/database/repositories/robot-permission/repository.mjs +0 -79
  1434. package/dist/app/modules/database/repositories/robot-permission/repository.mjs.map +0 -1
  1435. package/dist/app/modules/database/repositories/robot-role/index.d.ts.map +0 -1
  1436. package/dist/app/modules/database/repositories/robot-role/index.mjs +0 -5
  1437. package/dist/app/modules/database/repositories/robot-role/repository.d.ts +0 -20
  1438. package/dist/app/modules/database/repositories/robot-role/repository.d.ts.map +0 -1
  1439. package/dist/app/modules/database/repositories/robot-role/repository.mjs +0 -79
  1440. package/dist/app/modules/database/repositories/robot-role/repository.mjs.map +0 -1
  1441. package/dist/app/modules/identity/repositories/robot.d.ts +0 -13
  1442. package/dist/app/modules/identity/repositories/robot.d.ts.map +0 -1
  1443. package/dist/app/modules/identity/repositories/robot.mjs +0 -47
  1444. package/dist/app/modules/identity/repositories/robot.mjs.map +0 -1
  1445. package/dist/app/modules/oauth2/repositories/key/index.d.ts.map +0 -1
  1446. package/dist/app/modules/oauth2/repositories/key/index.mjs +0 -5
  1447. package/dist/app/modules/oauth2/repositories/key/repository.d.ts +0 -14
  1448. package/dist/app/modules/oauth2/repositories/key/repository.d.ts.map +0 -1
  1449. package/dist/app/modules/oauth2/repositories/key/repository.mjs +0 -51
  1450. package/dist/app/modules/oauth2/repositories/key/repository.mjs.map +0 -1
  1451. package/dist/core/authentication/credential/entities/robot/index.d.ts.map +0 -1
  1452. package/dist/core/authentication/credential/entities/robot/index.mjs +0 -5
  1453. package/dist/core/authentication/credential/entities/robot/module.d.ts +0 -8
  1454. package/dist/core/authentication/credential/entities/robot/module.d.ts.map +0 -1
  1455. package/dist/core/authentication/credential/entities/robot/module.mjs +0 -22
  1456. package/dist/core/authentication/credential/entities/robot/module.mjs.map +0 -1
  1457. package/dist/core/authentication/entities/robot/index.d.ts.map +0 -1
  1458. package/dist/core/authentication/entities/robot/index.mjs +0 -5
  1459. package/dist/core/authentication/entities/robot/module.d.ts +0 -11
  1460. package/dist/core/authentication/entities/robot/module.d.ts.map +0 -1
  1461. package/dist/core/authentication/entities/robot/module.mjs +0 -29
  1462. package/dist/core/authentication/entities/robot/module.mjs.map +0 -1
  1463. package/dist/core/entities/robot/index.d.ts +0 -3
  1464. package/dist/core/entities/robot/index.d.ts.map +0 -1
  1465. package/dist/core/entities/robot/index.mjs +0 -5
  1466. package/dist/core/entities/robot/service.d.ts +0 -28
  1467. package/dist/core/entities/robot/service.d.ts.map +0 -1
  1468. package/dist/core/entities/robot/service.mjs +0 -201
  1469. package/dist/core/entities/robot/service.mjs.map +0 -1
  1470. package/dist/core/entities/robot/types.d.ts +0 -24
  1471. package/dist/core/entities/robot/types.d.ts.map +0 -1
  1472. package/dist/core/entities/robot-permission/index.d.ts.map +0 -1
  1473. package/dist/core/entities/robot-permission/index.mjs +0 -5
  1474. package/dist/core/entities/robot-permission/service.d.ts +0 -25
  1475. package/dist/core/entities/robot-permission/service.d.ts.map +0 -1
  1476. package/dist/core/entities/robot-permission/service.mjs +0 -137
  1477. package/dist/core/entities/robot-permission/service.mjs.map +0 -1
  1478. package/dist/core/entities/robot-permission/types.d.ts +0 -12
  1479. package/dist/core/entities/robot-permission/types.d.ts.map +0 -1
  1480. package/dist/core/entities/robot-role/index.d.ts +0 -3
  1481. package/dist/core/entities/robot-role/index.d.ts.map +0 -1
  1482. package/dist/core/entities/robot-role/index.mjs +0 -5
  1483. package/dist/core/entities/robot-role/service.d.ts +0 -22
  1484. package/dist/core/entities/robot-role/service.d.ts.map +0 -1
  1485. package/dist/core/entities/robot-role/service.mjs +0 -90
  1486. package/dist/core/entities/robot-role/service.mjs.map +0 -1
  1487. package/dist/core/entities/robot-role/types.d.ts +0 -11
  1488. package/dist/core/entities/robot-role/types.d.ts.map +0 -1
  1489. package/dist/core/identity/entities/robot/index.d.ts +0 -2
  1490. package/dist/core/identity/entities/robot/index.d.ts.map +0 -1
  1491. package/dist/core/identity/entities/robot/types.d.ts +0 -8
  1492. package/dist/core/identity/entities/robot/types.d.ts.map +0 -1
  1493. package/dist/core/oauth2/grant-types/robot-credentials.d.ts +0 -8
  1494. package/dist/core/oauth2/grant-types/robot-credentials.d.ts.map +0 -1
  1495. package/dist/core/oauth2/grant-types/robot-credentials.mjs +0 -38
  1496. package/dist/core/oauth2/grant-types/robot-credentials.mjs.map +0 -1
  1497. package/dist/core/oauth2/key/index.d.ts +0 -2
  1498. package/dist/core/oauth2/key/index.d.ts.map +0 -1
  1499. package/dist/core/oauth2/key/types.d.ts +0 -16
  1500. package/dist/core/oauth2/key/types.d.ts.map +0 -1
  1501. package/dist/core/provisioning/entities/robot/index.d.ts +0 -3
  1502. package/dist/core/provisioning/entities/robot/index.d.ts.map +0 -1
  1503. package/dist/core/provisioning/entities/robot/index.mjs +0 -5
  1504. package/dist/core/provisioning/entities/robot/relations-validator.d.ts +0 -6
  1505. package/dist/core/provisioning/entities/robot/relations-validator.d.ts.map +0 -1
  1506. package/dist/core/provisioning/entities/robot/relations-validator.mjs +0 -20
  1507. package/dist/core/provisioning/entities/robot/relations-validator.mjs.map +0 -1
  1508. package/dist/core/provisioning/entities/robot/types.d.ts +0 -25
  1509. package/dist/core/provisioning/entities/robot/types.d.ts.map +0 -1
  1510. package/dist/core/provisioning/entities/robot/validator.d.ts +0 -6
  1511. package/dist/core/provisioning/entities/robot/validator.d.ts.map +0 -1
  1512. package/dist/core/provisioning/entities/robot/validator.mjs +0 -24
  1513. package/dist/core/provisioning/entities/robot/validator.mjs.map +0 -1
  1514. package/dist/core/provisioning/synchronizer/robot/index.d.ts.map +0 -1
  1515. package/dist/core/provisioning/synchronizer/robot/index.mjs +0 -5
  1516. package/dist/core/provisioning/synchronizer/robot/module.d.ts +0 -17
  1517. package/dist/core/provisioning/synchronizer/robot/module.d.ts.map +0 -1
  1518. package/dist/core/provisioning/synchronizer/robot/module.mjs +0 -72
  1519. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +0 -1
  1520. package/dist/core/provisioning/synchronizer/robot/types.d.ts +0 -9
  1521. package/dist/core/provisioning/synchronizer/robot/types.d.ts.map +0 -1
  1522. package/dist/ui/client/assets/index-VM4JXBXw.css +0 -2
  1523. /package/dist/adapters/database/domains/{robot-permission → consent}/index.d.ts +0 -0
  1524. /package/dist/adapters/http/controllers/entities/{robot → consent}/index.d.ts +0 -0
  1525. /package/dist/{core/authentication/credential/entities/robot → adapters/http/controllers/entities/event}/index.d.ts +0 -0
  1526. /package/dist/{core/authentication/entities/robot → adapters/http/controllers/entities/key}/index.d.ts +0 -0
  1527. /package/dist/{core/entities/robot-permission → adapters/http/request}/types.mjs +0 -0
  1528. /package/dist/app/modules/database/repositories/{robot-permission → event}/index.d.ts +0 -0
  1529. /package/dist/app/modules/database/repositories/{robot-role → key}/index.d.ts +0 -0
  1530. /package/dist/app/modules/database/repositories/{robot → trust-anchor}/index.d.ts +0 -0
  1531. /package/dist/app/modules/{oauth2/repositories/key → database/repositories/user-authenticator}/index.d.ts +0 -0
  1532. /package/dist/core/{entities/robot-permission → authentication/login-throttle}/index.d.ts +0 -0
  1533. /package/dist/core/{entities/robot-role → authentication/login-throttle}/types.mjs +0 -0
  1534. /package/dist/core/{provisioning/synchronizer/robot → client-certificate}/index.d.ts +0 -0
  1535. /package/dist/core/{entities/robot → client-certificate}/types.mjs +0 -0
  1536. /package/dist/core/{identity/entities/robot → entities/event}/types.mjs +0 -0
  1537. /package/dist/core/{oauth2 → entities}/key/types.mjs +0 -0
  1538. /package/dist/core/{provisioning/entities/robot → entities/trust-anchor}/types.mjs +0 -0
  1539. /package/dist/core/{provisioning/synchronizer/robot → key}/types.mjs +0 -0
  1540. /package/dist/core/{identity/entities/robot/index.mjs → metrics/types.mjs} +0 -0
  1541. /package/dist/core/oauth2/{key/index.mjs → access-policy/types.mjs} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.mjs","names":["randomUUID","BuiltInPolicyType","definePolicyData","ValidatorGroup","eq","inArray","or","EventName","EventRefType","EventScope","IdentityType","PermissionName","UserAuthenticatorKind","UserAuthenticatorValidator","AuthupError","EntityCredentialsInvalidError","EntityNotFoundError","ErrorCode","MfaThrottledError","ValidationError","isMfaThrottledError","AbstractEntityService","buildCacheKey","compare","hash","Secret","TOTP","QRCode","isRealmCipherBlobError","MailTemplateName","buildWebauthnAuthenticationOptions","buildWebauthnRegistrationOptions","verifyWebauthnAuthentication","verifyWebauthnRegistration","USER_AUTHENTICATOR_ATTEMPT_CACHE_PREFIX","USER_AUTHENTICATOR_ATTEMPT_LOCK_FACTOR","USER_AUTHENTICATOR_ATTEMPT_LOCK_MAX","USER_AUTHENTICATOR_ATTEMPT_WINDOW","USER_AUTHENTICATOR_EMAIL_CODE_CACHE_PREFIX","USER_AUTHENTICATOR_EMAIL_CODE_EXPIRES_IN_MINUTES","USER_AUTHENTICATOR_EMAIL_CODE_LENGTH","USER_AUTHENTICATOR_EMAIL_SEND_CACHE_PREFIX","USER_AUTHENTICATOR_EMAIL_SEND_COOLDOWN","USER_AUTHENTICATOR_RECOVERY_CODE_COUNT","USER_AUTHENTICATOR_THROTTLE_CACHE_PREFIX","USER_AUTHENTICATOR_TOTP_ALGORITHM","USER_AUTHENTICATOR_TOTP_DIGITS","USER_AUTHENTICATOR_TOTP_PERIOD","USER_AUTHENTICATOR_VERIFY_LOCK_CACHE_PREFIX","USER_AUTHENTICATOR_VERIFY_LOCK_RENEW_INTERVAL","USER_AUTHENTICATOR_VERIFY_LOCK_TTL","USER_AUTHENTICATOR_WEBAUTHN_AUTH_CACHE_PREFIX","USER_AUTHENTICATOR_WEBAUTHN_CHALLENGE_WINDOW","USER_AUTHENTICATOR_WEBAUTHN_REG_CACHE_PREFIX","generateNumericCode","generateRecoveryCode","appendQueryConditions","decodeQuery","userAuthenticatorSchema","UserAuthenticatorService","repository","userRepository","cache","cipher","eventService","mailClient","mailTemplateRenderer","options","validator","ctx","isOwnedBy","entity","actor","identity","type","USER","userId","data","id","sanitize","secret","codes","getMany","query","isSelf","permissionEvaluator","preEvaluate","name","USER_AUTHENTICATOR_READ","parsed","schema","findManyOptions","owner","compiled","verdict","compile","ownership","scoped","condition","meta","findMany","map","entities","total","push","evaluate","ATTRIBUTES","resourceRealmMatch","getOne","resolveOne","findOneById","enroll","assertEnabled","validated","run","group","CREATE","user","resolveTargetUser","isSelfEnrollment","kind","EMAIL","enrollTotp","RECOVERY","enrollRecovery","enrollEmail","WEBAUTHN","enrollWebauthn","assertWebauthn","existing","findAllWithSecretsByUser","confirmed","excludeCredentials","device","parseWebauthnParameters","filter","parameters","credential_id","transports","challenge","create","realmId","save","set","buildWebauthnCacheKey","expiresAt","Date","now","ttl","webauthn","assertMail","email","findOneByWithEmail","findAllByUser","length","primary","duplicates","duplicate","remove","recordEvent","MFA_ENROLLED","actorUser","undefined","code","IDENTITY_UNAUTHORIZED","message","target","USER_AUTHENTICATOR_CREATE","size","algorithm","digits","period","totp","issuer","label","uri","toString","encrypt","base32","JSON","stringify","qr","toDataURL","stored","i","used_at","confirm","USER_AUTHENTICATOR_UPDATE","confirmWebauthn","assertNotThrottledOrRetry","withSecrets","findOneWithSecretsById","verifyTotp","bumpAttempts","resetAttempts","output","response","cacheKey","state","get","parse","credential","drop","delete","USER_AUTHENTICATOR_DELETE","entityId","MFA_REMOVED","verify","input","assertNotThrottled","e","lockKey","buildVerifyLockCacheKey","lock","acquireVerifyLock","status","lease","maintainVerifyLock","value","devices","matched","verifyRecovery","verifyEmail","newCounter","verifyWebauthnDevice","counter","recordChallengeEvent","MFA_CHALLENGE_FAILED","renew","onVerified","lastUsedAt","toISOString","buildEmailCodeCacheKey","MFA_VERIFIED","stop","releaseVerifyLock","token","seed","decrypt","fromBase32","delta","validate","trim","window","step","Math","floor","entries","normalized","toLowerCase","entry","result","verified","key","sendChallenge","withinCooldown","add","buildEmailSendCacheKey","retryAfter","codeValue","mail","render","template","MFA_EMAIL_OTP","params","expiresInMinutes","locale","send","to","hasConfirmed","hasConfirmedByUser","enabled","required","enrollmentRequired","kinds","Array","from","Set","issueMaterial","includes","credentials","MFA_NOT_CONFIGURABLE","buildAttemptCacheKey","prefix","buildThrottleCacheKey","owned","pending","queueRenewal","renewIfValue","then","renewed","catch","finally","timer","setInterval","clearInterval","dropIfValue","lockedUntil","ceil","count","increment","delay","min","dropMany","record","scope","IDENTITY","refType","USER_AUTHENTICATOR","refId","actorType","actorId","clientId","requestIpAddress","ipAddress","requestUserAgent","userAgent"],"sources":["../../../../src/core/entities/user-authenticator/service.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { randomUUID } from 'node:crypto';\nimport { BuiltInPolicyType, definePolicyData } from '@authup/access';\nimport { ValidatorGroup } from '@authup/kit';\nimport { eq, inArray, or } from '@rapiq/core';\nimport {\n EventName, \n EventRefType, \n EventScope, \n IdentityType, \n PermissionName, \n UserAuthenticatorKind, \n UserAuthenticatorValidator,\n} from '@authup/core-kit';\nimport type { User, UserAuthenticator } from '@authup/core-kit';\nimport {\n AuthupError,\n EntityCredentialsInvalidError,\n EntityNotFoundError,\n ErrorCode,\n MfaThrottledError,\n ValidationError,\n isMfaThrottledError,\n} from '@authup/errors';\nimport { \n AbstractEntityService, \n buildCacheKey, \n compare, \n hash, \n} from '@authup/server-kit';\nimport type {\n ActorContext,\n EntityRepositoryFindManyResult,\n ICache,\n} from '@authup/server-kit';\nimport { Secret, TOTP } from 'otpauth';\nimport QRCode from 'qrcode';\nimport type { AuthenticationResponseJSON, RegistrationResponseJSON } from '@simplewebauthn/server';\nimport { isRealmCipherBlobError } from '../../key/index.ts';\nimport type { IRealmCipher } from '../../key/index.ts';\nimport type { IEventService } from '../event/index.ts';\nimport type { IMailClient, IMailTemplateRenderer } from '../../mail/index.ts';\nimport { MailTemplateName } from '../../mail/index.ts';\nimport type { IUserRepository } from '../user/index.ts';\nimport {\n buildWebauthnAuthenticationOptions,\n buildWebauthnRegistrationOptions,\n verifyWebauthnAuthentication,\n verifyWebauthnRegistration,\n} from './webauthn.ts';\nimport {\n USER_AUTHENTICATOR_ATTEMPT_CACHE_PREFIX,\n USER_AUTHENTICATOR_ATTEMPT_LOCK_FACTOR,\n USER_AUTHENTICATOR_ATTEMPT_LOCK_MAX,\n USER_AUTHENTICATOR_ATTEMPT_WINDOW,\n USER_AUTHENTICATOR_EMAIL_CODE_CACHE_PREFIX,\n USER_AUTHENTICATOR_EMAIL_CODE_EXPIRES_IN_MINUTES,\n USER_AUTHENTICATOR_EMAIL_CODE_LENGTH,\n USER_AUTHENTICATOR_EMAIL_SEND_CACHE_PREFIX,\n USER_AUTHENTICATOR_EMAIL_SEND_COOLDOWN,\n USER_AUTHENTICATOR_RECOVERY_CODE_COUNT,\n USER_AUTHENTICATOR_THROTTLE_CACHE_PREFIX,\n USER_AUTHENTICATOR_TOTP_ALGORITHM,\n USER_AUTHENTICATOR_TOTP_DIGITS,\n USER_AUTHENTICATOR_TOTP_PERIOD,\n USER_AUTHENTICATOR_VERIFY_LOCK_CACHE_PREFIX,\n USER_AUTHENTICATOR_VERIFY_LOCK_RENEW_INTERVAL,\n USER_AUTHENTICATOR_VERIFY_LOCK_TTL,\n USER_AUTHENTICATOR_WEBAUTHN_AUTH_CACHE_PREFIX,\n USER_AUTHENTICATOR_WEBAUTHN_CHALLENGE_WINDOW,\n USER_AUTHENTICATOR_WEBAUTHN_REG_CACHE_PREFIX,\n} from './constants.ts';\nimport { generateNumericCode, generateRecoveryCode } from './helpers.ts';\nimport type {\n IUserAuthenticatorRepository,\n IUserAuthenticatorService,\n UserAuthenticatorChallengeStatus,\n UserAuthenticatorEnrollResult,\n UserAuthenticatorRecoveryCode,\n UserAuthenticatorSendContext,\n UserAuthenticatorServiceContext,\n UserAuthenticatorServiceOptions,\n UserAuthenticatorTotpParameters,\n UserAuthenticatorVerifyContext,\n UserAuthenticatorVerifyInput,\n UserAuthenticatorWebauthnParameters,\n} from './types.ts';\nimport type { WebauthnContext } from './webauthn.ts';\nimport { appendQueryConditions, decodeQuery } from '../../query/index.ts';\nimport { userAuthenticatorSchema } from './schema.ts';\n\ntype EmailCodeState = {\n hash: string,\n expiresAt: number,\n};\n\ntype WebauthnChallengeState = {\n challenge: string,\n expiresAt: number,\n};\n\ntype VerifyLock = {\n status: 'acquired',\n value: string,\n} | {\n status: 'busy' | 'unavailable',\n};\n\ntype VerifyLockLease = {\n renew: () => Promise<boolean>,\n stop: () => Promise<void>,\n};\n\nexport class UserAuthenticatorService extends AbstractEntityService implements IUserAuthenticatorService {\n protected repository: IUserAuthenticatorRepository;\n\n protected userRepository: IUserRepository;\n\n protected cache: ICache;\n\n protected cipher: IRealmCipher;\n\n protected eventService?: IEventService;\n\n protected mailClient?: IMailClient;\n\n protected mailTemplateRenderer?: IMailTemplateRenderer;\n\n protected options: UserAuthenticatorServiceOptions;\n\n protected validator: UserAuthenticatorValidator;\n\n constructor(ctx: UserAuthenticatorServiceContext) {\n super();\n\n this.repository = ctx.repository;\n this.userRepository = ctx.userRepository;\n this.cache = ctx.cache;\n this.cipher = ctx.cipher;\n this.eventService = ctx.eventService;\n this.mailClient = ctx.mailClient;\n this.mailTemplateRenderer = ctx.mailTemplateRenderer;\n this.options = ctx.options ?? {};\n this.validator = new UserAuthenticatorValidator();\n }\n\n protected isOwnedBy(entity: UserAuthenticator, actor: ActorContext): boolean {\n return !!actor.identity &&\n actor.identity.type === IdentityType.USER &&\n entity.userId === actor.identity.data.id;\n }\n\n /**\n * The secret/codes columns never leave the service — reads return the\n * row with both nulled (defense in depth on top of select:false).\n */\n protected sanitize(entity: UserAuthenticator): UserAuthenticator {\n return {\n ...entity,\n secret: null,\n codes: null,\n };\n }\n\n // ------------------------------------------------------------------\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n options: { userId?: string } = {},\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>> {\n const isSelf = !!options.userId &&\n !!actor.identity &&\n actor.identity.type === IdentityType.USER &&\n actor.identity.data.id === options.userId;\n\n if (!isSelf) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_AUTHENTICATOR_READ });\n }\n\n const parsed = await decodeQuery(query, { schema: userAuthenticatorSchema, actor });\n const findManyOptions = options.userId ? { owner: { userId: options.userId } } : {};\n\n // Own devices are ungated: the nested self read is already owner-scoped,\n // and on the wider mounts ownership composes as an OR-alternative with\n // the compiled USER_AUTHENTICATOR_READ condition (#3286 phase 3) — the\n // whole gate runs as WHERE and pagination/totals stay exact. A\n // non-expressible policy falls back to the per-row loop below.\n const compiled = isSelf ?\n { verdict: 'allow' as const } :\n await actor.permissionEvaluator.compile({ name: PermissionName.USER_AUTHENTICATOR_READ });\n if (compiled.verdict !== 'post') {\n const ownership = actor.identity && actor.identity.type === IdentityType.USER ?\n eq('userId', actor.identity.data.id) :\n null;\n\n let scoped = parsed;\n if (compiled.verdict === 'deny') {\n scoped = appendQueryConditions(parsed, ownership ?? inArray('id', []));\n } else if (compiled.verdict === 'conditional') {\n scoped = appendQueryConditions(\n parsed,\n ownership ? or(ownership, compiled.condition) : compiled.condition,\n );\n }\n\n const { data, meta } = await this.repository.findMany(scoped, findManyOptions);\n\n return {\n data: data.map((entity) => this.sanitize(entity)),\n meta,\n };\n }\n\n const { data: entities, meta } = await this.repository.findMany(\n parsed,\n findManyOptions,\n );\n\n const data: UserAuthenticator[] = [];\n let { total } = meta;\n\n for (const entity of entities) {\n if (this.isOwnedBy(entity, actor)) {\n data.push(this.sanitize(entity));\n continue;\n }\n\n try {\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_AUTHENTICATOR_READ,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n data.push(this.sanitize(entity));\n } catch {\n total -= 1;\n }\n }\n\n return {\n data,\n meta: {\n ...meta,\n total,\n },\n };\n }\n\n async getOne(\n id: string,\n actor: ActorContext,\n options: { userId?: string } = {},\n ): Promise<UserAuthenticator> {\n const entity = await this.resolveOne(id, options.userId);\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_AUTHENTICATOR_READ });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_AUTHENTICATOR_READ,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n return this.sanitize(entity);\n }\n\n protected async resolveOne(id: string, userId?: string): Promise<UserAuthenticator> {\n const entity = await this.repository.findOneById(id);\n // a device of another user is a 404 on the nested route — never\n // an existence oracle across users.\n if (!entity || (userId && entity.userId !== userId)) {\n throw new EntityNotFoundError();\n }\n\n return entity;\n }\n\n // ------------------------------------------------------------------\n\n async enroll(data: Record<string, any>, actor: ActorContext): Promise<UserAuthenticatorEnrollResult> {\n this.assertEnabled();\n\n const validated = await this.validator.run(data, { group: ValidatorGroup.CREATE });\n\n const user = await this.resolveTargetUser(validated.userId, actor, validated);\n\n // Only EMAIL may be provisioned FOR another user: its code is mailed to\n // the user's own (already-verified) mailbox, so the enroller never\n // obtains a factor it controls. Every other kind would let an admin plant\n // a second factor they hold, defeating MFA — TOTP/recovery return the\n // seed/codes to the caller, and a WebAuthn ceremony can be completed on\n // the enroller's OWN authenticator (the server can't tell whose device\n // signed). Those are self-enrollment only (Keycloak/Okta/Authentik don't\n // hand a user's factor secret to an admin either); an admin resets another\n // user's MFA by DELETING it, and the user re-enrolls.\n const isSelfEnrollment = !!actor.identity &&\n actor.identity.type === IdentityType.USER &&\n actor.identity.data.id === user.id;\n if (!isSelfEnrollment && validated.kind !== UserAuthenticatorKind.EMAIL) {\n throw new ValidationError(\n `A ${validated.kind} authenticator can only be enrolled by the account owner.`,\n );\n }\n\n switch (validated.kind) {\n case UserAuthenticatorKind.TOTP: {\n return this.enrollTotp(user, validated.name ?? null);\n }\n case UserAuthenticatorKind.RECOVERY: {\n return this.enrollRecovery(user, validated.name ?? null);\n }\n case UserAuthenticatorKind.EMAIL: {\n return this.enrollEmail(user, validated.name ?? null);\n }\n case UserAuthenticatorKind.WEBAUTHN: {\n return this.enrollWebauthn(user, validated.name ?? null);\n }\n default: {\n throw new ValidationError(`The authenticator kind ${validated.kind} can not be enrolled yet.`);\n }\n }\n }\n\n protected async enrollWebauthn(user: User, name: string | null): Promise<UserAuthenticatorEnrollResult> {\n const ctx = this.assertWebauthn();\n\n // exclude already-registered credentials from a fresh ceremony\n const existing = await this.repository.findAllWithSecretsByUser(user.id, {\n kind: UserAuthenticatorKind.WEBAUTHN,\n confirmed: true,\n });\n const excludeCredentials = existing\n .map((device) => this.parseWebauthnParameters(device))\n .filter((parameters): parameters is UserAuthenticatorWebauthnParameters => !!parameters)\n .map((parameters) => ({ id: parameters.credential_id, transports: parameters.transports }));\n\n const { options, challenge } = await buildWebauthnRegistrationOptions(\n ctx,\n { id: user.id, name: user.name },\n excludeCredentials,\n );\n\n let entity = this.repository.create({\n kind: UserAuthenticatorKind.WEBAUTHN,\n name,\n confirmed: false,\n userId: user.id,\n realmId: user.realmId,\n });\n entity = await this.repository.save(entity);\n\n // Key the challenge by the newly created (unconfirmed) row id, NOT the\n // user id — overlapping enrollment ceremonies (a second tab, a retry\n // after a cancelled prompt) would otherwise overwrite each other's\n // challenge and make the first confirmation fail spuriously.\n await this.cache.set(\n this.buildWebauthnCacheKey(USER_AUTHENTICATOR_WEBAUTHN_REG_CACHE_PREFIX, entity.id),\n {\n challenge,\n expiresAt: Date.now() + (USER_AUTHENTICATOR_WEBAUTHN_CHALLENGE_WINDOW * 1_000),\n } satisfies WebauthnChallengeState,\n { ttl: USER_AUTHENTICATOR_WEBAUTHN_CHALLENGE_WINDOW * 1_000 },\n );\n\n return {\n data: this.sanitize(entity),\n meta: { webauthn: options },\n };\n }\n\n protected async enrollEmail(user: User, name: string | null): Promise<UserAuthenticatorEnrollResult> {\n this.assertMail();\n\n // The actor identity may not carry `email` (the User entity's email\n // column is select:false) — force-load it to confirm the mailbox\n // exists. The email is presumed verified (activation); the row marks\n // the mailbox as an enrolled factor, codes are transient (cache).\n const email = user.email ?? (await this.userRepository.findOneByWithEmail({ id: user.id }))?.email;\n if (!email) {\n throw new ValidationError('The user has no email address to receive codes.');\n }\n\n // one email factor per user — update the existing marker row in place\n // rather than remove-then-create, so a failed save never leaves the user\n // with no email factor (the row is a pure marker: no secret/codes).\n const existing = (await this.repository.findAllByUser(user.id))\n .filter((device) => device.kind === UserAuthenticatorKind.EMAIL);\n\n let entity: UserAuthenticator;\n if (existing.length > 0) {\n const [primary, ...duplicates] = existing;\n primary.name = name;\n primary.confirmed = true;\n entity = await this.repository.save(primary);\n // best-effort cleanup of any stray duplicates (invariant anomaly);\n // a failure here still leaves the primary factor intact.\n for (const duplicate of duplicates) {\n await this.repository.remove(duplicate);\n }\n } else {\n entity = this.repository.create({\n kind: UserAuthenticatorKind.EMAIL,\n name,\n confirmed: true,\n userId: user.id,\n realmId: user.realmId,\n });\n entity = await this.repository.save(entity);\n }\n\n await this.recordEvent(EventName.MFA_ENROLLED, entity);\n\n return { data: this.sanitize(entity), meta: {} };\n }\n\n protected async resolveTargetUser(\n userId: string | undefined,\n actor: ActorContext,\n validated: Record<string, any>,\n ): Promise<User> {\n const actorUser : User | undefined = actor.identity && actor.identity.type === IdentityType.USER ?\n actor.identity.data as User :\n undefined;\n\n if (!userId || (actorUser && actorUser.id === userId)) {\n if (!actorUser) {\n throw new AuthupError({ code: ErrorCode.IDENTITY_UNAUTHORIZED, message: 'Authentication required.' });\n }\n\n return actorUser;\n }\n\n const target = await this.userRepository.findOneById(userId);\n if (!target) {\n throw new EntityNotFoundError();\n }\n\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_AUTHENTICATOR_CREATE });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_AUTHENTICATOR_CREATE,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: { ...validated, realmId: target.realmId },\n ...this.resourceRealmMatch(target),\n }),\n });\n\n return target;\n }\n\n protected async enrollTotp(user: User, name: string | null): Promise<UserAuthenticatorEnrollResult> {\n const secret = new Secret({ size: 20 });\n const parameters : UserAuthenticatorTotpParameters = {\n algorithm: USER_AUTHENTICATOR_TOTP_ALGORITHM,\n digits: USER_AUTHENTICATOR_TOTP_DIGITS,\n period: USER_AUTHENTICATOR_TOTP_PERIOD,\n };\n\n const totp = new TOTP({\n issuer: this.options.issuer ?? 'authup',\n label: user.name,\n algorithm: parameters.algorithm,\n digits: parameters.digits,\n period: parameters.period,\n secret,\n });\n const uri = totp.toString();\n\n let entity = this.repository.create({\n kind: UserAuthenticatorKind.TOTP,\n name,\n secret: await this.cipher.encrypt(secret.base32, user.realmId),\n parameters: JSON.stringify(parameters),\n confirmed: false,\n userId: user.id,\n realmId: user.realmId,\n });\n entity = await this.repository.save(entity);\n\n return {\n data: this.sanitize(entity),\n meta: {\n secret: secret.base32,\n uri,\n qr: await QRCode.toDataURL(uri),\n },\n };\n }\n\n protected async enrollRecovery(user: User, name: string | null): Promise<UserAuthenticatorEnrollResult> {\n const codes : string[] = [];\n const stored : UserAuthenticatorRecoveryCode[] = [];\n for (let i = 0; i < USER_AUTHENTICATOR_RECOVERY_CODE_COUNT; i++) {\n const code = generateRecoveryCode();\n codes.push(code);\n stored.push({ hash: await hash(code), used_at: null });\n }\n\n // regenerate semantics: a user holds ONE recovery-code set. Reuse the\n // existing row via a single atomic save instead of delete-then-insert,\n // so a mid-operation failure can never leave the user with no codes.\n const [existing] = await this.repository.findAllWithSecretsByUser(user.id, { kind: UserAuthenticatorKind.RECOVERY });\n\n let entity : UserAuthenticator;\n if (existing) {\n existing.name = name;\n existing.codes = JSON.stringify(stored);\n existing.confirmed = true;\n entity = await this.repository.save(existing);\n } else {\n entity = this.repository.create({\n kind: UserAuthenticatorKind.RECOVERY,\n name,\n codes: JSON.stringify(stored),\n confirmed: true,\n userId: user.id,\n realmId: user.realmId,\n });\n entity = await this.repository.save(entity);\n }\n\n await this.recordEvent(EventName.MFA_ENROLLED, entity);\n\n return {\n data: this.sanitize(entity),\n meta: { codes },\n };\n }\n\n // ------------------------------------------------------------------\n\n async confirm(\n id: string,\n code: string,\n actor: ActorContext,\n options: { userId?: string } = {},\n ): Promise<UserAuthenticator> {\n const entity = await this.resolveOne(id, options.userId);\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_AUTHENTICATOR_UPDATE });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_AUTHENTICATOR_UPDATE,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n if (entity.confirmed) {\n return this.sanitize(entity);\n }\n\n if (entity.kind === UserAuthenticatorKind.WEBAUTHN) {\n return this.confirmWebauthn(entity, code);\n }\n\n if (entity.kind !== UserAuthenticatorKind.TOTP) {\n throw new ValidationError(`The authenticator kind ${entity.kind} can not be confirmed with a code.`);\n }\n\n await this.assertNotThrottledOrRetry(entity.userId);\n\n const withSecrets = await this.repository.findOneWithSecretsById(entity.id);\n if (!withSecrets) {\n throw new EntityNotFoundError();\n }\n\n if (!await this.verifyTotp(withSecrets, code)) {\n await this.bumpAttempts(entity.userId);\n throw new EntityCredentialsInvalidError();\n }\n\n await this.resetAttempts(entity.userId);\n\n entity.confirmed = true;\n // The consumed step is tracked only on the login-verify path (below),\n // NOT here — so a legitimate first login in the same window as the\n // confirmation is still accepted; only a repeat of an already-used\n // LOGIN code is rejected.\n const output = await this.repository.save(entity);\n\n await this.recordEvent(EventName.MFA_ENROLLED, output);\n\n return this.sanitize(output);\n }\n\n protected async confirmWebauthn(entity: UserAuthenticator, response: string): Promise<UserAuthenticator> {\n const ctx = this.assertWebauthn();\n\n // brute-force throttle, same lifecycle as the TOTP confirm branch — the\n // attestation verify is a real crypto call and must not be retryable\n // without backoff.\n await this.assertNotThrottledOrRetry(entity.userId);\n\n // challenge is keyed by the enrollment row id (see enrollWebauthn), so\n // overlapping ceremonies do not collide.\n const cacheKey = this.buildWebauthnCacheKey(USER_AUTHENTICATOR_WEBAUTHN_REG_CACHE_PREFIX, entity.id);\n\n const state = await this.cache.get<WebauthnChallengeState>(cacheKey);\n if (!state || state.expiresAt < Date.now()) {\n await this.bumpAttempts(entity.userId);\n throw new EntityCredentialsInvalidError();\n }\n\n let parsed : RegistrationResponseJSON;\n try {\n parsed = JSON.parse(response) as RegistrationResponseJSON;\n } catch {\n throw new ValidationError('The registration response is malformed.');\n }\n\n const credential = await verifyWebauthnRegistration(ctx, parsed, state.challenge);\n if (!credential) {\n await this.bumpAttempts(entity.userId);\n throw new EntityCredentialsInvalidError();\n }\n\n await this.resetAttempts(entity.userId);\n await this.cache.drop(cacheKey);\n\n entity.parameters = JSON.stringify(credential);\n entity.confirmed = true;\n const output = await this.repository.save(entity);\n\n await this.recordEvent(EventName.MFA_ENROLLED, output);\n\n return this.sanitize(output);\n }\n\n async delete(\n id: string,\n actor: ActorContext,\n options: { userId?: string } = {},\n ): Promise<UserAuthenticator> {\n const entity = await this.resolveOne(id, options.userId);\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_AUTHENTICATOR_DELETE });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_AUTHENTICATOR_DELETE,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n await this.recordEvent(EventName.MFA_REMOVED, entity);\n\n return this.sanitize(entity);\n }\n\n // ------------------------------------------------------------------\n\n async verify(\n userId: string,\n input: UserAuthenticatorVerifyInput,\n ctx: UserAuthenticatorVerifyContext = {},\n ): Promise<boolean> {\n try {\n await this.assertNotThrottled(userId);\n } catch (e) {\n if (isMfaThrottledError(e)) {\n throw e;\n }\n\n return false;\n }\n\n // Serialize the read-verify-save critical section per user so a single\n // factor (TOTP step / recovery / email code / webauthn counter) is\n // consumed exactly once even under concurrent verifies. A held lock\n // means another verify is mid-flight — bail without penalty rather than\n // risk a double-consume; that request owns the outcome.\n const lockKey = this.buildVerifyLockCacheKey(userId);\n const lock = await this.acquireVerifyLock(lockKey);\n if (lock.status !== 'acquired') {\n return false;\n }\n\n const lease = this.maintainVerifyLock(lockKey, lock.value);\n\n try {\n const devices = await this.repository.findAllWithSecretsByUser(userId, {\n kind: input.kind,\n confirmed: true,\n });\n\n let matched : UserAuthenticator | undefined;\n\n for (const device of devices) {\n if (input.kind === UserAuthenticatorKind.TOTP) {\n if (await this.verifyTotp(device, input.response)) {\n matched = device;\n }\n }\n\n if (input.kind === UserAuthenticatorKind.RECOVERY) {\n if (await this.verifyRecovery(device, input.response)) {\n matched = device;\n }\n }\n\n if (input.kind === UserAuthenticatorKind.EMAIL) {\n if (await this.verifyEmail(userId, input.response)) {\n matched = device;\n }\n }\n\n if (input.kind === UserAuthenticatorKind.WEBAUTHN) {\n const newCounter = await this.verifyWebauthnDevice(userId, device, input.response);\n if (newCounter !== null) {\n // persist the signature counter (replay defense)\n const parameters = this.parseWebauthnParameters(device);\n if (parameters) {\n device.parameters = JSON.stringify({ ...parameters, counter: newCounter });\n }\n matched = device;\n }\n }\n\n if (matched) {\n break;\n }\n }\n\n if (!matched) {\n await this.bumpAttempts(userId);\n await this.recordChallengeEvent(EventName.MFA_CHALLENGE_FAILED, userId, input.kind, ctx);\n return false;\n }\n\n if (!await lease.renew()) {\n return false;\n }\n\n // Bind the proof to the caller's aggregate (the session mfaAt\n // stamp) BEFORE any consumption persists: a hook failure aborts\n // the verify with nothing consumed — never a burned single-use\n // code without a completed MFA. The residual (a failure AFTER the\n // hook) leaves a stamped session plus a still-valid code — a\n // bounded server-error window, not a lost factor.\n if (ctx.onVerified) {\n await ctx.onVerified();\n }\n\n if (!await lease.renew()) {\n return false;\n }\n\n matched.lastUsedAt = new Date().toISOString();\n await this.repository.save(matched);\n\n // cache-borne single-use artifacts (email code, webauthn challenge\n // nonce) are consumed only once the unit of work committed — the\n // verify lock keeps the deferral race-free.\n if (input.kind === UserAuthenticatorKind.EMAIL) {\n await this.cache.drop(this.buildEmailCodeCacheKey(userId));\n }\n if (input.kind === UserAuthenticatorKind.WEBAUTHN) {\n await this.cache.drop(\n this.buildWebauthnCacheKey(USER_AUTHENTICATOR_WEBAUTHN_AUTH_CACHE_PREFIX, userId),\n );\n }\n\n await this.resetAttempts(userId);\n\n await this.recordChallengeEvent(EventName.MFA_VERIFIED, userId, input.kind, ctx, matched);\n return true;\n } finally {\n await lease.stop();\n await this.releaseVerifyLock(lockKey, lock.value);\n }\n }\n\n protected async verifyTotp(device: UserAuthenticator, token: string): Promise<boolean> {\n if (!device.secret) {\n return false;\n }\n\n let seed : string;\n try {\n // key-id-addressed blob; one referencing an unknown or foreign\n // key fails closed as a verification failure, never a 500.\n seed = await this.cipher.decrypt(device.secret, device.realmId);\n } catch (e) {\n // ... but ONLY for blob-semantics failures. Infrastructure errors\n // (database outage, KEK misconfiguration) must bubble — mapping\n // them to `false` would burn throttle attempts on a blip.\n if (isRealmCipherBlobError(e)) {\n return false;\n }\n\n throw e;\n }\n\n let parameters : UserAuthenticatorTotpParameters = {\n algorithm: USER_AUTHENTICATOR_TOTP_ALGORITHM,\n digits: USER_AUTHENTICATOR_TOTP_DIGITS,\n period: USER_AUTHENTICATOR_TOTP_PERIOD,\n };\n if (device.parameters) {\n parameters = { ...parameters, ...JSON.parse(device.parameters) };\n }\n\n const totp = new TOTP({\n algorithm: parameters.algorithm,\n digits: parameters.digits,\n period: parameters.period,\n secret: Secret.fromBase32(seed),\n });\n\n const delta = totp.validate({ token: token.trim(), window: 1 });\n if (delta === null) {\n return false;\n }\n\n // Reject replay: the accepted step must strictly advance past the last\n // consumed one (RFC 6238 §5.2), so a captured code can't be reused\n // within its ±1 validation window. The per-user verify lock makes the\n // concurrent case (two verifies advancing the same step) safe.\n const step = Math.floor(Date.now() / 1000 / parameters.period) + delta;\n if (typeof parameters.counter === 'number' && step <= parameters.counter) {\n return false;\n }\n\n // persist the consumed step onto the device — the caller saves the row.\n device.parameters = JSON.stringify({ ...parameters, counter: step });\n return true;\n }\n\n protected async verifyRecovery(device: UserAuthenticator, code: string): Promise<boolean> {\n if (!device.codes) {\n return false;\n }\n\n const entries = JSON.parse(device.codes) as UserAuthenticatorRecoveryCode[];\n const normalized = code.trim().toLowerCase();\n\n for (const entry of entries) {\n if (entry.used_at) {\n continue;\n }\n\n if (await compare(normalized, entry.hash)) {\n entry.used_at = new Date().toISOString();\n device.codes = JSON.stringify(entries);\n return true;\n }\n }\n\n return false;\n }\n\n protected parseWebauthnParameters(device: UserAuthenticator): UserAuthenticatorWebauthnParameters | null {\n if (!device.parameters) {\n return null;\n }\n try {\n return JSON.parse(device.parameters) as UserAuthenticatorWebauthnParameters;\n } catch {\n return null;\n }\n }\n\n protected async verifyWebauthnDevice(\n userId: string,\n device: UserAuthenticator,\n response: string,\n ): Promise<number | null> {\n const ctx = this.assertWebauthn();\n\n const parameters = this.parseWebauthnParameters(device);\n if (!parameters) {\n return null;\n }\n\n let parsed : AuthenticationResponseJSON;\n try {\n parsed = JSON.parse(response) as AuthenticationResponseJSON;\n } catch {\n return null;\n }\n\n // the assertion identifies the credential — only verify against its row\n if (parsed.id !== parameters.credential_id) {\n return null;\n }\n\n const state = await this.cache.get<WebauthnChallengeState>(\n this.buildWebauthnCacheKey(USER_AUTHENTICATOR_WEBAUTHN_AUTH_CACHE_PREFIX, userId),\n );\n if (!state || state.expiresAt < Date.now()) {\n return null;\n }\n\n try {\n const result = await verifyWebauthnAuthentication(ctx, parsed, state.challenge, parameters);\n return result.verified ? result.newCounter : null;\n } catch {\n return null;\n }\n }\n\n protected async verifyEmail(userId: string, response: string): Promise<boolean> {\n const key = this.buildEmailCodeCacheKey(userId);\n const state = await this.cache.get<EmailCodeState>(key);\n if (!state || state.expiresAt < Date.now()) {\n return false;\n }\n\n // single-use — but the drop is deferred to the verify success block,\n // AFTER the onVerified hook ran, so a hook failure does not burn the\n // code (the verify lock keeps the deferral race-free).\n return compare(response.trim(), state.hash);\n }\n\n // ------------------------------------------------------------------\n\n async sendChallenge(\n userId: string,\n kind: `${UserAuthenticatorKind}`,\n ctx: UserAuthenticatorSendContext = {},\n ): Promise<void> {\n // Only email needs a server-issued challenge; TOTP/recovery are\n // client-derived (no-op keeps the endpoint uniform).\n if (kind !== UserAuthenticatorKind.EMAIL) {\n return;\n }\n\n this.assertMail();\n await this.assertNotThrottledOrRetry(userId);\n\n // require a CONFIRMED email factor — never mail a code to a user who\n // did not enroll email (no code-spray oracle).\n const devices = await this.repository.findAllWithSecretsByUser(userId, {\n kind: UserAuthenticatorKind.EMAIL,\n confirmed: true,\n });\n if (devices.length === 0) {\n return;\n }\n\n // email column is select:false — force-load it for the recipient.\n const user = await this.userRepository.findOneByWithEmail({ id: userId });\n if (!user || !user.email) {\n return;\n }\n\n // per-user send cooldown — an authenticated caller must not be able to\n // spray unlimited OTP mails. `add` is atomic set-if-absent, so the first\n // send stores the key and any resend within the window returns false.\n // Fails open on a cache error (a transient outage must not block a\n // legitimate code).\n let withinCooldown: boolean;\n try {\n withinCooldown = !(await this.cache.add(\n this.buildEmailSendCacheKey(userId),\n 1,\n { ttl: USER_AUTHENTICATOR_EMAIL_SEND_COOLDOWN * 1_000 },\n ));\n } catch {\n withinCooldown = false;\n }\n if (withinCooldown) {\n throw new MfaThrottledError({ retryAfter: USER_AUTHENTICATOR_EMAIL_SEND_COOLDOWN });\n }\n\n const codeValue = generateNumericCode(USER_AUTHENTICATOR_EMAIL_CODE_LENGTH);\n await this.cache.set(\n this.buildEmailCodeCacheKey(userId),\n {\n hash: await hash(codeValue),\n expiresAt: Date.now() + (USER_AUTHENTICATOR_EMAIL_CODE_EXPIRES_IN_MINUTES * 60 * 1_000),\n } satisfies EmailCodeState,\n { ttl: USER_AUTHENTICATOR_EMAIL_CODE_EXPIRES_IN_MINUTES * 60 * 1_000 },\n );\n\n const mail = await this.mailTemplateRenderer!.render({\n template: MailTemplateName.MFA_EMAIL_OTP,\n params: {\n code: codeValue,\n expiresInMinutes: USER_AUTHENTICATOR_EMAIL_CODE_EXPIRES_IN_MINUTES,\n },\n locale: ctx.locale,\n });\n\n await this.mailClient!.send({\n to: user.email,\n ...mail,\n });\n }\n\n // ------------------------------------------------------------------\n\n async hasConfirmed(userId: string): Promise<boolean> {\n return this.repository.hasConfirmedByUser(userId);\n }\n\n async challenge(\n userId: string,\n options: { issueMaterial?: boolean } = {},\n ): Promise<UserAuthenticatorChallengeStatus> {\n if (!this.options.enabled) {\n return {\n required: false,\n enrollmentRequired: false,\n kinds: [],\n };\n }\n\n const devices = await this.repository.findAllByUser(userId);\n const confirmed = devices.filter((device) => device.confirmed);\n\n const kinds = Array.from(new Set(confirmed.map((device) => device.kind)));\n\n const status : UserAuthenticatorChallengeStatus = {\n required: confirmed.length > 0,\n enrollmentRequired: !!this.options.required && confirmed.length === 0,\n kinds,\n };\n\n // WebAuthn needs server-issued request options as the challenge — build\n // them (and store the nonce) when the subject holds a webauthn factor.\n // Skipped when the caller only needs the requirement flags (issueMaterial\n // false): the enforcement chokepoints must not rotate an in-flight\n // ceremony's nonce nor run this extra query on every request.\n const issueMaterial = options.issueMaterial ?? true;\n if (issueMaterial && kinds.includes(UserAuthenticatorKind.WEBAUTHN) && this.options.webauthn) {\n const credentials = (await this.repository.findAllWithSecretsByUser(userId, {\n kind: UserAuthenticatorKind.WEBAUTHN,\n confirmed: true,\n }))\n .map((device) => this.parseWebauthnParameters(device))\n .filter((parameters): parameters is UserAuthenticatorWebauthnParameters => !!parameters)\n .map((parameters) => ({ id: parameters.credential_id, transports: parameters.transports }));\n\n const { options, challenge } = await buildWebauthnAuthenticationOptions(this.options.webauthn, credentials);\n\n await this.cache.set(\n this.buildWebauthnCacheKey(USER_AUTHENTICATOR_WEBAUTHN_AUTH_CACHE_PREFIX, userId),\n {\n challenge,\n expiresAt: Date.now() + (USER_AUTHENTICATOR_WEBAUTHN_CHALLENGE_WINDOW * 1_000),\n } satisfies WebauthnChallengeState,\n { ttl: USER_AUTHENTICATOR_WEBAUTHN_CHALLENGE_WINDOW * 1_000 },\n );\n\n status.challenge = { webauthn: options };\n }\n\n return status;\n }\n\n // ------------------------------------------------------------------\n\n protected assertEnabled(): void {\n if (!this.options.enabled) {\n throw new AuthupError({\n code: ErrorCode.MFA_NOT_CONFIGURABLE,\n message: 'Multi-factor authentication is not enabled.',\n });\n }\n }\n\n protected assertMail(): void {\n if (!this.mailClient || !this.mailTemplateRenderer) {\n throw new AuthupError({\n code: ErrorCode.MFA_NOT_CONFIGURABLE,\n message: 'Email-based multi-factor authentication requires a configured mail transport.',\n });\n }\n }\n\n protected assertWebauthn(): WebauthnContext {\n if (!this.options.webauthn) {\n throw new AuthupError({\n code: ErrorCode.MFA_NOT_CONFIGURABLE,\n message: 'WebAuthn requires a configured public URL (relying-party origin).',\n });\n }\n\n return this.options.webauthn;\n }\n\n // ------------------------------------------------------------------\n\n protected buildAttemptCacheKey(userId: string): string {\n return buildCacheKey({\n prefix: USER_AUTHENTICATOR_ATTEMPT_CACHE_PREFIX,\n key: userId,\n });\n }\n\n protected buildThrottleCacheKey(userId: string): string {\n return buildCacheKey({\n prefix: USER_AUTHENTICATOR_THROTTLE_CACHE_PREFIX,\n key: userId,\n });\n }\n\n protected buildEmailCodeCacheKey(userId: string): string {\n return buildCacheKey({\n prefix: USER_AUTHENTICATOR_EMAIL_CODE_CACHE_PREFIX,\n key: userId,\n });\n }\n\n protected buildEmailSendCacheKey(userId: string): string {\n return buildCacheKey({\n prefix: USER_AUTHENTICATOR_EMAIL_SEND_CACHE_PREFIX,\n key: userId,\n });\n }\n\n protected buildWebauthnCacheKey(prefix: string, userId: string): string {\n return buildCacheKey({ prefix, key: userId });\n }\n\n protected buildVerifyLockCacheKey(userId: string): string {\n return buildCacheKey({\n prefix: USER_AUTHENTICATOR_VERIFY_LOCK_CACHE_PREFIX,\n key: userId,\n });\n }\n\n protected async acquireVerifyLock(key: string): Promise<VerifyLock> {\n const value = randomUUID();\n\n try {\n return (await this.cache.add(key, value, { ttl: USER_AUTHENTICATOR_VERIFY_LOCK_TTL })) ?\n { status: 'acquired', value } :\n { status: 'busy' };\n } catch {\n return { status: 'unavailable' };\n }\n }\n\n protected maintainVerifyLock(key: string, value: string): VerifyLockLease {\n let owned = true;\n let pending : Promise<void> | undefined;\n\n const queueRenewal = () => {\n if (!owned || pending) {\n return pending;\n }\n\n pending = this.cache\n .renewIfValue(key, value, USER_AUTHENTICATOR_VERIFY_LOCK_TTL)\n .then((renewed) => {\n owned = renewed;\n })\n .catch(() => {\n owned = false;\n })\n .finally(() => {\n pending = undefined;\n });\n\n return pending;\n };\n\n const timer = setInterval(queueRenewal, USER_AUTHENTICATOR_VERIFY_LOCK_RENEW_INTERVAL);\n\n return {\n renew: async () => {\n await queueRenewal();\n return owned;\n },\n stop: async () => {\n clearInterval(timer);\n await pending;\n },\n };\n }\n\n protected async releaseVerifyLock(key: string, value: string): Promise<void> {\n try {\n await this.cache.dropIfValue(key, value);\n } catch {\n // Best-effort release; the renewable lock TTL bounds a stranded key.\n }\n }\n\n protected async assertNotThrottled(userId: string): Promise<void> {\n const lockedUntil = await this.cache.get<number>(this.buildThrottleCacheKey(userId));\n if (typeof lockedUntil === 'number' && lockedUntil > Date.now()) {\n throw new MfaThrottledError({ retryAfter: Math.ceil((lockedUntil - Date.now()) / 1_000) });\n }\n }\n\n // Throttle gate for the throwing entry points (confirm / confirmWebauthn /\n // sendChallenge). Mirrors verify()'s fail-closed posture: a genuine lockout\n // surfaces unchanged, while an unreadable throttle counter (cache outage) is\n // treated as a lockout — the caller is told to retry (429) rather than the\n // outage bubbling up as an internal 500.\n protected async assertNotThrottledOrRetry(userId: string): Promise<void> {\n try {\n await this.assertNotThrottled(userId);\n } catch (e) {\n if (isMfaThrottledError(e)) {\n throw e;\n }\n\n throw new MfaThrottledError({ retryAfter: USER_AUTHENTICATOR_ATTEMPT_LOCK_FACTOR });\n }\n }\n\n protected async bumpAttempts(userId: string): Promise<void> {\n const key = this.buildAttemptCacheKey(userId);\n\n // Atomic increment — concurrent failures (verify OR confirm) each get\n // a distinct count, so the exponential backoff never under-counts.\n let count : number;\n try {\n count = await this.cache.increment(key, 1, { ttl: USER_AUTHENTICATOR_ATTEMPT_WINDOW * 1_000 });\n } catch {\n // a non-numeric value at the key (legacy JSON state) — reset and\n // re-count; a genuine cache outage rethrows from the drop.\n await this.cache.drop(key);\n count = await this.cache.increment(key, 1, { ttl: USER_AUTHENTICATOR_ATTEMPT_WINDOW * 1_000 });\n }\n\n const delay = Math.min(\n USER_AUTHENTICATOR_ATTEMPT_LOCK_MAX,\n USER_AUTHENTICATOR_ATTEMPT_LOCK_FACTOR * (2 ** (count - 1)),\n );\n\n await this.cache.set(\n this.buildThrottleCacheKey(userId),\n Date.now() + (delay * 1_000),\n { ttl: delay * 1_000 },\n );\n }\n\n protected async resetAttempts(userId: string): Promise<void> {\n await this.cache.dropMany([\n this.buildAttemptCacheKey(userId),\n this.buildThrottleCacheKey(userId),\n ]);\n }\n\n // ------------------------------------------------------------------\n\n protected async recordEvent(\n name: `${EventName}`,\n entity: UserAuthenticator,\n ): Promise<void> {\n await this.eventService?.record({\n scope: EventScope.IDENTITY,\n name,\n refType: EventRefType.USER_AUTHENTICATOR,\n refId: entity.id,\n actorType: IdentityType.USER,\n actorId: entity.userId,\n realmId: entity.realmId,\n data: { kind: entity.kind },\n });\n }\n\n protected async recordChallengeEvent(\n name: `${EventName}`,\n userId: string,\n kind: string,\n ctx: UserAuthenticatorVerifyContext,\n entity?: UserAuthenticator,\n ): Promise<void> {\n await this.eventService?.record({\n scope: EventScope.IDENTITY,\n name,\n refType: EventRefType.USER,\n refId: userId,\n actorType: IdentityType.USER,\n actorId: userId,\n clientId: ctx.clientId ?? null,\n realmId: entity?.realmId ?? null,\n requestIpAddress: ctx.ipAddress ?? null,\n requestUserAgent: ctx.userAgent ?? null,\n data: { kind },\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ import type { UserAuthenticator, UserAuthenticatorKind } from '@authup/core-kit';
2
+ import type { IQuery } from '@rapiq/core';
3
+ import type { ActorContext, EntityRepositoryFindManyResult, ICache } from '@authup/server-kit';
4
+ import type { IRealmCipher } from '../../key/index.ts';
5
+ import type { IEventService } from '../event/index.ts';
6
+ import type { IMailClient, IMailTemplateRenderer } from '../../mail/index.ts';
7
+ import type { IUserRepository } from '../user/index.ts';
8
+ export declare const USER_AUTHENTICATOR_FILTER_KEYS: readonly ["id", "kind", "confirmed", "userId", "realmId"];
9
+ export type UserAuthenticatorOwner = {
10
+ userId: string;
11
+ };
12
+ export type UserAuthenticatorFindManyOptions = {
13
+ owner?: UserAuthenticatorOwner;
14
+ };
15
+ export type UserAuthenticatorSecretsFilter = {
16
+ kind?: `${UserAuthenticatorKind}`;
17
+ confirmed?: boolean;
18
+ };
19
+ export interface IUserAuthenticatorRepository {
20
+ findMany(query: IQuery, options?: UserAuthenticatorFindManyOptions): Promise<EntityRepositoryFindManyResult<UserAuthenticator>>;
21
+ findOneById(id: string): Promise<UserAuthenticator | null>;
22
+ /**
23
+ * Like findOneById, but force-selects the secret/codes columns
24
+ * (select:false). Verification-path only — never for read endpoints.
25
+ */
26
+ findOneWithSecretsById(id: string): Promise<UserAuthenticator | null>;
27
+ findAllByUser(userId: string): Promise<UserAuthenticator[]>;
28
+ findAllWithSecretsByUser(userId: string, filter?: UserAuthenticatorSecretsFilter): Promise<UserAuthenticator[]>;
29
+ hasConfirmedByUser(userId: string): Promise<boolean>;
30
+ create(data: Partial<UserAuthenticator>): UserAuthenticator;
31
+ save(entity: UserAuthenticator): Promise<UserAuthenticator>;
32
+ remove(entity: UserAuthenticator): Promise<void>;
33
+ removeAllByUser(userId: string, kind: `${UserAuthenticatorKind}`): Promise<void>;
34
+ }
35
+ /**
36
+ * Stored on a recovery row's `codes` column as a JSON array.
37
+ */
38
+ export type UserAuthenticatorRecoveryCode = {
39
+ hash: string;
40
+ used_at: string | null;
41
+ };
42
+ /**
43
+ * Stored on a TOTP row's `parameters` column as JSON.
44
+ */
45
+ export type UserAuthenticatorTotpParameters = {
46
+ algorithm: string;
47
+ digits: number;
48
+ period: number;
49
+ /**
50
+ * Last accepted TOTP step (absolute period counter). A verify only
51
+ * succeeds for a strictly greater step — rejects replay within the
52
+ * validation window (RFC 6238 §5.2).
53
+ */
54
+ counter?: number;
55
+ };
56
+ /**
57
+ * Stored on a WebAuthn row's `parameters` column as JSON — the registered
58
+ * credential (base64url id + public key, signature counter, transports).
59
+ */
60
+ export type UserAuthenticatorWebauthnParameters = {
61
+ rp_id: string;
62
+ credential_id: string;
63
+ public_key: string;
64
+ counter: number;
65
+ transports?: string[];
66
+ };
67
+ /**
68
+ * Kind-specific shown-once provisioning material — returned alongside the
69
+ * enrolled entity exactly once, never in a subsequent read.
70
+ */
71
+ export type UserAuthenticatorEnrollResultMeta = {
72
+ /**
73
+ * TOTP: the raw base32 seed — present in the enroll response only,
74
+ * never in a subsequent read.
75
+ */
76
+ secret?: string;
77
+ /**
78
+ * TOTP: the otpauth:// provisioning URI.
79
+ */
80
+ uri?: string;
81
+ /**
82
+ * TOTP: the provisioning URI rendered as a PNG data-URI (QR code).
83
+ */
84
+ qr?: string;
85
+ /**
86
+ * Recovery: the raw single-use codes — shown once (download/print).
87
+ */
88
+ codes?: string[];
89
+ /**
90
+ * WebAuthn: the registration ceremony options the client passes to
91
+ * `navigator.credentials.create()` (SimpleWebAuthn `startRegistration`).
92
+ */
93
+ webauthn?: Record<string, unknown>;
94
+ };
95
+ export type UserAuthenticatorEnrollResult = {
96
+ data: UserAuthenticator;
97
+ meta: UserAuthenticatorEnrollResultMeta;
98
+ };
99
+ export type UserAuthenticatorChallengeStatus = {
100
+ /**
101
+ * The subject holds at least one confirmed device (and MFA is enabled)
102
+ * — a second factor must be presented.
103
+ */
104
+ required: boolean;
105
+ /**
106
+ * MFA is enforced org-wide (mfaRequired) and the subject has no
107
+ * confirmed device — the UI routes to inline enrollment.
108
+ */
109
+ enrollmentRequired: boolean;
110
+ /**
111
+ * Device kinds the subject can be challenged with.
112
+ */
113
+ kinds: `${UserAuthenticatorKind}`[];
114
+ /**
115
+ * Kind-specific challenge payload (absent for TOTP/recovery;
116
+ * WebAuthn request options in a later stage).
117
+ */
118
+ challenge?: Record<string, unknown>;
119
+ };
120
+ export type UserAuthenticatorVerifyInput = {
121
+ kind: `${UserAuthenticatorKind}`;
122
+ response: string;
123
+ };
124
+ export type UserAuthenticatorVerifyContext = {
125
+ ipAddress?: string | null;
126
+ userAgent?: string | null;
127
+ clientId?: string | null;
128
+ /**
129
+ * Runs inside the verify critical section once the factor matched,
130
+ * BEFORE the consumption (TOTP step / recovery used_at / email code)
131
+ * is persisted. A throw aborts the verify without consuming the factor
132
+ * — the seam for binding the proof to another aggregate (the session
133
+ * mfaAt stamp) so a stamp failure never burns a single-use code.
134
+ */
135
+ onVerified?: () => Promise<void>;
136
+ };
137
+ export type UserAuthenticatorChallengeOptions = {
138
+ /**
139
+ * Issue kind-specific challenge material as a side effect (e.g. mint +
140
+ * cache the WebAuthn request nonce). Only the interactive status endpoint
141
+ * needs it; the enforcement chokepoints (authorize backstop, password
142
+ * grant) read `required`/`enrollmentRequired`/`kinds` only and pass
143
+ * `false` so they don't rotate an in-flight ceremony's nonce or run the
144
+ * extra query on every request. Defaults to `true`.
145
+ */
146
+ issueMaterial?: boolean;
147
+ };
148
+ /**
149
+ * The login-time seam: computes whether (and how) a subject must be
150
+ * challenged. Consumed by the authorize backstop and the password grant.
151
+ */
152
+ export interface IUserAuthenticatorChallengeProvider {
153
+ challenge(userId: string, options?: UserAuthenticatorChallengeOptions): Promise<UserAuthenticatorChallengeStatus>;
154
+ }
155
+ export interface IUserAuthenticatorService extends IUserAuthenticatorChallengeProvider {
156
+ getMany(query: Record<string, any>, actor: ActorContext, options?: {
157
+ userId?: string;
158
+ }): Promise<EntityRepositoryFindManyResult<UserAuthenticator>>;
159
+ getOne(id: string, actor: ActorContext, options?: {
160
+ userId?: string;
161
+ }): Promise<UserAuthenticator>;
162
+ enroll(data: Record<string, any>, actor: ActorContext): Promise<UserAuthenticatorEnrollResult>;
163
+ confirm(id: string, code: string, actor: ActorContext, options?: {
164
+ userId?: string;
165
+ }): Promise<UserAuthenticator>;
166
+ delete(id: string, actor: ActorContext, options?: {
167
+ userId?: string;
168
+ }): Promise<UserAuthenticator>;
169
+ verify(userId: string, input: UserAuthenticatorVerifyInput, ctx?: UserAuthenticatorVerifyContext): Promise<boolean>;
170
+ /**
171
+ * Issue a kind-specific challenge (email OTP: generate + mail a code).
172
+ * A no-op for kinds whose challenge material is client-derived (TOTP).
173
+ */
174
+ sendChallenge(userId: string, kind: `${UserAuthenticatorKind}`, ctx?: UserAuthenticatorSendContext): Promise<void>;
175
+ hasConfirmed(userId: string): Promise<boolean>;
176
+ }
177
+ export type UserAuthenticatorSendContext = {
178
+ locale?: string;
179
+ };
180
+ export type UserAuthenticatorServiceOptions = {
181
+ /**
182
+ * Org-wide MFA feature toggle (config: mfaEnabled).
183
+ */
184
+ enabled?: boolean;
185
+ /**
186
+ * Enforce MFA for every user (config: mfaRequired) — users without a
187
+ * confirmed device are routed to inline enrollment at next login.
188
+ */
189
+ required?: boolean;
190
+ /**
191
+ * Issuer label for otpauth:// provisioning URIs.
192
+ */
193
+ issuer?: string;
194
+ /**
195
+ * WebAuthn relying-party context, derived from publicUrl (the hosted
196
+ * login origin). Absent = WebAuthn enrollment/verification is refused.
197
+ */
198
+ webauthn?: {
199
+ rpId: string;
200
+ rpName: string;
201
+ origin: string;
202
+ };
203
+ };
204
+ export type UserAuthenticatorServiceContext = {
205
+ repository: IUserAuthenticatorRepository;
206
+ userRepository: IUserRepository;
207
+ cache: ICache;
208
+ /**
209
+ * Realm-scoped seed cipher over the key store's per-realm enc keys
210
+ * (auto-generated on first use — no operator-provided key).
211
+ */
212
+ cipher: IRealmCipher;
213
+ eventService?: IEventService;
214
+ /**
215
+ * Mail dependencies for the email-OTP kind (absent = email OTP
216
+ * enrollment/send is refused).
217
+ */
218
+ mailClient?: IMailClient;
219
+ mailTemplateRenderer?: IMailTemplateRenderer;
220
+ options?: UserAuthenticatorServiceOptions;
221
+ };
222
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-authenticator/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ //#region src/core/entities/user-authenticator/types.ts
5
+ const USER_AUTHENTICATOR_FILTER_KEYS = [
6
+ "id",
7
+ "kind",
8
+ "confirmed",
9
+ "userId",
10
+ "realmId"
11
+ ];
12
+ //#endregion
13
+ export { USER_AUTHENTICATOR_FILTER_KEYS };
14
+
15
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":["USER_AUTHENTICATOR_FILTER_KEYS"],"sources":["../../../../src/core/entities/user-authenticator/types.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAuthenticator, UserAuthenticatorKind } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type {\n ActorContext,\n EntityRepositoryFindManyResult,\n ICache,\n} from '@authup/server-kit';\nimport type { IRealmCipher } from '../../key/index.ts';\nimport type { IEventService } from '../event/index.ts';\nimport type { IMailClient, IMailTemplateRenderer } from '../../mail/index.ts';\nimport type { IUserRepository } from '../user/index.ts';\n\nexport const USER_AUTHENTICATOR_FILTER_KEYS = [\n 'id',\n 'kind',\n 'confirmed',\n 'userId',\n 'realmId',\n] as const;\n\nexport type UserAuthenticatorOwner = {\n userId: string,\n};\n\nexport type UserAuthenticatorFindManyOptions = {\n owner?: UserAuthenticatorOwner,\n};\n\nexport type UserAuthenticatorSecretsFilter = {\n kind?: `${UserAuthenticatorKind}`,\n confirmed?: boolean,\n};\n\nexport interface IUserAuthenticatorRepository {\n findMany(\n query: IQuery,\n options?: UserAuthenticatorFindManyOptions\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>>;\n\n findOneById(id: string): Promise<UserAuthenticator | null>;\n\n /**\n * Like findOneById, but force-selects the secret/codes columns\n * (select:false). Verification-path only — never for read endpoints.\n */\n findOneWithSecretsById(id: string): Promise<UserAuthenticator | null>;\n\n findAllByUser(userId: string): Promise<UserAuthenticator[]>;\n\n findAllWithSecretsByUser(\n userId: string,\n filter?: UserAuthenticatorSecretsFilter\n ): Promise<UserAuthenticator[]>;\n\n hasConfirmedByUser(userId: string): Promise<boolean>;\n\n create(data: Partial<UserAuthenticator>): UserAuthenticator;\n\n save(entity: UserAuthenticator): Promise<UserAuthenticator>;\n\n remove(entity: UserAuthenticator): Promise<void>;\n\n removeAllByUser(userId: string, kind: `${UserAuthenticatorKind}`): Promise<void>;\n}\n\n/**\n * Stored on a recovery row's `codes` column as a JSON array.\n */\nexport type UserAuthenticatorRecoveryCode = {\n hash: string,\n used_at: string | null,\n};\n\n/**\n * Stored on a TOTP row's `parameters` column as JSON.\n */\nexport type UserAuthenticatorTotpParameters = {\n algorithm: string,\n digits: number,\n period: number,\n /**\n * Last accepted TOTP step (absolute period counter). A verify only\n * succeeds for a strictly greater step — rejects replay within the\n * validation window (RFC 6238 §5.2).\n */\n counter?: number,\n};\n\n/**\n * Stored on a WebAuthn row's `parameters` column as JSON — the registered\n * credential (base64url id + public key, signature counter, transports).\n */\nexport type UserAuthenticatorWebauthnParameters = {\n rp_id: string,\n credential_id: string,\n public_key: string,\n counter: number,\n transports?: string[],\n};\n\n/**\n * Kind-specific shown-once provisioning material — returned alongside the\n * enrolled entity exactly once, never in a subsequent read.\n */\nexport type UserAuthenticatorEnrollResultMeta = {\n /**\n * TOTP: the raw base32 seed — present in the enroll response only,\n * never in a subsequent read.\n */\n secret?: string,\n /**\n * TOTP: the otpauth:// provisioning URI.\n */\n uri?: string,\n /**\n * TOTP: the provisioning URI rendered as a PNG data-URI (QR code).\n */\n qr?: string,\n /**\n * Recovery: the raw single-use codes — shown once (download/print).\n */\n codes?: string[],\n /**\n * WebAuthn: the registration ceremony options the client passes to\n * `navigator.credentials.create()` (SimpleWebAuthn `startRegistration`).\n */\n webauthn?: Record<string, unknown>,\n};\n\nexport type UserAuthenticatorEnrollResult = {\n data: UserAuthenticator,\n meta: UserAuthenticatorEnrollResultMeta,\n};\n\nexport type UserAuthenticatorChallengeStatus = {\n /**\n * The subject holds at least one confirmed device (and MFA is enabled)\n * — a second factor must be presented.\n */\n required: boolean,\n /**\n * MFA is enforced org-wide (mfaRequired) and the subject has no\n * confirmed device — the UI routes to inline enrollment.\n */\n enrollmentRequired: boolean,\n /**\n * Device kinds the subject can be challenged with.\n */\n kinds: `${UserAuthenticatorKind}`[],\n /**\n * Kind-specific challenge payload (absent for TOTP/recovery;\n * WebAuthn request options in a later stage).\n */\n challenge?: Record<string, unknown>,\n};\n\nexport type UserAuthenticatorVerifyInput = {\n kind: `${UserAuthenticatorKind}`,\n response: string,\n};\n\nexport type UserAuthenticatorVerifyContext = {\n ipAddress?: string | null,\n userAgent?: string | null,\n clientId?: string | null,\n /**\n * Runs inside the verify critical section once the factor matched,\n * BEFORE the consumption (TOTP step / recovery used_at / email code)\n * is persisted. A throw aborts the verify without consuming the factor\n * — the seam for binding the proof to another aggregate (the session\n * mfaAt stamp) so a stamp failure never burns a single-use code.\n */\n onVerified?: () => Promise<void>,\n};\n\nexport type UserAuthenticatorChallengeOptions = {\n /**\n * Issue kind-specific challenge material as a side effect (e.g. mint +\n * cache the WebAuthn request nonce). Only the interactive status endpoint\n * needs it; the enforcement chokepoints (authorize backstop, password\n * grant) read `required`/`enrollmentRequired`/`kinds` only and pass\n * `false` so they don't rotate an in-flight ceremony's nonce or run the\n * extra query on every request. Defaults to `true`.\n */\n issueMaterial?: boolean,\n};\n\n/**\n * The login-time seam: computes whether (and how) a subject must be\n * challenged. Consumed by the authorize backstop and the password grant.\n */\nexport interface IUserAuthenticatorChallengeProvider {\n challenge(userId: string, options?: UserAuthenticatorChallengeOptions): Promise<UserAuthenticatorChallengeStatus>;\n}\n\nexport interface IUserAuthenticatorService extends IUserAuthenticatorChallengeProvider {\n getMany(\n query: Record<string, any>,\n actor: ActorContext,\n options?: { userId?: string }\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>>;\n\n getOne(id: string, actor: ActorContext, options?: { userId?: string }): Promise<UserAuthenticator>;\n\n enroll(data: Record<string, any>, actor: ActorContext): Promise<UserAuthenticatorEnrollResult>;\n\n confirm(id: string, code: string, actor: ActorContext, options?: { userId?: string }): Promise<UserAuthenticator>;\n\n delete(id: string, actor: ActorContext, options?: { userId?: string }): Promise<UserAuthenticator>;\n\n verify(\n userId: string,\n input: UserAuthenticatorVerifyInput,\n ctx?: UserAuthenticatorVerifyContext\n ): Promise<boolean>;\n\n /**\n * Issue a kind-specific challenge (email OTP: generate + mail a code).\n * A no-op for kinds whose challenge material is client-derived (TOTP).\n */\n sendChallenge(\n userId: string,\n kind: `${UserAuthenticatorKind}`,\n ctx?: UserAuthenticatorSendContext\n ): Promise<void>;\n\n hasConfirmed(userId: string): Promise<boolean>;\n}\n\nexport type UserAuthenticatorSendContext = {\n locale?: string,\n};\n\nexport type UserAuthenticatorServiceOptions = {\n /**\n * Org-wide MFA feature toggle (config: mfaEnabled).\n */\n enabled?: boolean,\n /**\n * Enforce MFA for every user (config: mfaRequired) — users without a\n * confirmed device are routed to inline enrollment at next login.\n */\n required?: boolean,\n /**\n * Issuer label for otpauth:// provisioning URIs.\n */\n issuer?: string,\n /**\n * WebAuthn relying-party context, derived from publicUrl (the hosted\n * login origin). Absent = WebAuthn enrollment/verification is refused.\n */\n webauthn?: {\n rpId: string,\n rpName: string,\n origin: string,\n },\n};\n\nexport type UserAuthenticatorServiceContext = {\n repository: IUserAuthenticatorRepository,\n userRepository: IUserRepository,\n cache: ICache,\n /**\n * Realm-scoped seed cipher over the key store's per-realm enc keys\n * (auto-generated on first use — no operator-provided key).\n */\n cipher: IRealmCipher,\n eventService?: IEventService,\n /**\n * Mail dependencies for the email-OTP kind (absent = email OTP\n * enrollment/send is refused).\n */\n mailClient?: IMailClient,\n mailTemplateRenderer?: IMailTemplateRenderer,\n options?: UserAuthenticatorServiceOptions,\n};\n"],"mappings":";;;;AAmBA,MAAaA,iCAAiC;CAC1C;CACA;CACA;CACA;CACA"}
@@ -0,0 +1,28 @@
1
+ import type { AuthenticationResponseJSON, RegistrationResponseJSON } from '@simplewebauthn/server';
2
+ import type { UserAuthenticatorWebauthnParameters } from './types.ts';
3
+ export type WebauthnContext = {
4
+ rpId: string;
5
+ rpName: string;
6
+ origin: string;
7
+ };
8
+ export type WebauthnCredentialRef = {
9
+ id: string;
10
+ transports?: string[];
11
+ };
12
+ export declare function buildWebauthnRegistrationOptions(ctx: WebauthnContext, user: {
13
+ id: string;
14
+ name: string;
15
+ }, existing: WebauthnCredentialRef[]): Promise<{
16
+ options: Record<string, unknown>;
17
+ challenge: string;
18
+ }>;
19
+ export declare function verifyWebauthnRegistration(ctx: WebauthnContext, response: RegistrationResponseJSON, challenge: string): Promise<UserAuthenticatorWebauthnParameters | null>;
20
+ export declare function buildWebauthnAuthenticationOptions(ctx: WebauthnContext, credentials: WebauthnCredentialRef[]): Promise<{
21
+ options: Record<string, unknown>;
22
+ challenge: string;
23
+ }>;
24
+ export declare function verifyWebauthnAuthentication(ctx: WebauthnContext, response: AuthenticationResponseJSON, challenge: string, credential: UserAuthenticatorWebauthnParameters): Promise<{
25
+ verified: boolean;
26
+ newCounter: number;
27
+ }>;
28
+ //# sourceMappingURL=webauthn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthn.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-authenticator/webauthn.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACR,0BAA0B,EAE1B,wBAAwB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IAGX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAeF,wBAAsB,gCAAgC,CAClD,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAClC,QAAQ,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBlE;AAED,wBAAsB,0BAA0B,CAC5C,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,wBAAwB,EAClC,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAAC,CAsBrD;AAED,wBAAsB,kCAAkC,CACpD,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,qBAAqB,EAAE,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAclE;AAED,wBAAsB,4BAA4B,CAC9C,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,0BAA0B,EACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,mCAAmC,GAChD,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBpD"}
@@ -0,0 +1,88 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ import { generateAuthenticationOptions, generateRegistrationOptions, verifyAuthenticationResponse, verifyRegistrationResponse } from "@simplewebauthn/server";
5
+ import { isoBase64URL } from "@simplewebauthn/server/helpers";
6
+ //#region src/core/entities/user-authenticator/webauthn.ts
7
+ function asOpaqueOptions(options) {
8
+ return options;
9
+ }
10
+ function asTransports(transports) {
11
+ return transports;
12
+ }
13
+ async function buildWebauthnRegistrationOptions(ctx, user, existing) {
14
+ const options = await generateRegistrationOptions({
15
+ rpName: ctx.rpName,
16
+ rpID: ctx.rpId,
17
+ userID: new TextEncoder().encode(user.id),
18
+ userName: user.name,
19
+ attestationType: "none",
20
+ excludeCredentials: existing.map((credential) => ({
21
+ id: credential.id,
22
+ transports: asTransports(credential.transports)
23
+ })),
24
+ authenticatorSelection: {
25
+ residentKey: "discouraged",
26
+ userVerification: "preferred"
27
+ }
28
+ });
29
+ return {
30
+ options: asOpaqueOptions(options),
31
+ challenge: options.challenge
32
+ };
33
+ }
34
+ async function verifyWebauthnRegistration(ctx, response, challenge) {
35
+ const verification = await verifyRegistrationResponse({
36
+ response,
37
+ expectedChallenge: challenge,
38
+ expectedOrigin: ctx.origin,
39
+ expectedRPID: ctx.rpId,
40
+ requireUserVerification: false
41
+ });
42
+ if (!verification.verified || !verification.registrationInfo) return null;
43
+ const { credential } = verification.registrationInfo;
44
+ return {
45
+ rp_id: ctx.rpId,
46
+ credential_id: credential.id,
47
+ public_key: isoBase64URL.fromBuffer(credential.publicKey),
48
+ counter: credential.counter,
49
+ transports: credential.transports
50
+ };
51
+ }
52
+ async function buildWebauthnAuthenticationOptions(ctx, credentials) {
53
+ const options = await generateAuthenticationOptions({
54
+ rpID: ctx.rpId,
55
+ userVerification: "preferred",
56
+ allowCredentials: credentials.map((credential) => ({
57
+ id: credential.id,
58
+ transports: asTransports(credential.transports)
59
+ }))
60
+ });
61
+ return {
62
+ options: asOpaqueOptions(options),
63
+ challenge: options.challenge
64
+ };
65
+ }
66
+ async function verifyWebauthnAuthentication(ctx, response, challenge, credential) {
67
+ const verification = await verifyAuthenticationResponse({
68
+ response,
69
+ expectedChallenge: challenge,
70
+ expectedOrigin: ctx.origin,
71
+ expectedRPID: ctx.rpId,
72
+ requireUserVerification: false,
73
+ credential: {
74
+ id: credential.credential_id,
75
+ publicKey: isoBase64URL.toBuffer(credential.public_key),
76
+ counter: credential.counter,
77
+ transports: asTransports(credential.transports)
78
+ }
79
+ });
80
+ return {
81
+ verified: verification.verified,
82
+ newCounter: verification.authenticationInfo?.newCounter ?? credential.counter
83
+ };
84
+ }
85
+ //#endregion
86
+ export { buildWebauthnAuthenticationOptions, buildWebauthnRegistrationOptions, verifyWebauthnAuthentication, verifyWebauthnRegistration };
87
+
88
+ //# sourceMappingURL=webauthn.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthn.mjs","names":["generateAuthenticationOptions","generateRegistrationOptions","verifyAuthenticationResponse","verifyRegistrationResponse","isoBase64URL","asOpaqueOptions","options","asTransports","transports","buildWebauthnRegistrationOptions","ctx","user","existing","rpName","rpID","rpId","userID","TextEncoder","encode","id","userName","name","attestationType","excludeCredentials","map","credential","authenticatorSelection","residentKey","userVerification","challenge","verifyWebauthnRegistration","response","verification","expectedChallenge","expectedOrigin","origin","expectedRPID","requireUserVerification","verified","registrationInfo","rp_id","credential_id","public_key","fromBuffer","publicKey","counter","buildWebauthnAuthenticationOptions","credentials","allowCredentials","verifyWebauthnAuthentication","toBuffer","newCounter","authenticationInfo"],"sources":["../../../../src/core/entities/user-authenticator/webauthn.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n generateAuthenticationOptions,\n generateRegistrationOptions,\n verifyAuthenticationResponse,\n verifyRegistrationResponse,\n} from '@simplewebauthn/server';\nimport { isoBase64URL } from '@simplewebauthn/server/helpers';\nimport type {\n AuthenticationResponseJSON,\n AuthenticatorTransportFuture,\n RegistrationResponseJSON,\n} from '@simplewebauthn/server';\nimport type { UserAuthenticatorWebauthnParameters } from './types.ts';\n\nexport type WebauthnContext = {\n rpId: string,\n rpName: string,\n origin: string,\n};\n\nexport type WebauthnCredentialRef = {\n id: string,\n // persisted as a plain string[] on the credential row (JSON column); the\n // SimpleWebAuthn API narrows it to its transport string-literal union.\n transports?: string[],\n};\n\n// The SimpleWebAuthn option objects are serialized verbatim to the browser\n// (navigator.credentials.*). They cross the wire as an opaque JSON blob, so the\n// public DTO deliberately keeps them as `Record<string, unknown>` rather than\n// leaking @simplewebauthn/server types into the shared HTTP contract — hence the\n// single boundary conversion below.\nfunction asOpaqueOptions(options: object): Record<string, unknown> {\n return options as unknown as Record<string, unknown>;\n}\n\nfunction asTransports(transports?: string[]): AuthenticatorTransportFuture[] | undefined {\n return transports as AuthenticatorTransportFuture[] | undefined;\n}\n\nexport async function buildWebauthnRegistrationOptions(\n ctx: WebauthnContext,\n user: { id: string, name: string },\n existing: WebauthnCredentialRef[],\n): Promise<{ options: Record<string, unknown>, challenge: string }> {\n const options = await generateRegistrationOptions({\n rpName: ctx.rpName,\n rpID: ctx.rpId,\n userID: new TextEncoder().encode(user.id),\n userName: user.name,\n attestationType: 'none',\n excludeCredentials: existing.map((credential) => ({\n id: credential.id,\n transports: asTransports(credential.transports),\n })),\n authenticatorSelection: {\n residentKey: 'discouraged',\n userVerification: 'preferred',\n },\n });\n\n return {\n options: asOpaqueOptions(options),\n challenge: options.challenge,\n };\n}\n\nexport async function verifyWebauthnRegistration(\n ctx: WebauthnContext,\n response: RegistrationResponseJSON,\n challenge: string,\n): Promise<UserAuthenticatorWebauthnParameters | null> {\n const verification = await verifyRegistrationResponse({\n response,\n expectedChallenge: challenge,\n expectedOrigin: ctx.origin,\n expectedRPID: ctx.rpId,\n requireUserVerification: false,\n });\n\n if (!verification.verified || !verification.registrationInfo) {\n return null;\n }\n\n const { credential } = verification.registrationInfo;\n\n return {\n rp_id: ctx.rpId,\n credential_id: credential.id,\n public_key: isoBase64URL.fromBuffer(credential.publicKey),\n counter: credential.counter,\n transports: credential.transports,\n };\n}\n\nexport async function buildWebauthnAuthenticationOptions(\n ctx: WebauthnContext,\n credentials: WebauthnCredentialRef[],\n): Promise<{ options: Record<string, unknown>, challenge: string }> {\n const options = await generateAuthenticationOptions({\n rpID: ctx.rpId,\n userVerification: 'preferred',\n allowCredentials: credentials.map((credential) => ({\n id: credential.id,\n transports: asTransports(credential.transports),\n })),\n });\n\n return {\n options: asOpaqueOptions(options),\n challenge: options.challenge,\n };\n}\n\nexport async function verifyWebauthnAuthentication(\n ctx: WebauthnContext,\n response: AuthenticationResponseJSON,\n challenge: string,\n credential: UserAuthenticatorWebauthnParameters,\n): Promise<{ verified: boolean, newCounter: number }> {\n const verification = await verifyAuthenticationResponse({\n response,\n expectedChallenge: challenge,\n expectedOrigin: ctx.origin,\n expectedRPID: ctx.rpId,\n requireUserVerification: false,\n credential: {\n id: credential.credential_id,\n publicKey: isoBase64URL.toBuffer(credential.public_key),\n counter: credential.counter,\n transports: asTransports(credential.transports),\n },\n });\n\n return {\n verified: verification.verified,\n newCounter: verification.authenticationInfo?.newCounter ?? credential.counter,\n };\n}\n"],"mappings":";;;;;;AAuCA,SAASK,gBAAgBC,SAAe;CACpC,OAAOA;AACX;AAEA,SAASC,aAAaC,YAAqB;CACvC,OAAOA;AACX;AAEA,eAAsBC,iCAClBC,KACAC,MACAC,UAAiC;CAEjC,MAAMN,UAAU,MAAML,4BAA4B;EAC9CY,QAAQH,IAAIG;EACZC,MAAMJ,IAAIK;EACVC,QAAQ,IAAIC,YAAAA,CAAAA,CAAcC,OAAOP,KAAKQ,EAAE;EACxCC,UAAUT,KAAKU;EACfC,iBAAiB;EACjBC,oBAAoBX,SAASY,KAAKC,gBAAgB;GAC9CN,IAAIM,WAAWN;GACfX,YAAYD,aAAakB,WAAWjB,UAAU;EAClD,EAAA;EACAkB,wBAAwB;GACpBC,aAAa;GACbC,kBAAkB;EACtB;CACJ,CAAA;CAEA,OAAO;EACHtB,SAASD,gBAAgBC,OAAAA;EACzBuB,WAAWvB,QAAQuB;CACvB;AACJ;AAEA,eAAsBC,2BAClBpB,KACAqB,UACAF,WAAiB;CAEjB,MAAMG,eAAe,MAAM7B,2BAA2B;EAClD4B;EACAE,mBAAmBJ;EACnBK,gBAAgBxB,IAAIyB;EACpBC,cAAc1B,IAAIK;EAClBsB,yBAAyB;CAC7B,CAAA;CAEA,IAAI,CAACL,aAAaM,YAAY,CAACN,aAAaO,kBACxC,OAAO;CAGX,MAAM,EAAEd,eAAeO,aAAaO;CAEpC,OAAO;EACHC,OAAO9B,IAAIK;EACX0B,eAAehB,WAAWN;EAC1BuB,YAAYtC,aAAauC,WAAWlB,WAAWmB,SAAS;EACxDC,SAASpB,WAAWoB;EACpBrC,YAAYiB,WAAWjB;CAC3B;AACJ;AAEA,eAAsBsC,mCAClBpC,KACAqC,aAAoC;CAEpC,MAAMzC,UAAU,MAAMN,8BAA8B;EAChDc,MAAMJ,IAAIK;EACVa,kBAAkB;EAClBoB,kBAAkBD,YAAYvB,KAAKC,gBAAgB;GAC/CN,IAAIM,WAAWN;GACfX,YAAYD,aAAakB,WAAWjB,UAAU;EAClD,EAAA;CACJ,CAAA;CAEA,OAAO;EACHF,SAASD,gBAAgBC,OAAAA;EACzBuB,WAAWvB,QAAQuB;CACvB;AACJ;AAEA,eAAsBoB,6BAClBvC,KACAqB,UACAF,WACAJ,YAA+C;CAE/C,MAAMO,eAAe,MAAM9B,6BAA6B;EACpD6B;EACAE,mBAAmBJ;EACnBK,gBAAgBxB,IAAIyB;EACpBC,cAAc1B,IAAIK;EAClBsB,yBAAyB;EACzBZ,YAAY;GACRN,IAAIM,WAAWgB;GACfG,WAAWxC,aAAa8C,SAASzB,WAAWiB,UAAU;GACtDG,SAASpB,WAAWoB;GACpBrC,YAAYD,aAAakB,WAAWjB,UAAU;EAClD;CACJ,CAAA;CAEA,OAAO;EACH8B,UAAUN,aAAaM;EACvBa,YAAYnB,aAAaoB,oBAAoBD,cAAc1B,WAAWoB;CAC1E;AACJ"}
@@ -1,3 +1,4 @@
1
1
  export * from './service.ts';
2
2
  export * from './types.ts';
3
+ export * from './schema.ts';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { userPermissionSchema } from "./schema.mjs";
4
5
  import { UserPermissionService } from "./service.mjs";
5
- export { UserPermissionService };
6
+ export { UserPermissionService, userPermissionSchema };
@@ -0,0 +1,3 @@
1
+ import type { UserPermission } from '@authup/core-kit';
2
+ export declare const userPermissionSchema: import("@rapiq/core").Schema<UserPermission, any>;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,eAAO,MAAM,oBAAoB,mDAqB/B,CAAC"}