@authup/server-core 1.0.0-beta.57 → 1.0.0-beta.59

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 (416) hide show
  1. package/dist/adapters/database/logger/module.mjs +2 -4
  2. package/dist/adapters/database/logger/module.mjs.map +1 -1
  3. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  4. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +1 -1
  5. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  6. package/dist/adapters/http/controllers/index.mjs +2 -1
  7. package/dist/adapters/http/controllers/workflows/account/index.d.ts +2 -0
  8. package/dist/adapters/http/controllers/workflows/account/index.d.ts.map +1 -0
  9. package/dist/adapters/http/controllers/workflows/account/index.mjs +5 -0
  10. package/dist/adapters/http/controllers/workflows/account/module.d.ts +24 -0
  11. package/dist/adapters/http/controllers/workflows/account/module.d.ts.map +1 -0
  12. package/dist/adapters/http/controllers/workflows/account/module.mjs +63 -0
  13. package/dist/adapters/http/controllers/workflows/account/module.mjs.map +1 -0
  14. package/dist/adapters/http/controllers/workflows/activate/module.mjs +1 -1
  15. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +2 -2
  16. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  17. package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
  18. package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
  19. package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
  20. package/dist/adapters/http/controllers/workflows/logout/module.mjs +2 -2
  21. package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -1
  22. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +1 -1
  23. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +1 -1
  24. package/dist/adapters/http/controllers/workflows/register/module.mjs +1 -1
  25. package/dist/adapters/http/controllers/workflows/userinfo/module.d.ts.map +1 -1
  26. package/dist/adapters/http/controllers/workflows/userinfo/module.mjs +5 -1
  27. package/dist/adapters/http/controllers/workflows/userinfo/module.mjs.map +1 -1
  28. package/dist/adapters/http/index.mjs +3 -1
  29. package/dist/adapters/http/middleware/built-in/assets.d.ts +8 -1
  30. package/dist/adapters/http/middleware/built-in/assets.d.ts.map +1 -1
  31. package/dist/adapters/http/middleware/built-in/assets.mjs +48 -4
  32. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  33. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +2 -1
  34. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  35. package/dist/adapters/http/middleware/built-in/index.d.ts +2 -0
  36. package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
  37. package/dist/adapters/http/middleware/built-in/index.mjs +2 -1
  38. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +2 -2
  39. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  40. package/dist/adapters/http/middleware/built-in/theme.d.ts +15 -0
  41. package/dist/adapters/http/middleware/built-in/theme.d.ts.map +1 -0
  42. package/dist/adapters/http/middleware/built-in/theme.mjs +27 -0
  43. package/dist/adapters/http/middleware/built-in/theme.mjs.map +1 -0
  44. package/dist/adapters/http/middleware/built-in/types.d.ts +14 -0
  45. package/dist/adapters/http/middleware/built-in/types.d.ts.map +1 -0
  46. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +1 -1
  47. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +1 -1
  48. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +1 -1
  49. package/dist/adapters/http/middleware/index.mjs +2 -1
  50. package/dist/adapters/http/request/client-certificate.mjs +1 -1
  51. package/dist/adapters/http/request/client-certificate.mjs.map +1 -1
  52. package/dist/adapters/http/request/helpers/locations.mjs +1 -3
  53. package/dist/adapters/http/request/helpers/locations.mjs.map +1 -1
  54. package/dist/adapters/http/ui/account-console/index.d.ts +4 -0
  55. package/dist/adapters/http/ui/account-console/index.d.ts.map +1 -0
  56. package/dist/adapters/http/ui/account-console/index.mjs +6 -0
  57. package/dist/adapters/http/ui/account-console/module.d.ts +28 -0
  58. package/dist/adapters/http/ui/account-console/module.d.ts.map +1 -0
  59. package/dist/adapters/http/ui/account-console/module.mjs +80 -0
  60. package/dist/adapters/http/ui/account-console/module.mjs.map +1 -0
  61. package/dist/adapters/http/ui/account-console/ref.d.ts +30 -0
  62. package/dist/adapters/http/ui/account-console/ref.d.ts.map +1 -0
  63. package/dist/adapters/http/ui/account-console/ref.mjs +50 -0
  64. package/dist/adapters/http/ui/account-console/ref.mjs.map +1 -0
  65. package/dist/adapters/http/ui/account-console/types.d.ts +11 -0
  66. package/dist/adapters/http/ui/account-console/types.d.ts.map +1 -0
  67. package/dist/adapters/http/ui/account-console/types.mjs +4 -0
  68. package/dist/adapters/http/ui/{internal-http-client.d.ts → auth-console/http-client.d.ts} +1 -1
  69. package/dist/adapters/http/ui/auth-console/http-client.d.ts.map +1 -0
  70. package/dist/adapters/http/ui/{internal-http-client.mjs → auth-console/http-client.mjs} +2 -2
  71. package/dist/adapters/http/ui/auth-console/http-client.mjs.map +1 -0
  72. package/dist/adapters/http/ui/auth-console/index.d.ts +6 -0
  73. package/dist/adapters/http/ui/auth-console/index.d.ts.map +1 -0
  74. package/dist/adapters/http/ui/auth-console/index.mjs +8 -0
  75. package/dist/adapters/http/ui/auth-console/module.d.ts +4 -0
  76. package/dist/adapters/http/ui/auth-console/module.d.ts.map +1 -0
  77. package/dist/adapters/http/ui/auth-console/module.mjs +73 -0
  78. package/dist/adapters/http/ui/auth-console/module.mjs.map +1 -0
  79. package/dist/adapters/http/ui/auth-console/resolve.d.ts +21 -0
  80. package/dist/adapters/http/ui/auth-console/resolve.d.ts.map +1 -0
  81. package/dist/adapters/http/ui/auth-console/resolve.mjs +53 -0
  82. package/dist/adapters/http/ui/auth-console/resolve.mjs.map +1 -0
  83. package/dist/adapters/http/ui/{serve.d.ts → auth-console/serve.d.ts} +1 -8
  84. package/dist/adapters/http/ui/auth-console/serve.d.ts.map +1 -0
  85. package/dist/adapters/http/ui/{serve.mjs → auth-console/serve.mjs} +5 -5
  86. package/dist/adapters/http/ui/auth-console/serve.mjs.map +1 -0
  87. package/dist/adapters/http/ui/auth-console/types.d.ts +26 -0
  88. package/dist/adapters/http/ui/auth-console/types.d.ts.map +1 -0
  89. package/dist/adapters/http/ui/auth-console/types.mjs +4 -0
  90. package/dist/adapters/http/ui/console-packages/index.d.ts +3 -0
  91. package/dist/adapters/http/ui/console-packages/index.d.ts.map +1 -0
  92. package/dist/adapters/http/ui/console-packages/index.mjs +5 -0
  93. package/dist/adapters/http/ui/console-packages/module.d.ts +33 -0
  94. package/dist/adapters/http/ui/console-packages/module.d.ts.map +1 -0
  95. package/dist/adapters/http/ui/console-packages/module.mjs +70 -0
  96. package/dist/adapters/http/ui/console-packages/module.mjs.map +1 -0
  97. package/dist/adapters/http/ui/console-packages/types.d.ts +12 -0
  98. package/dist/adapters/http/ui/console-packages/types.d.ts.map +1 -0
  99. package/dist/adapters/http/ui/console-packages/types.mjs +4 -0
  100. package/dist/adapters/http/ui/index.d.ts +5 -5
  101. package/dist/adapters/http/ui/index.d.ts.map +1 -1
  102. package/dist/adapters/http/ui/index.mjs +22 -5
  103. package/dist/adapters/http/ui/shared/html.d.ts +76 -0
  104. package/dist/adapters/http/ui/shared/html.d.ts.map +1 -0
  105. package/dist/adapters/http/ui/shared/html.mjs +103 -0
  106. package/dist/adapters/http/ui/shared/html.mjs.map +1 -0
  107. package/dist/adapters/http/ui/shared/index.d.ts +2 -0
  108. package/dist/adapters/http/ui/shared/index.d.ts.map +1 -0
  109. package/dist/adapters/http/ui/shared/index.mjs +5 -0
  110. package/dist/adapters/http/ui/theme/apply.d.ts +12 -0
  111. package/dist/adapters/http/ui/theme/apply.d.ts.map +1 -0
  112. package/dist/adapters/http/ui/theme/apply.mjs +29 -0
  113. package/dist/adapters/http/ui/theme/apply.mjs.map +1 -0
  114. package/dist/adapters/http/ui/theme/assets.d.ts +20 -0
  115. package/dist/adapters/http/ui/theme/assets.d.ts.map +1 -0
  116. package/dist/adapters/http/ui/theme/assets.mjs +86 -0
  117. package/dist/adapters/http/ui/theme/assets.mjs.map +1 -0
  118. package/dist/adapters/http/ui/theme/constants.d.ts +16 -0
  119. package/dist/adapters/http/ui/theme/constants.d.ts.map +1 -0
  120. package/dist/adapters/http/ui/theme/constants.mjs +20 -0
  121. package/dist/adapters/http/ui/theme/constants.mjs.map +1 -0
  122. package/dist/adapters/http/ui/theme/contract/constants.d.ts +120 -0
  123. package/dist/adapters/http/ui/theme/contract/constants.d.ts.map +1 -0
  124. package/dist/adapters/http/ui/theme/contract/constants.mjs +136 -0
  125. package/dist/adapters/http/ui/theme/contract/constants.mjs.map +1 -0
  126. package/dist/adapters/http/ui/theme/contract/head.d.ts +12 -0
  127. package/dist/adapters/http/ui/theme/contract/head.d.ts.map +1 -0
  128. package/dist/adapters/http/ui/theme/contract/head.mjs +61 -0
  129. package/dist/adapters/http/ui/theme/contract/head.mjs.map +1 -0
  130. package/dist/adapters/http/ui/theme/contract/index.d.ts +6 -0
  131. package/dist/adapters/http/ui/theme/contract/index.d.ts.map +1 -0
  132. package/dist/adapters/http/ui/theme/contract/index.mjs +8 -0
  133. package/dist/adapters/http/ui/theme/contract/manifest.d.ts +25 -0
  134. package/dist/adapters/http/ui/theme/contract/manifest.d.ts.map +1 -0
  135. package/dist/adapters/http/ui/theme/contract/manifest.mjs +77 -0
  136. package/dist/adapters/http/ui/theme/contract/manifest.mjs.map +1 -0
  137. package/dist/adapters/http/ui/theme/contract/types.d.ts +26 -0
  138. package/dist/adapters/http/ui/theme/contract/types.d.ts.map +1 -0
  139. package/dist/adapters/http/ui/theme/contract/types.mjs +4 -0
  140. package/dist/adapters/http/ui/theme/contract/utils.d.ts +11 -0
  141. package/dist/adapters/http/ui/theme/contract/utils.d.ts.map +1 -0
  142. package/dist/adapters/http/ui/theme/contract/utils.mjs +22 -0
  143. package/dist/adapters/http/ui/theme/contract/utils.mjs.map +1 -0
  144. package/dist/adapters/http/ui/theme/index.d.ts +7 -0
  145. package/dist/adapters/http/ui/theme/index.d.ts.map +1 -0
  146. package/dist/adapters/http/ui/theme/index.mjs +13 -0
  147. package/dist/adapters/http/ui/theme/module.d.ts +79 -0
  148. package/dist/adapters/http/ui/theme/module.d.ts.map +1 -0
  149. package/dist/adapters/http/ui/theme/module.mjs +206 -0
  150. package/dist/adapters/http/ui/theme/module.mjs.map +1 -0
  151. package/dist/adapters/http/ui/theme/types.d.ts +42 -0
  152. package/dist/adapters/http/ui/theme/types.d.ts.map +1 -0
  153. package/dist/adapters/http/ui/theme/types.mjs +4 -0
  154. package/dist/app/index.mjs +3 -1
  155. package/dist/app/modules/authentication/module.mjs +6 -3
  156. package/dist/app/modules/authentication/module.mjs.map +1 -1
  157. package/dist/app/modules/config/constants.d.ts +5 -0
  158. package/dist/app/modules/config/constants.d.ts.map +1 -1
  159. package/dist/app/modules/config/constants.mjs +5 -0
  160. package/dist/app/modules/config/constants.mjs.map +1 -1
  161. package/dist/app/modules/config/helpers.mjs +3 -2
  162. package/dist/app/modules/config/helpers.mjs.map +1 -1
  163. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  164. package/dist/app/modules/config/normalize.mjs +8 -0
  165. package/dist/app/modules/config/normalize.mjs.map +1 -1
  166. package/dist/app/modules/config/origins.d.ts.map +1 -1
  167. package/dist/app/modules/config/origins.mjs +2 -0
  168. package/dist/app/modules/config/origins.mjs.map +1 -1
  169. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  170. package/dist/app/modules/config/read/env.mjs +10 -0
  171. package/dist/app/modules/config/read/env.mjs.map +1 -1
  172. package/dist/app/modules/config/read/module.mjs +8 -3
  173. package/dist/app/modules/config/read/module.mjs.map +1 -1
  174. package/dist/app/modules/config/types.d.ts +63 -3
  175. package/dist/app/modules/config/types.d.ts.map +1 -1
  176. package/dist/app/modules/config/validator.d.ts.map +1 -1
  177. package/dist/app/modules/config/validator.mjs +5 -0
  178. package/dist/app/modules/config/validator.mjs.map +1 -1
  179. package/dist/app/modules/database/module.mjs +2 -1
  180. package/dist/app/modules/database/module.mjs.map +1 -1
  181. package/dist/app/modules/http/module.d.ts.map +1 -1
  182. package/dist/app/modules/http/module.mjs +7 -1
  183. package/dist/app/modules/http/module.mjs.map +1 -1
  184. package/dist/app/modules/http/modules/controller.d.ts +2 -1
  185. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  186. package/dist/app/modules/http/modules/controller.mjs +214 -128
  187. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  188. package/dist/app/modules/http/modules/middleware.d.ts +9 -1
  189. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  190. package/dist/app/modules/http/modules/middleware.mjs +28 -8
  191. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  192. package/dist/app/modules/identity/module.mjs +6 -3
  193. package/dist/app/modules/identity/module.mjs.map +1 -1
  194. package/dist/app/modules/index.mjs +3 -1
  195. package/dist/app/modules/oauth2/module.mjs +37 -17
  196. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  197. package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs +1 -1
  198. package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs.map +1 -1
  199. package/dist/app/modules/oauth2/repositories/token/repository.mjs +1 -1
  200. package/dist/app/modules/oauth2/repositories/token/repository.mjs.map +1 -1
  201. package/dist/app/modules/provisioning/constants.d.ts +12 -0
  202. package/dist/app/modules/provisioning/constants.d.ts.map +1 -0
  203. package/dist/app/modules/provisioning/constants.mjs +16 -0
  204. package/dist/app/modules/provisioning/constants.mjs.map +1 -0
  205. package/dist/app/modules/provisioning/index.d.ts +2 -0
  206. package/dist/app/modules/provisioning/index.d.ts.map +1 -1
  207. package/dist/app/modules/provisioning/index.mjs +3 -1
  208. package/dist/app/modules/provisioning/lazy-wildcard.d.ts +15 -0
  209. package/dist/app/modules/provisioning/lazy-wildcard.d.ts.map +1 -0
  210. package/dist/app/modules/provisioning/lazy-wildcard.mjs +23 -0
  211. package/dist/app/modules/provisioning/lazy-wildcard.mjs.map +1 -0
  212. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  213. package/dist/app/modules/provisioning/module.mjs +30 -11
  214. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  215. package/dist/app/modules/provisioning/sources/composite/module.d.ts +0 -19
  216. package/dist/app/modules/provisioning/sources/composite/module.d.ts.map +1 -1
  217. package/dist/app/modules/provisioning/sources/composite/module.mjs +7 -77
  218. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  219. package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
  220. package/dist/app/modules/provisioning/sources/file/module.mjs +11 -2
  221. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  222. package/dist/core/authentication/session/module.mjs +2 -4
  223. package/dist/core/authentication/session/module.mjs.map +1 -1
  224. package/dist/core/entities/client/index.d.ts +1 -1
  225. package/dist/core/entities/client/index.d.ts.map +1 -1
  226. package/dist/core/entities/client/index.mjs +2 -2
  227. package/dist/core/entities/client/service.d.ts.map +1 -1
  228. package/dist/core/entities/client/service.mjs +1 -1
  229. package/dist/core/entities/client/service.mjs.map +1 -1
  230. package/dist/core/entities/client/system-clients.d.ts +95 -0
  231. package/dist/core/entities/client/system-clients.d.ts.map +1 -0
  232. package/dist/core/entities/client/system-clients.mjs +158 -0
  233. package/dist/core/entities/client/system-clients.mjs.map +1 -0
  234. package/dist/core/entities/client/types.d.ts +17 -4
  235. package/dist/core/entities/client/types.d.ts.map +1 -1
  236. package/dist/core/entities/client-permission/service.mjs +12 -9
  237. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  238. package/dist/core/entities/index.mjs +2 -2
  239. package/dist/core/entities/key/service.mjs +4 -2
  240. package/dist/core/entities/key/service.mjs.map +1 -1
  241. package/dist/core/entities/permission/service.d.ts.map +1 -1
  242. package/dist/core/entities/permission/service.mjs +1 -1
  243. package/dist/core/entities/permission/service.mjs.map +1 -1
  244. package/dist/core/entities/policy/service.d.ts.map +1 -1
  245. package/dist/core/entities/policy/service.mjs +3 -2
  246. package/dist/core/entities/policy/service.mjs.map +1 -1
  247. package/dist/core/entities/realm/service.d.ts +8 -6
  248. package/dist/core/entities/realm/service.d.ts.map +1 -1
  249. package/dist/core/entities/realm/service.mjs +6 -9
  250. package/dist/core/entities/realm/service.mjs.map +1 -1
  251. package/dist/core/entities/role/service.d.ts.map +1 -1
  252. package/dist/core/entities/role/service.mjs +1 -1
  253. package/dist/core/entities/role/service.mjs.map +1 -1
  254. package/dist/core/entities/role-permission/service.mjs +12 -9
  255. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  256. package/dist/core/entities/scope/service.d.ts.map +1 -1
  257. package/dist/core/entities/scope/service.mjs +1 -1
  258. package/dist/core/entities/scope/service.mjs.map +1 -1
  259. package/dist/core/entities/user/service.d.ts.map +1 -1
  260. package/dist/core/entities/user/service.mjs +1 -1
  261. package/dist/core/entities/user/service.mjs.map +1 -1
  262. package/dist/core/entities/user-authenticator/helpers.mjs +1 -1
  263. package/dist/core/entities/user-authenticator/helpers.mjs.map +1 -1
  264. package/dist/core/entities/user-authenticator/service.mjs +7 -7
  265. package/dist/core/entities/user-authenticator/service.mjs.map +1 -1
  266. package/dist/core/entities/user-permission/service.mjs +12 -9
  267. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  268. package/dist/core/identity/password-recovery/service.mjs +1 -1
  269. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  270. package/dist/core/index.mjs +6 -2
  271. package/dist/core/key/types.d.ts +2 -1
  272. package/dist/core/key/types.d.ts.map +1 -1
  273. package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
  274. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +2 -2
  275. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  276. package/dist/core/oauth2/end-session/service.d.ts.map +1 -1
  277. package/dist/core/oauth2/end-session/service.mjs +2 -2
  278. package/dist/core/oauth2/end-session/service.mjs.map +1 -1
  279. package/dist/core/provisioning/constants.d.ts +8 -0
  280. package/dist/core/provisioning/constants.d.ts.map +1 -0
  281. package/dist/core/provisioning/constants.mjs +14 -0
  282. package/dist/core/provisioning/constants.mjs.map +1 -0
  283. package/dist/core/provisioning/entities/index.mjs +2 -1
  284. package/dist/core/provisioning/entities/realm/index.d.ts +1 -0
  285. package/dist/core/provisioning/entities/realm/index.d.ts.map +1 -1
  286. package/dist/core/provisioning/entities/realm/index.mjs +2 -1
  287. package/dist/core/provisioning/entities/realm/validator.d.ts +11 -0
  288. package/dist/core/provisioning/entities/realm/validator.d.ts.map +1 -1
  289. package/dist/core/provisioning/entities/realm/validator.mjs +14 -0
  290. package/dist/core/provisioning/entities/realm/validator.mjs.map +1 -1
  291. package/dist/core/provisioning/entities/realm/wildcard-validator.d.ts +19 -0
  292. package/dist/core/provisioning/entities/realm/wildcard-validator.d.ts.map +1 -0
  293. package/dist/core/provisioning/entities/realm/wildcard-validator.mjs +65 -0
  294. package/dist/core/provisioning/entities/realm/wildcard-validator.mjs.map +1 -0
  295. package/dist/core/provisioning/index.d.ts +3 -0
  296. package/dist/core/provisioning/index.d.ts.map +1 -1
  297. package/dist/core/provisioning/index.mjs +7 -1
  298. package/dist/core/provisioning/merge/index.d.ts +3 -0
  299. package/dist/core/provisioning/merge/index.d.ts.map +1 -0
  300. package/dist/core/provisioning/merge/index.mjs +5 -0
  301. package/dist/core/provisioning/merge/module.d.ts +18 -0
  302. package/dist/core/provisioning/merge/module.d.ts.map +1 -0
  303. package/dist/core/provisioning/merge/module.mjs +82 -0
  304. package/dist/core/provisioning/merge/module.mjs.map +1 -0
  305. package/dist/core/provisioning/merge/types.d.ts +34 -0
  306. package/dist/core/provisioning/merge/types.d.ts.map +1 -0
  307. package/dist/core/provisioning/merge/types.mjs +4 -0
  308. package/dist/core/provisioning/synchronizer/client/module.mjs +0 -1
  309. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  310. package/dist/core/provisioning/synchronizer/permission/module.mjs +0 -1
  311. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  312. package/dist/core/provisioning/synchronizer/realm/module.mjs +0 -1
  313. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  314. package/dist/core/provisioning/synchronizer/role/module.mjs +0 -1
  315. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  316. package/dist/core/provisioning/synchronizer/scope/module.mjs +0 -1
  317. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  318. package/dist/core/provisioning/synchronizer/user/module.mjs +0 -1
  319. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  320. package/dist/core/provisioning/types.d.ts +10 -0
  321. package/dist/core/provisioning/types.d.ts.map +1 -1
  322. package/dist/core/provisioning/wildcard/index.d.ts +3 -0
  323. package/dist/core/provisioning/wildcard/index.d.ts.map +1 -0
  324. package/dist/core/provisioning/wildcard/index.mjs +5 -0
  325. package/dist/core/provisioning/wildcard/module.d.ts +53 -0
  326. package/dist/core/provisioning/wildcard/module.d.ts.map +1 -0
  327. package/dist/core/provisioning/wildcard/module.mjs +91 -0
  328. package/dist/core/provisioning/wildcard/module.mjs.map +1 -0
  329. package/dist/core/provisioning/wildcard/types.d.ts +19 -0
  330. package/dist/core/provisioning/wildcard/types.d.ts.map +1 -0
  331. package/dist/core/provisioning/wildcard/types.mjs +4 -0
  332. package/dist/index.mjs +5 -1
  333. package/dist/path.d.ts +0 -2
  334. package/dist/path.d.ts.map +1 -1
  335. package/dist/path.mjs +1 -3
  336. package/dist/path.mjs.map +1 -1
  337. package/dist/swagger.json +485 -17
  338. package/package.json +26 -63
  339. package/dist/adapters/http/ui/base-path.d.ts +0 -9
  340. package/dist/adapters/http/ui/base-path.d.ts.map +0 -1
  341. package/dist/adapters/http/ui/base-path.mjs +0 -18
  342. package/dist/adapters/http/ui/base-path.mjs.map +0 -1
  343. package/dist/adapters/http/ui/internal-http-client.d.ts.map +0 -1
  344. package/dist/adapters/http/ui/internal-http-client.mjs.map +0 -1
  345. package/dist/adapters/http/ui/render.d.ts +0 -4
  346. package/dist/adapters/http/ui/render.d.ts.map +0 -1
  347. package/dist/adapters/http/ui/render.mjs +0 -63
  348. package/dist/adapters/http/ui/render.mjs.map +0 -1
  349. package/dist/adapters/http/ui/serve.d.ts.map +0 -1
  350. package/dist/adapters/http/ui/serve.mjs.map +0 -1
  351. package/dist/adapters/http/ui/types.d.ts +0 -20
  352. package/dist/adapters/http/ui/types.d.ts.map +0 -1
  353. package/dist/core/entities/client/web-client.d.ts +0 -72
  354. package/dist/core/entities/client/web-client.d.ts.map +0 -1
  355. package/dist/core/entities/client/web-client.mjs +0 -123
  356. package/dist/core/entities/client/web-client.mjs.map +0 -1
  357. package/dist/ui/client/.vite/ssr-manifest.json +0 -54812
  358. package/dist/ui/client/assets/asap-latin-400-normal-Dc37g3Il.woff +0 -0
  359. package/dist/ui/client/assets/asap-latin-400-normal-DnZ1MOsG.woff2 +0 -0
  360. package/dist/ui/client/assets/asap-latin-700-normal-Dqcopq14.woff +0 -0
  361. package/dist/ui/client/assets/asap-latin-700-normal-l2Y8pi-F.woff2 +0 -0
  362. package/dist/ui/client/assets/asap-latin-ext-400-normal-C-fcRdtE.woff +0 -0
  363. package/dist/ui/client/assets/asap-latin-ext-400-normal-DwYtpHbV.woff2 +0 -0
  364. package/dist/ui/client/assets/asap-latin-ext-700-normal-D00OESsZ.woff +0 -0
  365. package/dist/ui/client/assets/asap-latin-ext-700-normal-y8bo5aW5.woff2 +0 -0
  366. package/dist/ui/client/assets/asap-vietnamese-400-normal-DGyJlJLT.woff2 +0 -0
  367. package/dist/ui/client/assets/asap-vietnamese-400-normal-lfLaoF2x.woff +0 -0
  368. package/dist/ui/client/assets/asap-vietnamese-700-normal-B-e19ug5.woff +0 -0
  369. package/dist/ui/client/assets/asap-vietnamese-700-normal-D-SxY94i.woff2 +0 -0
  370. package/dist/ui/client/assets/index-Bk6-OZy9.css +0 -2
  371. package/dist/ui/client/assets/index-DO6_7NTJ.js +0 -106
  372. package/dist/ui/client/assets/nunito-cyrillic-300-normal-BPQV259B.woff2 +0 -0
  373. package/dist/ui/client/assets/nunito-cyrillic-300-normal-g5qSsvc0.woff +0 -0
  374. package/dist/ui/client/assets/nunito-cyrillic-400-normal-D1j0u8EH.woff +0 -0
  375. package/dist/ui/client/assets/nunito-cyrillic-400-normal-xAOo5cBP.woff2 +0 -0
  376. package/dist/ui/client/assets/nunito-cyrillic-600-normal-BUjmtIuu.woff +0 -0
  377. package/dist/ui/client/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2 +0 -0
  378. package/dist/ui/client/assets/nunito-cyrillic-700-normal-DP36NgGt.woff2 +0 -0
  379. package/dist/ui/client/assets/nunito-cyrillic-700-normal-DfHRUDv-.woff +0 -0
  380. package/dist/ui/client/assets/nunito-cyrillic-ext-300-normal-BDHtqmCR.woff +0 -0
  381. package/dist/ui/client/assets/nunito-cyrillic-ext-300-normal-ChMQLIrm.woff2 +0 -0
  382. package/dist/ui/client/assets/nunito-cyrillic-ext-400-normal-CuPM9foi.woff2 +0 -0
  383. package/dist/ui/client/assets/nunito-cyrillic-ext-400-normal-xaE7D4Sw.woff +0 -0
  384. package/dist/ui/client/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2 +0 -0
  385. package/dist/ui/client/assets/nunito-cyrillic-ext-600-normal-vnfu4DTE.woff +0 -0
  386. package/dist/ui/client/assets/nunito-cyrillic-ext-700-normal-BuR0mlCG.woff2 +0 -0
  387. package/dist/ui/client/assets/nunito-cyrillic-ext-700-normal-DfoqN4Gs.woff +0 -0
  388. package/dist/ui/client/assets/nunito-latin-300-normal-C3ZIKvzv.woff +0 -0
  389. package/dist/ui/client/assets/nunito-latin-300-normal-COoPE5VN.woff2 +0 -0
  390. package/dist/ui/client/assets/nunito-latin-400-normal-DKg4f3fz.woff +0 -0
  391. package/dist/ui/client/assets/nunito-latin-400-normal-r8SDr6Up.woff2 +0 -0
  392. package/dist/ui/client/assets/nunito-latin-600-normal-Br8yIETf.woff2 +0 -0
  393. package/dist/ui/client/assets/nunito-latin-600-normal-Cd0eNu1l.woff +0 -0
  394. package/dist/ui/client/assets/nunito-latin-700-normal-Dort48En.woff2 +0 -0
  395. package/dist/ui/client/assets/nunito-latin-700-normal-OcDqTBcA.woff +0 -0
  396. package/dist/ui/client/assets/nunito-latin-ext-300-normal-D1SyVuPt.woff2 +0 -0
  397. package/dist/ui/client/assets/nunito-latin-ext-300-normal-DfqbmdMl.woff +0 -0
  398. package/dist/ui/client/assets/nunito-latin-ext-400-normal-CjMJVfGn.woff +0 -0
  399. package/dist/ui/client/assets/nunito-latin-ext-400-normal-i-8OOpdj.woff2 +0 -0
  400. package/dist/ui/client/assets/nunito-latin-ext-600-normal-BKUpuB78.woff +0 -0
  401. package/dist/ui/client/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2 +0 -0
  402. package/dist/ui/client/assets/nunito-latin-ext-700-normal-BWeMsAzO.woff2 +0 -0
  403. package/dist/ui/client/assets/nunito-latin-ext-700-normal-D4woHhbd.woff +0 -0
  404. package/dist/ui/client/assets/nunito-vietnamese-300-normal-DATld5Vw.woff +0 -0
  405. package/dist/ui/client/assets/nunito-vietnamese-300-normal-mLneKULB.woff2 +0 -0
  406. package/dist/ui/client/assets/nunito-vietnamese-400-normal-BHkVbP3T.woff2 +0 -0
  407. package/dist/ui/client/assets/nunito-vietnamese-400-normal-DtOtW02z.woff +0 -0
  408. package/dist/ui/client/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2 +0 -0
  409. package/dist/ui/client/assets/nunito-vietnamese-600-normal-DO1RqFw5.woff +0 -0
  410. package/dist/ui/client/assets/nunito-vietnamese-700-normal-C9SQsXvj.woff +0 -0
  411. package/dist/ui/client/assets/nunito-vietnamese-700-normal-Ch8EUCfz.woff2 +0 -0
  412. package/dist/ui/client/index.html +0 -22
  413. package/dist/ui/server/assets/multipart-parser-BCMy8Xwv.js +0 -181
  414. package/dist/ui/server/assets/multipart-parser-BVY8pIV2.js +0 -176
  415. package/dist/ui/server/server.js +0 -158420
  416. /package/dist/adapters/http/{ui → middleware/built-in}/types.mjs +0 -0
@@ -9,7 +9,8 @@ import "../config/index.mjs";
9
9
  import { LoggerInjectionKey } from "../logger/constants.mjs";
10
10
  import "../logger/index.mjs";
11
11
  import { HTTPInjectionKey } from "./constants.mjs";
12
- import { createInternalUIHttpClient } from "../../../adapters/http/ui/internal-http-client.mjs";
12
+ import { createInternalUIHttpClient } from "../../../adapters/http/ui/auth-console/http-client.mjs";
13
+ import { bindConsolePackages } from "../../../adapters/http/ui/console-packages/module.mjs";
13
14
  import "../../../adapters/http/ui/index.mjs";
14
15
  import { MetricsInjectionKey } from "../metrics/constants.mjs";
15
16
  import { PromAuthFlowMetrics } from "../metrics/prom.mjs";
@@ -52,6 +53,10 @@ var HTTPModule = class {
52
53
  } catch (e) {
53
54
  throw new AuthupError(`Invalid trustProxy (TRUST_PROXY) configuration: ${e instanceof Error ? e.message : String(e)}`);
54
55
  }
56
+ await bindConsolePackages({
57
+ authConsolePath: config.authConsolePath,
58
+ accountConsolePath: config.accountConsolePath
59
+ });
55
60
  this.registerUIHttpClient(container);
56
61
  this.registerMetrics(container);
57
62
  await this.middleware.mountBefore(router, container);
@@ -106,6 +111,7 @@ var HTTPModule = class {
106
111
  this.uiHttpClientRegistered = false;
107
112
  }
108
113
  container.unregister(MetricsInjectionKey);
114
+ await this.middleware.teardown();
109
115
  if (!this.instance) return;
110
116
  container.unregister(HTTPInjectionKey.Server);
111
117
  await this.instance.close();
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["Client","AuthupError","App","serve","ConfigInjectionKey","createInternalUIHttpClient","NoopAuthFlowMetrics","ModuleName","HTTPInjectionKey","MetricsInjectionKey","PromAuthFlowMetrics","HTTPControllerModule","HTTPMiddlewareModule","LoggerInjectionKey","HTTPModule","name","dependencies","instance","middleware","controller","uiHttpClientRegistered","HTTP","CONFIG","LOGGER","AUTHENTICATION","IDENTITY","OAUTH2","setup","container","config","resolve","logger","debug","router","options","trustProxy","e","Error","message","String","registerUIHttpClient","registerMetrics","mountBefore","mount","mountAfter","server","port","hostname","host","silent","gracefulShutdown","ready","url","register","Server","useValue","has","UIHttpClient","useFactory","c","undefined","publicURL","publicUrl","internalURL","baseURL","lifetime","enabled","middlewarePrometheus","teardown","unregister","close"],"sources":["../../../../src/app/modules/http/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 { Client } from '@authup/core-http-kit';\nimport { AuthupError } from '@authup/errors';\nimport { App } from 'routup';\nimport { serve } from 'routup/node';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IModule } from 'orkos';\nimport { createInternalUIHttpClient } from '../../../adapters/http/ui/index.ts';\nimport { NoopAuthFlowMetrics } from '../../../core/index.ts';\nimport { ModuleName } from '../constants.ts';\nimport type { HTTPServer } from './constants.ts';\nimport { HTTPInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\nimport { MetricsInjectionKey, PromAuthFlowMetrics } from '../metrics/index.ts';\nimport { HTTPControllerModule, HTTPMiddlewareModule } from './modules/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport class HTTPModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected instance : HTTPServer | undefined;\n\n protected middleware : HTTPMiddlewareModule;\n\n protected controller : HTTPControllerModule;\n\n protected uiHttpClientRegistered : boolean;\n\n constructor() {\n this.name = ModuleName.HTTP;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER, ModuleName.AUTHENTICATION, ModuleName.IDENTITY, ModuleName.OAUTH2];\n this.controller = new HTTPControllerModule();\n this.middleware = new HTTPMiddlewareModule();\n this.uiHttpClientRegistered = false;\n }\n\n // ----------------------------------------------------\n\n async setup(container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Starting http server...');\n\n // Every request helper deriving proxy-dependent request facts\n // (getRequestIP, hostname, protocol) resolves the trust contract from\n // the app options — call sites must NOT pass their own `trustProxy`.\n let router : App;\n try {\n router = new App({ options: { trustProxy: config.trustProxy } });\n } catch (e) {\n // proxy-addr compiles the allowlist form inside the App\n // constructor; its error (\"invalid IP address: …\") does not name\n // the offending config key — attribute it.\n throw new AuthupError(\n `Invalid trustProxy (TRUST_PROXY) configuration: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n this.registerUIHttpClient(container);\n this.registerMetrics(container);\n\n await this.middleware.mountBefore(router, container);\n await this.controller.mount(router, container);\n await this.middleware.mountAfter(router, container);\n\n const server = serve(router, {\n port: config.port,\n hostname: config.host,\n silent: true,\n // Shutdown is driven by the orkos teardown chain (see cli/commands/start.ts);\n // srvx's plugin would only close the HTTP server, leaving DB / cache / etc. open.\n gracefulShutdown: false,\n });\n\n await server.ready();\n\n this.instance = server;\n\n if (server.url) {\n logger.debug(`Listening on ${server.url}`);\n }\n\n container.register(HTTPInjectionKey.Server, { useValue: server });\n\n logger.debug('Started http server.');\n }\n\n // ----------------------------------------------------\n\n /**\n * Default HTTP client for the SSR'd UI pages: dispatches against the\n * server's own listen address instead of round-tripping through the\n * reverse proxy at `publicUrl` (see `createInternalUIHttpClient`).\n * Skipped when the token is already bound (test injection wins).\n * Transient lifetime is mandatory — client-web-kit's authentication\n * hook writes per-user Authorization state onto the client.\n */\n protected registerUIHttpClient(container: IContainer): void {\n if (container.has(HTTPInjectionKey.UIHttpClient)) {\n return;\n }\n\n container.register(HTTPInjectionKey.UIHttpClient, {\n useFactory: (c) => {\n const config = c.resolve(ConfigInjectionKey);\n\n // The server token is registered after listen; a resolve can\n // only happen on a request, so it is present by then. The\n // guards keep an edge case on the previous (public URL)\n // dispatch behavior instead of failing the render.\n const server = c.has(HTTPInjectionKey.Server) ?\n c.resolve(HTTPInjectionKey.Server) :\n undefined;\n\n if (server && server.url) {\n return createInternalUIHttpClient({\n publicURL: config.publicUrl,\n internalURL: server.url,\n });\n }\n\n return new Client({ baseURL: config.publicUrl });\n },\n }, { lifetime: 'transient' });\n\n this.uiHttpClientRegistered = true;\n }\n\n /**\n * Auth-flow metric counters for the emit points (plan 058 Part 2).\n * Registered before the controllers are built — the factories resolve the\n * token. Prometheus-backed iff the prometheus middleware is enabled\n * (mirrors HTTPMiddlewareModule.isEnabled: boolean|object, false = off),\n * otherwise a noop so emit sites never need a guard beyond `?.`.\n */\n protected registerMetrics(container: IContainer): void {\n const config = container.resolve(ConfigInjectionKey);\n\n const enabled = typeof config.middlewarePrometheus !== 'boolean' ||\n config.middlewarePrometheus === true;\n\n container.register(MetricsInjectionKey, {\n useValue: enabled ?\n new PromAuthFlowMetrics() :\n new NoopAuthFlowMetrics(),\n });\n }\n\n // ----------------------------------------------------\n\n async teardown(container: IContainer): Promise<void> {\n if (this.uiHttpClientRegistered) {\n container.unregister(HTTPInjectionKey.UIHttpClient);\n this.uiHttpClientRegistered = false;\n }\n\n container.unregister(MetricsInjectionKey);\n\n if (!this.instance) return;\n\n container.unregister(HTTPInjectionKey.Server);\n\n await this.instance.close();\n this.instance = undefined;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["Client","AuthupError","App","serve","ConfigInjectionKey","bindConsolePackages","createInternalUIHttpClient","NoopAuthFlowMetrics","ModuleName","HTTPInjectionKey","MetricsInjectionKey","PromAuthFlowMetrics","HTTPControllerModule","HTTPMiddlewareModule","LoggerInjectionKey","HTTPModule","name","dependencies","instance","middleware","controller","uiHttpClientRegistered","HTTP","CONFIG","LOGGER","AUTHENTICATION","IDENTITY","OAUTH2","setup","container","config","resolve","logger","debug","router","options","trustProxy","e","Error","message","String","authConsolePath","accountConsolePath","registerUIHttpClient","registerMetrics","mountBefore","mount","mountAfter","server","port","hostname","host","silent","gracefulShutdown","ready","url","register","Server","useValue","has","UIHttpClient","useFactory","c","undefined","publicURL","publicUrl","internalURL","baseURL","lifetime","enabled","middlewarePrometheus","teardown","unregister","close"],"sources":["../../../../src/app/modules/http/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 { Client } from '@authup/core-http-kit';\nimport { AuthupError } from '@authup/errors';\nimport { App } from 'routup';\nimport { serve } from 'routup/node';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IModule } from 'orkos';\nimport { bindConsolePackages, createInternalUIHttpClient } from '../../../adapters/http/ui/index.ts';\nimport { NoopAuthFlowMetrics } from '../../../core/index.ts';\nimport { ModuleName } from '../constants.ts';\nimport type { HTTPServer } from './constants.ts';\nimport { HTTPInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\nimport { MetricsInjectionKey, PromAuthFlowMetrics } from '../metrics/index.ts';\nimport { HTTPControllerModule, HTTPMiddlewareModule } from './modules/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport class HTTPModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected instance : HTTPServer | undefined;\n\n protected middleware : HTTPMiddlewareModule;\n\n protected controller : HTTPControllerModule;\n\n protected uiHttpClientRegistered : boolean;\n\n constructor() {\n this.name = ModuleName.HTTP;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER, ModuleName.AUTHENTICATION, ModuleName.IDENTITY, ModuleName.OAUTH2];\n this.controller = new HTTPControllerModule();\n this.middleware = new HTTPMiddlewareModule();\n this.uiHttpClientRegistered = false;\n }\n\n // ----------------------------------------------------\n\n async setup(container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Starting http server...');\n\n // Every request helper deriving proxy-dependent request facts\n // (getRequestIP, hostname, protocol) resolves the trust contract from\n // the app options — call sites must NOT pass their own `trustProxy`.\n let router : App;\n try {\n router = new App({ options: { trustProxy: config.trustProxy } });\n } catch (e) {\n // proxy-addr compiles the allowlist form inside the App\n // constructor; its error (\"invalid IP address: …\") does not name\n // the offending config key — attribute it.\n throw new AuthupError(\n `Invalid trustProxy (TRUST_PROXY) configuration: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n // Before any route is mounted: a substituted console package that\n // no longer fulfills its contract must stop the boot, not surface\n // as a confusing per-request failure on /authorize.\n await bindConsolePackages({\n authConsolePath: config.authConsolePath,\n accountConsolePath: config.accountConsolePath,\n });\n\n this.registerUIHttpClient(container);\n this.registerMetrics(container);\n\n await this.middleware.mountBefore(router, container);\n await this.controller.mount(router, container);\n await this.middleware.mountAfter(router, container);\n\n const server = serve(router, {\n port: config.port,\n hostname: config.host,\n silent: true,\n // Shutdown is driven by the orkos teardown chain (see cli/commands/start.ts);\n // srvx's plugin would only close the HTTP server, leaving DB / cache / etc. open.\n gracefulShutdown: false,\n });\n\n await server.ready();\n\n this.instance = server;\n\n if (server.url) {\n logger.debug(`Listening on ${server.url}`);\n }\n\n container.register(HTTPInjectionKey.Server, { useValue: server });\n\n logger.debug('Started http server.');\n }\n\n // ----------------------------------------------------\n\n /**\n * Default HTTP client for the SSR'd UI pages: dispatches against the\n * server's own listen address instead of round-tripping through the\n * reverse proxy at `publicUrl` (see `createInternalUIHttpClient`).\n * Skipped when the token is already bound (test injection wins).\n * Transient lifetime is mandatory — client-web-kit's authentication\n * hook writes per-user Authorization state onto the client.\n */\n protected registerUIHttpClient(container: IContainer): void {\n if (container.has(HTTPInjectionKey.UIHttpClient)) {\n return;\n }\n\n container.register(HTTPInjectionKey.UIHttpClient, {\n useFactory: (c) => {\n const config = c.resolve(ConfigInjectionKey);\n\n // The server token is registered after listen; a resolve can\n // only happen on a request, so it is present by then. The\n // guards keep an edge case on the previous (public URL)\n // dispatch behavior instead of failing the render.\n const server = c.has(HTTPInjectionKey.Server) ?\n c.resolve(HTTPInjectionKey.Server) :\n undefined;\n\n if (server && server.url) {\n return createInternalUIHttpClient({\n publicURL: config.publicUrl,\n internalURL: server.url,\n });\n }\n\n return new Client({ baseURL: config.publicUrl });\n },\n }, { lifetime: 'transient' });\n\n this.uiHttpClientRegistered = true;\n }\n\n /**\n * Auth-flow metric counters for the emit points (plan 058 Part 2).\n * Registered before the controllers are built — the factories resolve the\n * token. Prometheus-backed iff the prometheus middleware is enabled\n * (mirrors HTTPMiddlewareModule.isEnabled: boolean|object, false = off),\n * otherwise a noop so emit sites never need a guard beyond `?.`.\n */\n protected registerMetrics(container: IContainer): void {\n const config = container.resolve(ConfigInjectionKey);\n\n const enabled = typeof config.middlewarePrometheus !== 'boolean' ||\n config.middlewarePrometheus === true;\n\n container.register(MetricsInjectionKey, {\n useValue: enabled ?\n new PromAuthFlowMetrics() :\n new NoopAuthFlowMetrics(),\n });\n }\n\n // ----------------------------------------------------\n\n async teardown(container: IContainer): Promise<void> {\n if (this.uiHttpClientRegistered) {\n container.unregister(HTTPInjectionKey.UIHttpClient);\n this.uiHttpClientRegistered = false;\n }\n\n container.unregister(MetricsInjectionKey);\n\n await this.middleware.teardown();\n\n if (!this.instance) return;\n\n container.unregister(HTTPInjectionKey.Server);\n\n await this.instance.close();\n this.instance = undefined;\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { App } from 'routup';
2
2
  import { ClientController, ClientPermissionController, ClientRoleController, ClientScopeController, ConsentController, EventController, IdentityProviderController, IdentityProviderRoleMappingController, KeyController, PermissionController, PermissionPolicyController, PolicyController, RealmController, RoleAttributeController, RoleController, RolePermissionController, ScopeController, SessionController, TrustAnchorController, UserAttributeController, UserAuthenticatorController, UserController, UserPermissionController, UserRoleController } from '../../../../adapters/http/index.ts';
3
- import { ActivateController, AuthenticatorChallengeController, AuthorizeController, JwkController, LogoutController, OpenIDController, PasswordForgotController, PasswordResetController, RegisterController, StatusController, TokenController, UserInfoController } from '../../../../adapters/http/controllers/index.ts';
3
+ import { AccountController, ActivateController, AuthenticatorChallengeController, AuthorizeController, JwkController, LogoutController, OpenIDController, PasswordForgotController, PasswordResetController, RegisterController, StatusController, TokenController, UserInfoController } from '../../../../adapters/http/controllers/index.ts';
4
4
  import type { IContainer } from 'eldin';
5
5
  import { ConsentService, OAuth2AccessPolicyEvaluator, OAuth2MfaLoginService, PasswordRecoveryService, RegistrationService, UserAuthenticatorService, UserService } from '../../../../core/index.ts';
6
6
  import type { StatusResponseFeatures } from '@authup/core-http-kit';
@@ -17,6 +17,7 @@ export declare class HTTPControllerModule {
17
17
  createRegisterController(container: IContainer): RegisterController;
18
18
  createLogoutController(container: IContainer): LogoutController;
19
19
  createStatusController(container: IContainer): StatusController;
20
+ createAccountController(container: IContainer): AccountController;
20
21
  buildUIFeatures(config: Config): StatusResponseFeatures;
21
22
  createRegistrationService(container: IContainer): RegistrationService;
22
23
  createIdentityProvider(container: IContainer): IdentityProviderController;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ import { LoginThrottleService } from "../../../../core/authentication/login-thro
29
29
  import { CredentialsAuthenticator } from "../../../../core/authentication/module.mjs";
30
30
  import { ClientCertificateValidator } from "../../../../core/client-certificate/module.mjs";
31
31
  import { ClientService } from "../../../../core/entities/client/service.mjs";
32
- import { WebClientProvisioner } from "../../../../core/entities/client/web-client.mjs";
32
+ import { SystemClientProvisioner } from "../../../../core/entities/client/system-clients.mjs";
33
33
  import { ClientPermissionService } from "../../../../core/entities/client-permission/service.mjs";
34
34
  import { ClientRoleService } from "../../../../core/entities/client-role/service.mjs";
35
35
  import { ClientScopeService } from "../../../../core/entities/client-scope/service.mjs";
@@ -107,6 +107,7 @@ import { IdentityProviderRoleMappingController } from "../../../../adapters/http
107
107
  import { KeyController } from "../../../../adapters/http/controllers/entities/key/module.mjs";
108
108
  import { PermissionController } from "../../../../adapters/http/controllers/entities/permission/module.mjs";
109
109
  import { PermissionPolicyController } from "../../../../adapters/http/controllers/entities/permission-policy/module.mjs";
110
+ import { AccountController } from "../../../../adapters/http/controllers/workflows/account/module.mjs";
110
111
  import { ActivateController } from "../../../../adapters/http/controllers/workflows/activate/module.mjs";
111
112
  import { AuthenticatorChallengeController } from "../../../../adapters/http/controllers/workflows/authenticator-challenge/module.mjs";
112
113
  import { AuthorizeController } from "../../../../adapters/http/controllers/workflows/authorize/module.mjs";
@@ -138,6 +139,7 @@ import { OAuth2InjectionToken } from "../../oauth2/constants.mjs";
138
139
  import { IdentityInjectionKey } from "../../identity/constants.mjs";
139
140
  import "../../identity/index.mjs";
140
141
  import "../../oauth2/index.mjs";
142
+ import { LazyWildcardRealmProvisioner } from "../../provisioning/lazy-wildcard.mjs";
141
143
  import { MailInjectionKey, MailTemplateRendererInjectionKey } from "../../mail/constants.mjs";
142
144
  import "../../mail/index.mjs";
143
145
  import { decorators } from "@routup/decorators";
@@ -179,6 +181,7 @@ var HTTPControllerModule = class {
179
181
  this.createLogoutController(container),
180
182
  this.createAuthenticatorChallengeController(container),
181
183
  this.createUserInfoController(container),
184
+ this.createAccountController(container),
182
185
  this.createStatusController(container),
183
186
  clientController,
184
187
  clientPermissionController,
@@ -253,6 +256,16 @@ var HTTPControllerModule = class {
253
256
  identityResolver,
254
257
  certificateValidator: new ClientCertificateValidator({ trustAnchorRepository: new TrustAnchorRepositoryAdapter(dataSource) })
255
258
  });
259
+ const eventService = container.resolve(DatabaseInjectionKey.EventService);
260
+ const metrics = container.resolve(MetricsInjectionKey);
261
+ const loginThrottleService = new LoginThrottleService({
262
+ repository: container.resolve(DatabaseInjectionKey.EventRepository),
263
+ options: {
264
+ enabled: config.loginAttemptThrottleEnabled,
265
+ threshold: config.loginAttemptThreshold,
266
+ windowSeconds: config.loginAttemptWindow
267
+ }
268
+ });
256
269
  return new TokenController({
257
270
  codeVerifier,
258
271
  accessTokenIssuer,
@@ -263,16 +276,9 @@ var HTTPControllerModule = class {
263
276
  tokenRevoker,
264
277
  tokenRepository,
265
278
  sessionTokenRepository,
266
- eventService: container.resolve(DatabaseInjectionKey.EventService),
267
- metrics: container.resolve(MetricsInjectionKey),
268
- loginThrottleService: new LoginThrottleService({
269
- repository: container.resolve(DatabaseInjectionKey.EventRepository),
270
- options: {
271
- enabled: config.loginAttemptThrottleEnabled,
272
- threshold: config.loginAttemptThreshold,
273
- windowSeconds: config.loginAttemptWindow
274
- }
275
- }),
279
+ eventService,
280
+ metrics,
281
+ loginThrottleService,
276
282
  userAuthenticatorService: this.resolveUserAuthenticatorService(container),
277
283
  mfaLoginService: this.resolveMfaLoginService(container),
278
284
  accessPolicyEvaluator: this.resolveAccessPolicyEvaluator(container),
@@ -288,7 +294,8 @@ var HTTPControllerModule = class {
288
294
  });
289
295
  }
290
296
  createOpenIDController(container) {
291
- return new OpenIDController({ baseURL: container.resolve(ConfigInjectionKey).publicUrl });
297
+ const config = container.resolve(ConfigInjectionKey);
298
+ return new OpenIDController({ baseURL: config.publicUrl });
292
299
  }
293
300
  createActivateController(container) {
294
301
  const config = container.resolve(ConfigInjectionKey);
@@ -328,9 +335,11 @@ var HTTPControllerModule = class {
328
335
  repository: new UserRepository(dataSource),
329
336
  realmRepository
330
337
  });
338
+ const mailClient = container.resolve(MailInjectionKey);
339
+ const mailTemplateRenderer = container.resolve(MailTemplateRendererInjectionKey);
331
340
  return new PasswordRecoveryService({
332
- mailClient: container.resolve(MailInjectionKey),
333
- mailTemplateRenderer: container.resolve(MailTemplateRendererInjectionKey),
341
+ mailClient,
342
+ mailTemplateRenderer,
334
343
  repository,
335
344
  realmRepository: new RealmRepositoryAdapter(realmRepository),
336
345
  eventService: container.resolve(DatabaseInjectionKey.EventService),
@@ -354,11 +363,15 @@ var HTTPControllerModule = class {
354
363
  }
355
364
  createLogoutController(container) {
356
365
  const config = container.resolve(ConfigInjectionKey);
366
+ const tokenVerifier = container.resolve(OAuth2InjectionToken.TokenVerifier);
367
+ const sessionManager = container.resolve(AuthenticationInjectionKey.SessionManager);
368
+ const clientRepository = container.resolve(OAuth2InjectionToken.ClientRepository);
369
+ const realmRepository = new RealmRepositoryAdapter(container.resolve(RealmEntity));
357
370
  const endSessionService = new OAuth2EndSessionService({
358
- tokenVerifier: container.resolve(OAuth2InjectionToken.TokenVerifier),
359
- sessionManager: container.resolve(AuthenticationInjectionKey.SessionManager),
360
- clientRepository: container.resolve(OAuth2InjectionToken.ClientRepository),
361
- realmRepository: new RealmRepositoryAdapter(container.resolve(RealmEntity)),
371
+ tokenVerifier,
372
+ sessionManager,
373
+ clientRepository,
374
+ realmRepository,
362
375
  eventService: container.resolve(DatabaseInjectionKey.EventService),
363
376
  hintGracePeriod: config.endSessionHintGracePeriod
364
377
  });
@@ -371,11 +384,20 @@ var HTTPControllerModule = class {
371
384
  const config = container.resolve(ConfigInjectionKey);
372
385
  return new StatusController({ options: { features: this.buildUIFeatures(config) } });
373
386
  }
387
+ createAccountController(container) {
388
+ const config = container.resolve(ConfigInjectionKey);
389
+ return new AccountController({ options: {
390
+ baseURL: config.publicUrl,
391
+ features: this.buildUIFeatures(config),
392
+ trustedOrigins: getAppOrigins(config)
393
+ } });
394
+ }
374
395
  buildUIFeatures(config) {
375
396
  return {
376
397
  registration: config.registrationEnabled,
377
398
  passwordRecovery: config.passwordRecoveryEnabled,
378
- emailVerification: config.emailVerificationEnabled
399
+ emailVerification: config.emailVerificationEnabled,
400
+ accountConsole: config.accountConsoleEnabled
379
401
  };
380
402
  }
381
403
  createRegistrationService(container) {
@@ -386,9 +408,11 @@ var HTTPControllerModule = class {
386
408
  repository: new UserRepository(dataSource),
387
409
  realmRepository
388
410
  });
411
+ const mailClient = container.resolve(MailInjectionKey);
412
+ const mailTemplateRenderer = container.resolve(MailTemplateRendererInjectionKey);
389
413
  return new RegistrationService({
390
- mailClient: container.resolve(MailInjectionKey),
391
- mailTemplateRenderer: container.resolve(MailTemplateRendererInjectionKey),
414
+ mailClient,
415
+ mailTemplateRenderer,
392
416
  repository,
393
417
  realmRepository: new RealmRepositoryAdapter(realmRepository),
394
418
  eventService: container.resolve(DatabaseInjectionKey.EventService),
@@ -430,11 +454,13 @@ var HTTPControllerModule = class {
430
454
  repository: container.resolve(ClientEntity),
431
455
  realmRepository
432
456
  });
457
+ const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);
458
+ const service = new ClientService({
459
+ repository,
460
+ realmRepository: realmRepositoryAdapter
461
+ });
433
462
  return new ClientController({
434
- service: new ClientService({
435
- repository,
436
- realmRepository: new RealmRepositoryAdapter(realmRepository)
437
- }),
463
+ service,
438
464
  repository
439
465
  });
440
466
  }
@@ -458,103 +484,137 @@ var HTTPControllerModule = class {
458
484
  realmRepository
459
485
  });
460
486
  const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);
487
+ const roleRepository = new RoleRepositoryAdapter({
488
+ repository: container.resolve(RoleEntity),
489
+ realmRepository
490
+ });
491
+ const rolePermissionRepository = new RolePermissionRepositoryAdapter(container.resolve(RolePermissionEntity));
492
+ const policyRepository = new PolicyRepositoryAdapter({
493
+ repository: new PolicyRepository(dataSource),
494
+ realmRepository
495
+ });
496
+ const permissionPolicyRepository = new PermissionPolicyRepositoryAdapter(container.resolve(PermissionPolicyEntity));
461
497
  const service = new PermissionService({
462
498
  repository,
463
499
  realmRepository: realmRepositoryAdapter,
464
- roleRepository: new RoleRepositoryAdapter({
465
- repository: container.resolve(RoleEntity),
466
- realmRepository
467
- }),
468
- rolePermissionRepository: new RolePermissionRepositoryAdapter(container.resolve(RolePermissionEntity)),
469
- policyRepository: new PolicyRepositoryAdapter({
470
- repository: new PolicyRepository(dataSource),
471
- realmRepository
472
- }),
473
- permissionPolicyRepository: new PermissionPolicyRepositoryAdapter(container.resolve(PermissionPolicyEntity))
500
+ roleRepository,
501
+ rolePermissionRepository,
502
+ policyRepository,
503
+ permissionPolicyRepository
474
504
  });
475
505
  const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
506
+ const permissionProvider = new PermissionDatabaseProvider(dataSource);
507
+ const checkerService = new PermissionCheckerService({
508
+ repository,
509
+ realmRepository: realmRepositoryAdapter,
510
+ permissionProvider,
511
+ identityPermissionProvider
512
+ });
476
513
  return new PermissionController({
477
514
  service,
478
- checkerService: new PermissionCheckerService({
479
- repository,
480
- realmRepository: realmRepositoryAdapter,
481
- permissionProvider: new PermissionDatabaseProvider(dataSource),
482
- identityPermissionProvider
483
- })
515
+ checkerService
484
516
  });
485
517
  }
486
518
  createRoleController(container) {
487
519
  const realmRepository = new RealmRepositoryAdapter(container.resolve(RealmEntity));
488
- return new RoleController({ service: new RoleService({
489
- repository: new RoleRepositoryAdapter({
490
- repository: container.resolve(RoleEntity),
491
- realmRepository: container.resolve(RealmEntity)
492
- }),
520
+ const repository = new RoleRepositoryAdapter({
521
+ repository: container.resolve(RoleEntity),
522
+ realmRepository: container.resolve(RealmEntity)
523
+ });
524
+ const service = new RoleService({
525
+ repository,
493
526
  realmRepository
494
- }) });
527
+ });
528
+ return new RoleController({ service });
495
529
  }
496
530
  createClientPermissionController(container) {
497
- return new ClientPermissionController({ service: new ClientPermissionService({
498
- repository: new ClientPermissionRepositoryAdapter(container.resolve(ClientPermissionEntity)),
499
- permissionRepository: this.createPermissionRepository(container),
500
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
501
- }) });
531
+ const repository = new ClientPermissionRepositoryAdapter(container.resolve(ClientPermissionEntity));
532
+ const permissionRepository = this.createPermissionRepository(container);
533
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
534
+ const service = new ClientPermissionService({
535
+ repository,
536
+ permissionRepository,
537
+ identityPermissionProvider
538
+ });
539
+ return new ClientPermissionController({ service });
502
540
  }
503
541
  createClientRoleController(container) {
504
- return new ClientRoleController({ service: new ClientRoleService({
505
- repository: new ClientRoleRepositoryAdapter(container.resolve(ClientRoleEntity)),
506
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
507
- }) });
542
+ const repository = new ClientRoleRepositoryAdapter(container.resolve(ClientRoleEntity));
543
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
544
+ const service = new ClientRoleService({
545
+ repository,
546
+ identityPermissionProvider
547
+ });
548
+ return new ClientRoleController({ service });
508
549
  }
509
550
  createClientScopeController(container) {
510
- return new ClientScopeController({ service: new ClientScopeService({ repository: new ClientScopeRepositoryAdapter(container.resolve(ClientScopeEntity)) }) });
551
+ const repository = new ClientScopeRepositoryAdapter(container.resolve(ClientScopeEntity));
552
+ const service = new ClientScopeService({ repository });
553
+ return new ClientScopeController({ service });
511
554
  }
512
555
  createRoleAttributeController(container) {
513
556
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
514
- return new RoleAttributeController({ service: new RoleAttributeService({
515
- repository: new RoleAttributeRepositoryAdapter(container.resolve(RoleAttributeEntity)),
516
- reservedNames: new Set(dataSource.getMetadata(RoleEntity).columns.map((c) => c.propertyName))
517
- }) });
557
+ const repository = new RoleAttributeRepositoryAdapter(container.resolve(RoleAttributeEntity));
558
+ const reservedNames = new Set(dataSource.getMetadata(RoleEntity).columns.map((c) => c.propertyName));
559
+ const service = new RoleAttributeService({
560
+ repository,
561
+ reservedNames
562
+ });
563
+ return new RoleAttributeController({ service });
518
564
  }
519
565
  createRolePermissionController(container) {
520
- return new RolePermissionController({ service: new RolePermissionService({
521
- repository: new RolePermissionRepositoryAdapter(container.resolve(RolePermissionEntity)),
522
- permissionRepository: this.createPermissionRepository(container),
523
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
524
- }) });
566
+ const repository = new RolePermissionRepositoryAdapter(container.resolve(RolePermissionEntity));
567
+ const permissionRepository = this.createPermissionRepository(container);
568
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
569
+ const service = new RolePermissionService({
570
+ repository,
571
+ permissionRepository,
572
+ identityPermissionProvider
573
+ });
574
+ return new RolePermissionController({ service });
525
575
  }
526
576
  createPermissionPolicyController(container) {
527
- return new PermissionPolicyController({ service: new PermissionPolicyService({ repository: new PermissionPolicyRepositoryAdapter(container.resolve(PermissionPolicyEntity)) }) });
577
+ const repository = new PermissionPolicyRepositoryAdapter(container.resolve(PermissionPolicyEntity));
578
+ const service = new PermissionPolicyService({ repository });
579
+ return new PermissionPolicyController({ service });
528
580
  }
529
581
  createScopeController(container) {
530
582
  const realmRepository = new RealmRepositoryAdapter(container.resolve(RealmEntity));
531
- return new ScopeController({ service: new ScopeService({
532
- repository: new ScopeRepositoryAdapter({
533
- repository: container.resolve(ScopeEntity),
534
- realmRepository: container.resolve(RealmEntity)
535
- }),
583
+ const repository = new ScopeRepositoryAdapter({
584
+ repository: container.resolve(ScopeEntity),
585
+ realmRepository: container.resolve(RealmEntity)
586
+ });
587
+ const service = new ScopeService({
588
+ repository,
536
589
  realmRepository
537
- }) });
590
+ });
591
+ return new ScopeController({ service });
538
592
  }
539
593
  createKeyController(container) {
540
- return new KeyController({ service: new KeyService({
594
+ const service = new KeyService({
541
595
  repository: container.resolve(OAuth2InjectionToken.KeyStore),
542
596
  eventService: container.resolve(DatabaseInjectionKey.EventService),
543
597
  requestContext: useRequestEventContext
544
- }) });
598
+ });
599
+ return new KeyController({ service });
545
600
  }
546
601
  createTrustAnchorController(container) {
547
- return new TrustAnchorController({ service: new TrustAnchorService({
548
- repository: new TrustAnchorRepositoryAdapter(container.resolve(DatabaseInjectionKey.DataSource)),
602
+ const repository = new TrustAnchorRepositoryAdapter(container.resolve(DatabaseInjectionKey.DataSource));
603
+ const service = new TrustAnchorService({
604
+ repository,
549
605
  eventService: container.resolve(DatabaseInjectionKey.EventService),
550
606
  requestContext: useRequestEventContext
551
- }) });
607
+ });
608
+ return new TrustAnchorController({ service });
552
609
  }
553
610
  createSessionController(container) {
554
- return new SessionController({ service: new SessionService({ repository: container.resolve(AuthenticationInjectionKey.SessionRepository) }) });
611
+ const repository = container.resolve(AuthenticationInjectionKey.SessionRepository);
612
+ const service = new SessionService({ repository });
613
+ return new SessionController({ service });
555
614
  }
556
615
  createConsentService(container) {
557
- return new ConsentService({ repository: container.resolve(OAuth2InjectionToken.ConsentRepository) });
616
+ const repository = container.resolve(OAuth2InjectionToken.ConsentRepository);
617
+ return new ConsentService({ repository });
558
618
  }
559
619
  createConsentController(container) {
560
620
  return new ConsentController({ service: this.createConsentService(container) });
@@ -636,18 +696,21 @@ var HTTPControllerModule = class {
636
696
  });
637
697
  }
638
698
  createEventController(container) {
639
- return new EventController({ service: container.resolve(DatabaseInjectionKey.EventService) });
699
+ const service = container.resolve(DatabaseInjectionKey.EventService);
700
+ return new EventController({ service });
640
701
  }
641
702
  createUserService(container) {
642
703
  const config = container.resolve(ConfigInjectionKey);
643
704
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
644
705
  const realmRepository = container.resolve(RealmEntity);
706
+ const repository = new UserRepositoryAdapter({
707
+ repository: new UserRepository(dataSource),
708
+ realmRepository
709
+ });
710
+ const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);
645
711
  return new UserService({
646
- repository: new UserRepositoryAdapter({
647
- repository: new UserRepository(dataSource),
648
- realmRepository
649
- }),
650
- realmRepository: new RealmRepositoryAdapter(realmRepository),
712
+ repository,
713
+ realmRepository: realmRepositoryAdapter,
651
714
  passwordMinLength: config.passwordMinLength
652
715
  });
653
716
  }
@@ -659,23 +722,33 @@ var HTTPControllerModule = class {
659
722
  }
660
723
  createUserAttributeController(container) {
661
724
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
662
- return new UserAttributeController({ service: new UserAttributeService({
663
- repository: new UserAttributeRepositoryAdapter(container.resolve(UserAttributeEntity)),
664
- reservedNames: new Set(dataSource.getMetadata(UserEntity).columns.map((c) => c.propertyName))
665
- }) });
725
+ const repository = new UserAttributeRepositoryAdapter(container.resolve(UserAttributeEntity));
726
+ const reservedNames = new Set(dataSource.getMetadata(UserEntity).columns.map((c) => c.propertyName));
727
+ const service = new UserAttributeService({
728
+ repository,
729
+ reservedNames
730
+ });
731
+ return new UserAttributeController({ service });
666
732
  }
667
733
  createUserPermissionController(container) {
668
- return new UserPermissionController({ service: new UserPermissionService({
669
- repository: new UserPermissionRepositoryAdapter(container.resolve(UserPermissionEntity)),
670
- permissionRepository: this.createPermissionRepository(container),
671
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
672
- }) });
734
+ const repository = new UserPermissionRepositoryAdapter(container.resolve(UserPermissionEntity));
735
+ const permissionRepository = this.createPermissionRepository(container);
736
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
737
+ const service = new UserPermissionService({
738
+ repository,
739
+ permissionRepository,
740
+ identityPermissionProvider
741
+ });
742
+ return new UserPermissionController({ service });
673
743
  }
674
744
  createUserRoleController(container) {
675
- return new UserRoleController({ service: new UserRoleService({
676
- repository: new UserRoleRepositoryAdapter(container.resolve(UserRoleEntity)),
677
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
678
- }) });
745
+ const repository = new UserRoleRepositoryAdapter(container.resolve(UserRoleEntity));
746
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
747
+ const service = new UserRoleService({
748
+ repository,
749
+ identityPermissionProvider
750
+ });
751
+ return new UserRoleController({ service });
679
752
  }
680
753
  createPolicyController(container) {
681
754
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
@@ -685,27 +758,35 @@ var HTTPControllerModule = class {
685
758
  realmRepository
686
759
  });
687
760
  const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);
761
+ const service = new PolicyService({
762
+ repository,
763
+ realmRepository: realmRepositoryAdapter
764
+ });
765
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
766
+ const checkerService = new PolicyCheckerService({
767
+ repository,
768
+ realmRepository: realmRepositoryAdapter,
769
+ identityPermissionProvider
770
+ });
688
771
  return new PolicyController({
689
- service: new PolicyService({
690
- repository,
691
- realmRepository: realmRepositoryAdapter
692
- }),
693
- checkerService: new PolicyCheckerService({
694
- repository,
695
- realmRepository: realmRepositoryAdapter,
696
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
697
- })
772
+ service,
773
+ checkerService
698
774
  });
699
775
  }
700
776
  createIdentityProviderRoleController(container) {
701
- return new IdentityProviderRoleMappingController({ service: new IdentityProviderRoleMappingService({
702
- repository: new IdentityProviderRoleMappingRepositoryAdapter(container.resolve(IdentityProviderRoleMappingEntity)),
703
- roleRepository: this.createRoleRepository(container),
704
- identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
705
- }) });
777
+ const repository = new IdentityProviderRoleMappingRepositoryAdapter(container.resolve(IdentityProviderRoleMappingEntity));
778
+ const roleRepository = this.createRoleRepository(container);
779
+ const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);
780
+ const service = new IdentityProviderRoleMappingService({
781
+ repository,
782
+ roleRepository,
783
+ identityPermissionProvider
784
+ });
785
+ return new IdentityProviderRoleMappingController({ service });
706
786
  }
707
787
  createJwkController(container) {
708
- return new JwkController({ repository: container.resolve(DatabaseInjectionKey.DataSource).getRepository(KeyEntity) });
788
+ const repository = container.resolve(DatabaseInjectionKey.DataSource).getRepository(KeyEntity);
789
+ return new JwkController({ repository });
709
790
  }
710
791
  createRealmController(container) {
711
792
  const config = container.resolve(ConfigInjectionKey);
@@ -717,22 +798,27 @@ var HTTPControllerModule = class {
717
798
  realmRepository
718
799
  });
719
800
  const logger = container.resolve(LoggerInjectionKey);
801
+ const systemClientProvisioner = new SystemClientProvisioner({
802
+ clientRepository,
803
+ scopeRepository: new ScopeRepositoryAdapter({
804
+ repository: container.resolve(ScopeEntity),
805
+ realmRepository
806
+ }),
807
+ clientScopeRepository: new ClientScopeRepositoryAdapter(container.resolve(ClientScopeEntity)),
808
+ appOrigins: getAppOrigins(config),
809
+ logger
810
+ });
811
+ const keyProvisioner = new KeyProvisioner({
812
+ keyStore: container.resolve(OAuth2InjectionToken.KeyStore),
813
+ logger
814
+ });
720
815
  const service = new RealmService({
721
816
  repository,
722
- webClientProvisioner: new WebClientProvisioner({
723
- clientRepository,
724
- scopeRepository: new ScopeRepositoryAdapter({
725
- repository: container.resolve(ScopeEntity),
726
- realmRepository
727
- }),
728
- clientScopeRepository: new ClientScopeRepositoryAdapter(container.resolve(ClientScopeEntity)),
729
- appOrigins: getAppOrigins(config),
730
- logger
731
- }),
732
- keyProvisioner: new KeyProvisioner({
733
- keyStore: container.resolve(OAuth2InjectionToken.KeyStore),
734
- logger
735
- }),
817
+ realmProvisioners: [
818
+ systemClientProvisioner,
819
+ keyProvisioner,
820
+ new LazyWildcardRealmProvisioner(container)
821
+ ],
736
822
  logger
737
823
  });
738
824
  const keyRepository = dataSource.getRepository(KeyEntity);