@authup/server-core 1.0.0-beta.53 → 1.0.0-beta.55

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 (1255) 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 +54 -36
  7. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  8. package/dist/adapters/database/domains/client/subscriber.mjs +3 -3
  9. package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
  10. package/dist/adapters/database/domains/client-permission/entity.d.ts +10 -10
  11. package/dist/adapters/database/domains/client-permission/entity.d.ts.map +1 -1
  12. package/dist/adapters/database/domains/client-permission/entity.mjs +42 -23
  13. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  14. package/dist/adapters/database/domains/client-permission/subscriber.mjs +4 -4
  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 +31 -19
  19. package/dist/adapters/database/domains/client-role/entity.mjs.map +1 -1
  20. package/dist/adapters/database/domains/client-role/subscriber.mjs +4 -4
  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 +31 -19
  25. package/dist/adapters/database/domains/client-scope/entity.mjs.map +1 -1
  26. package/dist/adapters/database/domains/client-scope/subscriber.mjs +2 -2
  27. package/dist/adapters/database/domains/client-scope/subscriber.mjs.map +1 -1
  28. package/dist/adapters/database/domains/consent/entity.d.ts +7 -7
  29. package/dist/adapters/database/domains/consent/entity.d.ts.map +1 -1
  30. package/dist/adapters/database/domains/consent/entity.mjs +35 -20
  31. package/dist/adapters/database/domains/consent/entity.mjs.map +1 -1
  32. package/dist/adapters/database/domains/consent/subscriber.mjs +4 -4
  33. package/dist/adapters/database/domains/consent/subscriber.mjs.map +1 -1
  34. package/dist/adapters/database/domains/constants.d.ts +0 -3
  35. package/dist/adapters/database/domains/constants.d.ts.map +1 -1
  36. package/dist/adapters/database/domains/constants.mjs +0 -3
  37. package/dist/adapters/database/domains/constants.mjs.map +1 -1
  38. package/dist/adapters/database/domains/event/entity.d.ts +13 -13
  39. package/dist/adapters/database/domains/event/entity.d.ts.map +1 -1
  40. package/dist/adapters/database/domains/event/entity.mjs +45 -30
  41. package/dist/adapters/database/domains/event/entity.mjs.map +1 -1
  42. package/dist/adapters/database/domains/identity-provider/entity.d.ts +4 -4
  43. package/dist/adapters/database/domains/identity-provider/entity.d.ts.map +1 -1
  44. package/dist/adapters/database/domains/identity-provider/entity.mjs +19 -12
  45. package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
  46. package/dist/adapters/database/domains/identity-provider/repository.mjs +3 -3
  47. package/dist/adapters/database/domains/identity-provider/repository.mjs.map +1 -1
  48. package/dist/adapters/database/domains/identity-provider/subscriber.mjs +3 -3
  49. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  50. package/dist/adapters/database/domains/identity-provider-account/entity.d.ts +15 -15
  51. package/dist/adapters/database/domains/identity-provider-account/entity.d.ts.map +1 -1
  52. package/dist/adapters/database/domains/identity-provider-account/entity.mjs +52 -33
  53. package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
  54. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs +2 -2
  55. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs.map +1 -1
  56. package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts +4 -4
  57. package/dist/adapters/database/domains/identity-provider-attribute/entity.d.ts.map +1 -1
  58. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs +20 -11
  59. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
  60. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs +2 -2
  61. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
  62. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts +9 -9
  63. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.d.ts.map +1 -1
  64. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs +31 -21
  65. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
  66. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts +10 -10
  67. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.d.ts.map +1 -1
  68. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs +34 -23
  69. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
  70. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts +10 -10
  71. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.d.ts.map +1 -1
  72. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs +34 -23
  73. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
  74. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs +3 -3
  75. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  76. package/dist/adapters/database/domains/index.d.ts +0 -3
  77. package/dist/adapters/database/domains/index.d.ts.map +1 -1
  78. package/dist/adapters/database/domains/index.mjs +1 -10
  79. package/dist/adapters/database/domains/key/entity.d.ts +6 -6
  80. package/dist/adapters/database/domains/key/entity.d.ts.map +1 -1
  81. package/dist/adapters/database/domains/key/entity.mjs +26 -16
  82. package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
  83. package/dist/adapters/database/domains/permission/entity.d.ts +7 -7
  84. package/dist/adapters/database/domains/permission/entity.d.ts.map +1 -1
  85. package/dist/adapters/database/domains/permission/entity.mjs +35 -20
  86. package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
  87. package/dist/adapters/database/domains/permission/subscriber.mjs +4 -4
  88. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  89. package/dist/adapters/database/domains/permission-policy/entity.d.ts +8 -8
  90. package/dist/adapters/database/domains/permission-policy/entity.d.ts.map +1 -1
  91. package/dist/adapters/database/domains/permission-policy/entity.mjs +31 -19
  92. package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
  93. package/dist/adapters/database/domains/policy/entity.d.ts +6 -6
  94. package/dist/adapters/database/domains/policy/entity.d.ts.map +1 -1
  95. package/dist/adapters/database/domains/policy/entity.mjs +30 -16
  96. package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
  97. package/dist/adapters/database/domains/policy/repository.mjs +3 -3
  98. package/dist/adapters/database/domains/policy/repository.mjs.map +1 -1
  99. package/dist/adapters/database/domains/policy/subscriber.mjs +2 -2
  100. package/dist/adapters/database/domains/policy/subscriber.mjs.map +1 -1
  101. package/dist/adapters/database/domains/policy-attribute/entity.d.ts +4 -4
  102. package/dist/adapters/database/domains/policy-attribute/entity.d.ts.map +1 -1
  103. package/dist/adapters/database/domains/policy-attribute/entity.mjs +20 -11
  104. package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
  105. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs +4 -4
  106. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  107. package/dist/adapters/database/domains/realm/entity.d.ts +4 -4
  108. package/dist/adapters/database/domains/realm/entity.d.ts.map +1 -1
  109. package/dist/adapters/database/domains/realm/entity.mjs +18 -10
  110. package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
  111. package/dist/adapters/database/domains/realm/subscriber.mjs +2 -2
  112. package/dist/adapters/database/domains/realm/subscriber.mjs.map +1 -1
  113. package/dist/adapters/database/domains/role/entity.d.ts +6 -6
  114. package/dist/adapters/database/domains/role/entity.d.ts.map +1 -1
  115. package/dist/adapters/database/domains/role/entity.mjs +32 -18
  116. package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
  117. package/dist/adapters/database/domains/role/repository.mjs +3 -3
  118. package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
  119. package/dist/adapters/database/domains/role/subscriber.mjs +3 -3
  120. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  121. package/dist/adapters/database/domains/role-attribute/entity.d.ts +4 -4
  122. package/dist/adapters/database/domains/role-attribute/entity.d.ts.map +1 -1
  123. package/dist/adapters/database/domains/role-attribute/entity.mjs +20 -11
  124. package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
  125. package/dist/adapters/database/domains/role-attribute/subscriber.mjs +4 -4
  126. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  127. package/dist/adapters/database/domains/role-permission/entity.d.ts +10 -10
  128. package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
  129. package/dist/adapters/database/domains/role-permission/entity.mjs +39 -23
  130. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  131. package/dist/adapters/database/domains/role-permission/subscriber.mjs +4 -4
  132. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  133. package/dist/adapters/database/domains/scope/entity.d.ts +5 -5
  134. package/dist/adapters/database/domains/scope/entity.d.ts.map +1 -1
  135. package/dist/adapters/database/domains/scope/entity.mjs +25 -14
  136. package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
  137. package/dist/adapters/database/domains/scope/subscriber.mjs +3 -3
  138. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  139. package/dist/adapters/database/domains/session/entity.d.ts +14 -17
  140. package/dist/adapters/database/domains/session/entity.d.ts.map +1 -1
  141. package/dist/adapters/database/domains/session/entity.mjs +44 -44
  142. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  143. package/dist/adapters/database/domains/session-token/entity.d.ts +9 -9
  144. package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -1
  145. package/dist/adapters/database/domains/session-token/entity.mjs +34 -21
  146. package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -1
  147. package/dist/adapters/database/domains/trust-anchor/entity.d.ts +3 -3
  148. package/dist/adapters/database/domains/trust-anchor/entity.d.ts.map +1 -1
  149. package/dist/adapters/database/domains/trust-anchor/entity.mjs +16 -10
  150. package/dist/adapters/database/domains/trust-anchor/entity.mjs.map +1 -1
  151. package/dist/adapters/database/domains/user/entity.d.ts +12 -12
  152. package/dist/adapters/database/domains/user/entity.d.ts.map +1 -1
  153. package/dist/adapters/database/domains/user/entity.mjs +44 -29
  154. package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
  155. package/dist/adapters/database/domains/user/repository.mjs +3 -3
  156. package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
  157. package/dist/adapters/database/domains/user/subscriber.mjs +3 -3
  158. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  159. package/dist/adapters/database/domains/user-attribute/entity.d.ts +4 -4
  160. package/dist/adapters/database/domains/user-attribute/entity.d.ts.map +1 -1
  161. package/dist/adapters/database/domains/user-attribute/entity.mjs +17 -11
  162. package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
  163. package/dist/adapters/database/domains/user-attribute/subscriber.mjs +4 -4
  164. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  165. package/dist/adapters/database/domains/user-authenticator/entity.d.ts +5 -5
  166. package/dist/adapters/database/domains/user-authenticator/entity.d.ts.map +1 -1
  167. package/dist/adapters/database/domains/user-authenticator/entity.mjs +26 -13
  168. package/dist/adapters/database/domains/user-authenticator/entity.mjs.map +1 -1
  169. package/dist/adapters/database/domains/user-permission/entity.d.ts +10 -10
  170. package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
  171. package/dist/adapters/database/domains/user-permission/entity.mjs +39 -23
  172. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  173. package/dist/adapters/database/domains/user-permission/subscriber.mjs +4 -4
  174. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  175. package/dist/adapters/database/domains/user-role/entity.d.ts +8 -8
  176. package/dist/adapters/database/domains/user-role/entity.d.ts.map +1 -1
  177. package/dist/adapters/database/domains/user-role/entity.mjs +31 -19
  178. package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
  179. package/dist/adapters/database/domains/user-role/subscriber.mjs +4 -4
  180. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  181. package/dist/adapters/database/errors/driver.mjs.map +1 -1
  182. package/dist/adapters/database/extra-attribute-repository/adapter.mjs.map +1 -1
  183. package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs.map +1 -1
  184. package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
  185. package/dist/adapters/database/helpers/is-supported.mjs +1 -1
  186. package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
  187. package/dist/adapters/database/index.mjs +1 -7
  188. package/dist/adapters/database/migrations/mysql/1779267068441-Default.mjs.map +1 -1
  189. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs.map +1 -1
  190. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.d.ts +12 -0
  191. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.d.ts.map +1 -0
  192. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.mjs +42 -0
  193. package/dist/adapters/database/migrations/mysql/1784289540000-CamelCaseAttributes.mjs.map +1 -0
  194. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.d.ts +18 -0
  195. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.d.ts.map +1 -0
  196. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.mjs +161 -0
  197. package/dist/adapters/database/migrations/mysql/1784460916000-RemoveRobots.mjs.map +1 -0
  198. package/dist/adapters/database/migrations/postgres/1779267068441-Default.mjs.map +1 -1
  199. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs.map +1 -1
  200. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.d.ts +12 -0
  201. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.d.ts.map +1 -0
  202. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.mjs +42 -0
  203. package/dist/adapters/database/migrations/postgres/1784289540000-CamelCaseAttributes.mjs.map +1 -0
  204. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.d.ts +18 -0
  205. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.d.ts.map +1 -0
  206. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.mjs +167 -0
  207. package/dist/adapters/database/migrations/postgres/1784460916000-RemoveRobots.mjs.map +1 -0
  208. package/dist/adapters/database/subscriber/module.mjs.map +1 -1
  209. package/dist/adapters/http/adapters/index.mjs +1 -2
  210. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +2 -2
  211. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  212. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +3 -3
  213. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  214. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +1 -1
  215. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  216. package/dist/adapters/http/adapters/oauth2/grant-types/index.d.ts +0 -1
  217. package/dist/adapters/http/adapters/oauth2/grant-types/index.d.ts.map +1 -1
  218. package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +1 -2
  219. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +1 -1
  220. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  221. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +1 -1
  222. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  223. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +1 -4
  224. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  225. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts.map +1 -1
  226. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +0 -3
  227. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
  228. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs.map +1 -1
  229. package/dist/adapters/http/adapters/oauth2/index.mjs +1 -2
  230. package/dist/adapters/http/controllers/entities/client/module.mjs +2 -2
  231. package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
  232. package/dist/adapters/http/controllers/entities/client-permission/module.mjs +2 -2
  233. package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
  234. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs +3 -3
  235. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs.map +1 -1
  236. package/dist/adapters/http/controllers/entities/client-role/module.mjs +2 -2
  237. package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
  238. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs +2 -2
  239. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs.map +1 -1
  240. package/dist/adapters/http/controllers/entities/client-scope/module.mjs +2 -2
  241. package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
  242. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs +2 -2
  243. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs.map +1 -1
  244. package/dist/adapters/http/controllers/entities/consent/module.mjs +2 -2
  245. package/dist/adapters/http/controllers/entities/consent/module.mjs.map +1 -1
  246. package/dist/adapters/http/controllers/entities/event/module.mjs +2 -2
  247. package/dist/adapters/http/controllers/entities/event/module.mjs.map +1 -1
  248. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +2 -2
  249. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs.map +1 -1
  250. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  251. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +21 -15
  252. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  253. package/dist/adapters/http/controllers/entities/index.d.ts +0 -3
  254. package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
  255. package/dist/adapters/http/controllers/entities/index.mjs +1 -9
  256. package/dist/adapters/http/controllers/entities/key/module.d.ts.map +1 -1
  257. package/dist/adapters/http/controllers/entities/key/module.mjs +3 -9
  258. package/dist/adapters/http/controllers/entities/key/module.mjs.map +1 -1
  259. package/dist/adapters/http/controllers/entities/permission/module.mjs +2 -2
  260. package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
  261. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +2 -2
  262. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
  263. package/dist/adapters/http/controllers/entities/policy/module.mjs +2 -2
  264. package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
  265. package/dist/adapters/http/controllers/entities/policy/utils/validation.d.ts +1 -1
  266. package/dist/adapters/http/controllers/entities/policy/utils/validation.d.ts.map +1 -1
  267. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs +3 -3
  268. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs.map +1 -1
  269. package/dist/adapters/http/controllers/entities/realm/module.mjs +2 -2
  270. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  271. package/dist/adapters/http/controllers/entities/role/module.mjs +2 -2
  272. package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
  273. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +2 -2
  274. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
  275. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs +1 -1
  276. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs.map +1 -1
  277. package/dist/adapters/http/controllers/entities/role-permission/module.mjs +2 -2
  278. package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
  279. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs +3 -3
  280. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs.map +1 -1
  281. package/dist/adapters/http/controllers/entities/scope/module.mjs +2 -2
  282. package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
  283. package/dist/adapters/http/controllers/entities/session/module.mjs +2 -2
  284. package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
  285. package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts.map +1 -1
  286. package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs +3 -9
  287. package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs.map +1 -1
  288. package/dist/adapters/http/controllers/entities/user/module.mjs +2 -2
  289. package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
  290. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +2 -2
  291. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
  292. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs +1 -1
  293. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs.map +1 -1
  294. package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs +3 -3
  295. package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs.map +1 -1
  296. package/dist/adapters/http/controllers/entities/user-permission/module.mjs +2 -2
  297. package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
  298. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs +3 -3
  299. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs.map +1 -1
  300. package/dist/adapters/http/controllers/entities/user-role/module.mjs +2 -2
  301. package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
  302. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs +2 -2
  303. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs.map +1 -1
  304. package/dist/adapters/http/controllers/index.mjs +1 -6
  305. package/dist/adapters/http/controllers/workflows/activate/module.mjs +2 -2
  306. package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs +2 -2
  307. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +6 -6
  308. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  309. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +10 -10
  310. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
  311. package/dist/adapters/http/controllers/workflows/jwks/module.mjs +11 -11
  312. package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
  313. package/dist/adapters/http/controllers/workflows/logout/module.mjs +2 -2
  314. package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -1
  315. package/dist/adapters/http/controllers/workflows/openid/module.mjs +2 -2
  316. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +2 -2
  317. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +2 -2
  318. package/dist/adapters/http/controllers/workflows/register/module.mjs +2 -2
  319. package/dist/adapters/http/controllers/workflows/status/module.mjs +4 -4
  320. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  321. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  322. package/dist/adapters/http/controllers/workflows/token/module.mjs +4 -10
  323. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  324. package/dist/adapters/http/controllers/workflows/token/types.d.ts +1 -2
  325. package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
  326. package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs.map +1 -1
  327. package/dist/adapters/http/index.mjs +1 -7
  328. package/dist/adapters/http/middleware/built-in/assets.mjs +2 -2
  329. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  330. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +1 -2
  331. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  332. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +1 -15
  333. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  334. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts +0 -1
  335. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts.map +1 -1
  336. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  337. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  338. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
  339. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +0 -1
  340. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  341. package/dist/adapters/http/request/client-certificate.d.ts +1 -0
  342. package/dist/adapters/http/request/client-certificate.d.ts.map +1 -1
  343. package/dist/adapters/http/request/client-certificate.mjs +1 -0
  344. package/dist/adapters/http/request/client-certificate.mjs.map +1 -1
  345. package/dist/adapters/http/request/constants.mjs.map +1 -1
  346. package/dist/adapters/http/request/helpers/body-realm-id.mjs +1 -1
  347. package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
  348. package/dist/adapters/http/request/helpers/identity.d.ts +2 -2
  349. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  350. package/dist/adapters/http/request/helpers/identity.mjs +2 -2
  351. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  352. package/dist/adapters/http/request/helpers/param-id.mjs.map +1 -1
  353. package/dist/adapters/http/request/helpers/realm-id.mjs +1 -1
  354. package/dist/adapters/http/request/helpers/realm-id.mjs.map +1 -1
  355. package/dist/adapters/http/request/helpers/redirect.mjs.map +1 -1
  356. package/dist/adapters/http/request/permission/module.d.ts +3 -2
  357. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  358. package/dist/adapters/http/request/permission/module.mjs +3 -0
  359. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  360. package/dist/adapters/http/ui/render.mjs +2 -2
  361. package/dist/adapters/http/ui/render.mjs.map +1 -1
  362. package/dist/adapters/http/ui/serve.d.ts.map +1 -1
  363. package/dist/adapters/http/ui/serve.mjs +4 -1
  364. package/dist/adapters/http/ui/serve.mjs.map +1 -1
  365. package/dist/app/factory.mjs.map +1 -1
  366. package/dist/app/index.mjs +1 -5
  367. package/dist/app/modules/authentication/module.mjs.map +1 -1
  368. package/dist/app/modules/authentication/repositories/constants.mjs.map +1 -1
  369. package/dist/app/modules/authentication/repositories/session.d.ts +3 -2
  370. package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
  371. package/dist/app/modules/authentication/repositories/session.mjs +8 -40
  372. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  373. package/dist/app/modules/cache/module.mjs.map +1 -1
  374. package/dist/app/modules/components/module.mjs.map +1 -1
  375. package/dist/app/modules/config/constants.d.ts +0 -4
  376. package/dist/app/modules/config/constants.d.ts.map +1 -1
  377. package/dist/app/modules/config/constants.mjs +0 -4
  378. package/dist/app/modules/config/constants.mjs.map +1 -1
  379. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  380. package/dist/app/modules/config/normalize.mjs +0 -4
  381. package/dist/app/modules/config/normalize.mjs.map +1 -1
  382. package/dist/app/modules/config/origins.mjs.map +1 -1
  383. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  384. package/dist/app/modules/config/read/env.mjs +0 -8
  385. package/dist/app/modules/config/read/env.mjs.map +1 -1
  386. package/dist/app/modules/config/read/fs.mjs.map +1 -1
  387. package/dist/app/modules/config/types.d.ts +0 -19
  388. package/dist/app/modules/config/types.d.ts.map +1 -1
  389. package/dist/app/modules/config/validator.d.ts.map +1 -1
  390. package/dist/app/modules/config/validator.mjs +0 -4
  391. package/dist/app/modules/config/validator.mjs.map +1 -1
  392. package/dist/app/modules/database/index.mjs +1 -4
  393. package/dist/app/modules/database/module.d.ts.map +1 -1
  394. package/dist/app/modules/database/module.mjs +2 -0
  395. package/dist/app/modules/database/module.mjs.map +1 -1
  396. package/dist/app/modules/database/repositories/bindings.d.ts +2 -2
  397. package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -1
  398. package/dist/app/modules/database/repositories/bindings.mjs +3 -3
  399. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  400. package/dist/app/modules/database/repositories/client/repository.d.ts +3 -2
  401. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  402. package/dist/app/modules/database/repositories/client/repository.mjs +10 -82
  403. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  404. package/dist/app/modules/database/repositories/client-permission/repository.d.ts +2 -1
  405. package/dist/app/modules/database/repositories/client-permission/repository.d.ts.map +1 -1
  406. package/dist/app/modules/database/repositories/client-permission/repository.mjs +3 -17
  407. package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
  408. package/dist/app/modules/database/repositories/client-role/repository.d.ts +2 -1
  409. package/dist/app/modules/database/repositories/client-role/repository.d.ts.map +1 -1
  410. package/dist/app/modules/database/repositories/client-role/repository.mjs +3 -17
  411. package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
  412. package/dist/app/modules/database/repositories/client-scope/repository.d.ts +2 -1
  413. package/dist/app/modules/database/repositories/client-scope/repository.d.ts.map +1 -1
  414. package/dist/app/modules/database/repositories/client-scope/repository.mjs +3 -17
  415. package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
  416. package/dist/app/modules/database/repositories/event/repository.d.ts +2 -1
  417. package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -1
  418. package/dist/app/modules/database/repositories/event/repository.mjs +14 -53
  419. package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -1
  420. package/dist/app/modules/database/repositories/helpers.d.ts +17 -3
  421. package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
  422. package/dist/app/modules/database/repositories/helpers.mjs +40 -5
  423. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  424. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +2 -1
  425. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  426. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +6 -37
  427. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  428. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts +2 -1
  429. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts.map +1 -1
  430. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs +3 -17
  431. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
  432. package/dist/app/modules/database/repositories/index.d.ts +0 -3
  433. package/dist/app/modules/database/repositories/index.d.ts.map +1 -1
  434. package/dist/app/modules/database/repositories/index.mjs +1 -7
  435. package/dist/app/modules/database/repositories/key/repository.d.ts +3 -2
  436. package/dist/app/modules/database/repositories/key/repository.d.ts.map +1 -1
  437. package/dist/app/modules/database/repositories/key/repository.mjs +38 -72
  438. package/dist/app/modules/database/repositories/key/repository.mjs.map +1 -1
  439. package/dist/app/modules/database/repositories/permission/repository.d.ts +2 -1
  440. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  441. package/dist/app/modules/database/repositories/permission/repository.mjs +5 -20
  442. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  443. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts +2 -1
  444. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts.map +1 -1
  445. package/dist/app/modules/database/repositories/permission-policy/repository.mjs +3 -17
  446. package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
  447. package/dist/app/modules/database/repositories/permission-provider/module.mjs +6 -6
  448. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  449. package/dist/app/modules/database/repositories/policy/repository.d.ts +2 -1
  450. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  451. package/dist/app/modules/database/repositories/policy/repository.mjs +5 -39
  452. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  453. package/dist/app/modules/database/repositories/query.d.ts +18 -0
  454. package/dist/app/modules/database/repositories/query.d.ts.map +1 -0
  455. package/dist/app/modules/database/repositories/query.mjs +29 -0
  456. package/dist/app/modules/database/repositories/query.mjs.map +1 -0
  457. package/dist/app/modules/database/repositories/realm/repository.d.ts +2 -1
  458. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  459. package/dist/app/modules/database/repositories/realm/repository.mjs +3 -25
  460. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  461. package/dist/app/modules/database/repositories/role/repository.d.ts +2 -1
  462. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  463. package/dist/app/modules/database/repositories/role/repository.mjs +6 -30
  464. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  465. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts +2 -1
  466. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  467. package/dist/app/modules/database/repositories/role-attribute/repository.mjs +3 -19
  468. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  469. package/dist/app/modules/database/repositories/role-permission/repository.d.ts +2 -1
  470. package/dist/app/modules/database/repositories/role-permission/repository.d.ts.map +1 -1
  471. package/dist/app/modules/database/repositories/role-permission/repository.mjs +3 -17
  472. package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
  473. package/dist/app/modules/database/repositories/schema-validation.d.ts +11 -0
  474. package/dist/app/modules/database/repositories/schema-validation.d.ts.map +1 -0
  475. package/dist/app/modules/database/repositories/schema-validation.mjs +77 -0
  476. package/dist/app/modules/database/repositories/schema-validation.mjs.map +1 -0
  477. package/dist/app/modules/database/repositories/scope/repository.d.ts +2 -1
  478. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  479. package/dist/app/modules/database/repositories/scope/repository.mjs +5 -29
  480. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  481. package/dist/app/modules/database/repositories/trust-anchor/repository.d.ts +2 -1
  482. package/dist/app/modules/database/repositories/trust-anchor/repository.d.ts.map +1 -1
  483. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +5 -29
  484. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs.map +1 -1
  485. package/dist/app/modules/database/repositories/user/repository.d.ts +3 -2
  486. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  487. package/dist/app/modules/database/repositories/user/repository.mjs +9 -66
  488. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  489. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts +2 -1
  490. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  491. package/dist/app/modules/database/repositories/user-attribute/repository.mjs +4 -20
  492. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  493. package/dist/app/modules/database/repositories/user-authenticator/repository.d.ts +2 -1
  494. package/dist/app/modules/database/repositories/user-authenticator/repository.d.ts.map +1 -1
  495. package/dist/app/modules/database/repositories/user-authenticator/repository.mjs +8 -34
  496. package/dist/app/modules/database/repositories/user-authenticator/repository.mjs.map +1 -1
  497. package/dist/app/modules/database/repositories/user-permission/repository.d.ts +2 -1
  498. package/dist/app/modules/database/repositories/user-permission/repository.d.ts.map +1 -1
  499. package/dist/app/modules/database/repositories/user-permission/repository.mjs +3 -17
  500. package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
  501. package/dist/app/modules/database/repositories/user-role/repository.d.ts +2 -1
  502. package/dist/app/modules/database/repositories/user-role/repository.d.ts.map +1 -1
  503. package/dist/app/modules/database/repositories/user-role/repository.mjs +3 -17
  504. package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
  505. package/dist/app/modules/http/module.mjs.map +1 -1
  506. package/dist/app/modules/http/modules/controller.d.ts +1 -4
  507. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  508. package/dist/app/modules/http/modules/controller.mjs +0 -52
  509. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  510. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  511. package/dist/app/modules/http/modules/middleware.mjs +0 -1
  512. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  513. package/dist/app/modules/identity/index.mjs +1 -2
  514. package/dist/app/modules/identity/module.d.ts.map +1 -1
  515. package/dist/app/modules/identity/module.mjs +1 -12
  516. package/dist/app/modules/identity/module.mjs.map +1 -1
  517. package/dist/app/modules/identity/repositories/client.mjs +2 -2
  518. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  519. package/dist/app/modules/identity/repositories/index.d.ts +0 -1
  520. package/dist/app/modules/identity/repositories/index.d.ts.map +1 -1
  521. package/dist/app/modules/identity/repositories/index.mjs +1 -2
  522. package/dist/app/modules/identity/repositories/provider/account/module.mjs +3 -3
  523. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  524. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs +1 -1
  525. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  526. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs +1 -1
  527. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  528. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs +1 -1
  529. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  530. package/dist/app/modules/identity/repositories/user.mjs +18 -18
  531. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  532. package/dist/app/modules/index.mjs +1 -5
  533. package/dist/app/modules/logger/module.mjs.map +1 -1
  534. package/dist/app/modules/mail/module.mjs.map +1 -1
  535. package/dist/app/modules/metrics/prom.mjs.map +1 -1
  536. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  537. package/dist/app/modules/oauth2/repositories/client/repository.mjs +1 -1
  538. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  539. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts +2 -1
  540. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts.map +1 -1
  541. package/dist/app/modules/oauth2/repositories/consent/repository.mjs +14 -38
  542. package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -1
  543. package/dist/app/modules/oauth2/repositories/constants.mjs.map +1 -1
  544. package/dist/app/modules/oauth2/repositories/scope/repository.mjs +1 -1
  545. package/dist/app/modules/oauth2/repositories/scope/repository.mjs.map +1 -1
  546. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +21 -18
  547. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -1
  548. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  549. package/dist/app/modules/provisioning/module.mjs +9 -24
  550. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  551. package/dist/app/modules/provisioning/sources/composite/module.d.ts +17 -0
  552. package/dist/app/modules/provisioning/sources/composite/module.d.ts.map +1 -1
  553. package/dist/app/modules/provisioning/sources/composite/module.mjs +54 -2
  554. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  555. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  556. package/dist/app/modules/provisioning/sources/default/module.mjs +43 -78
  557. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  558. package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
  559. package/dist/app/modules/provisioning/sources/file/module.mjs +4 -3
  560. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  561. package/dist/app/modules/provisioning/sources/file/types.d.ts +2 -0
  562. package/dist/app/modules/provisioning/sources/file/types.d.ts.map +1 -1
  563. package/dist/app/modules/provisioning/sources/index.mjs +1 -0
  564. package/dist/app/modules/runtime/module.mjs.map +1 -1
  565. package/dist/cli/commands/migration.mjs.map +1 -1
  566. package/dist/components/database/unique-entries/module.mjs +6 -6
  567. package/dist/components/database/unique-entries/module.mjs.map +1 -1
  568. package/dist/components/oauth2-cleaner/module.mjs +2 -2
  569. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  570. package/dist/core/authentication/credential/entities/client/module.d.ts +1 -1
  571. package/dist/core/authentication/credential/entities/client/module.d.ts.map +1 -1
  572. package/dist/core/authentication/credential/entities/client/module.mjs +3 -3
  573. package/dist/core/authentication/credential/entities/client/module.mjs.map +1 -1
  574. package/dist/core/authentication/credential/entities/index.d.ts +0 -1
  575. package/dist/core/authentication/credential/entities/index.d.ts.map +1 -1
  576. package/dist/core/authentication/credential/entities/index.mjs +1 -3
  577. package/dist/core/authentication/credential/index.mjs +1 -2
  578. package/dist/core/authentication/entities/client/module.mjs +1 -1
  579. package/dist/core/authentication/entities/client/module.mjs.map +1 -1
  580. package/dist/core/authentication/entities/index.d.ts +0 -1
  581. package/dist/core/authentication/entities/index.d.ts.map +1 -1
  582. package/dist/core/authentication/entities/index.mjs +1 -3
  583. package/dist/core/authentication/index.mjs +1 -3
  584. package/dist/core/authentication/session/module.d.ts.map +1 -1
  585. package/dist/core/authentication/session/module.mjs +14 -17
  586. package/dist/core/authentication/session/module.mjs.map +1 -1
  587. package/dist/core/authentication/session/types.d.ts +7 -6
  588. package/dist/core/authentication/session/types.d.ts.map +1 -1
  589. package/dist/core/authentication/session/types.mjs +4 -5
  590. package/dist/core/authentication/session/types.mjs.map +1 -1
  591. package/dist/core/client-certificate/module.d.ts +2 -1
  592. package/dist/core/client-certificate/module.d.ts.map +1 -1
  593. package/dist/core/client-certificate/module.mjs +2 -1
  594. package/dist/core/client-certificate/module.mjs.map +1 -1
  595. package/dist/core/client-certificate/reflect.d.ts +2 -0
  596. package/dist/core/client-certificate/reflect.d.ts.map +1 -0
  597. package/dist/core/{identity/entities/robot/index.mjs → client-certificate/reflect.mjs} +1 -0
  598. package/dist/core/client-certificate/types.d.ts +1 -1
  599. package/dist/core/client-certificate/types.d.ts.map +1 -1
  600. package/dist/core/entities/client/index.d.ts +1 -0
  601. package/dist/core/entities/client/index.d.ts.map +1 -1
  602. package/dist/core/entities/client/index.mjs +2 -1
  603. package/dist/core/entities/client/schema.d.ts +3 -0
  604. package/dist/core/entities/client/schema.d.ts.map +1 -0
  605. package/dist/core/entities/client/schema.mjs +59 -0
  606. package/dist/core/entities/client/schema.mjs.map +1 -0
  607. package/dist/core/entities/client/service.d.ts.map +1 -1
  608. package/dist/core/entities/client/service.mjs +42 -19
  609. package/dist/core/entities/client/service.mjs.map +1 -1
  610. package/dist/core/entities/client/types.d.ts +2 -1
  611. package/dist/core/entities/client/types.d.ts.map +1 -1
  612. package/dist/core/entities/client/web-client.d.ts +4 -4
  613. package/dist/core/entities/client/web-client.mjs +13 -13
  614. package/dist/core/entities/client/web-client.mjs.map +1 -1
  615. package/dist/core/entities/client-permission/index.d.ts +1 -0
  616. package/dist/core/entities/client-permission/index.d.ts.map +1 -1
  617. package/dist/core/entities/client-permission/index.mjs +2 -1
  618. package/dist/core/entities/client-permission/schema.d.ts +3 -0
  619. package/dist/core/entities/client-permission/schema.d.ts.map +1 -0
  620. package/dist/core/entities/client-permission/schema.mjs +41 -0
  621. package/dist/core/entities/client-permission/schema.mjs.map +1 -0
  622. package/dist/core/entities/client-permission/service.d.ts +1 -1
  623. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  624. package/dist/core/entities/client-permission/service.mjs +24 -18
  625. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  626. package/dist/core/entities/client-role/index.d.ts +1 -0
  627. package/dist/core/entities/client-role/index.d.ts.map +1 -1
  628. package/dist/core/entities/client-role/index.mjs +2 -1
  629. package/dist/core/entities/client-role/schema.d.ts +3 -0
  630. package/dist/core/entities/client-role/schema.d.ts.map +1 -0
  631. package/dist/core/entities/client-role/schema.mjs +39 -0
  632. package/dist/core/entities/client-role/schema.mjs.map +1 -0
  633. package/dist/core/entities/client-role/service.d.ts +1 -1
  634. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  635. package/dist/core/entities/client-role/service.mjs +14 -8
  636. package/dist/core/entities/client-role/service.mjs.map +1 -1
  637. package/dist/core/entities/client-scope/index.d.ts +1 -0
  638. package/dist/core/entities/client-scope/index.d.ts.map +1 -1
  639. package/dist/core/entities/client-scope/index.mjs +2 -1
  640. package/dist/core/entities/client-scope/schema.d.ts +3 -0
  641. package/dist/core/entities/client-scope/schema.d.ts.map +1 -0
  642. package/dist/core/entities/client-scope/schema.mjs +37 -0
  643. package/dist/core/entities/client-scope/schema.mjs.map +1 -0
  644. package/dist/core/entities/client-scope/service.d.ts +1 -1
  645. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  646. package/dist/core/entities/client-scope/service.mjs +12 -6
  647. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  648. package/dist/core/entities/consent/index.d.ts +1 -0
  649. package/dist/core/entities/consent/index.d.ts.map +1 -1
  650. package/dist/core/entities/consent/index.mjs +2 -1
  651. package/dist/core/entities/consent/schema.d.ts +3 -0
  652. package/dist/core/entities/consent/schema.d.ts.map +1 -0
  653. package/dist/core/entities/consent/schema.mjs +40 -0
  654. package/dist/core/entities/consent/schema.mjs.map +1 -0
  655. package/dist/core/entities/consent/service.d.ts.map +1 -1
  656. package/dist/core/entities/consent/service.mjs +22 -6
  657. package/dist/core/entities/consent/service.mjs.map +1 -1
  658. package/dist/core/entities/consent/types.d.ts +3 -2
  659. package/dist/core/entities/consent/types.d.ts.map +1 -1
  660. package/dist/core/entities/consent/types.mjs +3 -3
  661. package/dist/core/entities/consent/types.mjs.map +1 -1
  662. package/dist/core/entities/event/diff.d.ts +4 -4
  663. package/dist/core/entities/event/diff.mjs +5 -5
  664. package/dist/core/entities/event/diff.mjs.map +1 -1
  665. package/dist/core/entities/event/entity-event-handler.d.ts.map +1 -1
  666. package/dist/core/entities/event/entity-event-handler.mjs +29 -31
  667. package/dist/core/entities/event/entity-event-handler.mjs.map +1 -1
  668. package/dist/core/entities/event/index.d.ts +1 -0
  669. package/dist/core/entities/event/index.d.ts.map +1 -1
  670. package/dist/core/entities/event/index.mjs +2 -1
  671. package/dist/core/entities/event/sanitize.mjs +8 -8
  672. package/dist/core/entities/event/sanitize.mjs.map +1 -1
  673. package/dist/core/entities/event/schema.d.ts +3 -0
  674. package/dist/core/entities/event/schema.d.ts.map +1 -0
  675. package/dist/core/entities/event/schema.mjs +51 -0
  676. package/dist/core/entities/event/schema.mjs.map +1 -0
  677. package/dist/core/entities/event/service.d.ts.map +1 -1
  678. package/dist/core/entities/event/service.mjs +38 -22
  679. package/dist/core/entities/event/service.mjs.map +1 -1
  680. package/dist/core/entities/event/types.d.ts +6 -5
  681. package/dist/core/entities/event/types.d.ts.map +1 -1
  682. package/dist/core/entities/identity-provider/index.d.ts +1 -0
  683. package/dist/core/entities/identity-provider/index.d.ts.map +1 -1
  684. package/dist/core/entities/identity-provider/index.mjs +2 -1
  685. package/dist/core/entities/identity-provider/schema.d.ts +3 -0
  686. package/dist/core/entities/identity-provider/schema.d.ts.map +1 -0
  687. package/dist/core/entities/identity-provider/schema.mjs +43 -0
  688. package/dist/core/entities/identity-provider/schema.mjs.map +1 -0
  689. package/dist/core/entities/identity-provider-role-mapping/index.d.ts +1 -0
  690. package/dist/core/entities/identity-provider-role-mapping/index.d.ts.map +1 -1
  691. package/dist/core/entities/identity-provider-role-mapping/index.mjs +2 -1
  692. package/dist/core/entities/identity-provider-role-mapping/schema.d.ts +3 -0
  693. package/dist/core/entities/identity-provider-role-mapping/schema.d.ts.map +1 -0
  694. package/dist/core/entities/identity-provider-role-mapping/schema.mjs +43 -0
  695. package/dist/core/entities/identity-provider-role-mapping/schema.mjs.map +1 -0
  696. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +1 -1
  697. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  698. package/dist/core/entities/identity-provider-role-mapping/service.mjs +17 -11
  699. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  700. package/dist/core/entities/index.d.ts +0 -3
  701. package/dist/core/entities/index.d.ts.map +1 -1
  702. package/dist/core/entities/index.mjs +26 -7
  703. package/dist/core/entities/key/index.d.ts +1 -0
  704. package/dist/core/entities/key/index.d.ts.map +1 -1
  705. package/dist/core/entities/key/index.mjs +2 -1
  706. package/dist/core/entities/key/schema.d.ts +3 -0
  707. package/dist/core/entities/key/schema.d.ts.map +1 -0
  708. package/dist/core/entities/key/schema.mjs +53 -0
  709. package/dist/core/entities/key/schema.mjs.map +1 -0
  710. package/dist/core/entities/key/service.d.ts +2 -2
  711. package/dist/core/entities/key/service.d.ts.map +1 -1
  712. package/dist/core/entities/key/service.mjs +47 -28
  713. package/dist/core/entities/key/service.mjs.map +1 -1
  714. package/dist/core/entities/key/types.d.ts +9 -1
  715. package/dist/core/entities/key/types.d.ts.map +1 -1
  716. package/dist/core/entities/permission/index.d.ts +1 -0
  717. package/dist/core/entities/permission/index.d.ts.map +1 -1
  718. package/dist/core/entities/permission/index.mjs +2 -1
  719. package/dist/core/entities/permission/schema.d.ts +3 -0
  720. package/dist/core/entities/permission/schema.d.ts.map +1 -0
  721. package/dist/core/entities/permission/schema.mjs +40 -0
  722. package/dist/core/entities/permission/schema.mjs.map +1 -0
  723. package/dist/core/entities/permission/service.d.ts +7 -2
  724. package/dist/core/entities/permission/service.d.ts.map +1 -1
  725. package/dist/core/entities/permission/service.mjs +53 -40
  726. package/dist/core/entities/permission/service.mjs.map +1 -1
  727. package/dist/core/entities/permission-policy/index.d.ts +1 -0
  728. package/dist/core/entities/permission-policy/index.d.ts.map +1 -1
  729. package/dist/core/entities/permission-policy/index.mjs +2 -1
  730. package/dist/core/entities/permission-policy/schema.d.ts +3 -0
  731. package/dist/core/entities/permission-policy/schema.d.ts.map +1 -0
  732. package/dist/core/entities/permission-policy/schema.mjs +39 -0
  733. package/dist/core/entities/permission-policy/schema.mjs.map +1 -0
  734. package/dist/core/entities/permission-policy/service.d.ts +1 -1
  735. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  736. package/dist/core/entities/permission-policy/service.mjs +12 -6
  737. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  738. package/dist/core/entities/policy/index.d.ts +1 -0
  739. package/dist/core/entities/policy/index.d.ts.map +1 -1
  740. package/dist/core/entities/policy/index.mjs +2 -1
  741. package/dist/core/entities/policy/schema.d.ts +3 -0
  742. package/dist/core/entities/policy/schema.d.ts.map +1 -0
  743. package/dist/core/entities/policy/schema.mjs +49 -0
  744. package/dist/core/entities/policy/schema.mjs.map +1 -0
  745. package/dist/core/entities/policy/service.d.ts.map +1 -1
  746. package/dist/core/entities/policy/service.mjs +13 -7
  747. package/dist/core/entities/policy/service.mjs.map +1 -1
  748. package/dist/core/entities/realm/index.d.ts +1 -0
  749. package/dist/core/entities/realm/index.d.ts.map +1 -1
  750. package/dist/core/entities/realm/index.mjs +2 -1
  751. package/dist/core/entities/realm/schema.d.ts +3 -0
  752. package/dist/core/entities/realm/schema.d.ts.map +1 -0
  753. package/dist/core/entities/realm/schema.mjs +36 -0
  754. package/dist/core/entities/realm/schema.mjs.map +1 -0
  755. package/dist/core/entities/realm/service.d.ts.map +1 -1
  756. package/dist/core/entities/realm/service.mjs +5 -2
  757. package/dist/core/entities/realm/service.mjs.map +1 -1
  758. package/dist/core/entities/realm/types.d.ts +1 -1
  759. package/dist/core/entities/role/index.d.ts +1 -0
  760. package/dist/core/entities/role/index.d.ts.map +1 -1
  761. package/dist/core/entities/role/index.mjs +2 -1
  762. package/dist/core/entities/role/schema.d.ts +3 -0
  763. package/dist/core/entities/role/schema.d.ts.map +1 -0
  764. package/dist/core/entities/role/schema.mjs +43 -0
  765. package/dist/core/entities/role/schema.mjs.map +1 -0
  766. package/dist/core/entities/role/service.d.ts.map +1 -1
  767. package/dist/core/entities/role/service.mjs +11 -5
  768. package/dist/core/entities/role/service.mjs.map +1 -1
  769. package/dist/core/entities/role-attribute/index.d.ts +1 -0
  770. package/dist/core/entities/role-attribute/index.d.ts.map +1 -1
  771. package/dist/core/entities/role-attribute/index.mjs +2 -1
  772. package/dist/core/entities/role-attribute/schema.d.ts +3 -0
  773. package/dist/core/entities/role-attribute/schema.d.ts.map +1 -0
  774. package/dist/core/entities/role-attribute/schema.mjs +47 -0
  775. package/dist/core/entities/role-attribute/schema.mjs.map +1 -0
  776. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  777. package/dist/core/entities/role-attribute/service.mjs +19 -6
  778. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  779. package/dist/core/entities/role-permission/index.d.ts +1 -0
  780. package/dist/core/entities/role-permission/index.d.ts.map +1 -1
  781. package/dist/core/entities/role-permission/index.mjs +2 -1
  782. package/dist/core/entities/role-permission/schema.d.ts +3 -0
  783. package/dist/core/entities/role-permission/schema.d.ts.map +1 -0
  784. package/dist/core/entities/role-permission/schema.mjs +41 -0
  785. package/dist/core/entities/role-permission/schema.mjs.map +1 -0
  786. package/dist/core/entities/role-permission/service.d.ts +1 -1
  787. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  788. package/dist/core/entities/role-permission/service.mjs +24 -18
  789. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  790. package/dist/core/entities/scope/index.d.ts +1 -0
  791. package/dist/core/entities/scope/index.d.ts.map +1 -1
  792. package/dist/core/entities/scope/index.mjs +2 -1
  793. package/dist/core/entities/scope/schema.d.ts +3 -0
  794. package/dist/core/entities/scope/schema.d.ts.map +1 -0
  795. package/dist/core/entities/scope/schema.mjs +43 -0
  796. package/dist/core/entities/scope/schema.mjs.map +1 -0
  797. package/dist/core/entities/scope/service.d.ts.map +1 -1
  798. package/dist/core/entities/scope/service.mjs +11 -5
  799. package/dist/core/entities/scope/service.mjs.map +1 -1
  800. package/dist/core/entities/session/index.d.ts +1 -0
  801. package/dist/core/entities/session/index.d.ts.map +1 -1
  802. package/dist/core/entities/session/index.mjs +2 -1
  803. package/dist/core/entities/session/schema.d.ts +3 -0
  804. package/dist/core/entities/session/schema.d.ts.map +1 -0
  805. package/dist/core/entities/session/schema.mjs +44 -0
  806. package/dist/core/entities/session/schema.mjs.map +1 -0
  807. package/dist/core/entities/session/service.d.ts +11 -0
  808. package/dist/core/entities/session/service.d.ts.map +1 -1
  809. package/dist/core/entities/session/service.mjs +48 -11
  810. package/dist/core/entities/session/service.mjs.map +1 -1
  811. package/dist/core/entities/session/types.d.ts +2 -2
  812. package/dist/core/entities/trust-anchor/index.d.ts +1 -0
  813. package/dist/core/entities/trust-anchor/index.d.ts.map +1 -1
  814. package/dist/core/entities/trust-anchor/index.mjs +2 -1
  815. package/dist/core/entities/trust-anchor/schema.d.ts +3 -0
  816. package/dist/core/entities/trust-anchor/schema.d.ts.map +1 -0
  817. package/dist/core/entities/trust-anchor/schema.mjs +43 -0
  818. package/dist/core/entities/trust-anchor/schema.mjs.map +1 -0
  819. package/dist/core/entities/trust-anchor/service.d.ts +2 -2
  820. package/dist/core/entities/trust-anchor/service.d.ts.map +1 -1
  821. package/dist/core/entities/trust-anchor/service.mjs +23 -7
  822. package/dist/core/entities/trust-anchor/service.mjs.map +1 -1
  823. package/dist/core/entities/trust-anchor/types.d.ts +9 -1
  824. package/dist/core/entities/trust-anchor/types.d.ts.map +1 -1
  825. package/dist/core/entities/user/index.d.ts +1 -0
  826. package/dist/core/entities/user/index.d.ts.map +1 -1
  827. package/dist/core/entities/user/index.mjs +2 -1
  828. package/dist/core/entities/user/schema.d.ts +3 -0
  829. package/dist/core/entities/user/schema.d.ts.map +1 -0
  830. package/dist/core/entities/user/schema.mjs +50 -0
  831. package/dist/core/entities/user/schema.mjs.map +1 -0
  832. package/dist/core/entities/user/service.d.ts.map +1 -1
  833. package/dist/core/entities/user/service.mjs +33 -12
  834. package/dist/core/entities/user/service.mjs.map +1 -1
  835. package/dist/core/entities/user/types.d.ts +2 -1
  836. package/dist/core/entities/user/types.d.ts.map +1 -1
  837. package/dist/core/entities/user-attribute/index.d.ts +1 -0
  838. package/dist/core/entities/user-attribute/index.d.ts.map +1 -1
  839. package/dist/core/entities/user-attribute/index.mjs +2 -1
  840. package/dist/core/entities/user-attribute/schema.d.ts +3 -0
  841. package/dist/core/entities/user-attribute/schema.d.ts.map +1 -0
  842. package/dist/core/entities/user-attribute/schema.mjs +47 -0
  843. package/dist/core/entities/user-attribute/schema.mjs.map +1 -0
  844. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  845. package/dist/core/entities/user-attribute/service.mjs +26 -10
  846. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  847. package/dist/core/entities/user-authenticator/index.d.ts +1 -0
  848. package/dist/core/entities/user-authenticator/index.d.ts.map +1 -1
  849. package/dist/core/entities/user-authenticator/index.mjs +2 -1
  850. package/dist/core/entities/user-authenticator/schema.d.ts +3 -0
  851. package/dist/core/entities/user-authenticator/schema.d.ts.map +1 -0
  852. package/dist/core/entities/user-authenticator/schema.mjs +47 -0
  853. package/dist/core/entities/user-authenticator/schema.mjs.map +1 -0
  854. package/dist/core/entities/user-authenticator/service.d.ts.map +1 -1
  855. package/dist/core/entities/user-authenticator/service.mjs +49 -27
  856. package/dist/core/entities/user-authenticator/service.mjs.map +1 -1
  857. package/dist/core/entities/user-authenticator/types.d.ts +4 -3
  858. package/dist/core/entities/user-authenticator/types.d.ts.map +1 -1
  859. package/dist/core/entities/user-authenticator/types.mjs +2 -2
  860. package/dist/core/entities/user-authenticator/types.mjs.map +1 -1
  861. package/dist/core/entities/user-permission/index.d.ts +1 -0
  862. package/dist/core/entities/user-permission/index.d.ts.map +1 -1
  863. package/dist/core/entities/user-permission/index.mjs +2 -1
  864. package/dist/core/entities/user-permission/schema.d.ts +3 -0
  865. package/dist/core/entities/user-permission/schema.d.ts.map +1 -0
  866. package/dist/core/entities/user-permission/schema.mjs +41 -0
  867. package/dist/core/entities/user-permission/schema.mjs.map +1 -0
  868. package/dist/core/entities/user-permission/service.d.ts +1 -1
  869. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  870. package/dist/core/entities/user-permission/service.mjs +24 -18
  871. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  872. package/dist/core/entities/user-role/index.d.ts +1 -0
  873. package/dist/core/entities/user-role/index.d.ts.map +1 -1
  874. package/dist/core/entities/user-role/index.mjs +2 -1
  875. package/dist/core/entities/user-role/schema.d.ts +3 -0
  876. package/dist/core/entities/user-role/schema.d.ts.map +1 -0
  877. package/dist/core/entities/user-role/schema.mjs +39 -0
  878. package/dist/core/entities/user-role/schema.mjs.map +1 -0
  879. package/dist/core/entities/user-role/service.d.ts +1 -1
  880. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  881. package/dist/core/entities/user-role/service.mjs +14 -8
  882. package/dist/core/entities/user-role/service.mjs.map +1 -1
  883. package/dist/core/identity/entities/index.d.ts +0 -1
  884. package/dist/core/identity/entities/index.d.ts.map +1 -1
  885. package/dist/core/identity/password-recovery/service.mjs +21 -21
  886. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  887. package/dist/core/identity/password-recovery/types.d.ts +2 -2
  888. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  889. package/dist/core/identity/permission/checker/service.mjs +2 -2
  890. package/dist/core/identity/permission/checker/service.mjs.map +1 -1
  891. package/dist/core/identity/permission/identity-policy-data.mjs +2 -2
  892. package/dist/core/identity/permission/identity-policy-data.mjs.map +1 -1
  893. package/dist/core/identity/permission/junction-grant.d.ts +6 -6
  894. package/dist/core/identity/permission/junction-grant.mjs +14 -14
  895. package/dist/core/identity/permission/junction-grant.mjs.map +1 -1
  896. package/dist/core/identity/permission/module.d.ts +0 -3
  897. package/dist/core/identity/permission/module.d.ts.map +1 -1
  898. package/dist/core/identity/permission/module.mjs +9 -15
  899. package/dist/core/identity/permission/module.mjs.map +1 -1
  900. package/dist/core/identity/permission/types.d.ts +0 -2
  901. package/dist/core/identity/permission/types.d.ts.map +1 -1
  902. package/dist/core/identity/policy/checker/service.mjs +1 -1
  903. package/dist/core/identity/policy/checker/service.mjs.map +1 -1
  904. package/dist/core/identity/provider/account/module.mjs +9 -9
  905. package/dist/core/identity/provider/account/module.mjs.map +1 -1
  906. package/dist/core/identity/provider/authentication/presets/facebook.mjs +5 -5
  907. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  908. package/dist/core/identity/provider/authentication/presets/github.mjs +3 -3
  909. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  910. package/dist/core/identity/provider/authentication/presets/google.mjs +5 -5
  911. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  912. package/dist/core/identity/provider/authentication/presets/instagram.mjs +3 -3
  913. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  914. package/dist/core/identity/provider/authentication/presets/paypal.mjs +3 -3
  915. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  916. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs +20 -20
  917. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs.map +1 -1
  918. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +5 -5
  919. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  920. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
  921. package/dist/core/identity/provider/constants.mjs.map +1 -1
  922. package/dist/core/identity/provider/mapper/attributes/module.mjs +3 -3
  923. package/dist/core/identity/provider/mapper/attributes/module.mjs.map +1 -1
  924. package/dist/core/identity/provider/mapper/base.mjs +2 -2
  925. package/dist/core/identity/provider/mapper/base.mjs.map +1 -1
  926. package/dist/core/identity/provider/mapper/constants.mjs.map +1 -1
  927. package/dist/core/identity/provider/mapper/permission/module.mjs +2 -2
  928. package/dist/core/identity/provider/mapper/permission/module.mjs.map +1 -1
  929. package/dist/core/identity/provider/mapper/role/module.mjs +2 -2
  930. package/dist/core/identity/provider/mapper/role/module.mjs.map +1 -1
  931. package/dist/core/identity/registration/service.mjs +9 -9
  932. package/dist/core/identity/registration/service.mjs.map +1 -1
  933. package/dist/core/identity/resolver/module.d.ts +1 -3
  934. package/dist/core/identity/resolver/module.d.ts.map +1 -1
  935. package/dist/core/identity/resolver/module.mjs +0 -13
  936. package/dist/core/identity/resolver/module.mjs.map +1 -1
  937. package/dist/core/identity/resolver/types.d.ts +1 -2
  938. package/dist/core/identity/resolver/types.d.ts.map +1 -1
  939. package/dist/core/identity/role/module.d.ts +0 -2
  940. package/dist/core/identity/role/module.d.ts.map +1 -1
  941. package/dist/core/identity/role/module.mjs +1 -4
  942. package/dist/core/identity/role/module.mjs.map +1 -1
  943. package/dist/core/identity/role/types.d.ts +0 -2
  944. package/dist/core/identity/role/types.d.ts.map +1 -1
  945. package/dist/core/index.d.ts +1 -0
  946. package/dist/core/index.d.ts.map +1 -1
  947. package/dist/core/index.mjs +28 -9
  948. package/dist/core/key/provisioner.mjs.map +1 -1
  949. package/dist/core/key/realm-cipher.mjs +5 -5
  950. package/dist/core/key/realm-cipher.mjs.map +1 -1
  951. package/dist/core/mail/template/templates/mfa-email-otp.mjs.map +1 -1
  952. package/dist/core/mail/template/templates/password-reset.mjs.map +1 -1
  953. package/dist/core/mail/template/templates/registration-activation.mjs.map +1 -1
  954. package/dist/core/mail/template/types.mjs.map +1 -1
  955. package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
  956. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +3 -3
  957. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  958. package/dist/core/oauth2/authorization/helpers.d.ts +2 -2
  959. package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
  960. package/dist/core/oauth2/authorization/helpers.mjs +5 -5
  961. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  962. package/dist/core/oauth2/authorization/module.mjs +8 -8
  963. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  964. package/dist/core/oauth2/client/authenticator.d.ts +1 -1
  965. package/dist/core/oauth2/client/authenticator.d.ts.map +1 -1
  966. package/dist/core/oauth2/client/authenticator.mjs +3 -3
  967. package/dist/core/oauth2/client/authenticator.mjs.map +1 -1
  968. package/dist/core/oauth2/client/grant-type.d.ts +1 -1
  969. package/dist/core/oauth2/client/grant-type.d.ts.map +1 -1
  970. package/dist/core/oauth2/client/grant-type.mjs +2 -2
  971. package/dist/core/oauth2/client/grant-type.mjs.map +1 -1
  972. package/dist/core/oauth2/end-session/service.mjs +5 -5
  973. package/dist/core/oauth2/end-session/service.mjs.map +1 -1
  974. package/dist/core/oauth2/grant-types/authorize.mjs +9 -9
  975. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  976. package/dist/core/oauth2/grant-types/client-credentials.mjs +7 -7
  977. package/dist/core/oauth2/grant-types/client-credentials.mjs.map +1 -1
  978. package/dist/core/oauth2/grant-types/identity.mjs +10 -10
  979. package/dist/core/oauth2/grant-types/identity.mjs.map +1 -1
  980. package/dist/core/oauth2/grant-types/index.d.ts +0 -1
  981. package/dist/core/oauth2/grant-types/index.d.ts.map +1 -1
  982. package/dist/core/oauth2/grant-types/index.mjs +1 -2
  983. package/dist/core/oauth2/grant-types/password.d.ts +1 -1
  984. package/dist/core/oauth2/grant-types/password.mjs +13 -13
  985. package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
  986. package/dist/core/oauth2/grant-types/refresh-token.mjs +12 -12
  987. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  988. package/dist/core/oauth2/index.mjs +1 -2
  989. package/dist/core/oauth2/mfa-login/module.mjs +21 -21
  990. package/dist/core/oauth2/mfa-login/module.mjs.map +1 -1
  991. package/dist/core/oauth2/mfa-login/types.d.ts +1 -1
  992. package/dist/core/oauth2/openid/claims.d.ts +1 -3
  993. package/dist/core/oauth2/openid/claims.d.ts.map +1 -1
  994. package/dist/core/oauth2/openid/claims.mjs +6 -19
  995. package/dist/core/oauth2/openid/claims.mjs.map +1 -1
  996. package/dist/core/oauth2/scope/resolver.d.ts +1 -3
  997. package/dist/core/oauth2/scope/resolver.d.ts.map +1 -1
  998. package/dist/core/oauth2/scope/resolver.mjs +9 -31
  999. package/dist/core/oauth2/scope/resolver.mjs.map +1 -1
  1000. package/dist/core/oauth2/session-token/types.d.ts +8 -8
  1001. package/dist/core/oauth2/session-token/types.d.ts.map +1 -1
  1002. package/dist/core/oauth2/token/issuer/access/module.mjs +7 -7
  1003. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  1004. package/dist/core/oauth2/token/issuer/mfa/module.mjs.map +1 -1
  1005. package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
  1006. package/dist/core/oauth2/token/issuer/refresh/module.mjs +5 -5
  1007. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  1008. package/dist/core/oauth2/token/signer/module.mjs +6 -6
  1009. package/dist/core/oauth2/token/signer/module.mjs.map +1 -1
  1010. package/dist/core/oauth2/token/verifier/module.mjs +8 -8
  1011. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  1012. package/dist/core/provisioning/entities/index.d.ts +0 -1
  1013. package/dist/core/provisioning/entities/index.d.ts.map +1 -1
  1014. package/dist/core/provisioning/entities/index.mjs +1 -3
  1015. package/dist/core/provisioning/entities/policy/validator.d.ts +2 -0
  1016. package/dist/core/provisioning/entities/policy/validator.d.ts.map +1 -1
  1017. package/dist/core/provisioning/entities/policy/validator.mjs +10 -1
  1018. package/dist/core/provisioning/entities/policy/validator.mjs.map +1 -1
  1019. package/dist/core/provisioning/entities/realm/relations-validator.d.ts.map +1 -1
  1020. package/dist/core/provisioning/entities/realm/relations-validator.mjs +0 -4
  1021. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  1022. package/dist/core/provisioning/entities/realm/types.d.ts +0 -2
  1023. package/dist/core/provisioning/entities/realm/types.d.ts.map +1 -1
  1024. package/dist/core/provisioning/entities/role/types.d.ts +2 -2
  1025. package/dist/core/provisioning/entities/utils.mjs.map +1 -1
  1026. package/dist/core/provisioning/index.mjs +1 -3
  1027. package/dist/core/provisioning/strategy/constants.mjs.map +1 -1
  1028. package/dist/core/provisioning/strategy/validator.mjs.map +1 -1
  1029. package/dist/core/provisioning/synchronizer/client/module.mjs +11 -11
  1030. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  1031. package/dist/core/provisioning/synchronizer/entity-resolver.mjs +12 -12
  1032. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  1033. package/dist/core/provisioning/synchronizer/index.d.ts +0 -1
  1034. package/dist/core/provisioning/synchronizer/index.d.ts.map +1 -1
  1035. package/dist/core/provisioning/synchronizer/index.mjs +1 -3
  1036. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts +2 -2
  1037. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts.map +1 -1
  1038. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs +2 -2
  1039. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs.map +1 -1
  1040. package/dist/core/provisioning/synchronizer/permission/module.mjs +8 -8
  1041. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  1042. package/dist/core/provisioning/synchronizer/policy/module.mjs +11 -11
  1043. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  1044. package/dist/core/provisioning/synchronizer/realm/module.d.ts +0 -2
  1045. package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
  1046. package/dist/core/provisioning/synchronizer/realm/module.mjs +5 -15
  1047. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  1048. package/dist/core/provisioning/synchronizer/realm/types.d.ts +0 -2
  1049. package/dist/core/provisioning/synchronizer/realm/types.d.ts.map +1 -1
  1050. package/dist/core/provisioning/synchronizer/role/module.mjs +7 -7
  1051. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  1052. package/dist/core/provisioning/synchronizer/scope/module.mjs +1 -1
  1053. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  1054. package/dist/core/provisioning/synchronizer/user/module.mjs +13 -13
  1055. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  1056. package/dist/core/query/index.d.ts +4 -0
  1057. package/dist/core/query/index.d.ts.map +1 -0
  1058. package/dist/core/query/index.mjs +6 -0
  1059. package/dist/core/query/module.d.ts +60 -0
  1060. package/dist/core/query/module.d.ts.map +1 -0
  1061. package/dist/core/query/module.mjs +128 -0
  1062. package/dist/core/query/module.mjs.map +1 -0
  1063. package/dist/core/query/relations.d.ts +39 -0
  1064. package/dist/core/query/relations.d.ts.map +1 -0
  1065. package/dist/core/query/relations.mjs +103 -0
  1066. package/dist/core/query/relations.mjs.map +1 -0
  1067. package/dist/core/query/types.d.ts +39 -0
  1068. package/dist/core/query/types.d.ts.map +1 -0
  1069. package/dist/core/security/policy/evaluator.d.ts +1 -0
  1070. package/dist/core/security/policy/evaluator.d.ts.map +1 -1
  1071. package/dist/core/security/policy/evaluator.mjs +52 -5
  1072. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  1073. package/dist/index.mjs +1 -17
  1074. package/dist/swagger.json +2552 -3798
  1075. package/dist/ui/client/.vite/ssr-manifest.json +1542 -894
  1076. package/dist/ui/client/assets/index-CiHrf73J.css +2 -0
  1077. package/dist/ui/client/assets/{index-CT0Nq5pA.js → index-mtJngmng.js} +21 -18
  1078. package/dist/ui/client/index.html +2 -2
  1079. package/dist/ui/server/server.js +10344 -3440
  1080. package/package.json +35 -30
  1081. package/dist/adapters/database/domains/robot/entity.d.ts +0 -19
  1082. package/dist/adapters/database/domains/robot/entity.d.ts.map +0 -1
  1083. package/dist/adapters/database/domains/robot/entity.mjs +0 -112
  1084. package/dist/adapters/database/domains/robot/entity.mjs.map +0 -1
  1085. package/dist/adapters/database/domains/robot/index.d.ts +0 -3
  1086. package/dist/adapters/database/domains/robot/index.d.ts.map +0 -1
  1087. package/dist/adapters/database/domains/robot/index.mjs +0 -6
  1088. package/dist/adapters/database/domains/robot/subscriber.d.ts +0 -6
  1089. package/dist/adapters/database/domains/robot/subscriber.d.ts.map +0 -1
  1090. package/dist/adapters/database/domains/robot/subscriber.mjs +0 -42
  1091. package/dist/adapters/database/domains/robot/subscriber.mjs.map +0 -1
  1092. package/dist/adapters/database/domains/robot-permission/entity.d.ts +0 -18
  1093. package/dist/adapters/database/domains/robot-permission/entity.d.ts.map +0 -1
  1094. package/dist/adapters/database/domains/robot-permission/entity.mjs +0 -91
  1095. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +0 -1
  1096. package/dist/adapters/database/domains/robot-permission/index.d.ts +0 -3
  1097. package/dist/adapters/database/domains/robot-permission/index.d.ts.map +0 -1
  1098. package/dist/adapters/database/domains/robot-permission/index.mjs +0 -6
  1099. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts +0 -6
  1100. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts.map +0 -1
  1101. package/dist/adapters/database/domains/robot-permission/subscriber.mjs +0 -45
  1102. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +0 -1
  1103. package/dist/adapters/database/domains/robot-role/entity.d.ts +0 -15
  1104. package/dist/adapters/database/domains/robot-role/entity.d.ts.map +0 -1
  1105. package/dist/adapters/database/domains/robot-role/entity.mjs +0 -72
  1106. package/dist/adapters/database/domains/robot-role/entity.mjs.map +0 -1
  1107. package/dist/adapters/database/domains/robot-role/index.d.ts +0 -3
  1108. package/dist/adapters/database/domains/robot-role/index.d.ts.map +0 -1
  1109. package/dist/adapters/database/domains/robot-role/index.mjs +0 -6
  1110. package/dist/adapters/database/domains/robot-role/subscriber.d.ts +0 -6
  1111. package/dist/adapters/database/domains/robot-role/subscriber.d.ts.map +0 -1
  1112. package/dist/adapters/database/domains/robot-role/subscriber.mjs +0 -45
  1113. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +0 -1
  1114. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts +0 -12
  1115. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts.map +0 -1
  1116. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs +0 -27
  1117. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +0 -1
  1118. package/dist/adapters/http/controllers/entities/robot/index.d.ts +0 -2
  1119. package/dist/adapters/http/controllers/entities/robot/index.d.ts.map +0 -1
  1120. package/dist/adapters/http/controllers/entities/robot/index.mjs +0 -5
  1121. package/dist/adapters/http/controllers/entities/robot/module.d.ts +0 -25
  1122. package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +0 -1
  1123. package/dist/adapters/http/controllers/entities/robot/module.mjs +0 -180
  1124. package/dist/adapters/http/controllers/entities/robot/module.mjs.map +0 -1
  1125. package/dist/adapters/http/controllers/entities/robot-permission/index.d.ts +0 -3
  1126. package/dist/adapters/http/controllers/entities/robot-permission/index.d.ts.map +0 -1
  1127. package/dist/adapters/http/controllers/entities/robot-permission/index.mjs +0 -7
  1128. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts +0 -17
  1129. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts.map +0 -1
  1130. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +0 -114
  1131. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +0 -1
  1132. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.d.ts +0 -2
  1133. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.d.ts.map +0 -1
  1134. package/dist/adapters/http/controllers/entities/robot-permission/utils/index.mjs +0 -5
  1135. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.d.ts +0 -6
  1136. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.d.ts.map +0 -1
  1137. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs +0 -21
  1138. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs.map +0 -1
  1139. package/dist/adapters/http/controllers/entities/robot-role/index.d.ts +0 -3
  1140. package/dist/adapters/http/controllers/entities/robot-role/index.d.ts.map +0 -1
  1141. package/dist/adapters/http/controllers/entities/robot-role/index.mjs +0 -7
  1142. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts +0 -16
  1143. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts.map +0 -1
  1144. package/dist/adapters/http/controllers/entities/robot-role/module.mjs +0 -95
  1145. package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +0 -1
  1146. package/dist/adapters/http/controllers/entities/robot-role/utils/index.d.ts +0 -2
  1147. package/dist/adapters/http/controllers/entities/robot-role/utils/index.d.ts.map +0 -1
  1148. package/dist/adapters/http/controllers/entities/robot-role/utils/index.mjs +0 -5
  1149. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.d.ts +0 -6
  1150. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.d.ts.map +0 -1
  1151. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs +0 -20
  1152. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs.map +0 -1
  1153. package/dist/app/modules/database/repositories/robot/index.d.ts +0 -2
  1154. package/dist/app/modules/database/repositories/robot/index.d.ts.map +0 -1
  1155. package/dist/app/modules/database/repositories/robot/index.mjs +0 -5
  1156. package/dist/app/modules/database/repositories/robot/repository.d.ts +0 -31
  1157. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +0 -1
  1158. package/dist/app/modules/database/repositories/robot/repository.mjs +0 -190
  1159. package/dist/app/modules/database/repositories/robot/repository.mjs.map +0 -1
  1160. package/dist/app/modules/database/repositories/robot-permission/index.d.ts +0 -2
  1161. package/dist/app/modules/database/repositories/robot-permission/index.d.ts.map +0 -1
  1162. package/dist/app/modules/database/repositories/robot-permission/index.mjs +0 -5
  1163. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts +0 -20
  1164. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts.map +0 -1
  1165. package/dist/app/modules/database/repositories/robot-permission/repository.mjs +0 -79
  1166. package/dist/app/modules/database/repositories/robot-permission/repository.mjs.map +0 -1
  1167. package/dist/app/modules/database/repositories/robot-role/index.d.ts +0 -2
  1168. package/dist/app/modules/database/repositories/robot-role/index.d.ts.map +0 -1
  1169. package/dist/app/modules/database/repositories/robot-role/index.mjs +0 -5
  1170. package/dist/app/modules/database/repositories/robot-role/repository.d.ts +0 -20
  1171. package/dist/app/modules/database/repositories/robot-role/repository.d.ts.map +0 -1
  1172. package/dist/app/modules/database/repositories/robot-role/repository.mjs +0 -79
  1173. package/dist/app/modules/database/repositories/robot-role/repository.mjs.map +0 -1
  1174. package/dist/app/modules/identity/repositories/robot.d.ts +0 -13
  1175. package/dist/app/modules/identity/repositories/robot.d.ts.map +0 -1
  1176. package/dist/app/modules/identity/repositories/robot.mjs +0 -47
  1177. package/dist/app/modules/identity/repositories/robot.mjs.map +0 -1
  1178. package/dist/core/authentication/credential/entities/robot/index.d.ts +0 -2
  1179. package/dist/core/authentication/credential/entities/robot/index.d.ts.map +0 -1
  1180. package/dist/core/authentication/credential/entities/robot/index.mjs +0 -5
  1181. package/dist/core/authentication/credential/entities/robot/module.d.ts +0 -8
  1182. package/dist/core/authentication/credential/entities/robot/module.d.ts.map +0 -1
  1183. package/dist/core/authentication/credential/entities/robot/module.mjs +0 -22
  1184. package/dist/core/authentication/credential/entities/robot/module.mjs.map +0 -1
  1185. package/dist/core/authentication/entities/robot/index.d.ts +0 -2
  1186. package/dist/core/authentication/entities/robot/index.d.ts.map +0 -1
  1187. package/dist/core/authentication/entities/robot/index.mjs +0 -5
  1188. package/dist/core/authentication/entities/robot/module.d.ts +0 -11
  1189. package/dist/core/authentication/entities/robot/module.d.ts.map +0 -1
  1190. package/dist/core/authentication/entities/robot/module.mjs +0 -29
  1191. package/dist/core/authentication/entities/robot/module.mjs.map +0 -1
  1192. package/dist/core/entities/robot/index.d.ts +0 -3
  1193. package/dist/core/entities/robot/index.d.ts.map +0 -1
  1194. package/dist/core/entities/robot/index.mjs +0 -5
  1195. package/dist/core/entities/robot/service.d.ts +0 -28
  1196. package/dist/core/entities/robot/service.d.ts.map +0 -1
  1197. package/dist/core/entities/robot/service.mjs +0 -201
  1198. package/dist/core/entities/robot/service.mjs.map +0 -1
  1199. package/dist/core/entities/robot/types.d.ts +0 -24
  1200. package/dist/core/entities/robot/types.d.ts.map +0 -1
  1201. package/dist/core/entities/robot/types.mjs +0 -4
  1202. package/dist/core/entities/robot-permission/index.d.ts +0 -3
  1203. package/dist/core/entities/robot-permission/index.d.ts.map +0 -1
  1204. package/dist/core/entities/robot-permission/index.mjs +0 -5
  1205. package/dist/core/entities/robot-permission/service.d.ts +0 -25
  1206. package/dist/core/entities/robot-permission/service.d.ts.map +0 -1
  1207. package/dist/core/entities/robot-permission/service.mjs +0 -137
  1208. package/dist/core/entities/robot-permission/service.mjs.map +0 -1
  1209. package/dist/core/entities/robot-permission/types.d.ts +0 -12
  1210. package/dist/core/entities/robot-permission/types.d.ts.map +0 -1
  1211. package/dist/core/entities/robot-role/index.d.ts +0 -3
  1212. package/dist/core/entities/robot-role/index.d.ts.map +0 -1
  1213. package/dist/core/entities/robot-role/index.mjs +0 -5
  1214. package/dist/core/entities/robot-role/service.d.ts +0 -22
  1215. package/dist/core/entities/robot-role/service.d.ts.map +0 -1
  1216. package/dist/core/entities/robot-role/service.mjs +0 -90
  1217. package/dist/core/entities/robot-role/service.mjs.map +0 -1
  1218. package/dist/core/entities/robot-role/types.d.ts +0 -11
  1219. package/dist/core/entities/robot-role/types.d.ts.map +0 -1
  1220. package/dist/core/entities/robot-role/types.mjs +0 -4
  1221. package/dist/core/identity/entities/robot/index.d.ts +0 -2
  1222. package/dist/core/identity/entities/robot/index.d.ts.map +0 -1
  1223. package/dist/core/identity/entities/robot/types.d.ts +0 -8
  1224. package/dist/core/identity/entities/robot/types.d.ts.map +0 -1
  1225. package/dist/core/identity/entities/robot/types.mjs +0 -4
  1226. package/dist/core/oauth2/grant-types/robot-credentials.d.ts +0 -8
  1227. package/dist/core/oauth2/grant-types/robot-credentials.d.ts.map +0 -1
  1228. package/dist/core/oauth2/grant-types/robot-credentials.mjs +0 -39
  1229. package/dist/core/oauth2/grant-types/robot-credentials.mjs.map +0 -1
  1230. package/dist/core/provisioning/entities/robot/index.d.ts +0 -3
  1231. package/dist/core/provisioning/entities/robot/index.d.ts.map +0 -1
  1232. package/dist/core/provisioning/entities/robot/index.mjs +0 -5
  1233. package/dist/core/provisioning/entities/robot/relations-validator.d.ts +0 -6
  1234. package/dist/core/provisioning/entities/robot/relations-validator.d.ts.map +0 -1
  1235. package/dist/core/provisioning/entities/robot/relations-validator.mjs +0 -20
  1236. package/dist/core/provisioning/entities/robot/relations-validator.mjs.map +0 -1
  1237. package/dist/core/provisioning/entities/robot/types.d.ts +0 -25
  1238. package/dist/core/provisioning/entities/robot/types.d.ts.map +0 -1
  1239. package/dist/core/provisioning/entities/robot/types.mjs +0 -4
  1240. package/dist/core/provisioning/entities/robot/validator.d.ts +0 -6
  1241. package/dist/core/provisioning/entities/robot/validator.d.ts.map +0 -1
  1242. package/dist/core/provisioning/entities/robot/validator.mjs +0 -24
  1243. package/dist/core/provisioning/entities/robot/validator.mjs.map +0 -1
  1244. package/dist/core/provisioning/synchronizer/robot/index.d.ts +0 -3
  1245. package/dist/core/provisioning/synchronizer/robot/index.d.ts.map +0 -1
  1246. package/dist/core/provisioning/synchronizer/robot/index.mjs +0 -5
  1247. package/dist/core/provisioning/synchronizer/robot/module.d.ts +0 -17
  1248. package/dist/core/provisioning/synchronizer/robot/module.d.ts.map +0 -1
  1249. package/dist/core/provisioning/synchronizer/robot/module.mjs +0 -72
  1250. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +0 -1
  1251. package/dist/core/provisioning/synchronizer/robot/types.d.ts +0 -9
  1252. package/dist/core/provisioning/synchronizer/robot/types.d.ts.map +0 -1
  1253. package/dist/core/provisioning/synchronizer/robot/types.mjs +0 -4
  1254. package/dist/ui/client/assets/index-BmWsoQro.css +0 -2
  1255. /package/dist/core/{entities/robot-permission → query}/types.mjs +0 -0
@@ -0,0 +1,40 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ import { CONSENT_FILTER_KEYS } from "./types.mjs";
5
+ import { createRelationsReadGate } from "../../query/relations.mjs";
6
+ import { EntityType } from "@authup/core-kit";
7
+ import { defineSchema } from "@rapiq/core";
8
+ //#region src/core/entities/consent/schema.ts
9
+ const schemaMapping = { realm: EntityType.REALM };
10
+ const consentSchema = defineSchema({
11
+ name: EntityType.CONSENT,
12
+ fields: { default: [
13
+ "id",
14
+ "clientId",
15
+ "realmId",
16
+ "userId",
17
+ "sub",
18
+ "subKind",
19
+ "scope",
20
+ "expiresAt",
21
+ "createdAt",
22
+ "updatedAt"
23
+ ] },
24
+ filters: { allowed: [...CONSENT_FILTER_KEYS] },
25
+ relations: {
26
+ allowed: ["realm"],
27
+ validate: createRelationsReadGate(schemaMapping)
28
+ },
29
+ sort: { allowed: [
30
+ "createdAt",
31
+ "updatedAt",
32
+ "scope"
33
+ ] },
34
+ pagination: { maxLimit: 50 },
35
+ schemaMapping
36
+ });
37
+ //#endregion
38
+ export { consentSchema };
39
+
40
+ //# sourceMappingURL=schema.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.mjs","names":["defineSchema","EntityType","CONSENT_FILTER_KEYS","createRelationsReadGate","schemaMapping","realm","REALM","consentSchema","name","CONSENT","fields","default","filters","allowed","relations","validate","sort","pagination","maxLimit"],"sources":["../../../../src/core/entities/consent/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 { Consent } from '@authup/core-kit';\nimport { EntityType } from '@authup/core-kit';\nimport { CONSENT_FILTER_KEYS } from './types.ts';\nimport { createRelationsReadGate } from '../../query/relations.ts';\n\nconst schemaMapping = { realm: EntityType.REALM };\n\nexport const consentSchema = defineSchema<Consent>({\n name: EntityType.CONSENT,\n fields: {\n // `default` (not just `allowed`) so the adapter adds an explicit\n // per-column SELECT: it populates expressionMap.selects, which\n // applyRealmScopeSelect dedupes against. Without it the default\n // \"select all\" is implicit (empty selects) and the force-select\n // re-adds consent.sub — a duplicate `consent_sub` alias that\n // mysql rejects under the client join (see helpers.ts).\n default: [\n 'id',\n 'clientId',\n 'realmId',\n 'userId',\n 'sub',\n 'subKind',\n 'scope',\n 'expiresAt',\n 'createdAt',\n 'updatedAt',\n ],\n },\n filters: { allowed: [...CONSENT_FILTER_KEYS] },\n relations: { allowed: ['realm'], validate: createRelationsReadGate(schemaMapping) },\n sort: { allowed: ['createdAt', 'updatedAt', 'scope'] },\n pagination: { maxLimit: 50 },\n schemaMapping,\n});\n"],"mappings":";;;;;;;;AAaA,MAAMI,gBAAgB,EAAEC,OAAOJ,WAAWK,MAAM;AAEhD,MAAaC,gBAAgBP,aAAsB;CAC/CQ,MAAMP,WAAWQ;CACjBC,QAAQ,EAOJC,SAAS;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH,EACL;CACAC,SAAS,EAAEC,SAAS,CAAIX,GAAAA,mBAAoB,EAAC;CAC7CY,WAAW;EAAED,SAAS,CAAC,OAAQ;EAAEE,UAAUZ,wBAAwBC,aAAAA;CAAe;CAClFY,MAAM,EAAEH,SAAS;EAAC;EAAa;EAAa;CAAQ,EAAC;CACrDI,YAAY,EAAEC,UAAU,GAAG;CAC3Bd;AACJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/consent/service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAIvF,OAAO,KAAK,EACR,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,qBAAqB,GAAG;IAChC,UAAU,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,qBAAa,cAAe,SAAQ,qBAAsB,YAAW,eAAe;IAChF,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC;gBAE7B,GAAG,EAAE,qBAAqB;IAKtC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO;IAMnE,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE;IAYnE,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,yBAA8B,GACxC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAwD7C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBlG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBlG,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAchD,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CAclE"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/consent/service.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAIvF,OAAO,KAAK,EACR,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EAClB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,qBAAqB,GAAG;IAChC,UAAU,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,qBAAa,cAAe,SAAQ,qBAAsB,YAAW,eAAe;IAChF,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC;gBAE7B,GAAG,EAAE,qBAAqB;IAKtC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO;IAMnE,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE;IAYnE,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,yBAA8B,GACxC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAiF7C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBlG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBlG,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAchD,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CAclE"}
@@ -2,11 +2,15 @@ import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
4
  import "./types.mjs";
5
+ import { consentSchema } from "./schema.mjs";
6
+ import { appendQueryConditions, decodeQuery } from "../../query/module.mjs";
7
+ import "../../query/index.mjs";
5
8
  import { PermissionName } from "@authup/core-kit";
6
9
  import { AbstractEntityService } from "@authup/server-kit";
7
10
  import { BuiltInPolicyType, definePolicyData } from "@authup/access";
8
11
  import { EntityNotFoundError } from "@authup/errors";
9
12
  import { unwrapOAuth2Scope } from "@authup/specs";
13
+ import { and, eq, inArray, or } from "@rapiq/core";
10
14
  //#region src/core/entities/consent/service.ts
11
15
  var ConsentService = class extends AbstractEntityService {
12
16
  repository;
@@ -15,13 +19,17 @@ var ConsentService = class extends AbstractEntityService {
15
19
  this.repository = ctx.repository;
16
20
  }
17
21
  isOwnedBy(consent, actor) {
18
- return !!actor.identity && consent.sub === actor.identity.data.id && consent.sub_kind === actor.identity.type;
22
+ return !!actor.identity && consent.sub === actor.identity.data.id && consent.subKind === actor.identity.type;
19
23
  }
20
24
  normalizeScopeTokens(scope) {
21
25
  const tokens = unwrapOAuth2Scope(scope ?? []).filter((token) => token.length > 0 && token.length <= 128);
22
26
  return Array.from(new Set(tokens));
23
27
  }
24
28
  async getMany(query, actor, options = {}) {
29
+ const parsed = await decodeQuery(query, {
30
+ schema: consentSchema,
31
+ actor
32
+ });
25
33
  let canReadAll = true;
26
34
  try {
27
35
  await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_READ });
@@ -29,14 +37,22 @@ var ConsentService = class extends AbstractEntityService {
29
37
  if (!actor.identity) throw e;
30
38
  canReadAll = false;
31
39
  }
32
- if (!canReadAll) return this.repository.findMany(query, {
40
+ if (!canReadAll) return this.repository.findMany(parsed, {
33
41
  owner: {
34
42
  sub: actor.identity.data.id,
35
43
  subKind: actor.identity.type
36
44
  },
37
45
  ...options.realmId ? { realmId: options.realmId } : {}
38
46
  });
39
- const { data: entities, meta } = await this.repository.findMany(query, { ...options.realmId ? { realmId: options.realmId } : {} });
47
+ const compiled = await actor.permissionEvaluator.compile({ name: PermissionName.CONSENT_READ });
48
+ if (compiled.verdict !== "post") {
49
+ const ownership = actor.identity ? and(eq("sub", actor.identity.data.id), eq("subKind", actor.identity.type)) : null;
50
+ let scoped = parsed;
51
+ if (compiled.verdict === "deny") scoped = appendQueryConditions(parsed, ownership ?? inArray("id", []));
52
+ else if (compiled.verdict === "conditional") scoped = appendQueryConditions(parsed, ownership ? or(ownership, compiled.condition) : compiled.condition);
53
+ return this.repository.findMany(scoped, { ...options.realmId ? { realmId: options.realmId } : {} });
54
+ }
55
+ const { data: entities, meta } = await this.repository.findMany(parsed, { ...options.realmId ? { realmId: options.realmId } : {} });
40
56
  const data = [];
41
57
  let { total } = meta;
42
58
  for (const entity of entities) {
@@ -67,7 +83,7 @@ var ConsentService = class extends AbstractEntityService {
67
83
  }
68
84
  async getOne(id, actor, options = {}) {
69
85
  const entity = await this.repository.findOneById(id);
70
- if (!entity || options.realmId && entity.realm_id !== options.realmId) throw new EntityNotFoundError();
86
+ if (!entity || options.realmId && entity.realmId !== options.realmId) throw new EntityNotFoundError();
71
87
  if (!this.isOwnedBy(entity, actor)) {
72
88
  await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_READ });
73
89
  await actor.permissionEvaluator.evaluate({
@@ -82,7 +98,7 @@ var ConsentService = class extends AbstractEntityService {
82
98
  }
83
99
  async delete(id, actor, options = {}) {
84
100
  const entity = await this.repository.findOneById(id);
85
- if (!entity || options.realmId && entity.realm_id !== options.realmId) throw new EntityNotFoundError();
101
+ if (!entity || options.realmId && entity.realmId !== options.realmId) throw new EntityNotFoundError();
86
102
  if (!this.isOwnedBy(entity, actor)) {
87
103
  await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_DELETE });
88
104
  await actor.permissionEvaluator.evaluate({
@@ -113,7 +129,7 @@ var ConsentService = class extends AbstractEntityService {
113
129
  if (tokens.length === 0) return true;
114
130
  const rows = await this.repository.findAllBySubjectClient(input.clientId, input.owner);
115
131
  const now = (/* @__PURE__ */ new Date()).toISOString();
116
- return tokens.every((token) => rows.some((row) => row.scope === token && (row.expires_at === null || row.expires_at > now)));
132
+ return tokens.every((token) => rows.some((row) => row.scope === token && (row.expiresAt === null || row.expiresAt > now)));
117
133
  }
118
134
  };
119
135
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"service.mjs","names":["BuiltInPolicyType","definePolicyData","EntityNotFoundError","PermissionName","unwrapOAuth2Scope","AbstractEntityService","CONSENT_SCOPE_MAX_LENGTH","ConsentService","repository","ctx","isOwnedBy","consent","actor","identity","sub","data","id","sub_kind","type","normalizeScopeTokens","scope","tokens","filter","token","length","Array","from","Set","getMany","query","options","canReadAll","permissionEvaluator","preEvaluate","name","CONSENT_READ","e","findMany","owner","subKind","realmId","entities","meta","total","entity","push","evaluate","ATTRIBUTES","resourceRealmMatch","getOne","findOneById","realm_id","delete","CONSENT_DELETE","entityId","remove","record","input","insertMissing","clientId","scopes","isCovering","rows","findAllBySubjectClient","now","Date","toISOString","every","some","row","expires_at"],"sources":["../../../../src/core/entities/consent/service.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BuiltInPolicyType, definePolicyData } from '@authup/access';\nimport { EntityNotFoundError } from '@authup/errors';\nimport { PermissionName } from '@authup/core-kit';\nimport type { Consent } from '@authup/core-kit';\nimport { unwrapOAuth2Scope } from '@authup/specs';\nimport { AbstractEntityService } from '@authup/server-kit';\nimport type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport {\n CONSENT_SCOPE_MAX_LENGTH,\n} from './types.ts';\nimport type {\n ConsentCoveringInput,\n ConsentRecordInput,\n ConsentServiceReadOptions,\n IConsentRepository,\n IConsentService,\n} from './types.ts';\n\nexport type ConsentServiceContext = {\n repository: IConsentRepository,\n};\n\nexport class ConsentService extends AbstractEntityService implements IConsentService {\n protected repository: IConsentRepository;\n\n constructor(ctx: ConsentServiceContext) {\n super();\n this.repository = ctx.repository;\n }\n\n protected isOwnedBy(consent: Consent, actor: ActorContext): boolean {\n return !!actor.identity &&\n consent.sub === actor.identity.data.id &&\n consent.sub_kind === actor.identity.type;\n }\n\n protected normalizeScopeTokens(scope: string | string[] | null): string[] {\n const tokens = unwrapOAuth2Scope(scope ?? [])\n // Drop empty tokens and any token that does not fit the scope\n // column (varchar 128). An over-long token — only reachable via a\n // non-standard scope riding the `global` verifier bypass — is\n // simply not persisted (never remembered), rather than aborting\n // the whole write and losing the sibling tokens ordered after it.\n .filter((token) => token.length > 0 && token.length <= CONSENT_SCOPE_MAX_LENGTH);\n\n return Array.from(new Set(tokens));\n }\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n options: ConsentServiceReadOptions = {},\n ): Promise<EntityRepositoryFindManyResult<Consent>> {\n let canReadAll = true;\n try {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_READ });\n } catch (e) {\n if (!actor.identity) {\n throw e;\n }\n canReadAll = false;\n }\n\n if (!canReadAll) {\n // self-service: only the actor's own consents\n return this.repository.findMany(query, {\n owner: {\n sub: actor.identity!.data.id,\n subKind: actor.identity!.type,\n },\n ...(options.realmId ? { realmId: options.realmId } : {}),\n });\n }\n\n const { data: entities, meta } = await this.repository.findMany(query, { ...(options.realmId ? { realmId: options.realmId } : {}) });\n\n const data: Consent[] = [];\n let { total } = meta;\n\n for (const entity of entities) {\n if (this.isOwnedBy(entity, actor)) {\n data.push(entity);\n continue;\n }\n\n try {\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.CONSENT_READ,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n data.push(entity);\n } catch {\n total -= 1;\n }\n }\n\n return {\n data,\n meta: {\n ...meta,\n total,\n },\n };\n }\n\n async getOne(id: string, actor: ActorContext, options: ConsentServiceReadOptions = {}): Promise<Consent> {\n const entity = await this.repository.findOneById(id);\n if (!entity || (options.realmId && entity.realm_id !== options.realmId)) {\n // A realm mismatch on the nested mount fails as not-found (no\n // cross-realm existence oracle).\n throw new EntityNotFoundError();\n }\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_READ });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.CONSENT_READ,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n return entity;\n }\n\n async delete(id: string, actor: ActorContext, options: ConsentServiceReadOptions = {}): Promise<Consent> {\n const entity = await this.repository.findOneById(id);\n if (!entity || (options.realmId && entity.realm_id !== options.realmId)) {\n throw new EntityNotFoundError();\n }\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_DELETE });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.CONSENT_DELETE,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n return entity;\n }\n\n async record(input: ConsentRecordInput): Promise<void> {\n const tokens = this.normalizeScopeTokens(input.scope);\n if (tokens.length === 0) {\n return;\n }\n\n await this.repository.insertMissing({\n clientId: input.clientId,\n realmId: input.realmId,\n owner: input.owner,\n scopes: tokens,\n });\n }\n\n async isCovering(input: ConsentCoveringInput): Promise<boolean> {\n const tokens = this.normalizeScopeTokens(input.scope);\n if (tokens.length === 0) {\n return true;\n }\n\n const rows = await this.repository.findAllBySubjectClient(input.clientId, input.owner);\n const now = new Date().toISOString();\n\n return tokens.every((token) => rows.some(\n (row) => row.scope === token &&\n (row.expires_at === null || row.expires_at > now),\n ));\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"service.mjs","names":["BuiltInPolicyType","definePolicyData","and","eq","inArray","or","EntityNotFoundError","PermissionName","unwrapOAuth2Scope","AbstractEntityService","CONSENT_SCOPE_MAX_LENGTH","appendQueryConditions","decodeQuery","consentSchema","ConsentService","repository","ctx","isOwnedBy","consent","actor","identity","sub","data","id","subKind","type","normalizeScopeTokens","scope","tokens","filter","token","length","Array","from","Set","getMany","query","options","parsed","schema","canReadAll","permissionEvaluator","preEvaluate","name","CONSENT_READ","e","findMany","owner","realmId","compiled","compile","verdict","ownership","scoped","condition","entities","meta","total","entity","push","evaluate","ATTRIBUTES","resourceRealmMatch","getOne","findOneById","delete","CONSENT_DELETE","entityId","remove","record","input","insertMissing","clientId","scopes","isCovering","rows","findAllBySubjectClient","now","Date","toISOString","every","some","row","expiresAt"],"sources":["../../../../src/core/entities/consent/service.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BuiltInPolicyType, definePolicyData } from '@authup/access';\nimport {\n and, \n eq, \n inArray, \n or,\n} from '@rapiq/core';\nimport { EntityNotFoundError } from '@authup/errors';\nimport { PermissionName } from '@authup/core-kit';\nimport type { Consent } from '@authup/core-kit';\nimport { unwrapOAuth2Scope } from '@authup/specs';\nimport { AbstractEntityService } from '@authup/server-kit';\nimport type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport {\n CONSENT_SCOPE_MAX_LENGTH,\n} from './types.ts';\nimport type {\n ConsentCoveringInput,\n ConsentRecordInput,\n ConsentServiceReadOptions,\n IConsentRepository,\n IConsentService,\n} from './types.ts';\nimport { appendQueryConditions, decodeQuery } from '../../query/index.ts';\nimport { consentSchema } from './schema.ts';\n\nexport type ConsentServiceContext = {\n repository: IConsentRepository,\n};\n\nexport class ConsentService extends AbstractEntityService implements IConsentService {\n protected repository: IConsentRepository;\n\n constructor(ctx: ConsentServiceContext) {\n super();\n this.repository = ctx.repository;\n }\n\n protected isOwnedBy(consent: Consent, actor: ActorContext): boolean {\n return !!actor.identity &&\n consent.sub === actor.identity.data.id &&\n consent.subKind === actor.identity.type;\n }\n\n protected normalizeScopeTokens(scope: string | string[] | null): string[] {\n const tokens = unwrapOAuth2Scope(scope ?? [])\n // Drop empty tokens and any token that does not fit the scope\n // column (varchar 128). An over-long token — only reachable via a\n // non-standard scope riding the `global` verifier bypass — is\n // simply not persisted (never remembered), rather than aborting\n // the whole write and losing the sibling tokens ordered after it.\n .filter((token) => token.length > 0 && token.length <= CONSENT_SCOPE_MAX_LENGTH);\n\n return Array.from(new Set(tokens));\n }\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n options: ConsentServiceReadOptions = {},\n ): Promise<EntityRepositoryFindManyResult<Consent>> {\n const parsed = await decodeQuery(query, { schema: consentSchema, actor });\n\n let canReadAll = true;\n try {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_READ });\n } catch (e) {\n if (!actor.identity) {\n throw e;\n }\n canReadAll = false;\n }\n\n if (!canReadAll) {\n // self-service: only the actor's own consents\n return this.repository.findMany(parsed, {\n owner: {\n sub: actor.identity!.data.id,\n subKind: actor.identity!.type,\n },\n ...(options.realmId ? { realmId: options.realmId } : {}),\n });\n }\n\n // Compile CONSENT_READ into a row condition (#3286 phase 3). Own rows are\n // always readable, so ownership composes as an OR-alternative — the whole\n // gate runs as WHERE and pagination/totals stay exact. A non-expressible\n // policy falls back to the per-row loop below.\n const compiled = await actor.permissionEvaluator.compile({ name: PermissionName.CONSENT_READ });\n if (compiled.verdict !== 'post') {\n const ownership = actor.identity ?\n and(eq('sub', actor.identity.data.id), eq('subKind', actor.identity.type)) :\n null;\n\n let scoped = parsed;\n if (compiled.verdict === 'deny') {\n scoped = appendQueryConditions(parsed, ownership ?? inArray('id', []));\n } else if (compiled.verdict === 'conditional') {\n scoped = appendQueryConditions(\n parsed,\n ownership ? or(ownership, compiled.condition) : compiled.condition,\n );\n }\n\n return this.repository.findMany(scoped, { ...(options.realmId ? { realmId: options.realmId } : {}) });\n }\n\n const { data: entities, meta } = await this.repository.findMany(parsed, { ...(options.realmId ? { realmId: options.realmId } : {}) });\n\n const data: Consent[] = [];\n let { total } = meta;\n\n for (const entity of entities) {\n if (this.isOwnedBy(entity, actor)) {\n data.push(entity);\n continue;\n }\n\n try {\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.CONSENT_READ,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n data.push(entity);\n } catch {\n total -= 1;\n }\n }\n\n return {\n data,\n meta: {\n ...meta,\n total,\n },\n };\n }\n\n async getOne(id: string, actor: ActorContext, options: ConsentServiceReadOptions = {}): Promise<Consent> {\n const entity = await this.repository.findOneById(id);\n if (!entity || (options.realmId && entity.realmId !== options.realmId)) {\n // A realm mismatch on the nested mount fails as not-found (no\n // cross-realm existence oracle).\n throw new EntityNotFoundError();\n }\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_READ });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.CONSENT_READ,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n return entity;\n }\n\n async delete(id: string, actor: ActorContext, options: ConsentServiceReadOptions = {}): Promise<Consent> {\n const entity = await this.repository.findOneById(id);\n if (!entity || (options.realmId && entity.realmId !== options.realmId)) {\n throw new EntityNotFoundError();\n }\n\n if (!this.isOwnedBy(entity, actor)) {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.CONSENT_DELETE });\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.CONSENT_DELETE,\n data: definePolicyData({\n [BuiltInPolicyType.ATTRIBUTES]: entity,\n ...this.resourceRealmMatch(entity),\n }),\n });\n }\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n return entity;\n }\n\n async record(input: ConsentRecordInput): Promise<void> {\n const tokens = this.normalizeScopeTokens(input.scope);\n if (tokens.length === 0) {\n return;\n }\n\n await this.repository.insertMissing({\n clientId: input.clientId,\n realmId: input.realmId,\n owner: input.owner,\n scopes: tokens,\n });\n }\n\n async isCovering(input: ConsentCoveringInput): Promise<boolean> {\n const tokens = this.normalizeScopeTokens(input.scope);\n if (tokens.length === 0) {\n return true;\n }\n\n const rows = await this.repository.findAllBySubjectClient(input.clientId, input.owner);\n const now = new Date().toISOString();\n\n return tokens.every((token) => rows.some(\n (row) => row.scope === token &&\n (row.expiresAt === null || row.expiresAt > now),\n ));\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Consent } from '@authup/core-kit';
2
+ import type { IQuery } from '@rapiq/core';
2
3
  import type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';
3
4
  export type ConsentOwner = {
4
5
  sub: string;
@@ -15,7 +16,7 @@ export declare const CONSENT_SCOPE_MAX_LENGTH = 128;
15
16
  * Filter keys a consent list query may target. Shared by the repository's
16
17
  * rapiq `filters.allowed` so service and adapter can never drift.
17
18
  */
18
- export declare const CONSENT_FILTER_KEYS: readonly ["id", "client_id", "realm_id", "sub", "sub_kind", "scope"];
19
+ export declare const CONSENT_FILTER_KEYS: readonly ["id", "clientId", "realmId", "sub", "subKind", "scope"];
19
20
  export type ConsentFindManyOptions = {
20
21
  /**
21
22
  * Force the result to a single subject (self-service). Applied as a
@@ -47,7 +48,7 @@ export type ConsentCoveringInput = {
47
48
  scope: string | string[] | null;
48
49
  };
49
50
  export interface IConsentRepository {
50
- findMany(query: Record<string, any>, options?: ConsentFindManyOptions): Promise<EntityRepositoryFindManyResult<Consent>>;
51
+ findMany(query: IQuery, options?: ConsentFindManyOptions): Promise<EntityRepositoryFindManyResult<Consent>>;
51
52
  findOneById(id: string): Promise<Consent | null>;
52
53
  /**
53
54
  * Covering-lookup source — query-cached
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/consent/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEvF,MAAM,MAAM,YAAY,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,sEAOtB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,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,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAElF;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,YAAY,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAA;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhJ;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/F;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/F;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/consent/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,YAAY,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEvF,MAAM,MAAM,YAAY,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,mEAOtB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5G,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAElF;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,YAAY,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAA;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhJ;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/F;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/F;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D"}
@@ -13,10 +13,10 @@ import.meta.url;
13
13
  * rapiq `filters.allowed` so service and adapter can never drift.
14
14
  */ const CONSENT_FILTER_KEYS = [
15
15
  "id",
16
- "client_id",
17
- "realm_id",
16
+ "clientId",
17
+ "realmId",
18
18
  "sub",
19
- "sub_kind",
19
+ "subKind",
20
20
  "scope"
21
21
  ];
22
22
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":["CONSENT_SCOPE_MAX_LENGTH","CONSENT_FILTER_KEYS"],"sources":["../../../../src/core/entities/consent/types.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Consent } from '@authup/core-kit';\nimport type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';\n\nexport type ConsentOwner = {\n sub: string,\n subKind: string,\n};\n\n/**\n * Max length of a single stored scope token — must equal the\n * `auth_consents.scope` column width (varchar 128). A longer token (only\n * reachable via a non-standard scope riding the `global` verifier bypass) is\n * dropped at normalization rather than overflowing the column.\n */\nexport const CONSENT_SCOPE_MAX_LENGTH = 128;\n\n/**\n * Filter keys a consent list query may target. Shared by the repository's\n * rapiq `filters.allowed` so service and adapter can never drift.\n */\nexport const CONSENT_FILTER_KEYS = [\n 'id',\n 'client_id',\n 'realm_id',\n 'sub',\n 'sub_kind',\n 'scope',\n] as const;\n\nexport type ConsentFindManyOptions = {\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?: ConsentOwner,\n /**\n * Restrict the result to a single realm (the `/realms/:realmId/consents`\n * nested mount). Mandatory WHERE, not overridable by a rapiq filter.\n */\n realmId?: string,\n};\n\nexport type ConsentServiceReadOptions = {\n realmId?: string,\n};\n\nexport type ConsentRecordInput = {\n clientId: string,\n realmId: string,\n owner: ConsentOwner,\n /**\n * Raw scope representation(s) — normalized to lowercase tokens via\n * `unwrapOAuth2Scope` before persistence.\n */\n scope: string | string[] | null,\n};\n\nexport type ConsentCoveringInput = {\n clientId: string,\n owner: ConsentOwner,\n scope: string | string[] | null,\n};\n\nexport interface IConsentRepository {\n findMany(query: Record<string, any>, options?: ConsentFindManyOptions): Promise<EntityRepositoryFindManyResult<Consent>>;\n\n findOneById(id: string): Promise<Consent | null>;\n\n /**\n * Covering-lookup source — query-cached\n * (`CachePrefix.CONSENT_COVERING`, 60s), invalidated by the\n * `ConsentEntitySubscriber` on insert/update/remove.\n */\n findAllBySubjectClient(clientId: string, owner: ConsentOwner): Promise<Consent[]>;\n\n /**\n * Union/keep: insert one row per missing scope token, never touching\n * existing rows. Race-safe under the 4-column unique index.\n */\n insertMissing(input: {\n clientId: string, \n realmId: string, \n owner: ConsentOwner, \n scopes: string[] \n }): Promise<void>;\n\n remove(entity: Consent): Promise<void>;\n}\n\nexport interface IConsentService {\n /**\n * List consents. An actor without `CONSENT_READ` is scoped to its own\n * rows (self-service); an actor with `CONSENT_READ` sees every row its\n * realm reach permits.\n */\n getMany(query: Record<string, any>, actor: ActorContext, options?: ConsentServiceReadOptions): Promise<EntityRepositoryFindManyResult<Consent>>;\n\n /**\n * Read a single consent by id. Own rows need no permission.\n */\n getOne(id: string, actor: ActorContext, options?: ConsentServiceReadOptions): Promise<Consent>;\n\n /**\n * Revoke (delete) a single consent by id. Own rows need no permission.\n */\n delete(id: string, actor: ActorContext, options?: ConsentServiceReadOptions): Promise<Consent>;\n\n /**\n * Flow integration (POST /authorize approval) — no permission checks:\n * the subject consents to its own grant. Inputs are server-derived\n * (verifier-stamped client/realm, token-derived subject), never raw\n * client input.\n */\n record(input: ConsentRecordInput): Promise<void>;\n\n /**\n * Strict covering: every requested token has an unexpired row.\n */\n isCovering(input: ConsentCoveringInput): Promise<boolean>;\n}\n"],"mappings":";;;;;;;;;GAqBA,MAAaA,2BAA2B;;;;GAMxC,MAAaC,sBAAsB;CAC/B;CACA;CACA;CACA;CACA;CACA"}
1
+ {"version":3,"file":"types.mjs","names":["CONSENT_SCOPE_MAX_LENGTH","CONSENT_FILTER_KEYS"],"sources":["../../../../src/core/entities/consent/types.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Consent } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';\n\nexport type ConsentOwner = {\n sub: string,\n subKind: string,\n};\n\n/**\n * Max length of a single stored scope token — must equal the\n * `auth_consents.scope` column width (varchar 128). A longer token (only\n * reachable via a non-standard scope riding the `global` verifier bypass) is\n * dropped at normalization rather than overflowing the column.\n */\nexport const CONSENT_SCOPE_MAX_LENGTH = 128;\n\n/**\n * Filter keys a consent list query may target. Shared by the repository's\n * rapiq `filters.allowed` so service and adapter can never drift.\n */\nexport const CONSENT_FILTER_KEYS = [\n 'id',\n 'clientId',\n 'realmId',\n 'sub',\n 'subKind',\n 'scope',\n] as const;\n\nexport type ConsentFindManyOptions = {\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?: ConsentOwner,\n /**\n * Restrict the result to a single realm (the `/realms/:realmId/consents`\n * nested mount). Mandatory WHERE, not overridable by a rapiq filter.\n */\n realmId?: string,\n};\n\nexport type ConsentServiceReadOptions = {\n realmId?: string,\n};\n\nexport type ConsentRecordInput = {\n clientId: string,\n realmId: string,\n owner: ConsentOwner,\n /**\n * Raw scope representation(s) — normalized to lowercase tokens via\n * `unwrapOAuth2Scope` before persistence.\n */\n scope: string | string[] | null,\n};\n\nexport type ConsentCoveringInput = {\n clientId: string,\n owner: ConsentOwner,\n scope: string | string[] | null,\n};\n\nexport interface IConsentRepository {\n findMany(query: IQuery, options?: ConsentFindManyOptions): Promise<EntityRepositoryFindManyResult<Consent>>;\n\n findOneById(id: string): Promise<Consent | null>;\n\n /**\n * Covering-lookup source — query-cached\n * (`CachePrefix.CONSENT_COVERING`, 60s), invalidated by the\n * `ConsentEntitySubscriber` on insert/update/remove.\n */\n findAllBySubjectClient(clientId: string, owner: ConsentOwner): Promise<Consent[]>;\n\n /**\n * Union/keep: insert one row per missing scope token, never touching\n * existing rows. Race-safe under the 4-column unique index.\n */\n insertMissing(input: {\n clientId: string, \n realmId: string, \n owner: ConsentOwner, \n scopes: string[] \n }): Promise<void>;\n\n remove(entity: Consent): Promise<void>;\n}\n\nexport interface IConsentService {\n /**\n * List consents. An actor without `CONSENT_READ` is scoped to its own\n * rows (self-service); an actor with `CONSENT_READ` sees every row its\n * realm reach permits.\n */\n getMany(query: Record<string, any>, actor: ActorContext, options?: ConsentServiceReadOptions): Promise<EntityRepositoryFindManyResult<Consent>>;\n\n /**\n * Read a single consent by id. Own rows need no permission.\n */\n getOne(id: string, actor: ActorContext, options?: ConsentServiceReadOptions): Promise<Consent>;\n\n /**\n * Revoke (delete) a single consent by id. Own rows need no permission.\n */\n delete(id: string, actor: ActorContext, options?: ConsentServiceReadOptions): Promise<Consent>;\n\n /**\n * Flow integration (POST /authorize approval) — no permission checks:\n * the subject consents to its own grant. Inputs are server-derived\n * (verifier-stamped client/realm, token-derived subject), never raw\n * client input.\n */\n record(input: ConsentRecordInput): Promise<void>;\n\n /**\n * Strict covering: every requested token has an unexpired row.\n */\n isCovering(input: ConsentCoveringInput): Promise<boolean>;\n}\n"],"mappings":";;;;;;;;;GAsBA,MAAaA,2BAA2B;;;;GAMxC,MAAaC,sBAAsB;CAC/B;CACA;CACA;CACA;CACA;CACA;AACH"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Secret denylist for entity-diff keys (fail-closed: losing a
3
- * "secret_hashed flipped" diff entry is acceptable, leaking a hash is not).
3
+ * "secretHashed flipped" diff entry is acceptable, leaking a hash is not).
4
4
  * Shared with the sanitizer's `diff` branch so both boundaries agree.
5
5
  */
6
6
  export declare const EVENT_DIFF_SECRET_KEY_REGEX: RegExp;
@@ -12,9 +12,9 @@ export type EntityDiff = Record<string, {
12
12
  /**
13
13
  * PII-safe scalar diff between the updated entity and its pre-mutation
14
14
  * snapshot: only keys with scalar values (string/number/boolean/null) on BOTH
15
- * sides, skipping timestamp columns (`*_at`) and any key matching the secret
16
- * denylist, including only keys whose value actually changed. String values
17
- * are truncated to {@link EVENT_DIFF_VALUE_MAX_LENGTH}.
15
+ * sides, skipping timestamp columns (`*_at` / `*At`) and any key matching the
16
+ * secret denylist, including only keys whose value actually changed. String
17
+ * values are truncated to {@link EVENT_DIFF_VALUE_MAX_LENGTH}.
18
18
  */
19
19
  export declare function buildEntityDiff(next: Record<string, any>, previous: Record<string, any>): EntityDiff;
20
20
  //# sourceMappingURL=diff.d.ts.map
@@ -5,7 +5,7 @@ import { isEqual } from "smob";
5
5
  //#region src/core/entities/event/diff.ts
6
6
  /**
7
7
  * Secret denylist for entity-diff keys (fail-closed: losing a
8
- * "secret_hashed flipped" diff entry is acceptable, leaking a hash is not).
8
+ * "secretHashed flipped" diff entry is acceptable, leaking a hash is not).
9
9
  * Shared with the sanitizer's `diff` branch so both boundaries agree.
10
10
  */ const EVENT_DIFF_SECRET_KEY_REGEX = /(password|secret|hash|token|credential)/i;
11
11
  const EVENT_DIFF_VALUE_MAX_LENGTH = 512;
@@ -19,14 +19,14 @@ function truncateScalar(value) {
19
19
  /**
20
20
  * PII-safe scalar diff between the updated entity and its pre-mutation
21
21
  * snapshot: only keys with scalar values (string/number/boolean/null) on BOTH
22
- * sides, skipping timestamp columns (`*_at`) and any key matching the secret
23
- * denylist, including only keys whose value actually changed. String values
24
- * are truncated to {@link EVENT_DIFF_VALUE_MAX_LENGTH}.
22
+ * sides, skipping timestamp columns (`*_at` / `*At`) and any key matching the
23
+ * secret denylist, including only keys whose value actually changed. String
24
+ * values are truncated to {@link EVENT_DIFF_VALUE_MAX_LENGTH}.
25
25
  */ function buildEntityDiff(next, previous) {
26
26
  const output = {};
27
27
  const keys = /* @__PURE__ */ new Set([...Object.keys(next), ...Object.keys(previous)]);
28
28
  for (const key of keys) {
29
- if (key.endsWith("_at")) continue;
29
+ if (key.endsWith("_at") || key.endsWith("At")) continue;
30
30
  if (EVENT_DIFF_SECRET_KEY_REGEX.test(key)) continue;
31
31
  const nextValue = next[key];
32
32
  const previousValue = previous[key];
@@ -1 +1 @@
1
- {"version":3,"file":"diff.mjs","names":["isEqual","EVENT_DIFF_SECRET_KEY_REGEX","EVENT_DIFF_VALUE_MAX_LENGTH","isScalar","value","truncateScalar","length","substring","buildEntityDiff","next","previous","output","keys","Set","Object","key","endsWith","test","nextValue","previousValue"],"sources":["../../../../src/core/entities/event/diff.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 { isEqual } from 'smob';\n\n/**\n * Secret denylist for entity-diff keys (fail-closed: losing a\n * \"secret_hashed flipped\" diff entry is acceptable, leaking a hash is not).\n * Shared with the sanitizer's `diff` branch so both boundaries agree.\n */\nexport const EVENT_DIFF_SECRET_KEY_REGEX = /(password|secret|hash|token|credential)/i;\n\nexport const EVENT_DIFF_VALUE_MAX_LENGTH = 512;\n\nexport type EntityDiff = Record<string, { next: unknown, previous: unknown }>;\n\nfunction isScalar(value: unknown): value is string | number | boolean | null {\n return value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean';\n}\n\nfunction truncateScalar(value: string | number | boolean | null): string | number | boolean | null {\n if (typeof value === 'string' && value.length > EVENT_DIFF_VALUE_MAX_LENGTH) {\n return value.substring(0, EVENT_DIFF_VALUE_MAX_LENGTH);\n }\n\n return value;\n}\n\n/**\n * PII-safe scalar diff between the updated entity and its pre-mutation\n * snapshot: only keys with scalar values (string/number/boolean/null) on BOTH\n * sides, skipping timestamp columns (`*_at`) and any key matching the secret\n * denylist, including only keys whose value actually changed. String values\n * are truncated to {@link EVENT_DIFF_VALUE_MAX_LENGTH}.\n */\nexport function buildEntityDiff(\n next: Record<string, any>,\n previous: Record<string, any>,\n): EntityDiff {\n const output: EntityDiff = {};\n\n const keys = new Set([\n ...Object.keys(next),\n ...Object.keys(previous),\n ]);\n\n for (const key of keys) {\n if (key.endsWith('_at')) {\n continue;\n }\n\n if (EVENT_DIFF_SECRET_KEY_REGEX.test(key)) {\n continue;\n }\n\n const nextValue = next[key];\n const previousValue = previous[key];\n\n if (!isScalar(nextValue) || !isScalar(previousValue)) {\n continue;\n }\n\n if (isEqual(nextValue, previousValue)) {\n continue;\n }\n\n output[key] = {\n next: truncateScalar(nextValue),\n previous: truncateScalar(previousValue),\n };\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;GAcA,MAAaC,8BAA8B;AAE3C,MAAaC,8BAA8B;AAI3C,SAASC,SAASC,OAAc;CAC5B,OAAOA,UAAU,QACb,OAAOA,UAAU,YACjB,OAAOA,UAAU,YACjB,OAAOA,UAAU;AACzB;AAEA,SAASC,eAAeD,OAAuC;CAC3D,IAAI,OAAOA,UAAU,YAAYA,MAAME,SAAAA,KACnC,OAAOF,MAAMG,UAAU,GAAA,GAAGL;CAG9B,OAAOE;AACX;;;;;;;GASA,SAAgBI,gBACZC,MACAC,UAA6B;CAE7B,MAAMC,SAAqB,CAAC;CAE5B,MAAMC,uBAAO,IAAIC,IAAI,CAAA,GACdC,OAAOF,KAAKH,IAAAA,GAAAA,GACZK,OAAOF,KAAKF,QAAAA,CAAAA,CAClB;CAED,KAAK,MAAMK,OAAOH,MAAM;EACpB,IAAIG,IAAIC,SAAS,KAAA,GACb;EAGJ,IAAIf,4BAA4BgB,KAAKF,GAAAA,GACjC;EAGJ,MAAMG,YAAYT,KAAKM;EACvB,MAAMI,gBAAgBT,SAASK;EAE/B,IAAI,CAACZ,SAASe,SAAAA,KAAc,CAACf,SAASgB,aAAAA,GAClC;EAGJ,IAAInB,QAAQkB,WAAWC,aAAAA,GACnB;EAGJR,OAAOI,OAAO;GACVN,MAAMJ,eAAea,SAAAA;GACrBR,UAAUL,eAAec,aAAAA;EAC7B;CACJ;CAEA,OAAOR;AACX"}
1
+ {"version":3,"file":"diff.mjs","names":["isEqual","EVENT_DIFF_SECRET_KEY_REGEX","EVENT_DIFF_VALUE_MAX_LENGTH","isScalar","value","truncateScalar","length","substring","buildEntityDiff","next","previous","output","keys","Set","Object","key","endsWith","test","nextValue","previousValue"],"sources":["../../../../src/core/entities/event/diff.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 { isEqual } from 'smob';\n\n/**\n * Secret denylist for entity-diff keys (fail-closed: losing a\n * \"secretHashed flipped\" diff entry is acceptable, leaking a hash is not).\n * Shared with the sanitizer's `diff` branch so both boundaries agree.\n */\nexport const EVENT_DIFF_SECRET_KEY_REGEX = /(password|secret|hash|token|credential)/i;\n\nexport const EVENT_DIFF_VALUE_MAX_LENGTH = 512;\n\nexport type EntityDiff = Record<string, { next: unknown, previous: unknown }>;\n\nfunction isScalar(value: unknown): value is string | number | boolean | null {\n return value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean';\n}\n\nfunction truncateScalar(value: string | number | boolean | null): string | number | boolean | null {\n if (typeof value === 'string' && value.length > EVENT_DIFF_VALUE_MAX_LENGTH) {\n return value.substring(0, EVENT_DIFF_VALUE_MAX_LENGTH);\n }\n\n return value;\n}\n\n/**\n * PII-safe scalar diff between the updated entity and its pre-mutation\n * snapshot: only keys with scalar values (string/number/boolean/null) on BOTH\n * sides, skipping timestamp columns (`*_at` / `*At`) and any key matching the\n * secret denylist, including only keys whose value actually changed. String\n * values are truncated to {@link EVENT_DIFF_VALUE_MAX_LENGTH}.\n */\nexport function buildEntityDiff(\n next: Record<string, any>,\n previous: Record<string, any>,\n): EntityDiff {\n const output: EntityDiff = {};\n\n const keys = new Set([\n ...Object.keys(next),\n ...Object.keys(previous),\n ]);\n\n for (const key of keys) {\n if (key.endsWith('_at') || key.endsWith('At')) {\n continue;\n }\n\n if (EVENT_DIFF_SECRET_KEY_REGEX.test(key)) {\n continue;\n }\n\n const nextValue = next[key];\n const previousValue = previous[key];\n\n if (!isScalar(nextValue) || !isScalar(previousValue)) {\n continue;\n }\n\n if (isEqual(nextValue, previousValue)) {\n continue;\n }\n\n output[key] = {\n next: truncateScalar(nextValue),\n previous: truncateScalar(previousValue),\n };\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;GAcA,MAAaC,8BAA8B;AAE3C,MAAaC,8BAA8B;AAI3C,SAASC,SAASC,OAAc;CAC5B,OAAOA,UAAU,QACb,OAAOA,UAAU,YACjB,OAAOA,UAAU,YACjB,OAAOA,UAAU;AACzB;AAEA,SAASC,eAAeD,OAAuC;CAC3D,IAAI,OAAOA,UAAU,YAAYA,MAAME,SAAAA,KACnC,OAAOF,MAAMG,UAAU,GAAA,GAAGL;CAG9B,OAAOE;AACX;;;;;;;GASA,SAAgBI,gBACZC,MACAC,UAA6B;CAE7B,MAAMC,SAAqB,CAAC;CAE5B,MAAMC,uBAAO,IAAIC,IAAI,CACdC,GAAAA,OAAOF,KAAKH,IAAAA,GACZK,GAAAA,OAAOF,KAAKF,QAAAA,CAClB,CAAA;CAED,KAAK,MAAMK,OAAOH,MAAM;EACpB,IAAIG,IAAIC,SAAS,KAAA,KAAUD,IAAIC,SAAS,IAAA,GACpC;EAGJ,IAAIf,4BAA4BgB,KAAKF,GAAAA,GACjC;EAGJ,MAAMG,YAAYT,KAAKM;EACvB,MAAMI,gBAAgBT,SAASK;EAE/B,IAAI,CAACZ,SAASe,SAAAA,KAAc,CAACf,SAASgB,aAAAA,GAClC;EAGJ,IAAInB,QAAQkB,WAAWC,aAAAA,GACnB;EAGJR,OAAOI,OAAO;GACVN,MAAMJ,eAAea,SAAAA;GACrBR,UAAUL,eAAec,aAAAA;EAC7B;CACJ;CAEA,OAAOR;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-event-handler.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/entity-event-handler.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,KAAK,EACR,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,yBAAyB,GAAG;IACpC,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;AA0CF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,SAAS,CAAC,YAAY,EAAG,aAAa,CAAC;IAEvC,SAAS,CAAC,cAAc,CAAC,EAAG,MAAM,mBAAmB,GAAG,SAAS,CAAC;IAElE,SAAS,CAAC,OAAO,EAAG,yBAAyB,CAAC;gBAElC,GAAG,EAAE,yBAAyB;IAMpC,MAAM,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqD9D"}
1
+ {"version":3,"file":"entity-event-handler.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/entity-event-handler.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,KAAK,EACR,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,yBAAyB,GAAG;IACpC,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;AAwCF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,SAAS,CAAC,YAAY,EAAG,aAAa,CAAC;IAEvC,SAAS,CAAC,cAAc,CAAC,EAAG,MAAM,mBAAmB,GAAG,SAAS,CAAC;IAElE,SAAS,CAAC,OAAO,EAAG,yBAAyB,CAAC;gBAElC,GAAG,EAAE,yBAAyB;IAMpC,MAAM,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqD9D"}
@@ -11,37 +11,35 @@ const ENTITY_EVENT_NAME_MAP = {
11
11
  [EntityDefaultEventName.DELETED]: EventName.DELETED
12
12
  };
13
13
  const ENTITY_REALM_KEY_MAP = {
14
- [EntityType.CLIENT]: "realm_id",
15
- [EntityType.CLIENT_PERMISSION]: "client_realm_id",
16
- [EntityType.CLIENT_ROLE]: "client_realm_id",
17
- [EntityType.CLIENT_SCOPE]: "client_realm_id",
18
- [EntityType.CONSENT]: "realm_id",
19
- [EntityType.EVENT]: "realm_id",
20
- [EntityType.IDENTITY_PROVIDER]: "realm_id",
21
- [EntityType.IDENTITY_PROVIDER_ACCOUNT]: "user_realm_id",
22
- [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: "realm_id",
23
- [EntityType.IDENTITY_PROVIDER_ATTRIBUTE_MAPPING]: "provider_realm_id",
24
- [EntityType.IDENTITY_PROVIDER_PERMISSION_MAPPING]: "provider_realm_id",
25
- [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: "provider_realm_id",
26
- [EntityType.KEY]: "realm_id",
27
- [EntityType.POLICY]: "realm_id",
28
- [EntityType.POLICY_ATTRIBUTE]: "realm_id",
29
- [EntityType.PERMISSION]: "realm_id",
30
- [EntityType.PERMISSION_POLICY]: "permission_realm_id",
14
+ [EntityType.CLIENT]: "realmId",
15
+ [EntityType.CLIENT_PERMISSION]: "clientRealmId",
16
+ [EntityType.CLIENT_ROLE]: "clientRealmId",
17
+ [EntityType.CLIENT_SCOPE]: "clientRealmId",
18
+ [EntityType.CONSENT]: "realmId",
19
+ [EntityType.EVENT]: "realmId",
20
+ [EntityType.IDENTITY_PROVIDER]: "realmId",
21
+ [EntityType.IDENTITY_PROVIDER_ACCOUNT]: "userRealmId",
22
+ [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: "realmId",
23
+ [EntityType.IDENTITY_PROVIDER_ATTRIBUTE_MAPPING]: "providerRealmId",
24
+ [EntityType.IDENTITY_PROVIDER_PERMISSION_MAPPING]: "providerRealmId",
25
+ [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: "providerRealmId",
26
+ [EntityType.KEY]: "realmId",
27
+ [EntityType.POLICY]: "realmId",
28
+ [EntityType.POLICY_ATTRIBUTE]: "realmId",
29
+ [EntityType.PERMISSION]: "realmId",
30
+ [EntityType.PERMISSION_POLICY]: "permissionRealmId",
31
31
  [EntityType.REALM]: "id",
32
- [EntityType.ROBOT]: "realm_id",
33
- [EntityType.ROBOT_PERMISSION]: "robot_realm_id",
34
- [EntityType.ROBOT_ROLE]: "robot_realm_id",
35
- [EntityType.ROLE]: "realm_id",
36
- [EntityType.ROLE_ATTRIBUTE]: "realm_id",
37
- [EntityType.ROLE_PERMISSION]: "role_realm_id",
38
- [EntityType.SCOPE]: "realm_id",
39
- [EntityType.SESSION]: "realm_id",
40
- [EntityType.TRUST_ANCHOR]: "realm_id",
41
- [EntityType.USER]: "realm_id",
42
- [EntityType.USER_ATTRIBUTE]: "realm_id",
43
- [EntityType.USER_PERMISSION]: "user_realm_id",
44
- [EntityType.USER_ROLE]: "user_realm_id"
32
+ [EntityType.ROLE]: "realmId",
33
+ [EntityType.ROLE_ATTRIBUTE]: "realmId",
34
+ [EntityType.ROLE_PERMISSION]: "roleRealmId",
35
+ [EntityType.SCOPE]: "realmId",
36
+ [EntityType.SESSION]: "realmId",
37
+ [EntityType.TRUST_ANCHOR]: "realmId",
38
+ [EntityType.USER]: "realmId",
39
+ [EntityType.USER_ATTRIBUTE]: "realmId",
40
+ [EntityType.USER_AUTHENTICATOR]: "realmId",
41
+ [EntityType.USER_PERMISSION]: "userRealmId",
42
+ [EntityType.USER_ROLE]: "userRealmId"
45
43
  };
46
44
  /**
47
45
  * Bridges every entity create/update/delete published on the
@@ -90,7 +88,7 @@ const ENTITY_REALM_KEY_MAP = {
90
88
  };
91
89
  function resolveEntityRealmId(type, data) {
92
90
  if (!isObject(data)) return;
93
- const key = ENTITY_REALM_KEY_MAP[type] ?? "realm_id";
91
+ const key = ENTITY_REALM_KEY_MAP[type] ?? "realmId";
94
92
  if (!hasOwnProperty(data, key)) return;
95
93
  return typeof data[key] === "string" ? data[key] : null;
96
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entity-event-handler.mjs","names":["EntityDefaultEventName","EntityType","EventName","EventScope","hasOwnProperty","isObject","buildEntityDiff","ENTITY_EVENT_NAME_MAP","CREATED","UPDATED","DELETED","ENTITY_REALM_KEY_MAP","CLIENT","CLIENT_PERMISSION","CLIENT_ROLE","CLIENT_SCOPE","CONSENT","EVENT","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ACCOUNT","IDENTITY_PROVIDER_ATTRIBUTE","IDENTITY_PROVIDER_ATTRIBUTE_MAPPING","IDENTITY_PROVIDER_PERMISSION_MAPPING","IDENTITY_PROVIDER_ROLE_MAPPING","KEY","POLICY","POLICY_ATTRIBUTE","PERMISSION","PERMISSION_POLICY","REALM","ROBOT","ROBOT_PERMISSION","ROBOT_ROLE","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","SESSION","TRUST_ANCHOR","USER","USER_ATTRIBUTE","USER_PERMISSION","USER_ROLE","EntityEventHandler","eventService","requestContext","options","ctx","handle","content","type","name","event","refId","data","id","realmIdCurrent","resolveEntityRealmId","realmId","dataPrevious","undefined","diff","Object","keys","length","record","scope","ENTITY","refType","actorType","actorId","actorName","requestPath","requestMethod","requestIpAddress","requestUserAgent","retentionDays","key"],"sources":["../../../../src/core/entities/event/entity-event-handler.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 EntityDefaultEventName,\n EntityType,\n EventName,\n EventScope,\n} from '@authup/core-kit';\nimport { hasOwnProperty, isObject } from '@authup/kit';\nimport type { DomainEventPublishContext, IDomainEventHandler } from '@authup/server-kit';\nimport { buildEntityDiff } from './diff.ts';\nimport type {\n EntityEventHandlerOptions,\n EventRequestContext,\n IEventService,\n} from './types.ts';\n\nexport type EntityEventHandlerContext = {\n eventService: IEventService,\n requestContext?: () => EventRequestContext | undefined,\n options?: EntityEventHandlerOptions,\n};\n\nconst ENTITY_EVENT_NAME_MAP : Record<string, `${EventName}`> = {\n [EntityDefaultEventName.CREATED]: EventName.CREATED,\n [EntityDefaultEventName.UPDATED]: EventName.UPDATED,\n [EntityDefaultEventName.DELETED]: EventName.DELETED,\n};\n\nconst ENTITY_REALM_KEY_MAP : Record<`${EntityType}`, string> = {\n [EntityType.CLIENT]: 'realm_id',\n [EntityType.CLIENT_PERMISSION]: 'client_realm_id',\n [EntityType.CLIENT_ROLE]: 'client_realm_id',\n [EntityType.CLIENT_SCOPE]: 'client_realm_id',\n [EntityType.CONSENT]: 'realm_id',\n [EntityType.EVENT]: 'realm_id',\n [EntityType.IDENTITY_PROVIDER]: 'realm_id',\n [EntityType.IDENTITY_PROVIDER_ACCOUNT]: 'user_realm_id',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: 'realm_id',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE_MAPPING]: 'provider_realm_id',\n [EntityType.IDENTITY_PROVIDER_PERMISSION_MAPPING]: 'provider_realm_id',\n [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: 'provider_realm_id',\n [EntityType.KEY]: 'realm_id',\n [EntityType.POLICY]: 'realm_id',\n [EntityType.POLICY_ATTRIBUTE]: 'realm_id',\n [EntityType.PERMISSION]: 'realm_id',\n [EntityType.PERMISSION_POLICY]: 'permission_realm_id',\n [EntityType.REALM]: 'id',\n [EntityType.ROBOT]: 'realm_id',\n [EntityType.ROBOT_PERMISSION]: 'robot_realm_id',\n [EntityType.ROBOT_ROLE]: 'robot_realm_id',\n [EntityType.ROLE]: 'realm_id',\n [EntityType.ROLE_ATTRIBUTE]: 'realm_id',\n [EntityType.ROLE_PERMISSION]: 'role_realm_id',\n [EntityType.SCOPE]: 'realm_id',\n [EntityType.SESSION]: 'realm_id',\n [EntityType.TRUST_ANCHOR]: 'realm_id',\n [EntityType.USER]: 'realm_id',\n [EntityType.USER_ATTRIBUTE]: 'realm_id',\n [EntityType.USER_PERMISSION]: 'user_realm_id',\n [EntityType.USER_ROLE]: 'user_realm_id',\n};\n\n/**\n * Bridges every entity create/update/delete published on the\n * DomainEventPublisher bus into the auth_events audit table (scope `entity`).\n */\nexport class EntityEventHandler implements IDomainEventHandler {\n protected eventService : IEventService;\n\n protected requestContext? : () => EventRequestContext | undefined;\n\n protected options : EntityEventHandlerOptions;\n\n constructor(ctx: EntityEventHandlerContext) {\n this.eventService = ctx.eventService;\n this.requestContext = ctx.requestContext;\n this.options = ctx.options ?? {};\n }\n\n async handle(ctx: DomainEventPublishContext): Promise<void> {\n try {\n // recursion guard — no event subscriber exists today (the\n // auth_events entity is deliberately subscriber-less), so this is\n // defense in depth against an audit-write feedback loop.\n if (ctx.content.type === 'event') {\n return;\n }\n\n const name = ENTITY_EVENT_NAME_MAP[ctx.content.event];\n if (!name) {\n return;\n }\n\n const refId = ctx.content.data?.id ?? null;\n const realmIdCurrent = resolveEntityRealmId(ctx.content.type, ctx.content.data);\n const realmId = typeof realmIdCurrent === 'undefined' ?\n (resolveEntityRealmId(ctx.content.type, ctx.dataPrevious) ?? null) :\n realmIdCurrent;\n\n const requestContext = this.requestContext ?\n this.requestContext() :\n undefined;\n\n let data : Record<string, any> | null = null;\n if (name === EventName.UPDATED && isObject(ctx.content.data) && isObject(ctx.dataPrevious)) {\n const diff = buildEntityDiff(ctx.content.data, ctx.dataPrevious);\n if (Object.keys(diff).length > 0) {\n data = { diff };\n }\n }\n\n await this.eventService.record({\n scope: EventScope.ENTITY,\n name,\n refType: ctx.content.type,\n refId,\n realmId,\n actorType: requestContext?.actorType ?? null,\n actorId: requestContext?.actorId ?? null,\n actorName: requestContext?.actorName ?? null,\n requestPath: requestContext?.requestPath ?? null,\n requestMethod: requestContext?.requestMethod ?? null,\n requestIpAddress: requestContext?.requestIpAddress ?? null,\n requestUserAgent: requestContext?.requestUserAgent ?? null,\n data,\n retentionDays: this.options.retentionDays,\n });\n } catch {\n // record() never throws, but the bridge itself must also never\n // fail the originating publish.\n }\n }\n}\n\nfunction resolveEntityRealmId(\n type: string,\n data: unknown,\n): string | null | undefined {\n if (!isObject(data)) {\n return undefined;\n }\n\n const key = ENTITY_REALM_KEY_MAP[type as `${EntityType}`] ?? 'realm_id';\n if (!hasOwnProperty(data, key)) {\n return undefined;\n }\n\n return typeof data[key] === 'string' ? data[key] : null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"entity-event-handler.mjs","names":["EntityDefaultEventName","EntityType","EventName","EventScope","hasOwnProperty","isObject","buildEntityDiff","ENTITY_EVENT_NAME_MAP","CREATED","UPDATED","DELETED","ENTITY_REALM_KEY_MAP","CLIENT","CLIENT_PERMISSION","CLIENT_ROLE","CLIENT_SCOPE","CONSENT","EVENT","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ACCOUNT","IDENTITY_PROVIDER_ATTRIBUTE","IDENTITY_PROVIDER_ATTRIBUTE_MAPPING","IDENTITY_PROVIDER_PERMISSION_MAPPING","IDENTITY_PROVIDER_ROLE_MAPPING","KEY","POLICY","POLICY_ATTRIBUTE","PERMISSION","PERMISSION_POLICY","REALM","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","SESSION","TRUST_ANCHOR","USER","USER_ATTRIBUTE","USER_AUTHENTICATOR","USER_PERMISSION","USER_ROLE","EntityEventHandler","eventService","requestContext","options","ctx","handle","content","type","name","event","refId","data","id","realmIdCurrent","resolveEntityRealmId","realmId","dataPrevious","undefined","diff","Object","keys","length","record","scope","ENTITY","refType","actorType","actorId","actorName","requestPath","requestMethod","requestIpAddress","requestUserAgent","retentionDays","key"],"sources":["../../../../src/core/entities/event/entity-event-handler.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 EntityDefaultEventName,\n EntityType,\n EventName,\n EventScope,\n} from '@authup/core-kit';\nimport { hasOwnProperty, isObject } from '@authup/kit';\nimport type { DomainEventPublishContext, IDomainEventHandler } from '@authup/server-kit';\nimport { buildEntityDiff } from './diff.ts';\nimport type {\n EntityEventHandlerOptions,\n EventRequestContext,\n IEventService,\n} from './types.ts';\n\nexport type EntityEventHandlerContext = {\n eventService: IEventService,\n requestContext?: () => EventRequestContext | undefined,\n options?: EntityEventHandlerOptions,\n};\n\nconst ENTITY_EVENT_NAME_MAP : Record<string, `${EventName}`> = {\n [EntityDefaultEventName.CREATED]: EventName.CREATED,\n [EntityDefaultEventName.UPDATED]: EventName.UPDATED,\n [EntityDefaultEventName.DELETED]: EventName.DELETED,\n};\n\nconst ENTITY_REALM_KEY_MAP : Record<`${EntityType}`, string> = {\n [EntityType.CLIENT]: 'realmId',\n [EntityType.CLIENT_PERMISSION]: 'clientRealmId',\n [EntityType.CLIENT_ROLE]: 'clientRealmId',\n [EntityType.CLIENT_SCOPE]: 'clientRealmId',\n [EntityType.CONSENT]: 'realmId',\n [EntityType.EVENT]: 'realmId',\n [EntityType.IDENTITY_PROVIDER]: 'realmId',\n [EntityType.IDENTITY_PROVIDER_ACCOUNT]: 'userRealmId',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: 'realmId',\n [EntityType.IDENTITY_PROVIDER_ATTRIBUTE_MAPPING]: 'providerRealmId',\n [EntityType.IDENTITY_PROVIDER_PERMISSION_MAPPING]: 'providerRealmId',\n [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: 'providerRealmId',\n [EntityType.KEY]: 'realmId',\n [EntityType.POLICY]: 'realmId',\n [EntityType.POLICY_ATTRIBUTE]: 'realmId',\n [EntityType.PERMISSION]: 'realmId',\n [EntityType.PERMISSION_POLICY]: 'permissionRealmId',\n [EntityType.REALM]: 'id',\n [EntityType.ROLE]: 'realmId',\n [EntityType.ROLE_ATTRIBUTE]: 'realmId',\n [EntityType.ROLE_PERMISSION]: 'roleRealmId',\n [EntityType.SCOPE]: 'realmId',\n [EntityType.SESSION]: 'realmId',\n [EntityType.TRUST_ANCHOR]: 'realmId',\n [EntityType.USER]: 'realmId',\n [EntityType.USER_ATTRIBUTE]: 'realmId',\n [EntityType.USER_AUTHENTICATOR]: 'realmId',\n [EntityType.USER_PERMISSION]: 'userRealmId',\n [EntityType.USER_ROLE]: 'userRealmId',\n};\n\n/**\n * Bridges every entity create/update/delete published on the\n * DomainEventPublisher bus into the auth_events audit table (scope `entity`).\n */\nexport class EntityEventHandler implements IDomainEventHandler {\n protected eventService : IEventService;\n\n protected requestContext? : () => EventRequestContext | undefined;\n\n protected options : EntityEventHandlerOptions;\n\n constructor(ctx: EntityEventHandlerContext) {\n this.eventService = ctx.eventService;\n this.requestContext = ctx.requestContext;\n this.options = ctx.options ?? {};\n }\n\n async handle(ctx: DomainEventPublishContext): Promise<void> {\n try {\n // recursion guard — no event subscriber exists today (the\n // auth_events entity is deliberately subscriber-less), so this is\n // defense in depth against an audit-write feedback loop.\n if (ctx.content.type === 'event') {\n return;\n }\n\n const name = ENTITY_EVENT_NAME_MAP[ctx.content.event];\n if (!name) {\n return;\n }\n\n const refId = ctx.content.data?.id ?? null;\n const realmIdCurrent = resolveEntityRealmId(ctx.content.type, ctx.content.data);\n const realmId = typeof realmIdCurrent === 'undefined' ?\n (resolveEntityRealmId(ctx.content.type, ctx.dataPrevious) ?? null) :\n realmIdCurrent;\n\n const requestContext = this.requestContext ?\n this.requestContext() :\n undefined;\n\n let data : Record<string, any> | null = null;\n if (name === EventName.UPDATED && isObject(ctx.content.data) && isObject(ctx.dataPrevious)) {\n const diff = buildEntityDiff(ctx.content.data, ctx.dataPrevious);\n if (Object.keys(diff).length > 0) {\n data = { diff };\n }\n }\n\n await this.eventService.record({\n scope: EventScope.ENTITY,\n name,\n refType: ctx.content.type,\n refId,\n realmId,\n actorType: requestContext?.actorType ?? null,\n actorId: requestContext?.actorId ?? null,\n actorName: requestContext?.actorName ?? null,\n requestPath: requestContext?.requestPath ?? null,\n requestMethod: requestContext?.requestMethod ?? null,\n requestIpAddress: requestContext?.requestIpAddress ?? null,\n requestUserAgent: requestContext?.requestUserAgent ?? null,\n data,\n retentionDays: this.options.retentionDays,\n });\n } catch {\n // record() never throws, but the bridge itself must also never\n // fail the originating publish.\n }\n }\n}\n\nfunction resolveEntityRealmId(\n type: string,\n data: unknown,\n): string | null | undefined {\n if (!isObject(data)) {\n return undefined;\n }\n\n const key = ENTITY_REALM_KEY_MAP[type as `${EntityType}`] ?? 'realmId';\n if (!hasOwnProperty(data, key)) {\n return undefined;\n }\n\n return typeof data[key] === 'string' ? data[key] : null;\n}\n"],"mappings":"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"}
@@ -4,4 +4,5 @@ export * from './entity-event-handler.ts';
4
4
  export * from './sanitize.ts';
5
5
  export * from './service.ts';
6
6
  export * from './types.ts';
7
+ export * from './schema.ts';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/index.ts"],"names":[],"mappings":"AAOA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/index.ts"],"names":[],"mappings":"AAOA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { eventSchema } from "./schema.mjs";
4
5
  import { EVENT_LOG_RETENTION_DAYS_DEFAULT } from "./constants.mjs";
5
6
  import { EVENT_DIFF_SECRET_KEY_REGEX, EVENT_DIFF_VALUE_MAX_LENGTH, buildEntityDiff } from "./diff.mjs";
6
7
  import { EntityEventHandler } from "./entity-event-handler.mjs";
7
8
  import { sanitizeEventData } from "./sanitize.mjs";
8
9
  import { EventService } from "./service.mjs";
9
- export { EVENT_DIFF_SECRET_KEY_REGEX, EVENT_DIFF_VALUE_MAX_LENGTH, EVENT_LOG_RETENTION_DAYS_DEFAULT, EntityEventHandler, EventService, buildEntityDiff, sanitizeEventData };
10
+ export { EVENT_DIFF_SECRET_KEY_REGEX, EVENT_DIFF_VALUE_MAX_LENGTH, EVENT_LOG_RETENTION_DAYS_DEFAULT, EntityEventHandler, EventService, buildEntityDiff, eventSchema, sanitizeEventData };
@@ -11,7 +11,7 @@ import { isObject } from "@authup/kit";
11
11
  * objects and arrays are dropped outright, so a nested structure can never
12
12
  * smuggle a secret past the boundary (this subsumes a denylist: password,
13
13
  * client_secret, code, code_verifier, *token* etc. are simply never listed).
14
- * session_id / jti / revoked_session_id are opaque correlation ids, not PII.
14
+ * sessionId / jti / revokedSessionId are opaque correlation ids, not PII.
15
15
  * name / use / status / enabled / force describe key & trust-anchor lifecycle
16
16
  * operations (issue #3269) — canonical identifiers and enum/flag metadata,
17
17
  * never material. kind is the MFA authenticator kind (totp/email/...).
@@ -21,18 +21,18 @@ import { isObject } from "@authup/kit";
21
21
  * re-checked against the diff secret denylist — the write boundary stays the
22
22
  * choke point even though buildEntityDiff pre-sanitizes.
23
23
  */ const DATA_KEY_ALLOW_LIST = [
24
- "grant_type",
24
+ "grantType",
25
25
  "scope",
26
- "response_type",
26
+ "responseType",
27
27
  "prompt",
28
28
  "error",
29
- "error_code",
29
+ "errorCode",
30
30
  "reason",
31
- "client_name",
32
- "realm_name",
33
- "session_id",
31
+ "clientName",
32
+ "realmName",
33
+ "sessionId",
34
34
  "jti",
35
- "revoked_session_id",
35
+ "revokedSessionId",
36
36
  "name",
37
37
  "use",
38
38
  "status",
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.mjs","names":["isObject","EVENT_DIFF_SECRET_KEY_REGEX","DATA_KEY_ALLOW_LIST","DATA_VALUE_MAX_LENGTH","isDiffScalar","value","truncateDiffScalar","length","substring","sanitizeDiff","input","output","key","entry","Object","entries","test","next","previous","keys","sanitizeEventData","diff"],"sources":["../../../../src/core/entities/event/sanitize.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 { isObject } from '@authup/kit';\nimport { EVENT_DIFF_SECRET_KEY_REGEX } from './diff.ts';\n\n/**\n * The central PII/credential write boundary for event context data.\n *\n * Allowlist-first: only these keys survive, and only with scalar values —\n * objects and arrays are dropped outright, so a nested structure can never\n * smuggle a secret past the boundary (this subsumes a denylist: password,\n * client_secret, code, code_verifier, *token* etc. are simply never listed).\n * session_id / jti / revoked_session_id are opaque correlation ids, not PII.\n * name / use / status / enabled / force describe key & trust-anchor lifecycle\n * operations (issue #3269) — canonical identifiers and enum/flag metadata,\n * never material. kind is the MFA authenticator kind (totp/email/...).\n *\n * The single structured exception is `diff` (entity-CRUD bridge): it survives\n * only as a one-level object of `{ next, previous }` scalar pairs, keys\n * re-checked against the diff secret denylist — the write boundary stays the\n * choke point even though buildEntityDiff pre-sanitizes.\n */\nconst DATA_KEY_ALLOW_LIST = [\n 'grant_type',\n 'scope',\n 'response_type',\n 'prompt',\n 'error',\n 'error_code',\n 'reason',\n 'client_name',\n 'realm_name',\n 'session_id',\n 'jti',\n 'revoked_session_id',\n 'name',\n 'use',\n 'status',\n 'enabled',\n 'force',\n 'kind',\n] as const;\n\nconst DATA_VALUE_MAX_LENGTH = 512;\n\nfunction isDiffScalar(value: unknown): value is string | number | boolean | null {\n return value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean';\n}\n\nfunction truncateDiffScalar(\n value: string | number | boolean | null,\n): string | number | boolean | null {\n if (typeof value === 'string' && value.length > DATA_VALUE_MAX_LENGTH) {\n return value.substring(0, DATA_VALUE_MAX_LENGTH);\n }\n\n return value;\n}\n\nfunction sanitizeDiff(input: unknown): Record<string, any> | null {\n if (!isObject(input)) {\n return null;\n }\n\n const output: Record<string, any> = {};\n\n for (const [key, entry] of Object.entries(input)) {\n if (EVENT_DIFF_SECRET_KEY_REGEX.test(key)) {\n continue;\n }\n\n if (!isObject(entry)) {\n continue;\n }\n\n const { next, previous } = entry;\n if (!isDiffScalar(next) || !isDiffScalar(previous)) {\n continue;\n }\n\n output[key] = {\n next: truncateDiffScalar(next),\n previous: truncateDiffScalar(previous),\n };\n }\n\n if (Object.keys(output).length === 0) {\n return null;\n }\n\n return output;\n}\n\nexport function sanitizeEventData(\n input?: Record<string, any> | null,\n): Record<string, any> | null {\n if (!input) {\n return null;\n }\n\n const output: Record<string, any> = {};\n\n for (const key of DATA_KEY_ALLOW_LIST) {\n const value = input[key];\n\n if (typeof value === 'string') {\n output[key] = value.length > DATA_VALUE_MAX_LENGTH ?\n value.substring(0, DATA_VALUE_MAX_LENGTH) :\n value;\n } else if (typeof value === 'number' || typeof value === 'boolean') {\n output[key] = value;\n }\n }\n\n const diff = sanitizeDiff(input.diff);\n if (diff) {\n output.diff = diff;\n }\n\n if (Object.keys(output).length === 0) {\n return null;\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;GA2BA,MAAME,sBAAsB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAGJ,MAAMC,wBAAwB;AAE9B,SAASC,aAAaC,OAAc;CAChC,OAAOA,UAAU,QACb,OAAOA,UAAU,YACjB,OAAOA,UAAU,YACjB,OAAOA,UAAU;AACzB;AAEA,SAASC,mBACLD,OAAuC;CAEvC,IAAI,OAAOA,UAAU,YAAYA,MAAME,SAASJ,uBAC5C,OAAOE,MAAMG,UAAU,GAAGL,qBAAAA;CAG9B,OAAOE;AACX;AAEA,SAASI,aAAaC,OAAc;CAChC,IAAI,CAACV,SAASU,KAAAA,GACV,OAAO;CAGX,MAAMC,SAA8B,CAAC;CAErC,KAAK,MAAM,CAACC,KAAKC,UAAUC,OAAOC,QAAQL,KAAAA,GAAQ;EAC9C,IAAIT,4BAA4Be,KAAKJ,GAAAA,GACjC;EAGJ,IAAI,CAACZ,SAASa,KAAAA,GACV;EAGJ,MAAM,EAAEI,MAAMC,aAAaL;EAC3B,IAAI,CAACT,aAAaa,IAAAA,KAAS,CAACb,aAAac,QAAAA,GACrC;EAGJP,OAAOC,OAAO;GACVK,MAAMX,mBAAmBW,IAAAA;GACzBC,UAAUZ,mBAAmBY,QAAAA;EACjC;CACJ;CAEA,IAAIJ,OAAOK,KAAKR,MAAAA,CAAAA,CAAQJ,WAAW,GAC/B,OAAO;CAGX,OAAOI;AACX;AAEA,SAAgBS,kBACZV,OAAkC;CAElC,IAAI,CAACA,OACD,OAAO;CAGX,MAAMC,SAA8B,CAAC;CAErC,KAAK,MAAMC,OAAOV,qBAAqB;EACnC,MAAMG,QAAQK,MAAME;EAEpB,IAAI,OAAOP,UAAU,UACjBM,OAAOC,OAAOP,MAAME,SAASJ,wBACzBE,MAAMG,UAAU,GAAGL,qBAAAA,IACnBE;OACD,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,WACrDM,OAAOC,OAAOP;CAEtB;CAEA,MAAMgB,OAAOZ,aAAaC,MAAMW,IAAI;CACpC,IAAIA,MACAV,OAAOU,OAAOA;CAGlB,IAAIP,OAAOK,KAAKR,MAAAA,CAAAA,CAAQJ,WAAW,GAC/B,OAAO;CAGX,OAAOI;AACX"}
1
+ {"version":3,"file":"sanitize.mjs","names":["isObject","EVENT_DIFF_SECRET_KEY_REGEX","DATA_KEY_ALLOW_LIST","DATA_VALUE_MAX_LENGTH","isDiffScalar","value","truncateDiffScalar","length","substring","sanitizeDiff","input","output","key","entry","Object","entries","test","next","previous","keys","sanitizeEventData","diff"],"sources":["../../../../src/core/entities/event/sanitize.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 { isObject } from '@authup/kit';\nimport { EVENT_DIFF_SECRET_KEY_REGEX } from './diff.ts';\n\n/**\n * The central PII/credential write boundary for event context data.\n *\n * Allowlist-first: only these keys survive, and only with scalar values —\n * objects and arrays are dropped outright, so a nested structure can never\n * smuggle a secret past the boundary (this subsumes a denylist: password,\n * client_secret, code, code_verifier, *token* etc. are simply never listed).\n * sessionId / jti / revokedSessionId are opaque correlation ids, not PII.\n * name / use / status / enabled / force describe key & trust-anchor lifecycle\n * operations (issue #3269) — canonical identifiers and enum/flag metadata,\n * never material. kind is the MFA authenticator kind (totp/email/...).\n *\n * The single structured exception is `diff` (entity-CRUD bridge): it survives\n * only as a one-level object of `{ next, previous }` scalar pairs, keys\n * re-checked against the diff secret denylist — the write boundary stays the\n * choke point even though buildEntityDiff pre-sanitizes.\n */\nconst DATA_KEY_ALLOW_LIST = [\n 'grantType',\n 'scope',\n 'responseType',\n 'prompt',\n 'error',\n 'errorCode',\n 'reason',\n 'clientName',\n 'realmName',\n 'sessionId',\n 'jti',\n 'revokedSessionId',\n 'name',\n 'use',\n 'status',\n 'enabled',\n 'force',\n 'kind',\n] as const;\n\nconst DATA_VALUE_MAX_LENGTH = 512;\n\nfunction isDiffScalar(value: unknown): value is string | number | boolean | null {\n return value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean';\n}\n\nfunction truncateDiffScalar(\n value: string | number | boolean | null,\n): string | number | boolean | null {\n if (typeof value === 'string' && value.length > DATA_VALUE_MAX_LENGTH) {\n return value.substring(0, DATA_VALUE_MAX_LENGTH);\n }\n\n return value;\n}\n\nfunction sanitizeDiff(input: unknown): Record<string, any> | null {\n if (!isObject(input)) {\n return null;\n }\n\n const output: Record<string, any> = {};\n\n for (const [key, entry] of Object.entries(input)) {\n if (EVENT_DIFF_SECRET_KEY_REGEX.test(key)) {\n continue;\n }\n\n if (!isObject(entry)) {\n continue;\n }\n\n const { next, previous } = entry;\n if (!isDiffScalar(next) || !isDiffScalar(previous)) {\n continue;\n }\n\n output[key] = {\n next: truncateDiffScalar(next),\n previous: truncateDiffScalar(previous),\n };\n }\n\n if (Object.keys(output).length === 0) {\n return null;\n }\n\n return output;\n}\n\nexport function sanitizeEventData(\n input?: Record<string, any> | null,\n): Record<string, any> | null {\n if (!input) {\n return null;\n }\n\n const output: Record<string, any> = {};\n\n for (const key of DATA_KEY_ALLOW_LIST) {\n const value = input[key];\n\n if (typeof value === 'string') {\n output[key] = value.length > DATA_VALUE_MAX_LENGTH ?\n value.substring(0, DATA_VALUE_MAX_LENGTH) :\n value;\n } else if (typeof value === 'number' || typeof value === 'boolean') {\n output[key] = value;\n }\n }\n\n const diff = sanitizeDiff(input.diff);\n if (diff) {\n output.diff = diff;\n }\n\n if (Object.keys(output).length === 0) {\n return null;\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;GA2BA,MAAME,sBAAsB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAMC,wBAAwB;AAE9B,SAASC,aAAaC,OAAc;CAChC,OAAOA,UAAU,QACb,OAAOA,UAAU,YACjB,OAAOA,UAAU,YACjB,OAAOA,UAAU;AACzB;AAEA,SAASC,mBACLD,OAAuC;CAEvC,IAAI,OAAOA,UAAU,YAAYA,MAAME,SAASJ,uBAC5C,OAAOE,MAAMG,UAAU,GAAGL,qBAAAA;CAG9B,OAAOE;AACX;AAEA,SAASI,aAAaC,OAAc;CAChC,IAAI,CAACV,SAASU,KAAAA,GACV,OAAO;CAGX,MAAMC,SAA8B,CAAC;CAErC,KAAK,MAAM,CAACC,KAAKC,UAAUC,OAAOC,QAAQL,KAAAA,GAAQ;EAC9C,IAAIT,4BAA4Be,KAAKJ,GAAAA,GACjC;EAGJ,IAAI,CAACZ,SAASa,KAAAA,GACV;EAGJ,MAAM,EAAEI,MAAMC,aAAaL;EAC3B,IAAI,CAACT,aAAaa,IAAAA,KAAS,CAACb,aAAac,QAAAA,GACrC;EAGJP,OAAOC,OAAO;GACVK,MAAMX,mBAAmBW,IAAAA;GACzBC,UAAUZ,mBAAmBY,QAAAA;EACjC;CACJ;CAEA,IAAIJ,OAAOK,KAAKR,MAAAA,CAAAA,CAAQJ,WAAW,GAC/B,OAAO;CAGX,OAAOI;AACX;AAEA,SAAgBS,kBACZV,OAAkC;CAElC,IAAI,CAACA,OACD,OAAO;CAGX,MAAMC,SAA8B,CAAC;CAErC,KAAK,MAAMC,OAAOV,qBAAqB;EACnC,MAAMG,QAAQK,MAAME;EAEpB,IAAI,OAAOP,UAAU,UACjBM,OAAOC,OAAOP,MAAME,SAASJ,wBACzBE,MAAMG,UAAU,GAAGL,qBAAAA,IACnBE;OACD,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,WACrDM,OAAOC,OAAOP;CAEtB;CAEA,MAAMgB,OAAOZ,aAAaC,MAAMW,IAAI;CACpC,IAAIA,MACAV,OAAOU,OAAOA;CAGlB,IAAIP,OAAOK,KAAKR,MAAAA,CAAAA,CAAQJ,WAAW,GAC/B,OAAO;CAGX,OAAOI;AACX"}
@@ -0,0 +1,3 @@
1
+ import type { Event } from '@authup/core-kit';
2
+ export declare const eventSchema: import("@rapiq/core").Schema<Event, any>;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/event/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,WAAW,0CA4CtB,CAAC"}