@authup/server-core 1.0.0-beta.53 → 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 (1152) 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 +0 -13
  3. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  4. package/dist/adapters/database/domains/client/entity.d.ts +16 -16
  5. package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
  6. package/dist/adapters/database/domains/client/entity.mjs +52 -34
  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 +40 -21
  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 +7 -7
  27. package/dist/adapters/database/domains/consent/entity.d.ts.map +1 -1
  28. package/dist/adapters/database/domains/consent/entity.mjs +33 -18
  29. package/dist/adapters/database/domains/consent/entity.mjs.map +1 -1
  30. package/dist/adapters/database/domains/consent/subscriber.mjs +2 -2
  31. package/dist/adapters/database/domains/consent/subscriber.mjs.map +1 -1
  32. package/dist/adapters/database/domains/constants.d.ts +0 -3
  33. package/dist/adapters/database/domains/constants.d.ts.map +1 -1
  34. package/dist/adapters/database/domains/constants.mjs +0 -3
  35. package/dist/adapters/database/domains/constants.mjs.map +1 -1
  36. package/dist/adapters/database/domains/event/entity.d.ts +13 -13
  37. package/dist/adapters/database/domains/event/entity.d.ts.map +1 -1
  38. package/dist/adapters/database/domains/event/entity.mjs +43 -28
  39. package/dist/adapters/database/domains/event/entity.mjs.map +1 -1
  40. package/dist/adapters/database/domains/identity-provider/entity.d.ts +4 -4
  41. package/dist/adapters/database/domains/identity-provider/entity.d.ts.map +1 -1
  42. package/dist/adapters/database/domains/identity-provider/entity.mjs +17 -10
  43. package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
  44. package/dist/adapters/database/domains/identity-provider/repository.mjs +3 -3
  45. package/dist/adapters/database/domains/identity-provider/repository.mjs.map +1 -1
  46. package/dist/adapters/database/domains/identity-provider/subscriber.mjs +1 -1
  47. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  48. package/dist/adapters/database/domains/identity-provider-account/entity.d.ts +15 -15
  49. package/dist/adapters/database/domains/identity-provider-account/entity.d.ts.map +1 -1
  50. package/dist/adapters/database/domains/identity-provider-account/entity.mjs +50 -31
  51. package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
  52. package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts +4 -4
  53. package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts.map +1 -1
  54. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs +18 -9
  55. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
  56. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts +9 -9
  57. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts.map +1 -1
  58. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs +29 -19
  59. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
  60. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts +10 -10
  61. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts.map +1 -1
  62. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs +32 -21
  63. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
  64. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts +10 -10
  65. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts.map +1 -1
  66. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs +32 -21
  67. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
  68. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs +1 -1
  69. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  70. package/dist/adapters/database/domains/index.d.ts +0 -3
  71. package/dist/adapters/database/domains/index.d.ts.map +1 -1
  72. package/dist/adapters/database/domains/index.mjs +1 -10
  73. package/dist/adapters/database/domains/key/entity.d.ts +6 -6
  74. package/dist/adapters/database/domains/key/entity.d.ts.map +1 -1
  75. package/dist/adapters/database/domains/key/entity.mjs +24 -14
  76. package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
  77. package/dist/adapters/database/domains/permission/entity.d.ts +7 -7
  78. package/dist/adapters/database/domains/permission/entity.d.ts.map +1 -1
  79. package/dist/adapters/database/domains/permission/entity.mjs +33 -18
  80. package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
  81. package/dist/adapters/database/domains/permission/subscriber.mjs +2 -2
  82. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  83. package/dist/adapters/database/domains/permission-policy/entity.d.ts +8 -8
  84. package/dist/adapters/database/domains/permission-policy/entity.d.ts.map +1 -1
  85. package/dist/adapters/database/domains/permission-policy/entity.mjs +29 -17
  86. package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
  87. package/dist/adapters/database/domains/policy/entity.d.ts +6 -6
  88. package/dist/adapters/database/domains/policy/entity.d.ts.map +1 -1
  89. package/dist/adapters/database/domains/policy/entity.mjs +28 -14
  90. package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
  91. package/dist/adapters/database/domains/policy/repository.mjs +3 -3
  92. package/dist/adapters/database/domains/policy/repository.mjs.map +1 -1
  93. package/dist/adapters/database/domains/policy-attribute/entity.d.ts +4 -4
  94. package/dist/adapters/database/domains/policy-attribute/entity.d.ts.map +1 -1
  95. package/dist/adapters/database/domains/policy-attribute/entity.mjs +18 -9
  96. package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
  97. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs +2 -2
  98. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  99. package/dist/adapters/database/domains/realm/entity.d.ts +4 -4
  100. package/dist/adapters/database/domains/realm/entity.d.ts.map +1 -1
  101. package/dist/adapters/database/domains/realm/entity.mjs +16 -8
  102. package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
  103. package/dist/adapters/database/domains/role/entity.d.ts +6 -6
  104. package/dist/adapters/database/domains/role/entity.d.ts.map +1 -1
  105. package/dist/adapters/database/domains/role/entity.mjs +30 -16
  106. package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
  107. package/dist/adapters/database/domains/role/repository.mjs +3 -3
  108. package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
  109. package/dist/adapters/database/domains/role/subscriber.mjs +1 -1
  110. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  111. package/dist/adapters/database/domains/role-attribute/entity.d.ts +4 -4
  112. package/dist/adapters/database/domains/role-attribute/entity.d.ts.map +1 -1
  113. package/dist/adapters/database/domains/role-attribute/entity.mjs +18 -9
  114. package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
  115. package/dist/adapters/database/domains/role-attribute/subscriber.mjs +2 -2
  116. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  117. package/dist/adapters/database/domains/role-permission/entity.d.ts +10 -10
  118. package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
  119. package/dist/adapters/database/domains/role-permission/entity.mjs +37 -21
  120. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  121. package/dist/adapters/database/domains/role-permission/subscriber.mjs +2 -2
  122. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  123. package/dist/adapters/database/domains/scope/entity.d.ts +5 -5
  124. package/dist/adapters/database/domains/scope/entity.d.ts.map +1 -1
  125. package/dist/adapters/database/domains/scope/entity.mjs +23 -12
  126. package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
  127. package/dist/adapters/database/domains/scope/subscriber.mjs +1 -1
  128. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  129. package/dist/adapters/database/domains/session/entity.d.ts +14 -17
  130. package/dist/adapters/database/domains/session/entity.d.ts.map +1 -1
  131. package/dist/adapters/database/domains/session/entity.mjs +42 -42
  132. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  133. package/dist/adapters/database/domains/session-token/entity.d.ts +9 -9
  134. package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -1
  135. package/dist/adapters/database/domains/session-token/entity.mjs +32 -19
  136. package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -1
  137. package/dist/adapters/database/domains/trust-anchor/entity.d.ts +3 -3
  138. package/dist/adapters/database/domains/trust-anchor/entity.d.ts.map +1 -1
  139. package/dist/adapters/database/domains/trust-anchor/entity.mjs +14 -8
  140. package/dist/adapters/database/domains/trust-anchor/entity.mjs.map +1 -1
  141. package/dist/adapters/database/domains/user/entity.d.ts +12 -12
  142. package/dist/adapters/database/domains/user/entity.d.ts.map +1 -1
  143. package/dist/adapters/database/domains/user/entity.mjs +42 -27
  144. package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
  145. package/dist/adapters/database/domains/user/repository.mjs +3 -3
  146. package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
  147. package/dist/adapters/database/domains/user/subscriber.mjs +1 -1
  148. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  149. package/dist/adapters/database/domains/user-attribute/entity.d.ts +4 -4
  150. package/dist/adapters/database/domains/user-attribute/entity.d.ts.map +1 -1
  151. package/dist/adapters/database/domains/user-attribute/entity.mjs +15 -9
  152. package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
  153. package/dist/adapters/database/domains/user-attribute/subscriber.mjs +2 -2
  154. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  155. package/dist/adapters/database/domains/user-authenticator/entity.d.ts +5 -5
  156. package/dist/adapters/database/domains/user-authenticator/entity.d.ts.map +1 -1
  157. package/dist/adapters/database/domains/user-authenticator/entity.mjs +24 -11
  158. package/dist/adapters/database/domains/user-authenticator/entity.mjs.map +1 -1
  159. package/dist/adapters/database/domains/user-permission/entity.d.ts +10 -10
  160. package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
  161. package/dist/adapters/database/domains/user-permission/entity.mjs +37 -21
  162. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  163. package/dist/adapters/database/domains/user-permission/subscriber.mjs +2 -2
  164. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  165. package/dist/adapters/database/domains/user-role/entity.d.ts +8 -8
  166. package/dist/adapters/database/domains/user-role/entity.d.ts.map +1 -1
  167. package/dist/adapters/database/domains/user-role/entity.mjs +29 -17
  168. package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
  169. package/dist/adapters/database/domains/user-role/subscriber.mjs +2 -2
  170. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  171. package/dist/adapters/database/helpers/is-supported.mjs +1 -1
  172. package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
  173. package/dist/adapters/database/index.mjs +1 -7
  174. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.d.ts +12 -0
  175. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.d.ts.map +1 -0
  176. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.mjs +42 -0
  177. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.mjs.map +1 -0
  178. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.d.ts +18 -0
  179. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.d.ts.map +1 -0
  180. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.mjs +161 -0
  181. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.mjs.map +1 -0
  182. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.d.ts +12 -0
  183. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.d.ts.map +1 -0
  184. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.mjs +42 -0
  185. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.mjs.map +1 -0
  186. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.d.ts +18 -0
  187. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.d.ts.map +1 -0
  188. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.mjs +167 -0
  189. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.mjs.map +1 -0
  190. package/dist/adapters/http/adapters/index.mjs +1 -2
  191. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +2 -2
  192. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  193. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +3 -3
  194. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  195. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +1 -1
  196. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  197. package/dist/adapters/http/adapters/oauth2/grant-types/index.d.ts +0 -1
  198. package/dist/adapters/http/adapters/oauth2/grant-types/index.d.ts.map +1 -1
  199. package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +1 -2
  200. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +1 -1
  201. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  202. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +1 -1
  203. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  204. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +1 -4
  205. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  206. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts.map +1 -1
  207. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +0 -3
  208. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
  209. package/dist/adapters/http/adapters/oauth2/index.mjs +1 -2
  210. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs +3 -3
  211. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs.map +1 -1
  212. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs +2 -2
  213. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs.map +1 -1
  214. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs +2 -2
  215. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs.map +1 -1
  216. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  217. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +19 -13
  218. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  219. package/dist/adapters/http/controllers/entities/index.d.ts +0 -3
  220. package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
  221. package/dist/adapters/http/controllers/entities/index.mjs +1 -9
  222. package/dist/adapters/http/controllers/entities/key/module.d.ts.map +1 -1
  223. package/dist/adapters/http/controllers/entities/key/module.mjs +1 -7
  224. package/dist/adapters/http/controllers/entities/key/module.mjs.map +1 -1
  225. package/dist/adapters/http/controllers/entities/policy/utils/validation.d.ts +1 -1
  226. package/dist/adapters/http/controllers/entities/policy/utils/validation.d.ts.map +1 -1
  227. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs +3 -3
  228. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs.map +1 -1
  229. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs +1 -1
  230. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs.map +1 -1
  231. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs +3 -3
  232. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs.map +1 -1
  233. package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
  234. package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts.map +1 -1
  235. package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs +1 -7
  236. package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs.map +1 -1
  237. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs +1 -1
  238. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs.map +1 -1
  239. package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs +1 -1
  240. package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs.map +1 -1
  241. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs +3 -3
  242. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs.map +1 -1
  243. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs +2 -2
  244. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs.map +1 -1
  245. package/dist/adapters/http/controllers/index.mjs +1 -6
  246. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +4 -4
  247. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  248. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +10 -10
  249. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
  250. package/dist/adapters/http/controllers/workflows/jwks/module.mjs +9 -9
  251. package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
  252. package/dist/adapters/http/controllers/workflows/status/module.mjs +2 -2
  253. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  254. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  255. package/dist/adapters/http/controllers/workflows/token/module.mjs +2 -8
  256. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  257. package/dist/adapters/http/controllers/workflows/token/types.d.ts +1 -2
  258. package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
  259. package/dist/adapters/http/index.mjs +1 -7
  260. package/dist/adapters/http/middleware/built-in/assets.mjs +2 -2
  261. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  262. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +1 -2
  263. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  264. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +1 -15
  265. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  266. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts +0 -1
  267. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts.map +1 -1
  268. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
  269. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +0 -1
  270. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  271. package/dist/adapters/http/request/client-certificate.d.ts +1 -0
  272. package/dist/adapters/http/request/client-certificate.d.ts.map +1 -1
  273. package/dist/adapters/http/request/client-certificate.mjs +1 -0
  274. package/dist/adapters/http/request/client-certificate.mjs.map +1 -1
  275. package/dist/adapters/http/request/helpers/body-realm-id.mjs +1 -1
  276. package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
  277. package/dist/adapters/http/request/helpers/identity.d.ts +2 -2
  278. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  279. package/dist/adapters/http/request/helpers/identity.mjs +2 -2
  280. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  281. package/dist/adapters/http/request/helpers/realm-id.mjs +1 -1
  282. package/dist/adapters/http/request/helpers/realm-id.mjs.map +1 -1
  283. package/dist/adapters/http/request/permission/module.d.ts +3 -2
  284. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  285. package/dist/adapters/http/request/permission/module.mjs +3 -0
  286. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  287. package/dist/adapters/http/ui/render.mjs +2 -2
  288. package/dist/adapters/http/ui/render.mjs.map +1 -1
  289. package/dist/adapters/http/ui/serve.d.ts.map +1 -1
  290. package/dist/adapters/http/ui/serve.mjs +4 -1
  291. package/dist/adapters/http/ui/serve.mjs.map +1 -1
  292. package/dist/app/index.mjs +1 -5
  293. package/dist/app/modules/authentication/repositories/session.d.ts +3 -2
  294. package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
  295. package/dist/app/modules/authentication/repositories/session.mjs +8 -40
  296. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  297. package/dist/app/modules/config/constants.d.ts +0 -4
  298. package/dist/app/modules/config/constants.d.ts.map +1 -1
  299. package/dist/app/modules/config/constants.mjs +0 -4
  300. package/dist/app/modules/config/constants.mjs.map +1 -1
  301. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  302. package/dist/app/modules/config/normalize.mjs +0 -4
  303. package/dist/app/modules/config/normalize.mjs.map +1 -1
  304. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  305. package/dist/app/modules/config/read/env.mjs +0 -8
  306. package/dist/app/modules/config/read/env.mjs.map +1 -1
  307. package/dist/app/modules/config/types.d.ts +0 -19
  308. package/dist/app/modules/config/types.d.ts.map +1 -1
  309. package/dist/app/modules/config/validator.d.ts.map +1 -1
  310. package/dist/app/modules/config/validator.mjs +0 -4
  311. package/dist/app/modules/config/validator.mjs.map +1 -1
  312. package/dist/app/modules/database/index.mjs +1 -4
  313. package/dist/app/modules/database/module.d.ts.map +1 -1
  314. package/dist/app/modules/database/module.mjs +2 -0
  315. package/dist/app/modules/database/module.mjs.map +1 -1
  316. package/dist/app/modules/database/repositories/bindings.d.ts +2 -2
  317. package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -1
  318. package/dist/app/modules/database/repositories/bindings.mjs +3 -3
  319. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  320. package/dist/app/modules/database/repositories/client/repository.d.ts +3 -2
  321. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  322. package/dist/app/modules/database/repositories/client/repository.mjs +10 -82
  323. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  324. package/dist/app/modules/database/repositories/client-permission/repository.d.ts +2 -1
  325. package/dist/app/modules/database/repositories/client-permission/repository.d.ts.map +1 -1
  326. package/dist/app/modules/database/repositories/client-permission/repository.mjs +3 -17
  327. package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
  328. package/dist/app/modules/database/repositories/client-role/repository.d.ts +2 -1
  329. package/dist/app/modules/database/repositories/client-role/repository.d.ts.map +1 -1
  330. package/dist/app/modules/database/repositories/client-role/repository.mjs +3 -17
  331. package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
  332. package/dist/app/modules/database/repositories/client-scope/repository.d.ts +2 -1
  333. package/dist/app/modules/database/repositories/client-scope/repository.d.ts.map +1 -1
  334. package/dist/app/modules/database/repositories/client-scope/repository.mjs +3 -17
  335. package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
  336. package/dist/app/modules/database/repositories/event/repository.d.ts +2 -1
  337. package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -1
  338. package/dist/app/modules/database/repositories/event/repository.mjs +14 -53
  339. package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -1
  340. package/dist/app/modules/database/repositories/helpers.d.ts +17 -3
  341. package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
  342. package/dist/app/modules/database/repositories/helpers.mjs +40 -5
  343. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  344. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +2 -1
  345. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  346. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +6 -37
  347. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  348. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts +2 -1
  349. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts.map +1 -1
  350. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs +3 -17
  351. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
  352. package/dist/app/modules/database/repositories/index.d.ts +0 -3
  353. package/dist/app/modules/database/repositories/index.d.ts.map +1 -1
  354. package/dist/app/modules/database/repositories/index.mjs +1 -7
  355. package/dist/app/modules/database/repositories/key/repository.d.ts +3 -2
  356. package/dist/app/modules/database/repositories/key/repository.d.ts.map +1 -1
  357. package/dist/app/modules/database/repositories/key/repository.mjs +38 -72
  358. package/dist/app/modules/database/repositories/key/repository.mjs.map +1 -1
  359. package/dist/app/modules/database/repositories/permission/repository.d.ts +2 -1
  360. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  361. package/dist/app/modules/database/repositories/permission/repository.mjs +5 -20
  362. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  363. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts +2 -1
  364. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts.map +1 -1
  365. package/dist/app/modules/database/repositories/permission-policy/repository.mjs +3 -17
  366. package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
  367. package/dist/app/modules/database/repositories/permission-provider/module.mjs +6 -6
  368. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  369. package/dist/app/modules/database/repositories/policy/repository.d.ts +2 -1
  370. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  371. package/dist/app/modules/database/repositories/policy/repository.mjs +5 -39
  372. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  373. package/dist/app/modules/database/repositories/query.d.ts +18 -0
  374. package/dist/app/modules/database/repositories/query.d.ts.map +1 -0
  375. package/dist/app/modules/database/repositories/query.mjs +29 -0
  376. package/dist/app/modules/database/repositories/query.mjs.map +1 -0
  377. package/dist/app/modules/database/repositories/realm/repository.d.ts +2 -1
  378. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  379. package/dist/app/modules/database/repositories/realm/repository.mjs +3 -25
  380. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  381. package/dist/app/modules/database/repositories/role/repository.d.ts +2 -1
  382. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  383. package/dist/app/modules/database/repositories/role/repository.mjs +6 -30
  384. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  385. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts +2 -1
  386. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  387. package/dist/app/modules/database/repositories/role-attribute/repository.mjs +3 -19
  388. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  389. package/dist/app/modules/database/repositories/role-permission/repository.d.ts +2 -1
  390. package/dist/app/modules/database/repositories/role-permission/repository.d.ts.map +1 -1
  391. package/dist/app/modules/database/repositories/role-permission/repository.mjs +3 -17
  392. package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
  393. package/dist/app/modules/database/repositories/schema-validation.d.ts +11 -0
  394. package/dist/app/modules/database/repositories/schema-validation.d.ts.map +1 -0
  395. package/dist/app/modules/database/repositories/schema-validation.mjs +77 -0
  396. package/dist/app/modules/database/repositories/schema-validation.mjs.map +1 -0
  397. package/dist/app/modules/database/repositories/scope/repository.d.ts +2 -1
  398. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  399. package/dist/app/modules/database/repositories/scope/repository.mjs +5 -29
  400. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  401. package/dist/app/modules/database/repositories/trust-anchor/repository.d.ts +2 -1
  402. package/dist/app/modules/database/repositories/trust-anchor/repository.d.ts.map +1 -1
  403. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +5 -29
  404. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs.map +1 -1
  405. package/dist/app/modules/database/repositories/user/repository.d.ts +3 -2
  406. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  407. package/dist/app/modules/database/repositories/user/repository.mjs +9 -66
  408. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  409. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts +2 -1
  410. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  411. package/dist/app/modules/database/repositories/user-attribute/repository.mjs +4 -20
  412. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  413. package/dist/app/modules/database/repositories/user-authenticator/repository.d.ts +2 -1
  414. package/dist/app/modules/database/repositories/user-authenticator/repository.d.ts.map +1 -1
  415. package/dist/app/modules/database/repositories/user-authenticator/repository.mjs +8 -34
  416. package/dist/app/modules/database/repositories/user-authenticator/repository.mjs.map +1 -1
  417. package/dist/app/modules/database/repositories/user-permission/repository.d.ts +2 -1
  418. package/dist/app/modules/database/repositories/user-permission/repository.d.ts.map +1 -1
  419. package/dist/app/modules/database/repositories/user-permission/repository.mjs +3 -17
  420. package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
  421. package/dist/app/modules/database/repositories/user-role/repository.d.ts +2 -1
  422. package/dist/app/modules/database/repositories/user-role/repository.d.ts.map +1 -1
  423. package/dist/app/modules/database/repositories/user-role/repository.mjs +3 -17
  424. package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
  425. package/dist/app/modules/http/modules/controller.d.ts +1 -4
  426. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  427. package/dist/app/modules/http/modules/controller.mjs +0 -52
  428. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  429. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  430. package/dist/app/modules/http/modules/middleware.mjs +0 -1
  431. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  432. package/dist/app/modules/identity/index.mjs +1 -2
  433. package/dist/app/modules/identity/module.d.ts.map +1 -1
  434. package/dist/app/modules/identity/module.mjs +1 -12
  435. package/dist/app/modules/identity/module.mjs.map +1 -1
  436. package/dist/app/modules/identity/repositories/client.mjs +2 -2
  437. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  438. package/dist/app/modules/identity/repositories/index.d.ts +0 -1
  439. package/dist/app/modules/identity/repositories/index.d.ts.map +1 -1
  440. package/dist/app/modules/identity/repositories/index.mjs +1 -2
  441. package/dist/app/modules/identity/repositories/provider/account/module.mjs +3 -3
  442. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  443. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs +1 -1
  444. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  445. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs +1 -1
  446. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  447. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs +1 -1
  448. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  449. package/dist/app/modules/identity/repositories/user.mjs +18 -18
  450. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  451. package/dist/app/modules/index.mjs +1 -5
  452. package/dist/app/modules/oauth2/repositories/client/repository.mjs +1 -1
  453. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  454. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts +2 -1
  455. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts.map +1 -1
  456. package/dist/app/modules/oauth2/repositories/consent/repository.mjs +14 -38
  457. package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -1
  458. package/dist/app/modules/oauth2/repositories/scope/repository.mjs +1 -1
  459. package/dist/app/modules/oauth2/repositories/scope/repository.mjs.map +1 -1
  460. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +21 -18
  461. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -1
  462. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  463. package/dist/app/modules/provisioning/module.mjs +9 -24
  464. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  465. package/dist/app/modules/provisioning/sources/composite/module.d.ts +17 -0
  466. package/dist/app/modules/provisioning/sources/composite/module.d.ts.map +1 -1
  467. package/dist/app/modules/provisioning/sources/composite/module.mjs +54 -2
  468. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  469. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  470. package/dist/app/modules/provisioning/sources/default/module.mjs +43 -78
  471. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  472. package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
  473. package/dist/app/modules/provisioning/sources/file/module.mjs +4 -3
  474. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  475. package/dist/app/modules/provisioning/sources/file/types.d.ts +2 -0
  476. package/dist/app/modules/provisioning/sources/file/types.d.ts.map +1 -1
  477. package/dist/app/modules/provisioning/sources/index.mjs +1 -0
  478. package/dist/components/database/unique-entries/module.mjs +6 -6
  479. package/dist/components/database/unique-entries/module.mjs.map +1 -1
  480. package/dist/components/oauth2-cleaner/module.mjs +2 -2
  481. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  482. package/dist/core/authentication/credential/entities/client/module.d.ts +1 -1
  483. package/dist/core/authentication/credential/entities/client/module.d.ts.map +1 -1
  484. package/dist/core/authentication/credential/entities/client/module.mjs +3 -3
  485. package/dist/core/authentication/credential/entities/client/module.mjs.map +1 -1
  486. package/dist/core/authentication/credential/entities/index.d.ts +0 -1
  487. package/dist/core/authentication/credential/entities/index.d.ts.map +1 -1
  488. package/dist/core/authentication/credential/entities/index.mjs +1 -3
  489. package/dist/core/authentication/credential/index.mjs +1 -2
  490. package/dist/core/authentication/entities/client/module.mjs +1 -1
  491. package/dist/core/authentication/entities/client/module.mjs.map +1 -1
  492. package/dist/core/authentication/entities/index.d.ts +0 -1
  493. package/dist/core/authentication/entities/index.d.ts.map +1 -1
  494. package/dist/core/authentication/entities/index.mjs +1 -3
  495. package/dist/core/authentication/index.mjs +1 -3
  496. package/dist/core/authentication/session/module.d.ts.map +1 -1
  497. package/dist/core/authentication/session/module.mjs +14 -17
  498. package/dist/core/authentication/session/module.mjs.map +1 -1
  499. package/dist/core/authentication/session/types.d.ts +7 -6
  500. package/dist/core/authentication/session/types.d.ts.map +1 -1
  501. package/dist/core/authentication/session/types.mjs +4 -5
  502. package/dist/core/authentication/session/types.mjs.map +1 -1
  503. package/dist/core/client-certificate/module.d.ts +2 -1
  504. package/dist/core/client-certificate/module.d.ts.map +1 -1
  505. package/dist/core/client-certificate/module.mjs +2 -1
  506. package/dist/core/client-certificate/module.mjs.map +1 -1
  507. package/dist/core/client-certificate/reflect.d.ts +2 -0
  508. package/dist/core/client-certificate/reflect.d.ts.map +1 -0
  509. package/dist/core/{identity/entities/robot/index.mjs → client-certificate/reflect.mjs} +1 -0
  510. package/dist/core/client-certificate/types.d.ts +1 -1
  511. package/dist/core/client-certificate/types.d.ts.map +1 -1
  512. package/dist/core/entities/client/index.d.ts +1 -0
  513. package/dist/core/entities/client/index.d.ts.map +1 -1
  514. package/dist/core/entities/client/index.mjs +2 -1
  515. package/dist/core/entities/client/schema.d.ts +3 -0
  516. package/dist/core/entities/client/schema.d.ts.map +1 -0
  517. package/dist/core/entities/client/schema.mjs +59 -0
  518. package/dist/core/entities/client/schema.mjs.map +1 -0
  519. package/dist/core/entities/client/service.d.ts.map +1 -1
  520. package/dist/core/entities/client/service.mjs +42 -19
  521. package/dist/core/entities/client/service.mjs.map +1 -1
  522. package/dist/core/entities/client/types.d.ts +2 -1
  523. package/dist/core/entities/client/types.d.ts.map +1 -1
  524. package/dist/core/entities/client/web-client.d.ts +4 -4
  525. package/dist/core/entities/client/web-client.mjs +13 -13
  526. package/dist/core/entities/client/web-client.mjs.map +1 -1
  527. package/dist/core/entities/client-permission/index.d.ts +1 -0
  528. package/dist/core/entities/client-permission/index.d.ts.map +1 -1
  529. package/dist/core/entities/client-permission/index.mjs +2 -1
  530. package/dist/core/entities/client-permission/schema.d.ts +3 -0
  531. package/dist/core/entities/client-permission/schema.d.ts.map +1 -0
  532. package/dist/core/entities/client-permission/schema.mjs +41 -0
  533. package/dist/core/entities/client-permission/schema.mjs.map +1 -0
  534. package/dist/core/entities/client-permission/service.d.ts +1 -1
  535. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  536. package/dist/core/entities/client-permission/service.mjs +24 -18
  537. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  538. package/dist/core/entities/client-role/index.d.ts +1 -0
  539. package/dist/core/entities/client-role/index.d.ts.map +1 -1
  540. package/dist/core/entities/client-role/index.mjs +2 -1
  541. package/dist/core/entities/client-role/schema.d.ts +3 -0
  542. package/dist/core/entities/client-role/schema.d.ts.map +1 -0
  543. package/dist/core/entities/client-role/schema.mjs +39 -0
  544. package/dist/core/entities/client-role/schema.mjs.map +1 -0
  545. package/dist/core/entities/client-role/service.d.ts +1 -1
  546. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  547. package/dist/core/entities/client-role/service.mjs +14 -8
  548. package/dist/core/entities/client-role/service.mjs.map +1 -1
  549. package/dist/core/entities/client-scope/index.d.ts +1 -0
  550. package/dist/core/entities/client-scope/index.d.ts.map +1 -1
  551. package/dist/core/entities/client-scope/index.mjs +2 -1
  552. package/dist/core/entities/client-scope/schema.d.ts +3 -0
  553. package/dist/core/entities/client-scope/schema.d.ts.map +1 -0
  554. package/dist/core/entities/client-scope/schema.mjs +37 -0
  555. package/dist/core/entities/client-scope/schema.mjs.map +1 -0
  556. package/dist/core/entities/client-scope/service.d.ts +1 -1
  557. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  558. package/dist/core/entities/client-scope/service.mjs +12 -6
  559. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  560. package/dist/core/entities/consent/index.d.ts +1 -0
  561. package/dist/core/entities/consent/index.d.ts.map +1 -1
  562. package/dist/core/entities/consent/index.mjs +2 -1
  563. package/dist/core/entities/consent/schema.d.ts +3 -0
  564. package/dist/core/entities/consent/schema.d.ts.map +1 -0
  565. package/dist/core/entities/consent/schema.mjs +40 -0
  566. package/dist/core/entities/consent/schema.mjs.map +1 -0
  567. package/dist/core/entities/consent/service.d.ts.map +1 -1
  568. package/dist/core/entities/consent/service.mjs +22 -6
  569. package/dist/core/entities/consent/service.mjs.map +1 -1
  570. package/dist/core/entities/consent/types.d.ts +3 -2
  571. package/dist/core/entities/consent/types.d.ts.map +1 -1
  572. package/dist/core/entities/consent/types.mjs +3 -3
  573. package/dist/core/entities/consent/types.mjs.map +1 -1
  574. package/dist/core/entities/event/diff.d.ts +4 -4
  575. package/dist/core/entities/event/diff.mjs +5 -5
  576. package/dist/core/entities/event/diff.mjs.map +1 -1
  577. package/dist/core/entities/event/entity-event-handler.d.ts.map +1 -1
  578. package/dist/core/entities/event/entity-event-handler.mjs +29 -31
  579. package/dist/core/entities/event/entity-event-handler.mjs.map +1 -1
  580. package/dist/core/entities/event/index.d.ts +1 -0
  581. package/dist/core/entities/event/index.d.ts.map +1 -1
  582. package/dist/core/entities/event/index.mjs +2 -1
  583. package/dist/core/entities/event/sanitize.mjs +8 -8
  584. package/dist/core/entities/event/sanitize.mjs.map +1 -1
  585. package/dist/core/entities/event/schema.d.ts +3 -0
  586. package/dist/core/entities/event/schema.d.ts.map +1 -0
  587. package/dist/core/entities/event/schema.mjs +51 -0
  588. package/dist/core/entities/event/schema.mjs.map +1 -0
  589. package/dist/core/entities/event/service.d.ts.map +1 -1
  590. package/dist/core/entities/event/service.mjs +38 -22
  591. package/dist/core/entities/event/service.mjs.map +1 -1
  592. package/dist/core/entities/event/types.d.ts +6 -5
  593. package/dist/core/entities/event/types.d.ts.map +1 -1
  594. package/dist/core/entities/identity-provider/index.d.ts +1 -0
  595. package/dist/core/entities/identity-provider/index.d.ts.map +1 -1
  596. package/dist/core/entities/identity-provider/index.mjs +2 -1
  597. package/dist/core/entities/identity-provider/schema.d.ts +3 -0
  598. package/dist/core/entities/identity-provider/schema.d.ts.map +1 -0
  599. package/dist/core/entities/identity-provider/schema.mjs +43 -0
  600. package/dist/core/entities/identity-provider/schema.mjs.map +1 -0
  601. package/dist/core/entities/identity-provider-role-mapping/index.d.ts +1 -0
  602. package/dist/core/entities/identity-provider-role-mapping/index.d.ts.map +1 -1
  603. package/dist/core/entities/identity-provider-role-mapping/index.mjs +2 -1
  604. package/dist/core/entities/identity-provider-role-mapping/schema.d.ts +3 -0
  605. package/dist/core/entities/identity-provider-role-mapping/schema.d.ts.map +1 -0
  606. package/dist/core/entities/identity-provider-role-mapping/schema.mjs +43 -0
  607. package/dist/core/entities/identity-provider-role-mapping/schema.mjs.map +1 -0
  608. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +1 -1
  609. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  610. package/dist/core/entities/identity-provider-role-mapping/service.mjs +17 -11
  611. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  612. package/dist/core/entities/index.d.ts +0 -3
  613. package/dist/core/entities/index.d.ts.map +1 -1
  614. package/dist/core/entities/index.mjs +26 -7
  615. package/dist/core/entities/key/index.d.ts +1 -0
  616. package/dist/core/entities/key/index.d.ts.map +1 -1
  617. package/dist/core/entities/key/index.mjs +2 -1
  618. package/dist/core/entities/key/schema.d.ts +3 -0
  619. package/dist/core/entities/key/schema.d.ts.map +1 -0
  620. package/dist/core/entities/key/schema.mjs +53 -0
  621. package/dist/core/entities/key/schema.mjs.map +1 -0
  622. package/dist/core/entities/key/service.d.ts +2 -2
  623. package/dist/core/entities/key/service.d.ts.map +1 -1
  624. package/dist/core/entities/key/service.mjs +47 -28
  625. package/dist/core/entities/key/service.mjs.map +1 -1
  626. package/dist/core/entities/key/types.d.ts +9 -1
  627. package/dist/core/entities/key/types.d.ts.map +1 -1
  628. package/dist/core/entities/permission/index.d.ts +1 -0
  629. package/dist/core/entities/permission/index.d.ts.map +1 -1
  630. package/dist/core/entities/permission/index.mjs +2 -1
  631. package/dist/core/entities/permission/schema.d.ts +3 -0
  632. package/dist/core/entities/permission/schema.d.ts.map +1 -0
  633. package/dist/core/entities/permission/schema.mjs +28 -0
  634. package/dist/core/entities/permission/schema.mjs.map +1 -0
  635. package/dist/core/entities/permission/service.d.ts +7 -2
  636. package/dist/core/entities/permission/service.d.ts.map +1 -1
  637. package/dist/core/entities/permission/service.mjs +53 -40
  638. package/dist/core/entities/permission/service.mjs.map +1 -1
  639. package/dist/core/entities/permission-policy/index.d.ts +1 -0
  640. package/dist/core/entities/permission-policy/index.d.ts.map +1 -1
  641. package/dist/core/entities/permission-policy/index.mjs +2 -1
  642. package/dist/core/entities/permission-policy/schema.d.ts +3 -0
  643. package/dist/core/entities/permission-policy/schema.d.ts.map +1 -0
  644. package/dist/core/entities/permission-policy/schema.mjs +39 -0
  645. package/dist/core/entities/permission-policy/schema.mjs.map +1 -0
  646. package/dist/core/entities/permission-policy/service.d.ts +1 -1
  647. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  648. package/dist/core/entities/permission-policy/service.mjs +12 -6
  649. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  650. package/dist/core/entities/policy/index.d.ts +1 -0
  651. package/dist/core/entities/policy/index.d.ts.map +1 -1
  652. package/dist/core/entities/policy/index.mjs +2 -1
  653. package/dist/core/entities/policy/schema.d.ts +3 -0
  654. package/dist/core/entities/policy/schema.d.ts.map +1 -0
  655. package/dist/core/entities/policy/schema.mjs +49 -0
  656. package/dist/core/entities/policy/schema.mjs.map +1 -0
  657. package/dist/core/entities/policy/service.d.ts.map +1 -1
  658. package/dist/core/entities/policy/service.mjs +13 -7
  659. package/dist/core/entities/policy/service.mjs.map +1 -1
  660. package/dist/core/entities/realm/index.d.ts +1 -0
  661. package/dist/core/entities/realm/index.d.ts.map +1 -1
  662. package/dist/core/entities/realm/index.mjs +2 -1
  663. package/dist/core/entities/realm/schema.d.ts +3 -0
  664. package/dist/core/entities/realm/schema.d.ts.map +1 -0
  665. package/dist/core/entities/realm/schema.mjs +36 -0
  666. package/dist/core/entities/realm/schema.mjs.map +1 -0
  667. package/dist/core/entities/realm/service.d.ts.map +1 -1
  668. package/dist/core/entities/realm/service.mjs +5 -2
  669. package/dist/core/entities/realm/service.mjs.map +1 -1
  670. package/dist/core/entities/realm/types.d.ts +1 -1
  671. package/dist/core/entities/role/index.d.ts +1 -0
  672. package/dist/core/entities/role/index.d.ts.map +1 -1
  673. package/dist/core/entities/role/index.mjs +2 -1
  674. package/dist/core/entities/role/schema.d.ts +3 -0
  675. package/dist/core/entities/role/schema.d.ts.map +1 -0
  676. package/dist/core/entities/role/schema.mjs +43 -0
  677. package/dist/core/entities/role/schema.mjs.map +1 -0
  678. package/dist/core/entities/role/service.d.ts.map +1 -1
  679. package/dist/core/entities/role/service.mjs +11 -5
  680. package/dist/core/entities/role/service.mjs.map +1 -1
  681. package/dist/core/entities/role-attribute/index.d.ts +1 -0
  682. package/dist/core/entities/role-attribute/index.d.ts.map +1 -1
  683. package/dist/core/entities/role-attribute/index.mjs +2 -1
  684. package/dist/core/entities/role-attribute/schema.d.ts +3 -0
  685. package/dist/core/entities/role-attribute/schema.d.ts.map +1 -0
  686. package/dist/core/entities/role-attribute/schema.mjs +47 -0
  687. package/dist/core/entities/role-attribute/schema.mjs.map +1 -0
  688. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  689. package/dist/core/entities/role-attribute/service.mjs +19 -6
  690. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  691. package/dist/core/entities/role-permission/index.d.ts +1 -0
  692. package/dist/core/entities/role-permission/index.d.ts.map +1 -1
  693. package/dist/core/entities/role-permission/index.mjs +2 -1
  694. package/dist/core/entities/role-permission/schema.d.ts +3 -0
  695. package/dist/core/entities/role-permission/schema.d.ts.map +1 -0
  696. package/dist/core/entities/role-permission/schema.mjs +41 -0
  697. package/dist/core/entities/role-permission/schema.mjs.map +1 -0
  698. package/dist/core/entities/role-permission/service.d.ts +1 -1
  699. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  700. package/dist/core/entities/role-permission/service.mjs +24 -18
  701. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  702. package/dist/core/entities/scope/index.d.ts +1 -0
  703. package/dist/core/entities/scope/index.d.ts.map +1 -1
  704. package/dist/core/entities/scope/index.mjs +2 -1
  705. package/dist/core/entities/scope/schema.d.ts +3 -0
  706. package/dist/core/entities/scope/schema.d.ts.map +1 -0
  707. package/dist/core/entities/scope/schema.mjs +43 -0
  708. package/dist/core/entities/scope/schema.mjs.map +1 -0
  709. package/dist/core/entities/scope/service.d.ts.map +1 -1
  710. package/dist/core/entities/scope/service.mjs +11 -5
  711. package/dist/core/entities/scope/service.mjs.map +1 -1
  712. package/dist/core/entities/session/index.d.ts +1 -0
  713. package/dist/core/entities/session/index.d.ts.map +1 -1
  714. package/dist/core/entities/session/index.mjs +2 -1
  715. package/dist/core/entities/session/schema.d.ts +3 -0
  716. package/dist/core/entities/session/schema.d.ts.map +1 -0
  717. package/dist/core/entities/session/schema.mjs +44 -0
  718. package/dist/core/entities/session/schema.mjs.map +1 -0
  719. package/dist/core/entities/session/service.d.ts +11 -0
  720. package/dist/core/entities/session/service.d.ts.map +1 -1
  721. package/dist/core/entities/session/service.mjs +48 -11
  722. package/dist/core/entities/session/service.mjs.map +1 -1
  723. package/dist/core/entities/session/types.d.ts +2 -2
  724. package/dist/core/entities/trust-anchor/index.d.ts +1 -0
  725. package/dist/core/entities/trust-anchor/index.d.ts.map +1 -1
  726. package/dist/core/entities/trust-anchor/index.mjs +2 -1
  727. package/dist/core/entities/trust-anchor/schema.d.ts +3 -0
  728. package/dist/core/entities/trust-anchor/schema.d.ts.map +1 -0
  729. package/dist/core/entities/trust-anchor/schema.mjs +43 -0
  730. package/dist/core/entities/trust-anchor/schema.mjs.map +1 -0
  731. package/dist/core/entities/trust-anchor/service.d.ts +2 -2
  732. package/dist/core/entities/trust-anchor/service.d.ts.map +1 -1
  733. package/dist/core/entities/trust-anchor/service.mjs +23 -7
  734. package/dist/core/entities/trust-anchor/service.mjs.map +1 -1
  735. package/dist/core/entities/trust-anchor/types.d.ts +9 -1
  736. package/dist/core/entities/trust-anchor/types.d.ts.map +1 -1
  737. package/dist/core/entities/user/index.d.ts +1 -0
  738. package/dist/core/entities/user/index.d.ts.map +1 -1
  739. package/dist/core/entities/user/index.mjs +2 -1
  740. package/dist/core/entities/user/schema.d.ts +3 -0
  741. package/dist/core/entities/user/schema.d.ts.map +1 -0
  742. package/dist/core/entities/user/schema.mjs +50 -0
  743. package/dist/core/entities/user/schema.mjs.map +1 -0
  744. package/dist/core/entities/user/service.d.ts.map +1 -1
  745. package/dist/core/entities/user/service.mjs +33 -12
  746. package/dist/core/entities/user/service.mjs.map +1 -1
  747. package/dist/core/entities/user/types.d.ts +2 -1
  748. package/dist/core/entities/user/types.d.ts.map +1 -1
  749. package/dist/core/entities/user-attribute/index.d.ts +1 -0
  750. package/dist/core/entities/user-attribute/index.d.ts.map +1 -1
  751. package/dist/core/entities/user-attribute/index.mjs +2 -1
  752. package/dist/core/entities/user-attribute/schema.d.ts +3 -0
  753. package/dist/core/entities/user-attribute/schema.d.ts.map +1 -0
  754. package/dist/core/entities/user-attribute/schema.mjs +47 -0
  755. package/dist/core/entities/user-attribute/schema.mjs.map +1 -0
  756. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  757. package/dist/core/entities/user-attribute/service.mjs +26 -10
  758. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  759. package/dist/core/entities/user-authenticator/index.d.ts +1 -0
  760. package/dist/core/entities/user-authenticator/index.d.ts.map +1 -1
  761. package/dist/core/entities/user-authenticator/index.mjs +2 -1
  762. package/dist/core/entities/user-authenticator/schema.d.ts +3 -0
  763. package/dist/core/entities/user-authenticator/schema.d.ts.map +1 -0
  764. package/dist/core/entities/user-authenticator/schema.mjs +47 -0
  765. package/dist/core/entities/user-authenticator/schema.mjs.map +1 -0
  766. package/dist/core/entities/user-authenticator/service.d.ts.map +1 -1
  767. package/dist/core/entities/user-authenticator/service.mjs +49 -27
  768. package/dist/core/entities/user-authenticator/service.mjs.map +1 -1
  769. package/dist/core/entities/user-authenticator/types.d.ts +4 -3
  770. package/dist/core/entities/user-authenticator/types.d.ts.map +1 -1
  771. package/dist/core/entities/user-authenticator/types.mjs +2 -2
  772. package/dist/core/entities/user-authenticator/types.mjs.map +1 -1
  773. package/dist/core/entities/user-permission/index.d.ts +1 -0
  774. package/dist/core/entities/user-permission/index.d.ts.map +1 -1
  775. package/dist/core/entities/user-permission/index.mjs +2 -1
  776. package/dist/core/entities/user-permission/schema.d.ts +3 -0
  777. package/dist/core/entities/user-permission/schema.d.ts.map +1 -0
  778. package/dist/core/entities/user-permission/schema.mjs +41 -0
  779. package/dist/core/entities/user-permission/schema.mjs.map +1 -0
  780. package/dist/core/entities/user-permission/service.d.ts +1 -1
  781. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  782. package/dist/core/entities/user-permission/service.mjs +24 -18
  783. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  784. package/dist/core/entities/user-role/index.d.ts +1 -0
  785. package/dist/core/entities/user-role/index.d.ts.map +1 -1
  786. package/dist/core/entities/user-role/index.mjs +2 -1
  787. package/dist/core/entities/user-role/schema.d.ts +3 -0
  788. package/dist/core/entities/user-role/schema.d.ts.map +1 -0
  789. package/dist/core/entities/user-role/schema.mjs +39 -0
  790. package/dist/core/entities/user-role/schema.mjs.map +1 -0
  791. package/dist/core/entities/user-role/service.d.ts +1 -1
  792. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  793. package/dist/core/entities/user-role/service.mjs +14 -8
  794. package/dist/core/entities/user-role/service.mjs.map +1 -1
  795. package/dist/core/identity/entities/index.d.ts +0 -1
  796. package/dist/core/identity/entities/index.d.ts.map +1 -1
  797. package/dist/core/identity/password-recovery/service.mjs +21 -21
  798. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  799. package/dist/core/identity/password-recovery/types.d.ts +2 -2
  800. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  801. package/dist/core/identity/permission/checker/service.mjs +2 -2
  802. package/dist/core/identity/permission/checker/service.mjs.map +1 -1
  803. package/dist/core/identity/permission/identity-policy-data.mjs +2 -2
  804. package/dist/core/identity/permission/identity-policy-data.mjs.map +1 -1
  805. package/dist/core/identity/permission/junction-grant.d.ts +6 -6
  806. package/dist/core/identity/permission/junction-grant.mjs +14 -14
  807. package/dist/core/identity/permission/junction-grant.mjs.map +1 -1
  808. package/dist/core/identity/permission/module.d.ts +0 -3
  809. package/dist/core/identity/permission/module.d.ts.map +1 -1
  810. package/dist/core/identity/permission/module.mjs +9 -15
  811. package/dist/core/identity/permission/module.mjs.map +1 -1
  812. package/dist/core/identity/permission/types.d.ts +0 -2
  813. package/dist/core/identity/permission/types.d.ts.map +1 -1
  814. package/dist/core/identity/policy/checker/service.mjs +1 -1
  815. package/dist/core/identity/policy/checker/service.mjs.map +1 -1
  816. package/dist/core/identity/provider/account/module.mjs +9 -9
  817. package/dist/core/identity/provider/account/module.mjs.map +1 -1
  818. package/dist/core/identity/provider/authentication/presets/facebook.mjs +5 -5
  819. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  820. package/dist/core/identity/provider/authentication/presets/github.mjs +3 -3
  821. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  822. package/dist/core/identity/provider/authentication/presets/google.mjs +5 -5
  823. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  824. package/dist/core/identity/provider/authentication/presets/instagram.mjs +3 -3
  825. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  826. package/dist/core/identity/provider/authentication/presets/paypal.mjs +3 -3
  827. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  828. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs +20 -20
  829. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs.map +1 -1
  830. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +5 -5
  831. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  832. package/dist/core/identity/provider/mapper/attributes/module.mjs +3 -3
  833. package/dist/core/identity/provider/mapper/attributes/module.mjs.map +1 -1
  834. package/dist/core/identity/provider/mapper/base.mjs +2 -2
  835. package/dist/core/identity/provider/mapper/base.mjs.map +1 -1
  836. package/dist/core/identity/provider/mapper/permission/module.mjs +2 -2
  837. package/dist/core/identity/provider/mapper/permission/module.mjs.map +1 -1
  838. package/dist/core/identity/provider/mapper/role/module.mjs +2 -2
  839. package/dist/core/identity/provider/mapper/role/module.mjs.map +1 -1
  840. package/dist/core/identity/registration/service.mjs +9 -9
  841. package/dist/core/identity/registration/service.mjs.map +1 -1
  842. package/dist/core/identity/resolver/module.d.ts +1 -3
  843. package/dist/core/identity/resolver/module.d.ts.map +1 -1
  844. package/dist/core/identity/resolver/module.mjs +0 -13
  845. package/dist/core/identity/resolver/module.mjs.map +1 -1
  846. package/dist/core/identity/resolver/types.d.ts +1 -2
  847. package/dist/core/identity/resolver/types.d.ts.map +1 -1
  848. package/dist/core/identity/role/module.d.ts +0 -2
  849. package/dist/core/identity/role/module.d.ts.map +1 -1
  850. package/dist/core/identity/role/module.mjs +1 -4
  851. package/dist/core/identity/role/module.mjs.map +1 -1
  852. package/dist/core/identity/role/types.d.ts +0 -2
  853. package/dist/core/identity/role/types.d.ts.map +1 -1
  854. package/dist/core/index.d.ts +1 -0
  855. package/dist/core/index.d.ts.map +1 -1
  856. package/dist/core/index.mjs +28 -9
  857. package/dist/core/key/realm-cipher.mjs +5 -5
  858. package/dist/core/key/realm-cipher.mjs.map +1 -1
  859. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +3 -3
  860. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  861. package/dist/core/oauth2/authorization/helpers.d.ts +2 -2
  862. package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
  863. package/dist/core/oauth2/authorization/helpers.mjs +5 -5
  864. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  865. package/dist/core/oauth2/authorization/module.mjs +8 -8
  866. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  867. package/dist/core/oauth2/client/authenticator.d.ts +1 -1
  868. package/dist/core/oauth2/client/authenticator.d.ts.map +1 -1
  869. package/dist/core/oauth2/client/authenticator.mjs +3 -3
  870. package/dist/core/oauth2/client/authenticator.mjs.map +1 -1
  871. package/dist/core/oauth2/client/grant-type.d.ts +1 -1
  872. package/dist/core/oauth2/client/grant-type.d.ts.map +1 -1
  873. package/dist/core/oauth2/client/grant-type.mjs +2 -2
  874. package/dist/core/oauth2/client/grant-type.mjs.map +1 -1
  875. package/dist/core/oauth2/end-session/service.mjs +5 -5
  876. package/dist/core/oauth2/end-session/service.mjs.map +1 -1
  877. package/dist/core/oauth2/grant-types/authorize.mjs +9 -9
  878. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  879. package/dist/core/oauth2/grant-types/client-credentials.mjs +7 -7
  880. package/dist/core/oauth2/grant-types/client-credentials.mjs.map +1 -1
  881. package/dist/core/oauth2/grant-types/identity.mjs +10 -10
  882. package/dist/core/oauth2/grant-types/identity.mjs.map +1 -1
  883. package/dist/core/oauth2/grant-types/index.d.ts +0 -1
  884. package/dist/core/oauth2/grant-types/index.d.ts.map +1 -1
  885. package/dist/core/oauth2/grant-types/index.mjs +1 -2
  886. package/dist/core/oauth2/grant-types/password.d.ts +1 -1
  887. package/dist/core/oauth2/grant-types/password.mjs +13 -13
  888. package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
  889. package/dist/core/oauth2/grant-types/refresh-token.mjs +12 -12
  890. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  891. package/dist/core/oauth2/index.mjs +1 -2
  892. package/dist/core/oauth2/mfa-login/module.mjs +21 -21
  893. package/dist/core/oauth2/mfa-login/module.mjs.map +1 -1
  894. package/dist/core/oauth2/mfa-login/types.d.ts +1 -1
  895. package/dist/core/oauth2/openid/claims.d.ts +1 -3
  896. package/dist/core/oauth2/openid/claims.d.ts.map +1 -1
  897. package/dist/core/oauth2/openid/claims.mjs +6 -19
  898. package/dist/core/oauth2/openid/claims.mjs.map +1 -1
  899. package/dist/core/oauth2/scope/resolver.d.ts +1 -3
  900. package/dist/core/oauth2/scope/resolver.d.ts.map +1 -1
  901. package/dist/core/oauth2/scope/resolver.mjs +9 -31
  902. package/dist/core/oauth2/scope/resolver.mjs.map +1 -1
  903. package/dist/core/oauth2/session-token/types.d.ts +8 -8
  904. package/dist/core/oauth2/session-token/types.d.ts.map +1 -1
  905. package/dist/core/oauth2/token/issuer/access/module.mjs +7 -7
  906. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  907. package/dist/core/oauth2/token/issuer/refresh/module.mjs +5 -5
  908. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  909. package/dist/core/oauth2/token/signer/module.mjs +6 -6
  910. package/dist/core/oauth2/token/signer/module.mjs.map +1 -1
  911. package/dist/core/oauth2/token/verifier/module.mjs +8 -8
  912. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  913. package/dist/core/provisioning/entities/index.d.ts +0 -1
  914. package/dist/core/provisioning/entities/index.d.ts.map +1 -1
  915. package/dist/core/provisioning/entities/index.mjs +1 -3
  916. package/dist/core/provisioning/entities/policy/validator.d.ts +2 -0
  917. package/dist/core/provisioning/entities/policy/validator.d.ts.map +1 -1
  918. package/dist/core/provisioning/entities/policy/validator.mjs +10 -1
  919. package/dist/core/provisioning/entities/policy/validator.mjs.map +1 -1
  920. package/dist/core/provisioning/entities/realm/relations-validator.d.ts.map +1 -1
  921. package/dist/core/provisioning/entities/realm/relations-validator.mjs +0 -4
  922. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  923. package/dist/core/provisioning/entities/realm/types.d.ts +0 -2
  924. package/dist/core/provisioning/entities/realm/types.d.ts.map +1 -1
  925. package/dist/core/provisioning/entities/role/types.d.ts +2 -2
  926. package/dist/core/provisioning/index.mjs +1 -3
  927. package/dist/core/provisioning/synchronizer/client/module.mjs +11 -11
  928. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  929. package/dist/core/provisioning/synchronizer/entity-resolver.mjs +12 -12
  930. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  931. package/dist/core/provisioning/synchronizer/index.d.ts +0 -1
  932. package/dist/core/provisioning/synchronizer/index.d.ts.map +1 -1
  933. package/dist/core/provisioning/synchronizer/index.mjs +1 -3
  934. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts +2 -2
  935. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts.map +1 -1
  936. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs +2 -2
  937. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs.map +1 -1
  938. package/dist/core/provisioning/synchronizer/permission/module.mjs +8 -8
  939. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  940. package/dist/core/provisioning/synchronizer/policy/module.mjs +11 -11
  941. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  942. package/dist/core/provisioning/synchronizer/realm/module.d.ts +0 -2
  943. package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
  944. package/dist/core/provisioning/synchronizer/realm/module.mjs +5 -15
  945. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  946. package/dist/core/provisioning/synchronizer/realm/types.d.ts +0 -2
  947. package/dist/core/provisioning/synchronizer/realm/types.d.ts.map +1 -1
  948. package/dist/core/provisioning/synchronizer/role/module.mjs +7 -7
  949. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  950. package/dist/core/provisioning/synchronizer/scope/module.mjs +1 -1
  951. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  952. package/dist/core/provisioning/synchronizer/user/module.mjs +13 -13
  953. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  954. package/dist/core/query/index.d.ts +4 -0
  955. package/dist/core/query/index.d.ts.map +1 -0
  956. package/dist/core/query/index.mjs +6 -0
  957. package/dist/core/query/module.d.ts +60 -0
  958. package/dist/core/query/module.d.ts.map +1 -0
  959. package/dist/core/query/module.mjs +128 -0
  960. package/dist/core/query/module.mjs.map +1 -0
  961. package/dist/core/query/relations.d.ts +39 -0
  962. package/dist/core/query/relations.d.ts.map +1 -0
  963. package/dist/core/query/relations.mjs +103 -0
  964. package/dist/core/query/relations.mjs.map +1 -0
  965. package/dist/core/query/types.d.ts +39 -0
  966. package/dist/core/query/types.d.ts.map +1 -0
  967. package/dist/core/security/policy/evaluator.d.ts +1 -0
  968. package/dist/core/security/policy/evaluator.d.ts.map +1 -1
  969. package/dist/core/security/policy/evaluator.mjs +52 -5
  970. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  971. package/dist/index.mjs +1 -17
  972. package/dist/swagger.json +2552 -3798
  973. package/dist/ui/client/.vite/ssr-manifest.json +1542 -894
  974. package/dist/ui/client/assets/{index-CT0Nq5pA.js → index-BmJ2X468.js} +21 -18
  975. package/dist/ui/client/assets/{index-BmWsoQro.css → index-DiOvW76Q.css} +1 -1
  976. package/dist/ui/client/index.html +2 -2
  977. package/dist/ui/server/server.js +9810 -3361
  978. package/package.json +27 -22
  979. package/dist/adapters/database/domains/robot/entity.d.ts +0 -19
  980. package/dist/adapters/database/domains/robot/entity.d.ts.map +0 -1
  981. package/dist/adapters/database/domains/robot/entity.mjs +0 -112
  982. package/dist/adapters/database/domains/robot/entity.mjs.map +0 -1
  983. package/dist/adapters/database/domains/robot/index.d.ts +0 -3
  984. package/dist/adapters/database/domains/robot/index.d.ts.map +0 -1
  985. package/dist/adapters/database/domains/robot/index.mjs +0 -6
  986. package/dist/adapters/database/domains/robot/subscriber.d.ts +0 -6
  987. package/dist/adapters/database/domains/robot/subscriber.d.ts.map +0 -1
  988. package/dist/adapters/database/domains/robot/subscriber.mjs +0 -42
  989. package/dist/adapters/database/domains/robot/subscriber.mjs.map +0 -1
  990. package/dist/adapters/database/domains/robot-permission/entity.d.ts +0 -18
  991. package/dist/adapters/database/domains/robot-permission/entity.d.ts.map +0 -1
  992. package/dist/adapters/database/domains/robot-permission/entity.mjs +0 -91
  993. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +0 -1
  994. package/dist/adapters/database/domains/robot-permission/index.d.ts +0 -3
  995. package/dist/adapters/database/domains/robot-permission/index.d.ts.map +0 -1
  996. package/dist/adapters/database/domains/robot-permission/index.mjs +0 -6
  997. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts +0 -6
  998. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts.map +0 -1
  999. package/dist/adapters/database/domains/robot-permission/subscriber.mjs +0 -45
  1000. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +0 -1
  1001. package/dist/adapters/database/domains/robot-role/entity.d.ts +0 -15
  1002. package/dist/adapters/database/domains/robot-role/entity.d.ts.map +0 -1
  1003. package/dist/adapters/database/domains/robot-role/entity.mjs +0 -72
  1004. package/dist/adapters/database/domains/robot-role/entity.mjs.map +0 -1
  1005. package/dist/adapters/database/domains/robot-role/index.d.ts +0 -3
  1006. package/dist/adapters/database/domains/robot-role/index.d.ts.map +0 -1
  1007. package/dist/adapters/database/domains/robot-role/index.mjs +0 -6
  1008. package/dist/adapters/database/domains/robot-role/subscriber.d.ts +0 -6
  1009. package/dist/adapters/database/domains/robot-role/subscriber.d.ts.map +0 -1
  1010. package/dist/adapters/database/domains/robot-role/subscriber.mjs +0 -45
  1011. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +0 -1
  1012. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts +0 -12
  1013. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts.map +0 -1
  1014. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs +0 -27
  1015. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +0 -1
  1016. package/dist/adapters/http/controllers/entities/robot/index.d.ts +0 -2
  1017. package/dist/adapters/http/controllers/entities/robot/index.d.ts.map +0 -1
  1018. package/dist/adapters/http/controllers/entities/robot/index.mjs +0 -5
  1019. package/dist/adapters/http/controllers/entities/robot/module.d.ts +0 -25
  1020. package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +0 -1
  1021. package/dist/adapters/http/controllers/entities/robot/module.mjs +0 -180
  1022. package/dist/adapters/http/controllers/entities/robot/module.mjs.map +0 -1
  1023. package/dist/adapters/http/controllers/entities/robot-permission/index.d.ts +0 -3
  1024. package/dist/adapters/http/controllers/entities/robot-permission/index.d.ts.map +0 -1
  1025. package/dist/adapters/http/controllers/entities/robot-permission/index.mjs +0 -7
  1026. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts +0 -17
  1027. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts.map +0 -1
  1028. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +0 -114
  1029. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +0 -1
  1030. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.d.ts +0 -2
  1031. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.d.ts.map +0 -1
  1032. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.mjs +0 -5
  1033. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.d.ts +0 -6
  1034. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.d.ts.map +0 -1
  1035. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs +0 -21
  1036. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs.map +0 -1
  1037. package/dist/adapters/http/controllers/entities/robot-role/index.d.ts +0 -3
  1038. package/dist/adapters/http/controllers/entities/robot-role/index.d.ts.map +0 -1
  1039. package/dist/adapters/http/controllers/entities/robot-role/index.mjs +0 -7
  1040. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts +0 -16
  1041. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts.map +0 -1
  1042. package/dist/adapters/http/controllers/entities/robot-role/module.mjs +0 -95
  1043. package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +0 -1
  1044. package/dist/adapters/http/controllers/entities/robot-role/utils/index.d.ts +0 -2
  1045. package/dist/adapters/http/controllers/entities/robot-role/utils/index.d.ts.map +0 -1
  1046. package/dist/adapters/http/controllers/entities/robot-role/utils/index.mjs +0 -5
  1047. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.d.ts +0 -6
  1048. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.d.ts.map +0 -1
  1049. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs +0 -20
  1050. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs.map +0 -1
  1051. package/dist/app/modules/database/repositories/robot/index.d.ts +0 -2
  1052. package/dist/app/modules/database/repositories/robot/index.d.ts.map +0 -1
  1053. package/dist/app/modules/database/repositories/robot/index.mjs +0 -5
  1054. package/dist/app/modules/database/repositories/robot/repository.d.ts +0 -31
  1055. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +0 -1
  1056. package/dist/app/modules/database/repositories/robot/repository.mjs +0 -190
  1057. package/dist/app/modules/database/repositories/robot/repository.mjs.map +0 -1
  1058. package/dist/app/modules/database/repositories/robot-permission/index.d.ts +0 -2
  1059. package/dist/app/modules/database/repositories/robot-permission/index.d.ts.map +0 -1
  1060. package/dist/app/modules/database/repositories/robot-permission/index.mjs +0 -5
  1061. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts +0 -20
  1062. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts.map +0 -1
  1063. package/dist/app/modules/database/repositories/robot-permission/repository.mjs +0 -79
  1064. package/dist/app/modules/database/repositories/robot-permission/repository.mjs.map +0 -1
  1065. package/dist/app/modules/database/repositories/robot-role/index.d.ts +0 -2
  1066. package/dist/app/modules/database/repositories/robot-role/index.d.ts.map +0 -1
  1067. package/dist/app/modules/database/repositories/robot-role/index.mjs +0 -5
  1068. package/dist/app/modules/database/repositories/robot-role/repository.d.ts +0 -20
  1069. package/dist/app/modules/database/repositories/robot-role/repository.d.ts.map +0 -1
  1070. package/dist/app/modules/database/repositories/robot-role/repository.mjs +0 -79
  1071. package/dist/app/modules/database/repositories/robot-role/repository.mjs.map +0 -1
  1072. package/dist/app/modules/identity/repositories/robot.d.ts +0 -13
  1073. package/dist/app/modules/identity/repositories/robot.d.ts.map +0 -1
  1074. package/dist/app/modules/identity/repositories/robot.mjs +0 -47
  1075. package/dist/app/modules/identity/repositories/robot.mjs.map +0 -1
  1076. package/dist/core/authentication/credential/entities/robot/index.d.ts +0 -2
  1077. package/dist/core/authentication/credential/entities/robot/index.d.ts.map +0 -1
  1078. package/dist/core/authentication/credential/entities/robot/index.mjs +0 -5
  1079. package/dist/core/authentication/credential/entities/robot/module.d.ts +0 -8
  1080. package/dist/core/authentication/credential/entities/robot/module.d.ts.map +0 -1
  1081. package/dist/core/authentication/credential/entities/robot/module.mjs +0 -22
  1082. package/dist/core/authentication/credential/entities/robot/module.mjs.map +0 -1
  1083. package/dist/core/authentication/entities/robot/index.d.ts +0 -2
  1084. package/dist/core/authentication/entities/robot/index.d.ts.map +0 -1
  1085. package/dist/core/authentication/entities/robot/index.mjs +0 -5
  1086. package/dist/core/authentication/entities/robot/module.d.ts +0 -11
  1087. package/dist/core/authentication/entities/robot/module.d.ts.map +0 -1
  1088. package/dist/core/authentication/entities/robot/module.mjs +0 -29
  1089. package/dist/core/authentication/entities/robot/module.mjs.map +0 -1
  1090. package/dist/core/entities/robot/index.d.ts +0 -3
  1091. package/dist/core/entities/robot/index.d.ts.map +0 -1
  1092. package/dist/core/entities/robot/index.mjs +0 -5
  1093. package/dist/core/entities/robot/service.d.ts +0 -28
  1094. package/dist/core/entities/robot/service.d.ts.map +0 -1
  1095. package/dist/core/entities/robot/service.mjs +0 -201
  1096. package/dist/core/entities/robot/service.mjs.map +0 -1
  1097. package/dist/core/entities/robot/types.d.ts +0 -24
  1098. package/dist/core/entities/robot/types.d.ts.map +0 -1
  1099. package/dist/core/entities/robot/types.mjs +0 -4
  1100. package/dist/core/entities/robot-permission/index.d.ts +0 -3
  1101. package/dist/core/entities/robot-permission/index.d.ts.map +0 -1
  1102. package/dist/core/entities/robot-permission/index.mjs +0 -5
  1103. package/dist/core/entities/robot-permission/service.d.ts +0 -25
  1104. package/dist/core/entities/robot-permission/service.d.ts.map +0 -1
  1105. package/dist/core/entities/robot-permission/service.mjs +0 -137
  1106. package/dist/core/entities/robot-permission/service.mjs.map +0 -1
  1107. package/dist/core/entities/robot-permission/types.d.ts +0 -12
  1108. package/dist/core/entities/robot-permission/types.d.ts.map +0 -1
  1109. package/dist/core/entities/robot-role/index.d.ts +0 -3
  1110. package/dist/core/entities/robot-role/index.d.ts.map +0 -1
  1111. package/dist/core/entities/robot-role/index.mjs +0 -5
  1112. package/dist/core/entities/robot-role/service.d.ts +0 -22
  1113. package/dist/core/entities/robot-role/service.d.ts.map +0 -1
  1114. package/dist/core/entities/robot-role/service.mjs +0 -90
  1115. package/dist/core/entities/robot-role/service.mjs.map +0 -1
  1116. package/dist/core/entities/robot-role/types.d.ts +0 -11
  1117. package/dist/core/entities/robot-role/types.d.ts.map +0 -1
  1118. package/dist/core/entities/robot-role/types.mjs +0 -4
  1119. package/dist/core/identity/entities/robot/index.d.ts +0 -2
  1120. package/dist/core/identity/entities/robot/index.d.ts.map +0 -1
  1121. package/dist/core/identity/entities/robot/types.d.ts +0 -8
  1122. package/dist/core/identity/entities/robot/types.d.ts.map +0 -1
  1123. package/dist/core/identity/entities/robot/types.mjs +0 -4
  1124. package/dist/core/oauth2/grant-types/robot-credentials.d.ts +0 -8
  1125. package/dist/core/oauth2/grant-types/robot-credentials.d.ts.map +0 -1
  1126. package/dist/core/oauth2/grant-types/robot-credentials.mjs +0 -39
  1127. package/dist/core/oauth2/grant-types/robot-credentials.mjs.map +0 -1
  1128. package/dist/core/provisioning/entities/robot/index.d.ts +0 -3
  1129. package/dist/core/provisioning/entities/robot/index.d.ts.map +0 -1
  1130. package/dist/core/provisioning/entities/robot/index.mjs +0 -5
  1131. package/dist/core/provisioning/entities/robot/relations-validator.d.ts +0 -6
  1132. package/dist/core/provisioning/entities/robot/relations-validator.d.ts.map +0 -1
  1133. package/dist/core/provisioning/entities/robot/relations-validator.mjs +0 -20
  1134. package/dist/core/provisioning/entities/robot/relations-validator.mjs.map +0 -1
  1135. package/dist/core/provisioning/entities/robot/types.d.ts +0 -25
  1136. package/dist/core/provisioning/entities/robot/types.d.ts.map +0 -1
  1137. package/dist/core/provisioning/entities/robot/types.mjs +0 -4
  1138. package/dist/core/provisioning/entities/robot/validator.d.ts +0 -6
  1139. package/dist/core/provisioning/entities/robot/validator.d.ts.map +0 -1
  1140. package/dist/core/provisioning/entities/robot/validator.mjs +0 -24
  1141. package/dist/core/provisioning/entities/robot/validator.mjs.map +0 -1
  1142. package/dist/core/provisioning/synchronizer/robot/index.d.ts +0 -3
  1143. package/dist/core/provisioning/synchronizer/robot/index.d.ts.map +0 -1
  1144. package/dist/core/provisioning/synchronizer/robot/index.mjs +0 -5
  1145. package/dist/core/provisioning/synchronizer/robot/module.d.ts +0 -17
  1146. package/dist/core/provisioning/synchronizer/robot/module.d.ts.map +0 -1
  1147. package/dist/core/provisioning/synchronizer/robot/module.mjs +0 -72
  1148. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +0 -1
  1149. package/dist/core/provisioning/synchronizer/robot/types.d.ts +0 -9
  1150. package/dist/core/provisioning/synchronizer/robot/types.d.ts.map +0 -1
  1151. package/dist/core/provisioning/synchronizer/robot/types.mjs +0 -4
  1152. /package/dist/core/{entities/robot-permission → query}/types.mjs +0 -0
@@ -1,4 +1,5 @@
1
1
  import type { Session } from '@authup/core-kit';
2
+ import type { IQuery } from '@rapiq/core';
2
3
  import type { EntityRepositoryFindManyResult } from '@authup/server-kit';
3
4
  export type SessionOwner = {
4
5
  sub: string;
@@ -9,7 +10,7 @@ export type SessionOwner = {
9
10
  * repository's rapiq `filters.allowed` and the service's "is this a targeted
10
11
  * bulk revoke?" discriminator, so the two can never drift.
11
12
  */
12
- export declare const SESSION_FILTER_KEYS: readonly ["id", "sub", "sub_kind", "user_id", "client_id", "robot_id", "realm_id"];
13
+ export declare const SESSION_FILTER_KEYS: readonly ["id", "sub", "subKind", "userId", "clientId", "realmId"];
13
14
  export type SessionFindManyOptions = {
14
15
  /**
15
16
  * Force the result to a single subject (self-service). Applied as a
@@ -19,7 +20,7 @@ export type SessionFindManyOptions = {
19
20
  };
20
21
  export interface ISessionRepository {
21
22
  findOneById(id: string): Promise<Session | null> | null;
22
- findMany(query: Record<string, any>, options?: SessionFindManyOptions): Promise<EntityRepositoryFindManyResult<Session>>;
23
+ findMany(query: IQuery, options?: SessionFindManyOptions): Promise<EntityRepositoryFindManyResult<Session>>;
23
24
  findAllByOwner(owner: SessionOwner): Promise<Session[]>;
24
25
  /**
25
26
  * Load EVERY session matching a rapiq query filter — **unbounded** (no
@@ -27,7 +28,7 @@ export interface ISessionRepository {
27
28
  * the admin "force-logout" path; per-session authorization is enforced by
28
29
  * the caller (`SessionService`).
29
30
  */
30
- findAllByQuery(query: Record<string, any>): Promise<Session[]>;
31
+ findAllByQuery(query: IQuery): Promise<Session[]>;
31
32
  save(session: Partial<Session>): Promise<Session>;
32
33
  removeById(id: string): Promise<void>;
33
34
  remove(session: Session): Promise<void>;
@@ -50,19 +51,19 @@ export interface ISessionManager {
50
51
  */
51
52
  create(session: Partial<Session>): Promise<Session>;
52
53
  /**
53
- * Updates seen_at with current time.
54
+ * Updates seenAt with current time.
54
55
  *
55
56
  * @param session
56
57
  */
57
58
  ping(session: Session): Promise<Session>;
58
59
  /**
59
- * Updates refreshed_at, seen_at with current time.
60
+ * Updates refreshedAt, seenAt with current time.
60
61
  *
61
62
  * @param session
62
63
  */
63
64
  refresh(session: Session): Promise<Session>;
64
65
  /**
65
- * Stamp a successful second-factor challenge (mfa_at) onto the session.
66
+ * Stamp a successful second-factor challenge (mfaAt) onto the session.
66
67
  *
67
68
  * @param session
68
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/authentication/session/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,oFAQtB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzH,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAExD;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/D,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/authentication/session/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,oEAOtB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5G,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAExD;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}
@@ -9,11 +9,10 @@ import.meta.url;
9
9
  */ const SESSION_FILTER_KEYS = [
10
10
  "id",
11
11
  "sub",
12
- "sub_kind",
13
- "user_id",
14
- "client_id",
15
- "robot_id",
16
- "realm_id"
12
+ "subKind",
13
+ "userId",
14
+ "clientId",
15
+ "realmId"
17
16
  ];
18
17
  //#endregion
19
18
  export { SESSION_FILTER_KEYS };
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":["SESSION_FILTER_KEYS"],"sources":["../../../../src/core/authentication/session/types.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { Session } from '@authup/core-kit';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\n\nexport type SessionOwner = {\n sub: string,\n subKind: string,\n};\n\n/**\n * Filter keys a session query (list + bulk revoke) may target. Shared by the\n * repository's rapiq `filters.allowed` and the service's \"is this a targeted\n * bulk revoke?\" discriminator, so the two can never drift.\n */\nexport const SESSION_FILTER_KEYS = [\n 'id',\n 'sub',\n 'sub_kind',\n 'user_id',\n 'client_id',\n 'robot_id',\n 'realm_id',\n] as const;\n\nexport type SessionFindManyOptions = {\n /**\n * Force the result to a single subject (self-service). Applied as a\n * mandatory WHERE that a rapiq query filter cannot override.\n */\n owner?: SessionOwner,\n};\n\nexport interface ISessionRepository {\n findOneById(id: string): Promise<Session | null> | null;\n\n findMany(query: Record<string, any>, options?: SessionFindManyOptions): Promise<EntityRepositoryFindManyResult<Session>>;\n\n findAllByOwner(owner: SessionOwner): Promise<Session[]>;\n\n /**\n * Load EVERY session matching a rapiq query filter — **unbounded** (no\n * pagination cap), because a bulk revoke must reach every match. Used by\n * the admin \"force-logout\" path; per-session authorization is enforced by\n * the caller (`SessionService`).\n */\n findAllByQuery(query: Record<string, any>): Promise<Session[]>;\n\n save(session: Partial<Session>): Promise<Session>;\n\n removeById(id: string): Promise<void>;\n\n remove(session: Session) : Promise<void>;\n}\n\nexport type SessionManagerOptions = {\n /**\n * Max age in seconds (sec).\n */\n maxAge: number\n};\n\nexport type SessionManagerContext = {\n options: SessionManagerOptions,\n repository: ISessionRepository,\n};\n\nexport interface ISessionManager {\n /**\n * Create new session.\n *\n * @param session\n */\n create(session: Partial<Session>): Promise<Session>;\n\n /**\n * Updates seen_at with current time.\n *\n * @param session\n */\n ping(session: Session) : Promise<Session>;\n\n /**\n * Updates refreshed_at, seen_at with current time.\n *\n * @param session\n */\n refresh(session: Session) : Promise<Session>;\n\n /**\n * Stamp a successful second-factor challenge (mfa_at) onto the session.\n *\n * @param session\n */\n markMfaVerified(session: Session) : Promise<Session>;\n\n /**\n * Check if session exists and is valid.\n *\n * @throws JWTError\n * @param session\n */\n verify(session: Session): Promise<void>;\n\n /**\n * Find session by id.\n *\n * @param id\n */\n findOneById(id: string): Promise<Session | null>;\n\n /**\n * Revoke (delete) a session by id, forcing re-authentication. Idempotent —\n * a no-op when the session does not exist.\n *\n * @param id\n */\n revoke(id: string): Promise<void>;\n}\n"],"mappings":";;;;;;;;GAoBA,MAAaA,sBAAsB;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA"}
1
+ {"version":3,"file":"types.mjs","names":["SESSION_FILTER_KEYS"],"sources":["../../../../src/core/authentication/session/types.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { Session } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\n\nexport type SessionOwner = {\n sub: string,\n subKind: string,\n};\n\n/**\n * Filter keys a session query (list + bulk revoke) may target. Shared by the\n * repository's rapiq `filters.allowed` and the service's \"is this a targeted\n * bulk revoke?\" discriminator, so the two can never drift.\n */\nexport const SESSION_FILTER_KEYS = [\n 'id',\n 'sub',\n 'subKind',\n 'userId',\n 'clientId',\n 'realmId',\n] as const;\n\nexport type SessionFindManyOptions = {\n /**\n * Force the result to a single subject (self-service). Applied as a\n * mandatory WHERE that a rapiq query filter cannot override.\n */\n owner?: SessionOwner,\n};\n\nexport interface ISessionRepository {\n findOneById(id: string): Promise<Session | null> | null;\n\n findMany(query: IQuery, options?: SessionFindManyOptions): Promise<EntityRepositoryFindManyResult<Session>>;\n\n findAllByOwner(owner: SessionOwner): Promise<Session[]>;\n\n /**\n * Load EVERY session matching a rapiq query filter — **unbounded** (no\n * pagination cap), because a bulk revoke must reach every match. Used by\n * the admin \"force-logout\" path; per-session authorization is enforced by\n * the caller (`SessionService`).\n */\n findAllByQuery(query: IQuery): Promise<Session[]>;\n\n save(session: Partial<Session>): Promise<Session>;\n\n removeById(id: string): Promise<void>;\n\n remove(session: Session) : Promise<void>;\n}\n\nexport type SessionManagerOptions = {\n /**\n * Max age in seconds (sec).\n */\n maxAge: number\n};\n\nexport type SessionManagerContext = {\n options: SessionManagerOptions,\n repository: ISessionRepository,\n};\n\nexport interface ISessionManager {\n /**\n * Create new session.\n *\n * @param session\n */\n create(session: Partial<Session>): Promise<Session>;\n\n /**\n * Updates seenAt with current time.\n *\n * @param session\n */\n ping(session: Session) : Promise<Session>;\n\n /**\n * Updates refreshedAt, seenAt with current time.\n *\n * @param session\n */\n refresh(session: Session) : Promise<Session>;\n\n /**\n * Stamp a successful second-factor challenge (mfaAt) onto the session.\n *\n * @param session\n */\n markMfaVerified(session: Session) : Promise<Session>;\n\n /**\n * Check if session exists and is valid.\n *\n * @throws JWTError\n * @param session\n */\n verify(session: Session): Promise<void>;\n\n /**\n * Find session by id.\n *\n * @param id\n */\n findOneById(id: string): Promise<Session | null>;\n\n /**\n * Revoke (delete) a session by id, forcing re-authentication. Idempotent —\n * a no-op when the session does not exist.\n *\n * @param id\n */\n revoke(id: string): Promise<void>;\n}\n"],"mappings":";;;;;;;;GAqBA,MAAaA,sBAAsB;CAC/B;CACA;CACA;CACA;CACA;CACA"}
@@ -1,3 +1,4 @@
1
+ import './reflect.ts';
1
2
  import { X509Certificate } from '@peculiar/x509';
2
3
  import type { Client } from '@authup/core-kit';
3
4
  import type { ClientCertificateEvidence, ClientCertificateValidatorContext, IClientCertificateValidator } from './types.ts';
@@ -10,7 +11,7 @@ export declare class ClientCertificateValidator implements IClientCertificateVal
10
11
  protected crypto?: Crypto;
11
12
  constructor(ctx: ClientCertificateValidatorContext);
12
13
  validateForBinding(evidence: ClientCertificateEvidence): void;
13
- validateForAuthentication(client: Pick<Client, 'id' | 'realm_id'>, evidence: ClientCertificateEvidence): Promise<void>;
14
+ validateForAuthentication(client: Pick<Client, 'id' | 'realmId'>, evidence: ClientCertificateEvidence): Promise<void>;
14
15
  }
15
16
  export declare function assertClientCertificateEvidenceValidForBinding(evidence: ClientCertificateEvidence): void;
16
17
  export declare function parseClientCertificateChain(pem: string): X509Certificate[];
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/core/client-certificate/module.ts"],"names":[],"mappings":"AAOA,OAAO,EAUH,eAAe,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AAO5D,OAAO,KAAK,EACR,yBAAyB,EACzB,iCAAiC,EACjC,2BAA2B,EAC9B,MAAM,YAAY,CAAC;AAuCpB;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,2BAA2B;IAC1E,SAAS,CAAC,qBAAqB,EAAE,iCAAiC,CAAC,uBAAuB,CAAC,CAAC;IAE5F,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEd,GAAG,EAAE,iCAAiC;IAKlD,kBAAkB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAIvD,yBAAyB,CAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC,EACvC,QAAQ,EAAE,yBAAyB,GACpC,OAAO,CAAC,IAAI,CAAC;CA0CnB;AAED,wBAAgB,8CAA8C,CAC1D,QAAQ,EAAE,yBAAyB,GACpC,IAAI,CAON;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAW1E;AAED,wBAAsB,gCAAgC,CAClD,WAAW,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/core/client-certificate/module.ts"],"names":[],"mappings":"AAOA,OAAO,cAAc,CAAC;AACtB,OAAO,EAUH,eAAe,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AAO5D,OAAO,KAAK,EACR,yBAAyB,EACzB,iCAAiC,EACjC,2BAA2B,EAC9B,MAAM,YAAY,CAAC;AAuCpB;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,2BAA2B;IAC1E,SAAS,CAAC,qBAAqB,EAAE,iCAAiC,CAAC,uBAAuB,CAAC,CAAC;IAE5F,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEd,GAAG,EAAE,iCAAiC;IAKlD,kBAAkB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAIvD,yBAAyB,CAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC,EACtC,QAAQ,EAAE,yBAAyB,GACpC,OAAO,CAAC,IAAI,CAAC;CA0CnB;AAED,wBAAgB,8CAA8C,CAC1D,QAAQ,EAAE,yBAAyB,GACpC,IAAI,CAON;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAW1E;AAED,wBAAsB,gCAAgC,CAClD,WAAW,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -1,6 +1,7 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import "./reflect.mjs";
4
5
  import { base64URLEncode } from "@authup/kit";
5
6
  import { CLIENT_CERTIFICATE_URI_PREFIX, buildClientCertificateURI } from "@authup/core-kit";
6
7
  import { ValidationError } from "@authup/errors";
@@ -58,7 +59,7 @@ const ANY_EXTENDED_KEY_USAGE_OID = "2.5.29.37.0";
58
59
  assertCertificateExtensionsUnderstood(evidence.certificate);
59
60
  assertStrongSignature(evidence.certificate);
60
61
  const anchors = await this.trustAnchorRepository.findManyBy({
61
- realm_id: client.realm_id,
62
+ realmId: client.realmId,
62
63
  enabled: true
63
64
  });
64
65
  for (const anchor of anchors) {
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["AuthorityKeyIdentifierExtension","BasicConstraintsExtension","ExtendedKeyUsage","ExtendedKeyUsageExtension","URL","GENERAL_NAME_URL","KeyUsageFlags","KeyUsagesExtension","SubjectAlternativeNameExtension","SubjectKeyIdentifierExtension","X509Certificate","CLIENT_CERTIFICATE_URI_PREFIX","buildClientCertificateURI","ValidationError","base64URLEncode","MAX_CHAIN_DEPTH","CERTIFICATE_BLOCK_PATTERN","MAX_PATH_SIGNATURE_VERIFICATIONS","HANDLED_CRITICAL_EXTENSION_OIDS","Set","WEAK_SIGNATURE_HASHES","ANY_EXTENDED_KEY_USAGE_OID","ClientCertificateValidator","trustAnchorRepository","crypto","ctx","validateForBinding","evidence","assertClientCertificateEvidenceValidForBinding","validateForAuthentication","client","assertClientCertificatePurpose","certificate","assertClientCertificateIdentity","id","assertCertificateExtensionsUnderstood","assertStrongSignature","anchors","findManyBy","realm_id","enabled","anchor","anchorCertificate","parseAnchorCertificate","budget","remaining","path","buildPath","chain","assertCertificationPath","assertCertificateCurrent","constraints","getExtension","ca","parseClientCertificateChain","pem","blocks","match","length","map","block","buildClientCertificateThumbprint","digest","getThumbprint","String","fromCharCode","Uint8Array","undefined","leaf","intermediates","continuePath","current","available","sameCertificate","isIssuedBy","index","candidate","next","filter","_item","candidateIndex","issuer","subject","authorityKeyIdentifier","keyId","subjectKeyIdentifier","verify","publicKey","signatureOnly","left","right","leftRaw","rawData","rightRaw","every","value","isAnchor","assertIssuerExtendedKeyUsage","keyUsage","usages","keyCertSign","pathLength","extendedKeyUsage","includes","clientAuth","digitalSignature","clientId","subjectAlternativeName","authupUris","names","items","name","type","startsWith","expected","now","Date","notBefore","getTime","notAfter","extension","extensions","critical","has","hash","signatureAlgorithm","toUpperCase"],"sources":["../../../src/core/client-certificate/module.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 AuthorityKeyIdentifierExtension,\n BasicConstraintsExtension,\n ExtendedKeyUsage,\n ExtendedKeyUsageExtension,\n URL as GENERAL_NAME_URL,\n KeyUsageFlags,\n KeyUsagesExtension,\n SubjectAlternativeNameExtension,\n SubjectKeyIdentifierExtension,\n X509Certificate,\n} from '@peculiar/x509';\nimport type { Client, TrustAnchor } from '@authup/core-kit';\nimport {\n CLIENT_CERTIFICATE_URI_PREFIX,\n buildClientCertificateURI,\n} from '@authup/core-kit';\nimport { ValidationError } from '@authup/errors';\nimport { base64URLEncode } from '@authup/kit';\nimport type {\n ClientCertificateEvidence,\n ClientCertificateValidatorContext,\n IClientCertificateValidator,\n} from './types.ts';\n\nconst MAX_CHAIN_DEPTH = 10;\nconst CERTIFICATE_BLOCK_PATTERN = /-----BEGIN CERTIFICATE-----[\\s\\S]*?-----END CERTIFICATE-----/g;\n\n/**\n * Hard ceiling on signature verifications performed while building a single\n * certification path. A legitimate chain of the maximum accepted length only\n * needs O(depth²) verifications; the ceiling exists purely to defuse the\n * factorial backtracking blow-up an attacker can induce with certificates\n * that mutually \"issue\" one another (shared key, identical subject/issuer\n * DNs). Reaching the ceiling is treated as \"no path found\" (fail closed).\n */\nconst MAX_PATH_SIGNATURE_VERIFICATIONS = 64;\n\n/**\n * OIDs of the certificate extensions this validator actually processes. A\n * certificate carrying a *critical* extension outside this set is rejected\n * (RFC 5280 §4.2): an unprocessed critical constraint must never be silently\n * ignored. Because RFC 5280 requires the NameConstraints extension to be\n * marked critical, this also fails a name-constrained CA closed rather than\n * trusting a chain whose name constraints we do not evaluate.\n */\nconst HANDLED_CRITICAL_EXTENSION_OIDS = new Set<string>([\n '2.5.29.19', // basicConstraints\n '2.5.29.15', // keyUsage\n '2.5.29.37', // extKeyUsage\n '2.5.29.17', // subjectAltName\n '2.5.29.35', // authorityKeyIdentifier\n '2.5.29.14', // subjectKeyIdentifier\n]);\n\nconst WEAK_SIGNATURE_HASHES = new Set<string>(['SHA-1', 'MD5', 'MD2', 'MD4']);\n\n// anyExtendedKeyUsage (RFC 5280 §4.2.1.12) — a CA carrying it is unconstrained.\nconst ANY_EXTENDED_KEY_USAGE_OID = '2.5.29.37.0';\n\ntype SignatureVerificationBudget = { remaining: number };\n\n/**\n * Validates client certificates without performing network I/O. AIA, CRL,\n * and OCSP retrieval are deliberately outside the external-PKI first slice.\n */\nexport class ClientCertificateValidator implements IClientCertificateValidator {\n protected trustAnchorRepository: ClientCertificateValidatorContext['trustAnchorRepository'];\n\n protected crypto?: Crypto;\n\n constructor(ctx: ClientCertificateValidatorContext) {\n this.trustAnchorRepository = ctx.trustAnchorRepository;\n this.crypto = ctx.crypto;\n }\n\n validateForBinding(evidence: ClientCertificateEvidence): void {\n assertClientCertificateEvidenceValidForBinding(evidence);\n }\n\n async validateForAuthentication(\n client: Pick<Client, 'id' | 'realm_id'>,\n evidence: ClientCertificateEvidence,\n ): Promise<void> {\n this.validateForBinding(evidence);\n assertClientCertificatePurpose(evidence.certificate);\n assertClientCertificateIdentity(evidence.certificate, client.id);\n assertCertificateExtensionsUnderstood(evidence.certificate);\n assertStrongSignature(evidence.certificate);\n\n const anchors = await this.trustAnchorRepository.findManyBy({\n realm_id: client.realm_id,\n enabled: true,\n });\n\n for (const anchor of anchors) {\n const anchorCertificate = parseAnchorCertificate(anchor);\n if (!anchorCertificate) {\n continue;\n }\n\n const budget: SignatureVerificationBudget = { remaining: MAX_PATH_SIGNATURE_VERIFICATIONS };\n const path = await buildPath(\n evidence.certificate,\n evidence.chain,\n anchorCertificate,\n budget,\n this.crypto,\n );\n if (!path) {\n continue;\n }\n\n try {\n assertCertificationPath(path);\n return;\n } catch {\n // A chain reaching this anchor failed its CA constraints;\n // another enabled anchor may still yield a valid path.\n continue;\n }\n }\n\n throw new ValidationError('The client certificate is not trusted in this realm.');\n }\n}\n\nexport function assertClientCertificateEvidenceValidForBinding(\n evidence: ClientCertificateEvidence,\n): void {\n assertCertificateCurrent(evidence.certificate);\n\n const constraints = evidence.certificate.getExtension(BasicConstraintsExtension);\n if (constraints?.ca) {\n throw new ValidationError('A CA certificate cannot be used as a client certificate.');\n }\n}\n\nexport function parseClientCertificateChain(pem: string): X509Certificate[] {\n const blocks = pem.match(CERTIFICATE_BLOCK_PATTERN);\n if (!blocks || blocks.length === 0) {\n throw new ValidationError('The certificate chain could not be parsed.');\n }\n\n try {\n return blocks.map((block) => new X509Certificate(block));\n } catch {\n throw new ValidationError('The certificate chain could not be parsed.');\n }\n}\n\nexport async function buildClientCertificateThumbprint(\n certificate: X509Certificate,\n crypto?: Crypto,\n): Promise<string> {\n const digest = await certificate.getThumbprint('SHA-256', crypto);\n\n return base64URLEncode(\n String.fromCharCode(...new Uint8Array(digest)),\n );\n}\n\nfunction parseAnchorCertificate(anchor: TrustAnchor): X509Certificate | undefined {\n try {\n return parseClientCertificateChain(anchor.certificate)[0];\n } catch {\n // Rows are validated on create. Treat a corrupt legacy/database row as\n // unusable trust material instead of turning client authentication into\n // a 500 or accidentally trusting another certificate in its PEM chain.\n return undefined;\n }\n}\n\nasync function buildPath(\n leaf: X509Certificate,\n intermediates: X509Certificate[],\n anchor: X509Certificate,\n budget: SignatureVerificationBudget,\n crypto?: Crypto,\n): Promise<X509Certificate[] | undefined> {\n return continuePath(leaf, intermediates, anchor, [leaf], budget, crypto);\n}\n\nasync function continuePath(\n current: X509Certificate,\n available: X509Certificate[],\n anchor: X509Certificate,\n path: X509Certificate[],\n budget: SignatureVerificationBudget,\n crypto?: Crypto,\n): Promise<X509Certificate[] | undefined> {\n if (path.length > MAX_CHAIN_DEPTH) {\n return undefined;\n }\n\n if (sameCertificate(current, anchor)) {\n return path;\n }\n\n if (await isIssuedBy(current, anchor, budget, crypto)) {\n return [...path, anchor];\n }\n\n for (let index = 0; index < available.length; index += 1) {\n const candidate = available[index];\n if (\n !candidate ||\n sameCertificate(current, candidate) ||\n !await isIssuedBy(current, candidate, budget, crypto)\n ) {\n continue;\n }\n\n const next = await continuePath(\n candidate,\n available.filter((_item, candidateIndex) => candidateIndex !== index),\n anchor,\n [...path, candidate],\n budget,\n crypto,\n );\n if (next) {\n return next;\n }\n }\n\n return undefined;\n}\n\nasync function isIssuedBy(\n certificate: X509Certificate,\n issuer: X509Certificate,\n budget: SignatureVerificationBudget,\n crypto?: Crypto,\n): Promise<boolean> {\n if (certificate.issuer !== issuer.subject) {\n return false;\n }\n\n const authorityKeyIdentifier = certificate.getExtension(AuthorityKeyIdentifierExtension);\n if (authorityKeyIdentifier?.keyId) {\n const subjectKeyIdentifier = issuer.getExtension(SubjectKeyIdentifierExtension);\n if (subjectKeyIdentifier && subjectKeyIdentifier.keyId !== authorityKeyIdentifier.keyId) {\n return false;\n }\n }\n\n // Spend from the shared verification budget only for the expensive\n // cryptographic check (the DN / key-id pre-filters above are cheap). Once\n // exhausted, treat every further edge as unverified so a maliciously\n // crafted mutually-issuing certificate set cannot force factorial work.\n if (budget.remaining <= 0) {\n return false;\n }\n budget.remaining -= 1;\n\n try {\n return await certificate.verify({\n publicKey: issuer,\n signatureOnly: true,\n }, crypto);\n } catch {\n return false;\n }\n}\n\nfunction sameCertificate(left: X509Certificate, right: X509Certificate): boolean {\n const leftRaw = new Uint8Array(left.rawData);\n const rightRaw = new Uint8Array(right.rawData);\n\n return leftRaw.length === rightRaw.length &&\n leftRaw.every((value, index) => value === rightRaw[index]);\n}\n\nfunction assertCertificationPath(path: X509Certificate[]): void {\n if (path.length < 2) {\n throw new ValidationError('The client certificate chain is invalid.');\n }\n\n for (let index = 1; index < path.length; index += 1) {\n const certificate = path[index];\n if (!certificate) {\n throw new ValidationError('The client certificate chain is invalid.');\n }\n\n // The last path element is the configured trust anchor, trusted a\n // priori — its self-signature algorithm and any critical extensions\n // it carries are the operator's responsibility, so the RFC 5280\n // conformance checks below apply only to the issued intermediates.\n const isAnchor = index === path.length - 1;\n if (!isAnchor) {\n assertCertificateExtensionsUnderstood(certificate);\n assertStrongSignature(certificate);\n assertIssuerExtendedKeyUsage(certificate);\n }\n\n assertCertificateCurrent(certificate);\n const constraints = certificate.getExtension(BasicConstraintsExtension);\n if (!constraints?.ca) {\n throw new ValidationError('The client certificate chain contains a non-CA issuer.');\n }\n\n const keyUsage = certificate.getExtension(KeyUsagesExtension);\n if (keyUsage && (keyUsage.usages & KeyUsageFlags.keyCertSign) === 0) {\n throw new ValidationError('A client certificate issuer cannot sign certificates.');\n }\n\n // `index - 1` is the number of non-leaf CA certificates below this\n // issuer in the selected path. A pathLenConstraint of zero therefore\n // permits a directly-issued client leaf and no subordinate CA.\n if (\n typeof constraints.pathLength === 'number' &&\n (index - 1) > constraints.pathLength\n ) {\n throw new ValidationError('The client certificate chain exceeds a CA path-length constraint.');\n }\n }\n}\n\nfunction assertClientCertificatePurpose(certificate: X509Certificate): void {\n const extendedKeyUsage = certificate.getExtension(ExtendedKeyUsageExtension);\n if (\n extendedKeyUsage &&\n !extendedKeyUsage.usages.includes(ExtendedKeyUsage.clientAuth)\n ) {\n throw new ValidationError('The certificate is not valid for TLS client authentication.');\n }\n\n const keyUsage = certificate.getExtension(KeyUsagesExtension);\n if (keyUsage && (keyUsage.usages & KeyUsageFlags.digitalSignature) === 0) {\n throw new ValidationError('The certificate cannot prove possession of its private key.');\n }\n}\n\n/**\n * EKU chaining (RFC 5280 §4.2.1.12): a CA whose Extended Key Usage is present\n * but omits both `clientAuth` and `anyExtendedKeyUsage` is not permitted to\n * issue TLS-client-authentication certificates, so a leaf beneath it must be\n * rejected. (A CA's EKU may be non-critical, so the critical-extension check\n * does not cover this.) A CA with no EKU extension is unconstrained.\n */\nfunction assertIssuerExtendedKeyUsage(certificate: X509Certificate): void {\n const extendedKeyUsage = certificate.getExtension(ExtendedKeyUsageExtension);\n if (\n extendedKeyUsage &&\n !extendedKeyUsage.usages.includes(ExtendedKeyUsage.clientAuth) &&\n !extendedKeyUsage.usages.includes(ANY_EXTENDED_KEY_USAGE_OID)\n ) {\n throw new ValidationError('A client certificate issuer is not permitted to issue TLS client-authentication certificates.');\n }\n}\n\nfunction assertClientCertificateIdentity(certificate: X509Certificate, clientId: string): void {\n const subjectAlternativeName = certificate.getExtension(SubjectAlternativeNameExtension);\n const authupUris = subjectAlternativeName ?\n subjectAlternativeName.names.items\n .filter((name) => name.type === GENERAL_NAME_URL)\n .map((name) => name.value)\n .filter((value) => value.startsWith(CLIENT_CERTIFICATE_URI_PREFIX)) :\n [];\n\n const expected = buildClientCertificateURI(clientId);\n if (authupUris.length !== 1 || authupUris[0] !== expected) {\n throw new ValidationError(`The certificate must contain exactly one Authup client URI SAN: ${expected}.`);\n }\n}\n\nfunction assertCertificateCurrent(certificate: X509Certificate): void {\n const now = Date.now();\n if (\n certificate.notBefore.getTime() > now ||\n certificate.notAfter.getTime() < now\n ) {\n throw new ValidationError('The client certificate is not currently valid.');\n }\n}\n\nfunction assertCertificateExtensionsUnderstood(certificate: X509Certificate): void {\n for (const extension of certificate.extensions) {\n if (extension.critical && !HANDLED_CRITICAL_EXTENSION_OIDS.has(extension.type)) {\n throw new ValidationError(\n `The certificate carries an unsupported critical extension (${extension.type}).`,\n );\n }\n }\n}\n\nfunction assertStrongSignature(certificate: X509Certificate): void {\n const hash = certificate.signatureAlgorithm?.hash?.name;\n if (typeof hash === 'string' && WEAK_SIGNATURE_HASHES.has(hash.toUpperCase())) {\n throw new ValidationError(`The certificate is signed with a weak algorithm (${hash}).`);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["AuthorityKeyIdentifierExtension","BasicConstraintsExtension","ExtendedKeyUsage","ExtendedKeyUsageExtension","URL","GENERAL_NAME_URL","KeyUsageFlags","KeyUsagesExtension","SubjectAlternativeNameExtension","SubjectKeyIdentifierExtension","X509Certificate","CLIENT_CERTIFICATE_URI_PREFIX","buildClientCertificateURI","ValidationError","base64URLEncode","MAX_CHAIN_DEPTH","CERTIFICATE_BLOCK_PATTERN","MAX_PATH_SIGNATURE_VERIFICATIONS","HANDLED_CRITICAL_EXTENSION_OIDS","Set","WEAK_SIGNATURE_HASHES","ANY_EXTENDED_KEY_USAGE_OID","ClientCertificateValidator","trustAnchorRepository","crypto","ctx","validateForBinding","evidence","assertClientCertificateEvidenceValidForBinding","validateForAuthentication","client","assertClientCertificatePurpose","certificate","assertClientCertificateIdentity","id","assertCertificateExtensionsUnderstood","assertStrongSignature","anchors","findManyBy","realmId","enabled","anchor","anchorCertificate","parseAnchorCertificate","budget","remaining","path","buildPath","chain","assertCertificationPath","assertCertificateCurrent","constraints","getExtension","ca","parseClientCertificateChain","pem","blocks","match","length","map","block","buildClientCertificateThumbprint","digest","getThumbprint","String","fromCharCode","Uint8Array","undefined","leaf","intermediates","continuePath","current","available","sameCertificate","isIssuedBy","index","candidate","next","filter","_item","candidateIndex","issuer","subject","authorityKeyIdentifier","keyId","subjectKeyIdentifier","verify","publicKey","signatureOnly","left","right","leftRaw","rawData","rightRaw","every","value","isAnchor","assertIssuerExtendedKeyUsage","keyUsage","usages","keyCertSign","pathLength","extendedKeyUsage","includes","clientAuth","digitalSignature","clientId","subjectAlternativeName","authupUris","names","items","name","type","startsWith","expected","now","Date","notBefore","getTime","notAfter","extension","extensions","critical","has","hash","signatureAlgorithm","toUpperCase"],"sources":["../../../src/core/client-certificate/module.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 './reflect.ts';\nimport {\n AuthorityKeyIdentifierExtension,\n BasicConstraintsExtension,\n ExtendedKeyUsage,\n ExtendedKeyUsageExtension,\n URL as GENERAL_NAME_URL,\n KeyUsageFlags,\n KeyUsagesExtension,\n SubjectAlternativeNameExtension,\n SubjectKeyIdentifierExtension,\n X509Certificate,\n} from '@peculiar/x509';\nimport type { Client, TrustAnchor } from '@authup/core-kit';\nimport {\n CLIENT_CERTIFICATE_URI_PREFIX,\n buildClientCertificateURI,\n} from '@authup/core-kit';\nimport { ValidationError } from '@authup/errors';\nimport { base64URLEncode } from '@authup/kit';\nimport type {\n ClientCertificateEvidence,\n ClientCertificateValidatorContext,\n IClientCertificateValidator,\n} from './types.ts';\n\nconst MAX_CHAIN_DEPTH = 10;\nconst CERTIFICATE_BLOCK_PATTERN = /-----BEGIN CERTIFICATE-----[\\s\\S]*?-----END CERTIFICATE-----/g;\n\n/**\n * Hard ceiling on signature verifications performed while building a single\n * certification path. A legitimate chain of the maximum accepted length only\n * needs O(depth²) verifications; the ceiling exists purely to defuse the\n * factorial backtracking blow-up an attacker can induce with certificates\n * that mutually \"issue\" one another (shared key, identical subject/issuer\n * DNs). Reaching the ceiling is treated as \"no path found\" (fail closed).\n */\nconst MAX_PATH_SIGNATURE_VERIFICATIONS = 64;\n\n/**\n * OIDs of the certificate extensions this validator actually processes. A\n * certificate carrying a *critical* extension outside this set is rejected\n * (RFC 5280 §4.2): an unprocessed critical constraint must never be silently\n * ignored. Because RFC 5280 requires the NameConstraints extension to be\n * marked critical, this also fails a name-constrained CA closed rather than\n * trusting a chain whose name constraints we do not evaluate.\n */\nconst HANDLED_CRITICAL_EXTENSION_OIDS = new Set<string>([\n '2.5.29.19', // basicConstraints\n '2.5.29.15', // keyUsage\n '2.5.29.37', // extKeyUsage\n '2.5.29.17', // subjectAltName\n '2.5.29.35', // authorityKeyIdentifier\n '2.5.29.14', // subjectKeyIdentifier\n]);\n\nconst WEAK_SIGNATURE_HASHES = new Set<string>(['SHA-1', 'MD5', 'MD2', 'MD4']);\n\n// anyExtendedKeyUsage (RFC 5280 §4.2.1.12) — a CA carrying it is unconstrained.\nconst ANY_EXTENDED_KEY_USAGE_OID = '2.5.29.37.0';\n\ntype SignatureVerificationBudget = { remaining: number };\n\n/**\n * Validates client certificates without performing network I/O. AIA, CRL,\n * and OCSP retrieval are deliberately outside the external-PKI first slice.\n */\nexport class ClientCertificateValidator implements IClientCertificateValidator {\n protected trustAnchorRepository: ClientCertificateValidatorContext['trustAnchorRepository'];\n\n protected crypto?: Crypto;\n\n constructor(ctx: ClientCertificateValidatorContext) {\n this.trustAnchorRepository = ctx.trustAnchorRepository;\n this.crypto = ctx.crypto;\n }\n\n validateForBinding(evidence: ClientCertificateEvidence): void {\n assertClientCertificateEvidenceValidForBinding(evidence);\n }\n\n async validateForAuthentication(\n client: Pick<Client, 'id' | 'realmId'>,\n evidence: ClientCertificateEvidence,\n ): Promise<void> {\n this.validateForBinding(evidence);\n assertClientCertificatePurpose(evidence.certificate);\n assertClientCertificateIdentity(evidence.certificate, client.id);\n assertCertificateExtensionsUnderstood(evidence.certificate);\n assertStrongSignature(evidence.certificate);\n\n const anchors = await this.trustAnchorRepository.findManyBy({\n realmId: client.realmId,\n enabled: true,\n });\n\n for (const anchor of anchors) {\n const anchorCertificate = parseAnchorCertificate(anchor);\n if (!anchorCertificate) {\n continue;\n }\n\n const budget: SignatureVerificationBudget = { remaining: MAX_PATH_SIGNATURE_VERIFICATIONS };\n const path = await buildPath(\n evidence.certificate,\n evidence.chain,\n anchorCertificate,\n budget,\n this.crypto,\n );\n if (!path) {\n continue;\n }\n\n try {\n assertCertificationPath(path);\n return;\n } catch {\n // A chain reaching this anchor failed its CA constraints;\n // another enabled anchor may still yield a valid path.\n continue;\n }\n }\n\n throw new ValidationError('The client certificate is not trusted in this realm.');\n }\n}\n\nexport function assertClientCertificateEvidenceValidForBinding(\n evidence: ClientCertificateEvidence,\n): void {\n assertCertificateCurrent(evidence.certificate);\n\n const constraints = evidence.certificate.getExtension(BasicConstraintsExtension);\n if (constraints?.ca) {\n throw new ValidationError('A CA certificate cannot be used as a client certificate.');\n }\n}\n\nexport function parseClientCertificateChain(pem: string): X509Certificate[] {\n const blocks = pem.match(CERTIFICATE_BLOCK_PATTERN);\n if (!blocks || blocks.length === 0) {\n throw new ValidationError('The certificate chain could not be parsed.');\n }\n\n try {\n return blocks.map((block) => new X509Certificate(block));\n } catch {\n throw new ValidationError('The certificate chain could not be parsed.');\n }\n}\n\nexport async function buildClientCertificateThumbprint(\n certificate: X509Certificate,\n crypto?: Crypto,\n): Promise<string> {\n const digest = await certificate.getThumbprint('SHA-256', crypto);\n\n return base64URLEncode(\n String.fromCharCode(...new Uint8Array(digest)),\n );\n}\n\nfunction parseAnchorCertificate(anchor: TrustAnchor): X509Certificate | undefined {\n try {\n return parseClientCertificateChain(anchor.certificate)[0];\n } catch {\n // Rows are validated on create. Treat a corrupt legacy/database row as\n // unusable trust material instead of turning client authentication into\n // a 500 or accidentally trusting another certificate in its PEM chain.\n return undefined;\n }\n}\n\nasync function buildPath(\n leaf: X509Certificate,\n intermediates: X509Certificate[],\n anchor: X509Certificate,\n budget: SignatureVerificationBudget,\n crypto?: Crypto,\n): Promise<X509Certificate[] | undefined> {\n return continuePath(leaf, intermediates, anchor, [leaf], budget, crypto);\n}\n\nasync function continuePath(\n current: X509Certificate,\n available: X509Certificate[],\n anchor: X509Certificate,\n path: X509Certificate[],\n budget: SignatureVerificationBudget,\n crypto?: Crypto,\n): Promise<X509Certificate[] | undefined> {\n if (path.length > MAX_CHAIN_DEPTH) {\n return undefined;\n }\n\n if (sameCertificate(current, anchor)) {\n return path;\n }\n\n if (await isIssuedBy(current, anchor, budget, crypto)) {\n return [...path, anchor];\n }\n\n for (let index = 0; index < available.length; index += 1) {\n const candidate = available[index];\n if (\n !candidate ||\n sameCertificate(current, candidate) ||\n !await isIssuedBy(current, candidate, budget, crypto)\n ) {\n continue;\n }\n\n const next = await continuePath(\n candidate,\n available.filter((_item, candidateIndex) => candidateIndex !== index),\n anchor,\n [...path, candidate],\n budget,\n crypto,\n );\n if (next) {\n return next;\n }\n }\n\n return undefined;\n}\n\nasync function isIssuedBy(\n certificate: X509Certificate,\n issuer: X509Certificate,\n budget: SignatureVerificationBudget,\n crypto?: Crypto,\n): Promise<boolean> {\n if (certificate.issuer !== issuer.subject) {\n return false;\n }\n\n const authorityKeyIdentifier = certificate.getExtension(AuthorityKeyIdentifierExtension);\n if (authorityKeyIdentifier?.keyId) {\n const subjectKeyIdentifier = issuer.getExtension(SubjectKeyIdentifierExtension);\n if (subjectKeyIdentifier && subjectKeyIdentifier.keyId !== authorityKeyIdentifier.keyId) {\n return false;\n }\n }\n\n // Spend from the shared verification budget only for the expensive\n // cryptographic check (the DN / key-id pre-filters above are cheap). Once\n // exhausted, treat every further edge as unverified so a maliciously\n // crafted mutually-issuing certificate set cannot force factorial work.\n if (budget.remaining <= 0) {\n return false;\n }\n budget.remaining -= 1;\n\n try {\n return await certificate.verify({\n publicKey: issuer,\n signatureOnly: true,\n }, crypto);\n } catch {\n return false;\n }\n}\n\nfunction sameCertificate(left: X509Certificate, right: X509Certificate): boolean {\n const leftRaw = new Uint8Array(left.rawData);\n const rightRaw = new Uint8Array(right.rawData);\n\n return leftRaw.length === rightRaw.length &&\n leftRaw.every((value, index) => value === rightRaw[index]);\n}\n\nfunction assertCertificationPath(path: X509Certificate[]): void {\n if (path.length < 2) {\n throw new ValidationError('The client certificate chain is invalid.');\n }\n\n for (let index = 1; index < path.length; index += 1) {\n const certificate = path[index];\n if (!certificate) {\n throw new ValidationError('The client certificate chain is invalid.');\n }\n\n // The last path element is the configured trust anchor, trusted a\n // priori — its self-signature algorithm and any critical extensions\n // it carries are the operator's responsibility, so the RFC 5280\n // conformance checks below apply only to the issued intermediates.\n const isAnchor = index === path.length - 1;\n if (!isAnchor) {\n assertCertificateExtensionsUnderstood(certificate);\n assertStrongSignature(certificate);\n assertIssuerExtendedKeyUsage(certificate);\n }\n\n assertCertificateCurrent(certificate);\n const constraints = certificate.getExtension(BasicConstraintsExtension);\n if (!constraints?.ca) {\n throw new ValidationError('The client certificate chain contains a non-CA issuer.');\n }\n\n const keyUsage = certificate.getExtension(KeyUsagesExtension);\n if (keyUsage && (keyUsage.usages & KeyUsageFlags.keyCertSign) === 0) {\n throw new ValidationError('A client certificate issuer cannot sign certificates.');\n }\n\n // `index - 1` is the number of non-leaf CA certificates below this\n // issuer in the selected path. A pathLenConstraint of zero therefore\n // permits a directly-issued client leaf and no subordinate CA.\n if (\n typeof constraints.pathLength === 'number' &&\n (index - 1) > constraints.pathLength\n ) {\n throw new ValidationError('The client certificate chain exceeds a CA path-length constraint.');\n }\n }\n}\n\nfunction assertClientCertificatePurpose(certificate: X509Certificate): void {\n const extendedKeyUsage = certificate.getExtension(ExtendedKeyUsageExtension);\n if (\n extendedKeyUsage &&\n !extendedKeyUsage.usages.includes(ExtendedKeyUsage.clientAuth)\n ) {\n throw new ValidationError('The certificate is not valid for TLS client authentication.');\n }\n\n const keyUsage = certificate.getExtension(KeyUsagesExtension);\n if (keyUsage && (keyUsage.usages & KeyUsageFlags.digitalSignature) === 0) {\n throw new ValidationError('The certificate cannot prove possession of its private key.');\n }\n}\n\n/**\n * EKU chaining (RFC 5280 §4.2.1.12): a CA whose Extended Key Usage is present\n * but omits both `clientAuth` and `anyExtendedKeyUsage` is not permitted to\n * issue TLS-client-authentication certificates, so a leaf beneath it must be\n * rejected. (A CA's EKU may be non-critical, so the critical-extension check\n * does not cover this.) A CA with no EKU extension is unconstrained.\n */\nfunction assertIssuerExtendedKeyUsage(certificate: X509Certificate): void {\n const extendedKeyUsage = certificate.getExtension(ExtendedKeyUsageExtension);\n if (\n extendedKeyUsage &&\n !extendedKeyUsage.usages.includes(ExtendedKeyUsage.clientAuth) &&\n !extendedKeyUsage.usages.includes(ANY_EXTENDED_KEY_USAGE_OID)\n ) {\n throw new ValidationError('A client certificate issuer is not permitted to issue TLS client-authentication certificates.');\n }\n}\n\nfunction assertClientCertificateIdentity(certificate: X509Certificate, clientId: string): void {\n const subjectAlternativeName = certificate.getExtension(SubjectAlternativeNameExtension);\n const authupUris = subjectAlternativeName ?\n subjectAlternativeName.names.items\n .filter((name) => name.type === GENERAL_NAME_URL)\n .map((name) => name.value)\n .filter((value) => value.startsWith(CLIENT_CERTIFICATE_URI_PREFIX)) :\n [];\n\n const expected = buildClientCertificateURI(clientId);\n if (authupUris.length !== 1 || authupUris[0] !== expected) {\n throw new ValidationError(`The certificate must contain exactly one Authup client URI SAN: ${expected}.`);\n }\n}\n\nfunction assertCertificateCurrent(certificate: X509Certificate): void {\n const now = Date.now();\n if (\n certificate.notBefore.getTime() > now ||\n certificate.notAfter.getTime() < now\n ) {\n throw new ValidationError('The client certificate is not currently valid.');\n }\n}\n\nfunction assertCertificateExtensionsUnderstood(certificate: X509Certificate): void {\n for (const extension of certificate.extensions) {\n if (extension.critical && !HANDLED_CRITICAL_EXTENSION_OIDS.has(extension.type)) {\n throw new ValidationError(\n `The certificate carries an unsupported critical extension (${extension.type}).`,\n );\n }\n }\n}\n\nfunction assertStrongSignature(certificate: X509Certificate): void {\n const hash = certificate.signatureAlgorithm?.hash?.name;\n if (typeof hash === 'string' && WEAK_SIGNATURE_HASHES.has(hash.toUpperCase())) {\n throw new ValidationError(`The certificate is signed with a weak algorithm (${hash}).`);\n }\n}\n"],"mappings":";;;;;;;;;AAiCA,MAAMe,kBAAkB;AACxB,MAAMC,4BAA4B;;;;;;;;GAUlC,MAAMC,mCAAmC;;;;;;;;GAUzC,MAAMC,kDAAkC,IAAIC,IAAY;CACpD;CACA;CACA;CACA;CACA;CACA;CACH;AAED,MAAMC,wCAAwB,IAAID,IAAY;CAAC;CAAS;CAAO;CAAO;CAAM;AAG5E,MAAME,6BAA6B;;;;GAQnC,IAAaC,6BAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYC,KAAwC;EAChD,KAAKF,wBAAwBE,IAAIF;EACjC,KAAKC,SAASC,IAAID;CACtB;CAEAE,mBAAmBC,UAA2C;EAC1DC,+CAA+CD,QAAAA;CACnD;CAEA,MAAME,0BACFC,QACAH,UACa;EACb,KAAKD,mBAAmBC,QAAAA;EACxBI,+BAA+BJ,SAASK,WAAW;EACnDC,gCAAgCN,SAASK,aAAaF,OAAOI,EAAE;EAC/DC,sCAAsCR,SAASK,WAAW;EAC1DI,sBAAsBT,SAASK,WAAW;EAE1C,MAAMK,UAAU,MAAM,KAAKd,sBAAsBe,WAAW;GACxDC,SAAST,OAAOS;GAChBC,SAAS;EACb,CAAA;EAEA,KAAK,MAAMC,UAAUJ,SAAS;GAC1B,MAAMK,oBAAoBC,uBAAuBF,MAAAA;GACjD,IAAI,CAACC,mBACD;GAGJ,MAAME,SAAsC,EAAEC,WAAW5B,iCAAiC;GAC1F,MAAM6B,OAAO,MAAMC,UACfpB,SAASK,aACTL,SAASqB,OACTN,mBACAE,QACA,KAAKpB,MAAM;GAEf,IAAI,CAACsB,MACD;GAGJ,IAAI;IACAG,wBAAwBH,IAAAA;IACxB;GACJ,QAAQ;IAGJ;GACJ;EACJ;EAEA,MAAM,IAAIjC,gBAAgB,sDAAA;CAC9B;AACJ;AAEA,SAAgBe,+CACZD,UAAmC;CAEnCuB,yBAAyBvB,SAASK,WAAW;CAG7C,IADoBL,SAASK,YAAYoB,aAAanD,yBAClDkD,CAAAA,EAAaE,IACb,MAAM,IAAIxC,gBAAgB,0DAAA;AAElC;AAEA,SAAgByC,4BAA4BC,KAAW;CACnD,MAAMC,SAASD,IAAIE,MAAMzC,yBAAAA;CACzB,IAAI,CAACwC,UAAUA,OAAOE,WAAW,GAC7B,MAAM,IAAI7C,gBAAgB,4CAAA;CAG9B,IAAI;EACA,OAAO2C,OAAOG,KAAKC,UAAU,IAAIlD,gBAAgBkD,KAAAA,CAAAA;CACrD,QAAQ;EACJ,MAAM,IAAI/C,gBAAgB,4CAAA;CAC9B;AACJ;AAEA,eAAsBgD,iCAClB7B,aACAR,QAAe;CAEf,MAAMsC,SAAS,MAAM9B,YAAY+B,cAAc,WAAWvC,MAAAA;CAE1D,OAAOV,gBACHkD,OAAOC,aAAY,GAAI,IAAIC,WAAWJ,MAAAA,CAAAA,CAAAA;AAE9C;AAEA,SAASnB,uBAAuBF,QAAmB;CAC/C,IAAI;EACA,OAAOa,4BAA4Bb,OAAOT,WAAW,CAAC,CAAC;CAC3D,QAAQ;EAIJ;CACJ;AACJ;AAEA,eAAee,UACXqB,MACAC,eACA5B,QACAG,QACApB,QAAe;CAEf,OAAO8C,aAAaF,MAAMC,eAAe5B,QAAQ,CAAC2B,IAAAA,GAAOxB,QAAQpB,MAAAA;AACrE;AAEA,eAAe8C,aACXC,SACAC,WACA/B,QACAK,MACAF,QACApB,QAAe;CAEf,IAAIsB,KAAKY,SAAS3C,iBACd;CAGJ,IAAI0D,gBAAgBF,SAAS9B,MAAAA,GACzB,OAAOK;CAGX,IAAI,MAAM4B,WAAWH,SAAS9B,QAAQG,QAAQpB,MAAAA,GAC1C,OAAO,CAAA,GAAIsB,MAAML,MAAAA;CAGrB,KAAK,IAAIkC,QAAQ,GAAGA,QAAQH,UAAUd,QAAQiB,SAAS,GAAG;EACtD,MAAMC,YAAYJ,UAAUG;EAC5B,IACI,CAACC,aACDH,gBAAgBF,SAASK,SAAAA,KACzB,CAAC,MAAMF,WAAWH,SAASK,WAAWhC,QAAQpB,MAAAA,GAE9C;EAGJ,MAAMqD,OAAO,MAAMP,aACfM,WACAJ,UAAUM,QAAQC,OAAOC,mBAAmBA,mBAAmBL,KAAAA,GAC/DlC,QACA,CAAA,GAAIK,MAAM8B,SAAAA,GACVhC,QACApB,MAAAA;EAEJ,IAAIqD,MACA,OAAOA;CAEf;AAGJ;AAEA,eAAeH,WACX1C,aACAiD,QACArC,QACApB,QAAe;CAEf,IAAIQ,YAAYiD,WAAWA,OAAOC,SAC9B,OAAO;CAGX,MAAMC,yBAAyBnD,YAAYoB,aAAapD,+BAAAA;CACxD,IAAImF,wBAAwBC,OAAO;EAC/B,MAAMC,uBAAuBJ,OAAO7B,aAAa3C,6BAAAA;EACjD,IAAI4E,wBAAwBA,qBAAqBD,UAAUD,uBAAuBC,OAC9E,OAAO;CAEf;CAMA,IAAIxC,OAAOC,aAAa,GACpB,OAAO;CAEXD,OAAOC,aAAa;CAEpB,IAAI;EACA,OAAO,MAAMb,YAAYsD,OAAO;GAC5BC,WAAWN;GACXO,eAAe;EACnB,GAAGhE,MAAAA;CACP,QAAQ;EACJ,OAAO;CACX;AACJ;AAEA,SAASiD,gBAAgBgB,MAAuBC,OAAsB;CAClE,MAAMC,UAAU,IAAIzB,WAAWuB,KAAKG,OAAO;CAC3C,MAAMC,WAAW,IAAI3B,WAAWwB,MAAME,OAAO;CAE7C,OAAOD,QAAQjC,WAAWmC,SAASnC,UAC/BiC,QAAQG,OAAOC,OAAOpB,UAAUoB,UAAUF,SAASlB,MAAM;AACjE;AAEA,SAAS1B,wBAAwBH,MAAuB;CACpD,IAAIA,KAAKY,SAAS,GACd,MAAM,IAAI7C,gBAAgB,0CAAA;CAG9B,KAAK,IAAI8D,QAAQ,GAAGA,QAAQ7B,KAAKY,QAAQiB,SAAS,GAAG;EACjD,MAAM3C,cAAcc,KAAK6B;EACzB,IAAI,CAAC3C,aACD,MAAM,IAAInB,gBAAgB,0CAAA;EAQ9B,IAAI,EADa8D,UAAU7B,KAAKY,SAAS,IAC1B;GACXvB,sCAAsCH,WAAAA;GACtCI,sBAAsBJ,WAAAA;GACtBiE,6BAA6BjE,WAAAA;EACjC;EAEAkB,yBAAyBlB,WAAAA;EACzB,MAAMmB,cAAcnB,YAAYoB,aAAanD,yBAAAA;EAC7C,IAAI,CAACkD,aAAaE,IACd,MAAM,IAAIxC,gBAAgB,wDAAA;EAG9B,MAAMqF,WAAWlE,YAAYoB,aAAa7C,kBAAAA;EAC1C,IAAI2F,aAAaA,SAASC,SAAS7F,cAAc8F,iBAAiB,GAC9D,MAAM,IAAIvF,gBAAgB,uDAAA;EAM9B,IACI,OAAOsC,YAAYkD,eAAe,YAClC,QAAS,IAAKlD,YAAYkD,YAE1B,MAAM,IAAIxF,gBAAgB,mEAAA;CAElC;AACJ;AAEA,SAASkB,+BAA+BC,aAA4B;CAChE,MAAMsE,mBAAmBtE,YAAYoB,aAAajD,yBAAAA;CAClD,IACImG,oBACA,CAACA,iBAAiBH,OAAOI,SAASrG,iBAAiBsG,UAAU,GAE7D,MAAM,IAAI3F,gBAAgB,6DAAA;CAG9B,MAAMqF,WAAWlE,YAAYoB,aAAa7C,kBAAAA;CAC1C,IAAI2F,aAAaA,SAASC,SAAS7F,cAAcmG,sBAAsB,GACnE,MAAM,IAAI5F,gBAAgB,6DAAA;AAElC;;;;;;;GASA,SAASoF,6BAA6BjE,aAA4B;CAC9D,MAAMsE,mBAAmBtE,YAAYoB,aAAajD,yBAAAA;CAClD,IACImG,oBACA,CAACA,iBAAiBH,OAAOI,SAASrG,iBAAiBsG,UAAU,KAC7D,CAACF,iBAAiBH,OAAOI,SAASlF,0BAAAA,GAElC,MAAM,IAAIR,gBAAgB,+FAAA;AAElC;AAEA,SAASoB,gCAAgCD,aAA8B0E,UAAgB;CACnF,MAAMC,yBAAyB3E,YAAYoB,aAAa5C,+BAAAA;CACxD,MAAMoG,aAAaD,yBACfA,uBAAuBE,MAAMC,MACxBhC,QAAQiC,SAASA,KAAKC,SAAS3G,GAAAA,CAAAA,CAC/BsD,KAAKoD,SAASA,KAAKhB,KAAK,CAAA,CACxBjB,QAAQiB,UAAUA,MAAMkB,WAAWtG,6BAAAA,CAAAA,IACxC,CAAA;CAEJ,MAAMuG,WAAWtG,0BAA0B8F,QAAAA;CAC3C,IAAIE,WAAWlD,WAAW,KAAKkD,WAAW,OAAOM,UAC7C,MAAM,IAAIrG,gBAAgB,mEAAmEqG,SAAS,EAAE;AAEhH;AAEA,SAAShE,yBAAyBlB,aAA4B;CAC1D,MAAMmF,MAAMC,KAAKD,IAAG;CACpB,IACInF,YAAYqF,UAAUC,QAAO,IAAKH,OAClCnF,YAAYuF,SAASD,QAAO,IAAKH,KAEjC,MAAM,IAAItG,gBAAgB,gDAAA;AAElC;AAEA,SAASsB,sCAAsCH,aAA4B;CACvE,KAAK,MAAMwF,aAAaxF,YAAYyF,YAChC,IAAID,UAAUE,YAAY,CAACxG,gCAAgCyG,IAAIH,UAAUR,IAAI,GACzE,MAAM,IAAInG,gBACN,8DAA8D2G,UAAUR,KAAK,GAAG;AAIhG;AAEA,SAAS5E,sBAAsBJ,aAA4B;CACvD,MAAM4F,OAAO5F,YAAY6F,oBAAoBD,MAAMb;CACnD,IAAI,OAAOa,SAAS,YAAYxG,sBAAsBuG,IAAIC,KAAKE,YAAW,CAAA,GACtE,MAAM,IAAIjH,gBAAgB,oDAAoD+G,KAAK,GAAG;AAE9F"}
@@ -0,0 +1,2 @@
1
+ import 'reflect-metadata';
2
+ //# sourceMappingURL=reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../../src/core/client-certificate/reflect.ts"],"names":[],"mappings":"AAeA,OAAO,kBAAkB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import "reflect-metadata";
4
5
  export {};
@@ -17,6 +17,6 @@ export type ClientCertificateValidatorContext = {
17
17
  };
18
18
  export interface IClientCertificateValidator {
19
19
  validateForBinding(evidence: ClientCertificateEvidence): void;
20
- validateForAuthentication(client: Pick<Client, 'id' | 'realm_id'>, evidence: ClientCertificateEvidence): Promise<void>;
20
+ validateForAuthentication(client: Pick<Client, 'id' | 'realmId'>, evidence: ClientCertificateEvidence): Promise<void>;
21
21
  }
22
22
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/client-certificate/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC,WAAW,EAAE,eAAe,CAAC;IAC7B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC5C,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,2BAA2B;IACxC,kBAAkB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC9D,yBAAyB,CACrB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC,EACvC,QAAQ,EAAE,yBAAyB,GACpC,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/client-certificate/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC,WAAW,EAAE,eAAe,CAAC;IAC7B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC5C,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,2BAA2B;IACxC,kBAAkB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC9D,yBAAyB,CACrB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC,EACtC,QAAQ,EAAE,yBAAyB,GACpC,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
@@ -1,4 +1,5 @@
1
1
  export * from './service.ts';
2
2
  export * from './types.ts';
3
3
  export * from './web-client.ts';
4
+ export * from './schema.ts';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { clientSchema } from "./schema.mjs";
4
5
  import { ClientService } from "./service.mjs";
5
6
  import { WebClientProvisioner, buildWebClientAttributes } from "./web-client.mjs";
6
- export { ClientService, WebClientProvisioner, buildWebClientAttributes };
7
+ export { ClientService, WebClientProvisioner, buildWebClientAttributes, clientSchema };
@@ -0,0 +1,3 @@
1
+ import type { Client } from '@authup/core-kit';
2
+ export declare const clientSchema: import("@rapiq/core").Schema<Client, any>;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM/C,eAAO,MAAM,YAAY,2CAgCvB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ import { createRelationsReadGate } from "../../query/relations.mjs";
5
+ import { EntityType } from "@authup/core-kit";
6
+ import { defineSchema } from "@rapiq/core";
7
+ //#region src/core/entities/client/schema.ts
8
+ const schemaMapping = {
9
+ realm: EntityType.REALM,
10
+ accessPolicy: EntityType.POLICY
11
+ };
12
+ const clientSchema = defineSchema({
13
+ name: EntityType.CLIENT,
14
+ fields: {
15
+ default: [
16
+ "id",
17
+ "active",
18
+ "builtIn",
19
+ "name",
20
+ "displayName",
21
+ "description",
22
+ "secretHashed",
23
+ "secretEncrypted",
24
+ "baseUrl",
25
+ "rootUrl",
26
+ "redirectUri",
27
+ "postLogoutRedirectUri",
28
+ "grantTypes",
29
+ "scope",
30
+ "authMethod",
31
+ "tokenBindingMethod",
32
+ "accessPolicyId",
33
+ "realmId",
34
+ "updatedAt",
35
+ "createdAt"
36
+ ],
37
+ allowed: ["secret"]
38
+ },
39
+ filters: { allowed: [
40
+ "id",
41
+ "name",
42
+ "realmId"
43
+ ] },
44
+ relations: {
45
+ allowed: ["realm", "accessPolicy"],
46
+ validate: createRelationsReadGate(schemaMapping)
47
+ },
48
+ sort: { allowed: [
49
+ "id",
50
+ "createdAt",
51
+ "updatedAt"
52
+ ] },
53
+ pagination: { maxLimit: 50 },
54
+ schemaMapping
55
+ });
56
+ //#endregion
57
+ export { clientSchema };
58
+
59
+ //# sourceMappingURL=schema.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","createRelationsReadGate","schemaMapping","realm","REALM","accessPolicy","POLICY","clientSchema","name","CLIENT","fields","default","allowed","filters","relations","validate","sort","pagination","maxLimit"],"sources":["../../../../src/core/entities/client/schema.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 { defineSchema } from '@rapiq/core';\nimport type { Client } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { realm: EntityType.REALM, accessPolicy: EntityType.POLICY };\n\nexport const clientSchema = defineSchema<Client>({\n name: EntityType.CLIENT,\n fields: {\n default: [\n 'id',\n 'active',\n 'builtIn',\n 'name',\n 'displayName',\n 'description',\n 'secretHashed',\n 'secretEncrypted',\n 'baseUrl',\n 'rootUrl',\n 'redirectUri',\n 'postLogoutRedirectUri',\n 'grantTypes',\n 'scope',\n 'authMethod',\n 'tokenBindingMethod',\n 'accessPolicyId',\n 'realmId',\n 'updatedAt',\n 'createdAt',\n ],\n allowed: ['secret'],\n },\n filters: { allowed: ['id', 'name', 'realmId'] },\n relations: { allowed: ['realm', 'accessPolicy'], validate: createRelationsReadGate(schemaMapping) },\n sort: { allowed: ['id', 'createdAt', 'updatedAt'] },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;AAYA,MAAMG,gBAAgB;CAAEC,OAAOH,WAAWI;CAAOC,cAAcL,WAAWM;AAAO;AAEjF,MAAaC,eAAeR,aAAqB;CAC7CS,MAAMR,WAAWS;CACjBC,QAAQ;EACJC,SAAS;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAEJC,SAAS,CAAC,QAAA;CACd;CACAC,SAAS,EAAED,SAAS;EAAC;EAAM;EAAQ;GAAW;CAC9CE,WAAW;EAAEF,SAAS,CAAC,SAAS,cAAA;EAAiBG,UAAUd,wBAAwBC,aAAAA;CAAe;CAClGc,MAAM,EAAEJ,SAAS;EAAC;EAAM;EAAa;GAAa;CAClDK,YAAY,EAAEC,UAAU,GAAG;CAC3BhB;AACJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client/service.ts"],"names":[],"mappings":"AAUA,OAAO,EAGH,eAAe,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAG,MAAM,oBAAoB,CAAC;AACxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,eAAe,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,qBAAa,aAAc,SAAQ,qBAAsB,YAAW,cAAc;IAC9E,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAExC,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE5C,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;gBAEzB,GAAG,EAAE,oBAAoB;IAO/B,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAmD5C,MAAM,CACR,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IA2CZ,MAAM,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,MAAM,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,IAAI,CACN,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GACvC,OAAO,CAAC;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAA;KACnB,CAAC;IA2JI,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;CAmBrB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/client/service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAGH,eAAe,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAG,MAAM,oBAAoB,CAAC;AACxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIpE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,eAAe,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,qBAAa,aAAc,SAAQ,qBAAsB,YAAW,cAAc;IAC9E,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAExC,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE5C,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;gBAEzB,GAAG,EAAE,oBAAoB;IAO/B,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAmF5C,MAAM,CACR,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAmDZ,MAAM,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,MAAM,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,IAAI,CACN,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GACvC,OAAO,CAAC;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAA;KACnB,CAAC;IA2JI,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;CAmBrB"}
@@ -2,11 +2,15 @@ import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
4
  import { ClientCredentialsService } from "../../authentication/credential/entities/client/module.mjs";
5
+ import { clientSchema } from "./schema.mjs";
6
+ import { appendQueryConditions, decodeQuery } from "../../query/module.mjs";
7
+ import "../../query/index.mjs";
5
8
  import { ValidatorGroup, isUUID } from "@authup/kit";
6
9
  import { CLIENT_RESERVED_NAMES, ClientAuthMethod, ClientValidator, PermissionName } from "@authup/core-kit";
7
10
  import { AbstractEntityService } from "@authup/server-kit";
8
11
  import { BuiltInPolicyType, definePolicyData } from "@authup/access";
9
12
  import { EntityNotFoundError, ValidationError } from "@authup/errors";
13
+ import { and, eq, ne, not, or } from "@rapiq/core";
10
14
  //#region src/core/entities/client/service.ts
11
15
  var ClientService = class extends AbstractEntityService {
12
16
  repository;
@@ -19,16 +23,31 @@ var ClientService = class extends AbstractEntityService {
19
23
  this.validator = new ClientValidator();
20
24
  }
21
25
  async getMany(query, actor) {
22
- await actor.permissionEvaluator.preEvaluateOneOf({ name: [
26
+ const permissionNames = [
23
27
  PermissionName.CLIENT_READ,
24
28
  PermissionName.CLIENT_UPDATE,
25
29
  PermissionName.CLIENT_DELETE
26
- ] });
27
- const { data: entities, meta } = await this.repository.findMany(query);
30
+ ];
31
+ await actor.permissionEvaluator.preEvaluateOneOf({ name: permissionNames });
32
+ const parsed = await decodeQuery(query, {
33
+ schema: clientSchema,
34
+ actor
35
+ });
36
+ const secretSelected = parsed.fields.value.some((field) => field.name === "secret" && field.operator !== "-");
37
+ const compiled = await actor.permissionEvaluator.compile({ name: permissionNames });
38
+ if (compiled.verdict !== "post") {
39
+ let scoped = parsed;
40
+ if (secretSelected && compiled.verdict !== "allow") {
41
+ const plaintextSecret = and(ne("secret", null), eq("secretHashed", false), eq("secretEncrypted", false));
42
+ scoped = appendQueryConditions(parsed, compiled.verdict === "conditional" ? or(not(plaintextSecret), compiled.condition) : not(plaintextSecret));
43
+ }
44
+ return this.repository.findMany(scoped);
45
+ }
46
+ const { data: entities, meta } = await this.repository.findMany(parsed);
28
47
  let { total } = meta;
29
48
  const data = [];
30
49
  for (const entity of entities) {
31
- if (entity.secret && !entity.secret_encrypted && !entity.secret_hashed) {
50
+ if (entity.secret && !entity.secretEncrypted && !entity.secretHashed) {
32
51
  try {
33
52
  await actor.permissionEvaluator.evaluateOneOf({
34
53
  name: [
@@ -65,13 +84,17 @@ var ClientService = class extends AbstractEntityService {
65
84
  ];
66
85
  let isMe = !!actor.identity && actor.identity.type === "client" && (actor.identity.data.id === idOrName || actor.identity.data.name === idOrName);
67
86
  if (!isMe) await actor.permissionEvaluator.preEvaluateOneOf({ name: permissionNames });
68
- const entity = await this.repository.findOne(idOrName, query, realmId);
87
+ const entity = await this.repository.findOne(idOrName, await decodeQuery(query, {
88
+ schema: clientSchema,
89
+ parameters: ["fields", "relations"],
90
+ actor
91
+ }), realmId);
69
92
  if (!entity) throw new EntityNotFoundError();
70
93
  if (isMe && actor.identity.data.id !== entity.id) {
71
94
  isMe = false;
72
95
  await actor.permissionEvaluator.preEvaluateOneOf({ name: permissionNames });
73
96
  }
74
- if (!isMe && entity.secret && !entity.secret_encrypted && !entity.secret_hashed) await actor.permissionEvaluator.evaluateOneOf({
97
+ if (!isMe && entity.secret && !entity.secretEncrypted && !entity.secretHashed) await actor.permissionEvaluator.evaluateOneOf({
75
98
  name: permissionNames,
76
99
  data: definePolicyData({
77
100
  [BuiltInPolicyType.ATTRIBUTES]: entity,
@@ -90,13 +113,13 @@ var ClientService = class extends AbstractEntityService {
90
113
  }
91
114
  async save(idOrName, data, actor, options = {}) {
92
115
  let group;
93
- const realm = typeof data.realm_id === "string" ? await this.realmRepository.resolve(data.realm_id) : void 0;
116
+ const realm = typeof data.realmId === "string" ? await this.realmRepository.resolve(data.realmId) : void 0;
94
117
  let entity;
95
118
  if (idOrName) {
96
119
  const where = {};
97
120
  if (isUUID(idOrName)) where.id = idOrName;
98
121
  else where.name = idOrName;
99
- if (realm) where.realm_id = realm.id;
122
+ if (realm) where.realmId = realm.id;
100
123
  entity = await this.repository.findOneWithSecret(where);
101
124
  if (!entity && options.updateOnly) throw new EntityNotFoundError();
102
125
  } else if (options.updateOnly) throw new EntityNotFoundError();
@@ -115,14 +138,14 @@ var ClientService = class extends AbstractEntityService {
115
138
  group = ValidatorGroup.CREATE;
116
139
  }
117
140
  const validated = await this.validator.run(data, { group });
118
- if (typeof validated.name === "string" && CLIENT_RESERVED_NAMES.includes(validated.name) && !(entity && entity.built_in && entity.name === validated.name)) throw new ValidationError(`The client name '${validated.name}' is reserved.`);
141
+ if (typeof validated.name === "string" && CLIENT_RESERVED_NAMES.includes(validated.name) && !(entity && entity.builtIn && entity.name === validated.name)) throw new ValidationError(`The client name '${validated.name}' is reserved.`);
119
142
  await this.repository.validateJoinColumns(validated);
120
143
  await this.repository.checkUniqueness(validated, entity || void 0);
121
144
  const credentialsService = new ClientCredentialsService();
122
145
  if (entity) {
123
- if (!isSelfEdit && !validated.realm_id && !entity.realm_id) {
146
+ if (!isSelfEdit && !validated.realmId && !entity.realmId) {
124
147
  const actorRealmId = this.getActorRealmId(actor);
125
- if (actorRealmId) validated.realm_id = actorRealmId;
148
+ if (actorRealmId) validated.realmId = actorRealmId;
126
149
  }
127
150
  if (isSelfEdit) await actor.permissionEvaluator.evaluate({
128
151
  name: PermissionName.CLIENT_SELF_MANAGE,
@@ -139,13 +162,13 @@ var ClientService = class extends AbstractEntityService {
139
162
  ...this.resourceRealmMatch(entity)
140
163
  })
141
164
  });
142
- if (entity.auth_method === ClientAuthMethod.SECRET) {
165
+ if (entity.authMethod === ClientAuthMethod.SECRET) {
143
166
  if (!validated.secret && !entity.secret) validated.secret = credentialsService.generateSecret();
144
167
  if (validated.secret) entity.secret = await credentialsService.protect(validated.secret, entity);
145
168
  } else {
146
169
  entity.secret = null;
147
- entity.secret_hashed = false;
148
- entity.secret_encrypted = false;
170
+ entity.secretHashed = false;
171
+ entity.secretEncrypted = false;
149
172
  }
150
173
  await this.repository.save(entity);
151
174
  return {
@@ -153,9 +176,9 @@ var ClientService = class extends AbstractEntityService {
153
176
  created: false
154
177
  };
155
178
  }
156
- if (!validated.realm_id) {
179
+ if (!validated.realmId) {
157
180
  const actorRealmId = this.getActorRealmId(actor);
158
- if (actorRealmId) validated.realm_id = actorRealmId;
181
+ if (actorRealmId) validated.realmId = actorRealmId;
159
182
  }
160
183
  await actor.permissionEvaluator.evaluate({
161
184
  name: PermissionName.CLIENT_CREATE,
@@ -165,13 +188,13 @@ var ClientService = class extends AbstractEntityService {
165
188
  })
166
189
  });
167
190
  entity = this.repository.create(validated);
168
- if (entity.auth_method === ClientAuthMethod.SECRET) {
191
+ if (entity.authMethod === ClientAuthMethod.SECRET) {
169
192
  if (!validated.secret) validated.secret = credentialsService.generateSecret();
170
193
  entity.secret = await credentialsService.protect(validated.secret, validated);
171
194
  } else {
172
195
  entity.secret = null;
173
- entity.secret_hashed = false;
174
- entity.secret_encrypted = false;
196
+ entity.secretHashed = false;
197
+ entity.secretEncrypted = false;
175
198
  }
176
199
  await this.repository.save(entity);
177
200
  return {