@authup/server-core 1.0.0-beta.40 → 1.0.0-beta.42

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 (900) hide show
  1. package/dist/adapters/database/cache/module.mjs.map +1 -1
  2. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  3. package/dist/adapters/database/data-source/singleton.mjs.map +1 -1
  4. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  5. package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
  6. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  7. package/dist/adapters/database/domains/client-permission/subscriber.mjs.map +1 -1
  8. package/dist/adapters/database/domains/client-role/entity.mjs.map +1 -1
  9. package/dist/adapters/database/domains/client-role/subscriber.mjs.map +1 -1
  10. package/dist/adapters/database/domains/client-scope/entity.mjs.map +1 -1
  11. package/dist/adapters/database/domains/client-scope/subscriber.mjs.map +1 -1
  12. package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
  13. package/dist/adapters/database/domains/identity-provider/repository.mjs.map +1 -1
  14. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  15. package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
  16. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs.map +1 -1
  17. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
  18. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
  19. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
  20. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
  21. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
  22. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  23. package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
  24. package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
  25. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  26. package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
  27. package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
  28. package/dist/adapters/database/domains/policy/repository.mjs.map +1 -1
  29. package/dist/adapters/database/domains/policy/subscriber.mjs.map +1 -1
  30. package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
  31. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  32. package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
  33. package/dist/adapters/database/domains/realm/repository.mjs.map +1 -1
  34. package/dist/adapters/database/domains/realm/subscriber.mjs.map +1 -1
  35. package/dist/adapters/database/domains/robot/entity.mjs.map +1 -1
  36. package/dist/adapters/database/domains/robot/subscriber.mjs.map +1 -1
  37. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +1 -1
  38. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +1 -1
  39. package/dist/adapters/database/domains/robot-role/entity.mjs.map +1 -1
  40. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +1 -1
  41. package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
  42. package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
  43. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  44. package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
  45. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  46. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  47. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  48. package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
  49. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  50. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  51. package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
  52. package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
  53. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  54. package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
  55. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  56. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  57. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  58. package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
  59. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  60. package/dist/adapters/database/errors/conflict.d.ts +2 -2
  61. package/dist/adapters/database/errors/conflict.d.ts.map +1 -1
  62. package/dist/adapters/database/errors/conflict.mjs +6 -3
  63. package/dist/adapters/database/errors/conflict.mjs.map +1 -1
  64. package/dist/adapters/database/event-publisher/module.mjs.map +1 -1
  65. package/dist/adapters/database/extra-attribute-repository/adapter.mjs.map +1 -1
  66. package/dist/adapters/database/extra-attribute-repository/repository.mjs.map +1 -1
  67. package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs.map +1 -1
  68. package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
  69. package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
  70. package/dist/adapters/database/logger/module.mjs.map +1 -1
  71. package/dist/adapters/database/migrations/mysql/1673449341125-Default.mjs.map +1 -1
  72. package/dist/adapters/database/migrations/mysql/1689597906910-Default.mjs.map +1 -1
  73. package/dist/adapters/database/migrations/mysql/1718790373914-Default.mjs.map +1 -1
  74. package/dist/adapters/database/migrations/mysql/1722673916392-Default.mjs.map +1 -1
  75. package/dist/adapters/database/migrations/mysql/1740991051622-Default.mjs.map +1 -1
  76. package/dist/adapters/database/migrations/mysql/1766830857009-Default.mjs.map +1 -1
  77. package/dist/adapters/database/migrations/mysql/1774800953474-Default.mjs.map +1 -1
  78. package/dist/adapters/database/migrations/postgres/1673449341125-Default.mjs.map +1 -1
  79. package/dist/adapters/database/migrations/postgres/1689597906910-Default.mjs.map +1 -1
  80. package/dist/adapters/database/migrations/postgres/1718790373914-Default.mjs.map +1 -1
  81. package/dist/adapters/database/migrations/postgres/1722673916392-Default.mjs.map +1 -1
  82. package/dist/adapters/database/migrations/postgres/1740991051622-Default.mjs.map +1 -1
  83. package/dist/adapters/database/migrations/postgres/1766830857009-Default.mjs.map +1 -1
  84. package/dist/adapters/database/migrations/postgres/1774800953474-Default.mjs.map +1 -1
  85. package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts +5 -8
  86. package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts.map +1 -1
  87. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +8 -10
  88. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  89. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +3 -3
  90. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
  91. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +15 -14
  92. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  93. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts +2 -2
  94. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
  95. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +8 -8
  96. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  97. package/dist/adapters/http/adapters/oauth2/grant-types/identity.d.ts +2 -2
  98. package/dist/adapters/http/adapters/oauth2/grant-types/identity.d.ts.map +1 -1
  99. package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs +4 -4
  100. package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs.map +1 -1
  101. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +2 -2
  102. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
  103. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +6 -6
  104. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  105. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -2
  106. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
  107. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +12 -11
  108. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  109. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts +2 -2
  110. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts.map +1 -1
  111. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs +5 -5
  112. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +1 -1
  113. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +2 -2
  114. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  115. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts +2 -2
  116. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts.map +1 -1
  117. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +15 -14
  118. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
  119. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts +2 -2
  120. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts.map +1 -1
  121. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +16 -13
  122. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
  123. package/dist/adapters/http/controllers/entities/client/module.d.ts +9 -6
  124. package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
  125. package/dist/adapters/http/controllers/entities/client/module.mjs +54 -65
  126. package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
  127. package/dist/adapters/http/controllers/entities/client-permission/module.d.ts +8 -5
  128. package/dist/adapters/http/controllers/entities/client-permission/module.d.ts.map +1 -1
  129. package/dist/adapters/http/controllers/entities/client-permission/module.mjs +35 -48
  130. package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
  131. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs.map +1 -1
  132. package/dist/adapters/http/controllers/entities/client-role/module.d.ts +7 -4
  133. package/dist/adapters/http/controllers/entities/client-role/module.d.ts.map +1 -1
  134. package/dist/adapters/http/controllers/entities/client-role/module.mjs +27 -40
  135. package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
  136. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs.map +1 -1
  137. package/dist/adapters/http/controllers/entities/client-scope/module.d.ts +7 -4
  138. package/dist/adapters/http/controllers/entities/client-scope/module.d.ts.map +1 -1
  139. package/dist/adapters/http/controllers/entities/client-scope/module.mjs +27 -40
  140. package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
  141. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs.map +1 -1
  142. package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts +8 -6
  143. package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts.map +1 -1
  144. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +35 -48
  145. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs.map +1 -1
  146. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +10 -9
  147. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  148. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +92 -114
  149. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  150. package/dist/adapters/http/controllers/entities/permission/module.d.ts +13 -17
  151. package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
  152. package/dist/adapters/http/controllers/entities/permission/module.mjs +60 -112
  153. package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
  154. package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts +7 -4
  155. package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts.map +1 -1
  156. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +27 -40
  157. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
  158. package/dist/adapters/http/controllers/entities/policy/module.d.ts +14 -16
  159. package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
  160. package/dist/adapters/http/controllers/entities/policy/module.mjs +65 -106
  161. package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
  162. package/dist/adapters/http/controllers/entities/policy/utils/attributes-validator.mjs.map +1 -1
  163. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs.map +1 -1
  164. package/dist/adapters/http/controllers/entities/realm/module.d.ts +13 -8
  165. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  166. package/dist/adapters/http/controllers/entities/realm/module.mjs +55 -74
  167. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  168. package/dist/adapters/http/controllers/entities/robot/module.d.ts +9 -6
  169. package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +1 -1
  170. package/dist/adapters/http/controllers/entities/robot/module.mjs +54 -67
  171. package/dist/adapters/http/controllers/entities/robot/module.mjs.map +1 -1
  172. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts +8 -5
  173. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts.map +1 -1
  174. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +35 -48
  175. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +1 -1
  176. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs.map +1 -1
  177. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts +7 -4
  178. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts.map +1 -1
  179. package/dist/adapters/http/controllers/entities/robot-role/module.mjs +27 -40
  180. package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +1 -1
  181. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs.map +1 -1
  182. package/dist/adapters/http/controllers/entities/role/module.d.ts +9 -6
  183. package/dist/adapters/http/controllers/entities/role/module.d.ts.map +1 -1
  184. package/dist/adapters/http/controllers/entities/role/module.mjs +42 -57
  185. package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
  186. package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts +8 -5
  187. package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts.map +1 -1
  188. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +35 -48
  189. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
  190. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs.map +1 -1
  191. package/dist/adapters/http/controllers/entities/role-permission/module.d.ts +8 -5
  192. package/dist/adapters/http/controllers/entities/role-permission/module.d.ts.map +1 -1
  193. package/dist/adapters/http/controllers/entities/role-permission/module.mjs +35 -48
  194. package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
  195. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs.map +1 -1
  196. package/dist/adapters/http/controllers/entities/scope/module.d.ts +9 -6
  197. package/dist/adapters/http/controllers/entities/scope/module.d.ts.map +1 -1
  198. package/dist/adapters/http/controllers/entities/scope/module.mjs +42 -57
  199. package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
  200. package/dist/adapters/http/controllers/entities/user/module.d.ts +9 -6
  201. package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
  202. package/dist/adapters/http/controllers/entities/user/module.mjs +48 -59
  203. package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
  204. package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts +8 -5
  205. package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts.map +1 -1
  206. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +35 -48
  207. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
  208. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs.map +1 -1
  209. package/dist/adapters/http/controllers/entities/user-permission/module.d.ts +8 -5
  210. package/dist/adapters/http/controllers/entities/user-permission/module.d.ts.map +1 -1
  211. package/dist/adapters/http/controllers/entities/user-permission/module.mjs +35 -48
  212. package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
  213. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs.map +1 -1
  214. package/dist/adapters/http/controllers/entities/user-role/module.d.ts +7 -4
  215. package/dist/adapters/http/controllers/entities/user-role/module.d.ts.map +1 -1
  216. package/dist/adapters/http/controllers/entities/user-role/module.mjs +27 -40
  217. package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
  218. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs.map +1 -1
  219. package/dist/adapters/http/controllers/workflows/activate/module.d.ts +3 -2
  220. package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
  221. package/dist/adapters/http/controllers/workflows/activate/module.mjs +6 -11
  222. package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
  223. package/dist/adapters/http/controllers/workflows/activate/validator.mjs.map +1 -1
  224. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts +7 -5
  225. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  226. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +21 -22
  227. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  228. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts +5 -3
  229. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts.map +1 -1
  230. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +15 -18
  231. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
  232. package/dist/adapters/http/controllers/workflows/jwks/module.d.ts +6 -3
  233. package/dist/adapters/http/controllers/workflows/jwks/module.d.ts.map +1 -1
  234. package/dist/adapters/http/controllers/workflows/jwks/module.mjs +20 -30
  235. package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
  236. package/dist/adapters/http/controllers/workflows/openid/module.d.ts.map +1 -1
  237. package/dist/adapters/http/controllers/workflows/openid/module.mjs +10 -7
  238. package/dist/adapters/http/controllers/workflows/openid/module.mjs.map +1 -1
  239. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +3 -3
  240. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
  241. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +7 -11
  242. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
  243. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +3 -3
  244. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
  245. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +7 -11
  246. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
  247. package/dist/adapters/http/controllers/workflows/register/module.d.ts +3 -3
  248. package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
  249. package/dist/adapters/http/controllers/workflows/register/module.mjs +7 -11
  250. package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
  251. package/dist/adapters/http/controllers/workflows/status/module.d.ts.map +1 -1
  252. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  253. package/dist/adapters/http/controllers/workflows/token/module.d.ts +5 -5
  254. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  255. package/dist/adapters/http/controllers/workflows/token/module.mjs +26 -27
  256. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  257. package/dist/adapters/http/controllers/workflows/token/utils/extract.d.ts +2 -2
  258. package/dist/adapters/http/controllers/workflows/token/utils/extract.d.ts.map +1 -1
  259. package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs +8 -7
  260. package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs.map +1 -1
  261. package/dist/adapters/http/controllers/workflows/token/utils/validator.mjs.map +1 -1
  262. package/dist/adapters/http/index.d.ts +0 -2
  263. package/dist/adapters/http/index.d.ts.map +1 -1
  264. package/dist/adapters/http/index.mjs +7 -7
  265. package/dist/adapters/http/middleware/built-in/assets.d.ts +1 -0
  266. package/dist/adapters/http/middleware/built-in/assets.d.ts.map +1 -1
  267. package/dist/adapters/http/middleware/built-in/assets.mjs +9 -9
  268. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  269. package/dist/adapters/http/middleware/built-in/authorization/factory.d.ts.map +1 -1
  270. package/dist/adapters/http/middleware/built-in/authorization/factory.mjs +5 -2
  271. package/dist/adapters/http/middleware/built-in/authorization/factory.mjs.map +1 -1
  272. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +4 -10
  273. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  274. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +25 -40
  275. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  276. package/dist/adapters/http/middleware/built-in/basic.mjs.map +1 -1
  277. package/dist/adapters/http/middleware/built-in/cors.d.ts +1 -1
  278. package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
  279. package/dist/adapters/http/middleware/built-in/cors.mjs +18 -10
  280. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  281. package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
  282. package/dist/adapters/http/middleware/built-in/error.mjs +9 -18
  283. package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
  284. package/dist/adapters/http/middleware/built-in/index.d.ts +1 -0
  285. package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
  286. package/dist/adapters/http/middleware/built-in/index.mjs +5 -2
  287. package/dist/adapters/http/middleware/built-in/loggedin/module.d.ts +2 -2
  288. package/dist/adapters/http/middleware/built-in/loggedin/module.d.ts.map +1 -1
  289. package/dist/adapters/http/middleware/built-in/loggedin/module.mjs +3 -3
  290. package/dist/adapters/http/middleware/built-in/loggedin/module.mjs.map +1 -1
  291. package/dist/adapters/http/middleware/built-in/loggedin/user.d.ts +2 -2
  292. package/dist/adapters/http/middleware/built-in/loggedin/user.d.ts.map +1 -1
  293. package/dist/adapters/http/middleware/built-in/loggedin/user.mjs +4 -4
  294. package/dist/adapters/http/middleware/built-in/loggedin/user.mjs.map +1 -1
  295. package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
  296. package/dist/adapters/http/middleware/built-in/logger.mjs +21 -29
  297. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  298. package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
  299. package/dist/adapters/http/middleware/built-in/prometheus.mjs +2 -3
  300. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  301. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
  302. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +2 -2
  303. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  304. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.d.ts +4 -0
  305. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.d.ts.map +1 -0
  306. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.mjs +14 -0
  307. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.mjs.map +1 -0
  308. package/dist/adapters/http/middleware/built-in/realm-resolver/index.d.ts +4 -0
  309. package/dist/adapters/http/middleware/built-in/realm-resolver/index.d.ts.map +1 -0
  310. package/dist/adapters/http/middleware/built-in/realm-resolver/index.mjs +3 -0
  311. package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts +9 -0
  312. package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts.map +1 -0
  313. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs +26 -0
  314. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs.map +1 -0
  315. package/dist/adapters/http/middleware/built-in/realm-resolver/types.d.ts +5 -0
  316. package/dist/adapters/http/middleware/built-in/realm-resolver/types.d.ts.map +1 -0
  317. package/dist/adapters/http/middleware/built-in/swagger.d.ts +3 -4
  318. package/dist/adapters/http/middleware/built-in/swagger.d.ts.map +1 -1
  319. package/dist/adapters/http/middleware/built-in/swagger.mjs +4 -16
  320. package/dist/adapters/http/middleware/built-in/swagger.mjs.map +1 -1
  321. package/dist/adapters/http/middleware/index.mjs +4 -2
  322. package/dist/adapters/http/request/helpers/actor.d.ts +3 -3
  323. package/dist/adapters/http/request/helpers/actor.d.ts.map +1 -1
  324. package/dist/adapters/http/request/helpers/actor.mjs +3 -3
  325. package/dist/adapters/http/request/helpers/actor.mjs.map +1 -1
  326. package/dist/adapters/http/request/helpers/body-realm-id.d.ts +1 -2
  327. package/dist/adapters/http/request/helpers/body-realm-id.d.ts.map +1 -1
  328. package/dist/adapters/http/request/helpers/body-realm-id.mjs +3 -4
  329. package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
  330. package/dist/adapters/http/request/helpers/identity.d.ts +4 -4
  331. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  332. package/dist/adapters/http/request/helpers/identity.mjs +7 -8
  333. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  334. package/dist/adapters/http/request/helpers/index.d.ts +2 -0
  335. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  336. package/dist/adapters/http/request/helpers/index.mjs +4 -2
  337. package/dist/adapters/http/request/helpers/locations.d.ts +4 -0
  338. package/dist/adapters/http/request/helpers/locations.d.ts.map +1 -0
  339. package/dist/adapters/http/request/helpers/locations.mjs +28 -0
  340. package/dist/adapters/http/request/helpers/locations.mjs.map +1 -0
  341. package/dist/adapters/http/request/helpers/param-id.d.ts +5 -5
  342. package/dist/adapters/http/request/helpers/param-id.d.ts.map +1 -1
  343. package/dist/adapters/http/request/helpers/param-id.mjs +8 -9
  344. package/dist/adapters/http/request/helpers/param-id.mjs.map +1 -1
  345. package/dist/adapters/http/request/helpers/realm-id.d.ts +5 -0
  346. package/dist/adapters/http/request/helpers/realm-id.d.ts.map +1 -0
  347. package/dist/adapters/http/request/helpers/realm-id.mjs +19 -0
  348. package/dist/adapters/http/request/helpers/realm-id.mjs.map +1 -0
  349. package/dist/adapters/http/request/helpers/scopes.d.ts +3 -3
  350. package/dist/adapters/http/request/helpers/scopes.d.ts.map +1 -1
  351. package/dist/adapters/http/request/helpers/scopes.mjs +4 -5
  352. package/dist/adapters/http/request/helpers/scopes.mjs.map +1 -1
  353. package/dist/adapters/http/request/helpers/token.d.ts +3 -3
  354. package/dist/adapters/http/request/helpers/token.d.ts.map +1 -1
  355. package/dist/adapters/http/request/helpers/token.mjs +4 -5
  356. package/dist/adapters/http/request/helpers/token.mjs.map +1 -1
  357. package/dist/adapters/http/request/index.mjs +4 -2
  358. package/dist/adapters/http/request/permission/helper.d.ts +3 -3
  359. package/dist/adapters/http/request/permission/helper.d.ts.map +1 -1
  360. package/dist/adapters/http/request/permission/helper.mjs +4 -5
  361. package/dist/adapters/http/request/permission/helper.mjs.map +1 -1
  362. package/dist/adapters/http/request/permission/module.d.ts +3 -3
  363. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  364. package/dist/adapters/http/request/permission/module.mjs +5 -5
  365. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  366. package/dist/adapters/shared/ldap/factory.mjs.map +1 -1
  367. package/dist/adapters/shared/ldap/module.mjs.map +1 -1
  368. package/dist/app/builder.d.ts +1 -2
  369. package/dist/app/builder.d.ts.map +1 -1
  370. package/dist/app/builder.mjs +0 -5
  371. package/dist/app/builder.mjs.map +1 -1
  372. package/dist/app/factory.d.ts.map +1 -1
  373. package/dist/app/factory.mjs +1 -1
  374. package/dist/app/factory.mjs.map +1 -1
  375. package/dist/app/index.mjs +1 -2
  376. package/dist/app/modules/authentication/constants.mjs.map +1 -1
  377. package/dist/app/modules/authentication/module.mjs.map +1 -1
  378. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  379. package/dist/app/modules/cache/constants.mjs.map +1 -1
  380. package/dist/app/modules/cache/module.mjs.map +1 -1
  381. package/dist/app/modules/components/module.mjs.map +1 -1
  382. package/dist/app/modules/config/constants.mjs.map +1 -1
  383. package/dist/app/modules/config/module.mjs.map +1 -1
  384. package/dist/app/modules/config/normalize.mjs.map +1 -1
  385. package/dist/app/modules/config/parse.mjs.map +1 -1
  386. package/dist/app/modules/config/read/env.mjs.map +1 -1
  387. package/dist/app/modules/config/read/fs.mjs.map +1 -1
  388. package/dist/app/modules/config/read/module.mjs.map +1 -1
  389. package/dist/app/modules/config/types.d.ts +2 -2
  390. package/dist/app/modules/config/types.d.ts.map +1 -1
  391. package/dist/app/modules/constants.d.ts +0 -1
  392. package/dist/app/modules/constants.d.ts.map +1 -1
  393. package/dist/app/modules/constants.mjs +0 -1
  394. package/dist/app/modules/constants.mjs.map +1 -1
  395. package/dist/app/modules/database/constants.mjs.map +1 -1
  396. package/dist/app/modules/database/module.mjs.map +1 -1
  397. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  398. package/dist/app/modules/database/repositories/client/repository.d.ts +2 -1
  399. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  400. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  401. package/dist/app/modules/database/repositories/client-permission/repository.d.ts +1 -1
  402. package/dist/app/modules/database/repositories/client-permission/repository.d.ts.map +1 -1
  403. package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
  404. package/dist/app/modules/database/repositories/client-role/repository.d.ts +1 -1
  405. package/dist/app/modules/database/repositories/client-role/repository.d.ts.map +1 -1
  406. package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
  407. package/dist/app/modules/database/repositories/client-scope/repository.d.ts +1 -1
  408. package/dist/app/modules/database/repositories/client-scope/repository.d.ts.map +1 -1
  409. package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
  410. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  411. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +2 -1
  412. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  413. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  414. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts +2 -1
  415. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts.map +1 -1
  416. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
  417. package/dist/app/modules/database/repositories/permission/repository.d.ts +2 -1
  418. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  419. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  420. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts +2 -1
  421. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts.map +1 -1
  422. package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
  423. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  424. package/dist/app/modules/database/repositories/policy/repository.d.ts +2 -1
  425. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  426. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  427. package/dist/app/modules/database/repositories/realm/repository.d.ts +2 -1
  428. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  429. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  430. package/dist/app/modules/database/repositories/robot/repository.d.ts +2 -1
  431. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
  432. package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
  433. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts +1 -1
  434. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts.map +1 -1
  435. package/dist/app/modules/database/repositories/robot-permission/repository.mjs.map +1 -1
  436. package/dist/app/modules/database/repositories/robot-role/repository.d.ts +2 -1
  437. package/dist/app/modules/database/repositories/robot-role/repository.d.ts.map +1 -1
  438. package/dist/app/modules/database/repositories/robot-role/repository.mjs.map +1 -1
  439. package/dist/app/modules/database/repositories/role/repository.d.ts +2 -1
  440. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  441. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  442. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts +2 -1
  443. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  444. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  445. package/dist/app/modules/database/repositories/role-permission/repository.d.ts +2 -1
  446. package/dist/app/modules/database/repositories/role-permission/repository.d.ts.map +1 -1
  447. package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
  448. package/dist/app/modules/database/repositories/scope/repository.d.ts +2 -1
  449. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  450. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  451. package/dist/app/modules/database/repositories/user/repository.d.ts +2 -1
  452. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  453. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  454. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts +2 -1
  455. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  456. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  457. package/dist/app/modules/database/repositories/user-permission/repository.d.ts +2 -1
  458. package/dist/app/modules/database/repositories/user-permission/repository.d.ts.map +1 -1
  459. package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
  460. package/dist/app/modules/database/repositories/user-role/repository.d.ts +2 -1
  461. package/dist/app/modules/database/repositories/user-role/repository.d.ts.map +1 -1
  462. package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
  463. package/dist/app/modules/http/constants.d.ts +3 -2
  464. package/dist/app/modules/http/constants.d.ts.map +1 -1
  465. package/dist/app/modules/http/constants.mjs.map +1 -1
  466. package/dist/app/modules/http/module.d.ts +2 -2
  467. package/dist/app/modules/http/module.d.ts.map +1 -1
  468. package/dist/app/modules/http/module.mjs +10 -17
  469. package/dist/app/modules/http/module.mjs.map +1 -1
  470. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  471. package/dist/app/modules/http/modules/controller.mjs +59 -70
  472. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  473. package/dist/app/modules/http/modules/middleware.d.ts +1 -0
  474. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  475. package/dist/app/modules/http/modules/middleware.mjs +13 -6
  476. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  477. package/dist/app/modules/identity/constants.mjs.map +1 -1
  478. package/dist/app/modules/identity/module.mjs.map +1 -1
  479. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  480. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  481. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  482. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  483. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  484. package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
  485. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  486. package/dist/app/modules/index.d.ts +0 -1
  487. package/dist/app/modules/index.d.ts.map +1 -1
  488. package/dist/app/modules/index.mjs +1 -3
  489. package/dist/app/modules/ldap/constants.mjs.map +1 -1
  490. package/dist/app/modules/ldap/module.mjs.map +1 -1
  491. package/dist/app/modules/logger/constants.mjs.map +1 -1
  492. package/dist/app/modules/logger/module.mjs.map +1 -1
  493. package/dist/app/modules/mail/adapter/smtp/module.mjs.map +1 -1
  494. package/dist/app/modules/mail/adapter/smtp/smtp.mjs.map +1 -1
  495. package/dist/app/modules/mail/adapter/void.mjs.map +1 -1
  496. package/dist/app/modules/mail/constants.mjs.map +1 -1
  497. package/dist/app/modules/mail/module.mjs.map +1 -1
  498. package/dist/app/modules/oauth2/constants.mjs.map +1 -1
  499. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  500. package/dist/app/modules/oauth2/repositories/authorize/code/repository.mjs.map +1 -1
  501. package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs.map +1 -1
  502. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  503. package/dist/app/modules/oauth2/repositories/key/repository.mjs.map +1 -1
  504. package/dist/app/modules/oauth2/repositories/scope/repository.mjs.map +1 -1
  505. package/dist/app/modules/oauth2/repositories/token/repository.mjs.map +1 -1
  506. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  507. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  508. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  509. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  510. package/dist/app/modules/runtime/module.d.ts.map +1 -1
  511. package/dist/app/modules/runtime/module.mjs +3 -1
  512. package/dist/app/modules/runtime/module.mjs.map +1 -1
  513. package/dist/cli/commands/healthcheck.mjs +1 -1
  514. package/dist/cli/commands/healthcheck.mjs.map +1 -1
  515. package/dist/cli/commands/index.d.ts +0 -1
  516. package/dist/cli/commands/index.d.ts.map +1 -1
  517. package/dist/cli/commands/index.mjs +1 -2
  518. package/dist/cli/commands/migration.mjs.map +1 -1
  519. package/dist/cli/commands/reset.mjs.map +1 -1
  520. package/dist/cli/commands/start.d.ts.map +1 -1
  521. package/dist/cli/commands/start.mjs +22 -1
  522. package/dist/cli/commands/start.mjs.map +1 -1
  523. package/dist/cli/index.mjs.map +1 -1
  524. package/dist/cli/module.d.ts.map +1 -1
  525. package/dist/cli/module.mjs +1 -3
  526. package/dist/cli/module.mjs.map +1 -1
  527. package/dist/components/database/unique-entries/factory.mjs.map +1 -1
  528. package/dist/components/database/unique-entries/module.mjs.map +1 -1
  529. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  530. package/dist/core/authentication/base.mjs.map +1 -1
  531. package/dist/core/authentication/credential/entities/client/module.mjs.map +1 -1
  532. package/dist/core/authentication/credential/entities/robot/module.mjs.map +1 -1
  533. package/dist/core/authentication/credential/entities/user/module.mjs.map +1 -1
  534. package/dist/core/authentication/entities/client/module.d.ts.map +1 -1
  535. package/dist/core/authentication/entities/client/module.mjs +7 -5
  536. package/dist/core/authentication/entities/client/module.mjs.map +1 -1
  537. package/dist/core/authentication/entities/robot/module.d.ts.map +1 -1
  538. package/dist/core/authentication/entities/robot/module.mjs +5 -4
  539. package/dist/core/authentication/entities/robot/module.mjs.map +1 -1
  540. package/dist/core/authentication/entities/user/module.d.ts.map +1 -1
  541. package/dist/core/authentication/entities/user/module.mjs +5 -4
  542. package/dist/core/authentication/entities/user/module.mjs.map +1 -1
  543. package/dist/core/authentication/module.mjs.map +1 -1
  544. package/dist/core/authentication/session/module.mjs.map +1 -1
  545. package/dist/core/entities/client/service.d.ts +2 -3
  546. package/dist/core/entities/client/service.d.ts.map +1 -1
  547. package/dist/core/entities/client/service.mjs +8 -8
  548. package/dist/core/entities/client/service.mjs.map +1 -1
  549. package/dist/core/entities/client/types.d.ts +1 -2
  550. package/dist/core/entities/client/types.d.ts.map +1 -1
  551. package/dist/core/entities/client-permission/service.d.ts +2 -3
  552. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  553. package/dist/core/entities/client-permission/service.mjs +8 -7
  554. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  555. package/dist/core/entities/client-permission/types.d.ts +1 -2
  556. package/dist/core/entities/client-permission/types.d.ts.map +1 -1
  557. package/dist/core/entities/client-role/service.d.ts +2 -3
  558. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  559. package/dist/core/entities/client-role/service.mjs +9 -8
  560. package/dist/core/entities/client-role/service.mjs.map +1 -1
  561. package/dist/core/entities/client-role/types.d.ts +1 -2
  562. package/dist/core/entities/client-role/types.d.ts.map +1 -1
  563. package/dist/core/entities/client-scope/service.d.ts +2 -3
  564. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  565. package/dist/core/entities/client-scope/service.mjs +7 -6
  566. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  567. package/dist/core/entities/client-scope/types.d.ts +1 -2
  568. package/dist/core/entities/client-scope/types.d.ts.map +1 -1
  569. package/dist/core/entities/identity-provider/types.d.ts +1 -1
  570. package/dist/core/entities/identity-provider/types.d.ts.map +1 -1
  571. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +2 -3
  572. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  573. package/dist/core/entities/identity-provider-role-mapping/service.mjs +10 -9
  574. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  575. package/dist/core/entities/identity-provider-role-mapping/types.d.ts +1 -2
  576. package/dist/core/entities/identity-provider-role-mapping/types.d.ts.map +1 -1
  577. package/dist/core/entities/index.d.ts +0 -3
  578. package/dist/core/entities/index.d.ts.map +1 -1
  579. package/dist/core/entities/index.mjs +1 -2
  580. package/dist/core/entities/permission/service.d.ts +2 -3
  581. package/dist/core/entities/permission/service.d.ts.map +1 -1
  582. package/dist/core/entities/permission/service.mjs +8 -9
  583. package/dist/core/entities/permission/service.mjs.map +1 -1
  584. package/dist/core/entities/permission/types.d.ts +1 -2
  585. package/dist/core/entities/permission/types.d.ts.map +1 -1
  586. package/dist/core/entities/permission-policy/service.d.ts +2 -3
  587. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  588. package/dist/core/entities/permission-policy/service.mjs +7 -6
  589. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  590. package/dist/core/entities/permission-policy/types.d.ts +1 -2
  591. package/dist/core/entities/permission-policy/types.d.ts.map +1 -1
  592. package/dist/core/entities/policy/attributes-validator.mjs.map +1 -1
  593. package/dist/core/entities/policy/service.d.ts +2 -3
  594. package/dist/core/entities/policy/service.d.ts.map +1 -1
  595. package/dist/core/entities/policy/service.mjs +8 -8
  596. package/dist/core/entities/policy/service.mjs.map +1 -1
  597. package/dist/core/entities/policy/types.d.ts +1 -2
  598. package/dist/core/entities/policy/types.d.ts.map +1 -1
  599. package/dist/core/entities/realm/service.d.ts +2 -3
  600. package/dist/core/entities/realm/service.d.ts.map +1 -1
  601. package/dist/core/entities/realm/service.mjs +8 -8
  602. package/dist/core/entities/realm/service.mjs.map +1 -1
  603. package/dist/core/entities/realm/types.d.ts +1 -2
  604. package/dist/core/entities/realm/types.d.ts.map +1 -1
  605. package/dist/core/entities/robot/service.d.ts +2 -3
  606. package/dist/core/entities/robot/service.d.ts.map +1 -1
  607. package/dist/core/entities/robot/service.mjs +8 -8
  608. package/dist/core/entities/robot/service.mjs.map +1 -1
  609. package/dist/core/entities/robot/types.d.ts +1 -2
  610. package/dist/core/entities/robot/types.d.ts.map +1 -1
  611. package/dist/core/entities/robot-permission/service.d.ts +2 -3
  612. package/dist/core/entities/robot-permission/service.d.ts.map +1 -1
  613. package/dist/core/entities/robot-permission/service.mjs +8 -7
  614. package/dist/core/entities/robot-permission/service.mjs.map +1 -1
  615. package/dist/core/entities/robot-permission/types.d.ts +1 -2
  616. package/dist/core/entities/robot-permission/types.d.ts.map +1 -1
  617. package/dist/core/entities/robot-role/service.d.ts +2 -3
  618. package/dist/core/entities/robot-role/service.d.ts.map +1 -1
  619. package/dist/core/entities/robot-role/service.mjs +9 -8
  620. package/dist/core/entities/robot-role/service.mjs.map +1 -1
  621. package/dist/core/entities/robot-role/types.d.ts +1 -2
  622. package/dist/core/entities/robot-role/types.d.ts.map +1 -1
  623. package/dist/core/entities/role/service.d.ts +2 -3
  624. package/dist/core/entities/role/service.d.ts.map +1 -1
  625. package/dist/core/entities/role/service.mjs +8 -8
  626. package/dist/core/entities/role/service.mjs.map +1 -1
  627. package/dist/core/entities/role/types.d.ts +1 -2
  628. package/dist/core/entities/role/types.d.ts.map +1 -1
  629. package/dist/core/entities/role-attribute/service.d.ts +2 -3
  630. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  631. package/dist/core/entities/role-attribute/service.mjs +5 -5
  632. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  633. package/dist/core/entities/role-attribute/types.d.ts +1 -2
  634. package/dist/core/entities/role-attribute/types.d.ts.map +1 -1
  635. package/dist/core/entities/role-permission/service.d.ts +2 -3
  636. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  637. package/dist/core/entities/role-permission/service.mjs +8 -7
  638. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  639. package/dist/core/entities/role-permission/types.d.ts +1 -2
  640. package/dist/core/entities/role-permission/types.d.ts.map +1 -1
  641. package/dist/core/entities/scope/service.d.ts +2 -3
  642. package/dist/core/entities/scope/service.d.ts.map +1 -1
  643. package/dist/core/entities/scope/service.mjs +8 -8
  644. package/dist/core/entities/scope/service.mjs.map +1 -1
  645. package/dist/core/entities/scope/types.d.ts +1 -2
  646. package/dist/core/entities/scope/types.d.ts.map +1 -1
  647. package/dist/core/entities/user/service.d.ts +2 -3
  648. package/dist/core/entities/user/service.d.ts.map +1 -1
  649. package/dist/core/entities/user/service.mjs +8 -8
  650. package/dist/core/entities/user/service.mjs.map +1 -1
  651. package/dist/core/entities/user/types.d.ts +1 -2
  652. package/dist/core/entities/user/types.d.ts.map +1 -1
  653. package/dist/core/entities/user-attribute/service.d.ts +2 -3
  654. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  655. package/dist/core/entities/user-attribute/service.mjs +8 -8
  656. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  657. package/dist/core/entities/user-attribute/types.d.ts +1 -2
  658. package/dist/core/entities/user-attribute/types.d.ts.map +1 -1
  659. package/dist/core/entities/user-permission/service.d.ts +2 -3
  660. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  661. package/dist/core/entities/user-permission/service.mjs +8 -7
  662. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  663. package/dist/core/entities/user-permission/types.d.ts +1 -2
  664. package/dist/core/entities/user-permission/types.d.ts.map +1 -1
  665. package/dist/core/entities/user-role/service.d.ts +2 -3
  666. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  667. package/dist/core/entities/user-role/service.mjs +9 -8
  668. package/dist/core/entities/user-role/service.mjs.map +1 -1
  669. package/dist/core/entities/user-role/types.d.ts +1 -2
  670. package/dist/core/entities/user-role/types.d.ts.map +1 -1
  671. package/dist/core/identity/index.d.ts +1 -0
  672. package/dist/core/identity/index.d.ts.map +1 -1
  673. package/dist/core/identity/index.mjs +4 -1
  674. package/dist/core/identity/password-recovery/check.d.ts +7 -0
  675. package/dist/core/identity/password-recovery/check.d.ts.map +1 -0
  676. package/dist/core/identity/password-recovery/check.mjs +24 -0
  677. package/dist/core/identity/password-recovery/check.mjs.map +1 -0
  678. package/dist/core/identity/password-recovery/disabled.d.ts +6 -0
  679. package/dist/core/identity/password-recovery/disabled.d.ts.map +1 -0
  680. package/dist/core/identity/password-recovery/disabled.mjs +16 -0
  681. package/dist/core/identity/password-recovery/disabled.mjs.map +1 -0
  682. package/dist/core/identity/password-recovery/email-verification-required.d.ts +6 -0
  683. package/dist/core/identity/password-recovery/email-verification-required.d.ts.map +1 -0
  684. package/dist/core/identity/password-recovery/email-verification-required.mjs +16 -0
  685. package/dist/core/identity/password-recovery/email-verification-required.mjs.map +1 -0
  686. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  687. package/dist/core/identity/password-recovery/service.mjs +10 -7
  688. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  689. package/dist/core/identity/password-recovery/token-expired.d.ts +6 -0
  690. package/dist/core/identity/password-recovery/token-expired.d.ts.map +1 -0
  691. package/dist/core/identity/password-recovery/token-expired.mjs +16 -0
  692. package/dist/core/identity/password-recovery/token-expired.mjs.map +1 -0
  693. package/dist/core/identity/permission/checker/index.d.ts +3 -0
  694. package/dist/core/identity/permission/checker/index.d.ts.map +1 -0
  695. package/dist/core/identity/permission/checker/index.mjs +2 -0
  696. package/dist/core/identity/permission/checker/service.d.ts +10 -0
  697. package/dist/core/identity/permission/checker/service.d.ts.map +1 -0
  698. package/dist/core/identity/permission/checker/service.mjs +55 -0
  699. package/dist/core/identity/permission/checker/service.mjs.map +1 -0
  700. package/dist/core/identity/permission/checker/types.d.ts +42 -0
  701. package/dist/core/identity/permission/checker/types.d.ts.map +1 -0
  702. package/dist/core/identity/permission/identity-policy-data.d.ts +4 -0
  703. package/dist/core/identity/permission/identity-policy-data.d.ts.map +1 -0
  704. package/dist/core/identity/permission/identity-policy-data.mjs +23 -0
  705. package/dist/core/identity/permission/identity-policy-data.mjs.map +1 -0
  706. package/dist/core/identity/permission/index.d.ts +1 -0
  707. package/dist/core/identity/permission/index.d.ts.map +1 -1
  708. package/dist/core/identity/permission/index.mjs +3 -1
  709. package/dist/core/identity/permission/module.mjs.map +1 -1
  710. package/dist/core/identity/policy/checker/index.d.ts +3 -0
  711. package/dist/core/identity/policy/checker/index.d.ts.map +1 -0
  712. package/dist/core/identity/policy/checker/index.mjs +2 -0
  713. package/dist/core/identity/policy/checker/service.d.ts +10 -0
  714. package/dist/core/identity/policy/checker/service.d.ts.map +1 -0
  715. package/dist/core/identity/policy/checker/service.mjs +46 -0
  716. package/dist/core/identity/policy/checker/service.mjs.map +1 -0
  717. package/dist/core/identity/policy/checker/types.d.ts +40 -0
  718. package/dist/core/identity/policy/checker/types.d.ts.map +1 -0
  719. package/dist/core/identity/policy/index.d.ts +2 -0
  720. package/dist/core/identity/policy/index.d.ts.map +1 -0
  721. package/dist/core/identity/policy/index.mjs +3 -0
  722. package/dist/core/identity/provider/account/module.d.ts.map +1 -1
  723. package/dist/core/identity/provider/account/module.mjs +2 -2
  724. package/dist/core/identity/provider/account/module.mjs.map +1 -1
  725. package/dist/core/identity/provider/authentication/constants.mjs.map +1 -1
  726. package/dist/core/identity/provider/authentication/factory.mjs.map +1 -1
  727. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  728. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  729. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  730. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  731. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  732. package/dist/core/identity/provider/authentication/protocols/ldap/collection.d.ts.map +1 -1
  733. package/dist/core/identity/provider/authentication/protocols/ldap/collection.mjs +3 -2
  734. package/dist/core/identity/provider/authentication/protocols/ldap/collection.mjs.map +1 -1
  735. package/dist/core/identity/provider/authentication/protocols/ldap/module.d.ts.map +1 -1
  736. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs +7 -4
  737. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs.map +1 -1
  738. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  739. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
  740. package/dist/core/identity/provider/mapper/attributes/module.mjs.map +1 -1
  741. package/dist/core/identity/provider/mapper/base.mjs.map +1 -1
  742. package/dist/core/identity/provider/mapper/permission/module.mjs.map +1 -1
  743. package/dist/core/identity/provider/mapper/role/module.mjs.map +1 -1
  744. package/dist/core/identity/registration/check.d.ts +3 -0
  745. package/dist/core/identity/registration/check.d.ts.map +1 -0
  746. package/dist/core/identity/registration/check.mjs +12 -0
  747. package/dist/core/identity/registration/check.mjs.map +1 -0
  748. package/dist/core/identity/registration/error.d.ts +6 -0
  749. package/dist/core/identity/registration/error.d.ts.map +1 -0
  750. package/dist/core/identity/registration/error.mjs +16 -0
  751. package/dist/core/identity/registration/error.mjs.map +1 -0
  752. package/dist/core/identity/registration/service.d.ts.map +1 -1
  753. package/dist/core/identity/registration/service.mjs +4 -3
  754. package/dist/core/identity/registration/service.mjs.map +1 -1
  755. package/dist/core/identity/resolver/entities/ldap/module.mjs.map +1 -1
  756. package/dist/core/identity/resolver/module.mjs.map +1 -1
  757. package/dist/core/identity/role/module.mjs.map +1 -1
  758. package/dist/core/index.mjs +5 -4
  759. package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
  760. package/dist/core/oauth2/authorization/code/verifier/module.mjs +8 -8
  761. package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
  762. package/dist/core/oauth2/authorization/code-request/validator.mjs +2 -2
  763. package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
  764. package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
  765. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +8 -8
  766. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  767. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  768. package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
  769. package/dist/core/oauth2/authorization/module.mjs +4 -4
  770. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  771. package/dist/core/oauth2/authorization/state/module.mjs +4 -4
  772. package/dist/core/oauth2/authorization/state/module.mjs.map +1 -1
  773. package/dist/core/oauth2/client/authenticator.mjs +6 -6
  774. package/dist/core/oauth2/client/authenticator.mjs.map +1 -1
  775. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  776. package/dist/core/oauth2/grant-types/base.mjs.map +1 -1
  777. package/dist/core/oauth2/grant-types/client-credentials.mjs.map +1 -1
  778. package/dist/core/oauth2/grant-types/identity.mjs.map +1 -1
  779. package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
  780. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  781. package/dist/core/oauth2/grant-types/robot-credentials.mjs.map +1 -1
  782. package/dist/core/oauth2/helpers/error.d.ts +8 -0
  783. package/dist/core/oauth2/helpers/error.d.ts.map +1 -0
  784. package/dist/core/oauth2/helpers/error.mjs +26 -0
  785. package/dist/core/oauth2/helpers/error.mjs.map +1 -0
  786. package/dist/core/oauth2/helpers/index.d.ts +1 -1
  787. package/dist/core/oauth2/helpers/index.mjs +1 -1
  788. package/dist/core/oauth2/openid/claims.mjs.map +1 -1
  789. package/dist/core/oauth2/response/bearer.mjs.map +1 -1
  790. package/dist/core/oauth2/scope/resolver.mjs.map +1 -1
  791. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  792. package/dist/core/oauth2/token/issuer/base.mjs.map +1 -1
  793. package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
  794. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  795. package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
  796. package/dist/core/oauth2/token/signer/module.mjs.map +1 -1
  797. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  798. package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
  799. package/dist/core/provisioning/entities/client/validator.mjs.map +1 -1
  800. package/dist/core/provisioning/entities/permission/validator.mjs.map +1 -1
  801. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  802. package/dist/core/provisioning/entities/realm/validator.mjs.map +1 -1
  803. package/dist/core/provisioning/entities/robot/relations-validator.mjs.map +1 -1
  804. package/dist/core/provisioning/entities/robot/validator.mjs.map +1 -1
  805. package/dist/core/provisioning/entities/role/relations-validator.mjs.map +1 -1
  806. package/dist/core/provisioning/entities/role/validator.mjs.map +1 -1
  807. package/dist/core/provisioning/entities/root/validator.mjs.map +1 -1
  808. package/dist/core/provisioning/entities/scope/validator.mjs.map +1 -1
  809. package/dist/core/provisioning/entities/user/relations-validator.mjs.map +1 -1
  810. package/dist/core/provisioning/entities/user/validator.mjs.map +1 -1
  811. package/dist/core/provisioning/strategy/normalize.mjs.map +1 -1
  812. package/dist/core/provisioning/strategy/validator.mjs.map +1 -1
  813. package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
  814. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  815. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts +1 -1
  816. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
  817. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  818. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts +1 -1
  819. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts.map +1 -1
  820. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs.map +1 -1
  821. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  822. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  823. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  824. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +1 -1
  825. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  826. package/dist/core/provisioning/synchronizer/root/module.mjs.map +1 -1
  827. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  828. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  829. package/dist/core/security/policy/engine.mjs.map +1 -1
  830. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  831. package/dist/index.mjs +7 -7
  832. package/dist/path.mjs.map +1 -1
  833. package/dist/swagger.json +9413 -2773
  834. package/dist/ui/client/.vite/ssr-manifest.json +33 -113
  835. package/dist/ui/client/assets/index-BdPtpN2t.js +66 -0
  836. package/dist/ui/client/index.html +1 -1
  837. package/dist/ui/server/server.js +1483 -1066
  838. package/dist/utils/error.d.ts +13 -0
  839. package/dist/utils/error.d.ts.map +1 -1
  840. package/dist/utils/error.mjs +26 -24
  841. package/dist/utils/error.mjs.map +1 -1
  842. package/dist/utils/host.mjs.map +1 -1
  843. package/dist/utils/index.d.ts +1 -0
  844. package/dist/utils/index.d.ts.map +1 -1
  845. package/dist/utils/index.mjs +2 -1
  846. package/dist/utils/self-id.mjs.map +1 -1
  847. package/dist/utils/url.d.ts +10 -0
  848. package/dist/utils/url.d.ts.map +1 -0
  849. package/dist/utils/url.mjs +17 -0
  850. package/dist/utils/url.mjs.map +1 -0
  851. package/package.json +32 -33
  852. package/dist/adapters/http/server/index.d.ts +0 -3
  853. package/dist/adapters/http/server/index.d.ts.map +0 -1
  854. package/dist/adapters/http/server/index.mjs +0 -2
  855. package/dist/adapters/http/server/module.d.ts +0 -3
  856. package/dist/adapters/http/server/module.d.ts.map +0 -1
  857. package/dist/adapters/http/server/module.mjs +0 -10
  858. package/dist/adapters/http/server/module.mjs.map +0 -1
  859. package/dist/adapters/http/server/type.d.ts +0 -8
  860. package/dist/adapters/http/server/type.d.ts.map +0 -1
  861. package/dist/adapters/http/swagger/index.d.ts +0 -3
  862. package/dist/adapters/http/swagger/index.d.ts.map +0 -1
  863. package/dist/adapters/http/swagger/index.mjs +0 -2
  864. package/dist/adapters/http/swagger/module.d.ts +0 -12
  865. package/dist/adapters/http/swagger/module.d.ts.map +0 -1
  866. package/dist/adapters/http/swagger/module.mjs +0 -75
  867. package/dist/adapters/http/swagger/module.mjs.map +0 -1
  868. package/dist/adapters/http/swagger/type.d.ts +0 -4
  869. package/dist/adapters/http/swagger/type.d.ts.map +0 -1
  870. package/dist/adapters/http/swagger/type.mjs +0 -1
  871. package/dist/app/modules/swagger/index.d.ts +0 -2
  872. package/dist/app/modules/swagger/index.d.ts.map +0 -1
  873. package/dist/app/modules/swagger/index.mjs +0 -2
  874. package/dist/app/modules/swagger/module.d.ts +0 -9
  875. package/dist/app/modules/swagger/module.d.ts.map +0 -1
  876. package/dist/app/modules/swagger/module.mjs +0 -32
  877. package/dist/app/modules/swagger/module.mjs.map +0 -1
  878. package/dist/cli/commands/swagger.d.ts +0 -8
  879. package/dist/cli/commands/swagger.d.ts.map +0 -1
  880. package/dist/cli/commands/swagger.mjs +0 -29
  881. package/dist/cli/commands/swagger.mjs.map +0 -1
  882. package/dist/core/entities/actor/index.d.ts +0 -2
  883. package/dist/core/entities/actor/index.d.ts.map +0 -1
  884. package/dist/core/entities/actor/index.mjs +0 -1
  885. package/dist/core/entities/actor/types.d.ts +0 -7
  886. package/dist/core/entities/actor/types.d.ts.map +0 -1
  887. package/dist/core/entities/service.d.ts +0 -6
  888. package/dist/core/entities/service.d.ts.map +0 -1
  889. package/dist/core/entities/service.mjs +0 -21
  890. package/dist/core/entities/service.mjs.map +0 -1
  891. package/dist/core/entities/types.d.ts +0 -22
  892. package/dist/core/entities/types.d.ts.map +0 -1
  893. package/dist/core/oauth2/helpers/erorr.d.ts +0 -9
  894. package/dist/core/oauth2/helpers/erorr.d.ts.map +0 -1
  895. package/dist/core/oauth2/helpers/erorr.mjs +0 -26
  896. package/dist/core/oauth2/helpers/erorr.mjs.map +0 -1
  897. package/dist/ui/client/assets/index-Noe7uiOY.js +0 -41
  898. /package/dist/{core/entities/actor → adapters/http/middleware/built-in/realm-resolver}/types.mjs +0 -0
  899. /package/dist/core/{entities → identity/permission/checker}/types.mjs +0 -0
  900. /package/dist/{adapters/http/server/type.mjs → core/identity/policy/checker/types.mjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/modules/index.ts"],"names":[],"mappings":"AAOA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/modules/index.ts"],"names":[],"mappings":"AAOA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,gBAAgB,CAAC"}
@@ -68,6 +68,4 @@ import { ProvisionerModule } from "./provisioning/module.mjs";
68
68
  import "./provisioning/index.mjs";
69
69
  import { RuntimeModule } from "./runtime/module.mjs";
70
70
  import "./runtime/index.mjs";
71
- import { SwaggerModule } from "./swagger/module.mjs";
72
- import "./swagger/index.mjs";
73
- export { AuthenticationInjectionKey, AuthenticationModule, CacheInjectionKey, CacheModule, ClientIdentityRepository, ClientPermissionRepositoryAdapter, ClientRepositoryAdapter, ClientRoleRepositoryAdapter, ClientScopeRepositoryAdapter, ComponentsModule, CompositeProvisioningSource, ConfigEnvironmentVariableName, ConfigInjectionKey, ConfigModule, DatabaseInjectionKey, DatabaseModule, DefaultProvisioningSource, FileProvisioningSource, HTTPInjectionKey, HTTPModule, IdentityInjectionKey, IdentityModule, IdentityProviderAccountRepository, IdentityProviderAttributeMappingRepository, IdentityProviderPermissionMappingRepository, IdentityProviderRepositoryAdapter, IdentityProviderRoleMappingRepository, IdentityProviderRoleMappingRepositoryAdapter, LDAPInjectionKey, LdapModule, LoggerInjectionKey, LoggerModule, MailInjectionKey, MailModule, ModuleName, OAuth2InjectionToken, OAuth2Module, PermissionDatabaseProvider, PermissionPolicyRepositoryAdapter, PermissionRepositoryAdapter, PolicyRepositoryAdapter, ProvisionerModule, RealmRepositoryAdapter, RobotIdentityRepository, RobotPermissionRepositoryAdapter, RobotRepositoryAdapter, RobotRoleRepositoryAdapter, RoleAttributeRepositoryAdapter, RolePermissionRepositoryAdapter, RoleRepositoryAdapter, RuntimeModule, ScopeRepositoryAdapter, SessionRepository, SwaggerModule, UserAttributeRepositoryAdapter, UserIdentityRepository, UserPermissionRepositoryAdapter, UserRepositoryAdapter, UserRoleRepositoryAdapter };
71
+ export { AuthenticationInjectionKey, AuthenticationModule, CacheInjectionKey, CacheModule, ClientIdentityRepository, ClientPermissionRepositoryAdapter, ClientRepositoryAdapter, ClientRoleRepositoryAdapter, ClientScopeRepositoryAdapter, ComponentsModule, CompositeProvisioningSource, ConfigEnvironmentVariableName, ConfigInjectionKey, ConfigModule, DatabaseInjectionKey, DatabaseModule, DefaultProvisioningSource, FileProvisioningSource, HTTPInjectionKey, HTTPModule, IdentityInjectionKey, IdentityModule, IdentityProviderAccountRepository, IdentityProviderAttributeMappingRepository, IdentityProviderPermissionMappingRepository, IdentityProviderRepositoryAdapter, IdentityProviderRoleMappingRepository, IdentityProviderRoleMappingRepositoryAdapter, LDAPInjectionKey, LdapModule, LoggerInjectionKey, LoggerModule, MailInjectionKey, MailModule, ModuleName, OAuth2InjectionToken, OAuth2Module, PermissionDatabaseProvider, PermissionPolicyRepositoryAdapter, PermissionRepositoryAdapter, PolicyRepositoryAdapter, ProvisionerModule, RealmRepositoryAdapter, RobotIdentityRepository, RobotPermissionRepositoryAdapter, RobotRepositoryAdapter, RobotRoleRepositoryAdapter, RoleAttributeRepositoryAdapter, RolePermissionRepositoryAdapter, RoleRepositoryAdapter, RuntimeModule, ScopeRepositoryAdapter, SessionRepository, UserAttributeRepositoryAdapter, UserIdentityRepository, UserPermissionRepositoryAdapter, UserRepositoryAdapter, UserRoleRepositoryAdapter };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":["TypedToken","LDAPInjectionKey","ClientFactory"],"sources":["../../../../src/app/modules/ldap/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TypedToken } from 'eldin';\nimport type { ILdapClientFactory } from '../../../core/index.ts';\n\nexport const LDAPInjectionKey = { ClientFactory: new TypedToken<ILdapClientFactory>('ClientFactory') } as const;\n"],"mappings":";;AAUA,MAAaC,mBAAmB,EAAEC,eAAe,IAAIF,WAA+B,gBAAA,EAAiB"}
1
+ {"version":3,"file":"constants.mjs","names":["TypedToken","LDAPInjectionKey","ClientFactory"],"sources":["../../../../src/app/modules/ldap/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TypedToken } from 'eldin';\nimport type { ILdapClientFactory } from '../../../core/index.ts';\n\nexport const LDAPInjectionKey = { ClientFactory: new TypedToken<ILdapClientFactory>('ClientFactory') } as const;\n"],"mappings":";;AAUA,MAAaC,mBAAmB,EAAEC,eAAe,IAAIF,WAA+B,eAAA,EAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["LdapClientFactory","ModuleName","LDAPInjectionKey","LdapModule","name","LDAP","setup","container","register","ClientFactory","useFactory"],"sources":["../../../../src/app/modules/ldap/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LdapClientFactory } from '../../../adapters/shared/ldap/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { LDAPInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class LdapModule implements IModule {\n readonly name: string;\n\n constructor() {\n this.name = ModuleName.LDAP;\n }\n\n async setup(container: IContainer): Promise<void> {\n container.register(LDAPInjectionKey.ClientFactory, { useFactory: () => new LdapClientFactory() });\n }\n}\n"],"mappings":";;;;;AAaA,IAAaG,aAAb,MAAaA;CACAC;CAET,cAAc;AACV,OAAKA,OAAOH,WAAWI;;CAG3B,MAAMC,MAAMC,WAAsC;AAC9CA,YAAUC,SAASN,iBAAiBO,eAAe,EAAEC,kBAAkB,IAAIV,mBAAAA,EAAoB,CAAA"}
1
+ {"version":3,"file":"module.mjs","names":["LdapClientFactory","ModuleName","LDAPInjectionKey","LdapModule","name","LDAP","setup","container","register","ClientFactory","useFactory"],"sources":["../../../../src/app/modules/ldap/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LdapClientFactory } from '../../../adapters/shared/ldap/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { LDAPInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class LdapModule implements IModule {\n readonly name: string;\n\n constructor() {\n this.name = ModuleName.LDAP;\n }\n\n async setup(container: IContainer): Promise<void> {\n container.register(LDAPInjectionKey.ClientFactory, { useFactory: () => new LdapClientFactory() });\n }\n}\n"],"mappings":";;;;;AAaA,IAAaG,aAAb,MAAaA;CACAC;CAET,cAAc;EACV,KAAKA,OAAOH,WAAWI;CAC3B;CAEA,MAAMC,MAAMC,WAAsC;EAC9CA,UAAUC,SAASN,iBAAiBO,eAAe,EAAEC,kBAAkB,IAAIV,kBAAAA,EAAoB,CAAA;CACnG;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":["TypedToken","LoggerInjectionKey"],"sources":["../../../../src/app/modules/logger/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Logger } from '@authup/server-kit';\nimport { TypedToken } from 'eldin';\n\nexport const LoggerInjectionKey = new TypedToken<Logger>('Logger');\n"],"mappings":";;AAUA,MAAaC,qBAAqB,IAAID,WAAmB,SAAA"}
1
+ {"version":3,"file":"constants.mjs","names":["TypedToken","LoggerInjectionKey"],"sources":["../../../../src/app/modules/logger/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Logger } from '@authup/server-kit';\nimport { TypedToken } from 'eldin';\n\nexport const LoggerInjectionKey = new TypedToken<Logger>('Logger');\n"],"mappings":";;AAUA,MAAaC,qBAAqB,IAAID,WAAmB,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["createLogger","createNoopLogger","setLoggerFactory","ModuleName","ConfigInjectionKey","LoggerInjectionKey","LoggerModule","name","dependencies","LOGGER","CONFIG","setup","container","result","tryResolve","success","data","logger","register","useFactory","env","directory","writableDirectoryPath"],"sources":["../../../../src/app/modules/logger/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createLogger, createNoopLogger, setLoggerFactory } from '@authup/server-kit';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { LoggerInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class LoggerModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.LOGGER;\n this.dependencies = [ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n const result = container.tryResolve(ConfigInjectionKey);\n if (!result.success || !result.data.logger) {\n container.register(LoggerInjectionKey, { useFactory: createNoopLogger });\n\n return;\n }\n\n container.register(LoggerInjectionKey, {\n useFactory: () => createLogger({\n env: result.data.env,\n directory: result.data.writableDirectoryPath,\n }),\n });\n\n // todo: remove this\n setLoggerFactory(() => createLogger({\n env: result.data.env,\n directory: result.data.writableDirectoryPath,\n }));\n }\n\n // ----------------------------------------------------\n}\n"],"mappings":";;;;;;AAcA,IAAaM,eAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;AACV,OAAKD,OAAOJ,WAAWM;AACvB,OAAKD,eAAe,CAACL,WAAWO,OAAO;;CAG3C,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,WAAWV,mBAAAA;AACpC,MAAI,CAACS,OAAOE,WAAW,CAACF,OAAOG,KAAKC,QAAQ;AACxCL,aAAUM,SAASb,oBAAoB,EAAEc,YAAYlB,kBAAiB,CAAA;AAEtE;;AAGJW,YAAUM,SAASb,oBAAoB,EACnCc,kBAAkBnB,aAAa;GAC3BoB,KAAKP,OAAOG,KAAKI;GACjBC,WAAWR,OAAOG,KAAKM;GAC3B,CAAA,EACJ,CAAA;AAGApB,yBAAuBF,aAAa;GAChCoB,KAAKP,OAAOG,KAAKI;GACjBC,WAAWR,OAAOG,KAAKM;GAC3B,CAAA,CAAA"}
1
+ {"version":3,"file":"module.mjs","names":["createLogger","createNoopLogger","setLoggerFactory","ModuleName","ConfigInjectionKey","LoggerInjectionKey","LoggerModule","name","dependencies","LOGGER","CONFIG","setup","container","result","tryResolve","success","data","logger","register","useFactory","env","directory","writableDirectoryPath"],"sources":["../../../../src/app/modules/logger/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createLogger, createNoopLogger, setLoggerFactory } from '@authup/server-kit';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { LoggerInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class LoggerModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.LOGGER;\n this.dependencies = [ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n const result = container.tryResolve(ConfigInjectionKey);\n if (!result.success || !result.data.logger) {\n container.register(LoggerInjectionKey, { useFactory: createNoopLogger });\n\n return;\n }\n\n container.register(LoggerInjectionKey, {\n useFactory: () => createLogger({\n env: result.data.env,\n directory: result.data.writableDirectoryPath,\n }),\n });\n\n // todo: remove this\n setLoggerFactory(() => createLogger({\n env: result.data.env,\n directory: result.data.writableDirectoryPath,\n }));\n }\n\n // ----------------------------------------------------\n}\n"],"mappings":";;;;;;AAcA,IAAaM,eAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOJ,WAAWM;EACvB,KAAKD,eAAe,CAACL,WAAWO,MAAAA;CACpC;CAEA,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,WAAWV,kBAAAA;EACpC,IAAI,CAACS,OAAOE,WAAW,CAACF,OAAOG,KAAKC,QAAQ;GACxCL,UAAUM,SAASb,oBAAoB,EAAEc,YAAYlB,iBAAiB,CAAA;GAEtE;EACJ;EAEAW,UAAUM,SAASb,oBAAoB,EACnCc,kBAAkBnB,aAAa;GAC3BoB,KAAKP,OAAOG,KAAKI;GACjBC,WAAWR,OAAOG,KAAKM;EAC3B,CAAA,EACJ,CAAA;EAGApB,uBAAuBF,aAAa;GAChCoB,KAAKP,OAAOG,KAAKI;GACjBC,WAAWR,OAAOG,KAAKM;EAC3B,CAAA,CAAA;CACJ;AAGJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["createTransport","createSMTPClient","options","transport","connectionString","auth","user","password","type","pass","host","port","secure","ssl","opportunisticTLS","starttls","tls","rejectUnauthorized"],"sources":["../../../../../../src/app/modules/mail/adapter/smtp/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createTransport } from 'nodemailer';\nimport type { SMTPClient, SMTPOptions } from './types.ts';\n\nexport function createSMTPClient(options?: SMTPOptions | string) : SMTPClient {\n let transport : SMTPClient;\n\n options = options || {};\n\n if (typeof options === 'string') {\n transport = createTransport(options);\n } else if (options.connectionString) {\n transport = createTransport(options.connectionString);\n } else {\n let auth: Record<string, any> | undefined;\n if (options.user && options.password) {\n auth = {\n type: 'login',\n user: options.user,\n pass: options.password,\n };\n }\n\n transport = createTransport({\n host: options.host,\n port: options.port,\n auth,\n secure: options.ssl,\n opportunisticTLS: options.starttls,\n tls: { rejectUnauthorized: false },\n });\n }\n\n return transport;\n}\n"],"mappings":";;AAUA,SAAgBC,iBAAiBC,SAA8B;CAC3D,IAAIC;AAEJD,WAAUA,WAAW,EAAC;AAEtB,KAAI,OAAOA,YAAY,SACnBC,aAAYH,gBAAgBE,QAAAA;UACrBA,QAAQE,iBACfD,aAAYH,gBAAgBE,QAAQE,iBAAgB;MACjD;EACH,IAAIC;AACJ,MAAIH,QAAQI,QAAQJ,QAAQK,SACxBF,QAAO;GACHG,MAAM;GACNF,MAAMJ,QAAQI;GACdG,MAAMP,QAAQK;GAClB;AAGJJ,cAAYH,gBAAgB;GACxBU,MAAMR,QAAQQ;GACdC,MAAMT,QAAQS;GACdN;GACAO,QAAQV,QAAQW;GAChBC,kBAAkBZ,QAAQa;GAC1BC,KAAK,EAAEC,oBAAoB,OAAM;GACrC,CAAA;;AAGJ,QAAOd"}
1
+ {"version":3,"file":"module.mjs","names":["createTransport","createSMTPClient","options","transport","connectionString","auth","user","password","type","pass","host","port","secure","ssl","opportunisticTLS","starttls","tls","rejectUnauthorized"],"sources":["../../../../../../src/app/modules/mail/adapter/smtp/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createTransport } from 'nodemailer';\nimport type { SMTPClient, SMTPOptions } from './types.ts';\n\nexport function createSMTPClient(options?: SMTPOptions | string) : SMTPClient {\n let transport : SMTPClient;\n\n options = options || {};\n\n if (typeof options === 'string') {\n transport = createTransport(options);\n } else if (options.connectionString) {\n transport = createTransport(options.connectionString);\n } else {\n let auth: Record<string, any> | undefined;\n if (options.user && options.password) {\n auth = {\n type: 'login',\n user: options.user,\n pass: options.password,\n };\n }\n\n transport = createTransport({\n host: options.host,\n port: options.port,\n auth,\n secure: options.ssl,\n opportunisticTLS: options.starttls,\n tls: { rejectUnauthorized: false },\n });\n }\n\n return transport;\n}\n"],"mappings":";;AAUA,SAAgBC,iBAAiBC,SAA8B;CAC3D,IAAIC;CAEJD,UAAUA,WAAW,CAAC;CAEtB,IAAI,OAAOA,YAAY,UACnBC,YAAYH,gBAAgBE,OAAAA;MACzB,IAAIA,QAAQE,kBACfD,YAAYH,gBAAgBE,QAAQE,gBAAgB;MACjD;EACH,IAAIC;EACJ,IAAIH,QAAQI,QAAQJ,QAAQK,UACxBF,OAAO;GACHG,MAAM;GACNF,MAAMJ,QAAQI;GACdG,MAAMP,QAAQK;EAClB;EAGJJ,YAAYH,gBAAgB;GACxBU,MAAMR,QAAQQ;GACdC,MAAMT,QAAQS;GACdN;GACAO,QAAQV,QAAQW;GAChBC,kBAAkBZ,QAAQa;GAC1BC,KAAK,EAAEC,oBAAoB,MAAM;EACrC,CAAA;CACJ;CAEA,OAAOd;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"smtp.mjs","names":["createSMTPClient","SMTPMailClientAdapter","transporter","input","createDriver","connectionString","send","options","sendMail"],"sources":["../../../../../../src/app/modules/mail/adapter/smtp/smtp.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport type { IMailClient, MailSendOptions } from '../../../../../core/index.ts';\nimport { createSMTPClient } from './module.ts';\nimport type { SMTPOptions } from './types.ts';\n\nexport class SMTPMailClientAdapter implements IMailClient {\n protected transporter : Transporter;\n\n constructor(input: string | boolean | SMTPOptions) {\n this.transporter = this.createDriver(input);\n }\n\n protected createDriver(input: string | boolean | SMTPOptions) : Transporter {\n if (typeof input === 'boolean') {\n return createSMTPClient();\n }\n\n if (typeof input === 'string') {\n return createSMTPClient({ connectionString: input });\n }\n\n return createSMTPClient(input);\n }\n\n async send(options: MailSendOptions): Promise<any> {\n return this.transporter.sendMail(options);\n }\n}\n"],"mappings":";;AAYA,IAAaC,wBAAb,MAAaA;CACCC;CAEV,YAAYC,OAAuC;AAC/C,OAAKD,cAAc,KAAKE,aAAaD,MAAAA;;CAG/BC,aAAaD,OAAqD;AACxE,MAAI,OAAOA,UAAU,UACjB,QAAOH,kBAAAA;AAGX,MAAI,OAAOG,UAAU,SACjB,QAAOH,iBAAiB,EAAEK,kBAAkBF,OAAM,CAAA;AAGtD,SAAOH,iBAAiBG,MAAAA;;CAG5B,MAAMG,KAAKC,SAAwC;AAC/C,SAAO,KAAKL,YAAYM,SAASD,QAAAA"}
1
+ {"version":3,"file":"smtp.mjs","names":["createSMTPClient","SMTPMailClientAdapter","transporter","input","createDriver","connectionString","send","options","sendMail"],"sources":["../../../../../../src/app/modules/mail/adapter/smtp/smtp.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport type { IMailClient, MailSendOptions } from '../../../../../core/index.ts';\nimport { createSMTPClient } from './module.ts';\nimport type { SMTPOptions } from './types.ts';\n\nexport class SMTPMailClientAdapter implements IMailClient {\n protected transporter : Transporter;\n\n constructor(input: string | boolean | SMTPOptions) {\n this.transporter = this.createDriver(input);\n }\n\n protected createDriver(input: string | boolean | SMTPOptions) : Transporter {\n if (typeof input === 'boolean') {\n return createSMTPClient();\n }\n\n if (typeof input === 'string') {\n return createSMTPClient({ connectionString: input });\n }\n\n return createSMTPClient(input);\n }\n\n async send(options: MailSendOptions): Promise<any> {\n return this.transporter.sendMail(options);\n }\n}\n"],"mappings":";;AAYA,IAAaC,wBAAb,MAAaA;CACCC;CAEV,YAAYC,OAAuC;EAC/C,KAAKD,cAAc,KAAKE,aAAaD,KAAAA;CACzC;CAEUC,aAAaD,OAAqD;EACxE,IAAI,OAAOA,UAAU,WACjB,OAAOH,iBAAAA;EAGX,IAAI,OAAOG,UAAU,UACjB,OAAOH,iBAAiB,EAAEK,kBAAkBF,MAAM,CAAA;EAGtD,OAAOH,iBAAiBG,KAAAA;CAC5B;CAEA,MAAMG,KAAKC,SAAwC;EAC/C,OAAO,KAAKL,YAAYM,SAASD,OAAAA;CACrC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"void.mjs","names":["VoidMailClientAdapter","send","_options","Promise","resolve","undefined"],"sources":["../../../../../src/app/modules/mail/adapter/void.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IMailClient, MailSendOptions } from '../../../../core/index.ts';\n\nexport class VoidMailClientAdapter implements IMailClient {\n send(_options: MailSendOptions): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";AASA,IAAaA,wBAAb,MAAaA;CACTC,KAAKC,UAA0C;AAC3C,SAAOC,QAAQC,QAAQC,KAAAA,EAAAA"}
1
+ {"version":3,"file":"void.mjs","names":["VoidMailClientAdapter","send","_options","Promise","resolve","undefined"],"sources":["../../../../../src/app/modules/mail/adapter/void.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IMailClient, MailSendOptions } from '../../../../core/index.ts';\n\nexport class VoidMailClientAdapter implements IMailClient {\n send(_options: MailSendOptions): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";AASA,IAAaA,wBAAb,MAAaA;CACTC,KAAKC,UAA0C;EAC3C,OAAOC,QAAQC,QAAQC,KAAAA,CAAAA;CAC3B;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":["TypedToken","MailInjectionKey"],"sources":["../../../../src/app/modules/mail/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TypedToken } from 'eldin';\nimport type { IMailClient } from '../../../core/index.ts';\n\nexport const MailInjectionKey = new TypedToken<IMailClient>('Mail');\n"],"mappings":";;AAUA,MAAaC,mBAAmB,IAAID,WAAwB,OAAA"}
1
+ {"version":3,"file":"constants.mjs","names":["TypedToken","MailInjectionKey"],"sources":["../../../../src/app/modules/mail/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TypedToken } from 'eldin';\nimport type { IMailClient } from '../../../core/index.ts';\n\nexport const MailInjectionKey = new TypedToken<IMailClient>('Mail');\n"],"mappings":";;AAUA,MAAaC,mBAAmB,IAAID,WAAwB,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["ModuleName","SMTPMailClientAdapter","VoidMailClientAdapter","MailInjectionKey","ConfigInjectionKey","MailModule","name","dependencies","MAIL","CONFIG","setup","container","result","tryResolve","success","data","smtp","register","useFactory"],"sources":["../../../../src/app/modules/mail/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { SMTPMailClientAdapter, VoidMailClientAdapter } from './adapter/index.ts';\nimport { MailInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\n\nexport class MailModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.MAIL;\n this.dependencies = [ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n const result = container.tryResolve(ConfigInjectionKey);\n if (!result.success || !result.data.smtp) {\n container.register(MailInjectionKey, { useFactory: () => new VoidMailClientAdapter() });\n\n return;\n }\n\n container.register(MailInjectionKey, { useFactory: () => new SMTPMailClientAdapter(result.data.smtp) });\n }\n}\n"],"mappings":";;;;;;;;AAcA,IAAaK,aAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;AACV,OAAKD,OAAON,WAAWQ;AACvB,OAAKD,eAAe,CAACP,WAAWS,OAAO;;CAG3C,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,WAAWT,mBAAAA;AACpC,MAAI,CAACQ,OAAOE,WAAW,CAACF,OAAOG,KAAKC,MAAM;AACtCL,aAAUM,SAASd,kBAAkB,EAAEe,kBAAkB,IAAIhB,uBAAAA,EAAwB,CAAA;AAErF;;AAGJS,YAAUM,SAASd,kBAAkB,EAAEe,kBAAkB,IAAIjB,sBAAsBW,OAAOG,KAAKC,KAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"module.mjs","names":["ModuleName","SMTPMailClientAdapter","VoidMailClientAdapter","MailInjectionKey","ConfigInjectionKey","MailModule","name","dependencies","MAIL","CONFIG","setup","container","result","tryResolve","success","data","smtp","register","useFactory"],"sources":["../../../../src/app/modules/mail/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { SMTPMailClientAdapter, VoidMailClientAdapter } from './adapter/index.ts';\nimport { MailInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\n\nexport class MailModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.MAIL;\n this.dependencies = [ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n const result = container.tryResolve(ConfigInjectionKey);\n if (!result.success || !result.data.smtp) {\n container.register(MailInjectionKey, { useFactory: () => new VoidMailClientAdapter() });\n\n return;\n }\n\n container.register(MailInjectionKey, { useFactory: () => new SMTPMailClientAdapter(result.data.smtp) });\n }\n}\n"],"mappings":";;;;;;;;AAcA,IAAaK,aAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAON,WAAWQ;EACvB,KAAKD,eAAe,CAACP,WAAWS,MAAAA;CACpC;CAEA,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,WAAWT,kBAAAA;EACpC,IAAI,CAACQ,OAAOE,WAAW,CAACF,OAAOG,KAAKC,MAAM;GACtCL,UAAUM,SAASd,kBAAkB,EAAEe,kBAAkB,IAAIhB,sBAAAA,EAAwB,CAAA;GAErF;EACJ;EAEAS,UAAUM,SAASd,kBAAkB,EAAEe,kBAAkB,IAAIjB,sBAAsBW,OAAOG,KAAKC,IAAI,EAAE,CAAA;CACzG;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":["TypedToken","OAuth2InjectionToken","ClientRepository","ScopeRepository","AuthorizationCodeIssuer","AuthorizationCodeRepository","AuthorizationCodeVerifier","AuthorizationStateManager","AuthorizationCodeRequestVerifier","AuthorizationStateRepository","KeyRepository","AccessTokenIssuer","OpenIDTokenIssuer","RefreshTokenIssuer","TokenRepository","TokenRevoker","TokenSigner","TokenVerifier"],"sources":["../../../../src/app/modules/oauth2/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TypedToken } from 'eldin';\nimport type {\n IOAuth2AuthorizationCodeIssuer,\n IOAuth2AuthorizationCodeRepository,\n IOAuth2AuthorizationCodeRequestVerifier,\n IOAuth2AuthorizationCodeVerifier,\n IOAuth2AuthorizationStateManager,\n IOAuth2AuthorizeStateRepository,\n IOAuth2ClientRepository,\n IOAuth2KeyRepository,\n IOAuth2OpenIDTokenIssuer,\n IOAuth2ScopeRepository,\n IOAuth2TokenIssuer,\n IOAuth2TokenRepository,\n IOAuth2TokenRevoker,\n IOAuth2TokenSigner,\n IOAuth2TokenVerifier,\n} from '../../../core/index.ts';\n\nexport const OAuth2InjectionToken = {\n ClientRepository: new TypedToken<IOAuth2ClientRepository>('ClientRepository'),\n ScopeRepository: new TypedToken<IOAuth2ScopeRepository>('ScopeRepository'),\n\n AuthorizationCodeIssuer: new TypedToken<IOAuth2AuthorizationCodeIssuer>('AuthorizationCodeIssuer'),\n AuthorizationCodeRepository: new TypedToken<IOAuth2AuthorizationCodeRepository>('AuthorizationCodeRepository'),\n AuthorizationCodeVerifier: new TypedToken<IOAuth2AuthorizationCodeVerifier>('AuthorizationCodeVerifier'),\n AuthorizationStateManager: new TypedToken<IOAuth2AuthorizationStateManager>('AuthorizationStateManager'),\n AuthorizationCodeRequestVerifier: new TypedToken<IOAuth2AuthorizationCodeRequestVerifier>('AuthorizationCodeRequestVerifier'),\n\n AuthorizationStateRepository: new TypedToken<IOAuth2AuthorizeStateRepository>('AuthorizationStateRepository'),\n\n KeyRepository: new TypedToken<IOAuth2KeyRepository>('KeyRepository'),\n\n AccessTokenIssuer: new TypedToken<IOAuth2TokenIssuer>('AccessTokenIssuer'),\n OpenIDTokenIssuer: new TypedToken<IOAuth2OpenIDTokenIssuer>('OpenIDTokenIssuer'),\n RefreshTokenIssuer: new TypedToken<IOAuth2TokenIssuer>('RefreshTokenIssuer'),\n\n TokenRepository: new TypedToken<IOAuth2TokenRepository>('TokenRepository'),\n TokenRevoker: new TypedToken<IOAuth2TokenRevoker>('TokenRevoker'),\n TokenSigner: new TypedToken<IOAuth2TokenSigner>('TokenSigner'),\n TokenVerifier: new TypedToken<IOAuth2TokenVerifier>('TokenVerifier'),\n} as const;\n"],"mappings":";;AA0BA,MAAaC,uBAAuB;CAChCC,kBAAkB,IAAIF,WAAoC,mBAAA;CAC1DG,iBAAiB,IAAIH,WAAmC,kBAAA;CAExDI,yBAAyB,IAAIJ,WAA2C,0BAAA;CACxEK,6BAA6B,IAAIL,WAA+C,8BAAA;CAChFM,2BAA2B,IAAIN,WAA6C,4BAAA;CAC5EO,2BAA2B,IAAIP,WAA6C,4BAAA;CAC5EQ,kCAAkC,IAAIR,WAAoD,mCAAA;CAE1FS,8BAA8B,IAAIT,WAA4C,+BAAA;CAE9EU,eAAe,IAAIV,WAAiC,gBAAA;CAEpDW,mBAAmB,IAAIX,WAA+B,oBAAA;CACtDY,mBAAmB,IAAIZ,WAAqC,oBAAA;CAC5Da,oBAAoB,IAAIb,WAA+B,qBAAA;CAEvDc,iBAAiB,IAAId,WAAmC,kBAAA;CACxDe,cAAc,IAAIf,WAAgC,eAAA;CAClDgB,aAAa,IAAIhB,WAA+B,cAAA;CAChDiB,eAAe,IAAIjB,WAAiC,gBAAA;CACxD"}
1
+ {"version":3,"file":"constants.mjs","names":["TypedToken","OAuth2InjectionToken","ClientRepository","ScopeRepository","AuthorizationCodeIssuer","AuthorizationCodeRepository","AuthorizationCodeVerifier","AuthorizationStateManager","AuthorizationCodeRequestVerifier","AuthorizationStateRepository","KeyRepository","AccessTokenIssuer","OpenIDTokenIssuer","RefreshTokenIssuer","TokenRepository","TokenRevoker","TokenSigner","TokenVerifier"],"sources":["../../../../src/app/modules/oauth2/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TypedToken } from 'eldin';\nimport type {\n IOAuth2AuthorizationCodeIssuer,\n IOAuth2AuthorizationCodeRepository,\n IOAuth2AuthorizationCodeRequestVerifier,\n IOAuth2AuthorizationCodeVerifier,\n IOAuth2AuthorizationStateManager,\n IOAuth2AuthorizeStateRepository,\n IOAuth2ClientRepository,\n IOAuth2KeyRepository,\n IOAuth2OpenIDTokenIssuer,\n IOAuth2ScopeRepository,\n IOAuth2TokenIssuer,\n IOAuth2TokenRepository,\n IOAuth2TokenRevoker,\n IOAuth2TokenSigner,\n IOAuth2TokenVerifier,\n} from '../../../core/index.ts';\n\nexport const OAuth2InjectionToken = {\n ClientRepository: new TypedToken<IOAuth2ClientRepository>('ClientRepository'),\n ScopeRepository: new TypedToken<IOAuth2ScopeRepository>('ScopeRepository'),\n\n AuthorizationCodeIssuer: new TypedToken<IOAuth2AuthorizationCodeIssuer>('AuthorizationCodeIssuer'),\n AuthorizationCodeRepository: new TypedToken<IOAuth2AuthorizationCodeRepository>('AuthorizationCodeRepository'),\n AuthorizationCodeVerifier: new TypedToken<IOAuth2AuthorizationCodeVerifier>('AuthorizationCodeVerifier'),\n AuthorizationStateManager: new TypedToken<IOAuth2AuthorizationStateManager>('AuthorizationStateManager'),\n AuthorizationCodeRequestVerifier: new TypedToken<IOAuth2AuthorizationCodeRequestVerifier>('AuthorizationCodeRequestVerifier'),\n\n AuthorizationStateRepository: new TypedToken<IOAuth2AuthorizeStateRepository>('AuthorizationStateRepository'),\n\n KeyRepository: new TypedToken<IOAuth2KeyRepository>('KeyRepository'),\n\n AccessTokenIssuer: new TypedToken<IOAuth2TokenIssuer>('AccessTokenIssuer'),\n OpenIDTokenIssuer: new TypedToken<IOAuth2OpenIDTokenIssuer>('OpenIDTokenIssuer'),\n RefreshTokenIssuer: new TypedToken<IOAuth2TokenIssuer>('RefreshTokenIssuer'),\n\n TokenRepository: new TypedToken<IOAuth2TokenRepository>('TokenRepository'),\n TokenRevoker: new TypedToken<IOAuth2TokenRevoker>('TokenRevoker'),\n TokenSigner: new TypedToken<IOAuth2TokenSigner>('TokenSigner'),\n TokenVerifier: new TypedToken<IOAuth2TokenVerifier>('TokenVerifier'),\n} as const;\n"],"mappings":";;AA0BA,MAAaC,uBAAuB;CAChCC,kBAAkB,IAAIF,WAAoC,kBAAA;CAC1DG,iBAAiB,IAAIH,WAAmC,iBAAA;CAExDI,yBAAyB,IAAIJ,WAA2C,yBAAA;CACxEK,6BAA6B,IAAIL,WAA+C,6BAAA;CAChFM,2BAA2B,IAAIN,WAA6C,2BAAA;CAC5EO,2BAA2B,IAAIP,WAA6C,2BAAA;CAC5EQ,kCAAkC,IAAIR,WAAoD,kCAAA;CAE1FS,8BAA8B,IAAIT,WAA4C,8BAAA;CAE9EU,eAAe,IAAIV,WAAiC,eAAA;CAEpDW,mBAAmB,IAAIX,WAA+B,mBAAA;CACtDY,mBAAmB,IAAIZ,WAAqC,mBAAA;CAC5Da,oBAAoB,IAAIb,WAA+B,oBAAA;CAEvDc,iBAAiB,IAAId,WAAmC,iBAAA;CACxDe,cAAc,IAAIf,WAAgC,cAAA;CAClDgB,aAAa,IAAIhB,WAA+B,aAAA;CAChDiB,eAAe,IAAIjB,WAAiC,eAAA;AACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["CacheInjectionKey","ModuleName","OAuth2AuthorizationCodeRepository","OAuth2AuthorizationStateRepository","OAuth2ClientRepository","OAuth2KeyRepository","OAuth2ScopeRepository","OAuth2TokenRepository","OAuth2AccessTokenIssuer","OAuth2AuthorizationCodeIssuer","OAuth2AuthorizationCodeRequestVerifier","OAuth2AuthorizationCodeVerifier","OAuth2AuthorizationStateManager","OAuth2OpenIDTokenIssuer","OAuth2RefreshTokenIssuer","OAuth2TokenRevoker","OAuth2TokenSigner","OAuth2TokenVerifier","OAuth2InjectionToken","IdentityInjectionKey","ClientEntity","ClientScopeEntity","ConfigInjectionKey","OAuth2Module","name","dependencies","OAUTH2","DATABASE","CACHE","CONFIG","IDENTITY","setup","container","config","resolve","register","ClientRepository","useFactory","c","repository","ScopeRepository","AuthorizationCodeRepository","cache","AuthorizationStateRepository","TokenRepository","KeyRepository","TokenSigner","keyRepository","AuthorizationCodeIssuer","codeRepository","maxAge","tokenAccessMaxAge","AuthorizationCodeVerifier","AuthorizationCodeRequestVerifier","clientRepository","clientScopeRepository","scopeRepository","AuthorizationStateManager","stateRepository","TokenRevoker","tokenRepository","TokenVerifier","AccessTokenIssuer","tokenSigner","identityRoleProvider","RoleProvider","issuer","publicUrl","RefreshTokenIssuer","tokenRefreshMaxAge","OpenIDTokenIssuer","signer","identityResolver","Resolver","options"],"sources":["../../../../src/app/modules/oauth2/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Repository } from 'typeorm';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport type { IContainer } from 'eldin';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\n\nimport {\n OAuth2AuthorizationCodeRepository,\n OAuth2AuthorizationStateRepository,\n OAuth2ClientRepository,\n OAuth2KeyRepository,\n OAuth2ScopeRepository,\n OAuth2TokenRepository,\n} from './repositories/index.ts';\nimport {\n OAuth2AccessTokenIssuer,\n OAuth2AuthorizationCodeIssuer,\n OAuth2AuthorizationCodeRequestVerifier,\n OAuth2AuthorizationCodeVerifier,\n OAuth2AuthorizationStateManager,\n OAuth2OpenIDTokenIssuer,\n OAuth2RefreshTokenIssuer,\n OAuth2TokenRevoker,\n OAuth2TokenSigner,\n OAuth2TokenVerifier,\n} from '../../../core/index.ts';\nimport { OAuth2InjectionToken } from './constants.ts';\nimport { IdentityInjectionKey } from '../identity/index.ts';\nimport { ClientEntity, ClientScopeEntity } from '../../../adapters/database/domains/index.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\n\nexport class OAuth2Module implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.OAUTH2;\n this.dependencies = [ModuleName.DATABASE, ModuleName.CACHE, ModuleName.CONFIG, ModuleName.IDENTITY];\n }\n\n async setup(container: IContainer) : Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n container.register(OAuth2InjectionToken.ClientRepository, {\n useFactory: (c) => {\n const repository = c.resolve<Repository<ClientEntity>>(ClientEntity);\n return new OAuth2ClientRepository(repository);\n },\n });\n\n container.register(OAuth2InjectionToken.ScopeRepository, {\n useFactory: (c) => {\n const repository = c.resolve<Repository<ClientScopeEntity>>(ClientScopeEntity);\n return new OAuth2ScopeRepository(repository);\n },\n });\n\n container.register(OAuth2InjectionToken.AuthorizationCodeRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n return new OAuth2AuthorizationCodeRepository(cache);\n },\n });\n\n container.register(OAuth2InjectionToken.AuthorizationStateRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n return new OAuth2AuthorizationStateRepository(cache);\n },\n });\n\n container.register(OAuth2InjectionToken.TokenRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n return new OAuth2TokenRepository(cache);\n },\n });\n\n container.register(OAuth2InjectionToken.KeyRepository, {\n // todo: cache use here\n useFactory: () => new OAuth2KeyRepository(),\n });\n\n container.register(OAuth2InjectionToken.TokenSigner, {\n useFactory: (c) => {\n const keyRepository = c.resolve(OAuth2InjectionToken.KeyRepository);\n return new OAuth2TokenSigner(keyRepository);\n },\n });\n\n // authorization code issuer\n container.register(OAuth2InjectionToken.AuthorizationCodeIssuer, {\n useFactory: (c) => {\n const codeRepository = c.resolve(OAuth2InjectionToken.AuthorizationCodeRepository);\n\n return new OAuth2AuthorizationCodeIssuer(\n codeRepository,\n {\n // todo: own constant here\n maxAge: config.tokenAccessMaxAge,\n },\n );\n },\n });\n container.register(OAuth2InjectionToken.AuthorizationCodeVerifier, {\n useFactory: (c) => {\n const codeRepository = c.resolve(OAuth2InjectionToken.AuthorizationCodeRepository);\n\n return new OAuth2AuthorizationCodeVerifier(codeRepository);\n },\n });\n\n // authorization code request verifier\n container.register(OAuth2InjectionToken.AuthorizationCodeRequestVerifier, {\n useFactory: (c) => {\n const clientRepository = c.resolve(OAuth2InjectionToken.ClientRepository);\n const clientScopeRepository = c.resolve(OAuth2InjectionToken.ScopeRepository);\n\n return new OAuth2AuthorizationCodeRequestVerifier({\n clientRepository,\n scopeRepository: clientScopeRepository,\n });\n },\n });\n\n container.register(OAuth2InjectionToken.AuthorizationStateManager, {\n useFactory: (c) => {\n const stateRepository = c.resolve(OAuth2InjectionToken.AuthorizationStateRepository);\n\n return new OAuth2AuthorizationStateManager(stateRepository);\n },\n });\n\n // token revoker\n container.register(OAuth2InjectionToken.TokenRevoker, {\n useFactory: (c) => {\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n return new OAuth2TokenRevoker(tokenRepository);\n },\n });\n\n // token verifier\n container.register(OAuth2InjectionToken.TokenVerifier, {\n useFactory: (c) => {\n const keyRepository = c.resolve(OAuth2InjectionToken.KeyRepository);\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n\n return new OAuth2TokenVerifier(keyRepository, tokenRepository);\n },\n });\n\n // access token issuer\n container.register(OAuth2InjectionToken.AccessTokenIssuer, {\n useFactory: (c) => {\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n const tokenSigner = c.resolve(OAuth2InjectionToken.TokenSigner);\n const identityRoleProvider = c.resolve(IdentityInjectionKey.RoleProvider);\n return new OAuth2AccessTokenIssuer(\n tokenRepository,\n tokenSigner,\n {\n maxAge: config.tokenAccessMaxAge,\n issuer: config.publicUrl,\n },\n identityRoleProvider,\n );\n },\n });\n\n // refresh token issuer\n container.register(OAuth2InjectionToken.RefreshTokenIssuer, {\n useFactory: (c) => {\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n const tokenSigner = c.resolve(OAuth2InjectionToken.TokenSigner);\n\n return new OAuth2RefreshTokenIssuer(\n tokenRepository,\n tokenSigner,\n {\n maxAge: config.tokenRefreshMaxAge,\n issuer: config.publicUrl,\n },\n );\n },\n });\n\n // open-id token issuer\n container.register(OAuth2InjectionToken.OpenIDTokenIssuer, {\n useFactory: (c) => {\n const repository = c.resolve(OAuth2InjectionToken.TokenRepository);\n const signer = c.resolve(OAuth2InjectionToken.TokenSigner);\n const identityResolver = c.resolve(IdentityInjectionKey.Resolver);\n\n return new OAuth2OpenIDTokenIssuer({\n repository,\n signer,\n\n identityResolver,\n\n options: {\n // todo: own constant here\n maxAge: config.tokenAccessMaxAge,\n issuer: config.publicUrl,\n },\n });\n },\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["CacheInjectionKey","ModuleName","OAuth2AuthorizationCodeRepository","OAuth2AuthorizationStateRepository","OAuth2ClientRepository","OAuth2KeyRepository","OAuth2ScopeRepository","OAuth2TokenRepository","OAuth2AccessTokenIssuer","OAuth2AuthorizationCodeIssuer","OAuth2AuthorizationCodeRequestVerifier","OAuth2AuthorizationCodeVerifier","OAuth2AuthorizationStateManager","OAuth2OpenIDTokenIssuer","OAuth2RefreshTokenIssuer","OAuth2TokenRevoker","OAuth2TokenSigner","OAuth2TokenVerifier","OAuth2InjectionToken","IdentityInjectionKey","ClientEntity","ClientScopeEntity","ConfigInjectionKey","OAuth2Module","name","dependencies","OAUTH2","DATABASE","CACHE","CONFIG","IDENTITY","setup","container","config","resolve","register","ClientRepository","useFactory","c","repository","ScopeRepository","AuthorizationCodeRepository","cache","AuthorizationStateRepository","TokenRepository","KeyRepository","TokenSigner","keyRepository","AuthorizationCodeIssuer","codeRepository","maxAge","tokenAccessMaxAge","AuthorizationCodeVerifier","AuthorizationCodeRequestVerifier","clientRepository","clientScopeRepository","scopeRepository","AuthorizationStateManager","stateRepository","TokenRevoker","tokenRepository","TokenVerifier","AccessTokenIssuer","tokenSigner","identityRoleProvider","RoleProvider","issuer","publicUrl","RefreshTokenIssuer","tokenRefreshMaxAge","OpenIDTokenIssuer","signer","identityResolver","Resolver","options"],"sources":["../../../../src/app/modules/oauth2/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Repository } from 'typeorm';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport type { IContainer } from 'eldin';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\n\nimport {\n OAuth2AuthorizationCodeRepository,\n OAuth2AuthorizationStateRepository,\n OAuth2ClientRepository,\n OAuth2KeyRepository,\n OAuth2ScopeRepository,\n OAuth2TokenRepository,\n} from './repositories/index.ts';\nimport {\n OAuth2AccessTokenIssuer,\n OAuth2AuthorizationCodeIssuer,\n OAuth2AuthorizationCodeRequestVerifier,\n OAuth2AuthorizationCodeVerifier,\n OAuth2AuthorizationStateManager,\n OAuth2OpenIDTokenIssuer,\n OAuth2RefreshTokenIssuer,\n OAuth2TokenRevoker,\n OAuth2TokenSigner,\n OAuth2TokenVerifier,\n} from '../../../core/index.ts';\nimport { OAuth2InjectionToken } from './constants.ts';\nimport { IdentityInjectionKey } from '../identity/index.ts';\nimport { ClientEntity, ClientScopeEntity } from '../../../adapters/database/domains/index.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\n\nexport class OAuth2Module implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.OAUTH2;\n this.dependencies = [ModuleName.DATABASE, ModuleName.CACHE, ModuleName.CONFIG, ModuleName.IDENTITY];\n }\n\n async setup(container: IContainer) : Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n container.register(OAuth2InjectionToken.ClientRepository, {\n useFactory: (c) => {\n const repository = c.resolve<Repository<ClientEntity>>(ClientEntity);\n return new OAuth2ClientRepository(repository);\n },\n });\n\n container.register(OAuth2InjectionToken.ScopeRepository, {\n useFactory: (c) => {\n const repository = c.resolve<Repository<ClientScopeEntity>>(ClientScopeEntity);\n return new OAuth2ScopeRepository(repository);\n },\n });\n\n container.register(OAuth2InjectionToken.AuthorizationCodeRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n return new OAuth2AuthorizationCodeRepository(cache);\n },\n });\n\n container.register(OAuth2InjectionToken.AuthorizationStateRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n return new OAuth2AuthorizationStateRepository(cache);\n },\n });\n\n container.register(OAuth2InjectionToken.TokenRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n return new OAuth2TokenRepository(cache);\n },\n });\n\n container.register(OAuth2InjectionToken.KeyRepository, {\n // todo: cache use here\n useFactory: () => new OAuth2KeyRepository(),\n });\n\n container.register(OAuth2InjectionToken.TokenSigner, {\n useFactory: (c) => {\n const keyRepository = c.resolve(OAuth2InjectionToken.KeyRepository);\n return new OAuth2TokenSigner(keyRepository);\n },\n });\n\n // authorization code issuer\n container.register(OAuth2InjectionToken.AuthorizationCodeIssuer, {\n useFactory: (c) => {\n const codeRepository = c.resolve(OAuth2InjectionToken.AuthorizationCodeRepository);\n\n return new OAuth2AuthorizationCodeIssuer(\n codeRepository,\n {\n // todo: own constant here\n maxAge: config.tokenAccessMaxAge,\n },\n );\n },\n });\n container.register(OAuth2InjectionToken.AuthorizationCodeVerifier, {\n useFactory: (c) => {\n const codeRepository = c.resolve(OAuth2InjectionToken.AuthorizationCodeRepository);\n\n return new OAuth2AuthorizationCodeVerifier(codeRepository);\n },\n });\n\n // authorization code request verifier\n container.register(OAuth2InjectionToken.AuthorizationCodeRequestVerifier, {\n useFactory: (c) => {\n const clientRepository = c.resolve(OAuth2InjectionToken.ClientRepository);\n const clientScopeRepository = c.resolve(OAuth2InjectionToken.ScopeRepository);\n\n return new OAuth2AuthorizationCodeRequestVerifier({\n clientRepository,\n scopeRepository: clientScopeRepository,\n });\n },\n });\n\n container.register(OAuth2InjectionToken.AuthorizationStateManager, {\n useFactory: (c) => {\n const stateRepository = c.resolve(OAuth2InjectionToken.AuthorizationStateRepository);\n\n return new OAuth2AuthorizationStateManager(stateRepository);\n },\n });\n\n // token revoker\n container.register(OAuth2InjectionToken.TokenRevoker, {\n useFactory: (c) => {\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n return new OAuth2TokenRevoker(tokenRepository);\n },\n });\n\n // token verifier\n container.register(OAuth2InjectionToken.TokenVerifier, {\n useFactory: (c) => {\n const keyRepository = c.resolve(OAuth2InjectionToken.KeyRepository);\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n\n return new OAuth2TokenVerifier(keyRepository, tokenRepository);\n },\n });\n\n // access token issuer\n container.register(OAuth2InjectionToken.AccessTokenIssuer, {\n useFactory: (c) => {\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n const tokenSigner = c.resolve(OAuth2InjectionToken.TokenSigner);\n const identityRoleProvider = c.resolve(IdentityInjectionKey.RoleProvider);\n return new OAuth2AccessTokenIssuer(\n tokenRepository,\n tokenSigner,\n {\n maxAge: config.tokenAccessMaxAge,\n issuer: config.publicUrl,\n },\n identityRoleProvider,\n );\n },\n });\n\n // refresh token issuer\n container.register(OAuth2InjectionToken.RefreshTokenIssuer, {\n useFactory: (c) => {\n const tokenRepository = c.resolve(OAuth2InjectionToken.TokenRepository);\n const tokenSigner = c.resolve(OAuth2InjectionToken.TokenSigner);\n\n return new OAuth2RefreshTokenIssuer(\n tokenRepository,\n tokenSigner,\n {\n maxAge: config.tokenRefreshMaxAge,\n issuer: config.publicUrl,\n },\n );\n },\n });\n\n // open-id token issuer\n container.register(OAuth2InjectionToken.OpenIDTokenIssuer, {\n useFactory: (c) => {\n const repository = c.resolve(OAuth2InjectionToken.TokenRepository);\n const signer = c.resolve(OAuth2InjectionToken.TokenSigner);\n const identityResolver = c.resolve(IdentityInjectionKey.Resolver);\n\n return new OAuth2OpenIDTokenIssuer({\n repository,\n signer,\n\n identityResolver,\n\n options: {\n // todo: own constant here\n maxAge: config.tokenAccessMaxAge,\n issuer: config.publicUrl,\n },\n });\n },\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["buildCacheKey","randomBytes","CacheOAuth2Prefix","OAuth2AuthorizationCodeRepository","cache","findOneById","id","entity","get","prefix","AUTHORIZATION_CODE","key","popOneById","pop","save","input","options","ttl","maxAge","toString","set","remove","removeById","drop"],"sources":["../../../../../../../src/app/modules/oauth2/repositories/authorize/code/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OAuth2AuthorizationCode } from '@authup/core-kit';\nimport type { ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport { randomBytes } from 'node:crypto';\nimport { CacheOAuth2Prefix } from '../../constants.ts';\nimport type {\n IOAuth2AuthorizationCodeRepository,\n OAuth2AuthorizationCodeInput,\n OAuth2AuthorizationCodeRepositorySaveOptions,\n} from '../../../../../../core/index.ts';\n\nexport class OAuth2AuthorizationCodeRepository implements IOAuth2AuthorizationCodeRepository {\n protected cache : ICache;\n\n constructor(cache: ICache) {\n this.cache = cache;\n }\n\n async findOneById(id: string): Promise<OAuth2AuthorizationCode | null> {\n const entity = await this.cache.get<OAuth2AuthorizationCode>(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: id,\n }));\n\n if (entity) {\n return entity;\n }\n\n return null;\n }\n\n async popOneById(id: string): Promise<OAuth2AuthorizationCode | null> {\n return this.cache.pop<OAuth2AuthorizationCode>(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: id,\n }));\n }\n\n async save(\n input: OAuth2AuthorizationCodeInput,\n options: OAuth2AuthorizationCodeRepositorySaveOptions = {},\n ): Promise<OAuth2AuthorizationCode> {\n const ttl = (options.maxAge || 300) * 1_000;\n\n if (!input.id) {\n input.id = randomBytes(10).toString('hex');\n }\n\n await this.cache.set(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: input.id,\n }), input, { ttl });\n\n return input as OAuth2AuthorizationCode;\n }\n\n async remove(entity: OAuth2AuthorizationCode): Promise<void> {\n return this.removeById(entity.id);\n }\n\n async removeById(id: string): Promise<void> {\n await this.cache.drop(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: id,\n }));\n }\n}\n"],"mappings":";;;;AAkBA,IAAaG,oCAAb,MAAaA;CACCC;CAEV,YAAYA,OAAe;AACvB,OAAKA,QAAQA;;CAGjB,MAAMC,YAAYC,IAAqD;EACnE,MAAMC,SAAS,MAAM,KAAKH,MAAMI,IAA6BR,cAAc;GACvES,QAAQP,kBAAkBQ;GAC1BC,KAAKL;GACT,CAAA,CAAA;AAEA,MAAIC,OACA,QAAOA;AAGX,SAAO;;CAGX,MAAMK,WAAWN,IAAqD;AAClE,SAAO,KAAKF,MAAMS,IAA6Bb,cAAc;GACzDS,QAAQP,kBAAkBQ;GAC1BC,KAAKL;GACT,CAAA,CAAA;;CAGJ,MAAMQ,KACFC,OACAC,UAAwD,EAAE,EAC1B;EAChC,MAAMC,OAAOD,QAAQE,UAAU,OAAO;AAEtC,MAAI,CAACH,MAAMT,GACPS,OAAMT,KAAKL,YAAY,GAAA,CAAIkB,SAAS,MAAA;AAGxC,QAAM,KAAKf,MAAMgB,IAAIpB,cAAc;GAC/BS,QAAQP,kBAAkBQ;GAC1BC,KAAKI,MAAMT;GACf,CAAA,EAAIS,OAAO,EAAEE,KAAI,CAAA;AAEjB,SAAOF;;CAGX,MAAMM,OAAOd,QAAgD;AACzD,SAAO,KAAKe,WAAWf,OAAOD,GAAE;;CAGpC,MAAMgB,WAAWhB,IAA2B;AACxC,QAAM,KAAKF,MAAMmB,KAAKvB,cAAc;GAChCS,QAAQP,kBAAkBQ;GAC1BC,KAAKL;GACT,CAAA,CAAA"}
1
+ {"version":3,"file":"repository.mjs","names":["buildCacheKey","randomBytes","CacheOAuth2Prefix","OAuth2AuthorizationCodeRepository","cache","findOneById","id","entity","get","prefix","AUTHORIZATION_CODE","key","popOneById","pop","save","input","options","ttl","maxAge","toString","set","remove","removeById","drop"],"sources":["../../../../../../../src/app/modules/oauth2/repositories/authorize/code/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OAuth2AuthorizationCode } from '@authup/core-kit';\nimport type { ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport { randomBytes } from 'node:crypto';\nimport { CacheOAuth2Prefix } from '../../constants.ts';\nimport type {\n IOAuth2AuthorizationCodeRepository,\n OAuth2AuthorizationCodeInput,\n OAuth2AuthorizationCodeRepositorySaveOptions,\n} from '../../../../../../core/index.ts';\n\nexport class OAuth2AuthorizationCodeRepository implements IOAuth2AuthorizationCodeRepository {\n protected cache : ICache;\n\n constructor(cache: ICache) {\n this.cache = cache;\n }\n\n async findOneById(id: string): Promise<OAuth2AuthorizationCode | null> {\n const entity = await this.cache.get<OAuth2AuthorizationCode>(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: id,\n }));\n\n if (entity) {\n return entity;\n }\n\n return null;\n }\n\n async popOneById(id: string): Promise<OAuth2AuthorizationCode | null> {\n return this.cache.pop<OAuth2AuthorizationCode>(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: id,\n }));\n }\n\n async save(\n input: OAuth2AuthorizationCodeInput,\n options: OAuth2AuthorizationCodeRepositorySaveOptions = {},\n ): Promise<OAuth2AuthorizationCode> {\n const ttl = (options.maxAge || 300) * 1_000;\n\n if (!input.id) {\n input.id = randomBytes(10).toString('hex');\n }\n\n await this.cache.set(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: input.id,\n }), input, { ttl });\n\n return input as OAuth2AuthorizationCode;\n }\n\n async remove(entity: OAuth2AuthorizationCode): Promise<void> {\n return this.removeById(entity.id);\n }\n\n async removeById(id: string): Promise<void> {\n await this.cache.drop(buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: id,\n }));\n }\n}\n"],"mappings":";;;;AAkBA,IAAaG,oCAAb,MAAaA;CACCC;CAEV,YAAYA,OAAe;EACvB,KAAKA,QAAQA;CACjB;CAEA,MAAMC,YAAYC,IAAqD;EACnE,MAAMC,SAAS,MAAM,KAAKH,MAAMI,IAA6BR,cAAc;GACvES,QAAQP,kBAAkBQ;GAC1BC,KAAKL;EACT,CAAA,CAAA;EAEA,IAAIC,QACA,OAAOA;EAGX,OAAO;CACX;CAEA,MAAMK,WAAWN,IAAqD;EAClE,OAAO,KAAKF,MAAMS,IAA6Bb,cAAc;GACzDS,QAAQP,kBAAkBQ;GAC1BC,KAAKL;EACT,CAAA,CAAA;CACJ;CAEA,MAAMQ,KACFC,OACAC,UAAwD,CAAC,GACzB;EAChC,MAAMC,OAAOD,QAAQE,UAAU,OAAO;EAEtC,IAAI,CAACH,MAAMT,IACPS,MAAMT,KAAKL,YAAY,EAAA,EAAIkB,SAAS,KAAA;EAGxC,MAAM,KAAKf,MAAMgB,IAAIpB,cAAc;GAC/BS,QAAQP,kBAAkBQ;GAC1BC,KAAKI,MAAMT;EACf,CAAA,GAAIS,OAAO,EAAEE,IAAI,CAAA;EAEjB,OAAOF;CACX;CAEA,MAAMM,OAAOd,QAAgD;EACzD,OAAO,KAAKe,WAAWf,OAAOD,EAAE;CACpC;CAEA,MAAMgB,WAAWhB,IAA2B;EACxC,MAAM,KAAKF,MAAMmB,KAAKvB,cAAc;GAChCS,QAAQP,kBAAkBQ;GAC1BC,KAAKL;EACT,CAAA,CAAA;CACJ;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["createNanoID","buildCacheKey","CacheOAuth2Prefix","OAuth2AuthorizationStateRepository","cache","findOneById","key","id","prefix","AUTHORIZATION_CODE","payload","get","remove","drop","insert","data","state","set","ttl"],"sources":["../../../../../../../src/app/modules/oauth2/repositories/authorize/state/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createNanoID } from '@authup/kit';\nimport type { ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { IOAuth2AuthorizeStateRepository, OAuth2AuthorizationState } from '../../../../../../core/index.ts';\nimport { CacheOAuth2Prefix } from '../../constants.ts';\n\nexport class OAuth2AuthorizationStateRepository implements IOAuth2AuthorizeStateRepository {\n protected cache : ICache;\n\n constructor(cache: ICache) {\n this.cache = cache;\n }\n\n async findOneById(key: string): Promise<OAuth2AuthorizationState | null> {\n const id = buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key, \n });\n const payload = await this.cache.get<OAuth2AuthorizationState>(id);\n if (payload) {\n return payload;\n }\n\n return null;\n }\n\n async remove(key: string): Promise<void> {\n await this.cache.drop(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key, \n }),\n );\n }\n\n async insert(data: OAuth2AuthorizationState): Promise<string> {\n const state = createNanoID();\n\n await this.cache.set(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: state, \n }),\n data,\n { ttl: 1000 * 60 * 30 }, // 30 min\n );\n\n return state;\n }\n}\n"],"mappings":";;;;AAaA,IAAaG,qCAAb,MAAaA;CACCC;CAEV,YAAYA,OAAe;AACvB,OAAKA,QAAQA;;CAGjB,MAAMC,YAAYC,KAAuD;EACrE,MAAMC,KAAKN,cAAc;GACrBO,QAAQN,kBAAkBO;GAC1BH;GACJ,CAAA;EACA,MAAMI,UAAU,MAAM,KAAKN,MAAMO,IAA8BJ,GAAAA;AAC/D,MAAIG,QACA,QAAOA;AAGX,SAAO;;CAGX,MAAME,OAAON,KAA4B;AACrC,QAAM,KAAKF,MAAMS,KACbZ,cAAc;GACVO,QAAQN,kBAAkBO;GAC1BH;GACJ,CAAA,CAAA;;CAIR,MAAMQ,OAAOC,MAAiD;EAC1D,MAAMC,QAAQhB,cAAAA;AAEd,QAAM,KAAKI,MAAMa,IACbhB,cAAc;GACVO,QAAQN,kBAAkBO;GAC1BH,KAAKU;GACT,CAAA,EACAD,MACA,EAAEG,KAAK,MAAO,KAAK,IAAG,CAAA;AAG1B,SAAOF"}
1
+ {"version":3,"file":"repository.mjs","names":["createNanoID","buildCacheKey","CacheOAuth2Prefix","OAuth2AuthorizationStateRepository","cache","findOneById","key","id","prefix","AUTHORIZATION_CODE","payload","get","remove","drop","insert","data","state","set","ttl"],"sources":["../../../../../../../src/app/modules/oauth2/repositories/authorize/state/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createNanoID } from '@authup/kit';\nimport type { ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { IOAuth2AuthorizeStateRepository, OAuth2AuthorizationState } from '../../../../../../core/index.ts';\nimport { CacheOAuth2Prefix } from '../../constants.ts';\n\nexport class OAuth2AuthorizationStateRepository implements IOAuth2AuthorizeStateRepository {\n protected cache : ICache;\n\n constructor(cache: ICache) {\n this.cache = cache;\n }\n\n async findOneById(key: string): Promise<OAuth2AuthorizationState | null> {\n const id = buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key, \n });\n const payload = await this.cache.get<OAuth2AuthorizationState>(id);\n if (payload) {\n return payload;\n }\n\n return null;\n }\n\n async remove(key: string): Promise<void> {\n await this.cache.drop(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key, \n }),\n );\n }\n\n async insert(data: OAuth2AuthorizationState): Promise<string> {\n const state = createNanoID();\n\n await this.cache.set(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.AUTHORIZATION_CODE,\n key: state, \n }),\n data,\n { ttl: 1000 * 60 * 30 }, // 30 min\n );\n\n return state;\n }\n}\n"],"mappings":";;;;AAaA,IAAaG,qCAAb,MAAaA;CACCC;CAEV,YAAYA,OAAe;EACvB,KAAKA,QAAQA;CACjB;CAEA,MAAMC,YAAYC,KAAuD;EACrE,MAAMC,KAAKN,cAAc;GACrBO,QAAQN,kBAAkBO;GAC1BH;EACJ,CAAA;EACA,MAAMI,UAAU,MAAM,KAAKN,MAAMO,IAA8BJ,EAAAA;EAC/D,IAAIG,SACA,OAAOA;EAGX,OAAO;CACX;CAEA,MAAME,OAAON,KAA4B;EACrC,MAAM,KAAKF,MAAMS,KACbZ,cAAc;GACVO,QAAQN,kBAAkBO;GAC1BH;EACJ,CAAA,CAAA;CAER;CAEA,MAAMQ,OAAOC,MAAiD;EAC1D,MAAMC,QAAQhB,aAAAA;EAEd,MAAM,KAAKI,MAAMa,IACbhB,cAAc;GACVO,QAAQN,kBAAkBO;GAC1BH,KAAKU;EACT,CAAA,GACAD,MACA,EAAEG,KAAK,MAAO,KAAK,GAAG,CAAA;EAG1B,OAAOF;CACX;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["isUUID","OAuth2ClientRepository","repository","findOneByIdOrName","key","realmKey","query","createQueryBuilder","leftJoinAndSelect","where","id","name","andWhere","realmId","realmName","getOne"],"sources":["../../../../../../src/app/modules/oauth2/repositories/client/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from '@authup/core-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport type { IOAuth2ClientRepository } from '../../../../../core/index.ts';\n\nexport class OAuth2ClientRepository implements IOAuth2ClientRepository {\n private readonly repository: Repository<Client>;\n\n constructor(\n repository: Repository<Client>,\n ) {\n this.repository = repository;\n }\n\n async findOneByIdOrName(key: string, realmKey?: string): Promise<Client | null> {\n const query = this.repository.createQueryBuilder('client')\n .leftJoinAndSelect('client.realm', 'realm');\n\n if (isUUID(key)) {\n query.where('client.id = :id', { id: key });\n } else {\n query.where('client.name = :name', { name: key });\n\n if (realmKey) {\n if (isUUID(realmKey)) {\n query.andWhere('client.realm_id = :realmId', { realmId: realmKey });\n } else {\n query.andWhere('realm.name = :realmName', { realmName: realmKey });\n }\n }\n }\n\n return query.getOne();\n }\n}\n"],"mappings":";;AAYA,IAAaC,yBAAb,MAAaA;CACQC;CAEjB,YACIA,YACF;AACE,OAAKA,aAAaA;;CAGtB,MAAMC,kBAAkBC,KAAaC,UAA2C;EAC5E,MAAMC,QAAQ,KAAKJ,WAAWK,mBAAmB,SAAA,CAC5CC,kBAAkB,gBAAgB,QAAA;AAEvC,MAAIR,OAAOI,IAAAA,CACPE,OAAMG,MAAM,mBAAmB,EAAEC,IAAIN,KAAI,CAAA;OACtC;AACHE,SAAMG,MAAM,uBAAuB,EAAEE,MAAMP,KAAI,CAAA;AAE/C,OAAIC,SACA,KAAIL,OAAOK,SAAAA,CACPC,OAAMM,SAAS,8BAA8B,EAAEC,SAASR,UAAS,CAAA;OAEjEC,OAAMM,SAAS,2BAA2B,EAAEE,WAAWT,UAAS,CAAA;;AAK5E,SAAOC,MAAMS,QAAM"}
1
+ {"version":3,"file":"repository.mjs","names":["isUUID","OAuth2ClientRepository","repository","findOneByIdOrName","key","realmKey","query","createQueryBuilder","leftJoinAndSelect","where","id","name","andWhere","realmId","realmName","getOne"],"sources":["../../../../../../src/app/modules/oauth2/repositories/client/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from '@authup/core-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport type { IOAuth2ClientRepository } from '../../../../../core/index.ts';\n\nexport class OAuth2ClientRepository implements IOAuth2ClientRepository {\n private readonly repository: Repository<Client>;\n\n constructor(\n repository: Repository<Client>,\n ) {\n this.repository = repository;\n }\n\n async findOneByIdOrName(key: string, realmKey?: string): Promise<Client | null> {\n const query = this.repository.createQueryBuilder('client')\n .leftJoinAndSelect('client.realm', 'realm');\n\n if (isUUID(key)) {\n query.where('client.id = :id', { id: key });\n } else {\n query.where('client.name = :name', { name: key });\n\n if (realmKey) {\n if (isUUID(realmKey)) {\n query.andWhere('client.realm_id = :realmId', { realmId: realmKey });\n } else {\n query.andWhere('realm.name = :realmName', { realmName: realmKey });\n }\n }\n }\n\n return query.getOne();\n }\n}\n"],"mappings":";;AAYA,IAAaC,yBAAb,MAAaA;CACQC;CAEjB,YACIA,YACF;EACE,KAAKA,aAAaA;CACtB;CAEA,MAAMC,kBAAkBC,KAAaC,UAA2C;EAC5E,MAAMC,QAAQ,KAAKJ,WAAWK,mBAAmB,QAAA,EAC5CC,kBAAkB,gBAAgB,OAAA;EAEvC,IAAIR,OAAOI,GAAAA,GACPE,MAAMG,MAAM,mBAAmB,EAAEC,IAAIN,IAAI,CAAA;OACtC;GACHE,MAAMG,MAAM,uBAAuB,EAAEE,MAAMP,IAAI,CAAA;GAE/C,IAAIC,UACA,IAAIL,OAAOK,QAAAA,GACPC,MAAMM,SAAS,8BAA8B,EAAEC,SAASR,SAAS,CAAA;QAEjEC,MAAMM,SAAS,2BAA2B,EAAEE,WAAWT,SAAS,CAAA;EAG5E;EAEA,OAAOC,MAAMS,OAAM;CACvB;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["AsymmetricKey","CryptoAsymmetricAlgorithm","createAsymmetricKeyPair","JWKType","JWTAlgorithm","useDataSource","KeyEntity","OAuth2KeyRepository","findByRealmId","realmId","createOrGet","realm_id","findById","id","where","dataSource","repository","getRepository","entity","findOne","select","type","signature_algorithm","encryption_key","decryption_key","keyPair","name","RSASSA_PKCS1_V1_5","privateKeyContainer","privateKey","publicKeyContainer","publicKey","create","RSA","toBase64","RS256","save"],"sources":["../../../../../../src/app/modules/oauth2/repositories/key/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Key } from '@authup/core-kit';\nimport { AsymmetricKey, CryptoAsymmetricAlgorithm, createAsymmetricKeyPair } from '@authup/server-kit';\nimport { JWKType, JWTAlgorithm } from '@authup/specs';\nimport { useDataSource } from 'typeorm-extension';\nimport { KeyEntity } from '../../../../../adapters/database/index.ts';\nimport type { IOAuth2KeyRepository } from '../../../../../core/index.ts';\n\nexport class OAuth2KeyRepository implements IOAuth2KeyRepository {\n async findByRealmId(realmId: string): Promise<Key | null> {\n return this.createOrGet({ realm_id: realmId });\n }\n\n async findById(id: string): Promise<Key | null> {\n return this.createOrGet({ id });\n }\n\n protected async createOrGet(where: {\n realm_id?: string,\n id?: string\n }) : Promise<Key | null> {\n const dataSource = await useDataSource();\n const repository = dataSource.getRepository(KeyEntity);\n\n let entity = await repository.findOne({\n select: {\n id: true,\n type: true,\n signature_algorithm: true,\n encryption_key: true,\n decryption_key: true,\n },\n where,\n });\n\n if (entity) {\n return entity;\n }\n\n if (typeof where.realm_id !== 'string') {\n return null;\n }\n\n const keyPair = await createAsymmetricKeyPair({ name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5 });\n\n const privateKeyContainer = new AsymmetricKey(keyPair.privateKey);\n const publicKeyContainer = new AsymmetricKey(keyPair.publicKey);\n\n entity = repository.create({\n type: JWKType.RSA,\n decryption_key: await privateKeyContainer.toBase64(),\n encryption_key: await publicKeyContainer.toBase64(),\n realm_id: where.realm_id,\n signature_algorithm: `${JWTAlgorithm.RS256}`,\n });\n\n await repository.save(entity);\n\n return entity;\n }\n}\n"],"mappings":";;;;;;AAcA,IAAaO,sBAAb,MAAaA;CACT,MAAMC,cAAcC,SAAsC;AACtD,SAAO,KAAKC,YAAY,EAAEC,UAAUF,SAAQ,CAAA;;CAGhD,MAAMG,SAASC,IAAiC;AAC5C,SAAO,KAAKH,YAAY,EAAEG,IAAG,CAAA;;CAGjC,MAAgBH,YAAYI,OAGH;EAErB,MAAME,cAAaD,MADMV,eAAAA,EACKY,cAAcX,UAAAA;EAE5C,IAAIY,SAAS,MAAMF,WAAWG,QAAQ;GAClCC,QAAQ;IACJP,IAAI;IACJQ,MAAM;IACNC,qBAAqB;IACrBC,gBAAgB;IAChBC,gBAAgB;IACpB;GACAV;GACJ,CAAA;AAEA,MAAII,OACA,QAAOA;AAGX,MAAI,OAAOJ,MAAMH,aAAa,SAC1B,QAAO;EAGX,MAAMc,UAAU,MAAMvB,wBAAwB,EAAEwB,MAAMzB,0BAA0B0B,mBAAkB,CAAA;EAElG,MAAMC,sBAAsB,IAAI5B,cAAcyB,QAAQI,WAAU;EAChE,MAAMC,qBAAqB,IAAI9B,cAAcyB,QAAQM,UAAS;AAE9Db,WAASF,WAAWgB,OAAO;GACvBX,MAAMlB,QAAQ8B;GACdT,gBAAgB,MAAMI,oBAAoBM,UAAQ;GAClDX,gBAAgB,MAAMO,mBAAmBI,UAAQ;GACjDvB,UAAUG,MAAMH;GAChBW,qBAAqB,GAAGlB,aAAa+B;GACzC,CAAA;AAEA,QAAMnB,WAAWoB,KAAKlB,OAAAA;AAEtB,SAAOA"}
1
+ {"version":3,"file":"repository.mjs","names":["AsymmetricKey","CryptoAsymmetricAlgorithm","createAsymmetricKeyPair","JWKType","JWTAlgorithm","useDataSource","KeyEntity","OAuth2KeyRepository","findByRealmId","realmId","createOrGet","realm_id","findById","id","where","dataSource","repository","getRepository","entity","findOne","select","type","signature_algorithm","encryption_key","decryption_key","keyPair","name","RSASSA_PKCS1_V1_5","privateKeyContainer","privateKey","publicKeyContainer","publicKey","create","RSA","toBase64","RS256","save"],"sources":["../../../../../../src/app/modules/oauth2/repositories/key/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Key } from '@authup/core-kit';\nimport { AsymmetricKey, CryptoAsymmetricAlgorithm, createAsymmetricKeyPair } from '@authup/server-kit';\nimport { JWKType, JWTAlgorithm } from '@authup/specs';\nimport { useDataSource } from 'typeorm-extension';\nimport { KeyEntity } from '../../../../../adapters/database/index.ts';\nimport type { IOAuth2KeyRepository } from '../../../../../core/index.ts';\n\nexport class OAuth2KeyRepository implements IOAuth2KeyRepository {\n async findByRealmId(realmId: string): Promise<Key | null> {\n return this.createOrGet({ realm_id: realmId });\n }\n\n async findById(id: string): Promise<Key | null> {\n return this.createOrGet({ id });\n }\n\n protected async createOrGet(where: {\n realm_id?: string,\n id?: string\n }) : Promise<Key | null> {\n const dataSource = await useDataSource();\n const repository = dataSource.getRepository(KeyEntity);\n\n let entity = await repository.findOne({\n select: {\n id: true,\n type: true,\n signature_algorithm: true,\n encryption_key: true,\n decryption_key: true,\n },\n where,\n });\n\n if (entity) {\n return entity;\n }\n\n if (typeof where.realm_id !== 'string') {\n return null;\n }\n\n const keyPair = await createAsymmetricKeyPair({ name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5 });\n\n const privateKeyContainer = new AsymmetricKey(keyPair.privateKey);\n const publicKeyContainer = new AsymmetricKey(keyPair.publicKey);\n\n entity = repository.create({\n type: JWKType.RSA,\n decryption_key: await privateKeyContainer.toBase64(),\n encryption_key: await publicKeyContainer.toBase64(),\n realm_id: where.realm_id,\n signature_algorithm: `${JWTAlgorithm.RS256}`,\n });\n\n await repository.save(entity);\n\n return entity;\n }\n}\n"],"mappings":";;;;;;AAcA,IAAaO,sBAAb,MAAaA;CACT,MAAMC,cAAcC,SAAsC;EACtD,OAAO,KAAKC,YAAY,EAAEC,UAAUF,QAAQ,CAAA;CAChD;CAEA,MAAMG,SAASC,IAAiC;EAC5C,OAAO,KAAKH,YAAY,EAAEG,GAAG,CAAA;CACjC;CAEA,MAAgBH,YAAYI,OAGH;EAErB,MAAME,cAAaD,MADMV,cAAAA,GACKY,cAAcX,SAAAA;EAE5C,IAAIY,SAAS,MAAMF,WAAWG,QAAQ;GAClCC,QAAQ;IACJP,IAAI;IACJQ,MAAM;IACNC,qBAAqB;IACrBC,gBAAgB;IAChBC,gBAAgB;GACpB;GACAV;EACJ,CAAA;EAEA,IAAII,QACA,OAAOA;EAGX,IAAI,OAAOJ,MAAMH,aAAa,UAC1B,OAAO;EAGX,MAAMc,UAAU,MAAMvB,wBAAwB,EAAEwB,MAAMzB,0BAA0B0B,kBAAkB,CAAA;EAElG,MAAMC,sBAAsB,IAAI5B,cAAcyB,QAAQI,UAAU;EAChE,MAAMC,qBAAqB,IAAI9B,cAAcyB,QAAQM,SAAS;EAE9Db,SAASF,WAAWgB,OAAO;GACvBX,MAAMlB,QAAQ8B;GACdT,gBAAgB,MAAMI,oBAAoBM,SAAQ;GAClDX,gBAAgB,MAAMO,mBAAmBI,SAAQ;GACjDvB,UAAUG,MAAMH;GAChBW,qBAAqB,GAAGlB,aAAa+B;EACzC,CAAA;EAEA,MAAMnB,WAAWoB,KAAKlB,MAAAA;EAEtB,OAAOA;CACX;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["OAuth2ScopeRepository","repository","findByClientId","clientId","clientScopes","find","where","client_id","relations","scope","map","clientScope"],"sources":["../../../../../../src/app/modules/oauth2/repositories/scope/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ClientScope, Scope } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport type { IOAuth2ScopeRepository } from '../../../../../core/index.ts';\n\nexport class OAuth2ScopeRepository implements IOAuth2ScopeRepository {\n private readonly repository: Repository<ClientScope>;\n\n constructor(\n repository: Repository<ClientScope>,\n ) {\n this.repository = repository;\n }\n\n async findByClientId(clientId: string): Promise<Scope[]> {\n const clientScopes = await this.repository.find({\n where: { client_id: clientId },\n relations: { scope: true },\n });\n\n return clientScopes.map((clientScope) => clientScope.scope);\n }\n}\n"],"mappings":";AAWA,IAAaA,wBAAb,MAAaA;CACQC;CAEjB,YACIA,YACF;AACE,OAAKA,aAAaA;;CAGtB,MAAMC,eAAeC,UAAoC;AAMrD,UAAOC,MALoB,KAAKH,WAAWI,KAAK;GAC5CC,OAAO,EAAEC,WAAWJ,UAAS;GAC7BK,WAAW,EAAEC,OAAO,MAAK;GAC7B,CAAA,EAEoBC,KAAKC,gBAAgBA,YAAYF,MAAK"}
1
+ {"version":3,"file":"repository.mjs","names":["OAuth2ScopeRepository","repository","findByClientId","clientId","clientScopes","find","where","client_id","relations","scope","map","clientScope"],"sources":["../../../../../../src/app/modules/oauth2/repositories/scope/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ClientScope, Scope } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport type { IOAuth2ScopeRepository } from '../../../../../core/index.ts';\n\nexport class OAuth2ScopeRepository implements IOAuth2ScopeRepository {\n private readonly repository: Repository<ClientScope>;\n\n constructor(\n repository: Repository<ClientScope>,\n ) {\n this.repository = repository;\n }\n\n async findByClientId(clientId: string): Promise<Scope[]> {\n const clientScopes = await this.repository.find({\n where: { client_id: clientId },\n relations: { scope: true },\n });\n\n return clientScopes.map((clientScope) => clientScope.scope);\n }\n}\n"],"mappings":";AAWA,IAAaA,wBAAb,MAAaA;CACQC;CAEjB,YACIA,YACF;EACE,KAAKA,aAAaA;CACtB;CAEA,MAAMC,eAAeC,UAAoC;EAMrD,QAAOC,MALoB,KAAKH,WAAWI,KAAK;GAC5CC,OAAO,EAAEC,WAAWJ,SAAS;GAC7BK,WAAW,EAAEC,OAAO,KAAK;EAC7B,CAAA,GAEoBC,KAAKC,gBAAgBA,YAAYF,KAAK;CAC9D;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["buildCacheKey","randomUUID","CacheOAuth2Prefix","OAuth2TokenRepository","cache","findOneBySignature","signature","get","prefix","TOKEN_CLAIMS","key","findOneById","id","TOKEN","removeById","token","drop","setInactive","exp","insert","payload","jti","set","ttl","buildTTL","save","saveWithSignature","data","normalized","isInactive","cacheKey","TOKEN_INACTIVE","response","utc","Date","now"],"sources":["../../../../../../src/app/modules/oauth2/repositories/token/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { OAuth2TokenPayload } from '@authup/specs';\nimport { randomUUID } from 'node:crypto';\nimport type { IOAuth2TokenRepository } from '../../../../../core/index.ts';\nimport { CacheOAuth2Prefix } from '../constants.ts';\n\nexport class OAuth2TokenRepository implements IOAuth2TokenRepository {\n protected cache : ICache;\n\n constructor(cache: ICache) {\n this.cache = cache;\n }\n\n // -----------------------------------------------------\n\n async findOneBySignature(signature: string): Promise<OAuth2TokenPayload | null> {\n return this.cache.get<OAuth2TokenPayload>(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_CLAIMS,\n key: signature, \n }),\n );\n }\n\n async findOneById(id: string): Promise<OAuth2TokenPayload | null> {\n return this.cache.get<OAuth2TokenPayload>(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN,\n key: id, \n }),\n );\n }\n\n // -----------------------------------------------------\n\n async removeById(id: string): Promise<void> {\n const token = await this.findOneById(id);\n if (!token) {\n return;\n }\n\n const key = buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN,\n key: id, \n });\n await this.cache.drop(key);\n\n await this.setInactive(id, token.exp);\n }\n\n // -----------------------------------------------------\n\n async insert(payload: OAuth2TokenPayload): Promise<OAuth2TokenPayload> {\n payload.jti = randomUUID();\n\n await this.cache.set(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN,\n key: payload.jti, \n }),\n payload,\n { ttl: this.buildTTL(payload.exp) },\n );\n\n return payload;\n }\n\n async save(payload: OAuth2TokenPayload): Promise<OAuth2TokenPayload> {\n if (payload.jti) {\n return payload;\n }\n\n return this.insert(payload);\n }\n\n async saveWithSignature(data: OAuth2TokenPayload, signature: string): Promise<OAuth2TokenPayload> {\n const normalized = await this.save(data);\n\n await this.cache.set(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_CLAIMS,\n key: signature, \n }),\n normalized,\n { ttl: this.buildTTL(data.exp) },\n );\n\n return normalized;\n }\n\n // -----------------------------------------------------\n\n async isInactive(key: string): Promise<boolean> {\n const cacheKey = buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_INACTIVE,\n key,\n });\n\n const response = await this.cache.get(cacheKey);\n\n return !!response;\n }\n\n async setInactive(key: string, exp?: number): Promise<void> {\n const ttl = this.buildTTL(exp);\n\n const cacheKey = buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_INACTIVE,\n key,\n });\n\n await this.cache.set(\n cacheKey,\n true,\n { ttl },\n );\n }\n\n // -----------------------------------------------------\n\n /**\n * Transform timestamp in seconds to ttl in ms.\n *\n * @param utc\n * @protected\n */\n protected buildTTL(utc?: number) {\n if (typeof utc === 'number') {\n const ttl = (utc * 1000) - Date.now();\n if (ttl > 0) {\n return ttl;\n }\n }\n\n return 3_600 * 1000;\n }\n}\n"],"mappings":";;;;AAcA,IAAaG,wBAAb,MAAaA;CACCC;CAEV,YAAYA,OAAe;AACvB,OAAKA,QAAQA;;CAKjB,MAAMC,mBAAmBC,WAAuD;AAC5E,SAAO,KAAKF,MAAMG,IACdP,cAAc;GACVQ,QAAQN,kBAAkBO;GAC1BC,KAAKJ;GACT,CAAA,CAAA;;CAIR,MAAMK,YAAYC,IAAgD;AAC9D,SAAO,KAAKR,MAAMG,IACdP,cAAc;GACVQ,QAAQN,kBAAkBW;GAC1BH,KAAKE;GACT,CAAA,CAAA;;CAMR,MAAME,WAAWF,IAA2B;EACxC,MAAMG,QAAQ,MAAM,KAAKJ,YAAYC,GAAAA;AACrC,MAAI,CAACG,MACD;EAGJ,MAAML,MAAMV,cAAc;GACtBQ,QAAQN,kBAAkBW;GAC1BH,KAAKE;GACT,CAAA;AACA,QAAM,KAAKR,MAAMY,KAAKN,IAAAA;AAEtB,QAAM,KAAKO,YAAYL,IAAIG,MAAMG,IAAG;;CAKxC,MAAMC,OAAOC,SAA0D;AACnEA,UAAQC,MAAMpB,YAAAA;AAEd,QAAM,KAAKG,MAAMkB,IACbtB,cAAc;GACVQ,QAAQN,kBAAkBW;GAC1BH,KAAKU,QAAQC;GACjB,CAAA,EACAD,SACA,EAAEG,KAAK,KAAKC,SAASJ,QAAQF,IAAG,EAAE,CAAA;AAGtC,SAAOE;;CAGX,MAAMK,KAAKL,SAA0D;AACjE,MAAIA,QAAQC,IACR,QAAOD;AAGX,SAAO,KAAKD,OAAOC,QAAAA;;CAGvB,MAAMM,kBAAkBC,MAA0BrB,WAAgD;EAC9F,MAAMsB,aAAa,MAAM,KAAKH,KAAKE,KAAAA;AAEnC,QAAM,KAAKvB,MAAMkB,IACbtB,cAAc;GACVQ,QAAQN,kBAAkBO;GAC1BC,KAAKJ;GACT,CAAA,EACAsB,YACA,EAAEL,KAAK,KAAKC,SAASG,KAAKT,IAAG,EAAE,CAAA;AAGnC,SAAOU;;CAKX,MAAMC,WAAWnB,KAA+B;EAC5C,MAAMoB,WAAW9B,cAAc;GAC3BQ,QAAQN,kBAAkB6B;GAC1BrB;GACJ,CAAA;AAIA,SAAO,CAAC,CAACsB,MAFc,KAAK5B,MAAMG,IAAIuB,SAAAA;;CAK1C,MAAMb,YAAYP,KAAaQ,KAA6B;EACxD,MAAMK,MAAM,KAAKC,SAASN,IAAAA;EAE1B,MAAMY,WAAW9B,cAAc;GAC3BQ,QAAQN,kBAAkB6B;GAC1BrB;GACJ,CAAA;AAEA,QAAM,KAAKN,MAAMkB,IACbQ,UACA,MACA,EAAEP,KAAI,CAAA;;;;;;;IAYd,SAAmBU,KAAc;AAC7B,MAAI,OAAOA,QAAQ,UAAU;GACzB,MAAMV,MAAM,MAAO,MAAQW,KAAKC,KAAG;AACnC,OAAIZ,MAAM,EACN,QAAOA;;AAIf,SAAO,OAAQ"}
1
+ {"version":3,"file":"repository.mjs","names":["buildCacheKey","randomUUID","CacheOAuth2Prefix","OAuth2TokenRepository","cache","findOneBySignature","signature","get","prefix","TOKEN_CLAIMS","key","findOneById","id","TOKEN","removeById","token","drop","setInactive","exp","insert","payload","jti","set","ttl","buildTTL","save","saveWithSignature","data","normalized","isInactive","cacheKey","TOKEN_INACTIVE","response","utc","Date","now"],"sources":["../../../../../../src/app/modules/oauth2/repositories/token/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { OAuth2TokenPayload } from '@authup/specs';\nimport { randomUUID } from 'node:crypto';\nimport type { IOAuth2TokenRepository } from '../../../../../core/index.ts';\nimport { CacheOAuth2Prefix } from '../constants.ts';\n\nexport class OAuth2TokenRepository implements IOAuth2TokenRepository {\n protected cache : ICache;\n\n constructor(cache: ICache) {\n this.cache = cache;\n }\n\n // -----------------------------------------------------\n\n async findOneBySignature(signature: string): Promise<OAuth2TokenPayload | null> {\n return this.cache.get<OAuth2TokenPayload>(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_CLAIMS,\n key: signature, \n }),\n );\n }\n\n async findOneById(id: string): Promise<OAuth2TokenPayload | null> {\n return this.cache.get<OAuth2TokenPayload>(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN,\n key: id, \n }),\n );\n }\n\n // -----------------------------------------------------\n\n async removeById(id: string): Promise<void> {\n const token = await this.findOneById(id);\n if (!token) {\n return;\n }\n\n const key = buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN,\n key: id, \n });\n await this.cache.drop(key);\n\n await this.setInactive(id, token.exp);\n }\n\n // -----------------------------------------------------\n\n async insert(payload: OAuth2TokenPayload): Promise<OAuth2TokenPayload> {\n payload.jti = randomUUID();\n\n await this.cache.set(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN,\n key: payload.jti, \n }),\n payload,\n { ttl: this.buildTTL(payload.exp) },\n );\n\n return payload;\n }\n\n async save(payload: OAuth2TokenPayload): Promise<OAuth2TokenPayload> {\n if (payload.jti) {\n return payload;\n }\n\n return this.insert(payload);\n }\n\n async saveWithSignature(data: OAuth2TokenPayload, signature: string): Promise<OAuth2TokenPayload> {\n const normalized = await this.save(data);\n\n await this.cache.set(\n buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_CLAIMS,\n key: signature, \n }),\n normalized,\n { ttl: this.buildTTL(data.exp) },\n );\n\n return normalized;\n }\n\n // -----------------------------------------------------\n\n async isInactive(key: string): Promise<boolean> {\n const cacheKey = buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_INACTIVE,\n key,\n });\n\n const response = await this.cache.get(cacheKey);\n\n return !!response;\n }\n\n async setInactive(key: string, exp?: number): Promise<void> {\n const ttl = this.buildTTL(exp);\n\n const cacheKey = buildCacheKey({\n prefix: CacheOAuth2Prefix.TOKEN_INACTIVE,\n key,\n });\n\n await this.cache.set(\n cacheKey,\n true,\n { ttl },\n );\n }\n\n // -----------------------------------------------------\n\n /**\n * Transform timestamp in seconds to ttl in ms.\n *\n * @param utc\n * @protected\n */\n protected buildTTL(utc?: number) {\n if (typeof utc === 'number') {\n const ttl = (utc * 1000) - Date.now();\n if (ttl > 0) {\n return ttl;\n }\n }\n\n return 3_600 * 1000;\n }\n}\n"],"mappings":";;;;AAcA,IAAaG,wBAAb,MAAaA;CACCC;CAEV,YAAYA,OAAe;EACvB,KAAKA,QAAQA;CACjB;CAIA,MAAMC,mBAAmBC,WAAuD;EAC5E,OAAO,KAAKF,MAAMG,IACdP,cAAc;GACVQ,QAAQN,kBAAkBO;GAC1BC,KAAKJ;EACT,CAAA,CAAA;CAER;CAEA,MAAMK,YAAYC,IAAgD;EAC9D,OAAO,KAAKR,MAAMG,IACdP,cAAc;GACVQ,QAAQN,kBAAkBW;GAC1BH,KAAKE;EACT,CAAA,CAAA;CAER;CAIA,MAAME,WAAWF,IAA2B;EACxC,MAAMG,QAAQ,MAAM,KAAKJ,YAAYC,EAAAA;EACrC,IAAI,CAACG,OACD;EAGJ,MAAML,MAAMV,cAAc;GACtBQ,QAAQN,kBAAkBW;GAC1BH,KAAKE;EACT,CAAA;EACA,MAAM,KAAKR,MAAMY,KAAKN,GAAAA;EAEtB,MAAM,KAAKO,YAAYL,IAAIG,MAAMG,GAAG;CACxC;CAIA,MAAMC,OAAOC,SAA0D;EACnEA,QAAQC,MAAMpB,WAAAA;EAEd,MAAM,KAAKG,MAAMkB,IACbtB,cAAc;GACVQ,QAAQN,kBAAkBW;GAC1BH,KAAKU,QAAQC;EACjB,CAAA,GACAD,SACA,EAAEG,KAAK,KAAKC,SAASJ,QAAQF,GAAG,EAAE,CAAA;EAGtC,OAAOE;CACX;CAEA,MAAMK,KAAKL,SAA0D;EACjE,IAAIA,QAAQC,KACR,OAAOD;EAGX,OAAO,KAAKD,OAAOC,OAAAA;CACvB;CAEA,MAAMM,kBAAkBC,MAA0BrB,WAAgD;EAC9F,MAAMsB,aAAa,MAAM,KAAKH,KAAKE,IAAAA;EAEnC,MAAM,KAAKvB,MAAMkB,IACbtB,cAAc;GACVQ,QAAQN,kBAAkBO;GAC1BC,KAAKJ;EACT,CAAA,GACAsB,YACA,EAAEL,KAAK,KAAKC,SAASG,KAAKT,GAAG,EAAE,CAAA;EAGnC,OAAOU;CACX;CAIA,MAAMC,WAAWnB,KAA+B;EAC5C,MAAMoB,WAAW9B,cAAc;GAC3BQ,QAAQN,kBAAkB6B;GAC1BrB;EACJ,CAAA;EAIA,OAAO,CAAC,CAACsB,MAFc,KAAK5B,MAAMG,IAAIuB,QAAAA;CAG1C;CAEA,MAAMb,YAAYP,KAAaQ,KAA6B;EACxD,MAAMK,MAAM,KAAKC,SAASN,GAAAA;EAE1B,MAAMY,WAAW9B,cAAc;GAC3BQ,QAAQN,kBAAkB6B;GAC1BrB;EACJ,CAAA;EAEA,MAAM,KAAKN,MAAMkB,IACbQ,UACA,MACA,EAAEP,IAAI,CAAA;CAEd;;;;;;IAUA,SAAmBU,KAAc;EAC7B,IAAI,OAAOA,QAAQ,UAAU;GACzB,MAAMV,MAAM,MAAO,MAAQW,KAAKC,IAAG;GACnC,IAAIZ,MAAM,GACN,OAAOA;EAEf;EAEA,OAAO,OAAQ;CACnB;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["ClientEntity","ClientPermissionEntity","ClientRoleEntity","PermissionEntity","RealmEntity","RobotEntity","RobotPermissionEntity","RobotRoleEntity","RoleEntity","RolePermissionEntity","ScopeEntity","UserPermissionEntity","UserRoleEntity","SystemPolicyName","PermissionPolicyEntity","PolicyRepository","UserRepository","ClientProvisioningSynchronizer","GraphProvisioningSynchronizer","PermissionProvisioningSynchronizer","PolicyProvisioningSynchronizer","RealmProvisioningSynchronizer","RobotProvisioningSynchronizer","RoleProvisioningSynchronizer","ScopeProvisioningSynchronizer","UserProvisioningSynchronizer","ClientPermissionRepositoryAdapter","ClientRepositoryAdapter","ClientRoleRepositoryAdapter","PermissionPolicyRepositoryAdapter","PermissionRepositoryAdapter","PolicyRepositoryAdapter","RealmRepositoryAdapter","RobotPermissionRepositoryAdapter","RobotRepositoryAdapter","RobotRoleRepositoryAdapter","RolePermissionRepositoryAdapter","RoleRepositoryAdapter","ScopeRepositoryAdapter","UserPermissionRepositoryAdapter","UserRepositoryAdapter","UserRoleRepositoryAdapter","DatabaseInjectionKey","ModuleName","fs","path","ConfigInjectionKey","CompositeProvisioningSource","FileProvisioningSource","ProvisionerModule","name","dependencies","sources","PROVISIONING","CONFIG","DATABASE","setup","container","config","resolve","provisioningDir","join","writableDirectoryPath","existsSync","push","cwd","composite","data","load","dataSource","DataSource","realmRepository","permissionRepository","repository","policyRepository","permissionPolicyRepository","policySynchronizer","roleRepository","clientRepository","permissionSynchronizer","roleSynchronizer","rolePermissionRepository","clientSynchronizer","clientRoleRepository","clientPermissionRepository","userSynchronizer","userRepository","userRoleRepository","userPermissionRepository","robotSynchronizer","robotRepository","robotRoleRepository","robotPermissionRepository","scopeRepository","scopeSynchronizer","realmSynchronizer","rootSynchronizer","synchronize","permissionsDefaultPolicyAssignment","assignDefaultPolicy","defaultPolicy","findOneByName","DEFAULT","permissionRepo","getRepository","junctionRepo","permissions","find","permission","hasAnyPolicy","findOneBy","permission_id","id","save","create","permission_realm_id","realm_id","policy_id","policy_realm_id"],"sources":["../../../../src/app/modules/provisioning/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type {\n Client,\n ClientPermission,\n ClientRole,\n PermissionPolicy,\n Realm,\n Robot,\n RobotPermission,\n RobotRole,\n Role,\n RolePermission,\n Scope,\n UserPermission,\n UserRole,\n} from '@authup/core-kit';\nimport type { DataSource, Repository } from 'typeorm';\nimport {\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n PermissionEntity,\n RealmEntity,\n RobotEntity,\n RobotPermissionEntity,\n RobotRoleEntity,\n RoleEntity,\n RolePermissionEntity,\n ScopeEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../adapters/database/index.ts';\nimport { SystemPolicyName } from '@authup/access';\nimport {\n PermissionPolicyEntity,\n PolicyRepository,\n UserRepository,\n} from '../../../adapters/database/domains/index.ts';\nimport type { IContainer } from 'eldin';\nimport {\n ClientProvisioningSynchronizer,\n GraphProvisioningSynchronizer,\n PermissionProvisioningSynchronizer,\n PolicyProvisioningSynchronizer,\n RealmProvisioningSynchronizer,\n RobotProvisioningSynchronizer,\n RoleProvisioningSynchronizer,\n ScopeProvisioningSynchronizer,\n UserProvisioningSynchronizer,\n} from '../../../core/provisioning/synchronizer/index.ts';\nimport type { IProvisioningSource } from '../../../core/provisioning/types.ts';\nimport {\n ClientPermissionRepositoryAdapter,\n ClientRepositoryAdapter,\n ClientRoleRepositoryAdapter,\n PermissionPolicyRepositoryAdapter,\n PermissionRepositoryAdapter,\n PolicyRepositoryAdapter,\n RealmRepositoryAdapter,\n RobotPermissionRepositoryAdapter,\n RobotRepositoryAdapter,\n RobotRoleRepositoryAdapter,\n RolePermissionRepositoryAdapter,\n RoleRepositoryAdapter,\n ScopeRepositoryAdapter,\n UserPermissionRepositoryAdapter,\n UserRepositoryAdapter,\n UserRoleRepositoryAdapter,\n} from '../database/repositories/index.ts';\nimport { DatabaseInjectionKey } from '../database/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { CompositeProvisioningSource, FileProvisioningSource } from './sources/index.ts';\n\nexport class ProvisionerModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected sources: IProvisioningSource[];\n\n constructor(sources: IProvisioningSource[] = []) {\n this.name = ModuleName.PROVISIONING;\n this.dependencies = [ModuleName.CONFIG, ModuleName.DATABASE];\n this.sources = sources;\n }\n\n async setup(container: IContainer): Promise<void> {\n const sources = [...this.sources];\n\n const config = container.resolve(ConfigInjectionKey);\n const provisioningDir = path.join(config.writableDirectoryPath, 'provisioning');\n if (fs.existsSync(provisioningDir)) {\n sources.push(new FileProvisioningSource({ cwd: provisioningDir }));\n }\n\n const composite = new CompositeProvisioningSource(sources);\n const data = await composite.load(container);\n\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n\n const permissionRepository = new PermissionRepositoryAdapter({\n repository: container.resolve<Repository<PermissionEntity>>(PermissionEntity),\n realmRepository,\n });\n\n const policyRepository = new PolicyRepositoryAdapter({\n repository: new PolicyRepository(dataSource),\n realmRepository,\n });\n\n // ---------------------------------------------------------------\n // Synchronize all entities (policies → permissions → roles → ...)\n // ---------------------------------------------------------------\n\n const permissionPolicyRepository = new PermissionPolicyRepositoryAdapter(\n container.resolve<Repository<PermissionPolicy>>(PermissionPolicyEntity),\n );\n\n const policySynchronizer = new PolicyProvisioningSynchronizer({\n repository: policyRepository,\n permissionPolicyRepository,\n });\n\n const roleRepository = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository,\n });\n const clientRepository = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n\n const permissionSynchronizer = new PermissionProvisioningSynchronizer({\n repository: permissionRepository,\n policyRepository,\n permissionPolicyRepository,\n });\n\n const roleSynchronizer = new RoleProvisioningSynchronizer({\n repository: roleRepository,\n permissionRepository,\n policyRepository,\n rolePermissionRepository: new RolePermissionRepositoryAdapter(\n container.resolve<Repository<RolePermission>>(RolePermissionEntity),\n ),\n });\n\n const clientSynchronizer = new ClientProvisioningSynchronizer({\n clientRepository,\n clientRoleRepository: new ClientRoleRepositoryAdapter(\n container.resolve<Repository<ClientRole>>(ClientRoleEntity),\n ),\n clientPermissionRepository: new ClientPermissionRepositoryAdapter(\n container.resolve<Repository<ClientPermission>>(ClientPermissionEntity),\n ),\n\n roleRepository,\n permissionRepository,\n\n roleSynchronizer,\n permissionSynchronizer,\n });\n\n const userSynchronizer = new UserProvisioningSynchronizer({\n userRepository: new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n }),\n userRoleRepository: new UserRoleRepositoryAdapter(\n container.resolve<Repository<UserRole>>(UserRoleEntity),\n ),\n userPermissionRepository: new UserPermissionRepositoryAdapter(\n container.resolve<Repository<UserPermission>>(UserPermissionEntity),\n ),\n\n clientRepository,\n roleRepository,\n permissionRepository,\n });\n\n const robotSynchronizer = new RobotProvisioningSynchronizer({\n robotRepository: new RobotRepositoryAdapter({\n repository: container.resolve<Repository<Robot>>(RobotEntity),\n realmRepository,\n }),\n robotRoleRepository: new RobotRoleRepositoryAdapter(\n container.resolve<Repository<RobotRole>>(RobotRoleEntity),\n ),\n robotPermissionRepository: new RobotPermissionRepositoryAdapter(\n container.resolve<Repository<RobotPermission>>(RobotPermissionEntity),\n ),\n\n roleRepository,\n permissionRepository,\n });\n\n const scopeRepository = new ScopeRepositoryAdapter({\n repository: container.resolve<Repository<Scope>>(ScopeEntity),\n realmRepository,\n });\n\n const scopeSynchronizer = new ScopeProvisioningSynchronizer({ repository: scopeRepository });\n\n const realmSynchronizer = new RealmProvisioningSynchronizer({\n repository: new RealmRepositoryAdapter(realmRepository),\n\n clientSynchronizer,\n roleSynchronizer,\n permissionSynchronizer,\n userSynchronizer,\n robotSynchronizer,\n scopeSynchronizer,\n });\n\n const rootSynchronizer = new GraphProvisioningSynchronizer({\n policySynchronizer,\n permissionSynchronizer,\n roleSynchronizer,\n realmSynchronizer,\n scopeSynchronizer,\n });\n\n await rootSynchronizer.synchronize(data);\n\n if (config.permissionsDefaultPolicyAssignment) {\n await this.assignDefaultPolicy(dataSource, policyRepository);\n }\n }\n\n protected async assignDefaultPolicy(\n dataSource: DataSource,\n policyRepository: PolicyRepositoryAdapter,\n ): Promise<void> {\n const defaultPolicy = await policyRepository.findOneByName(SystemPolicyName.DEFAULT);\n if (!defaultPolicy) {\n return;\n }\n\n const permissionRepo = dataSource.getRepository(PermissionEntity);\n const junctionRepo = dataSource.getRepository(PermissionPolicyEntity);\n\n const permissions = await permissionRepo.find();\n for (const permission of permissions) {\n const hasAnyPolicy = await junctionRepo.findOneBy({ permission_id: permission.id });\n\n if (!hasAnyPolicy) {\n await junctionRepo.save(junctionRepo.create({\n permission_id: permission.id,\n permission_realm_id: permission.realm_id,\n policy_id: defaultPolicy.id,\n policy_realm_id: defaultPolicy.realm_id,\n }));\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["ClientEntity","ClientPermissionEntity","ClientRoleEntity","PermissionEntity","RealmEntity","RobotEntity","RobotPermissionEntity","RobotRoleEntity","RoleEntity","RolePermissionEntity","ScopeEntity","UserPermissionEntity","UserRoleEntity","SystemPolicyName","PermissionPolicyEntity","PolicyRepository","UserRepository","ClientProvisioningSynchronizer","GraphProvisioningSynchronizer","PermissionProvisioningSynchronizer","PolicyProvisioningSynchronizer","RealmProvisioningSynchronizer","RobotProvisioningSynchronizer","RoleProvisioningSynchronizer","ScopeProvisioningSynchronizer","UserProvisioningSynchronizer","ClientPermissionRepositoryAdapter","ClientRepositoryAdapter","ClientRoleRepositoryAdapter","PermissionPolicyRepositoryAdapter","PermissionRepositoryAdapter","PolicyRepositoryAdapter","RealmRepositoryAdapter","RobotPermissionRepositoryAdapter","RobotRepositoryAdapter","RobotRoleRepositoryAdapter","RolePermissionRepositoryAdapter","RoleRepositoryAdapter","ScopeRepositoryAdapter","UserPermissionRepositoryAdapter","UserRepositoryAdapter","UserRoleRepositoryAdapter","DatabaseInjectionKey","ModuleName","fs","path","ConfigInjectionKey","CompositeProvisioningSource","FileProvisioningSource","ProvisionerModule","name","dependencies","sources","PROVISIONING","CONFIG","DATABASE","setup","container","config","resolve","provisioningDir","join","writableDirectoryPath","existsSync","push","cwd","composite","data","load","dataSource","DataSource","realmRepository","permissionRepository","repository","policyRepository","permissionPolicyRepository","policySynchronizer","roleRepository","clientRepository","permissionSynchronizer","roleSynchronizer","rolePermissionRepository","clientSynchronizer","clientRoleRepository","clientPermissionRepository","userSynchronizer","userRepository","userRoleRepository","userPermissionRepository","robotSynchronizer","robotRepository","robotRoleRepository","robotPermissionRepository","scopeRepository","scopeSynchronizer","realmSynchronizer","rootSynchronizer","synchronize","permissionsDefaultPolicyAssignment","assignDefaultPolicy","defaultPolicy","findOneByName","DEFAULT","permissionRepo","getRepository","junctionRepo","permissions","find","permission","hasAnyPolicy","findOneBy","permission_id","id","save","create","permission_realm_id","realm_id","policy_id","policy_realm_id"],"sources":["../../../../src/app/modules/provisioning/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type {\n Client,\n ClientPermission,\n ClientRole,\n PermissionPolicy,\n Realm,\n Robot,\n RobotPermission,\n RobotRole,\n Role,\n RolePermission,\n Scope,\n UserPermission,\n UserRole,\n} from '@authup/core-kit';\nimport type { DataSource, Repository } from 'typeorm';\nimport {\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n PermissionEntity,\n RealmEntity,\n RobotEntity,\n RobotPermissionEntity,\n RobotRoleEntity,\n RoleEntity,\n RolePermissionEntity,\n ScopeEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../adapters/database/index.ts';\nimport { SystemPolicyName } from '@authup/access';\nimport {\n PermissionPolicyEntity,\n PolicyRepository,\n UserRepository,\n} from '../../../adapters/database/domains/index.ts';\nimport type { IContainer } from 'eldin';\nimport {\n ClientProvisioningSynchronizer,\n GraphProvisioningSynchronizer,\n PermissionProvisioningSynchronizer,\n PolicyProvisioningSynchronizer,\n RealmProvisioningSynchronizer,\n RobotProvisioningSynchronizer,\n RoleProvisioningSynchronizer,\n ScopeProvisioningSynchronizer,\n UserProvisioningSynchronizer,\n} from '../../../core/provisioning/synchronizer/index.ts';\nimport type { IProvisioningSource } from '../../../core/provisioning/types.ts';\nimport {\n ClientPermissionRepositoryAdapter,\n ClientRepositoryAdapter,\n ClientRoleRepositoryAdapter,\n PermissionPolicyRepositoryAdapter,\n PermissionRepositoryAdapter,\n PolicyRepositoryAdapter,\n RealmRepositoryAdapter,\n RobotPermissionRepositoryAdapter,\n RobotRepositoryAdapter,\n RobotRoleRepositoryAdapter,\n RolePermissionRepositoryAdapter,\n RoleRepositoryAdapter,\n ScopeRepositoryAdapter,\n UserPermissionRepositoryAdapter,\n UserRepositoryAdapter,\n UserRoleRepositoryAdapter,\n} from '../database/repositories/index.ts';\nimport { DatabaseInjectionKey } from '../database/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { CompositeProvisioningSource, FileProvisioningSource } from './sources/index.ts';\n\nexport class ProvisionerModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected sources: IProvisioningSource[];\n\n constructor(sources: IProvisioningSource[] = []) {\n this.name = ModuleName.PROVISIONING;\n this.dependencies = [ModuleName.CONFIG, ModuleName.DATABASE];\n this.sources = sources;\n }\n\n async setup(container: IContainer): Promise<void> {\n const sources = [...this.sources];\n\n const config = container.resolve(ConfigInjectionKey);\n const provisioningDir = path.join(config.writableDirectoryPath, 'provisioning');\n if (fs.existsSync(provisioningDir)) {\n sources.push(new FileProvisioningSource({ cwd: provisioningDir }));\n }\n\n const composite = new CompositeProvisioningSource(sources);\n const data = await composite.load(container);\n\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n\n const permissionRepository = new PermissionRepositoryAdapter({\n repository: container.resolve<Repository<PermissionEntity>>(PermissionEntity),\n realmRepository,\n });\n\n const policyRepository = new PolicyRepositoryAdapter({\n repository: new PolicyRepository(dataSource),\n realmRepository,\n });\n\n // ---------------------------------------------------------------\n // Synchronize all entities (policies → permissions → roles → ...)\n // ---------------------------------------------------------------\n\n const permissionPolicyRepository = new PermissionPolicyRepositoryAdapter(\n container.resolve<Repository<PermissionPolicy>>(PermissionPolicyEntity),\n );\n\n const policySynchronizer = new PolicyProvisioningSynchronizer({\n repository: policyRepository,\n permissionPolicyRepository,\n });\n\n const roleRepository = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository,\n });\n const clientRepository = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n\n const permissionSynchronizer = new PermissionProvisioningSynchronizer({\n repository: permissionRepository,\n policyRepository,\n permissionPolicyRepository,\n });\n\n const roleSynchronizer = new RoleProvisioningSynchronizer({\n repository: roleRepository,\n permissionRepository,\n policyRepository,\n rolePermissionRepository: new RolePermissionRepositoryAdapter(\n container.resolve<Repository<RolePermission>>(RolePermissionEntity),\n ),\n });\n\n const clientSynchronizer = new ClientProvisioningSynchronizer({\n clientRepository,\n clientRoleRepository: new ClientRoleRepositoryAdapter(\n container.resolve<Repository<ClientRole>>(ClientRoleEntity),\n ),\n clientPermissionRepository: new ClientPermissionRepositoryAdapter(\n container.resolve<Repository<ClientPermission>>(ClientPermissionEntity),\n ),\n\n roleRepository,\n permissionRepository,\n\n roleSynchronizer,\n permissionSynchronizer,\n });\n\n const userSynchronizer = new UserProvisioningSynchronizer({\n userRepository: new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n }),\n userRoleRepository: new UserRoleRepositoryAdapter(\n container.resolve<Repository<UserRole>>(UserRoleEntity),\n ),\n userPermissionRepository: new UserPermissionRepositoryAdapter(\n container.resolve<Repository<UserPermission>>(UserPermissionEntity),\n ),\n\n clientRepository,\n roleRepository,\n permissionRepository,\n });\n\n const robotSynchronizer = new RobotProvisioningSynchronizer({\n robotRepository: new RobotRepositoryAdapter({\n repository: container.resolve<Repository<Robot>>(RobotEntity),\n realmRepository,\n }),\n robotRoleRepository: new RobotRoleRepositoryAdapter(\n container.resolve<Repository<RobotRole>>(RobotRoleEntity),\n ),\n robotPermissionRepository: new RobotPermissionRepositoryAdapter(\n container.resolve<Repository<RobotPermission>>(RobotPermissionEntity),\n ),\n\n roleRepository,\n permissionRepository,\n });\n\n const scopeRepository = new ScopeRepositoryAdapter({\n repository: container.resolve<Repository<Scope>>(ScopeEntity),\n realmRepository,\n });\n\n const scopeSynchronizer = new ScopeProvisioningSynchronizer({ repository: scopeRepository });\n\n const realmSynchronizer = new RealmProvisioningSynchronizer({\n repository: new RealmRepositoryAdapter(realmRepository),\n\n clientSynchronizer,\n roleSynchronizer,\n permissionSynchronizer,\n userSynchronizer,\n robotSynchronizer,\n scopeSynchronizer,\n });\n\n const rootSynchronizer = new GraphProvisioningSynchronizer({\n policySynchronizer,\n permissionSynchronizer,\n roleSynchronizer,\n realmSynchronizer,\n scopeSynchronizer,\n });\n\n await rootSynchronizer.synchronize(data);\n\n if (config.permissionsDefaultPolicyAssignment) {\n await this.assignDefaultPolicy(dataSource, policyRepository);\n }\n }\n\n protected async assignDefaultPolicy(\n dataSource: DataSource,\n policyRepository: PolicyRepositoryAdapter,\n ): Promise<void> {\n const defaultPolicy = await policyRepository.findOneByName(SystemPolicyName.DEFAULT);\n if (!defaultPolicy) {\n return;\n }\n\n const permissionRepo = dataSource.getRepository(PermissionEntity);\n const junctionRepo = dataSource.getRepository(PermissionPolicyEntity);\n\n const permissions = await permissionRepo.find();\n for (const permission of permissions) {\n const hasAnyPolicy = await junctionRepo.findOneBy({ permission_id: permission.id });\n\n if (!hasAnyPolicy) {\n await junctionRepo.save(junctionRepo.create({\n permission_id: permission.id,\n permission_realm_id: permission.realm_id,\n policy_id: defaultPolicy.id,\n policy_realm_id: defaultPolicy.realm_id,\n }));\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["CompositeProvisioningSource","sources","load","container","output","sourcesData","Promise","all","map","source","sourceData","merge","target","policies","mergeEntities","permissions","roles","scopes","realms","buildEntityKey","attributes","name","undefined","realm_id","client_id","result","forEach","item","key","push","idx","findIndex","r"],"sources":["../../../../../../src/app/modules/provisioning/sources/composite/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RootProvisioningEntity } from '../../../../../core/provisioning/entities/root/index.ts';\nimport type { IProvisioningSource } from '../../../../../core/provisioning/types.ts';\nimport type { IContainer } from 'eldin';\n\nexport class CompositeProvisioningSource implements IProvisioningSource {\n protected sources : IProvisioningSource[];\n\n constructor(sources : IProvisioningSource[]) {\n this.sources = sources;\n }\n\n async load(container: IContainer): Promise<RootProvisioningEntity> {\n const output : RootProvisioningEntity = {};\n\n const sourcesData = await Promise.all(\n (this.sources).map((source) => source.load(container)),\n );\n\n sourcesData.map((sourceData) => this.merge(output, sourceData));\n\n return output;\n }\n\n merge(target: RootProvisioningEntity, source: RootProvisioningEntity) {\n target.policies = this.mergeEntities(target.policies, source.policies);\n target.permissions = this.mergeEntities(target.permissions, source.permissions);\n target.roles = this.mergeEntities(target.roles, source.roles);\n target.scopes = this.mergeEntities(target.scopes, source.scopes);\n target.realms = this.mergeEntities(target.realms, source.realms);\n }\n\n private buildEntityKey(\n attributes: {\n name?: string,\n realm_id?: string | null,\n client_id?: string | null\n },\n ): string | undefined {\n if (!attributes.name) return undefined;\n return `${attributes.name}:${attributes.realm_id || ''}:${attributes.client_id || ''}`;\n }\n\n private mergeEntities<\n T extends {\n attributes: {\n name?: string,\n realm_id?: string | null,\n client_id?: string | null\n }\n },\n >(\n target: T[] | undefined,\n source: T[] | undefined,\n ): T[] | undefined {\n if (!source) return target;\n if (!target) return [...source];\n\n const result = [...target];\n source.forEach((item) => {\n const key = this.buildEntityKey(item.attributes);\n if (!key) {\n result.push(item);\n return;\n }\n\n const idx = result.findIndex((r) => this.buildEntityKey(r.attributes) === key);\n if (idx !== -1) {\n result[idx] = item;\n } else {\n result.push(item);\n }\n });\n return result;\n }\n}\n"],"mappings":";AAWA,IAAaA,8BAAb,MAAaA;CACCC;CAEV,YAAYA,SAAiC;AACzC,OAAKA,UAAUA;;CAGnB,MAAMC,KAAKC,WAAwD;EAC/D,MAAMC,SAAkC,EAAC;AAMzCC,GAAAA,MAJ0BC,QAAQC,IAC9B,KAAMN,QAASO,KAAKC,WAAWA,OAAOP,KAAKC,UAAAA,CAAAA,CAAAA,EAGnCK,KAAKE,eAAe,KAAKC,MAAMP,QAAQM,WAAAA,CAAAA;AAEnD,SAAON;;CAGXO,MAAMC,QAAgCH,QAAgC;AAClEG,SAAOC,WAAW,KAAKC,cAAcF,OAAOC,UAAUJ,OAAOI,SAAQ;AACrED,SAAOG,cAAc,KAAKD,cAAcF,OAAOG,aAAaN,OAAOM,YAAW;AAC9EH,SAAOI,QAAQ,KAAKF,cAAcF,OAAOI,OAAOP,OAAOO,MAAK;AAC5DJ,SAAOK,SAAS,KAAKH,cAAcF,OAAOK,QAAQR,OAAOQ,OAAM;AAC/DL,SAAOM,SAAS,KAAKJ,cAAcF,OAAOM,QAAQT,OAAOS,OAAM;;CAG3DC,eACJC,YAKkB;AAClB,MAAI,CAACA,WAAWC,KAAM,QAAOC,KAAAA;AAC7B,SAAO,GAAGF,WAAWC,KAAK,GAAGD,WAAWG,YAAY,GAAG,GAAGH,WAAWI,aAAa;;CAG9EV,cASJF,QACAH,QACe;AACf,MAAI,CAACA,OAAQ,QAAOG;AACpB,MAAI,CAACA,OAAQ,QAAO,CAAA,GAAIH,OAAO;EAE/B,MAAMgB,SAAS,CAAA,GAAIb,OAAO;AAC1BH,SAAOiB,SAASC,SAAAA;GACZ,MAAMC,MAAM,KAAKT,eAAeQ,KAAKP,WAAU;AAC/C,OAAI,CAACQ,KAAK;AACNH,WAAOI,KAAKF,KAAAA;AACZ;;GAGJ,MAAMG,MAAML,OAAOM,WAAWC,MAAM,KAAKb,eAAea,EAAEZ,WAAU,KAAMQ,IAAAA;AAC1E,OAAIE,QAAQ,GACRL,QAAOK,OAAOH;OAEdF,QAAOI,KAAKF,KAAAA;IAEpB;AACA,SAAOF"}
1
+ {"version":3,"file":"module.mjs","names":["CompositeProvisioningSource","sources","load","container","output","sourcesData","Promise","all","map","source","sourceData","merge","target","policies","mergeEntities","permissions","roles","scopes","realms","buildEntityKey","attributes","name","undefined","realm_id","client_id","result","forEach","item","key","push","idx","findIndex","r"],"sources":["../../../../../../src/app/modules/provisioning/sources/composite/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RootProvisioningEntity } from '../../../../../core/provisioning/entities/root/index.ts';\nimport type { IProvisioningSource } from '../../../../../core/provisioning/types.ts';\nimport type { IContainer } from 'eldin';\n\nexport class CompositeProvisioningSource implements IProvisioningSource {\n protected sources : IProvisioningSource[];\n\n constructor(sources : IProvisioningSource[]) {\n this.sources = sources;\n }\n\n async load(container: IContainer): Promise<RootProvisioningEntity> {\n const output : RootProvisioningEntity = {};\n\n const sourcesData = await Promise.all(\n (this.sources).map((source) => source.load(container)),\n );\n\n sourcesData.map((sourceData) => this.merge(output, sourceData));\n\n return output;\n }\n\n merge(target: RootProvisioningEntity, source: RootProvisioningEntity) {\n target.policies = this.mergeEntities(target.policies, source.policies);\n target.permissions = this.mergeEntities(target.permissions, source.permissions);\n target.roles = this.mergeEntities(target.roles, source.roles);\n target.scopes = this.mergeEntities(target.scopes, source.scopes);\n target.realms = this.mergeEntities(target.realms, source.realms);\n }\n\n private buildEntityKey(\n attributes: {\n name?: string,\n realm_id?: string | null,\n client_id?: string | null\n },\n ): string | undefined {\n if (!attributes.name) return undefined;\n return `${attributes.name}:${attributes.realm_id || ''}:${attributes.client_id || ''}`;\n }\n\n private mergeEntities<\n T extends {\n attributes: {\n name?: string,\n realm_id?: string | null,\n client_id?: string | null\n }\n },\n >(\n target: T[] | undefined,\n source: T[] | undefined,\n ): T[] | undefined {\n if (!source) return target;\n if (!target) return [...source];\n\n const result = [...target];\n source.forEach((item) => {\n const key = this.buildEntityKey(item.attributes);\n if (!key) {\n result.push(item);\n return;\n }\n\n const idx = result.findIndex((r) => this.buildEntityKey(r.attributes) === key);\n if (idx !== -1) {\n result[idx] = item;\n } else {\n result.push(item);\n }\n });\n return result;\n }\n}\n"],"mappings":";AAWA,IAAaA,8BAAb,MAAaA;CACCC;CAEV,YAAYA,SAAiC;EACzC,KAAKA,UAAUA;CACnB;CAEA,MAAMC,KAAKC,WAAwD;EAC/D,MAAMC,SAAkC,CAAC;EAMzCC,CAAAA,MAJ0BC,QAAQC,IAC9B,KAAMN,QAASO,KAAKC,WAAWA,OAAOP,KAAKC,SAAAA,CAAAA,CAAAA,GAGnCK,KAAKE,eAAe,KAAKC,MAAMP,QAAQM,UAAAA,CAAAA;EAEnD,OAAON;CACX;CAEAO,MAAMC,QAAgCH,QAAgC;EAClEG,OAAOC,WAAW,KAAKC,cAAcF,OAAOC,UAAUJ,OAAOI,QAAQ;EACrED,OAAOG,cAAc,KAAKD,cAAcF,OAAOG,aAAaN,OAAOM,WAAW;EAC9EH,OAAOI,QAAQ,KAAKF,cAAcF,OAAOI,OAAOP,OAAOO,KAAK;EAC5DJ,OAAOK,SAAS,KAAKH,cAAcF,OAAOK,QAAQR,OAAOQ,MAAM;EAC/DL,OAAOM,SAAS,KAAKJ,cAAcF,OAAOM,QAAQT,OAAOS,MAAM;CACnE;CAEQC,eACJC,YAKkB;EAClB,IAAI,CAACA,WAAWC,MAAM,OAAOC,KAAAA;EAC7B,OAAO,GAAGF,WAAWC,KAAK,GAAGD,WAAWG,YAAY,GAAG,GAAGH,WAAWI,aAAa;CACtF;CAEQV,cASJF,QACAH,QACe;EACf,IAAI,CAACA,QAAQ,OAAOG;EACpB,IAAI,CAACA,QAAQ,OAAO,CAAA,GAAIH,MAAAA;EAExB,MAAMgB,SAAS,CAAA,GAAIb,MAAAA;EACnBH,OAAOiB,SAASC,SAAAA;GACZ,MAAMC,MAAM,KAAKT,eAAeQ,KAAKP,UAAU;GAC/C,IAAI,CAACQ,KAAK;IACNH,OAAOI,KAAKF,IAAAA;IACZ;GACJ;GAEA,MAAMG,MAAML,OAAOM,WAAWC,MAAM,KAAKb,eAAea,EAAEZ,UAAU,MAAMQ,GAAAA;GAC1E,IAAIE,QAAQ,IACRL,OAAOK,OAAOH;QAEdF,OAAOI,KAAKF,IAAAA;EAEpB,CAAA;EACA,OAAOF;CACX;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["BuiltInPolicyType","DecisionStrategy","SystemPolicyName","PermissionName","REALM_MASTER_NAME","ROLE_ADMIN_NAME","ROLE_REALM_ADMIN_NAME","ScopeName","buildUserFakeEmail","ClientCredentialsService","RobotCredentialsService","UserCredentialsService","ConfigInjectionKey","ProvisioningEntityStrategyType","DefaultProvisioningSource","buildPolicies","attributes","name","DEFAULT","type","COMPOSITE","built_in","realm_id","extraAttributes","decision_strategy","UNANIMOUS","children","IDENTITY","PERMISSION_BINDING","REALM_MATCH","attribute_name","attribute_name_strict","identity_master_match_all","attribute_null_match_all","REALM_BOUND","REALM_OR_GLOBAL","CLIENT_NAMES_SELF_MANAGE","ATTRIBUTE_NAMES","invert","names","ROBOT_NAMES_SELF_MANAGE","USER_NAMES_SELF_MANAGE","buildPermissions","policiesByPermission","CLIENT_SELF_MANAGE","ROBOT_SELF_MANAGE","USER_SELF_MANAGE","Object","values","map","entity","strategy","MERGE","policies","relations","buildScopes","buildRoles","globalPermissions","globalPermissionsExclude","REALM_CREATE","REALM_UPDATE","REALM_DELETE","globalPermissionsPolicyName","globalPermissionsPolicyOverrides","CLIENT_CREATE","CLIENT_UPDATE","CLIENT_DELETE","IDENTITY_PROVIDER_CREATE","IDENTITY_PROVIDER_UPDATE","IDENTITY_PROVIDER_DELETE","PERMISSION_CREATE","PERMISSION_UPDATE","PERMISSION_DELETE","ROBOT_CREATE","ROBOT_UPDATE","ROBOT_DELETE","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","SCOPE_CREATE","SCOPE_UPDATE","SCOPE_DELETE","USER_CREATE","USER_UPDATE","USER_DELETE","buildRealms","config","masterRealm","userCredentialsService","userStrategy","userAdminPasswordReset","users","password","protect","userAdminPassword","email","active","userAdminEnabled","globalRoles","clientCredentialsService","clientStrategy","clientSystemSecretReset","clients","is_confidential","secret","clientSystemSecret","secret_hashed","clientSystemEnabled","robotCredentialsService","robotStrategy","robotAdminSecretReset","robots","robotAdminSecret","robotAdminEnabled","load","container","resolve","permissions","scopes","roles","realms"],"sources":["../../../../../../src/app/modules/provisioning/sources/default/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BuiltInPolicyType, DecisionStrategy, SystemPolicyName } from '@authup/access';\nimport type {\n Client, \n Permission, \n Robot, \n Role, \n Scope, \n User,\n} from '@authup/core-kit';\nimport {\n PermissionName, \n REALM_MASTER_NAME, \n ROLE_ADMIN_NAME, \n ROLE_REALM_ADMIN_NAME, \n ScopeName, \n buildUserFakeEmail,\n} from '@authup/core-kit';\nimport type { IContainer } from 'eldin';\nimport {\n ClientCredentialsService,\n RobotCredentialsService,\n UserCredentialsService,\n} from '../../../../../core/index.ts';\nimport type { Config } from '../../../config/index.ts';\nimport { ConfigInjectionKey } from '../../../config/index.ts';\nimport type { PermissionProvisioningEntity } from '../../../../../core/provisioning/entities/permission/index.ts';\nimport type { PolicyProvisioningEntity } from '../../../../../core/provisioning/entities/policy/index.ts';\nimport type { RealmProvisioningEntity } from '../../../../../core/provisioning/entities/realm/index.ts';\nimport type { RoleProvisioningEntity } from '../../../../../core/provisioning/entities/role/index.ts';\nimport type { RootProvisioningEntity } from '../../../../../core/provisioning/entities/root/index.ts';\nimport type { ScopeProvisioningEntity } from '../../../../../core/provisioning/entities/scope/index.ts';\nimport type { ProvisioningEntityStrategy } from '../../../../../core/provisioning/strategy/index.ts';\nimport { ProvisioningEntityStrategyType } from '../../../../../core/provisioning/strategy/index.ts';\nimport type { IProvisioningSource } from '../../../../../core/provisioning/types.ts';\n\nexport class DefaultProvisioningSource implements IProvisioningSource {\n buildPolicies(): PolicyProvisioningEntity[] {\n return [\n {\n attributes: {\n name: SystemPolicyName.DEFAULT,\n type: BuiltInPolicyType.COMPOSITE,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: { decision_strategy: DecisionStrategy.UNANIMOUS },\n children: [\n {\n attributes: {\n name: SystemPolicyName.IDENTITY,\n type: BuiltInPolicyType.IDENTITY,\n built_in: true,\n realm_id: null,\n },\n },\n {\n attributes: {\n name: SystemPolicyName.PERMISSION_BINDING,\n type: BuiltInPolicyType.PERMISSION_BINDING,\n built_in: true,\n realm_id: null,\n },\n },\n {\n attributes: {\n name: SystemPolicyName.REALM_MATCH,\n type: BuiltInPolicyType.REALM_MATCH,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n attribute_name: ['realm_id'],\n attribute_name_strict: false,\n identity_master_match_all: false,\n attribute_null_match_all: true,\n },\n },\n ],\n },\n {\n attributes: {\n name: SystemPolicyName.REALM_BOUND,\n type: BuiltInPolicyType.REALM_MATCH,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n attribute_name: ['realm_id'],\n attribute_name_strict: false,\n attribute_null_match_all: false,\n identity_master_match_all: false,\n },\n },\n {\n attributes: {\n name: SystemPolicyName.REALM_OR_GLOBAL,\n type: BuiltInPolicyType.REALM_MATCH,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n attribute_name: ['realm_id'],\n attribute_name_strict: false,\n attribute_null_match_all: true,\n identity_master_match_all: false,\n },\n },\n // Self-manage policies use ATTRIBUTE_NAMES + invert: true (denylist).\n // Each `names` entry is what self-edit must REJECT; everything else\n // is permitted. New columns added to the entity are self-editable\n // by default — extend the denylist when adding admin-only state.\n {\n attributes: {\n name: SystemPolicyName.CLIENT_NAMES_SELF_MANAGE,\n type: BuiltInPolicyType.ATTRIBUTE_NAMES,\n invert: true,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n names: [\n // FK + lifecycle\n 'active',\n 'realm_id',\n // Security-critical: a self-edit must not change the\n // client's confidentiality (toggling this clears the\n // secret) or downgrade the secret-storage format\n // (which would persist the secret in plaintext).\n 'is_confidential',\n 'secret_hashed',\n 'secret_encrypted',\n ],\n },\n },\n {\n attributes: {\n name: SystemPolicyName.ROBOT_NAMES_SELF_MANAGE,\n type: BuiltInPolicyType.ATTRIBUTE_NAMES,\n invert: true,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n names: [\n 'active',\n 'realm_id',\n 'user_id',\n ],\n },\n },\n {\n attributes: {\n name: SystemPolicyName.USER_NAMES_SELF_MANAGE,\n type: BuiltInPolicyType.ATTRIBUTE_NAMES,\n invert: true,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n names: [\n 'active',\n 'name_locked',\n 'status',\n 'status_message',\n 'realm_id',\n ],\n },\n },\n ];\n }\n\n buildPermissions(): PermissionProvisioningEntity[] {\n const policiesByPermission: Partial<Record<string, string[]>> = {\n [PermissionName.CLIENT_SELF_MANAGE]: [SystemPolicyName.DEFAULT, SystemPolicyName.CLIENT_NAMES_SELF_MANAGE],\n [PermissionName.ROBOT_SELF_MANAGE]: [SystemPolicyName.DEFAULT, SystemPolicyName.ROBOT_NAMES_SELF_MANAGE],\n [PermissionName.USER_SELF_MANAGE]: [SystemPolicyName.DEFAULT, SystemPolicyName.USER_NAMES_SELF_MANAGE],\n };\n\n return Object.values(PermissionName)\n .map((name) => {\n const entity: PermissionProvisioningEntity = {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Permission)[],\n },\n attributes: {\n name,\n built_in: true,\n },\n };\n\n const policies = policiesByPermission[name];\n if (policies) {\n entity.relations = { policies };\n }\n\n return entity;\n });\n }\n\n buildScopes(): ScopeProvisioningEntity[] {\n return Object.values(ScopeName)\n .map((name) => ({\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Scope)[],\n },\n attributes: {\n name,\n built_in: true,\n },\n }));\n }\n\n buildRoles(): RoleProvisioningEntity[] {\n return [\n {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Role)[],\n },\n attributes: {\n name: ROLE_ADMIN_NAME,\n built_in: true,\n },\n relations: { globalPermissions: ['*'] },\n },\n {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Role)[],\n },\n attributes: {\n name: ROLE_REALM_ADMIN_NAME,\n built_in: true,\n },\n relations: {\n globalPermissions: ['*'],\n globalPermissionsExclude: [\n PermissionName.REALM_CREATE,\n PermissionName.REALM_UPDATE,\n PermissionName.REALM_DELETE,\n ],\n globalPermissionsPolicyName: SystemPolicyName.REALM_OR_GLOBAL,\n globalPermissionsPolicyOverrides: {\n [SystemPolicyName.REALM_BOUND]: [\n PermissionName.CLIENT_CREATE,\n PermissionName.CLIENT_UPDATE,\n PermissionName.CLIENT_DELETE,\n PermissionName.IDENTITY_PROVIDER_CREATE,\n PermissionName.IDENTITY_PROVIDER_UPDATE,\n PermissionName.IDENTITY_PROVIDER_DELETE,\n PermissionName.PERMISSION_CREATE,\n PermissionName.PERMISSION_UPDATE,\n PermissionName.PERMISSION_DELETE,\n PermissionName.ROBOT_CREATE,\n PermissionName.ROBOT_UPDATE,\n PermissionName.ROBOT_DELETE,\n PermissionName.ROLE_CREATE,\n PermissionName.ROLE_UPDATE,\n PermissionName.ROLE_DELETE,\n PermissionName.SCOPE_CREATE,\n PermissionName.SCOPE_UPDATE,\n PermissionName.SCOPE_DELETE,\n PermissionName.USER_CREATE,\n PermissionName.USER_UPDATE,\n PermissionName.USER_DELETE,\n ],\n },\n },\n },\n ];\n }\n\n async buildRealms(config: Config): Promise<RealmProvisioningEntity[]> {\n const masterRealm : RealmProvisioningEntity = {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'],\n },\n attributes: {\n name: REALM_MASTER_NAME,\n built_in: true,\n },\n relations: {},\n };\n\n const userCredentialsService = new UserCredentialsService();\n\n let userStrategy : ProvisioningEntityStrategy<User> | undefined;\n if (config.userAdminPasswordReset) {\n userStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['password'],\n };\n }\n\n masterRealm.relations = masterRealm.relations || {};\n masterRealm.relations.users = [\n {\n strategy: userStrategy,\n attributes: {\n name: 'admin',\n password: await userCredentialsService.protect(config.userAdminPassword),\n email: buildUserFakeEmail('admin'),\n active: config.userAdminEnabled,\n },\n relations: { globalRoles: [ROLE_ADMIN_NAME] },\n },\n ];\n\n const clientCredentialsService = new ClientCredentialsService();\n\n let clientStrategy : ProvisioningEntityStrategy<Client> | undefined;\n if (config.clientSystemSecretReset) {\n clientStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in', 'is_confidential', 'secret', 'secret_hashed', 'secret_encrypted'],\n };\n } else {\n clientStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in', 'is_confidential'],\n };\n }\n\n masterRealm.relations = masterRealm.relations || {};\n masterRealm.relations.clients = [\n {\n strategy: clientStrategy,\n attributes: {\n built_in: true,\n is_confidential: true,\n name: 'system',\n secret: await clientCredentialsService.protect(config.clientSystemSecret, { secret_hashed: false }),\n secret_hashed: false,\n active: config.clientSystemEnabled,\n },\n relations: { globalRoles: [ROLE_ADMIN_NAME] },\n },\n ];\n\n const robotCredentialsService = new RobotCredentialsService();\n\n let robotStrategy : ProvisioningEntityStrategy<Robot> | undefined;\n if (config.robotAdminSecretReset) {\n robotStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['secret'],\n };\n }\n\n masterRealm.relations = masterRealm.relations || {};\n masterRealm.relations.robots = [\n {\n strategy: robotStrategy,\n attributes: {\n name: 'system',\n secret: await robotCredentialsService.protect(config.robotAdminSecret),\n active: config.robotAdminEnabled,\n },\n relations: { globalRoles: [ROLE_ADMIN_NAME] },\n },\n ];\n\n return [masterRealm];\n }\n\n async load(container: IContainer): Promise<RootProvisioningEntity> {\n const config = container.resolve(ConfigInjectionKey);\n\n return {\n policies: this.buildPolicies(),\n permissions: this.buildPermissions(),\n scopes: this.buildScopes(),\n roles: this.buildRoles(),\n realms: await this.buildRealms(config),\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["BuiltInPolicyType","DecisionStrategy","SystemPolicyName","PermissionName","REALM_MASTER_NAME","ROLE_ADMIN_NAME","ROLE_REALM_ADMIN_NAME","ScopeName","buildUserFakeEmail","ClientCredentialsService","RobotCredentialsService","UserCredentialsService","ConfigInjectionKey","ProvisioningEntityStrategyType","DefaultProvisioningSource","buildPolicies","attributes","name","DEFAULT","type","COMPOSITE","built_in","realm_id","extraAttributes","decision_strategy","UNANIMOUS","children","IDENTITY","PERMISSION_BINDING","REALM_MATCH","attribute_name","attribute_name_strict","identity_master_match_all","attribute_null_match_all","REALM_BOUND","REALM_OR_GLOBAL","CLIENT_NAMES_SELF_MANAGE","ATTRIBUTE_NAMES","invert","names","ROBOT_NAMES_SELF_MANAGE","USER_NAMES_SELF_MANAGE","buildPermissions","policiesByPermission","CLIENT_SELF_MANAGE","ROBOT_SELF_MANAGE","USER_SELF_MANAGE","Object","values","map","entity","strategy","MERGE","policies","relations","buildScopes","buildRoles","globalPermissions","globalPermissionsExclude","REALM_CREATE","REALM_UPDATE","REALM_DELETE","globalPermissionsPolicyName","globalPermissionsPolicyOverrides","CLIENT_CREATE","CLIENT_UPDATE","CLIENT_DELETE","IDENTITY_PROVIDER_CREATE","IDENTITY_PROVIDER_UPDATE","IDENTITY_PROVIDER_DELETE","PERMISSION_CREATE","PERMISSION_UPDATE","PERMISSION_DELETE","ROBOT_CREATE","ROBOT_UPDATE","ROBOT_DELETE","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","SCOPE_CREATE","SCOPE_UPDATE","SCOPE_DELETE","USER_CREATE","USER_UPDATE","USER_DELETE","buildRealms","config","masterRealm","userCredentialsService","userStrategy","userAdminPasswordReset","users","password","protect","userAdminPassword","email","active","userAdminEnabled","globalRoles","clientCredentialsService","clientStrategy","clientSystemSecretReset","clients","is_confidential","secret","clientSystemSecret","secret_hashed","clientSystemEnabled","robotCredentialsService","robotStrategy","robotAdminSecretReset","robots","robotAdminSecret","robotAdminEnabled","load","container","resolve","permissions","scopes","roles","realms"],"sources":["../../../../../../src/app/modules/provisioning/sources/default/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BuiltInPolicyType, DecisionStrategy, SystemPolicyName } from '@authup/access';\nimport type {\n Client, \n Permission, \n Robot, \n Role, \n Scope, \n User,\n} from '@authup/core-kit';\nimport {\n PermissionName, \n REALM_MASTER_NAME, \n ROLE_ADMIN_NAME, \n ROLE_REALM_ADMIN_NAME, \n ScopeName, \n buildUserFakeEmail,\n} from '@authup/core-kit';\nimport type { IContainer } from 'eldin';\nimport {\n ClientCredentialsService,\n RobotCredentialsService,\n UserCredentialsService,\n} from '../../../../../core/index.ts';\nimport type { Config } from '../../../config/index.ts';\nimport { ConfigInjectionKey } from '../../../config/index.ts';\nimport type { PermissionProvisioningEntity } from '../../../../../core/provisioning/entities/permission/index.ts';\nimport type { PolicyProvisioningEntity } from '../../../../../core/provisioning/entities/policy/index.ts';\nimport type { RealmProvisioningEntity } from '../../../../../core/provisioning/entities/realm/index.ts';\nimport type { RoleProvisioningEntity } from '../../../../../core/provisioning/entities/role/index.ts';\nimport type { RootProvisioningEntity } from '../../../../../core/provisioning/entities/root/index.ts';\nimport type { ScopeProvisioningEntity } from '../../../../../core/provisioning/entities/scope/index.ts';\nimport type { ProvisioningEntityStrategy } from '../../../../../core/provisioning/strategy/index.ts';\nimport { ProvisioningEntityStrategyType } from '../../../../../core/provisioning/strategy/index.ts';\nimport type { IProvisioningSource } from '../../../../../core/provisioning/types.ts';\n\nexport class DefaultProvisioningSource implements IProvisioningSource {\n buildPolicies(): PolicyProvisioningEntity[] {\n return [\n {\n attributes: {\n name: SystemPolicyName.DEFAULT,\n type: BuiltInPolicyType.COMPOSITE,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: { decision_strategy: DecisionStrategy.UNANIMOUS },\n children: [\n {\n attributes: {\n name: SystemPolicyName.IDENTITY,\n type: BuiltInPolicyType.IDENTITY,\n built_in: true,\n realm_id: null,\n },\n },\n {\n attributes: {\n name: SystemPolicyName.PERMISSION_BINDING,\n type: BuiltInPolicyType.PERMISSION_BINDING,\n built_in: true,\n realm_id: null,\n },\n },\n {\n attributes: {\n name: SystemPolicyName.REALM_MATCH,\n type: BuiltInPolicyType.REALM_MATCH,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n attribute_name: ['realm_id'],\n attribute_name_strict: false,\n identity_master_match_all: false,\n attribute_null_match_all: true,\n },\n },\n ],\n },\n {\n attributes: {\n name: SystemPolicyName.REALM_BOUND,\n type: BuiltInPolicyType.REALM_MATCH,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n attribute_name: ['realm_id'],\n attribute_name_strict: false,\n attribute_null_match_all: false,\n identity_master_match_all: false,\n },\n },\n {\n attributes: {\n name: SystemPolicyName.REALM_OR_GLOBAL,\n type: BuiltInPolicyType.REALM_MATCH,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n attribute_name: ['realm_id'],\n attribute_name_strict: false,\n attribute_null_match_all: true,\n identity_master_match_all: false,\n },\n },\n // Self-manage policies use ATTRIBUTE_NAMES + invert: true (denylist).\n // Each `names` entry is what self-edit must REJECT; everything else\n // is permitted. New columns added to the entity are self-editable\n // by default — extend the denylist when adding admin-only state.\n {\n attributes: {\n name: SystemPolicyName.CLIENT_NAMES_SELF_MANAGE,\n type: BuiltInPolicyType.ATTRIBUTE_NAMES,\n invert: true,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n names: [\n // FK + lifecycle\n 'active',\n 'realm_id',\n // Security-critical: a self-edit must not change the\n // client's confidentiality (toggling this clears the\n // secret) or downgrade the secret-storage format\n // (which would persist the secret in plaintext).\n 'is_confidential',\n 'secret_hashed',\n 'secret_encrypted',\n ],\n },\n },\n {\n attributes: {\n name: SystemPolicyName.ROBOT_NAMES_SELF_MANAGE,\n type: BuiltInPolicyType.ATTRIBUTE_NAMES,\n invert: true,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n names: [\n 'active',\n 'realm_id',\n 'user_id',\n ],\n },\n },\n {\n attributes: {\n name: SystemPolicyName.USER_NAMES_SELF_MANAGE,\n type: BuiltInPolicyType.ATTRIBUTE_NAMES,\n invert: true,\n built_in: true,\n realm_id: null,\n },\n extraAttributes: {\n names: [\n 'active',\n 'name_locked',\n 'status',\n 'status_message',\n 'realm_id',\n ],\n },\n },\n ];\n }\n\n buildPermissions(): PermissionProvisioningEntity[] {\n const policiesByPermission: Partial<Record<string, string[]>> = {\n [PermissionName.CLIENT_SELF_MANAGE]: [SystemPolicyName.DEFAULT, SystemPolicyName.CLIENT_NAMES_SELF_MANAGE],\n [PermissionName.ROBOT_SELF_MANAGE]: [SystemPolicyName.DEFAULT, SystemPolicyName.ROBOT_NAMES_SELF_MANAGE],\n [PermissionName.USER_SELF_MANAGE]: [SystemPolicyName.DEFAULT, SystemPolicyName.USER_NAMES_SELF_MANAGE],\n };\n\n return Object.values(PermissionName)\n .map((name) => {\n const entity: PermissionProvisioningEntity = {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Permission)[],\n },\n attributes: {\n name,\n built_in: true,\n },\n };\n\n const policies = policiesByPermission[name];\n if (policies) {\n entity.relations = { policies };\n }\n\n return entity;\n });\n }\n\n buildScopes(): ScopeProvisioningEntity[] {\n return Object.values(ScopeName)\n .map((name) => ({\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Scope)[],\n },\n attributes: {\n name,\n built_in: true,\n },\n }));\n }\n\n buildRoles(): RoleProvisioningEntity[] {\n return [\n {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Role)[],\n },\n attributes: {\n name: ROLE_ADMIN_NAME,\n built_in: true,\n },\n relations: { globalPermissions: ['*'] },\n },\n {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'] as (keyof Role)[],\n },\n attributes: {\n name: ROLE_REALM_ADMIN_NAME,\n built_in: true,\n },\n relations: {\n globalPermissions: ['*'],\n globalPermissionsExclude: [\n PermissionName.REALM_CREATE,\n PermissionName.REALM_UPDATE,\n PermissionName.REALM_DELETE,\n ],\n globalPermissionsPolicyName: SystemPolicyName.REALM_OR_GLOBAL,\n globalPermissionsPolicyOverrides: {\n [SystemPolicyName.REALM_BOUND]: [\n PermissionName.CLIENT_CREATE,\n PermissionName.CLIENT_UPDATE,\n PermissionName.CLIENT_DELETE,\n PermissionName.IDENTITY_PROVIDER_CREATE,\n PermissionName.IDENTITY_PROVIDER_UPDATE,\n PermissionName.IDENTITY_PROVIDER_DELETE,\n PermissionName.PERMISSION_CREATE,\n PermissionName.PERMISSION_UPDATE,\n PermissionName.PERMISSION_DELETE,\n PermissionName.ROBOT_CREATE,\n PermissionName.ROBOT_UPDATE,\n PermissionName.ROBOT_DELETE,\n PermissionName.ROLE_CREATE,\n PermissionName.ROLE_UPDATE,\n PermissionName.ROLE_DELETE,\n PermissionName.SCOPE_CREATE,\n PermissionName.SCOPE_UPDATE,\n PermissionName.SCOPE_DELETE,\n PermissionName.USER_CREATE,\n PermissionName.USER_UPDATE,\n PermissionName.USER_DELETE,\n ],\n },\n },\n },\n ];\n }\n\n async buildRealms(config: Config): Promise<RealmProvisioningEntity[]> {\n const masterRealm : RealmProvisioningEntity = {\n strategy: {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in'],\n },\n attributes: {\n name: REALM_MASTER_NAME,\n built_in: true,\n },\n relations: {},\n };\n\n const userCredentialsService = new UserCredentialsService();\n\n let userStrategy : ProvisioningEntityStrategy<User> | undefined;\n if (config.userAdminPasswordReset) {\n userStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['password'],\n };\n }\n\n masterRealm.relations = masterRealm.relations || {};\n masterRealm.relations.users = [\n {\n strategy: userStrategy,\n attributes: {\n name: 'admin',\n password: await userCredentialsService.protect(config.userAdminPassword),\n email: buildUserFakeEmail('admin'),\n active: config.userAdminEnabled,\n },\n relations: { globalRoles: [ROLE_ADMIN_NAME] },\n },\n ];\n\n const clientCredentialsService = new ClientCredentialsService();\n\n let clientStrategy : ProvisioningEntityStrategy<Client> | undefined;\n if (config.clientSystemSecretReset) {\n clientStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in', 'is_confidential', 'secret', 'secret_hashed', 'secret_encrypted'],\n };\n } else {\n clientStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['built_in', 'is_confidential'],\n };\n }\n\n masterRealm.relations = masterRealm.relations || {};\n masterRealm.relations.clients = [\n {\n strategy: clientStrategy,\n attributes: {\n built_in: true,\n is_confidential: true,\n name: 'system',\n secret: await clientCredentialsService.protect(config.clientSystemSecret, { secret_hashed: false }),\n secret_hashed: false,\n active: config.clientSystemEnabled,\n },\n relations: { globalRoles: [ROLE_ADMIN_NAME] },\n },\n ];\n\n const robotCredentialsService = new RobotCredentialsService();\n\n let robotStrategy : ProvisioningEntityStrategy<Robot> | undefined;\n if (config.robotAdminSecretReset) {\n robotStrategy = {\n type: ProvisioningEntityStrategyType.MERGE,\n attributes: ['secret'],\n };\n }\n\n masterRealm.relations = masterRealm.relations || {};\n masterRealm.relations.robots = [\n {\n strategy: robotStrategy,\n attributes: {\n name: 'system',\n secret: await robotCredentialsService.protect(config.robotAdminSecret),\n active: config.robotAdminEnabled,\n },\n relations: { globalRoles: [ROLE_ADMIN_NAME] },\n },\n ];\n\n return [masterRealm];\n }\n\n async load(container: IContainer): Promise<RootProvisioningEntity> {\n const config = container.resolve(ConfigInjectionKey);\n\n return {\n policies: this.buildPolicies(),\n permissions: this.buildPermissions(),\n scopes: this.buildScopes(),\n roles: this.buildRoles(),\n realms: await this.buildRealms(config),\n };\n }\n}\n"],"mappings":";;;;;;;;;;;AA0CA,IAAac,4BAAb,MAAaA;CACTC,gBAA4C;EACxC,OAAO;GACH;IACIC,YAAY;KACRC,MAAMf,iBAAiBgB;KACvBC,MAAMnB,kBAAkBoB;KACxBC,UAAU;KACVC,UAAU;IACd;IACAC,iBAAiB,EAAEC,mBAAmBvB,iBAAiBwB,UAAU;IACjEC,UAAU;KACN,EACIV,YAAY;MACRC,MAAMf,iBAAiByB;MACvBR,MAAMnB,kBAAkB2B;MACxBN,UAAU;MACVC,UAAU;KACd,EACJ;KACA,EACIN,YAAY;MACRC,MAAMf,iBAAiB0B;MACvBT,MAAMnB,kBAAkB4B;MACxBP,UAAU;MACVC,UAAU;KACd,EACJ;KACA;MACIN,YAAY;OACRC,MAAMf,iBAAiB2B;OACvBV,MAAMnB,kBAAkB6B;OACxBR,UAAU;OACVC,UAAU;MACd;MACAC,iBAAiB;OACbO,gBAAgB,CAAC,UAAA;OACjBC,uBAAuB;OACvBC,2BAA2B;OAC3BC,0BAA0B;MAC9B;KACJ;;GAER;GACA;IACIjB,YAAY;KACRC,MAAMf,iBAAiBgC;KACvBf,MAAMnB,kBAAkB6B;KACxBR,UAAU;KACVC,UAAU;IACd;IACAC,iBAAiB;KACbO,gBAAgB,CAAC,UAAA;KACjBC,uBAAuB;KACvBE,0BAA0B;KAC1BD,2BAA2B;IAC/B;GACJ;GACA;IACIhB,YAAY;KACRC,MAAMf,iBAAiBiC;KACvBhB,MAAMnB,kBAAkB6B;KACxBR,UAAU;KACVC,UAAU;IACd;IACAC,iBAAiB;KACbO,gBAAgB,CAAC,UAAA;KACjBC,uBAAuB;KACvBE,0BAA0B;KAC1BD,2BAA2B;IAC/B;GACJ;GAKA;IACIhB,YAAY;KACRC,MAAMf,iBAAiBkC;KACvBjB,MAAMnB,kBAAkBqC;KACxBC,QAAQ;KACRjB,UAAU;KACVC,UAAU;IACd;IACAC,iBAAiB,EACbgB,OAAO;KAEH;KACA;KAKA;KACA;KACA;MAER;GACJ;GACA;IACIvB,YAAY;KACRC,MAAMf,iBAAiBsC;KACvBrB,MAAMnB,kBAAkBqC;KACxBC,QAAQ;KACRjB,UAAU;KACVC,UAAU;IACd;IACAC,iBAAiB,EACbgB,OAAO;KACH;KACA;KACA;MAER;GACJ;GACA;IACIvB,YAAY;KACRC,MAAMf,iBAAiBuC;KACvBtB,MAAMnB,kBAAkBqC;KACxBC,QAAQ;KACRjB,UAAU;KACVC,UAAU;IACd;IACAC,iBAAiB,EACbgB,OAAO;KACH;KACA;KACA;KACA;KACA;MAER;GACJ;;CAER;CAEAG,mBAAmD;EAC/C,MAAMC,uBAA0D;IAC3DxC,eAAeyC,qBAAqB,CAAC1C,iBAAiBgB,SAAShB,iBAAiBkC,wBAAAA;IAChFjC,eAAe0C,oBAAoB,CAAC3C,iBAAiBgB,SAAShB,iBAAiBsC,uBAAAA;IAC/ErC,eAAe2C,mBAAmB,CAAC5C,iBAAiBgB,SAAShB,iBAAiBuC,sBAAAA;EACnF;EAEA,OAAOM,OAAOC,OAAO7C,cAAAA,EAChB8C,KAAKhC,SAAAA;GACF,MAAMiC,SAAuC;IACzCC,UAAU;KACNhC,MAAMN,+BAA+BuC;KACrCpC,YAAY,CAAC,UAAA;IACjB;IACAA,YAAY;KACRC;KACAI,UAAU;IACd;GACJ;GAEA,MAAMgC,WAAWV,qBAAqB1B;GACtC,IAAIoC,UACAH,OAAOI,YAAY,EAAED,SAAS;GAGlC,OAAOH;EACX,CAAA;CACR;CAEAK,cAAyC;EACrC,OAAOR,OAAOC,OAAOzC,SAAAA,EAChB0C,KAAKhC,UAAU;GACZkC,UAAU;IACNhC,MAAMN,+BAA+BuC;IACrCpC,YAAY,CAAC,UAAA;GACjB;GACAA,YAAY;IACRC;IACAI,UAAU;GACd;EACJ,EAAA;CACR;CAEAmC,aAAuC;EACnC,OAAO,CACH;GACIL,UAAU;IACNhC,MAAMN,+BAA+BuC;IACrCpC,YAAY,CAAC,UAAA;GACjB;GACAA,YAAY;IACRC,MAAMZ;IACNgB,UAAU;GACd;GACAiC,WAAW,EAAEG,mBAAmB,CAAC,GAAA,EAAK;EAC1C,GACA;GACIN,UAAU;IACNhC,MAAMN,+BAA+BuC;IACrCpC,YAAY,CAAC,UAAA;GACjB;GACAA,YAAY;IACRC,MAAMX;IACNe,UAAU;GACd;GACAiC,WAAW;IACPG,mBAAmB,CAAC,GAAA;IACpBC,0BAA0B;KACtBvD,eAAewD;KACfxD,eAAeyD;KACfzD,eAAe0D;;IAEnBC,6BAA6B5D,iBAAiBiC;IAC9C4B,kCAAkC,GAC7B7D,iBAAiBgC,cAAc;KAC5B/B,eAAe6D;KACf7D,eAAe8D;KACf9D,eAAe+D;KACf/D,eAAegE;KACfhE,eAAeiE;KACfjE,eAAekE;KACflE,eAAemE;KACfnE,eAAeoE;KACfpE,eAAeqE;KACfrE,eAAesE;KACftE,eAAeuE;KACfvE,eAAewE;KACfxE,eAAeyE;KACfzE,eAAe0E;KACf1E,eAAe2E;KACf3E,eAAe4E;KACf5E,eAAe6E;KACf7E,eAAe8E;KACf9E,eAAe+E;KACf/E,eAAegF;KACfhF,eAAeiF;MAEvB;GACJ;EACJ,CAAA;CAER;CAEA,MAAMC,YAAYC,QAAoD;EAClE,MAAMC,cAAwC;GAC1CpC,UAAU;IACNhC,MAAMN,+BAA+BuC;IACrCpC,YAAY,CAAC,UAAA;GACjB;GACAA,YAAY;IACRC,MAAMb;IACNiB,UAAU;GACd;GACAiC,WAAW,CAAC;EAChB;EAEA,MAAMkC,yBAAyB,IAAI7E,uBAAAA;EAEnC,IAAI8E;EACJ,IAAIH,OAAOI,wBACPD,eAAe;GACXtE,MAAMN,+BAA+BuC;GACrCpC,YAAY,CAAC,UAAA;EACjB;EAGJuE,YAAYjC,YAAYiC,YAAYjC,aAAa,CAAC;EAClDiC,YAAYjC,UAAUqC,QAAQ,CAC1B;GACIxC,UAAUsC;GACVzE,YAAY;IACRC,MAAM;IACN2E,UAAU,MAAMJ,uBAAuBK,QAAQP,OAAOQ,iBAAiB;IACvEC,OAAOvF,mBAAmB,OAAA;IAC1BwF,QAAQV,OAAOW;GACnB;GACA3C,WAAW,EAAE4C,aAAa,CAAC7F,eAAAA,EAAiB;EAChD,CAAA;EAGJ,MAAM8F,2BAA2B,IAAI1F,yBAAAA;EAErC,IAAI2F;EACJ,IAAId,OAAOe,yBACPD,iBAAiB;GACbjF,MAAMN,+BAA+BuC;GACrCpC,YAAY;IAAC;IAAY;IAAmB;IAAU;IAAiB;;EAC3E;OAEAoF,iBAAiB;GACbjF,MAAMN,+BAA+BuC;GACrCpC,YAAY,CAAC,YAAY,iBAAA;EAC7B;EAGJuE,YAAYjC,YAAYiC,YAAYjC,aAAa,CAAC;EAClDiC,YAAYjC,UAAUgD,UAAU,CAC5B;GACInD,UAAUiD;GACVpF,YAAY;IACRK,UAAU;IACVkF,iBAAiB;IACjBtF,MAAM;IACNuF,QAAQ,MAAML,yBAAyBN,QAAQP,OAAOmB,oBAAoB,EAAEC,eAAe,MAAM,CAAA;IACjGA,eAAe;IACfV,QAAQV,OAAOqB;GACnB;GACArD,WAAW,EAAE4C,aAAa,CAAC7F,eAAAA,EAAiB;EAChD,CAAA;EAGJ,MAAMuG,0BAA0B,IAAIlG,wBAAAA;EAEpC,IAAImG;EACJ,IAAIvB,OAAOwB,uBACPD,gBAAgB;GACZ1F,MAAMN,+BAA+BuC;GACrCpC,YAAY,CAAC,QAAA;EACjB;EAGJuE,YAAYjC,YAAYiC,YAAYjC,aAAa,CAAC;EAClDiC,YAAYjC,UAAUyD,SAAS,CAC3B;GACI5D,UAAU0D;GACV7F,YAAY;IACRC,MAAM;IACNuF,QAAQ,MAAMI,wBAAwBf,QAAQP,OAAO0B,gBAAgB;IACrEhB,QAAQV,OAAO2B;GACnB;GACA3D,WAAW,EAAE4C,aAAa,CAAC7F,eAAAA,EAAiB;EAChD,CAAA;EAGJ,OAAO,CAACkF,WAAAA;CACZ;CAEA,MAAM2B,KAAKC,WAAwD;EAC/D,MAAM7B,SAAS6B,UAAUC,QAAQxG,kBAAAA;EAEjC,OAAO;GACHyC,UAAU,KAAKtC,cAAa;GAC5BsG,aAAa,KAAK3E,iBAAgB;GAClC4E,QAAQ,KAAK/D,YAAW;GACxBgE,OAAO,KAAK/D,WAAU;GACtBgE,QAAQ,MAAM,KAAKnC,YAAYC,MAAAA;EACnC;CACJ;AACJ"}