@authup/server-core 1.0.0-beta.45 → 1.0.0-beta.47

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 (448) hide show
  1. package/LICENSE +661 -201
  2. package/README.md +3 -1
  3. package/dist/adapters/database/data-source/index.d.ts +0 -1
  4. package/dist/adapters/database/data-source/index.d.ts.map +1 -1
  5. package/dist/adapters/database/data-source/index.mjs +1 -2
  6. package/dist/adapters/database/domains/client/subscriber.d.ts +3 -6
  7. package/dist/adapters/database/domains/client/subscriber.d.ts.map +1 -1
  8. package/dist/adapters/database/domains/client/subscriber.mjs +21 -39
  9. package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
  10. package/dist/adapters/database/domains/client-permission/subscriber.d.ts +3 -6
  11. package/dist/adapters/database/domains/client-permission/subscriber.d.ts.map +1 -1
  12. package/dist/adapters/database/domains/client-permission/subscriber.mjs +24 -49
  13. package/dist/adapters/database/domains/client-permission/subscriber.mjs.map +1 -1
  14. package/dist/adapters/database/domains/client-role/subscriber.d.ts +3 -6
  15. package/dist/adapters/database/domains/client-role/subscriber.d.ts.map +1 -1
  16. package/dist/adapters/database/domains/client-role/subscriber.mjs +24 -49
  17. package/dist/adapters/database/domains/client-role/subscriber.mjs.map +1 -1
  18. package/dist/adapters/database/domains/client-scope/subscriber.d.ts +3 -6
  19. package/dist/adapters/database/domains/client-scope/subscriber.d.ts.map +1 -1
  20. package/dist/adapters/database/domains/client-scope/subscriber.mjs +21 -36
  21. package/dist/adapters/database/domains/client-scope/subscriber.mjs.map +1 -1
  22. package/dist/adapters/database/domains/identity-provider/subscriber.d.ts +3 -6
  23. package/dist/adapters/database/domains/identity-provider/subscriber.d.ts.map +1 -1
  24. package/dist/adapters/database/domains/identity-provider/subscriber.mjs +21 -39
  25. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  26. package/dist/adapters/database/domains/identity-provider-account/subscriber.d.ts +3 -6
  27. package/dist/adapters/database/domains/identity-provider-account/subscriber.d.ts.map +1 -1
  28. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs +21 -36
  29. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs.map +1 -1
  30. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts +3 -6
  31. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts.map +1 -1
  32. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs +21 -36
  33. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
  34. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.d.ts +3 -6
  35. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.d.ts.map +1 -1
  36. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs +21 -45
  37. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  38. package/dist/adapters/database/domains/permission/subscriber.d.ts +3 -6
  39. package/dist/adapters/database/domains/permission/subscriber.d.ts.map +1 -1
  40. package/dist/adapters/database/domains/permission/subscriber.mjs +28 -47
  41. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  42. package/dist/adapters/database/domains/policy/subscriber.d.ts +3 -6
  43. package/dist/adapters/database/domains/policy/subscriber.d.ts.map +1 -1
  44. package/dist/adapters/database/domains/policy/subscriber.mjs +21 -36
  45. package/dist/adapters/database/domains/policy/subscriber.mjs.map +1 -1
  46. package/dist/adapters/database/domains/policy-attribute/subscriber.d.ts +3 -6
  47. package/dist/adapters/database/domains/policy-attribute/subscriber.d.ts.map +1 -1
  48. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs +24 -45
  49. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  50. package/dist/adapters/database/domains/realm/subscriber.d.ts +3 -6
  51. package/dist/adapters/database/domains/realm/subscriber.d.ts.map +1 -1
  52. package/dist/adapters/database/domains/realm/subscriber.mjs +21 -36
  53. package/dist/adapters/database/domains/realm/subscriber.mjs.map +1 -1
  54. package/dist/adapters/database/domains/robot/subscriber.d.ts +3 -6
  55. package/dist/adapters/database/domains/robot/subscriber.d.ts.map +1 -1
  56. package/dist/adapters/database/domains/robot/subscriber.mjs +21 -39
  57. package/dist/adapters/database/domains/robot/subscriber.mjs.map +1 -1
  58. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts +3 -6
  59. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts.map +1 -1
  60. package/dist/adapters/database/domains/robot-permission/subscriber.mjs +24 -49
  61. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +1 -1
  62. package/dist/adapters/database/domains/robot-role/subscriber.d.ts +3 -6
  63. package/dist/adapters/database/domains/robot-role/subscriber.d.ts.map +1 -1
  64. package/dist/adapters/database/domains/robot-role/subscriber.mjs +24 -49
  65. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +1 -1
  66. package/dist/adapters/database/domains/role/subscriber.d.ts +3 -6
  67. package/dist/adapters/database/domains/role/subscriber.d.ts.map +1 -1
  68. package/dist/adapters/database/domains/role/subscriber.mjs +21 -41
  69. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  70. package/dist/adapters/database/domains/role-attribute/subscriber.d.ts +3 -6
  71. package/dist/adapters/database/domains/role-attribute/subscriber.d.ts.map +1 -1
  72. package/dist/adapters/database/domains/role-attribute/subscriber.mjs +24 -45
  73. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  74. package/dist/adapters/database/domains/role-permission/subscriber.d.ts +3 -6
  75. package/dist/adapters/database/domains/role-permission/subscriber.d.ts.map +1 -1
  76. package/dist/adapters/database/domains/role-permission/subscriber.mjs +24 -49
  77. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  78. package/dist/adapters/database/domains/scope/subscriber.d.ts +3 -6
  79. package/dist/adapters/database/domains/scope/subscriber.d.ts.map +1 -1
  80. package/dist/adapters/database/domains/scope/subscriber.mjs +17 -43
  81. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  82. package/dist/adapters/database/domains/user/subscriber.d.ts +3 -6
  83. package/dist/adapters/database/domains/user/subscriber.d.ts.map +1 -1
  84. package/dist/adapters/database/domains/user/subscriber.mjs +21 -39
  85. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  86. package/dist/adapters/database/domains/user-attribute/subscriber.d.ts +3 -6
  87. package/dist/adapters/database/domains/user-attribute/subscriber.d.ts.map +1 -1
  88. package/dist/adapters/database/domains/user-attribute/subscriber.mjs +24 -43
  89. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  90. package/dist/adapters/database/domains/user-permission/subscriber.d.ts +3 -6
  91. package/dist/adapters/database/domains/user-permission/subscriber.d.ts.map +1 -1
  92. package/dist/adapters/database/domains/user-permission/subscriber.mjs +24 -49
  93. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  94. package/dist/adapters/database/domains/user-role/subscriber.d.ts +3 -6
  95. package/dist/adapters/database/domains/user-role/subscriber.d.ts.map +1 -1
  96. package/dist/adapters/database/domains/user-role/subscriber.mjs +24 -49
  97. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  98. package/dist/adapters/database/index.d.ts +1 -0
  99. package/dist/adapters/database/index.d.ts.map +1 -1
  100. package/dist/adapters/database/index.mjs +3 -2
  101. package/dist/adapters/database/subscriber/index.d.ts +3 -0
  102. package/dist/adapters/database/subscriber/index.d.ts.map +1 -0
  103. package/dist/adapters/database/subscriber/index.mjs +5 -0
  104. package/dist/adapters/database/subscriber/module.d.ts +19 -0
  105. package/dist/adapters/database/subscriber/module.d.ts.map +1 -0
  106. package/dist/adapters/database/subscriber/module.mjs +70 -0
  107. package/dist/adapters/database/subscriber/module.mjs.map +1 -0
  108. package/dist/adapters/database/subscriber/types.d.ts +15 -0
  109. package/dist/adapters/database/subscriber/types.d.ts.map +1 -0
  110. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +1 -1
  111. package/dist/adapters/http/controllers/workflows/activate/module.d.ts +8 -1
  112. package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
  113. package/dist/adapters/http/controllers/workflows/activate/module.mjs +20 -1
  114. package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
  115. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  116. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +16 -37
  117. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  118. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +2 -0
  119. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
  120. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +8 -1
  121. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
  122. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +23 -2
  123. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
  124. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +8 -1
  125. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
  126. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +21 -1
  127. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
  128. package/dist/adapters/http/controllers/workflows/register/module.d.ts +8 -1
  129. package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
  130. package/dist/adapters/http/controllers/workflows/register/module.mjs +23 -2
  131. package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
  132. package/dist/adapters/http/controllers/workflows/status/module.d.ts +11 -4
  133. package/dist/adapters/http/controllers/workflows/status/module.d.ts.map +1 -1
  134. package/dist/adapters/http/controllers/workflows/status/module.mjs +17 -5
  135. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  136. package/dist/adapters/http/index.mjs +4 -1
  137. package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
  138. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  139. package/dist/adapters/http/middleware/built-in/error.d.ts +6 -1
  140. package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
  141. package/dist/adapters/http/middleware/built-in/error.mjs +2 -3
  142. package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
  143. package/dist/adapters/http/middleware/built-in/index.d.ts +1 -0
  144. package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
  145. package/dist/adapters/http/middleware/built-in/index.mjs +2 -1
  146. package/dist/adapters/http/middleware/built-in/logger.d.ts +2 -0
  147. package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
  148. package/dist/adapters/http/middleware/built-in/logger.mjs +1 -2
  149. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  150. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +15 -0
  151. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts.map +1 -0
  152. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +25 -0
  153. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +1 -0
  154. package/dist/adapters/http/middleware/index.mjs +2 -1
  155. package/dist/adapters/http/request/helpers/index.d.ts +2 -0
  156. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  157. package/dist/adapters/http/request/helpers/index.mjs +3 -1
  158. package/dist/adapters/http/request/helpers/locale.d.ts +14 -0
  159. package/dist/adapters/http/request/helpers/locale.d.ts.map +1 -0
  160. package/dist/adapters/http/request/helpers/locale.mjs +32 -0
  161. package/dist/adapters/http/request/helpers/locale.mjs.map +1 -0
  162. package/dist/adapters/http/request/helpers/locations.mjs +1 -1
  163. package/dist/adapters/http/request/helpers/redirect.d.ts +14 -0
  164. package/dist/adapters/http/request/helpers/redirect.d.ts.map +1 -0
  165. package/dist/adapters/http/request/helpers/redirect.mjs +36 -0
  166. package/dist/adapters/http/request/helpers/redirect.mjs.map +1 -0
  167. package/dist/adapters/http/request/index.mjs +3 -1
  168. package/dist/adapters/http/ui/base-path.d.ts +9 -0
  169. package/dist/adapters/http/ui/base-path.d.ts.map +1 -0
  170. package/dist/adapters/http/ui/base-path.mjs +18 -0
  171. package/dist/adapters/http/ui/base-path.mjs.map +1 -0
  172. package/dist/adapters/http/ui/index.d.ts +5 -0
  173. package/dist/adapters/http/ui/index.d.ts.map +1 -0
  174. package/dist/adapters/http/ui/index.mjs +7 -0
  175. package/dist/adapters/http/ui/render.d.ts +4 -0
  176. package/dist/adapters/http/ui/render.d.ts.map +1 -0
  177. package/dist/adapters/http/ui/render.mjs +60 -0
  178. package/dist/adapters/http/ui/render.mjs.map +1 -0
  179. package/dist/adapters/http/ui/serve.d.ts +16 -0
  180. package/dist/adapters/http/ui/serve.d.ts.map +1 -0
  181. package/dist/adapters/http/ui/serve.mjs +32 -0
  182. package/dist/adapters/http/ui/serve.mjs.map +1 -0
  183. package/dist/adapters/http/ui/types.d.ts +8 -0
  184. package/dist/adapters/http/ui/types.d.ts.map +1 -0
  185. package/dist/adapters/http/ui/types.mjs +4 -0
  186. package/dist/app/index.d.ts +0 -2
  187. package/dist/app/index.d.ts.map +1 -1
  188. package/dist/app/index.mjs +3 -3
  189. package/dist/app/modules/config/constants.d.ts +1 -0
  190. package/dist/app/modules/config/constants.d.ts.map +1 -1
  191. package/dist/app/modules/config/constants.mjs +1 -0
  192. package/dist/app/modules/config/constants.mjs.map +1 -1
  193. package/dist/app/modules/config/index.d.ts +1 -0
  194. package/dist/app/modules/config/index.d.ts.map +1 -1
  195. package/dist/app/modules/config/index.mjs +2 -1
  196. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  197. package/dist/app/modules/config/normalize.mjs +9 -2
  198. package/dist/app/modules/config/normalize.mjs.map +1 -1
  199. package/dist/app/modules/config/origins.d.ts +10 -0
  200. package/dist/app/modules/config/origins.d.ts.map +1 -0
  201. package/dist/app/modules/config/origins.mjs +21 -0
  202. package/dist/app/modules/config/origins.mjs.map +1 -0
  203. package/dist/app/modules/config/parse.d.ts.map +1 -1
  204. package/dist/app/modules/config/parse.mjs +1 -0
  205. package/dist/app/modules/config/parse.mjs.map +1 -1
  206. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  207. package/dist/app/modules/config/read/env.mjs +2 -0
  208. package/dist/app/modules/config/read/env.mjs.map +1 -1
  209. package/dist/app/modules/config/types.d.ts +14 -0
  210. package/dist/app/modules/config/types.d.ts.map +1 -1
  211. package/dist/app/modules/database/constants.d.ts +2 -0
  212. package/dist/app/modules/database/constants.d.ts.map +1 -1
  213. package/dist/app/modules/database/constants.mjs +4 -1
  214. package/dist/app/modules/database/constants.mjs.map +1 -1
  215. package/dist/app/modules/database/module.d.ts +5 -1
  216. package/dist/app/modules/database/module.d.ts.map +1 -1
  217. package/dist/app/modules/database/module.mjs +26 -15
  218. package/dist/app/modules/database/module.mjs.map +1 -1
  219. package/dist/app/modules/http/constants.d.ts +11 -0
  220. package/dist/app/modules/http/constants.d.ts.map +1 -1
  221. package/dist/app/modules/http/constants.mjs +12 -1
  222. package/dist/app/modules/http/constants.mjs.map +1 -1
  223. package/dist/app/modules/http/modules/controller.d.ts +5 -1
  224. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  225. package/dist/app/modules/http/modules/controller.mjs +75 -10
  226. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  227. package/dist/app/modules/http/modules/middleware.d.ts +2 -1
  228. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  229. package/dist/app/modules/http/modules/middleware.mjs +19 -4
  230. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  231. package/dist/app/modules/identity/module.mjs +4 -4
  232. package/dist/app/modules/identity/module.mjs.map +1 -1
  233. package/dist/app/modules/identity/repositories/provider/account/module.d.ts +3 -1
  234. package/dist/app/modules/identity/repositories/provider/account/module.d.ts.map +1 -1
  235. package/dist/app/modules/identity/repositories/provider/account/module.mjs +6 -3
  236. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  237. package/dist/app/modules/identity/repositories/provider/mapper/attribute.d.ts +3 -0
  238. package/dist/app/modules/identity/repositories/provider/mapper/attribute.d.ts.map +1 -1
  239. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs +5 -2
  240. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  241. package/dist/app/modules/identity/repositories/provider/mapper/permission.d.ts +3 -0
  242. package/dist/app/modules/identity/repositories/provider/mapper/permission.d.ts.map +1 -1
  243. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs +5 -2
  244. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  245. package/dist/app/modules/identity/repositories/provider/mapper/role.d.ts +3 -0
  246. package/dist/app/modules/identity/repositories/provider/mapper/role.d.ts.map +1 -1
  247. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs +5 -2
  248. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  249. package/dist/app/modules/index.mjs +3 -2
  250. package/dist/app/modules/logger/module.d.ts.map +1 -1
  251. package/dist/app/modules/logger/module.mjs +1 -5
  252. package/dist/app/modules/logger/module.mjs.map +1 -1
  253. package/dist/app/modules/mail/constants.d.ts +2 -1
  254. package/dist/app/modules/mail/constants.d.ts.map +1 -1
  255. package/dist/app/modules/mail/constants.mjs +2 -1
  256. package/dist/app/modules/mail/constants.mjs.map +1 -1
  257. package/dist/app/modules/mail/index.mjs +2 -2
  258. package/dist/app/modules/mail/module.d.ts.map +1 -1
  259. package/dist/app/modules/mail/module.mjs +4 -1
  260. package/dist/app/modules/mail/module.mjs.map +1 -1
  261. package/dist/app/modules/oauth2/module.d.ts.map +1 -1
  262. package/dist/app/modules/oauth2/module.mjs +3 -1
  263. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  264. package/dist/app/modules/oauth2/repositories/key/repository.d.ts +3 -0
  265. package/dist/app/modules/oauth2/repositories/key/repository.d.ts.map +1 -1
  266. package/dist/app/modules/oauth2/repositories/key/repository.mjs +5 -2
  267. package/dist/app/modules/oauth2/repositories/key/repository.mjs.map +1 -1
  268. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  269. package/dist/app/modules/provisioning/module.mjs +12 -0
  270. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  271. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  272. package/dist/app/modules/provisioning/sources/default/module.mjs +2 -1
  273. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  274. package/dist/core/entities/client/index.d.ts +1 -0
  275. package/dist/core/entities/client/index.d.ts.map +1 -1
  276. package/dist/core/entities/client/index.mjs +2 -1
  277. package/dist/core/entities/client/service.d.ts.map +1 -1
  278. package/dist/core/entities/client/service.mjs +3 -2
  279. package/dist/core/entities/client/service.mjs.map +1 -1
  280. package/dist/core/entities/client/types.d.ts +11 -1
  281. package/dist/core/entities/client/types.d.ts.map +1 -1
  282. package/dist/core/entities/client/web-client.d.ts +34 -0
  283. package/dist/core/entities/client/web-client.d.ts.map +1 -0
  284. package/dist/core/entities/client/web-client.mjs +62 -0
  285. package/dist/core/entities/client/web-client.mjs.map +1 -0
  286. package/dist/core/entities/index.mjs +2 -1
  287. package/dist/core/entities/realm/service.d.ts +6 -1
  288. package/dist/core/entities/realm/service.d.ts.map +1 -1
  289. package/dist/core/entities/realm/service.mjs +9 -0
  290. package/dist/core/entities/realm/service.mjs.map +1 -1
  291. package/dist/core/identity/index.d.ts +1 -0
  292. package/dist/core/identity/index.d.ts.map +1 -1
  293. package/dist/core/identity/index.mjs +2 -1
  294. package/dist/core/identity/password-recovery/constants.d.ts +6 -0
  295. package/dist/core/identity/password-recovery/constants.d.ts.map +1 -0
  296. package/dist/core/identity/password-recovery/constants.mjs +12 -0
  297. package/dist/core/identity/password-recovery/constants.mjs.map +1 -0
  298. package/dist/core/identity/password-recovery/index.d.ts +1 -0
  299. package/dist/core/identity/password-recovery/index.d.ts.map +1 -1
  300. package/dist/core/identity/password-recovery/index.mjs +2 -1
  301. package/dist/core/identity/password-recovery/service.d.ts +4 -2
  302. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  303. package/dist/core/identity/password-recovery/service.mjs +17 -6
  304. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  305. package/dist/core/identity/password-recovery/types.d.ts +5 -2
  306. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  307. package/dist/core/identity/registration/service.d.ts +4 -2
  308. package/dist/core/identity/registration/service.d.ts.map +1 -1
  309. package/dist/core/identity/registration/service.mjs +15 -6
  310. package/dist/core/identity/registration/service.mjs.map +1 -1
  311. package/dist/core/identity/registration/types.d.ts +5 -2
  312. package/dist/core/identity/registration/types.d.ts.map +1 -1
  313. package/dist/core/identity/role/module.d.ts.map +1 -1
  314. package/dist/core/identity/role/module.mjs +1 -1
  315. package/dist/core/identity/role/module.mjs.map +1 -1
  316. package/dist/core/identity/types.d.ts +10 -0
  317. package/dist/core/identity/types.d.ts.map +1 -0
  318. package/dist/core/identity/types.mjs +4 -0
  319. package/dist/core/index.mjs +8 -1
  320. package/dist/core/mail/format/blocks.d.ts +12 -0
  321. package/dist/core/mail/format/blocks.d.ts.map +1 -0
  322. package/dist/core/mail/format/blocks.mjs +47 -0
  323. package/dist/core/mail/format/blocks.mjs.map +1 -0
  324. package/dist/core/mail/format/html.d.ts +9 -0
  325. package/dist/core/mail/format/html.d.ts.map +1 -0
  326. package/dist/core/mail/format/html.mjs +41 -0
  327. package/dist/core/mail/format/html.mjs.map +1 -0
  328. package/dist/core/mail/format/index.d.ts +5 -0
  329. package/dist/core/mail/format/index.d.ts.map +1 -0
  330. package/dist/core/mail/format/index.mjs +7 -0
  331. package/dist/core/mail/format/text.d.ts +3 -0
  332. package/dist/core/mail/format/text.d.ts.map +1 -0
  333. package/dist/core/mail/format/text.mjs +20 -0
  334. package/dist/core/mail/format/text.mjs.map +1 -0
  335. package/dist/core/mail/format/types.d.ts +30 -0
  336. package/dist/core/mail/format/types.d.ts.map +1 -0
  337. package/dist/core/mail/format/types.mjs +4 -0
  338. package/dist/core/mail/index.d.ts +3 -0
  339. package/dist/core/mail/index.d.ts.map +1 -1
  340. package/dist/core/mail/index.mjs +6 -1
  341. package/dist/core/mail/renderer.d.ts +10 -0
  342. package/dist/core/mail/renderer.d.ts.map +1 -0
  343. package/dist/core/mail/renderer.mjs +49 -0
  344. package/dist/core/mail/renderer.mjs.map +1 -0
  345. package/dist/core/mail/template/define.d.ts +7 -0
  346. package/dist/core/mail/template/define.d.ts.map +1 -0
  347. package/dist/core/mail/template/define.mjs +14 -0
  348. package/dist/core/mail/template/define.mjs.map +1 -0
  349. package/dist/core/mail/template/index.d.ts +4 -0
  350. package/dist/core/mail/template/index.d.ts.map +1 -0
  351. package/dist/core/mail/template/index.mjs +7 -0
  352. package/dist/core/mail/template/registry.d.ts +6 -0
  353. package/dist/core/mail/template/registry.d.ts.map +1 -0
  354. package/dist/core/mail/template/registry.mjs +15 -0
  355. package/dist/core/mail/template/registry.mjs.map +1 -0
  356. package/dist/core/mail/template/templates/password-reset.d.ts +3 -0
  357. package/dist/core/mail/template/templates/password-reset.d.ts.map +1 -0
  358. package/dist/core/mail/template/templates/password-reset.mjs +36 -0
  359. package/dist/core/mail/template/templates/password-reset.mjs.map +1 -0
  360. package/dist/core/mail/template/templates/registration-activation.d.ts +3 -0
  361. package/dist/core/mail/template/templates/registration-activation.d.ts.map +1 -0
  362. package/dist/core/mail/template/templates/registration-activation.mjs +34 -0
  363. package/dist/core/mail/template/templates/registration-activation.mjs.map +1 -0
  364. package/dist/core/mail/template/types.d.ts +39 -0
  365. package/dist/core/mail/template/types.d.ts.map +1 -0
  366. package/dist/core/mail/template/types.mjs +13 -0
  367. package/dist/core/mail/template/types.mjs.map +1 -0
  368. package/dist/core/mail/types.d.ts +21 -0
  369. package/dist/core/mail/types.d.ts.map +1 -1
  370. package/dist/index.mjs +7 -4
  371. package/dist/swagger.json +98 -3
  372. package/dist/ui/client/.vite/ssr-manifest.json +49086 -875
  373. package/dist/ui/client/assets/asap-latin-400-normal-Dc37g3Il.woff +0 -0
  374. package/dist/ui/client/assets/asap-latin-400-normal-DnZ1MOsG.woff2 +0 -0
  375. package/dist/ui/client/assets/asap-latin-700-normal-Dqcopq14.woff +0 -0
  376. package/dist/ui/client/assets/asap-latin-700-normal-l2Y8pi-F.woff2 +0 -0
  377. package/dist/ui/client/assets/asap-latin-ext-400-normal-C-fcRdtE.woff +0 -0
  378. package/dist/ui/client/assets/asap-latin-ext-400-normal-DwYtpHbV.woff2 +0 -0
  379. package/dist/ui/client/assets/asap-latin-ext-700-normal-D00OESsZ.woff +0 -0
  380. package/dist/ui/client/assets/asap-latin-ext-700-normal-y8bo5aW5.woff2 +0 -0
  381. package/dist/ui/client/assets/asap-vietnamese-400-normal-DGyJlJLT.woff2 +0 -0
  382. package/dist/ui/client/assets/asap-vietnamese-400-normal-lfLaoF2x.woff +0 -0
  383. package/dist/ui/client/assets/asap-vietnamese-700-normal-B-e19ug5.woff +0 -0
  384. package/dist/ui/client/assets/asap-vietnamese-700-normal-D-SxY94i.woff2 +0 -0
  385. package/dist/ui/client/assets/index-BeXJgvKE.css +2 -0
  386. package/dist/ui/client/assets/index-CgLTRwpP.js +95 -0
  387. package/dist/ui/client/assets/nunito-cyrillic-300-normal-BPQV259B.woff2 +0 -0
  388. package/dist/ui/client/assets/nunito-cyrillic-300-normal-g5qSsvc0.woff +0 -0
  389. package/dist/ui/client/assets/nunito-cyrillic-400-normal-D1j0u8EH.woff +0 -0
  390. package/dist/ui/client/assets/nunito-cyrillic-400-normal-xAOo5cBP.woff2 +0 -0
  391. package/dist/ui/client/assets/nunito-cyrillic-600-normal-BUjmtIuu.woff +0 -0
  392. package/dist/ui/client/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2 +0 -0
  393. package/dist/ui/client/assets/nunito-cyrillic-700-normal-DP36NgGt.woff2 +0 -0
  394. package/dist/ui/client/assets/nunito-cyrillic-700-normal-DfHRUDv-.woff +0 -0
  395. package/dist/ui/client/assets/nunito-cyrillic-ext-300-normal-BDHtqmCR.woff +0 -0
  396. package/dist/ui/client/assets/nunito-cyrillic-ext-300-normal-ChMQLIrm.woff2 +0 -0
  397. package/dist/ui/client/assets/nunito-cyrillic-ext-400-normal-CuPM9foi.woff2 +0 -0
  398. package/dist/ui/client/assets/nunito-cyrillic-ext-400-normal-xaE7D4Sw.woff +0 -0
  399. package/dist/ui/client/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2 +0 -0
  400. package/dist/ui/client/assets/nunito-cyrillic-ext-600-normal-vnfu4DTE.woff +0 -0
  401. package/dist/ui/client/assets/nunito-cyrillic-ext-700-normal-BuR0mlCG.woff2 +0 -0
  402. package/dist/ui/client/assets/nunito-cyrillic-ext-700-normal-DfoqN4Gs.woff +0 -0
  403. package/dist/ui/client/assets/nunito-latin-300-normal-C3ZIKvzv.woff +0 -0
  404. package/dist/ui/client/assets/nunito-latin-300-normal-COoPE5VN.woff2 +0 -0
  405. package/dist/ui/client/assets/nunito-latin-400-normal-DKg4f3fz.woff +0 -0
  406. package/dist/ui/client/assets/nunito-latin-400-normal-r8SDr6Up.woff2 +0 -0
  407. package/dist/ui/client/assets/nunito-latin-600-normal-Br8yIETf.woff2 +0 -0
  408. package/dist/ui/client/assets/nunito-latin-600-normal-Cd0eNu1l.woff +0 -0
  409. package/dist/ui/client/assets/nunito-latin-700-normal-Dort48En.woff2 +0 -0
  410. package/dist/ui/client/assets/nunito-latin-700-normal-OcDqTBcA.woff +0 -0
  411. package/dist/ui/client/assets/nunito-latin-ext-300-normal-D1SyVuPt.woff2 +0 -0
  412. package/dist/ui/client/assets/nunito-latin-ext-300-normal-DfqbmdMl.woff +0 -0
  413. package/dist/ui/client/assets/nunito-latin-ext-400-normal-CjMJVfGn.woff +0 -0
  414. package/dist/ui/client/assets/nunito-latin-ext-400-normal-i-8OOpdj.woff2 +0 -0
  415. package/dist/ui/client/assets/nunito-latin-ext-600-normal-BKUpuB78.woff +0 -0
  416. package/dist/ui/client/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2 +0 -0
  417. package/dist/ui/client/assets/nunito-latin-ext-700-normal-BWeMsAzO.woff2 +0 -0
  418. package/dist/ui/client/assets/nunito-latin-ext-700-normal-D4woHhbd.woff +0 -0
  419. package/dist/ui/client/assets/nunito-vietnamese-300-normal-DATld5Vw.woff +0 -0
  420. package/dist/ui/client/assets/nunito-vietnamese-300-normal-mLneKULB.woff2 +0 -0
  421. package/dist/ui/client/assets/nunito-vietnamese-400-normal-BHkVbP3T.woff2 +0 -0
  422. package/dist/ui/client/assets/nunito-vietnamese-400-normal-DtOtW02z.woff +0 -0
  423. package/dist/ui/client/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2 +0 -0
  424. package/dist/ui/client/assets/nunito-vietnamese-600-normal-DO1RqFw5.woff +0 -0
  425. package/dist/ui/client/assets/nunito-vietnamese-700-normal-C9SQsXvj.woff +0 -0
  426. package/dist/ui/client/assets/nunito-vietnamese-700-normal-Ch8EUCfz.woff2 +0 -0
  427. package/dist/ui/client/index.html +2 -2
  428. package/dist/ui/server/server.js +20388 -18163
  429. package/package.json +20 -17
  430. package/dist/adapters/database/data-source/singleton.d.ts +0 -5
  431. package/dist/adapters/database/data-source/singleton.d.ts.map +0 -1
  432. package/dist/adapters/database/data-source/singleton.mjs +0 -19
  433. package/dist/adapters/database/data-source/singleton.mjs.map +0 -1
  434. package/dist/adapters/database/event-publisher/index.d.ts +0 -2
  435. package/dist/adapters/database/event-publisher/index.d.ts.map +0 -1
  436. package/dist/adapters/database/event-publisher/index.mjs +0 -5
  437. package/dist/adapters/database/event-publisher/module.d.ts +0 -6
  438. package/dist/adapters/database/event-publisher/module.d.ts.map +0 -1
  439. package/dist/adapters/database/event-publisher/module.mjs +0 -25
  440. package/dist/adapters/database/event-publisher/module.mjs.map +0 -1
  441. package/dist/app/module.d.ts +0 -2
  442. package/dist/app/module.d.ts.map +0 -1
  443. package/dist/app/module.mjs +0 -5
  444. package/dist/app/types.d.ts +0 -2
  445. package/dist/app/types.d.ts.map +0 -1
  446. package/dist/ui/client/assets/index-CjKS9a0I.css +0 -1
  447. package/dist/ui/client/assets/index-bGxpD1zZ.js +0 -95
  448. /package/dist/{app → adapters/database/subscriber}/types.mjs +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origins.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/config/origins.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAAC,GAAG,MAAM,EAAE,CAS/F"}
@@ -0,0 +1,21 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ import { URL } from "node:url";
5
+ //#region src/app/modules/config/origins.ts
6
+ /**
7
+ * Derive the set of trusted application origins (scheme://host[:port]).
8
+ *
9
+ * publicUrl may carry a path; both the OAuth2 redirect allowlist and the
10
+ * CORS origin allowlist need bare origins, so extract the origin from each
11
+ * configured URL and de-duplicate.
12
+ */ function getAppOrigins(config) {
13
+ const urls = [config.publicUrl, ...config.additionalDomains ?? []];
14
+ const origins = /* @__PURE__ */ new Set();
15
+ for (const url of urls) origins.add(new URL(url).origin);
16
+ return Array.from(origins);
17
+ }
18
+ //#endregion
19
+ export { getAppOrigins };
20
+
21
+ //# sourceMappingURL=origins.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origins.mjs","names":["URL","getAppOrigins","config","urls","publicUrl","additionalDomains","origins","Set","url","add","origin","Array","from"],"sources":["../../../../src/app/modules/config/origins.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 { URL } from 'node:url';\nimport type { Config } from './types.ts';\n\n/**\n * Derive the set of trusted application origins (scheme://host[:port]).\n *\n * publicUrl may carry a path; both the OAuth2 redirect allowlist and the\n * CORS origin allowlist need bare origins, so extract the origin from each\n * configured URL and de-duplicate.\n */\nexport function getAppOrigins(config: Pick<Config, 'publicUrl' | 'additionalDomains'>): string[] {\n const urls = [config.publicUrl, ...(config.additionalDomains ?? [])];\n\n const origins = new Set<string>();\n for (const url of urls) {\n origins.add(new URL(url).origin);\n }\n\n return Array.from(origins);\n}\n"],"mappings":";;;;;;;;;;;GAiBA,SAAgBC,cAAcC,QAAuD;CACjF,MAAMC,OAAO,CAACD,OAAOE,WAAAA,GAAeF,OAAOG,qBAAqB,CAAA,CAAA;CAEhE,MAAMC,0BAAU,IAAIC,IAAAA;CACpB,KAAK,MAAMC,OAAOL,MACdG,QAAQG,IAAI,IAAIT,IAAIQ,GAAAA,CAAAA,CAAKE,MAAM;CAGnC,OAAOC,MAAMC,KAAKN,OAAAA;AACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/config/parse.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,WAAW,CAAC,KAAK,GAAE,OAAY,GAAG,WAAW,CA4E5D"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/config/parse.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,WAAW,CAAC,KAAK,GAAE,OAAY,GAAG,WAAW,CA6E5D"}
@@ -24,6 +24,7 @@ function parseConfig(input = {}) {
24
24
  port: zod.number().nonnegative().optional(),
25
25
  host: zod.string().optional(),
26
26
  publicUrl: zod.string().url().optional(),
27
+ additionalDomains: zod.array(zod.string().url()).optional(),
27
28
  middlewareBody: zod.boolean().or(zod.record(zod.string(), zod.any())).optional(),
28
29
  middlewareCors: zod.boolean().or(zod.record(zod.string(), zod.any())).optional(),
29
30
  middlewareCookie: zod.boolean().or(zod.record(zod.string(), zod.any())).optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"parse.mjs","names":["isObject","zod","parseConfig","input","schema","object","env","string","optional","rootPath","writableDirectoryPath","logger","boolean","db","custom","value","redis","lazy","union","any","smtp","port","number","nonnegative","host","publicUrl","url","middlewareBody","or","record","middlewareCors","middlewareCookie","middlewareQuery","middlewarePrometheus","middlewareRateLimit","middlewareSwagger","tokenAccessMaxAge","tokenRefreshMaxAge","registrationEnabled","emailVerificationEnabled","passwordRecoveryEnabled","clientAuthBasic","clientSystemEnabled","clientSystemSecret","min","max","clientSystemSecretReset","userAuthBasic","userAdminEnabled","userAdminPassword","userAdminPasswordReset","robotAuthBasic","robotAdminEnabled","robotAdminSecret","robotAdminSecretReset","permissions","array","permissionsDefaultPolicyAssignment","parse"],"sources":["../../../../src/app/modules/config/parse.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information.optional(),\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\nimport zod from 'zod';\nimport type { Config, ConfigInput } from './types.ts';\n\nexport function parseConfig(input: unknown = {}): ConfigInput {\n const schema = zod.object({\n env: zod.string().optional(),\n rootPath: zod.string().optional(),\n writableDirectoryPath: zod.string().optional(),\n\n logger: zod.boolean().optional(),\n db: zod.custom<MysqlConnectionOptions | PostgresConnectionOptions | BetterSqlite3ConnectionOptions>(\n (value) => isObject(value),\n ).optional(),\n redis: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n smtp: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n port: zod.number()\n .nonnegative().optional(),\n host: zod.string().optional(),\n publicUrl: zod.string()\n .url().optional(),\n middlewareBody: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCors: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCookie: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareQuery: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewarePrometheus: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareRateLimit: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareSwagger: zod.boolean().optional(),\n\n tokenAccessMaxAge: zod.number()\n .nonnegative().optional(),\n tokenRefreshMaxAge: zod.number()\n .nonnegative().optional(),\n registrationEnabled: zod.boolean().optional(),\n emailVerificationEnabled: zod.boolean().optional(),\n passwordRecoveryEnabled: zod.boolean().optional(),\n\n clientAuthBasic: zod.boolean().optional(),\n clientSystemEnabled: zod.boolean().optional(),\n clientSystemSecret: zod.string()\n .min(3)\n .max(256).optional(),\n clientSystemSecretReset: zod.boolean().optional(),\n\n userAuthBasic: zod.boolean().optional(),\n userAdminEnabled: zod.boolean().optional(),\n userAdminPassword: zod.string()\n .min(3)\n .max(256).optional(),\n userAdminPasswordReset: zod.boolean().optional(),\n\n robotAuthBasic: zod.boolean().optional(),\n robotAdminEnabled: zod.boolean().optional(),\n robotAdminSecret: zod.string()\n .min(3)\n .max(256).optional(),\n robotAdminSecretReset: zod.boolean().optional(),\n\n permissions: zod.string()\n .or(zod.array(zod.string()))\n .optional(),\n\n permissionsDefaultPolicyAssignment: zod.boolean().optional(),\n } satisfies Record<keyof Config, any>);\n\n return schema.parse(input);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse.mjs","names":["isObject","zod","parseConfig","input","schema","object","env","string","optional","rootPath","writableDirectoryPath","logger","boolean","db","custom","value","redis","lazy","union","any","smtp","port","number","nonnegative","host","publicUrl","url","additionalDomains","array","middlewareBody","or","record","middlewareCors","middlewareCookie","middlewareQuery","middlewarePrometheus","middlewareRateLimit","middlewareSwagger","tokenAccessMaxAge","tokenRefreshMaxAge","registrationEnabled","emailVerificationEnabled","passwordRecoveryEnabled","clientAuthBasic","clientSystemEnabled","clientSystemSecret","min","max","clientSystemSecretReset","userAuthBasic","userAdminEnabled","userAdminPassword","userAdminPasswordReset","robotAuthBasic","robotAdminEnabled","robotAdminSecret","robotAdminSecretReset","permissions","permissionsDefaultPolicyAssignment","parse"],"sources":["../../../../src/app/modules/config/parse.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information.optional(),\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\nimport zod from 'zod';\nimport type { Config, ConfigInput } from './types.ts';\n\nexport function parseConfig(input: unknown = {}): ConfigInput {\n const schema = zod.object({\n env: zod.string().optional(),\n rootPath: zod.string().optional(),\n writableDirectoryPath: zod.string().optional(),\n\n logger: zod.boolean().optional(),\n db: zod.custom<MysqlConnectionOptions | PostgresConnectionOptions | BetterSqlite3ConnectionOptions>(\n (value) => isObject(value),\n ).optional(),\n redis: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n smtp: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n port: zod.number()\n .nonnegative().optional(),\n host: zod.string().optional(),\n publicUrl: zod.string()\n .url().optional(),\n additionalDomains: zod.array(zod.string().url()).optional(),\n middlewareBody: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCors: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCookie: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareQuery: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewarePrometheus: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareRateLimit: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareSwagger: zod.boolean().optional(),\n\n tokenAccessMaxAge: zod.number()\n .nonnegative().optional(),\n tokenRefreshMaxAge: zod.number()\n .nonnegative().optional(),\n registrationEnabled: zod.boolean().optional(),\n emailVerificationEnabled: zod.boolean().optional(),\n passwordRecoveryEnabled: zod.boolean().optional(),\n\n clientAuthBasic: zod.boolean().optional(),\n clientSystemEnabled: zod.boolean().optional(),\n clientSystemSecret: zod.string()\n .min(3)\n .max(256).optional(),\n clientSystemSecretReset: zod.boolean().optional(),\n\n userAuthBasic: zod.boolean().optional(),\n userAdminEnabled: zod.boolean().optional(),\n userAdminPassword: zod.string()\n .min(3)\n .max(256).optional(),\n userAdminPasswordReset: zod.boolean().optional(),\n\n robotAuthBasic: zod.boolean().optional(),\n robotAdminEnabled: zod.boolean().optional(),\n robotAdminSecret: zod.string()\n .min(3)\n .max(256).optional(),\n robotAdminSecretReset: zod.boolean().optional(),\n\n permissions: zod.string()\n .or(zod.array(zod.string()))\n .optional(),\n\n permissionsDefaultPolicyAssignment: zod.boolean().optional(),\n } satisfies Record<keyof Config, any>);\n\n return schema.parse(input);\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/config/read/env.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,oBAAoB,IAAK,WAAW,CA+JnD"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/config/read/env.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,oBAAoB,IAAK,WAAW,CAoKnD"}
@@ -22,6 +22,8 @@ function readConfigRawFromEnv() {
22
22
  if (port) options.port = Number.parseInt(`${port}`, 10);
23
23
  const publicURL = read(ConfigEnvironmentVariableName.PUBLIC_URL);
24
24
  if (publicURL) options.publicUrl = publicURL;
25
+ const additionalDomains = readArray(ConfigEnvironmentVariableName.ADDITIONAL_DOMAINS);
26
+ if (additionalDomains && additionalDomains.length > 0) options.additionalDomains = additionalDomains;
25
27
  const tokenAccessMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_ACCESS_MAX_AGE);
26
28
  if (typeof tokenAccessMaxAge !== "undefined") options.tokenAccessMaxAge = tokenAccessMaxAge;
27
29
  const tokenRefreshMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_REFRESH_MAX_AGE);
@@ -1 +1 @@
1
- {"version":3,"file":"env.mjs","names":["oneOf","read","readArray","readBool","readInt","hasEnvDataSourceOptions","readDataSourceOptionsFromEnv","ConfigEnvironmentVariableName","readConfigRawFromEnv","options","env","NODE_ENV","writableDirectoryPath","WRITABLE_DIRECTORY_PATH","db","redis","REDIS","smtp","SMTP","host","HOST","port","PORT","Number","parseInt","publicURL","PUBLIC_URL","publicUrl","tokenAccessMaxAge","TOKEN_ACCESS_MAX_AGE","tokenRefreshMaxAge","TOKEN_REFRESH_MAX_AGE","registrationEnabled","REGISTRATION_ENABLED","emailVerificationEnabled","EMAIL_VERIFICATION_ENABLED","passwordRecoveryEnabled","PASSWORD_RECOVERY_ENABLED","clientBasicAuth","CLIENT_AUTH_BASIC","clientAuthBasic","clientSystemEnabled","CLIENT_SYSTEM_ENABLED","clientAdminSecret","CLIENT_SYSTEM_SECRET","clientSystemSecret","clientAdminSecretReset","CLIENT_SYSTEM_SECRET_RESET","clientSystemSecretReset","userBasicAuth","USER_AUTH_BASIC","userAuthBasic","userAdminEnabled","USER_ADMIN_ENABLED","userAdminPassword","USER_ADMIN_PASSWORD","userAdminPasswordReset","USER_ADMIN_PASSWORD_RESET","robotBasicAuth","ROBOT_AUTH_BASIC","robotAuthBasic","robotAdminEnabled","ROBOT_ADMIN_ENABLED","robotAdminSecret","ROBOT_ADMIN_SECRET","robotAdminSecretReset","ROBOT_ADMIN_SECRET_RESET","permissions","PERMISSIONS","length","permissionsDefaultPolicyAssignment","PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT"],"sources":["../../../../../src/app/modules/config/read/env.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n oneOf, \n read, \n readArray, \n readBool, \n readInt,\n} from 'envix';\nimport { hasEnvDataSourceOptions, readDataSourceOptionsFromEnv } from 'typeorm-extension';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\n\nimport { ConfigEnvironmentVariableName } from '../constants.ts';\nimport type { ConfigInput } from '../types.ts';\n\nexport function readConfigRawFromEnv() : ConfigInput {\n const options : ConfigInput = {};\n\n const env = read(ConfigEnvironmentVariableName.NODE_ENV);\n if (env) {\n options.env = env;\n }\n\n const writableDirectoryPath = read(ConfigEnvironmentVariableName.WRITABLE_DIRECTORY_PATH);\n if (writableDirectoryPath) {\n options.writableDirectoryPath = writableDirectoryPath;\n }\n\n // -------------------------------------------------------------\n\n if (hasEnvDataSourceOptions()) {\n // todo: type casting should be avoided\n options.db = readDataSourceOptionsFromEnv() as MysqlConnectionOptions |\n PostgresConnectionOptions |\n BetterSqlite3ConnectionOptions;\n }\n\n const redis = oneOf([\n readBool(ConfigEnvironmentVariableName.REDIS),\n read(ConfigEnvironmentVariableName.REDIS),\n ]);\n if (typeof redis !== 'undefined') {\n options.redis = redis;\n }\n\n const smtp = oneOf([\n readBool(ConfigEnvironmentVariableName.SMTP),\n read(ConfigEnvironmentVariableName.SMTP),\n ]);\n if (typeof smtp !== 'undefined') {\n options.smtp = smtp;\n }\n\n // -------------------------------------------------------------\n\n const host = read(ConfigEnvironmentVariableName.HOST);\n if (host) {\n options.host = host;\n }\n\n const port = readInt(ConfigEnvironmentVariableName.PORT);\n if (port) {\n options.port = Number.parseInt(`${port}`, 10);\n }\n\n const publicURL = read(ConfigEnvironmentVariableName.PUBLIC_URL);\n if (publicURL) {\n options.publicUrl = publicURL;\n }\n\n const tokenAccessMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_ACCESS_MAX_AGE);\n if (typeof tokenAccessMaxAge !== 'undefined') {\n options.tokenAccessMaxAge = tokenAccessMaxAge;\n }\n\n const tokenRefreshMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_REFRESH_MAX_AGE);\n if (typeof tokenRefreshMaxAge !== 'undefined') {\n options.tokenRefreshMaxAge = tokenRefreshMaxAge;\n }\n\n const registrationEnabled = readBool(ConfigEnvironmentVariableName.REGISTRATION_ENABLED);\n if (typeof registrationEnabled !== 'undefined') {\n options.registrationEnabled = registrationEnabled;\n }\n\n const emailVerificationEnabled = readBool(ConfigEnvironmentVariableName.EMAIL_VERIFICATION_ENABLED);\n if (typeof emailVerificationEnabled !== 'undefined') {\n options.emailVerificationEnabled = emailVerificationEnabled;\n }\n\n const passwordRecoveryEnabled = readBool(ConfigEnvironmentVariableName.PASSWORD_RECOVERY_ENABLED);\n if (typeof passwordRecoveryEnabled !== 'undefined') {\n options.passwordRecoveryEnabled = passwordRecoveryEnabled;\n }\n\n // ---------------------------------------------------------------\n\n const clientBasicAuth = readBool(ConfigEnvironmentVariableName.CLIENT_AUTH_BASIC);\n if (typeof clientBasicAuth !== 'undefined') {\n options.clientAuthBasic = clientBasicAuth;\n }\n\n const clientSystemEnabled = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_ENABLED);\n if (typeof clientSystemEnabled !== 'undefined') {\n options.clientSystemEnabled = clientSystemEnabled;\n }\n\n const clientAdminSecret = read(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET);\n if (clientAdminSecret) {\n options.clientSystemSecret = clientAdminSecret;\n }\n\n const clientAdminSecretReset = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET_RESET);\n if (typeof clientAdminSecretReset !== 'undefined') {\n options.clientSystemSecretReset = clientAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const userBasicAuth = readBool(ConfigEnvironmentVariableName.USER_AUTH_BASIC);\n if (typeof userBasicAuth !== 'undefined') {\n options.userAuthBasic = userBasicAuth;\n }\n\n const userAdminEnabled = readBool(ConfigEnvironmentVariableName.USER_ADMIN_ENABLED);\n if (typeof userAdminEnabled !== 'undefined') {\n options.userAdminEnabled = userAdminEnabled;\n }\n\n const userAdminPassword = read(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD);\n if (userAdminPassword) {\n options.userAdminPassword = userAdminPassword;\n }\n\n const userAdminPasswordReset = readBool(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD_RESET);\n if (typeof userAdminPasswordReset !== 'undefined') {\n options.userAdminPasswordReset = userAdminPasswordReset;\n }\n\n // ---------------------------------------------------------------\n\n const robotBasicAuth = readBool(ConfigEnvironmentVariableName.ROBOT_AUTH_BASIC);\n if (typeof robotBasicAuth !== 'undefined') {\n options.robotAuthBasic = robotBasicAuth;\n }\n\n const robotAdminEnabled = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_ENABLED);\n if (typeof robotAdminEnabled !== 'undefined') {\n options.robotAdminEnabled = robotAdminEnabled;\n }\n\n const robotAdminSecret = read(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET);\n if (robotAdminSecret) {\n options.robotAdminSecret = robotAdminSecret;\n }\n\n const robotAdminSecretReset = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET_RESET);\n if (typeof robotAdminSecretReset !== 'undefined') {\n options.robotAdminSecretReset = robotAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const permissions = readArray(ConfigEnvironmentVariableName.PERMISSIONS);\n if (permissions && permissions.length > 0) {\n options.permissions = permissions;\n }\n\n const permissionsDefaultPolicyAssignment = readBool(ConfigEnvironmentVariableName.PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT);\n if (typeof permissionsDefaultPolicyAssignment !== 'undefined') {\n options.permissionsDefaultPolicyAssignment = permissionsDefaultPolicyAssignment;\n }\n\n return options;\n}\n"],"mappings":";;;;;;;AAsBA,SAAgBQ,uBAAAA;CACZ,MAAMC,UAAwB,CAAC;CAE/B,MAAMC,MAAMT,KAAKM,8BAA8BI,QAAQ;CACvD,IAAID,KACAD,QAAQC,MAAMA;CAGlB,MAAME,wBAAwBX,KAAKM,8BAA8BM,uBAAuB;CACxF,IAAID,uBACAH,QAAQG,wBAAwBA;CAKpC,IAAIP,wBAAAA,GAEAI,QAAQK,KAAKR,6BAAAA;CAKjB,MAAMS,QAAQf,MAAM,CAChBG,SAASI,8BAA8BS,KAAK,GAC5Cf,KAAKM,8BAA8BS,KAAK,CAAA,CAC3C;CACD,IAAI,OAAOD,UAAU,aACjBN,QAAQM,QAAQA;CAGpB,MAAME,OAAOjB,MAAM,CACfG,SAASI,8BAA8BW,IAAI,GAC3CjB,KAAKM,8BAA8BW,IAAI,CAAA,CAC1C;CACD,IAAI,OAAOD,SAAS,aAChBR,QAAQQ,OAAOA;CAKnB,MAAME,OAAOlB,KAAKM,8BAA8Ba,IAAI;CACpD,IAAID,MACAV,QAAQU,OAAOA;CAGnB,MAAME,OAAOjB,QAAQG,8BAA8Be,IAAI;CACvD,IAAID,MACAZ,QAAQY,OAAOE,OAAOC,SAAS,GAAGH,QAAQ,EAAA;CAG9C,MAAMI,YAAYxB,KAAKM,8BAA8BmB,UAAU;CAC/D,IAAID,WACAhB,QAAQkB,YAAYF;CAGxB,MAAMG,oBAAoBxB,QAAQG,8BAA8BsB,oBAAoB;CACpF,IAAI,OAAOD,sBAAsB,aAC7BnB,QAAQmB,oBAAoBA;CAGhC,MAAME,qBAAqB1B,QAAQG,8BAA8BwB,qBAAqB;CACtF,IAAI,OAAOD,uBAAuB,aAC9BrB,QAAQqB,qBAAqBA;CAGjC,MAAME,sBAAsB7B,SAASI,8BAA8B0B,oBAAoB;CACvF,IAAI,OAAOD,wBAAwB,aAC/BvB,QAAQuB,sBAAsBA;CAGlC,MAAME,2BAA2B/B,SAASI,8BAA8B4B,0BAA0B;CAClG,IAAI,OAAOD,6BAA6B,aACpCzB,QAAQyB,2BAA2BA;CAGvC,MAAME,0BAA0BjC,SAASI,8BAA8B8B,yBAAyB;CAChG,IAAI,OAAOD,4BAA4B,aACnC3B,QAAQ2B,0BAA0BA;CAKtC,MAAME,kBAAkBnC,SAASI,8BAA8BgC,iBAAiB;CAChF,IAAI,OAAOD,oBAAoB,aAC3B7B,QAAQ+B,kBAAkBF;CAG9B,MAAMG,sBAAsBtC,SAASI,8BAA8BmC,qBAAqB;CACxF,IAAI,OAAOD,wBAAwB,aAC/BhC,QAAQgC,sBAAsBA;CAGlC,MAAME,oBAAoB1C,KAAKM,8BAA8BqC,oBAAoB;CACjF,IAAID,mBACAlC,QAAQoC,qBAAqBF;CAGjC,MAAMG,yBAAyB3C,SAASI,8BAA8BwC,0BAA0B;CAChG,IAAI,OAAOD,2BAA2B,aAClCrC,QAAQuC,0BAA0BF;CAKtC,MAAMG,gBAAgB9C,SAASI,8BAA8B2C,eAAe;CAC5E,IAAI,OAAOD,kBAAkB,aACzBxC,QAAQ0C,gBAAgBF;CAG5B,MAAMG,mBAAmBjD,SAASI,8BAA8B8C,kBAAkB;CAClF,IAAI,OAAOD,qBAAqB,aAC5B3C,QAAQ2C,mBAAmBA;CAG/B,MAAME,oBAAoBrD,KAAKM,8BAA8BgD,mBAAmB;CAChF,IAAID,mBACA7C,QAAQ6C,oBAAoBA;CAGhC,MAAME,yBAAyBrD,SAASI,8BAA8BkD,yBAAyB;CAC/F,IAAI,OAAOD,2BAA2B,aAClC/C,QAAQ+C,yBAAyBA;CAKrC,MAAME,iBAAiBvD,SAASI,8BAA8BoD,gBAAgB;CAC9E,IAAI,OAAOD,mBAAmB,aAC1BjD,QAAQmD,iBAAiBF;CAG7B,MAAMG,oBAAoB1D,SAASI,8BAA8BuD,mBAAmB;CACpF,IAAI,OAAOD,sBAAsB,aAC7BpD,QAAQoD,oBAAoBA;CAGhC,MAAME,mBAAmB9D,KAAKM,8BAA8ByD,kBAAkB;CAC9E,IAAID,kBACAtD,QAAQsD,mBAAmBA;CAG/B,MAAME,wBAAwB9D,SAASI,8BAA8B2D,wBAAwB;CAC7F,IAAI,OAAOD,0BAA0B,aACjCxD,QAAQwD,wBAAwBA;CAKpC,MAAME,cAAcjE,UAAUK,8BAA8B6D,WAAW;CACvE,IAAID,eAAeA,YAAYE,SAAS,GACpC5D,QAAQ0D,cAAcA;CAG1B,MAAMG,qCAAqCnE,SAASI,8BAA8BgE,qCAAqC;CACvH,IAAI,OAAOD,uCAAuC,aAC9C7D,QAAQ6D,qCAAqCA;CAGjD,OAAO7D;AACX"}
1
+ {"version":3,"file":"env.mjs","names":["oneOf","read","readArray","readBool","readInt","hasEnvDataSourceOptions","readDataSourceOptionsFromEnv","ConfigEnvironmentVariableName","readConfigRawFromEnv","options","env","NODE_ENV","writableDirectoryPath","WRITABLE_DIRECTORY_PATH","db","redis","REDIS","smtp","SMTP","host","HOST","port","PORT","Number","parseInt","publicURL","PUBLIC_URL","publicUrl","additionalDomains","ADDITIONAL_DOMAINS","length","tokenAccessMaxAge","TOKEN_ACCESS_MAX_AGE","tokenRefreshMaxAge","TOKEN_REFRESH_MAX_AGE","registrationEnabled","REGISTRATION_ENABLED","emailVerificationEnabled","EMAIL_VERIFICATION_ENABLED","passwordRecoveryEnabled","PASSWORD_RECOVERY_ENABLED","clientBasicAuth","CLIENT_AUTH_BASIC","clientAuthBasic","clientSystemEnabled","CLIENT_SYSTEM_ENABLED","clientAdminSecret","CLIENT_SYSTEM_SECRET","clientSystemSecret","clientAdminSecretReset","CLIENT_SYSTEM_SECRET_RESET","clientSystemSecretReset","userBasicAuth","USER_AUTH_BASIC","userAuthBasic","userAdminEnabled","USER_ADMIN_ENABLED","userAdminPassword","USER_ADMIN_PASSWORD","userAdminPasswordReset","USER_ADMIN_PASSWORD_RESET","robotBasicAuth","ROBOT_AUTH_BASIC","robotAuthBasic","robotAdminEnabled","ROBOT_ADMIN_ENABLED","robotAdminSecret","ROBOT_ADMIN_SECRET","robotAdminSecretReset","ROBOT_ADMIN_SECRET_RESET","permissions","PERMISSIONS","permissionsDefaultPolicyAssignment","PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT"],"sources":["../../../../../src/app/modules/config/read/env.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n oneOf, \n read, \n readArray, \n readBool, \n readInt,\n} from 'envix';\nimport { hasEnvDataSourceOptions, readDataSourceOptionsFromEnv } from 'typeorm-extension';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\n\nimport { ConfigEnvironmentVariableName } from '../constants.ts';\nimport type { ConfigInput } from '../types.ts';\n\nexport function readConfigRawFromEnv() : ConfigInput {\n const options : ConfigInput = {};\n\n const env = read(ConfigEnvironmentVariableName.NODE_ENV);\n if (env) {\n options.env = env;\n }\n\n const writableDirectoryPath = read(ConfigEnvironmentVariableName.WRITABLE_DIRECTORY_PATH);\n if (writableDirectoryPath) {\n options.writableDirectoryPath = writableDirectoryPath;\n }\n\n // -------------------------------------------------------------\n\n if (hasEnvDataSourceOptions()) {\n // todo: type casting should be avoided\n options.db = readDataSourceOptionsFromEnv() as MysqlConnectionOptions |\n PostgresConnectionOptions |\n BetterSqlite3ConnectionOptions;\n }\n\n const redis = oneOf([\n readBool(ConfigEnvironmentVariableName.REDIS),\n read(ConfigEnvironmentVariableName.REDIS),\n ]);\n if (typeof redis !== 'undefined') {\n options.redis = redis;\n }\n\n const smtp = oneOf([\n readBool(ConfigEnvironmentVariableName.SMTP),\n read(ConfigEnvironmentVariableName.SMTP),\n ]);\n if (typeof smtp !== 'undefined') {\n options.smtp = smtp;\n }\n\n // -------------------------------------------------------------\n\n const host = read(ConfigEnvironmentVariableName.HOST);\n if (host) {\n options.host = host;\n }\n\n const port = readInt(ConfigEnvironmentVariableName.PORT);\n if (port) {\n options.port = Number.parseInt(`${port}`, 10);\n }\n\n const publicURL = read(ConfigEnvironmentVariableName.PUBLIC_URL);\n if (publicURL) {\n options.publicUrl = publicURL;\n }\n\n const additionalDomains = readArray(ConfigEnvironmentVariableName.ADDITIONAL_DOMAINS);\n if (additionalDomains && additionalDomains.length > 0) {\n options.additionalDomains = additionalDomains;\n }\n\n const tokenAccessMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_ACCESS_MAX_AGE);\n if (typeof tokenAccessMaxAge !== 'undefined') {\n options.tokenAccessMaxAge = tokenAccessMaxAge;\n }\n\n const tokenRefreshMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_REFRESH_MAX_AGE);\n if (typeof tokenRefreshMaxAge !== 'undefined') {\n options.tokenRefreshMaxAge = tokenRefreshMaxAge;\n }\n\n const registrationEnabled = readBool(ConfigEnvironmentVariableName.REGISTRATION_ENABLED);\n if (typeof registrationEnabled !== 'undefined') {\n options.registrationEnabled = registrationEnabled;\n }\n\n const emailVerificationEnabled = readBool(ConfigEnvironmentVariableName.EMAIL_VERIFICATION_ENABLED);\n if (typeof emailVerificationEnabled !== 'undefined') {\n options.emailVerificationEnabled = emailVerificationEnabled;\n }\n\n const passwordRecoveryEnabled = readBool(ConfigEnvironmentVariableName.PASSWORD_RECOVERY_ENABLED);\n if (typeof passwordRecoveryEnabled !== 'undefined') {\n options.passwordRecoveryEnabled = passwordRecoveryEnabled;\n }\n\n // ---------------------------------------------------------------\n\n const clientBasicAuth = readBool(ConfigEnvironmentVariableName.CLIENT_AUTH_BASIC);\n if (typeof clientBasicAuth !== 'undefined') {\n options.clientAuthBasic = clientBasicAuth;\n }\n\n const clientSystemEnabled = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_ENABLED);\n if (typeof clientSystemEnabled !== 'undefined') {\n options.clientSystemEnabled = clientSystemEnabled;\n }\n\n const clientAdminSecret = read(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET);\n if (clientAdminSecret) {\n options.clientSystemSecret = clientAdminSecret;\n }\n\n const clientAdminSecretReset = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET_RESET);\n if (typeof clientAdminSecretReset !== 'undefined') {\n options.clientSystemSecretReset = clientAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const userBasicAuth = readBool(ConfigEnvironmentVariableName.USER_AUTH_BASIC);\n if (typeof userBasicAuth !== 'undefined') {\n options.userAuthBasic = userBasicAuth;\n }\n\n const userAdminEnabled = readBool(ConfigEnvironmentVariableName.USER_ADMIN_ENABLED);\n if (typeof userAdminEnabled !== 'undefined') {\n options.userAdminEnabled = userAdminEnabled;\n }\n\n const userAdminPassword = read(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD);\n if (userAdminPassword) {\n options.userAdminPassword = userAdminPassword;\n }\n\n const userAdminPasswordReset = readBool(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD_RESET);\n if (typeof userAdminPasswordReset !== 'undefined') {\n options.userAdminPasswordReset = userAdminPasswordReset;\n }\n\n // ---------------------------------------------------------------\n\n const robotBasicAuth = readBool(ConfigEnvironmentVariableName.ROBOT_AUTH_BASIC);\n if (typeof robotBasicAuth !== 'undefined') {\n options.robotAuthBasic = robotBasicAuth;\n }\n\n const robotAdminEnabled = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_ENABLED);\n if (typeof robotAdminEnabled !== 'undefined') {\n options.robotAdminEnabled = robotAdminEnabled;\n }\n\n const robotAdminSecret = read(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET);\n if (robotAdminSecret) {\n options.robotAdminSecret = robotAdminSecret;\n }\n\n const robotAdminSecretReset = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET_RESET);\n if (typeof robotAdminSecretReset !== 'undefined') {\n options.robotAdminSecretReset = robotAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const permissions = readArray(ConfigEnvironmentVariableName.PERMISSIONS);\n if (permissions && permissions.length > 0) {\n options.permissions = permissions;\n }\n\n const permissionsDefaultPolicyAssignment = readBool(ConfigEnvironmentVariableName.PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT);\n if (typeof permissionsDefaultPolicyAssignment !== 'undefined') {\n options.permissionsDefaultPolicyAssignment = permissionsDefaultPolicyAssignment;\n }\n\n return options;\n}\n"],"mappings":"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"}
@@ -56,6 +56,20 @@ export type Config = {
56
56
  * default: http://localhost:3001
57
57
  */
58
58
  publicUrl: string;
59
+ /**
60
+ * Additional origins (besides publicUrl) that are trusted as
61
+ * redirect targets for the per-realm public `web` client and as
62
+ * allowed CORS origins. Bare origins (scheme://host[:port]); each is
63
+ * stored as `<origin>/**` in the web client's redirect_uri set.
64
+ *
65
+ * SECURITY: the `web` client is built_in (auto-consent + `global`
66
+ * scope), so any origin listed here can obtain a full-permission user
67
+ * token once a user logs in. Adding a domain grants it full login
68
+ * capability for every realm.
69
+ *
70
+ * default: []
71
+ */
72
+ additionalDomains: string[];
59
73
  /**
60
74
  * use body middleware
61
75
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/config/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACjB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAI9B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAC;IAE3D;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;IAIrC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAIlB;;;;OAIG;IACH,cAAc,EAAE,OAAO,GAAG,WAAW,CAAC;IAEtC;;;;OAIG;IACH,cAAc,EAAE,OAAO,GAAG,WAAW,CAAC;IAEtC;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,GAAG,aAAa,CAAC;IAE1C;;OAEG;IACH,oBAAoB,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAElD;;OAEG;IACH,eAAe,EAAE,OAAO,GAAG,YAAY,CAAC;IAExC;;OAEG;IACH,mBAAmB,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAEhD;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAI9C;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAI1B;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAC;IAIjC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAC;IAIjC;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAIhC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAI/B;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE/B;;;;;;OAMG;IACH,kCAAkC,EAAE,OAAO,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import type { IDomainEventPublisher } from '@authup/server-kit';
1
2
  import type { DataSource } from 'typeorm';
2
3
  import { TypedToken } from 'eldin';
3
4
  export declare const DatabaseInjectionKey: {
4
5
  readonly DataSource: TypedToken<DataSource>;
6
+ readonly DomainEventPublisher: TypedToken<IDomainEventPublisher>;
5
7
  };
6
8
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/database/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,eAAO,MAAM,oBAAoB;;CAAoE,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/database/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC"}
@@ -3,7 +3,10 @@ import "node:url";
3
3
  import.meta.url;
4
4
  import { TypedToken } from "eldin";
5
5
  //#region src/app/modules/database/constants.ts
6
- const DatabaseInjectionKey = { DataSource: new TypedToken("DataSource") };
6
+ const DatabaseInjectionKey = {
7
+ DataSource: new TypedToken("DataSource"),
8
+ DomainEventPublisher: new TypedToken("DomainEventPublisher")
9
+ };
7
10
  //#endregion
8
11
  export { DatabaseInjectionKey };
9
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":["TypedToken","DatabaseInjectionKey","DataSource"],"sources":["../../../../src/app/modules/database/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 { DataSource } from 'typeorm';\nimport { TypedToken } from 'eldin';\n\nexport const DatabaseInjectionKey = { DataSource: new TypedToken<DataSource>('DataSource') } as const;\n"],"mappings":";;;;;AAUA,MAAaC,uBAAuB,EAAEC,YAAY,IAAIF,WAAuB,YAAA,EAAc"}
1
+ {"version":3,"file":"constants.mjs","names":["TypedToken","DatabaseInjectionKey","DataSource","DomainEventPublisher"],"sources":["../../../../src/app/modules/database/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 { IDomainEventPublisher } from '@authup/server-kit';\nimport type { DataSource } from 'typeorm';\nimport { TypedToken } from 'eldin';\n\nexport const DatabaseInjectionKey = {\n DataSource: new TypedToken<DataSource>('DataSource'),\n DomainEventPublisher: new TypedToken<IDomainEventPublisher>('DomainEventPublisher'),\n} as const;\n"],"mappings":";;;;;AAWA,MAAaC,uBAAuB;CAChCC,YAAY,IAAIF,WAAuB,YAAA;CACvCG,sBAAsB,IAAIH,WAAkC,sBAAA;AAChE"}
@@ -1,3 +1,5 @@
1
+ import { DomainEventPublisher } from '@authup/server-kit';
2
+ import type { RedisClient } from '@authup/server-kit';
1
3
  import type { DataSourceOptions } from 'typeorm';
2
4
  import { DataSource } from 'typeorm';
3
5
  import { DataSourceOptionsBuilder } from '../../../adapters/database/index.ts';
@@ -13,6 +15,8 @@ export declare class DatabaseModule implements IModule {
13
15
  readonly dependencies: string[];
14
16
  protected optionsBuilder: DataSourceOptionsBuilder;
15
17
  protected options: DatabaseModuleOptions;
18
+ protected eventRedisClient?: RedisClient;
19
+ protected eventPublisher?: DomainEventPublisher;
16
20
  constructor(options?: DatabaseModuleOptions);
17
21
  setup(container: IContainer): Promise<void>;
18
22
  teardown(container: IContainer): Promise<void>;
@@ -25,6 +29,6 @@ export declare class DatabaseModule implements IModule {
25
29
  */
26
30
  protected buildDataSourceOptions(container: IContainer): Promise<DataSourceOptions>;
27
31
  protected registerRepositories(container: IContainer, dataSource: DataSource): void;
28
- protected registerEventPublisher(container: IContainer): void;
32
+ protected registerEventPublisher(container: IContainer, dataSource: DataSource): void;
29
33
  }
30
34
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/database/module.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AAQtD,OAAO,EACH,wBAAwB,EAM3B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGxC,MAAM,MAAM,qBAAqB,GAAG;IAChC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E,CAAC;AAEF,qBAAa,cAAe,YAAW,OAAO;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEhC,SAAS,CAAC,cAAc,EAAG,wBAAwB,CAAC;IAEpD,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC;gBAE7B,OAAO,GAAE,qBAA0B;IAQzC,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC3C,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;cAcpC,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAgB/E,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrF;;;;OAIG;cACa,sBAAsB,CAAC,SAAS,EAAE,UAAU,GAAI,OAAO,CAAC,iBAAiB,CAAC;IAgC1F,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAI,IAAI;IAkBpF,SAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,UAAU;CAazD"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/database/module.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,oBAAoB,EAIvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AAMtD,OAAO,EACH,wBAAwB,EAK3B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGxC,MAAM,MAAM,qBAAqB,GAAG;IAChC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E,CAAC;AAEF,qBAAa,cAAe,YAAW,OAAO;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEhC,SAAS,CAAC,cAAc,EAAG,wBAAwB,CAAC;IAEpD,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC;IAEzC,SAAS,CAAC,gBAAgB,CAAC,EAAG,WAAW,CAAC;IAE1C,SAAS,CAAC,cAAc,CAAC,EAAG,oBAAoB,CAAC;gBAErC,OAAO,GAAE,qBAA0B;IAQzC,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC3C,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;cAuBpC,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAgB/E,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrF;;;;OAIG;cACa,sBAAsB,CAAC,SAAS,EAAE,UAAU,GAAI,OAAO,CAAC,iBAAiB,CAAC;IAgC1F,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAI,IAAI;IAiBpF,SAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAyBjF"}
@@ -1,8 +1,7 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
- import { setDomainEventPublisher } from "../../../adapters/database/event-publisher/module.mjs";
5
- import "../../../adapters/database/event-publisher/index.mjs";
4
+ import { EntitySubscriber } from "../../../adapters/database/subscriber/module.mjs";
6
5
  import { CacheInjectionKey } from "../cache/constants.mjs";
7
6
  import { ModuleName } from "../constants.mjs";
8
7
  import { ConfigInjectionKey } from "../config/constants.mjs";
@@ -11,21 +10,22 @@ import "../cache/index.mjs";
11
10
  import { DatabaseInjectionKey } from "./constants.mjs";
12
11
  import { DatabaseQueryResultCache } from "../../../adapters/database/cache/module.mjs";
13
12
  import { DataSourceOptionsBuilder } from "../../../adapters/database/data-source/options/module.mjs";
14
- import { setDataSourceSync, unsetDataSourceSync } from "../../../adapters/database/data-source/singleton.mjs";
15
13
  import { isDatabaseTypeSupported, isDatabaseTypeSupportedForEnvironment } from "../../../adapters/database/helpers/is-supported.mjs";
16
14
  import "../../../adapters/database/index.mjs";
17
15
  import { LoggerInjectionKey } from "../logger/constants.mjs";
18
16
  import "../logger/index.mjs";
19
17
  import { DataSource, InstanceChecker } from "typeorm";
20
- import { DomainEventPublisher, DomainEventRedisPublisher, DomainEventSocketPublisher, createRedisClient } from "@authup/server-kit";
18
+ import { DomainEventPublisher, DomainEventRedisHandler, DomainEventSocketHandler, createRedisClient } from "@authup/server-kit";
21
19
  import { AuthupError } from "@authup/errors";
22
- import { checkDatabase, createDatabase, setDataSource, synchronizeDatabaseSchema, unsetDataSource } from "typeorm-extension";
20
+ import { checkDatabase, createDatabase, synchronizeDatabaseSchema } from "typeorm-extension";
23
21
  //#region src/app/modules/database/module.ts
24
22
  var DatabaseModule = class {
25
23
  name;
26
24
  dependencies;
27
25
  optionsBuilder;
28
26
  options;
27
+ eventRedisClient;
28
+ eventPublisher;
29
29
  constructor(options = {}) {
30
30
  this.name = ModuleName.DATABASE;
31
31
  this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER];
@@ -42,13 +42,11 @@ var DatabaseModule = class {
42
42
  logger.debug("Establishing database connection...");
43
43
  await dataSource.initialize();
44
44
  logger.debug("Established database connection.");
45
- setDataSource(dataSource);
46
- setDataSourceSync(dataSource);
47
45
  if (this.options.migrate) await this.options.migrate(container, dataSource);
48
46
  else await this.migrate(container, dataSource);
49
47
  container.register(DatabaseInjectionKey.DataSource, { useValue: dataSource });
50
48
  this.registerRepositories(container, dataSource);
51
- this.registerEventPublisher(container);
49
+ this.registerEventPublisher(container, dataSource);
52
50
  }
53
51
  async teardown(container) {
54
52
  const dataSource = container.tryResolve(DatabaseInjectionKey.DataSource);
@@ -56,8 +54,15 @@ var DatabaseModule = class {
56
54
  await dataSource.data.destroy();
57
55
  container.unregister(DatabaseInjectionKey.DataSource);
58
56
  }
59
- unsetDataSource();
60
- unsetDataSourceSync();
57
+ container.unregister(DatabaseInjectionKey.DomainEventPublisher);
58
+ if (this.eventPublisher) {
59
+ await this.eventPublisher.dispose();
60
+ this.eventPublisher = void 0;
61
+ }
62
+ if (this.eventRedisClient) {
63
+ this.eventRedisClient.disconnect();
64
+ this.eventRedisClient = void 0;
65
+ }
61
66
  }
62
67
  async setupDatabase(container, options) {
63
68
  const logger = container.resolve(LoggerInjectionKey);
@@ -102,15 +107,21 @@ var DatabaseModule = class {
102
107
  container.register(entity, { useFactory: () => dataSource.getRepository(entity) });
103
108
  }
104
109
  }
105
- registerEventPublisher(container) {
110
+ registerEventPublisher(container, dataSource) {
106
111
  const config = container.resolve(ConfigInjectionKey);
107
- const publisher = new DomainEventPublisher();
112
+ const publisher = new DomainEventPublisher({ logger: container.resolve(LoggerInjectionKey) });
113
+ this.eventPublisher = publisher;
108
114
  if (config.redis) {
109
115
  const client = createRedisClient(config.redis);
110
- publisher.mount(new DomainEventRedisPublisher(client));
111
- publisher.mount(new DomainEventSocketPublisher(client));
116
+ if (client !== config.redis) this.eventRedisClient = client;
117
+ publisher.register(new DomainEventRedisHandler(client));
118
+ publisher.register(new DomainEventSocketHandler(client));
119
+ }
120
+ container.register(DatabaseInjectionKey.DomainEventPublisher, { useValue: publisher });
121
+ for (let i = 0; i < dataSource.subscribers.length; i++) {
122
+ const subscriber = dataSource.subscribers[i];
123
+ if (subscriber instanceof EntitySubscriber) subscriber.setPublisher(publisher);
112
124
  }
113
- setDomainEventPublisher(publisher);
114
125
  }
115
126
  };
116
127
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["DomainEventPublisher","DomainEventRedisPublisher","DomainEventSocketPublisher","createRedisClient","AuthupError","DataSource","InstanceChecker","checkDatabase","createDatabase","setDataSource","synchronizeDatabaseSchema","unsetDataSource","DataSourceOptionsBuilder","DatabaseQueryResultCache","isDatabaseTypeSupported","isDatabaseTypeSupportedForEnvironment","setDataSourceSync","unsetDataSourceSync","setDomainEventPublisher","CacheInjectionKey","ModuleName","DatabaseInjectionKey","ConfigInjectionKey","LoggerInjectionKey","DatabaseModule","name","dependencies","optionsBuilder","options","DATABASE","CONFIG","LOGGER","setup","container","logger","resolve","prepareBuild","dataSourceOptions","buildDataSourceOptions","setupDatabase","dataSource","debug","initialize","migrate","register","useValue","registerRepositories","registerEventPublisher","teardown","tryResolve","success","data","destroy","unregister","check","exists","synchronize","ifNotExist","config","db","buildWith","buildWithEnv","type","env","cacheResult","Object","assign","cache","provider","entities","Array","isArray","entity","isEntitySchema","useFactory","getRepository","publisher","redis","client","mount"],"sources":["../../../../src/app/modules/database/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 {\n DomainEventPublisher, \n DomainEventRedisPublisher,\n DomainEventSocketPublisher, \n createRedisClient,\n} from '@authup/server-kit';\nimport { AuthupError } from '@authup/errors';\nimport type { DataSourceOptions } from 'typeorm';\nimport { DataSource, InstanceChecker } from 'typeorm';\nimport {\n checkDatabase,\n createDatabase,\n setDataSource,\n synchronizeDatabaseSchema,\n unsetDataSource,\n} from 'typeorm-extension';\nimport {\n DataSourceOptionsBuilder,\n DatabaseQueryResultCache,\n isDatabaseTypeSupported,\n isDatabaseTypeSupportedForEnvironment,\n setDataSourceSync,\n unsetDataSourceSync,\n} from '../../../adapters/database/index.ts';\nimport { setDomainEventPublisher } from '../../../adapters/database/event-publisher/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { DatabaseInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport type DatabaseModuleOptions = {\n prepareBuild?: (container: IContainer) => Promise<void>;\n setup?: (container: IContainer, options: DataSourceOptions) => Promise<void>;\n migrate?: (container: IContainer, dataSource: DataSource) => Promise<void>;\n};\n\nexport class DatabaseModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected optionsBuilder : DataSourceOptionsBuilder;\n\n protected options: DatabaseModuleOptions;\n\n constructor(options: DatabaseModuleOptions = {}) {\n this.name = ModuleName.DATABASE;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER];\n\n this.optionsBuilder = new DataSourceOptionsBuilder();\n this.options = options;\n }\n\n async setup(container: IContainer): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n if (this.options.prepareBuild) {\n await this.options.prepareBuild(container);\n }\n\n const dataSourceOptions = await this.buildDataSourceOptions(container);\n\n if (this.options.setup) {\n await this.options.setup(container, dataSourceOptions);\n } else {\n await this.setupDatabase(container, dataSourceOptions);\n }\n\n const dataSource = new DataSource(dataSourceOptions);\n\n logger.debug('Establishing database connection...');\n await dataSource.initialize();\n logger.debug('Established database connection.');\n\n // todo: maybe remove this\n setDataSource(dataSource);\n setDataSourceSync(dataSource);\n\n if (this.options.migrate) {\n await this.options.migrate(container, dataSource);\n } else {\n await this.migrate(container, dataSource);\n }\n\n container.register(DatabaseInjectionKey.DataSource, { useValue: dataSource });\n\n this.registerRepositories(container, dataSource);\n this.registerEventPublisher(container);\n }\n\n async teardown(container: IContainer): Promise<void> {\n const dataSource = container.tryResolve(DatabaseInjectionKey.DataSource);\n if (dataSource.success) {\n await dataSource.data.destroy();\n\n container.unregister(DatabaseInjectionKey.DataSource);\n }\n\n unsetDataSource();\n unsetDataSourceSync();\n }\n\n // ----------------------------------------------------\n\n protected async setupDatabase(container: IContainer, options: DataSourceOptions): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n const check = await checkDatabase({ options });\n\n if (!check.exists) {\n logger.debug('Creating database...');\n await createDatabase({\n options,\n synchronize: false,\n ifNotExist: true, \n });\n logger.debug('Created database');\n }\n }\n\n protected async migrate(container: IContainer, dataSource: DataSource): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Migrating database...');\n await synchronizeDatabaseSchema(dataSource);\n logger.debug('Migrated database');\n }\n\n // ----------------------------------------------------\n\n /**\n * Load data source options for connection.\n *\n * @protected\n */\n protected async buildDataSourceOptions(container: IContainer) : Promise<DataSourceOptions> {\n const config = container.resolve(ConfigInjectionKey);\n\n let options : DataSourceOptions | undefined;\n if (config.db) {\n options = this.optionsBuilder.buildWith(config.db);\n } else {\n options = this.optionsBuilder.buildWithEnv();\n }\n\n if (!isDatabaseTypeSupported(options.type)) {\n throw new AuthupError(`Database type ${options.type} is not supported (only: mysql, better-sqlite3 and postgres).`);\n }\n\n if (!isDatabaseTypeSupportedForEnvironment(options.type, config.env)) {\n throw new AuthupError(`Database type ${options.type} is not supported for ${config.env}.`);\n }\n\n const cacheResult = container.tryResolve(CacheInjectionKey);\n if (cacheResult.success) {\n Object.assign(options, {\n cache: {\n provider() {\n return new DatabaseQueryResultCache(cacheResult.data);\n },\n },\n } satisfies Partial<DataSourceOptions>);\n }\n\n return options;\n }\n\n protected registerRepositories(container: IContainer, dataSource: DataSource) : void {\n const entities = dataSource.options.entities || [];\n if (!Array.isArray(entities)) {\n return;\n }\n\n for (const entity of entities) {\n if (InstanceChecker.isEntitySchema(entity)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n container.register(entity, { useFactory: () => dataSource.getRepository(entity) });\n }\n }\n\n // todo: move, wrong place\n protected registerEventPublisher(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n const publisher = new DomainEventPublisher();\n if (config.redis) {\n const client = createRedisClient(config.redis);\n\n publisher.mount(new DomainEventRedisPublisher(client));\n publisher.mount(new DomainEventSocketPublisher(client));\n }\n\n setDomainEventPublisher(publisher);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["DomainEventPublisher","DomainEventRedisHandler","DomainEventSocketHandler","createRedisClient","AuthupError","DataSource","InstanceChecker","checkDatabase","createDatabase","synchronizeDatabaseSchema","DataSourceOptionsBuilder","DatabaseQueryResultCache","EntitySubscriber","isDatabaseTypeSupported","isDatabaseTypeSupportedForEnvironment","CacheInjectionKey","ModuleName","DatabaseInjectionKey","ConfigInjectionKey","LoggerInjectionKey","DatabaseModule","name","dependencies","optionsBuilder","options","eventRedisClient","eventPublisher","DATABASE","CONFIG","LOGGER","setup","container","logger","resolve","prepareBuild","dataSourceOptions","buildDataSourceOptions","setupDatabase","dataSource","debug","initialize","migrate","register","useValue","registerRepositories","registerEventPublisher","teardown","tryResolve","success","data","destroy","unregister","dispose","undefined","disconnect","check","exists","synchronize","ifNotExist","config","db","buildWith","buildWithEnv","type","env","cacheResult","Object","assign","cache","provider","entities","Array","isArray","entity","isEntitySchema","useFactory","getRepository","publisher","redis","client","i","subscribers","length","subscriber","setPublisher"],"sources":["../../../../src/app/modules/database/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 {\n DomainEventPublisher,\n DomainEventRedisHandler,\n DomainEventSocketHandler,\n createRedisClient,\n} from '@authup/server-kit';\nimport type { RedisClient } from '@authup/server-kit';\nimport { AuthupError } from '@authup/errors';\nimport type { DataSourceOptions } from 'typeorm';\nimport { DataSource, InstanceChecker } from 'typeorm';\nimport {\n checkDatabase,\n createDatabase,\n synchronizeDatabaseSchema,\n} from 'typeorm-extension';\nimport {\n DataSourceOptionsBuilder,\n DatabaseQueryResultCache,\n EntitySubscriber,\n isDatabaseTypeSupported,\n isDatabaseTypeSupportedForEnvironment,\n} from '../../../adapters/database/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { DatabaseInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport type DatabaseModuleOptions = {\n prepareBuild?: (container: IContainer) => Promise<void>;\n setup?: (container: IContainer, options: DataSourceOptions) => Promise<void>;\n migrate?: (container: IContainer, dataSource: DataSource) => Promise<void>;\n};\n\nexport class DatabaseModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected optionsBuilder : DataSourceOptionsBuilder;\n\n protected options: DatabaseModuleOptions;\n\n protected eventRedisClient? : RedisClient;\n\n protected eventPublisher? : DomainEventPublisher;\n\n constructor(options: DatabaseModuleOptions = {}) {\n this.name = ModuleName.DATABASE;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER];\n\n this.optionsBuilder = new DataSourceOptionsBuilder();\n this.options = options;\n }\n\n async setup(container: IContainer): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n if (this.options.prepareBuild) {\n await this.options.prepareBuild(container);\n }\n\n const dataSourceOptions = await this.buildDataSourceOptions(container);\n\n if (this.options.setup) {\n await this.options.setup(container, dataSourceOptions);\n } else {\n await this.setupDatabase(container, dataSourceOptions);\n }\n\n const dataSource = new DataSource(dataSourceOptions);\n\n logger.debug('Establishing database connection...');\n await dataSource.initialize();\n logger.debug('Established database connection.');\n\n if (this.options.migrate) {\n await this.options.migrate(container, dataSource);\n } else {\n await this.migrate(container, dataSource);\n }\n\n container.register(DatabaseInjectionKey.DataSource, { useValue: dataSource });\n\n this.registerRepositories(container, dataSource);\n this.registerEventPublisher(container, dataSource);\n }\n\n async teardown(container: IContainer): Promise<void> {\n const dataSource = container.tryResolve(DatabaseInjectionKey.DataSource);\n if (dataSource.success) {\n await dataSource.data.destroy();\n\n container.unregister(DatabaseInjectionKey.DataSource);\n }\n\n container.unregister(DatabaseInjectionKey.DomainEventPublisher);\n\n if (this.eventPublisher) {\n await this.eventPublisher.dispose();\n this.eventPublisher = undefined;\n }\n\n if (this.eventRedisClient) {\n this.eventRedisClient.disconnect();\n this.eventRedisClient = undefined;\n }\n }\n\n // ----------------------------------------------------\n\n protected async setupDatabase(container: IContainer, options: DataSourceOptions): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n const check = await checkDatabase({ options });\n\n if (!check.exists) {\n logger.debug('Creating database...');\n await createDatabase({\n options,\n synchronize: false,\n ifNotExist: true, \n });\n logger.debug('Created database');\n }\n }\n\n protected async migrate(container: IContainer, dataSource: DataSource): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Migrating database...');\n await synchronizeDatabaseSchema(dataSource);\n logger.debug('Migrated database');\n }\n\n // ----------------------------------------------------\n\n /**\n * Load data source options for connection.\n *\n * @protected\n */\n protected async buildDataSourceOptions(container: IContainer) : Promise<DataSourceOptions> {\n const config = container.resolve(ConfigInjectionKey);\n\n let options : DataSourceOptions | undefined;\n if (config.db) {\n options = this.optionsBuilder.buildWith(config.db);\n } else {\n options = this.optionsBuilder.buildWithEnv();\n }\n\n if (!isDatabaseTypeSupported(options.type)) {\n throw new AuthupError(`Database type ${options.type} is not supported (only: mysql, better-sqlite3 and postgres).`);\n }\n\n if (!isDatabaseTypeSupportedForEnvironment(options.type, config.env)) {\n throw new AuthupError(`Database type ${options.type} is not supported for ${config.env}.`);\n }\n\n const cacheResult = container.tryResolve(CacheInjectionKey);\n if (cacheResult.success) {\n Object.assign(options, {\n cache: {\n provider() {\n return new DatabaseQueryResultCache(cacheResult.data);\n },\n },\n } satisfies Partial<DataSourceOptions>);\n }\n\n return options;\n }\n\n protected registerRepositories(container: IContainer, dataSource: DataSource) : void {\n const entities = dataSource.options.entities || [];\n if (!Array.isArray(entities)) {\n return;\n }\n\n for (const entity of entities) {\n if (InstanceChecker.isEntitySchema(entity)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n container.register(entity, { useFactory: () => dataSource.getRepository(entity) });\n }\n }\n\n protected registerEventPublisher(container: IContainer, dataSource: DataSource) {\n const config = container.resolve(ConfigInjectionKey);\n const logger = container.resolve(LoggerInjectionKey);\n\n const publisher = new DomainEventPublisher({ logger });\n this.eventPublisher = publisher;\n if (config.redis) {\n const client = createRedisClient(config.redis);\n if (client !== config.redis) {\n this.eventRedisClient = client;\n }\n\n publisher.register(new DomainEventRedisHandler(client));\n publisher.register(new DomainEventSocketHandler(client));\n }\n\n container.register(DatabaseInjectionKey.DomainEventPublisher, { useValue: publisher });\n\n for (let i = 0; i < dataSource.subscribers.length; i++) {\n const subscriber = dataSource.subscribers[i];\n if (subscriber instanceof EntitySubscriber) {\n subscriber.setPublisher(publisher);\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,18 @@
1
+ import type { IClient } from '@authup/core-http-kit';
1
2
  import { TypedToken } from 'eldin';
2
3
  import type { serve } from 'routup/node';
3
4
  export type HTTPServer = ReturnType<typeof serve>;
4
5
  export declare const HTTPInjectionKey: {
5
6
  readonly Server: TypedToken<import("srvx").Server<import("srvx").ServerHandler>>;
7
+ /**
8
+ * Optional HTTP-client override for the SSR'd UI pages (test
9
+ * injection — production registers nothing). Register it with a
10
+ * `useFactory` provider and `lifetime: 'transient'` so every
11
+ * resolve yields a FRESH client: client-web-kit's authentication
12
+ * hook writes per-user Authorization state onto the client it
13
+ * attaches to, so a singleton-lifetime instance shared across
14
+ * concurrent renders would leak tokens between sessions.
15
+ */
16
+ readonly UIHttpClient: TypedToken<IClient>;
6
17
  };
7
18
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/constants.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAElD,eAAO,MAAM,gBAAgB;;CAA4D,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAElD,eAAO,MAAM,gBAAgB;;IAEzB;;;;;;;;OAQG;;CAEG,CAAC"}
@@ -3,7 +3,18 @@ import "node:url";
3
3
  import.meta.url;
4
4
  import { TypedToken } from "eldin";
5
5
  //#region src/app/modules/http/constants.ts
6
- const HTTPInjectionKey = { Server: new TypedToken("Server") };
6
+ const HTTPInjectionKey = {
7
+ Server: new TypedToken("Server"),
8
+ /**
9
+ * Optional HTTP-client override for the SSR'd UI pages (test
10
+ * injection — production registers nothing). Register it with a
11
+ * `useFactory` provider and `lifetime: 'transient'` so every
12
+ * resolve yields a FRESH client: client-web-kit's authentication
13
+ * hook writes per-user Authorization state onto the client it
14
+ * attaches to, so a singleton-lifetime instance shared across
15
+ * concurrent renders would leak tokens between sessions.
16
+ */ UIHttpClient: new TypedToken("UIHttpClient")
17
+ };
7
18
  //#endregion
8
19
  export { HTTPInjectionKey };
9
20
 
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":["TypedToken","HTTPInjectionKey","Server"],"sources":["../../../../src/app/modules/http/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 { serve } from 'routup/node';\n\nexport type HTTPServer = ReturnType<typeof serve>;\n\nexport const HTTPInjectionKey = { Server: new TypedToken<HTTPServer>('Server') } as const;\n"],"mappings":";;;;;AAYA,MAAaC,mBAAmB,EAAEC,QAAQ,IAAIF,WAAuB,QAAA,EAAU"}
1
+ {"version":3,"file":"constants.mjs","names":["TypedToken","HTTPInjectionKey","Server","UIHttpClient"],"sources":["../../../../src/app/modules/http/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 { IClient } from '@authup/core-http-kit';\nimport { TypedToken } from 'eldin';\nimport type { serve } from 'routup/node';\n\nexport type HTTPServer = ReturnType<typeof serve>;\n\nexport const HTTPInjectionKey = {\n Server: new TypedToken<HTTPServer>('Server'),\n /**\n * Optional HTTP-client override for the SSR'd UI pages (test\n * injection — production registers nothing). Register it with a\n * `useFactory` provider and `lifetime: 'transient'` so every\n * resolve yields a FRESH client: client-web-kit's authentication\n * hook writes per-user Authorization state onto the client it\n * attaches to, so a singleton-lifetime instance shared across\n * concurrent renders would leak tokens between sessions.\n */\n UIHttpClient: new TypedToken<IClient>('UIHttpClient'),\n} as const;\n"],"mappings":";;;;;AAaA,MAAaC,mBAAmB;CAC5BC,QAAQ,IAAIF,WAAuB,QAAA;;;;;;;;;IAUnCG,cAAc,IAAIH,WAAoB,cAAA;AAC1C"}
@@ -1,8 +1,10 @@
1
1
  import type { App } from 'routup';
2
2
  import { ClientController, ClientPermissionController, ClientRoleController, ClientScopeController, IdentityProviderController, IdentityProviderRoleMappingController, PermissionController, PermissionPolicyController, PolicyController, RealmController, RobotController, RobotPermissionController, RobotRoleController, RoleAttributeController, RoleController, RolePermissionController, ScopeController, UserAttributeController, UserController, UserPermissionController, UserRoleController } from '../../../../adapters/http/index.ts';
3
- import { ActivateController, AuthorizeController, JwkController, OpenIDController, PasswordForgotController, PasswordResetController, RegisterController, TokenController } from '../../../../adapters/http/controllers/index.ts';
3
+ import { ActivateController, AuthorizeController, JwkController, OpenIDController, PasswordForgotController, PasswordResetController, RegisterController, StatusController, TokenController } from '../../../../adapters/http/controllers/index.ts';
4
4
  import type { IContainer } from 'eldin';
5
5
  import { PasswordRecoveryService, RegistrationService } from '../../../../core/index.ts';
6
+ import type { StatusResponseFeatures } from '@authup/core-http-kit';
7
+ import type { Config } from '../../config/index.ts';
6
8
  export declare class HTTPControllerModule {
7
9
  mount(router: App, container: IContainer): Promise<void>;
8
10
  createAuthorize(container: IContainer): AuthorizeController;
@@ -13,6 +15,8 @@ export declare class HTTPControllerModule {
13
15
  createPasswordResetController(container: IContainer): PasswordResetController;
14
16
  createPasswordRecoveryService(container: IContainer): PasswordRecoveryService;
15
17
  createRegisterController(container: IContainer): RegisterController;
18
+ createStatusController(container: IContainer): StatusController;
19
+ buildUIFeatures(config: Config): StatusResponseFeatures;
16
20
  createRegistrationService(container: IContainer): RegistrationService;
17
21
  createIdentityProvider(container: IContainer): IdentityProviderController;
18
22
  createClientController(container: IContainer): ClientController;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAwElC,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,qCAAqC,EACrC,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAElB,eAAe,EAClB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EASH,uBAAuB,EAOvB,mBAAmB,EActB,MAAM,2BAA2B,CAAC;AAOnC,qBAAa,oBAAoB;IACvB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D9D,eAAe,CAAC,SAAS,EAAE,UAAU;IAuBrC,WAAW,CAAC,SAAS,EAAE,UAAU;IAgDjC,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAI9C,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAIpD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAInD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAqBnD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAI9C,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAqB/C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiC5C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiB5C,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAoBrC,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAkDtD,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAYtD,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAShD,2BAA2B,CAAC,SAAS,EAAE,UAAU;IAQjD,+BAA+B,CAAC,SAAS,EAAE,UAAU;IAYrD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAS/C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAQtD,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAe3C,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAS9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAyB5C,oCAAoC,CAAC,SAAS,EAAE,UAAU;IAS1D,mBAAmB,CAAC,SAAS,EAAE,UAAU;IAMzC,qBAAqB,CAAC,SAAS,EAAE,UAAU;CAe9C"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAwElC,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,qCAAqC,EACrC,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAClB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EASH,uBAAuB,EAOvB,mBAAmB,EAetB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,qBAAa,oBAAoB;IACvB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D9D,eAAe,CAAC,SAAS,EAAE,UAAU;IA0BrC,WAAW,CAAC,SAAS,EAAE,UAAU;IAgDjC,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAY9C,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAwBnD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAY9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAI,sBAAsB;IAQxD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAwB/C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiC5C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiB5C,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAoBrC,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAkDtD,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAYtD,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAShD,2BAA2B,CAAC,SAAS,EAAE,UAAU;IAQjD,+BAA+B,CAAC,SAAS,EAAE,UAAU;IAYrD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAS/C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAQtD,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAe3C,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAS9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAyB5C,oCAAoC,CAAC,SAAS,EAAE,UAAU;IAS1D,mBAAmB,CAAC,SAAS,EAAE,UAAU;IAMzC,qBAAqB,CAAC,SAAS,EAAE,UAAU;CA8B9C"}