@authup/server-core 1.0.0-beta.63 → 1.0.0-beta.64

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 (710) hide show
  1. package/dist/adapters/database/data-source/options/module.d.ts +1 -0
  2. package/dist/adapters/database/data-source/options/module.d.ts.map +1 -1
  3. package/dist/adapters/database/data-source/options/module.mjs +33 -4
  4. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  5. package/dist/adapters/database/domains/client/entity.d.ts +1 -2
  6. package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
  7. package/dist/adapters/database/domains/client/entity.mjs +7 -14
  8. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  9. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts +2 -1
  10. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts.map +1 -1
  11. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs +2 -2
  12. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
  13. package/dist/adapters/database/domains/session/entity.d.ts +8 -0
  14. package/dist/adapters/database/domains/session/entity.d.ts.map +1 -1
  15. package/dist/adapters/database/domains/session/entity.mjs +19 -0
  16. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  17. package/dist/adapters/database/domains/user/entity.d.ts +1 -0
  18. package/dist/adapters/database/domains/user/entity.d.ts.map +1 -1
  19. package/dist/adapters/database/domains/user/entity.mjs +6 -0
  20. package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
  21. package/dist/adapters/database/extra-attribute-repository/repository.mjs +1 -1
  22. package/dist/adapters/database/extra-attribute-repository/repository.mjs.map +1 -1
  23. package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs +4 -2
  24. package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs.map +1 -1
  25. package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs +1 -1
  26. package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
  27. package/dist/adapters/database/index.mjs +3 -3
  28. package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.d.ts +56 -0
  29. package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.d.ts.map +1 -0
  30. package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.mjs +105 -0
  31. package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.mjs.map +1 -0
  32. package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.d.ts +56 -0
  33. package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.d.ts.map +1 -0
  34. package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.mjs +104 -0
  35. package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.mjs.map +1 -0
  36. package/dist/adapters/database/subscriber/module.d.ts +6 -2
  37. package/dist/adapters/database/subscriber/module.d.ts.map +1 -1
  38. package/dist/adapters/database/subscriber/module.mjs +9 -5
  39. package/dist/adapters/database/subscriber/module.mjs.map +1 -1
  40. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +1 -1
  41. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  42. package/dist/adapters/http/constants.d.ts +18 -0
  43. package/dist/adapters/http/constants.d.ts.map +1 -0
  44. package/dist/adapters/http/constants.mjs +23 -0
  45. package/dist/adapters/http/constants.mjs.map +1 -0
  46. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +3 -3
  47. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  48. package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts +6 -0
  49. package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts.map +1 -1
  50. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  51. package/dist/adapters/http/controllers/entities/realm/module.mjs +2 -0
  52. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  53. package/dist/adapters/http/controllers/entities/session/module.d.ts +33 -1
  54. package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -1
  55. package/dist/adapters/http/controllers/entities/session/module.mjs +74 -0
  56. package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
  57. package/dist/adapters/http/controllers/index.mjs +3 -1
  58. package/dist/adapters/http/controllers/workflows/account/index.d.ts +1 -0
  59. package/dist/adapters/http/controllers/workflows/account/index.d.ts.map +1 -1
  60. package/dist/adapters/http/controllers/workflows/account/module.d.ts +25 -16
  61. package/dist/adapters/http/controllers/workflows/account/module.d.ts.map +1 -1
  62. package/dist/adapters/http/controllers/workflows/account/module.mjs +40 -17
  63. package/dist/adapters/http/controllers/workflows/account/module.mjs.map +1 -1
  64. package/dist/adapters/http/controllers/workflows/account/types.d.ts +33 -0
  65. package/dist/adapters/http/controllers/workflows/account/types.d.ts.map +1 -0
  66. package/dist/adapters/http/controllers/workflows/activate/module.d.ts +8 -4
  67. package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
  68. package/dist/adapters/http/controllers/workflows/activate/module.mjs +7 -9
  69. package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
  70. package/dist/adapters/http/controllers/workflows/admin/index.d.ts.map +1 -0
  71. package/dist/adapters/http/controllers/workflows/admin/index.mjs +5 -0
  72. package/dist/adapters/http/controllers/workflows/admin/module.d.ts +30 -0
  73. package/dist/adapters/http/controllers/workflows/admin/module.d.ts.map +1 -0
  74. package/dist/adapters/http/controllers/workflows/admin/module.mjs +88 -0
  75. package/dist/adapters/http/controllers/workflows/admin/module.mjs.map +1 -0
  76. package/dist/adapters/http/controllers/workflows/admin/types.d.ts +14 -0
  77. package/dist/adapters/http/controllers/workflows/admin/types.d.ts.map +1 -0
  78. package/dist/adapters/http/controllers/workflows/auth-console.d.ts +16 -0
  79. package/dist/adapters/http/controllers/workflows/auth-console.d.ts.map +1 -0
  80. package/dist/adapters/http/controllers/workflows/auth-console.mjs +32 -0
  81. package/dist/adapters/http/controllers/workflows/auth-console.mjs.map +1 -0
  82. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts +16 -1
  83. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  84. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +40 -22
  85. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  86. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +5 -0
  87. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
  88. package/dist/adapters/http/controllers/workflows/console-login/index.d.ts +3 -0
  89. package/dist/adapters/http/controllers/workflows/console-login/index.d.ts.map +1 -0
  90. package/dist/adapters/http/controllers/workflows/console-login/index.mjs +5 -0
  91. package/dist/adapters/http/controllers/workflows/console-login/module.d.ts +83 -0
  92. package/dist/adapters/http/controllers/workflows/console-login/module.d.ts.map +1 -0
  93. package/dist/adapters/http/controllers/workflows/console-login/module.mjs +230 -0
  94. package/dist/adapters/http/controllers/workflows/console-login/module.mjs.map +1 -0
  95. package/dist/adapters/http/controllers/workflows/console-login/types.d.ts +58 -0
  96. package/dist/adapters/http/controllers/workflows/console-login/types.d.ts.map +1 -0
  97. package/dist/adapters/http/controllers/workflows/index.d.ts +2 -0
  98. package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
  99. package/dist/adapters/http/controllers/workflows/index.mjs +5 -1
  100. package/dist/adapters/http/controllers/workflows/logout/module.d.ts +32 -3
  101. package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -1
  102. package/dist/adapters/http/controllers/workflows/logout/module.mjs +48 -24
  103. package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -1
  104. package/dist/adapters/http/controllers/workflows/logout/types.d.ts +1 -1
  105. package/dist/adapters/http/controllers/workflows/logout/types.d.ts.map +1 -1
  106. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +8 -4
  107. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
  108. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +7 -9
  109. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
  110. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +8 -4
  111. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
  112. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +7 -10
  113. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
  114. package/dist/adapters/http/controllers/workflows/register/module.d.ts +8 -4
  115. package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
  116. package/dist/adapters/http/controllers/workflows/register/module.mjs +7 -9
  117. package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
  118. package/dist/adapters/http/controllers/workflows/status/module.mjs +1 -1
  119. package/dist/adapters/http/controllers/workflows/token/module.d.ts +45 -2
  120. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  121. package/dist/adapters/http/controllers/workflows/token/module.mjs +102 -24
  122. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  123. package/dist/adapters/http/cookie/index.d.ts +2 -0
  124. package/dist/adapters/http/cookie/index.d.ts.map +1 -0
  125. package/dist/adapters/http/cookie/index.mjs +5 -0
  126. package/dist/adapters/http/cookie/session.d.ts +35 -0
  127. package/dist/adapters/http/cookie/session.d.ts.map +1 -0
  128. package/dist/adapters/http/cookie/session.mjs +62 -0
  129. package/dist/adapters/http/cookie/session.mjs.map +1 -0
  130. package/dist/adapters/http/index.d.ts +2 -0
  131. package/dist/adapters/http/index.d.ts.map +1 -1
  132. package/dist/adapters/http/index.mjs +20 -16
  133. package/dist/adapters/http/internal-client/index.d.ts +3 -0
  134. package/dist/adapters/http/internal-client/index.d.ts.map +1 -0
  135. package/dist/adapters/http/internal-client/index.mjs +5 -0
  136. package/dist/adapters/http/internal-client/module.d.ts +21 -0
  137. package/dist/adapters/http/internal-client/module.d.ts.map +1 -0
  138. package/dist/adapters/http/{ui/auth-console/http-client.mjs → internal-client/module.mjs} +16 -15
  139. package/dist/adapters/http/internal-client/module.mjs.map +1 -0
  140. package/dist/adapters/http/internal-client/types.d.ts +13 -0
  141. package/dist/adapters/http/internal-client/types.d.ts.map +1 -0
  142. package/dist/adapters/http/middleware/built-in/authorization/index.d.ts +1 -0
  143. package/dist/adapters/http/middleware/built-in/authorization/index.d.ts.map +1 -1
  144. package/dist/adapters/http/middleware/built-in/authorization/index.mjs +2 -1
  145. package/dist/adapters/http/middleware/built-in/authorization/issuance.d.ts +45 -0
  146. package/dist/adapters/http/middleware/built-in/authorization/issuance.d.ts.map +1 -0
  147. package/dist/adapters/http/middleware/built-in/authorization/issuance.mjs +61 -0
  148. package/dist/adapters/http/middleware/built-in/authorization/issuance.mjs.map +1 -0
  149. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +26 -2
  150. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  151. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +67 -1
  152. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  153. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts +21 -1
  154. package/dist/adapters/http/middleware/built-in/authorization/types.d.ts.map +1 -1
  155. package/dist/adapters/http/middleware/built-in/basic.d.ts +2 -2
  156. package/dist/adapters/http/middleware/built-in/basic.d.ts.map +1 -1
  157. package/dist/adapters/http/middleware/built-in/basic.mjs.map +1 -1
  158. package/dist/adapters/http/middleware/built-in/cors.d.ts +8 -2
  159. package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
  160. package/dist/adapters/http/middleware/built-in/cors.mjs +20 -3
  161. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  162. package/dist/adapters/http/middleware/built-in/error.d.ts +2 -2
  163. package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
  164. package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
  165. package/dist/adapters/http/middleware/built-in/index.d.ts +1 -4
  166. package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
  167. package/dist/adapters/http/middleware/built-in/index.mjs +3 -4
  168. package/dist/adapters/http/middleware/built-in/internal-http-client.d.ts +17 -0
  169. package/dist/adapters/http/middleware/built-in/internal-http-client.d.ts.map +1 -0
  170. package/dist/adapters/http/middleware/built-in/internal-http-client.mjs +27 -0
  171. package/dist/adapters/http/middleware/built-in/internal-http-client.mjs.map +1 -0
  172. package/dist/adapters/http/middleware/built-in/logger.mjs +1 -1
  173. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  174. package/dist/adapters/http/middleware/built-in/prometheus.d.ts +6 -5
  175. package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
  176. package/dist/adapters/http/middleware/built-in/prometheus.mjs +3 -2
  177. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  178. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts +2 -2
  179. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
  180. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +15 -0
  181. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  182. package/dist/adapters/http/middleware/index.mjs +3 -4
  183. package/dist/adapters/http/request/constants.d.ts +1 -1
  184. package/dist/adapters/http/request/constants.d.ts.map +1 -1
  185. package/dist/adapters/http/request/constants.mjs +1 -5
  186. package/dist/adapters/http/request/constants.mjs.map +1 -1
  187. package/dist/adapters/http/request/helpers/index.d.ts +1 -1
  188. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  189. package/dist/adapters/http/request/helpers/index.mjs +2 -2
  190. package/dist/adapters/http/request/helpers/locale.d.ts +2 -1
  191. package/dist/adapters/http/request/helpers/locale.d.ts.map +1 -1
  192. package/dist/adapters/http/request/helpers/locale.mjs +1 -1
  193. package/dist/adapters/http/request/helpers/locale.mjs.map +1 -1
  194. package/dist/adapters/http/request/helpers/same-origin.d.ts +38 -0
  195. package/dist/adapters/http/request/helpers/same-origin.d.ts.map +1 -0
  196. package/dist/adapters/http/request/helpers/same-origin.mjs +68 -0
  197. package/dist/adapters/http/request/helpers/same-origin.mjs.map +1 -0
  198. package/dist/adapters/http/request/index.mjs +2 -2
  199. package/dist/adapters/http/request/permission/module.mjs +1 -1
  200. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  201. package/dist/adapters/http/request/types.d.ts +1 -2
  202. package/dist/adapters/http/request/types.d.ts.map +1 -1
  203. package/dist/adapters/shared/ldap/module.d.ts.map +1 -1
  204. package/dist/adapters/shared/ldap/module.mjs +4 -1
  205. package/dist/adapters/shared/ldap/module.mjs.map +1 -1
  206. package/dist/app/builder.d.ts +4 -4
  207. package/dist/app/builder.d.ts.map +1 -1
  208. package/dist/app/builder.mjs +7 -4
  209. package/dist/app/builder.mjs.map +1 -1
  210. package/dist/app/factory.d.ts +10 -0
  211. package/dist/app/factory.d.ts.map +1 -1
  212. package/dist/app/factory.mjs +26 -2
  213. package/dist/app/factory.mjs.map +1 -1
  214. package/dist/app/index.mjs +17 -19
  215. package/dist/app/modules/authentication/module.d.ts.map +1 -1
  216. package/dist/app/modules/authentication/module.mjs +15 -2
  217. package/dist/app/modules/authentication/module.mjs.map +1 -1
  218. package/dist/app/modules/authentication/repositories/session.d.ts +4 -1
  219. package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
  220. package/dist/app/modules/authentication/repositories/session.mjs +20 -3
  221. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  222. package/dist/app/modules/components/index.d.ts +1 -0
  223. package/dist/app/modules/components/index.d.ts.map +1 -1
  224. package/dist/app/modules/components/module.d.ts +3 -1
  225. package/dist/app/modules/components/module.d.ts.map +1 -1
  226. package/dist/app/modules/components/module.mjs +26 -7
  227. package/dist/app/modules/components/module.mjs.map +1 -1
  228. package/dist/app/modules/components/types.d.ts +11 -0
  229. package/dist/app/modules/components/types.d.ts.map +1 -0
  230. package/dist/app/modules/config/app-origins.d.ts +10 -0
  231. package/dist/app/modules/config/app-origins.d.ts.map +1 -0
  232. package/dist/app/modules/config/app-origins.mjs +21 -0
  233. package/dist/app/modules/config/app-origins.mjs.map +1 -0
  234. package/dist/app/modules/config/constants.d.ts +23 -50
  235. package/dist/app/modules/config/constants.d.ts.map +1 -1
  236. package/dist/app/modules/config/constants.mjs +34 -51
  237. package/dist/app/modules/config/constants.mjs.map +1 -1
  238. package/dist/app/modules/config/index.d.ts +2 -3
  239. package/dist/app/modules/config/index.d.ts.map +1 -1
  240. package/dist/app/modules/config/index.mjs +4 -8
  241. package/dist/app/modules/config/module.d.ts +2 -2
  242. package/dist/app/modules/config/module.d.ts.map +1 -1
  243. package/dist/app/modules/config/module.mjs +1 -1
  244. package/dist/app/modules/config/module.mjs.map +1 -1
  245. package/dist/app/modules/config/read.d.ts +29 -0
  246. package/dist/app/modules/config/read.d.ts.map +1 -0
  247. package/dist/app/modules/config/read.mjs +65 -0
  248. package/dist/app/modules/config/read.mjs.map +1 -0
  249. package/dist/app/modules/config/types.d.ts +30 -405
  250. package/dist/app/modules/config/types.d.ts.map +1 -1
  251. package/dist/app/modules/config/validator.d.ts.map +1 -1
  252. package/dist/app/modules/config/validator.mjs +3 -87
  253. package/dist/app/modules/config/validator.mjs.map +1 -1
  254. package/dist/app/modules/database/index.d.ts +1 -0
  255. package/dist/app/modules/database/index.d.ts.map +1 -1
  256. package/dist/app/modules/database/index.mjs +2 -1
  257. package/dist/app/modules/database/migration.d.ts +33 -0
  258. package/dist/app/modules/database/migration.d.ts.map +1 -0
  259. package/dist/app/modules/database/migration.mjs +52 -0
  260. package/dist/app/modules/database/migration.mjs.map +1 -0
  261. package/dist/app/modules/database/module.d.ts.map +1 -1
  262. package/dist/app/modules/database/module.mjs +12 -6
  263. package/dist/app/modules/database/module.mjs.map +1 -1
  264. package/dist/app/modules/database/repositories/client/repository.d.ts +6 -1
  265. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  266. package/dist/app/modules/database/repositories/client/repository.mjs +21 -4
  267. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  268. package/dist/app/modules/database/repositories/event/repository.d.ts +29 -2
  269. package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -1
  270. package/dist/app/modules/database/repositories/event/repository.mjs +42 -24
  271. package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -1
  272. package/dist/app/modules/database/repositories/helpers.d.ts +24 -1
  273. package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
  274. package/dist/app/modules/database/repositories/helpers.mjs +38 -1
  275. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  276. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +1 -1
  277. package/dist/app/modules/database/repositories/identity-provider-account/repository.mjs +4 -2
  278. package/dist/app/modules/database/repositories/identity-provider-account/repository.mjs.map +1 -1
  279. package/dist/app/modules/database/repositories/key/repository.mjs +1 -1
  280. package/dist/app/modules/database/repositories/permission/repository.mjs +1 -1
  281. package/dist/app/modules/database/repositories/policy/repository.mjs +1 -1
  282. package/dist/app/modules/database/repositories/role/repository.mjs +1 -1
  283. package/dist/app/modules/database/repositories/scope/repository.mjs +1 -1
  284. package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +1 -1
  285. package/dist/app/modules/database/repositories/user/repository.d.ts +7 -2
  286. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  287. package/dist/app/modules/database/repositories/user/repository.mjs +21 -4
  288. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  289. package/dist/app/modules/http/constants.d.ts +3 -1
  290. package/dist/app/modules/http/constants.d.ts.map +1 -1
  291. package/dist/app/modules/http/constants.mjs +3 -2
  292. package/dist/app/modules/http/constants.mjs.map +1 -1
  293. package/dist/app/modules/http/module.d.ts +30 -9
  294. package/dist/app/modules/http/module.d.ts.map +1 -1
  295. package/dist/app/modules/http/module.mjs +31 -33
  296. package/dist/app/modules/http/module.mjs.map +1 -1
  297. package/dist/app/modules/http/modules/controller.d.ts +4 -3
  298. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  299. package/dist/app/modules/http/modules/controller.mjs +65 -36
  300. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  301. package/dist/app/modules/http/modules/middleware.d.ts +13 -22
  302. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  303. package/dist/app/modules/http/modules/middleware.mjs +20 -36
  304. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  305. package/dist/app/modules/identity/module.mjs +4 -4
  306. package/dist/app/modules/identity/repositories/client.mjs +4 -2
  307. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  308. package/dist/app/modules/identity/repositories/user.mjs +4 -2
  309. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  310. package/dist/app/modules/index.mjs +21 -23
  311. package/dist/app/modules/logger/module.mjs +1 -1
  312. package/dist/app/modules/logger/module.mjs.map +1 -1
  313. package/dist/app/modules/mail/module.d.ts.map +1 -1
  314. package/dist/app/modules/mail/module.mjs.map +1 -1
  315. package/dist/app/modules/oauth2/constants.d.ts +2 -1
  316. package/dist/app/modules/oauth2/constants.d.ts.map +1 -1
  317. package/dist/app/modules/oauth2/constants.mjs +1 -0
  318. package/dist/app/modules/oauth2/constants.mjs.map +1 -1
  319. package/dist/app/modules/oauth2/module.d.ts.map +1 -1
  320. package/dist/app/modules/oauth2/module.mjs +9 -4
  321. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  322. package/dist/app/modules/oauth2/repositories/client/repository.mjs +4 -2
  323. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  324. package/dist/app/modules/oauth2/repositories/consent/repository.d.ts.map +1 -1
  325. package/dist/app/modules/oauth2/repositories/consent/repository.mjs +3 -2
  326. package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -1
  327. package/dist/app/modules/oauth2/repositories/console-login/index.d.ts +2 -0
  328. package/dist/app/modules/oauth2/repositories/console-login/index.d.ts.map +1 -0
  329. package/dist/app/modules/oauth2/repositories/console-login/index.mjs +5 -0
  330. package/dist/app/modules/oauth2/repositories/console-login/store.d.ts +19 -0
  331. package/dist/app/modules/oauth2/repositories/console-login/store.d.ts.map +1 -0
  332. package/dist/app/modules/oauth2/repositories/console-login/store.mjs +47 -0
  333. package/dist/app/modules/oauth2/repositories/console-login/store.mjs.map +1 -0
  334. package/dist/app/modules/oauth2/repositories/constants.d.ts +1 -0
  335. package/dist/app/modules/oauth2/repositories/constants.d.ts.map +1 -1
  336. package/dist/app/modules/oauth2/repositories/constants.mjs +1 -0
  337. package/dist/app/modules/oauth2/repositories/constants.mjs.map +1 -1
  338. package/dist/app/modules/oauth2/repositories/index.d.ts +1 -0
  339. package/dist/app/modules/oauth2/repositories/index.d.ts.map +1 -1
  340. package/dist/app/modules/oauth2/repositories/index.mjs +3 -1
  341. package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts +2 -2
  342. package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts.map +1 -1
  343. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +5 -3
  344. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -1
  345. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  346. package/dist/app/modules/provisioning/module.mjs +5 -6
  347. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  348. package/dist/app/modules/provisioning/sources/composite/module.d.ts.map +1 -1
  349. package/dist/app/modules/provisioning/sources/composite/module.mjs +2 -1
  350. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  351. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  352. package/dist/app/modules/provisioning/sources/default/module.mjs +2 -1
  353. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  354. package/dist/app/modules/runtime/module.d.ts.map +1 -1
  355. package/dist/app/modules/runtime/module.mjs +2 -1
  356. package/dist/app/modules/runtime/module.mjs.map +1 -1
  357. package/dist/app/types.d.ts +16 -0
  358. package/dist/app/types.d.ts.map +1 -1
  359. package/dist/cli/commands/config.d.ts +40 -0
  360. package/dist/cli/commands/config.d.ts.map +1 -0
  361. package/dist/cli/commands/config.mjs +65 -0
  362. package/dist/cli/commands/config.mjs.map +1 -0
  363. package/dist/cli/commands/healthcheck.d.ts +3 -2
  364. package/dist/cli/commands/healthcheck.d.ts.map +1 -1
  365. package/dist/cli/commands/healthcheck.mjs +6 -3
  366. package/dist/cli/commands/healthcheck.mjs.map +1 -1
  367. package/dist/cli/commands/index.d.ts +3 -0
  368. package/dist/cli/commands/index.d.ts.map +1 -1
  369. package/dist/cli/commands/index.mjs +3 -1
  370. package/dist/cli/commands/migration.d.ts +3 -10
  371. package/dist/cli/commands/migration.d.ts.map +1 -1
  372. package/dist/cli/commands/migration.mjs +17 -9
  373. package/dist/cli/commands/migration.mjs.map +1 -1
  374. package/dist/cli/commands/shutdown.d.ts +16 -0
  375. package/dist/cli/commands/shutdown.d.ts.map +1 -0
  376. package/dist/cli/commands/shutdown.mjs +41 -0
  377. package/dist/cli/commands/shutdown.mjs.map +1 -0
  378. package/dist/cli/commands/start.d.ts +3 -2
  379. package/dist/cli/commands/start.d.ts.map +1 -1
  380. package/dist/cli/commands/start.mjs +3 -21
  381. package/dist/cli/commands/start.mjs.map +1 -1
  382. package/dist/cli/commands/types.d.ts.map +1 -0
  383. package/dist/cli/index.d.ts +8 -0
  384. package/dist/cli/index.d.ts.map +1 -1
  385. package/dist/cli/index.mjs.map +1 -1
  386. package/dist/cli/module.d.ts +0 -2
  387. package/dist/cli/module.d.ts.map +1 -1
  388. package/dist/cli/module.mjs +4 -3
  389. package/dist/cli/module.mjs.map +1 -1
  390. package/dist/components/oauth2-cleaner/module.d.ts +2 -2
  391. package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
  392. package/dist/components/oauth2-cleaner/module.mjs +10 -7
  393. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  394. package/dist/core/authentication/index.mjs +2 -1
  395. package/dist/core/authentication/session/constants.d.ts +10 -0
  396. package/dist/core/authentication/session/constants.d.ts.map +1 -0
  397. package/dist/core/authentication/session/constants.mjs +16 -0
  398. package/dist/core/authentication/session/constants.mjs.map +1 -0
  399. package/dist/core/authentication/session/index.d.ts +1 -0
  400. package/dist/core/authentication/session/index.d.ts.map +1 -1
  401. package/dist/core/authentication/session/index.mjs +2 -1
  402. package/dist/core/authentication/session/module.d.ts +2 -1
  403. package/dist/core/authentication/session/module.d.ts.map +1 -1
  404. package/dist/core/authentication/session/module.mjs +7 -1
  405. package/dist/core/authentication/session/module.mjs.map +1 -1
  406. package/dist/core/authentication/session/types.d.ts +70 -1
  407. package/dist/core/authentication/session/types.d.ts.map +1 -1
  408. package/dist/core/authentication/session/types.mjs.map +1 -1
  409. package/dist/core/entities/client/schema.d.ts.map +1 -1
  410. package/dist/core/entities/client/schema.mjs +1 -2
  411. package/dist/core/entities/client/schema.mjs.map +1 -1
  412. package/dist/core/entities/client/service.d.ts.map +1 -1
  413. package/dist/core/entities/client/service.mjs +15 -1
  414. package/dist/core/entities/client/service.mjs.map +1 -1
  415. package/dist/core/entities/client/system-clients.d.ts +0 -5
  416. package/dist/core/entities/client/system-clients.d.ts.map +1 -1
  417. package/dist/core/entities/client/system-clients.mjs +0 -6
  418. package/dist/core/entities/client/system-clients.mjs.map +1 -1
  419. package/dist/core/entities/client/types.d.ts +12 -0
  420. package/dist/core/entities/client/types.d.ts.map +1 -1
  421. package/dist/core/entities/client-permission/service.mjs +1 -1
  422. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  423. package/dist/core/entities/event/constants.d.ts +1 -6
  424. package/dist/core/entities/event/constants.d.ts.map +1 -1
  425. package/dist/core/entities/event/constants.mjs +1 -5
  426. package/dist/core/entities/event/constants.mjs.map +1 -1
  427. package/dist/core/entities/event/entity-event-handler.d.ts.map +1 -1
  428. package/dist/core/entities/event/entity-event-handler.mjs +3 -2
  429. package/dist/core/entities/event/entity-event-handler.mjs.map +1 -1
  430. package/dist/core/entities/event/service.d.ts.map +1 -1
  431. package/dist/core/entities/event/service.mjs +3 -3
  432. package/dist/core/entities/event/service.mjs.map +1 -1
  433. package/dist/core/entities/event/types.d.ts +15 -1
  434. package/dist/core/entities/event/types.d.ts.map +1 -1
  435. package/dist/core/entities/permission/service.mjs +1 -2
  436. package/dist/core/entities/permission/service.mjs.map +1 -1
  437. package/dist/core/entities/role-permission/service.mjs +1 -1
  438. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  439. package/dist/core/entities/session/service.d.ts +13 -1
  440. package/dist/core/entities/session/service.d.ts.map +1 -1
  441. package/dist/core/entities/session/service.mjs +19 -16
  442. package/dist/core/entities/session/service.mjs.map +1 -1
  443. package/dist/core/entities/user/schema.d.ts.map +1 -1
  444. package/dist/core/entities/user/schema.mjs +1 -0
  445. package/dist/core/entities/user/schema.mjs.map +1 -1
  446. package/dist/core/entities/user/service.d.ts.map +1 -1
  447. package/dist/core/entities/user/service.mjs +21 -1
  448. package/dist/core/entities/user/service.mjs.map +1 -1
  449. package/dist/core/entities/user/types.d.ts +12 -0
  450. package/dist/core/entities/user/types.d.ts.map +1 -1
  451. package/dist/core/entities/user-permission/service.mjs +1 -1
  452. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  453. package/dist/core/identity/permission/junction-grant.mjs +1 -1
  454. package/dist/core/identity/permission/junction-grant.mjs.map +1 -1
  455. package/dist/core/identity/provider/account/module.mjs +1 -1
  456. package/dist/core/identity/provider/account/module.mjs.map +1 -1
  457. package/dist/core/identity/provider/authentication/protocols/oauth2/assurance.mjs +1 -1
  458. package/dist/core/identity/provider/authentication/protocols/oauth2/assurance.mjs.map +1 -1
  459. package/dist/core/identity/registration/service.d.ts.map +1 -1
  460. package/dist/core/identity/registration/service.mjs +2 -1
  461. package/dist/core/identity/registration/service.mjs.map +1 -1
  462. package/dist/core/index.mjs +11 -3
  463. package/dist/core/oauth2/authorization/helpers.d.ts +14 -0
  464. package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
  465. package/dist/core/oauth2/authorization/helpers.mjs +9 -1
  466. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  467. package/dist/core/oauth2/authorization/index.mjs +2 -2
  468. package/dist/core/oauth2/authorization/module.mjs +1 -1
  469. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  470. package/dist/core/oauth2/backchannel-logout/constants.d.ts +16 -0
  471. package/dist/core/oauth2/backchannel-logout/constants.d.ts.map +1 -0
  472. package/dist/core/oauth2/backchannel-logout/constants.mjs +20 -0
  473. package/dist/core/oauth2/backchannel-logout/constants.mjs.map +1 -0
  474. package/dist/core/oauth2/backchannel-logout/index.d.ts +4 -0
  475. package/dist/core/oauth2/backchannel-logout/index.d.ts.map +1 -0
  476. package/dist/core/oauth2/backchannel-logout/index.mjs +6 -0
  477. package/dist/core/oauth2/backchannel-logout/module.d.ts +26 -0
  478. package/dist/core/oauth2/backchannel-logout/module.d.ts.map +1 -0
  479. package/dist/core/oauth2/backchannel-logout/module.mjs +78 -0
  480. package/dist/core/oauth2/backchannel-logout/module.mjs.map +1 -0
  481. package/dist/core/oauth2/backchannel-logout/types.d.ts +29 -0
  482. package/dist/core/oauth2/backchannel-logout/types.d.ts.map +1 -0
  483. package/dist/core/oauth2/console-login/constants.d.ts +19 -0
  484. package/dist/core/oauth2/console-login/constants.d.ts.map +1 -0
  485. package/dist/core/oauth2/console-login/constants.mjs +24 -0
  486. package/dist/core/oauth2/console-login/constants.mjs.map +1 -0
  487. package/dist/core/oauth2/console-login/index.d.ts +3 -0
  488. package/dist/core/oauth2/console-login/index.d.ts.map +1 -0
  489. package/dist/core/oauth2/console-login/index.mjs +5 -0
  490. package/dist/core/oauth2/console-login/types.d.ts +53 -0
  491. package/dist/core/oauth2/console-login/types.d.ts.map +1 -0
  492. package/dist/core/oauth2/end-session/service.mjs +1 -1
  493. package/dist/core/oauth2/end-session/service.mjs.map +1 -1
  494. package/dist/core/oauth2/federated-login/module.mjs +3 -3
  495. package/dist/core/oauth2/federated-login/module.mjs.map +1 -1
  496. package/dist/core/oauth2/index.d.ts +4 -0
  497. package/dist/core/oauth2/index.d.ts.map +1 -1
  498. package/dist/core/oauth2/index.mjs +13 -3
  499. package/dist/core/oauth2/introspection/index.d.ts +3 -0
  500. package/dist/core/oauth2/introspection/index.d.ts.map +1 -0
  501. package/dist/core/oauth2/introspection/index.mjs +5 -0
  502. package/dist/core/oauth2/introspection/module.d.ts +14 -0
  503. package/dist/core/oauth2/introspection/module.d.ts.map +1 -0
  504. package/dist/core/oauth2/introspection/module.mjs +49 -0
  505. package/dist/core/oauth2/introspection/module.mjs.map +1 -0
  506. package/dist/core/oauth2/introspection/types.d.ts +45 -0
  507. package/dist/core/oauth2/introspection/types.d.ts.map +1 -0
  508. package/dist/core/oauth2/introspection/types.mjs +4 -0
  509. package/dist/core/oauth2/openid/claims.d.ts +20 -2
  510. package/dist/core/oauth2/openid/claims.d.ts.map +1 -1
  511. package/dist/core/oauth2/openid/claims.mjs +18 -4
  512. package/dist/core/oauth2/openid/claims.mjs.map +1 -1
  513. package/dist/core/oauth2/session-credential/constants.d.ts +30 -0
  514. package/dist/core/oauth2/session-credential/constants.d.ts.map +1 -0
  515. package/dist/core/oauth2/session-credential/constants.mjs +34 -0
  516. package/dist/core/oauth2/session-credential/constants.mjs.map +1 -0
  517. package/dist/core/oauth2/session-credential/index.d.ts +3 -0
  518. package/dist/core/oauth2/session-credential/index.d.ts.map +1 -0
  519. package/dist/core/oauth2/session-credential/index.mjs +6 -0
  520. package/dist/core/oauth2/session-credential/module.d.ts +31 -0
  521. package/dist/core/oauth2/session-credential/module.d.ts.map +1 -0
  522. package/dist/core/oauth2/session-credential/module.mjs +43 -0
  523. package/dist/core/oauth2/session-credential/module.mjs.map +1 -0
  524. package/dist/core/oauth2/session-token/constants.d.ts +10 -0
  525. package/dist/core/oauth2/session-token/constants.d.ts.map +1 -0
  526. package/dist/core/oauth2/session-token/constants.mjs +16 -0
  527. package/dist/core/oauth2/session-token/constants.mjs.map +1 -0
  528. package/dist/core/oauth2/session-token/index.d.ts +1 -0
  529. package/dist/core/oauth2/session-token/index.d.ts.map +1 -1
  530. package/dist/core/oauth2/session-token/index.mjs +2 -1
  531. package/dist/core/oauth2/session-token/types.d.ts +13 -2
  532. package/dist/core/oauth2/session-token/types.d.ts.map +1 -1
  533. package/dist/core/provisioning/merge/module.mjs +5 -3
  534. package/dist/core/provisioning/merge/module.mjs.map +1 -1
  535. package/dist/core/query/module.mjs +1 -1
  536. package/dist/core/query/module.mjs.map +1 -1
  537. package/dist/core/security/policy/evaluator.mjs +1 -1
  538. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  539. package/dist/index.mjs +62 -59
  540. package/dist/path.mjs +1 -1
  541. package/dist/swagger.json +466 -104
  542. package/dist/utils/error.d.ts +6 -0
  543. package/dist/utils/error.d.ts.map +1 -1
  544. package/dist/utils/error.mjs +6 -2
  545. package/dist/utils/error.mjs.map +1 -1
  546. package/dist/utils/index.mjs +2 -2
  547. package/package.json +31 -25
  548. package/dist/adapters/http/middleware/built-in/assets.d.ts +0 -11
  549. package/dist/adapters/http/middleware/built-in/assets.d.ts.map +0 -1
  550. package/dist/adapters/http/middleware/built-in/assets.mjs +0 -91
  551. package/dist/adapters/http/middleware/built-in/assets.mjs.map +0 -1
  552. package/dist/adapters/http/middleware/built-in/theme.d.ts +0 -15
  553. package/dist/adapters/http/middleware/built-in/theme.d.ts.map +0 -1
  554. package/dist/adapters/http/middleware/built-in/theme.mjs +0 -27
  555. package/dist/adapters/http/middleware/built-in/theme.mjs.map +0 -1
  556. package/dist/adapters/http/middleware/built-in/types.d.ts +0 -14
  557. package/dist/adapters/http/middleware/built-in/types.d.ts.map +0 -1
  558. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +0 -15
  559. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts.map +0 -1
  560. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +0 -25
  561. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +0 -1
  562. package/dist/adapters/http/request/helpers/redirect.d.ts +0 -14
  563. package/dist/adapters/http/request/helpers/redirect.d.ts.map +0 -1
  564. package/dist/adapters/http/request/helpers/redirect.mjs +0 -36
  565. package/dist/adapters/http/request/helpers/redirect.mjs.map +0 -1
  566. package/dist/adapters/http/ui/account-console/index.d.ts +0 -4
  567. package/dist/adapters/http/ui/account-console/index.d.ts.map +0 -1
  568. package/dist/adapters/http/ui/account-console/index.mjs +0 -6
  569. package/dist/adapters/http/ui/account-console/module.d.ts +0 -28
  570. package/dist/adapters/http/ui/account-console/module.d.ts.map +0 -1
  571. package/dist/adapters/http/ui/account-console/module.mjs +0 -80
  572. package/dist/adapters/http/ui/account-console/module.mjs.map +0 -1
  573. package/dist/adapters/http/ui/account-console/ref.d.ts +0 -30
  574. package/dist/adapters/http/ui/account-console/ref.d.ts.map +0 -1
  575. package/dist/adapters/http/ui/account-console/ref.mjs +0 -50
  576. package/dist/adapters/http/ui/account-console/ref.mjs.map +0 -1
  577. package/dist/adapters/http/ui/account-console/types.d.ts +0 -11
  578. package/dist/adapters/http/ui/account-console/types.d.ts.map +0 -1
  579. package/dist/adapters/http/ui/auth-console/http-client.d.ts +0 -22
  580. package/dist/adapters/http/ui/auth-console/http-client.d.ts.map +0 -1
  581. package/dist/adapters/http/ui/auth-console/http-client.mjs.map +0 -1
  582. package/dist/adapters/http/ui/auth-console/index.d.ts +0 -6
  583. package/dist/adapters/http/ui/auth-console/index.d.ts.map +0 -1
  584. package/dist/adapters/http/ui/auth-console/index.mjs +0 -8
  585. package/dist/adapters/http/ui/auth-console/module.d.ts +0 -4
  586. package/dist/adapters/http/ui/auth-console/module.d.ts.map +0 -1
  587. package/dist/adapters/http/ui/auth-console/module.mjs +0 -73
  588. package/dist/adapters/http/ui/auth-console/module.mjs.map +0 -1
  589. package/dist/adapters/http/ui/auth-console/resolve.d.ts +0 -21
  590. package/dist/adapters/http/ui/auth-console/resolve.d.ts.map +0 -1
  591. package/dist/adapters/http/ui/auth-console/resolve.mjs +0 -53
  592. package/dist/adapters/http/ui/auth-console/resolve.mjs.map +0 -1
  593. package/dist/adapters/http/ui/auth-console/serve.d.ts +0 -9
  594. package/dist/adapters/http/ui/auth-console/serve.d.ts.map +0 -1
  595. package/dist/adapters/http/ui/auth-console/serve.mjs +0 -35
  596. package/dist/adapters/http/ui/auth-console/serve.mjs.map +0 -1
  597. package/dist/adapters/http/ui/auth-console/types.d.ts +0 -26
  598. package/dist/adapters/http/ui/auth-console/types.d.ts.map +0 -1
  599. package/dist/adapters/http/ui/console-packages/index.d.ts.map +0 -1
  600. package/dist/adapters/http/ui/console-packages/index.mjs +0 -5
  601. package/dist/adapters/http/ui/console-packages/module.d.ts +0 -33
  602. package/dist/adapters/http/ui/console-packages/module.d.ts.map +0 -1
  603. package/dist/adapters/http/ui/console-packages/module.mjs +0 -70
  604. package/dist/adapters/http/ui/console-packages/module.mjs.map +0 -1
  605. package/dist/adapters/http/ui/console-packages/types.d.ts +0 -12
  606. package/dist/adapters/http/ui/console-packages/types.d.ts.map +0 -1
  607. package/dist/adapters/http/ui/index.d.ts +0 -6
  608. package/dist/adapters/http/ui/index.d.ts.map +0 -1
  609. package/dist/adapters/http/ui/index.mjs +0 -25
  610. package/dist/adapters/http/ui/shared/html.d.ts +0 -76
  611. package/dist/adapters/http/ui/shared/html.d.ts.map +0 -1
  612. package/dist/adapters/http/ui/shared/html.mjs +0 -104
  613. package/dist/adapters/http/ui/shared/html.mjs.map +0 -1
  614. package/dist/adapters/http/ui/shared/index.d.ts +0 -2
  615. package/dist/adapters/http/ui/shared/index.d.ts.map +0 -1
  616. package/dist/adapters/http/ui/shared/index.mjs +0 -5
  617. package/dist/adapters/http/ui/theme/apply.d.ts +0 -12
  618. package/dist/adapters/http/ui/theme/apply.d.ts.map +0 -1
  619. package/dist/adapters/http/ui/theme/apply.mjs +0 -29
  620. package/dist/adapters/http/ui/theme/apply.mjs.map +0 -1
  621. package/dist/adapters/http/ui/theme/assets.d.ts +0 -20
  622. package/dist/adapters/http/ui/theme/assets.d.ts.map +0 -1
  623. package/dist/adapters/http/ui/theme/assets.mjs +0 -86
  624. package/dist/adapters/http/ui/theme/assets.mjs.map +0 -1
  625. package/dist/adapters/http/ui/theme/constants.d.ts +0 -16
  626. package/dist/adapters/http/ui/theme/constants.d.ts.map +0 -1
  627. package/dist/adapters/http/ui/theme/constants.mjs +0 -20
  628. package/dist/adapters/http/ui/theme/constants.mjs.map +0 -1
  629. package/dist/adapters/http/ui/theme/contract/constants.d.ts +0 -120
  630. package/dist/adapters/http/ui/theme/contract/constants.d.ts.map +0 -1
  631. package/dist/adapters/http/ui/theme/contract/constants.mjs +0 -136
  632. package/dist/adapters/http/ui/theme/contract/constants.mjs.map +0 -1
  633. package/dist/adapters/http/ui/theme/contract/head.d.ts +0 -12
  634. package/dist/adapters/http/ui/theme/contract/head.d.ts.map +0 -1
  635. package/dist/adapters/http/ui/theme/contract/head.mjs +0 -61
  636. package/dist/adapters/http/ui/theme/contract/head.mjs.map +0 -1
  637. package/dist/adapters/http/ui/theme/contract/index.d.ts +0 -6
  638. package/dist/adapters/http/ui/theme/contract/index.d.ts.map +0 -1
  639. package/dist/adapters/http/ui/theme/contract/index.mjs +0 -8
  640. package/dist/adapters/http/ui/theme/contract/manifest.d.ts +0 -25
  641. package/dist/adapters/http/ui/theme/contract/manifest.d.ts.map +0 -1
  642. package/dist/adapters/http/ui/theme/contract/manifest.mjs +0 -77
  643. package/dist/adapters/http/ui/theme/contract/manifest.mjs.map +0 -1
  644. package/dist/adapters/http/ui/theme/contract/types.d.ts +0 -26
  645. package/dist/adapters/http/ui/theme/contract/types.d.ts.map +0 -1
  646. package/dist/adapters/http/ui/theme/contract/utils.d.ts +0 -11
  647. package/dist/adapters/http/ui/theme/contract/utils.d.ts.map +0 -1
  648. package/dist/adapters/http/ui/theme/contract/utils.mjs +0 -22
  649. package/dist/adapters/http/ui/theme/contract/utils.mjs.map +0 -1
  650. package/dist/adapters/http/ui/theme/index.d.ts +0 -7
  651. package/dist/adapters/http/ui/theme/index.d.ts.map +0 -1
  652. package/dist/adapters/http/ui/theme/index.mjs +0 -13
  653. package/dist/adapters/http/ui/theme/module.d.ts +0 -79
  654. package/dist/adapters/http/ui/theme/module.d.ts.map +0 -1
  655. package/dist/adapters/http/ui/theme/module.mjs +0 -206
  656. package/dist/adapters/http/ui/theme/module.mjs.map +0 -1
  657. package/dist/adapters/http/ui/theme/types.d.ts +0 -42
  658. package/dist/adapters/http/ui/theme/types.d.ts.map +0 -1
  659. package/dist/app/modules/config/helpers.d.ts +0 -9
  660. package/dist/app/modules/config/helpers.d.ts.map +0 -1
  661. package/dist/app/modules/config/helpers.mjs +0 -22
  662. package/dist/app/modules/config/helpers.mjs.map +0 -1
  663. package/dist/app/modules/config/normalize.d.ts +0 -3
  664. package/dist/app/modules/config/normalize.d.ts.map +0 -1
  665. package/dist/app/modules/config/normalize.mjs +0 -117
  666. package/dist/app/modules/config/normalize.mjs.map +0 -1
  667. package/dist/app/modules/config/origins.d.ts +0 -25
  668. package/dist/app/modules/config/origins.d.ts.map +0 -1
  669. package/dist/app/modules/config/origins.mjs +0 -46
  670. package/dist/app/modules/config/origins.mjs.map +0 -1
  671. package/dist/app/modules/config/read/env.d.ts +0 -3
  672. package/dist/app/modules/config/read/env.d.ts.map +0 -1
  673. package/dist/app/modules/config/read/env.mjs +0 -139
  674. package/dist/app/modules/config/read/env.mjs.map +0 -1
  675. package/dist/app/modules/config/read/fs.d.ts +0 -3
  676. package/dist/app/modules/config/read/fs.d.ts.map +0 -1
  677. package/dist/app/modules/config/read/fs.mjs +0 -60
  678. package/dist/app/modules/config/read/fs.mjs.map +0 -1
  679. package/dist/app/modules/config/read/index.d.ts +0 -5
  680. package/dist/app/modules/config/read/index.d.ts.map +0 -1
  681. package/dist/app/modules/config/read/index.mjs +0 -7
  682. package/dist/app/modules/config/read/module.d.ts +0 -4
  683. package/dist/app/modules/config/read/module.d.ts.map +0 -1
  684. package/dist/app/modules/config/read/module.mjs +0 -29
  685. package/dist/app/modules/config/read/module.mjs.map +0 -1
  686. package/dist/app/modules/config/read/types.d.ts +0 -9
  687. package/dist/app/modules/config/read/types.d.ts.map +0 -1
  688. package/dist/app/modules/config/trust-proxy.d.ts +0 -28
  689. package/dist/app/modules/config/trust-proxy.d.ts.map +0 -1
  690. package/dist/app/modules/config/trust-proxy.mjs +0 -64
  691. package/dist/app/modules/config/trust-proxy.mjs.map +0 -1
  692. package/dist/cli/config.d.ts +0 -18
  693. package/dist/cli/config.d.ts.map +0 -1
  694. package/dist/cli/config.mjs +0 -34
  695. package/dist/cli/config.mjs.map +0 -1
  696. package/dist/cli/types.d.ts.map +0 -1
  697. package/dist/utils/host.d.ts +0 -2
  698. package/dist/utils/host.d.ts.map +0 -1
  699. package/dist/utils/host.mjs +0 -12
  700. package/dist/utils/host.mjs.map +0 -1
  701. /package/dist/adapters/http/{middleware/built-in → controllers/workflows/account}/types.mjs +0 -0
  702. /package/dist/adapters/http/{ui/console-packages → controllers/workflows/admin}/index.d.ts +0 -0
  703. /package/dist/adapters/http/{ui/account-console → controllers/workflows/admin}/types.mjs +0 -0
  704. /package/dist/adapters/http/{ui/auth-console → controllers/workflows/console-login}/types.mjs +0 -0
  705. /package/dist/adapters/http/{ui/console-packages → internal-client}/types.mjs +0 -0
  706. /package/dist/{adapters/http/ui/theme/contract → app/modules/components}/types.mjs +0 -0
  707. /package/dist/cli/{types.d.ts → commands/types.d.ts} +0 -0
  708. /package/dist/{adapters/http/ui/theme → cli/commands}/types.mjs +0 -0
  709. /package/dist/{app/modules/config/read → core/oauth2/backchannel-logout}/types.mjs +0 -0
  710. /package/dist/{cli → core/oauth2/console-login}/types.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"builder.mjs","names":["Application","AuthenticationModule","CacheModule","ComponentsModule","ConfigModule","DatabaseModule","HTTPModule","IdentityModule","LdapModule","LoggerModule","MailModule","ModuleName","OAuth2Module","ProvisionerModule","RuntimeModule","defaultFactories","CONFIG","LOGGER","CACHE","MAIL","RUNTIME","DATABASE","PROVISIONING","LDAP","AUTHENTICATION","IDENTITY","OAUTH2","COMPONENTS","HTTP","ApplicationBuilder","slots","Map","withConfig","instance","set","withLogger","withCache","withMail","withRuntime","withDatabase","withProvisioning","withLdap","withAuthentication","withIdentity","withOAuth2","withComponents","withHTTP","buildModules","modules","forEach","slot","name","push","factory","build","undefined"],"sources":["../../src/app/builder.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 Application,\n type IApplication,\n type IModule,\n} from 'orkos';\nimport {\n AuthenticationModule,\n CacheModule,\n ComponentsModule,\n ConfigModule,\n DatabaseModule,\n HTTPModule,\n IdentityModule,\n LdapModule,\n LoggerModule,\n MailModule,\n ModuleName,\n OAuth2Module,\n ProvisionerModule,\n RuntimeModule,\n} from './modules/index.ts';\n\ntype ModuleSlot = IModule | false | undefined;\n\ntype ModuleFactory = () => IModule;\n\nconst defaultFactories: Record<string, ModuleFactory> = {\n [ModuleName.CONFIG]: () => new ConfigModule(),\n [ModuleName.LOGGER]: () => new LoggerModule(),\n [ModuleName.CACHE]: () => new CacheModule(),\n [ModuleName.MAIL]: () => new MailModule(),\n [ModuleName.RUNTIME]: () => new RuntimeModule(),\n [ModuleName.DATABASE]: () => new DatabaseModule(),\n [ModuleName.PROVISIONING]: () => new ProvisionerModule(),\n [ModuleName.LDAP]: () => new LdapModule(),\n [ModuleName.AUTHENTICATION]: () => new AuthenticationModule(),\n [ModuleName.IDENTITY]: () => new IdentityModule(),\n [ModuleName.OAUTH2]: () => new OAuth2Module(),\n [ModuleName.COMPONENTS]: () => new ComponentsModule(),\n [ModuleName.HTTP]: () => new HTTPModule(),\n};\n\nexport class ApplicationBuilder {\n protected slots: Map<string, ModuleSlot>;\n\n constructor() {\n this.slots = new Map();\n }\n\n // ----------------------------------------------------\n\n withConfig(instance?: ConfigModule | false): this {\n return this.set(ModuleName.CONFIG, instance);\n }\n\n withLogger(instance?: LoggerModule | false): this {\n return this.set(ModuleName.LOGGER, instance);\n }\n\n withCache(instance?: CacheModule | false): this {\n return this.set(ModuleName.CACHE, instance);\n }\n\n withMail(instance?: MailModule | false): this {\n return this.set(ModuleName.MAIL, instance);\n }\n\n withRuntime(instance?: RuntimeModule | false): this {\n return this.set(ModuleName.RUNTIME, instance);\n }\n\n withDatabase(instance?: DatabaseModule | false): this {\n return this.set(ModuleName.DATABASE, instance);\n }\n\n withProvisioning(instance?: ProvisionerModule | false): this {\n return this.set(ModuleName.PROVISIONING, instance);\n }\n\n withLdap(instance?: LdapModule | false): this {\n return this.set(ModuleName.LDAP, instance);\n }\n\n withAuthentication(instance?: AuthenticationModule | false): this {\n return this.set(ModuleName.AUTHENTICATION, instance);\n }\n\n withIdentity(instance?: IdentityModule | false): this {\n return this.set(ModuleName.IDENTITY, instance);\n }\n\n withOAuth2(instance?: OAuth2Module | false): this {\n return this.set(ModuleName.OAUTH2, instance);\n }\n\n withComponents(instance?: ComponentsModule | false): this {\n return this.set(ModuleName.COMPONENTS, instance);\n }\n\n withHTTP(instance?: HTTPModule | false): this {\n return this.set(ModuleName.HTTP, instance);\n }\n\n // ----------------------------------------------------\n\n buildModules(): IModule[] {\n const modules: IModule[] = [];\n\n this.slots.forEach((slot, name) => {\n if (slot === false) {\n return;\n }\n\n if (slot) {\n modules.push(slot);\n return;\n }\n\n const factory = defaultFactories[name];\n if (factory) {\n modules.push(factory());\n }\n });\n\n return modules;\n }\n\n build(): IApplication {\n return new Application({ modules: this.buildModules() });\n }\n\n // ----------------------------------------------------\n\n protected set(name: string, instance?: IModule | false): this {\n if (instance === false) {\n this.slots.set(name, false);\n } else if (instance) {\n this.slots.set(name, instance);\n } else {\n this.slots.set(name, undefined);\n }\n\n return this;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAiCA,MAAMe,mBAAkD;EACnDJ,WAAWK,eAAe,IAAIZ,aAAAA;EAC9BO,WAAWM,eAAe,IAAIR,aAAAA;EAC9BE,WAAWO,cAAc,IAAIhB,YAAAA;EAC7BS,WAAWQ,aAAa,IAAIT,WAAAA;EAC5BC,WAAWS,gBAAgB,IAAIN,cAAAA;EAC/BH,WAAWU,iBAAiB,IAAIhB,eAAAA;EAChCM,WAAWW,qBAAqB,IAAIT,kBAAAA;EACpCF,WAAWY,aAAa,IAAIf,WAAAA;EAC5BG,WAAWa,uBAAuB,IAAIvB,qBAAAA;EACtCU,WAAWc,iBAAiB,IAAIlB,eAAAA;EAChCI,WAAWe,eAAe,IAAId,aAAAA;EAC9BD,WAAWgB,mBAAmB,IAAIxB,iBAAAA;EAClCQ,WAAWiB,aAAa,IAAItB,WAAAA;AACjC;AAEA,IAAauB,qBAAb,MAAaA;CACCC;CAEV,cAAc;EACV,KAAKA,wBAAQ,IAAIC,IAAAA;CACrB;CAIAC,WAAWC,UAAuC;EAC9C,OAAO,KAAKC,IAAIvB,WAAWK,QAAQiB,QAAAA;CACvC;CAEAE,WAAWF,UAAuC;EAC9C,OAAO,KAAKC,IAAIvB,WAAWM,QAAQgB,QAAAA;CACvC;CAEAG,UAAUH,UAAsC;EAC5C,OAAO,KAAKC,IAAIvB,WAAWO,OAAOe,QAAAA;CACtC;CAEAI,SAASJ,UAAqC;EAC1C,OAAO,KAAKC,IAAIvB,WAAWQ,MAAMc,QAAAA;CACrC;CAEAK,YAAYL,UAAwC;EAChD,OAAO,KAAKC,IAAIvB,WAAWS,SAASa,QAAAA;CACxC;CAEAM,aAAaN,UAAyC;EAClD,OAAO,KAAKC,IAAIvB,WAAWU,UAAUY,QAAAA;CACzC;CAEAO,iBAAiBP,UAA4C;EACzD,OAAO,KAAKC,IAAIvB,WAAWW,cAAcW,QAAAA;CAC7C;CAEAQ,SAASR,UAAqC;EAC1C,OAAO,KAAKC,IAAIvB,WAAWY,MAAMU,QAAAA;CACrC;CAEAS,mBAAmBT,UAA+C;EAC9D,OAAO,KAAKC,IAAIvB,WAAWa,gBAAgBS,QAAAA;CAC/C;CAEAU,aAAaV,UAAyC;EAClD,OAAO,KAAKC,IAAIvB,WAAWc,UAAUQ,QAAAA;CACzC;CAEAW,WAAWX,UAAuC;EAC9C,OAAO,KAAKC,IAAIvB,WAAWe,QAAQO,QAAAA;CACvC;CAEAY,eAAeZ,UAA2C;EACtD,OAAO,KAAKC,IAAIvB,WAAWgB,YAAYM,QAAAA;CAC3C;CAEAa,SAASb,UAAqC;EAC1C,OAAO,KAAKC,IAAIvB,WAAWiB,MAAMK,QAAAA;CACrC;CAIAc,eAA0B;EACtB,MAAMC,UAAqB,CAAA;EAE3B,KAAKlB,MAAMmB,SAASC,MAAMC,SAAAA;GACtB,IAAID,SAAS,OACT;GAGJ,IAAIA,MAAM;IACNF,QAAQI,KAAKF,IAAAA;IACb;GACJ;GAEA,MAAMG,UAAUtC,iBAAiBoC;GACjC,IAAIE,SACAL,QAAQI,KAAKC,QAAAA,CAAAA;EAErB,CAAA;EAEA,OAAOL;CACX;CAEAM,QAAsB;EAClB,OAAO,IAAItD,YAAY,EAAEgD,SAAS,KAAKD,aAAY,EAAG,CAAA;CAC1D;CAIUb,IAAIiB,MAAclB,UAAkC;EAC1D,IAAIA,aAAa,OACb,KAAKH,MAAMI,IAAIiB,MAAM,KAAA;OAClB,IAAIlB,UACP,KAAKH,MAAMI,IAAIiB,MAAMlB,QAAAA;OAErB,KAAKH,MAAMI,IAAIiB,MAAMI,KAAAA,CAAAA;EAGzB,OAAO;CACX;AACJ"}
1
+ {"version":3,"file":"builder.mjs","names":["Application","AuthenticationModule","CacheModule","ComponentsModule","ConfigModule","DatabaseModule","HTTPModule","IdentityModule","LdapModule","LoggerModule","MailModule","ModuleName","OAuth2Module","ProvisionerModule","RuntimeModule","defaultFactories","CONFIG","LOGGER","CACHE","MAIL","RUNTIME","DATABASE","PROVISIONING","LDAP","AUTHENTICATION","IDENTITY","OAUTH2","COMPONENTS","HTTP","ApplicationBuilder","slots","Map","withConfig","instance","set","withLogger","withCache","withMail","withRuntime","withDatabase","withProvisioning","withLdap","withAuthentication","withIdentity","withOAuth2","withComponents","withHTTP","buildModules","modules","forEach","slot","name","push","factory","build","ctx","undefined"],"sources":["../../src/app/builder.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 { ApplicationContext, IApplication, IModule } from 'orkos';\nimport { Application } from 'orkos';\nimport {\n AuthenticationModule,\n CacheModule,\n ComponentsModule,\n ConfigModule,\n DatabaseModule,\n HTTPModule,\n IdentityModule,\n LdapModule,\n LoggerModule,\n MailModule,\n ModuleName,\n OAuth2Module,\n ProvisionerModule,\n RuntimeModule,\n} from './modules/index.ts';\n\ntype ModuleSlot = IModule | false | undefined;\n\ntype ModuleFactory = () => IModule;\n\nconst defaultFactories: Record<string, ModuleFactory> = {\n [ModuleName.CONFIG]: () => new ConfigModule(),\n [ModuleName.LOGGER]: () => new LoggerModule(),\n [ModuleName.CACHE]: () => new CacheModule(),\n [ModuleName.MAIL]: () => new MailModule(),\n [ModuleName.RUNTIME]: () => new RuntimeModule(),\n [ModuleName.DATABASE]: () => new DatabaseModule(),\n [ModuleName.PROVISIONING]: () => new ProvisionerModule(),\n [ModuleName.LDAP]: () => new LdapModule(),\n [ModuleName.AUTHENTICATION]: () => new AuthenticationModule(),\n [ModuleName.IDENTITY]: () => new IdentityModule(),\n [ModuleName.OAUTH2]: () => new OAuth2Module(),\n [ModuleName.COMPONENTS]: () => new ComponentsModule(),\n [ModuleName.HTTP]: () => new HTTPModule(),\n};\n\nexport class ApplicationBuilder {\n protected slots: Map<string, ModuleSlot>;\n\n constructor() {\n this.slots = new Map();\n }\n\n // ----------------------------------------------------\n\n withConfig(instance?: ConfigModule | false): this {\n return this.set(ModuleName.CONFIG, instance);\n }\n\n withLogger(instance?: LoggerModule | false): this {\n return this.set(ModuleName.LOGGER, instance);\n }\n\n withCache(instance?: CacheModule | false): this {\n return this.set(ModuleName.CACHE, instance);\n }\n\n withMail(instance?: MailModule | false): this {\n return this.set(ModuleName.MAIL, instance);\n }\n\n withRuntime(instance?: RuntimeModule | false): this {\n return this.set(ModuleName.RUNTIME, instance);\n }\n\n withDatabase(instance?: DatabaseModule | false): this {\n return this.set(ModuleName.DATABASE, instance);\n }\n\n withProvisioning(instance?: ProvisionerModule | false): this {\n return this.set(ModuleName.PROVISIONING, instance);\n }\n\n withLdap(instance?: LdapModule | false): this {\n return this.set(ModuleName.LDAP, instance);\n }\n\n withAuthentication(instance?: AuthenticationModule | false): this {\n return this.set(ModuleName.AUTHENTICATION, instance);\n }\n\n withIdentity(instance?: IdentityModule | false): this {\n return this.set(ModuleName.IDENTITY, instance);\n }\n\n withOAuth2(instance?: OAuth2Module | false): this {\n return this.set(ModuleName.OAUTH2, instance);\n }\n\n withComponents(instance?: ComponentsModule | false): this {\n return this.set(ModuleName.COMPONENTS, instance);\n }\n\n withHTTP(instance?: IModule | false): this {\n return this.set(ModuleName.HTTP, instance);\n }\n\n // ----------------------------------------------------\n\n buildModules(): IModule[] {\n const modules: IModule[] = [];\n\n this.slots.forEach((slot, name) => {\n if (slot === false) {\n return;\n }\n\n if (slot) {\n modules.push(slot);\n return;\n }\n\n const factory = defaultFactories[name];\n if (factory) {\n modules.push(factory());\n }\n });\n\n return modules;\n }\n\n build(ctx: ApplicationContext = {}): IApplication {\n return new Application({ modules: this.buildModules(), ...ctx });\n }\n\n // ----------------------------------------------------\n\n protected set(name: string, instance?: IModule | false): this {\n if (instance === false) {\n this.slots.set(name, false);\n } else if (instance) {\n this.slots.set(name, instance);\n } else {\n this.slots.set(name, undefined);\n }\n\n return this;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,MAAMe,mBAAkD;EACnDJ,WAAWK,eAAe,IAAIZ,aAAAA;EAC9BO,WAAWM,eAAe,IAAIR,aAAAA;EAC9BE,WAAWO,cAAc,IAAIhB,YAAAA;EAC7BS,WAAWQ,aAAa,IAAIT,WAAAA;EAC5BC,WAAWS,gBAAgB,IAAIN,cAAAA;EAC/BH,WAAWU,iBAAiB,IAAIhB,eAAAA;EAChCM,WAAWW,qBAAqB,IAAIT,kBAAAA;EACpCF,WAAWY,aAAa,IAAIf,WAAAA;EAC5BG,WAAWa,uBAAuB,IAAIvB,qBAAAA;EACtCU,WAAWc,iBAAiB,IAAIlB,eAAAA;EAChCI,WAAWe,eAAe,IAAId,aAAAA;EAC9BD,WAAWgB,mBAAmB,IAAIxB,iBAAAA;EAClCQ,WAAWiB,aAAa,IAAItB,WAAAA;AACjC;AAEA,IAAauB,qBAAb,MAAaA;CACCC;CAEV,cAAc;EACV,KAAKA,wBAAQ,IAAIC,IAAAA;CACrB;CAIAC,WAAWC,UAAuC;EAC9C,OAAO,KAAKC,IAAIvB,WAAWK,QAAQiB,QAAAA;CACvC;CAEAE,WAAWF,UAAuC;EAC9C,OAAO,KAAKC,IAAIvB,WAAWM,QAAQgB,QAAAA;CACvC;CAEAG,UAAUH,UAAsC;EAC5C,OAAO,KAAKC,IAAIvB,WAAWO,OAAOe,QAAAA;CACtC;CAEAI,SAASJ,UAAqC;EAC1C,OAAO,KAAKC,IAAIvB,WAAWQ,MAAMc,QAAAA;CACrC;CAEAK,YAAYL,UAAwC;EAChD,OAAO,KAAKC,IAAIvB,WAAWS,SAASa,QAAAA;CACxC;CAEAM,aAAaN,UAAyC;EAClD,OAAO,KAAKC,IAAIvB,WAAWU,UAAUY,QAAAA;CACzC;CAEAO,iBAAiBP,UAA4C;EACzD,OAAO,KAAKC,IAAIvB,WAAWW,cAAcW,QAAAA;CAC7C;CAEAQ,SAASR,UAAqC;EAC1C,OAAO,KAAKC,IAAIvB,WAAWY,MAAMU,QAAAA;CACrC;CAEAS,mBAAmBT,UAA+C;EAC9D,OAAO,KAAKC,IAAIvB,WAAWa,gBAAgBS,QAAAA;CAC/C;CAEAU,aAAaV,UAAyC;EAClD,OAAO,KAAKC,IAAIvB,WAAWc,UAAUQ,QAAAA;CACzC;CAEAW,WAAWX,UAAuC;EAC9C,OAAO,KAAKC,IAAIvB,WAAWe,QAAQO,QAAAA;CACvC;CAEAY,eAAeZ,UAA2C;EACtD,OAAO,KAAKC,IAAIvB,WAAWgB,YAAYM,QAAAA;CAC3C;CAEAa,SAASb,UAAkC;EACvC,OAAO,KAAKC,IAAIvB,WAAWiB,MAAMK,QAAAA;CACrC;CAIAc,eAA0B;EACtB,MAAMC,UAAqB,CAAA;EAE3B,KAAKlB,MAAMmB,SAASC,MAAMC,SAAAA;GACtB,IAAID,SAAS,OACT;GAGJ,IAAIA,MAAM;IACNF,QAAQI,KAAKF,IAAAA;IACb;GACJ;GAEA,MAAMG,UAAUtC,iBAAiBoC;GACjC,IAAIE,SACAL,QAAQI,KAAKC,QAAAA,CAAAA;EAErB,CAAA;EAEA,OAAOL;CACX;CAEAM,MAAMC,MAA0B,CAAC,GAAiB;EAC9C,OAAO,IAAIvD,YAAY;GAAEgD,SAAS,KAAKD,aAAY;GAAI,GAAGQ;EAAI,CAAA;CAClE;CAIUrB,IAAIiB,MAAclB,UAAkC;EAC1D,IAAIA,aAAa,OACb,KAAKH,MAAMI,IAAIiB,MAAM,KAAA;OAClB,IAAIlB,UACP,KAAKH,MAAMI,IAAIiB,MAAMlB,QAAAA;OAErB,KAAKH,MAAMI,IAAIiB,MAAMK,KAAAA,CAAAA;EAGzB,OAAO;CACX;AACJ"}
@@ -1,3 +1,13 @@
1
1
  import type { CreateApplicationContext } from './types.ts';
2
2
  export declare function createApplication(context?: CreateApplicationContext): import("orkos").IApplication;
3
+ /**
4
+ * Worker mode: the background components and the modules they stand on,
5
+ * and nothing else. No http, oauth2, identity, authentication, ldap, mail or
6
+ * provisioning module, so the process serves no request and writes no
7
+ * provisioning graph.
8
+ *
9
+ * `core.worker.enabled` is REQUIRED here: a process started for nothing but
10
+ * the sweeps refuses to boot with them off, rather than coming up idle.
11
+ */
12
+ export declare function createWorkerApplication(context?: CreateApplicationContext): import("orkos").IApplication;
3
13
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/app/factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,gCAkBvE"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/app/factory.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,gCAkBvE;AAYD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,gCAQ7E"}
@@ -1,15 +1,39 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { LoggerInjectionKey } from "./modules/logger/constants.mjs";
5
+ import { verifySchemaOrSynchronize } from "./modules/database/migration.mjs";
6
+ import { DatabaseModule } from "./modules/database/module.mjs";
7
+ import { ComponentsModule } from "./modules/components/module.mjs";
8
+ import { HTTPModule } from "./modules/http/module.mjs";
4
9
  import { DefaultProvisioningSource } from "./modules/provisioning/sources/default/module.mjs";
5
10
  import { ProvisionerModule } from "./modules/provisioning/module.mjs";
6
11
  import "./modules/index.mjs";
7
12
  import { ApplicationBuilder } from "./builder.mjs";
8
13
  //#region src/app/factory.ts
9
14
  function createApplication(context = {}) {
10
- return new ApplicationBuilder().withConfig(context.config).withLogger().withCache().withMail().withRuntime().withDatabase().withProvisioning(new ProvisionerModule([new DefaultProvisioningSource()])).withLdap().withAuthentication().withIdentity().withOAuth2().withComponents().withHTTP().build();
15
+ return new ApplicationBuilder().withConfig(context.config).withLogger().withCache().withMail().withRuntime().withDatabase().withProvisioning(new ProvisionerModule([new DefaultProvisioningSource()])).withLdap().withAuthentication().withIdentity().withOAuth2().withComponents().withHTTP(context.http || new HTTPModule()).build({ container: context.container });
16
+ }
17
+ /**
18
+ * The worker never applies migrations, whatever `migrationEnabled` says: a
19
+ * deployment lets one process own that DDL, and it is not this one. It does
20
+ * still create a schema nobody migrates, which is the sqlite shape the shared
21
+ * helper falls through to.
22
+ */ async function migrateWorkerSchema(container, dataSource) {
23
+ await verifySchemaOrSynchronize(container.resolve(LoggerInjectionKey), dataSource);
24
+ }
25
+ /**
26
+ * Worker mode: the background components and the modules they stand on,
27
+ * and nothing else. No http, oauth2, identity, authentication, ldap, mail or
28
+ * provisioning module, so the process serves no request and writes no
29
+ * provisioning graph.
30
+ *
31
+ * `core.worker.enabled` is REQUIRED here: a process started for nothing but
32
+ * the sweeps refuses to boot with them off, rather than coming up idle.
33
+ */ function createWorkerApplication(context = {}) {
34
+ return new ApplicationBuilder().withConfig(context.config).withLogger().withCache().withDatabase(new DatabaseModule({ migrate: migrateWorkerSchema })).withComponents(new ComponentsModule({ required: true })).build({ container: context.container });
11
35
  }
12
36
  //#endregion
13
- export { createApplication };
37
+ export { createApplication, createWorkerApplication };
14
38
 
15
39
  //# sourceMappingURL=factory.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.mjs","names":["ApplicationBuilder","DefaultProvisioningSource","ProvisionerModule","createApplication","context","withConfig","config","withLogger","withCache","withMail","withRuntime","withDatabase","withProvisioning","withLdap","withAuthentication","withIdentity","withOAuth2","withComponents","withHTTP","build"],"sources":["../../src/app/factory.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 { ApplicationBuilder } from './builder.ts';\nimport {\n DefaultProvisioningSource,\n ProvisionerModule,\n} from './modules/index.ts';\nimport type { CreateApplicationContext } from './types.ts';\n\nexport function createApplication(context: CreateApplicationContext = {}) {\n return new ApplicationBuilder()\n .withConfig(context.config)\n .withLogger()\n .withCache()\n .withMail()\n .withRuntime()\n .withDatabase()\n .withProvisioning(new ProvisionerModule([\n new DefaultProvisioningSource(),\n ]))\n .withLdap()\n .withAuthentication()\n .withIdentity()\n .withOAuth2()\n .withComponents()\n .withHTTP()\n .build();\n}\n"],"mappings":";;;;;;;;AAcA,SAAgBG,kBAAkBC,UAAoC,CAAC,GAAC;CACpE,OAAO,IAAIJ,mBAAAA,CAAAA,CACNK,WAAWD,QAAQE,MAAM,CAAA,CACzBC,WAAU,CAAA,CACVC,UAAS,CAAA,CACTC,SAAQ,CAAA,CACRC,YAAW,CAAA,CACXC,aAAY,CAAA,CACZC,iBAAiB,IAAIV,kBAAkB,CACpC,IAAID,0BAAAA,CACP,CAAA,CAAA,CAAA,CACAY,SAAQ,CAAA,CACRC,mBAAkB,CAAA,CAClBC,aAAY,CAAA,CACZC,WAAU,CAAA,CACVC,eAAc,CAAA,CACdC,SAAQ,CAAA,CACRC,MAAK;AACd"}
1
+ {"version":3,"file":"factory.mjs","names":["ApplicationBuilder","ComponentsModule","DatabaseModule","DefaultProvisioningSource","HTTPModule","LoggerInjectionKey","ProvisionerModule","verifySchemaOrSynchronize","createApplication","context","withConfig","config","withLogger","withCache","withMail","withRuntime","withDatabase","withProvisioning","withLdap","withAuthentication","withIdentity","withOAuth2","withComponents","withHTTP","http","build","container","migrateWorkerSchema","dataSource","resolve","createWorkerApplication","migrate","required"],"sources":["../../src/app/factory.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 { IContainer } from 'eldin';\nimport type { DataSource } from 'typeorm';\nimport { ApplicationBuilder } from './builder.ts';\nimport {\n ComponentsModule,\n DatabaseModule,\n DefaultProvisioningSource,\n HTTPModule,\n LoggerInjectionKey,\n ProvisionerModule,\n verifySchemaOrSynchronize,\n} from './modules/index.ts';\nimport type { CreateApplicationContext } from './types.ts';\n\nexport function createApplication(context: CreateApplicationContext = {}) {\n return new ApplicationBuilder()\n .withConfig(context.config)\n .withLogger()\n .withCache()\n .withMail()\n .withRuntime()\n .withDatabase()\n .withProvisioning(new ProvisionerModule([\n new DefaultProvisioningSource(),\n ]))\n .withLdap()\n .withAuthentication()\n .withIdentity()\n .withOAuth2()\n .withComponents()\n .withHTTP(context.http || new HTTPModule())\n .build({ container: context.container });\n}\n\n/**\n * The worker never applies migrations, whatever `migrationEnabled` says: a\n * deployment lets one process own that DDL, and it is not this one. It does\n * still create a schema nobody migrates, which is the sqlite shape the shared\n * helper falls through to.\n */\nasync function migrateWorkerSchema(container: IContainer, dataSource: DataSource): Promise<void> {\n await verifySchemaOrSynchronize(container.resolve(LoggerInjectionKey), dataSource);\n}\n\n/**\n * Worker mode: the background components and the modules they stand on,\n * and nothing else. No http, oauth2, identity, authentication, ldap, mail or\n * provisioning module, so the process serves no request and writes no\n * provisioning graph.\n *\n * `core.worker.enabled` is REQUIRED here: a process started for nothing but\n * the sweeps refuses to boot with them off, rather than coming up idle.\n */\nexport function createWorkerApplication(context: CreateApplicationContext = {}) {\n return new ApplicationBuilder()\n .withConfig(context.config)\n .withLogger()\n .withCache()\n .withDatabase(new DatabaseModule({ migrate: migrateWorkerSchema }))\n .withComponents(new ComponentsModule({ required: true }))\n .build({ container: context.container });\n}\n"],"mappings":";;;;;;;;;;;;;AAqBA,SAAgBQ,kBAAkBC,UAAoC,CAAC,GAAC;CACpE,OAAO,IAAIT,mBAAAA,CAAAA,CACNU,WAAWD,QAAQE,MAAM,CAAA,CACzBC,WAAU,CAAA,CACVC,UAAS,CAAA,CACTC,SAAQ,CAAA,CACRC,YAAW,CAAA,CACXC,aAAY,CAAA,CACZC,iBAAiB,IAAIX,kBAAkB,CACpC,IAAIH,0BAAAA,CACP,CAAA,CAAA,CAAA,CACAe,SAAQ,CAAA,CACRC,mBAAkB,CAAA,CAClBC,aAAY,CAAA,CACZC,WAAU,CAAA,CACVC,eAAc,CAAA,CACdC,SAASd,QAAQe,QAAQ,IAAIpB,WAAAA,CAAAA,CAAAA,CAC7BqB,MAAM,EAAEC,WAAWjB,QAAQiB,UAAU,CAAA;AAC9C;;;;;;GAQA,eAAeC,oBAAoBD,WAAuBE,YAAsB;CAC5E,MAAMrB,0BAA0BmB,UAAUG,QAAQxB,kBAAAA,GAAqBuB,UAAAA;AAC3E;;;;;;;;;GAWA,SAAgBE,wBAAwBrB,UAAoC,CAAC,GAAC;CAC1E,OAAO,IAAIT,mBAAAA,CAAAA,CACNU,WAAWD,QAAQE,MAAM,CAAA,CACzBC,WAAU,CAAA,CACVC,UAAS,CAAA,CACTG,aAAa,IAAId,eAAe,EAAE6B,SAASJ,oBAAoB,CAAA,CAAA,CAAA,CAC/DL,eAAe,IAAIrB,iBAAiB,EAAE+B,UAAU,KAAK,CAAA,CAAA,CAAA,CACrDP,MAAM,EAAEC,WAAWjB,QAAQiB,UAAU,CAAA;AAC9C"}
@@ -4,16 +4,14 @@ import.meta.url;
4
4
  import { AuthenticationInjectionKey } from "./modules/authentication/constants.mjs";
5
5
  import { CacheInjectionKey } from "./modules/cache/constants.mjs";
6
6
  import { ModuleName } from "./modules/constants.mjs";
7
- import { ConfigEnvironmentVariableName, ConfigInjectionKey } from "./modules/config/constants.mjs";
8
- import { expandToOrigins, getAppOrigins } from "./modules/config/origins.mjs";
9
- import { readConfigRawFromEnv } from "./modules/config/read/env.mjs";
10
- import { readConfigRawFromFS } from "./modules/config/read/fs.mjs";
11
- import { readConfigRaw } from "./modules/config/read/module.mjs";
12
- import { readConfig } from "./modules/config/helpers.mjs";
7
+ import { CONFIG_SCHEMA, ConfigInjectionKey } from "./modules/config/constants.mjs";
8
+ import { normalizeConfig, readConfig } from "./modules/config/read.mjs";
13
9
  import { ConfigModule } from "./modules/config/module.mjs";
10
+ import { getAppOrigins } from "./modules/config/app-origins.mjs";
14
11
  import { CacheModule } from "./modules/cache/module.mjs";
15
- import { SessionRepository } from "./modules/authentication/repositories/session.mjs";
16
- import { AuthenticationModule } from "./modules/authentication/module.mjs";
12
+ import { LoggerInjectionKey } from "./modules/logger/constants.mjs";
13
+ import { LoggerModule } from "./modules/logger/module.mjs";
14
+ import { OAuth2InjectionToken } from "./modules/oauth2/constants.mjs";
17
15
  import { RealmRepositoryAdapter } from "./modules/database/repositories/realm/repository.mjs";
18
16
  import { ClientRepositoryAdapter } from "./modules/database/repositories/client/repository.mjs";
19
17
  import { ClientPermissionRepositoryAdapter } from "./modules/database/repositories/client-permission/repository.mjs";
@@ -38,15 +36,6 @@ import { UserAuthenticatorRepositoryAdapter } from "./modules/database/repositor
38
36
  import { UserPermissionRepositoryAdapter } from "./modules/database/repositories/user-permission/repository.mjs";
39
37
  import { UserRoleRepositoryAdapter } from "./modules/database/repositories/user-role/repository.mjs";
40
38
  import { IdentityProviderRoleMappingRepositoryAdapter } from "./modules/database/repositories/identity-provider-role-mapping/repository.mjs";
41
- import { DatabaseInjectionKey } from "./modules/database/constants.mjs";
42
- import { LoggerInjectionKey } from "./modules/logger/constants.mjs";
43
- import { LoggerModule } from "./modules/logger/module.mjs";
44
- import { DatabaseModule } from "./modules/database/module.mjs";
45
- import { ComponentsModule } from "./modules/components/module.mjs";
46
- import { HTTPInjectionKey } from "./modules/http/constants.mjs";
47
- import { MetricsInjectionKey } from "./modules/metrics/constants.mjs";
48
- import { PromAuthFlowMetrics } from "./modules/metrics/prom.mjs";
49
- import { OAuth2InjectionToken } from "./modules/oauth2/constants.mjs";
50
39
  import { IdentityInjectionKey } from "./modules/identity/constants.mjs";
51
40
  import { IdentityProviderAttributeMappingRepository } from "./modules/identity/repositories/provider/mapper/attribute.mjs";
52
41
  import { IdentityProviderPermissionMappingRepository } from "./modules/identity/repositories/provider/mapper/permission.mjs";
@@ -55,10 +44,19 @@ import { CacheIdentityPrefix } from "./modules/identity/repositories/constants.m
55
44
  import { IdentityProviderAccountLinkStore } from "./modules/identity/repositories/provider/link.mjs";
56
45
  import { ClientIdentityRepository } from "./modules/identity/repositories/client.mjs";
57
46
  import { UserIdentityRepository } from "./modules/identity/repositories/user.mjs";
47
+ import { DatabaseInjectionKey } from "./modules/database/constants.mjs";
48
+ import { assertNoPendingMigrations, verifySchemaOrSynchronize } from "./modules/database/migration.mjs";
49
+ import { DatabaseModule } from "./modules/database/module.mjs";
58
50
  import { LDAPInjectionKey } from "./modules/ldap/constants.mjs";
59
51
  import { LdapModule } from "./modules/ldap/module.mjs";
60
52
  import { IdentityModule } from "./modules/identity/module.mjs";
61
53
  import { OAuth2Module } from "./modules/oauth2/module.mjs";
54
+ import { SessionRepository } from "./modules/authentication/repositories/session.mjs";
55
+ import { AuthenticationModule } from "./modules/authentication/module.mjs";
56
+ import { ComponentsModule } from "./modules/components/module.mjs";
57
+ import { HTTPInjectionKey } from "./modules/http/constants.mjs";
58
+ import { MetricsInjectionKey } from "./modules/metrics/constants.mjs";
59
+ import { PromAuthFlowMetrics } from "./modules/metrics/prom.mjs";
62
60
  import { ProvisioningInjectionKey } from "./modules/provisioning/constants.mjs";
63
61
  import { LazyWildcardRealmProvisioner } from "./modules/provisioning/lazy-wildcard.mjs";
64
62
  import { MailInjectionKey, MailTemplateRendererInjectionKey } from "./modules/mail/constants.mjs";
@@ -71,5 +69,5 @@ import { ProvisionerModule } from "./modules/provisioning/module.mjs";
71
69
  import { RuntimeModule } from "./modules/runtime/module.mjs";
72
70
  import "./modules/index.mjs";
73
71
  import { ApplicationBuilder } from "./builder.mjs";
74
- import { createApplication } from "./factory.mjs";
75
- export { ApplicationBuilder, AuthenticationInjectionKey, AuthenticationModule, CacheIdentityPrefix, CacheInjectionKey, CacheModule, ClientIdentityRepository, ClientPermissionRepositoryAdapter, ClientRepositoryAdapter, ClientRoleRepositoryAdapter, ClientScopeRepositoryAdapter, ComponentsModule, CompositeProvisioningSource, ConfigEnvironmentVariableName, ConfigInjectionKey, ConfigModule, DatabaseInjectionKey, DatabaseModule, DefaultProvisioningSource, EventRepositoryAdapter, FileProvisioningSource, HTTPInjectionKey, HTTPModule, IdentityInjectionKey, IdentityModule, IdentityProviderAccountLinkStore, IdentityProviderAccountRepositoryAdapter, IdentityProviderAttributeMappingRepository, IdentityProviderPermissionMappingRepository, IdentityProviderRepositoryAdapter, IdentityProviderRoleMappingRepository, IdentityProviderRoleMappingRepositoryAdapter, KeyRepositoryAdapter, LDAPInjectionKey, LazyWildcardRealmProvisioner, LdapModule, LoggerInjectionKey, LoggerModule, MailInjectionKey, MailModule, MailTemplateRendererInjectionKey, MetricsInjectionKey, ModuleName, OAuth2InjectionToken, OAuth2Module, PermissionDatabaseProvider, PermissionPolicyRepositoryAdapter, PermissionRepositoryAdapter, PolicyRepositoryAdapter, PromAuthFlowMetrics, ProvisionerModule, ProvisioningInjectionKey, RealmRepositoryAdapter, RoleAttributeRepositoryAdapter, RolePermissionRepositoryAdapter, RoleRepositoryAdapter, RuntimeModule, ScopeRepositoryAdapter, SessionRepository, TrustAnchorRepositoryAdapter, UserAttributeRepositoryAdapter, UserAuthenticatorRepositoryAdapter, UserIdentityRepository, UserPermissionRepositoryAdapter, UserRepositoryAdapter, UserRoleRepositoryAdapter, createApplication, expandToOrigins, getAppOrigins, readConfig, readConfigRaw, readConfigRawFromEnv, readConfigRawFromFS };
72
+ import { createApplication, createWorkerApplication } from "./factory.mjs";
73
+ export { ApplicationBuilder, AuthenticationInjectionKey, AuthenticationModule, CONFIG_SCHEMA, CacheIdentityPrefix, CacheInjectionKey, CacheModule, ClientIdentityRepository, ClientPermissionRepositoryAdapter, ClientRepositoryAdapter, ClientRoleRepositoryAdapter, ClientScopeRepositoryAdapter, ComponentsModule, CompositeProvisioningSource, ConfigInjectionKey, ConfigModule, DatabaseInjectionKey, DatabaseModule, DefaultProvisioningSource, EventRepositoryAdapter, FileProvisioningSource, HTTPInjectionKey, HTTPModule, IdentityInjectionKey, IdentityModule, IdentityProviderAccountLinkStore, IdentityProviderAccountRepositoryAdapter, IdentityProviderAttributeMappingRepository, IdentityProviderPermissionMappingRepository, IdentityProviderRepositoryAdapter, IdentityProviderRoleMappingRepository, IdentityProviderRoleMappingRepositoryAdapter, KeyRepositoryAdapter, LDAPInjectionKey, LazyWildcardRealmProvisioner, LdapModule, LoggerInjectionKey, LoggerModule, MailInjectionKey, MailModule, MailTemplateRendererInjectionKey, MetricsInjectionKey, ModuleName, OAuth2InjectionToken, OAuth2Module, PermissionDatabaseProvider, PermissionPolicyRepositoryAdapter, PermissionRepositoryAdapter, PolicyRepositoryAdapter, PromAuthFlowMetrics, ProvisionerModule, ProvisioningInjectionKey, RealmRepositoryAdapter, RoleAttributeRepositoryAdapter, RolePermissionRepositoryAdapter, RoleRepositoryAdapter, RuntimeModule, ScopeRepositoryAdapter, SessionRepository, TrustAnchorRepositoryAdapter, UserAttributeRepositoryAdapter, UserAuthenticatorRepositoryAdapter, UserIdentityRepository, UserPermissionRepositoryAdapter, UserRepositoryAdapter, UserRoleRepositoryAdapter, assertNoPendingMigrations, createApplication, createWorkerApplication, getAppOrigins, normalizeConfig, readConfig, verifySchemaOrSynchronize };
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/authentication/module.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAKxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKrC,qBAAa,oBAAqB,YAAW,OAAO;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;;IAO1B,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBpD"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/authentication/module.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKrC,qBAAa,oBAAqB,YAAW,OAAO;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;;IAe1B,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BpD"}
@@ -5,12 +5,17 @@ import { AuthenticationInjectionKey } from "./constants.mjs";
5
5
  import { SessionEntity } from "../../../adapters/database/domains/session/entity.mjs";
6
6
  import "../../../adapters/database/domains/index.mjs";
7
7
  import { SessionManager } from "../../../core/authentication/session/module.mjs";
8
+ import { OAuth2BackchannelLogoutNotifier } from "../../../core/oauth2/backchannel-logout/module.mjs";
8
9
  import "../../../core/index.mjs";
9
10
  import { CacheInjectionKey } from "../cache/constants.mjs";
10
11
  import { ModuleName } from "../constants.mjs";
11
12
  import { ConfigInjectionKey } from "../config/constants.mjs";
12
13
  import "../config/index.mjs";
13
14
  import "../cache/index.mjs";
15
+ import { LoggerInjectionKey } from "../logger/constants.mjs";
16
+ import "../logger/index.mjs";
17
+ import { OAuth2InjectionToken } from "../oauth2/constants.mjs";
18
+ import "../oauth2/index.mjs";
14
19
  import { SessionRepository } from "./repositories/session.mjs";
15
20
  import "./repositories/index.mjs";
16
21
  //#region src/app/modules/authentication/module.ts
@@ -22,7 +27,8 @@ var AuthenticationModule = class {
22
27
  this.dependencies = [
23
28
  ModuleName.DATABASE,
24
29
  ModuleName.CACHE,
25
- ModuleName.CONFIG
30
+ ModuleName.CONFIG,
31
+ ModuleName.OAUTH2
26
32
  ];
27
33
  }
28
34
  async setup(container) {
@@ -39,7 +45,14 @@ var AuthenticationModule = class {
39
45
  const repository = c.resolve(AuthenticationInjectionKey.SessionRepository);
40
46
  return new SessionManager({
41
47
  repository,
42
- options: { maxAge: config.tokenRefreshMaxAge + 3600 }
48
+ options: { maxAge: config.tokenRefreshMaxAge + 3600 },
49
+ revokeNotifier: new OAuth2BackchannelLogoutNotifier({
50
+ signer: c.resolve(OAuth2InjectionToken.TokenSigner),
51
+ sessionTokenRepository: c.resolve(OAuth2InjectionToken.SessionTokenRepository),
52
+ clientRepository: c.resolve(OAuth2InjectionToken.ClientRepository),
53
+ options: { issuer: config.publicUrl },
54
+ logger: c.resolve(LoggerInjectionKey)
55
+ })
43
56
  });
44
57
  } });
45
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["SessionEntity","SessionManager","CacheInjectionKey","ConfigInjectionKey","ModuleName","AuthenticationInjectionKey","SessionRepository","AuthenticationModule","name","dependencies","AUTHENTICATION","DATABASE","CACHE","CONFIG","setup","container","register","useFactory","c","cache","resolve","repository","config","options","maxAge","tokenRefreshMaxAge"],"sources":["../../../../src/app/modules/authentication/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Session } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport { SessionEntity } from '../../../adapters/database/domains/index.ts';\nimport type { IContainer } from 'eldin';\nimport { SessionManager } from '../../../core/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\n\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { AuthenticationInjectionKey } from './constants.ts';\nimport { SessionRepository } from './repositories/index.ts';\n\nexport class AuthenticationModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.AUTHENTICATION;\n this.dependencies = [ModuleName.DATABASE, ModuleName.CACHE, ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n container.register(AuthenticationInjectionKey.SessionRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n const repository = c.resolve<Repository<Session>>(SessionEntity);\n return new SessionRepository({\n cache,\n repository,\n });\n },\n });\n\n container.register(AuthenticationInjectionKey.SessionManager, {\n useFactory: (c) => {\n const config = c.resolve(ConfigInjectionKey);\n const repository = c.resolve(AuthenticationInjectionKey.SessionRepository);\n return new SessionManager({\n repository,\n options: { maxAge: config.tokenRefreshMaxAge + 3_600 },\n });\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAoBA,IAAaO,uBAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOJ,WAAWM;EACvB,KAAKD,eAAe;GAACL,WAAWO;GAAUP,WAAWQ;GAAOR,WAAWS;EAAO;CAClF;CAEA,MAAMC,MAAMC,WAAsC;EAC9CA,UAAUC,SAASX,2BAA2BC,mBAAmB,EAC7DW,aAAaC,MAAAA;GACT,MAAMC,QAAQD,EAAEE,QAAQlB,iBAAAA;GACxB,MAAMmB,aAAaH,EAAEE,QAA6BpB,aAAAA;GAClD,OAAO,IAAIM,kBAAkB;IACzBa;IACAE;GACJ,CAAA;EACJ,EACJ,CAAA;EAEAN,UAAUC,SAASX,2BAA2BJ,gBAAgB,EAC1DgB,aAAaC,MAAAA;GACT,MAAMI,SAASJ,EAAEE,QAAQjB,kBAAAA;GACzB,MAAMkB,aAAaH,EAAEE,QAAQf,2BAA2BC,iBAAiB;GACzE,OAAO,IAAIL,eAAe;IACtBoB;IACAE,SAAS,EAAEC,QAAQF,OAAOG,qBAAqB,KAAM;GACzD,CAAA;EACJ,EACJ,CAAA;CACJ;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["SessionEntity","OAuth2BackchannelLogoutNotifier","SessionManager","CacheInjectionKey","ConfigInjectionKey","LoggerInjectionKey","OAuth2InjectionToken","ModuleName","AuthenticationInjectionKey","SessionRepository","AuthenticationModule","name","dependencies","AUTHENTICATION","DATABASE","CACHE","CONFIG","OAUTH2","setup","container","register","useFactory","c","cache","resolve","repository","config","options","maxAge","tokenRefreshMaxAge","revokeNotifier","signer","TokenSigner","sessionTokenRepository","SessionTokenRepository","clientRepository","ClientRepository","issuer","publicUrl","logger"],"sources":["../../../../src/app/modules/authentication/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Session } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport { SessionEntity } from '../../../adapters/database/domains/index.ts';\nimport type { IContainer } from 'eldin';\nimport { OAuth2BackchannelLogoutNotifier, SessionManager } from '../../../core/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\nimport { OAuth2InjectionToken } from '../oauth2/index.ts';\n\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { AuthenticationInjectionKey } from './constants.ts';\nimport { SessionRepository } from './repositories/index.ts';\n\nexport class AuthenticationModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.AUTHENTICATION;\n // OAUTH2 for the back-channel logout notifier the manager pushes\n // through (signer, token inventory, client repository). No cycle:\n // OAUTH2 stands on DATABASE, CACHE, CONFIG and IDENTITY only.\n this.dependencies = [\n ModuleName.DATABASE,\n ModuleName.CACHE,\n ModuleName.CONFIG,\n ModuleName.OAUTH2,\n ];\n }\n\n async setup(container: IContainer): Promise<void> {\n container.register(AuthenticationInjectionKey.SessionRepository, {\n useFactory: (c) => {\n const cache = c.resolve(CacheInjectionKey);\n const repository = c.resolve<Repository<Session>>(SessionEntity);\n return new SessionRepository({\n cache,\n repository,\n });\n },\n });\n\n container.register(AuthenticationInjectionKey.SessionManager, {\n useFactory: (c) => {\n const config = c.resolve(ConfigInjectionKey);\n const repository = c.resolve(AuthenticationInjectionKey.SessionRepository);\n return new SessionManager({\n repository,\n options: { maxAge: config.tokenRefreshMaxAge + 3_600 },\n revokeNotifier: new OAuth2BackchannelLogoutNotifier({\n signer: c.resolve(OAuth2InjectionToken.TokenSigner),\n sessionTokenRepository: c.resolve(OAuth2InjectionToken.SessionTokenRepository),\n clientRepository: c.resolve(OAuth2InjectionToken.ClientRepository),\n options: { issuer: config.publicUrl },\n logger: c.resolve(LoggerInjectionKey),\n }),\n });\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,IAAaU,uBAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOJ,WAAWM;EAIvB,KAAKD,eAAe;GAChBL,WAAWO;GACXP,WAAWQ;GACXR,WAAWS;GACXT,WAAWU;EACd;CACL;CAEA,MAAMC,MAAMC,WAAsC;EAC9CA,UAAUC,SAASZ,2BAA2BC,mBAAmB,EAC7DY,aAAaC,MAAAA;GACT,MAAMC,QAAQD,EAAEE,QAAQrB,iBAAAA;GACxB,MAAMsB,aAAaH,EAAEE,QAA6BxB,aAAAA;GAClD,OAAO,IAAIS,kBAAkB;IACzBc;IACAE;GACJ,CAAA;EACJ,EACJ,CAAA;EAEAN,UAAUC,SAASZ,2BAA2BN,gBAAgB,EAC1DmB,aAAaC,MAAAA;GACT,MAAMI,SAASJ,EAAEE,QAAQpB,kBAAAA;GACzB,MAAMqB,aAAaH,EAAEE,QAAQhB,2BAA2BC,iBAAiB;GACzE,OAAO,IAAIP,eAAe;IACtBuB;IACAE,SAAS,EAAEC,QAAQF,OAAOG,qBAAqB,KAAM;IACrDC,gBAAgB,IAAI7B,gCAAgC;KAChD8B,QAAQT,EAAEE,QAAQlB,qBAAqB0B,WAAW;KAClDC,wBAAwBX,EAAEE,QAAQlB,qBAAqB4B,sBAAsB;KAC7EC,kBAAkBb,EAAEE,QAAQlB,qBAAqB8B,gBAAgB;KACjET,SAAS,EAAEU,QAAQX,OAAOY,UAAU;KACpCC,QAAQjB,EAAEE,QAAQnB,kBAAAA;IACtB,CAAA;GACJ,CAAA;EACJ,EACJ,CAAA;CACJ;AACJ"}
@@ -2,7 +2,7 @@ import type { Session } from '@authup/core-kit';
2
2
  import type { IQuery } from '@rapiq/core';
3
3
  import type { EntityRepositoryFindManyResult, ICache } from '@authup/server-kit';
4
4
  import type { Repository } from 'typeorm';
5
- import type { ISessionRepository, SessionFindManyOptions, SessionOwner } from '../../../../core/index.ts';
5
+ import type { ISessionRepository, SessionDeleteExpiredOptions, SessionFindManyOptions, SessionOwner } from '../../../../core/index.ts';
6
6
  type SessionRepositoryContext = {
7
7
  repository: Repository<Session>;
8
8
  cache: ICache;
@@ -12,12 +12,15 @@ export declare class SessionRepository implements ISessionRepository {
12
12
  protected repository: Repository<Session>;
13
13
  constructor(ctx: SessionRepositoryContext);
14
14
  findOneById(id: string): Promise<Session | null>;
15
+ findOneBySecret(secret: string): Promise<Session | null>;
16
+ updateSecret(id: string, secret: string | null): Promise<void>;
15
17
  findMany(query: IQuery, options?: SessionFindManyOptions): Promise<EntityRepositoryFindManyResult<Session>>;
16
18
  findAllByOwner(owner: SessionOwner): Promise<Session[]>;
17
19
  findAllByQuery(query: IQuery): Promise<Session[]>;
18
20
  save(input: Partial<Session>): Promise<Session>;
19
21
  remove(session: Session): Promise<void>;
20
22
  removeById(id: string): Promise<void>;
23
+ deleteExpired(before: string, options?: SessionDeleteExpiredOptions): Promise<number>;
21
24
  }
22
25
  export {};
23
26
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/authentication/repositories/session.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EACR,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACf,MAAM,2BAA2B,CAAC;AAInC,KAAK,wBAAwB,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAA;CAChB,CAAC;AAEF,qBAAa,iBAAkB,YAAW,kBAAkB;IACxD,SAAS,CAAC,KAAK,EAAG,MAAM,CAAC;IAEzB,SAAS,CAAC,UAAU,EAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAI/B,GAAG,EAAE,wBAAwB;IAOnC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAiBhD,QAAQ,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,sBAA2B,GACrC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IA0B7C,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASvD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBjD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB/C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO9C"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/authentication/repositories/session.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,KAAK,EACR,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,YAAY,EACf,MAAM,2BAA2B,CAAC;AAQnC,KAAK,wBAAwB,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAA;CAChB,CAAC;AAEF,qBAAa,iBAAkB,YAAW,kBAAkB;IACxD,SAAS,CAAC,KAAK,EAAG,MAAM,CAAC;IAEzB,SAAS,CAAC,UAAU,EAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAI/B,GAAG,EAAE,wBAAwB;IAOnC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAehD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAexD,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,QAAQ,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,sBAA2B,GACrC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IA0B7C,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASvD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBjD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B/C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,aAAa,CACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC,MAAM,CAAC;CAYrB"}
@@ -1,9 +1,13 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { SESSION_EXPIRY_SWEEP_BATCH_SIZE } from "../../../../core/authentication/session/constants.mjs";
5
+ import { hashSessionSecret } from "../../../../core/oauth2/session-credential/module.mjs";
6
+ import "../../../../core/index.mjs";
4
7
  import { applyQuery, redactFieldConditions } from "../../database/repositories/query.mjs";
5
- import { applyRealmScopeSelect } from "../../database/repositories/helpers.mjs";
8
+ import { applyRealmScopeSelect, deleteInBatches, resolveSweepBatchSize } from "../../database/repositories/helpers.mjs";
6
9
  import { AuthenticationCachePrefix } from "./constants.mjs";
10
+ import { LessThan } from "typeorm";
7
11
  import { buildCacheKey } from "@authup/server-kit";
8
12
  //#region src/app/modules/authentication/repositories/session.ts
9
13
  var SessionRepository = class {
@@ -21,6 +25,13 @@ var SessionRepository = class {
21
25
  if (session) return session;
22
26
  return this.repository.findOneBy({ id });
23
27
  }
28
+ async findOneBySecret(secret) {
29
+ if (!secret) return null;
30
+ return this.repository.findOneBy({ secret: hashSessionSecret(secret) });
31
+ }
32
+ async updateSecret(id, secret) {
33
+ await this.repository.update({ id }, { secret: secret === null ? null : hashSessionSecret(secret) });
34
+ }
24
35
  async findMany(query, options = {}) {
25
36
  const qb = this.repository.createQueryBuilder("session");
26
37
  const { pagination } = applyQuery(qb, query);
@@ -53,23 +64,29 @@ var SessionRepository = class {
53
64
  async save(input) {
54
65
  const session = this.repository.create(input);
55
66
  await this.repository.save(session);
67
+ const cacheable = { ...session };
68
+ delete cacheable.secret;
56
69
  await this.cache.set(buildCacheKey({
57
70
  prefix: AuthenticationCachePrefix.SESSION,
58
71
  key: session.id
59
- }), session, { ttl: new Date(session.expiresAt).getTime() - Date.now() });
72
+ }), cacheable, { ttl: new Date(session.expiresAt).getTime() - Date.now() });
60
73
  return session;
61
74
  }
62
75
  async remove(session) {
76
+ const { id } = session;
63
77
  await this.repository.remove(session);
64
78
  await this.cache.drop(buildCacheKey({
65
79
  prefix: AuthenticationCachePrefix.SESSION,
66
- key: session.id
80
+ key: id
67
81
  }));
68
82
  }
69
83
  async removeById(id) {
70
84
  const session = await this.findOneById(id);
71
85
  if (session) await this.remove(session);
72
86
  }
87
+ async deleteExpired(before, options = {}) {
88
+ return deleteInBatches(this.repository, { expiresAt: LessThan(before) }, resolveSweepBatchSize(options.batchSize, SESSION_EXPIRY_SWEEP_BATCH_SIZE));
89
+ }
73
90
  };
74
91
  //#endregion
75
92
  export { SessionRepository };
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","names":["buildCacheKey","applyQuery","redactFieldConditions","applyRealmScopeSelect","AuthenticationCachePrefix","SessionRepository","cache","repository","ctx","findOneById","id","session","get","prefix","SESSION","key","findOneBy","findMany","query","options","qb","createQueryBuilder","pagination","owner","andWhere","ownerSub","sub","ownerSubKind","subKind","entities","total","getManyAndCount","data","meta","findAllByOwner","where","getMany","findAllByQuery","save","input","create","set","ttl","Date","expiresAt","getTime","now","remove","drop","removeById"],"sources":["../../../../../src/app/modules/authentication/repositories/session.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Session } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { EntityRepositoryFindManyResult, ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, redactFieldConditions } from '../../database/repositories/query.ts';\nimport type {\n ISessionRepository,\n SessionFindManyOptions,\n SessionOwner,\n} from '../../../../core/index.ts';\nimport { applyRealmScopeSelect } from '../../database/repositories/helpers.ts';\nimport { AuthenticationCachePrefix } from './constants.ts';\n\ntype SessionRepositoryContext = {\n repository: Repository<Session>,\n cache: ICache\n};\n\nexport class SessionRepository implements ISessionRepository {\n protected cache : ICache;\n\n protected repository : Repository<Session>;\n\n // -----------------------------------------------------\n\n constructor(ctx: SessionRepositoryContext) {\n this.cache = ctx.cache;\n this.repository = ctx.repository;\n }\n\n // -----------------------------------------------------\n\n async findOneById(id: string): Promise<Session | null> {\n const session = await this.cache.get<Session>(\n buildCacheKey({\n prefix: AuthenticationCachePrefix.SESSION,\n key: id, \n }),\n );\n\n if (session) {\n return session;\n }\n\n return this.repository.findOneBy({ id });\n }\n\n // -----------------------------------------------------\n\n async findMany(\n query: IQuery,\n options: SessionFindManyOptions = {},\n ): Promise<EntityRepositoryFindManyResult<Session>> {\n const qb = this.repository.createQueryBuilder('session');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'session', ['sub', 'subKind']);\n\n if (options.owner) {\n // mandatory constraint — not overridable by a rapiq filter\n qb.andWhere('session.sub = :ownerSub AND session.subKind = :ownerSubKind', {\n ownerSub: options.owner.sub,\n ownerSubKind: options.owner.subKind,\n });\n }\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findAllByOwner(owner: SessionOwner): Promise<Session[]> {\n return this.repository.createQueryBuilder('session')\n .where('session.sub = :sub AND session.subKind = :subKind', {\n sub: owner.sub,\n subKind: owner.subKind,\n })\n .getMany();\n }\n\n async findAllByQuery(query: IQuery): Promise<Session[]> {\n const qb = this.repository.createQueryBuilder('session');\n\n // NOTE: `parameters: ['filters']` — a bulk revoke must reach every\n // matching row. Applying the schema's `pagination.maxLimit` would\n // default the limit to that cap when the caller sends no page (rapiq\n // `finalizePagination`), silently truncating the delete.\n applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'session', ['sub', 'subKind']);\n\n return qb.getMany();\n }\n\n // -----------------------------------------------------\n\n async save(input: Partial<Session>): Promise<Session> {\n const session = this.repository.create(input);\n await this.repository.save(session);\n\n await this.cache.set(\n buildCacheKey({\n prefix: AuthenticationCachePrefix.SESSION,\n key: session.id, \n }),\n session,\n { ttl: new Date(session.expiresAt).getTime() - Date.now() },\n );\n\n return session;\n }\n\n // -----------------------------------------------------\n\n async remove(session: Session): Promise<void> {\n await this.repository.remove(session);\n await this.cache.drop(\n buildCacheKey({\n prefix: AuthenticationCachePrefix.SESSION,\n key: session.id, \n }),\n );\n }\n\n async removeById(id: string): Promise<void> {\n const session = await this.findOneById(id);\n\n if (session) {\n await this.remove(session);\n }\n }\n}\n"],"mappings":";;;;;;;;AA0BA,IAAaK,oBAAb,MAAaA;CACCC;CAEAC;CAIV,YAAYC,KAA+B;EACvC,KAAKF,QAAQE,IAAIF;EACjB,KAAKC,aAAaC,IAAID;CAC1B;CAIA,MAAME,YAAYC,IAAqC;EACnD,MAAMC,UAAU,MAAM,KAAKL,MAAMM,IAC7BZ,cAAc;GACVa,QAAQT,0BAA0BU;GAClCC,KAAKL;EACT,CAAA,CAAA;EAGJ,IAAIC,SACA,OAAOA;EAGX,OAAO,KAAKJ,WAAWS,UAAU,EAAEN,GAAG,CAAA;CAC1C;CAIA,MAAMO,SACFC,OACAC,UAAkC,CAAC,GACa;EAChD,MAAMC,KAAK,KAAKb,WAAWc,mBAAmB,SAAA;EAE9C,MAAM,EAAEC,eAAerB,WAAWmB,IAAIF,KAAAA;EAEtCf,sBAAsBiB,IAAI,WAAW,CAAC,OAAO,SAAU,CAAA;EAEvD,IAAID,QAAQI,OAERH,GAAGI,SAAS,+DAA+D;GACvEC,UAAUN,QAAQI,MAAMG;GACxBC,cAAcR,QAAQI,MAAMK;EAChC,CAAA;EAGJ,MAAM,CAACC,UAAUC,SAAS,MAAMV,GAAGW,gBAAe;EAElD,OAAO;GACHC,MAAM9B,sBAAsBgB,OAAOW,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGR;GACP;EACJ;CACJ;CAEA,MAAMY,eAAeX,OAAyC;EAC1D,OAAO,KAAKhB,WAAWc,mBAAmB,SAAA,CAAA,CACrCc,MAAM,qDAAqD;GACxDT,KAAKH,MAAMG;GACXE,SAASL,MAAMK;EACnB,CAAA,CAAA,CACCQ,QAAO;CAChB;CAEA,MAAMC,eAAenB,OAAmC;EACpD,MAAME,KAAK,KAAKb,WAAWc,mBAAmB,SAAA;EAM9CpB,WAAWmB,IAAIF,KAAAA;EAEff,sBAAsBiB,IAAI,WAAW,CAAC,OAAO,SAAU,CAAA;EAEvD,OAAOA,GAAGgB,QAAO;CACrB;CAIA,MAAME,KAAKC,OAA2C;EAClD,MAAM5B,UAAU,KAAKJ,WAAWiC,OAAOD,KAAAA;EACvC,MAAM,KAAKhC,WAAW+B,KAAK3B,OAAAA;EAE3B,MAAM,KAAKL,MAAMmC,IACbzC,cAAc;GACVa,QAAQT,0BAA0BU;GAClCC,KAAKJ,QAAQD;EACjB,CAAA,GACAC,SACA,EAAE+B,KAAK,IAAIC,KAAKhC,QAAQiC,SAAS,CAAA,CAAEC,QAAO,IAAKF,KAAKG,IAAG,EAAG,CAAA;EAG9D,OAAOnC;CACX;CAIA,MAAMoC,OAAOpC,SAAiC;EAC1C,MAAM,KAAKJ,WAAWwC,OAAOpC,OAAAA;EAC7B,MAAM,KAAKL,MAAM0C,KACbhD,cAAc;GACVa,QAAQT,0BAA0BU;GAClCC,KAAKJ,QAAQD;EACjB,CAAA,CAAA;CAER;CAEA,MAAMuC,WAAWvC,IAA2B;EACxC,MAAMC,UAAU,MAAM,KAAKF,YAAYC,EAAAA;EAEvC,IAAIC,SACA,MAAM,KAAKoC,OAAOpC,OAAAA;CAE1B;AACJ"}
1
+ {"version":3,"file":"session.mjs","names":["buildCacheKey","LessThan","applyQuery","redactFieldConditions","SESSION_EXPIRY_SWEEP_BATCH_SIZE","hashSessionSecret","applyRealmScopeSelect","deleteInBatches","resolveSweepBatchSize","AuthenticationCachePrefix","SessionRepository","cache","repository","ctx","findOneById","id","session","get","prefix","SESSION","key","findOneBy","findOneBySecret","secret","updateSecret","update","findMany","query","options","qb","createQueryBuilder","pagination","owner","andWhere","ownerSub","sub","ownerSubKind","subKind","entities","total","getManyAndCount","data","meta","findAllByOwner","where","getMany","findAllByQuery","save","input","create","cacheable","set","ttl","Date","expiresAt","getTime","now","remove","drop","removeById","deleteExpired","before","batchSize"],"sources":["../../../../../src/app/modules/authentication/repositories/session.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Session } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { EntityRepositoryFindManyResult, ICache } from '@authup/server-kit';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { Repository } from 'typeorm';\nimport { LessThan } from 'typeorm';\nimport { applyQuery, redactFieldConditions } from '../../database/repositories/query.ts';\nimport { SESSION_EXPIRY_SWEEP_BATCH_SIZE, hashSessionSecret } from '../../../../core/index.ts';\nimport type {\n ISessionRepository,\n SessionDeleteExpiredOptions,\n SessionFindManyOptions,\n SessionOwner,\n} from '../../../../core/index.ts';\nimport {\n applyRealmScopeSelect,\n deleteInBatches,\n resolveSweepBatchSize,\n} from '../../database/repositories/helpers.ts';\nimport { AuthenticationCachePrefix } from './constants.ts';\n\ntype SessionRepositoryContext = {\n repository: Repository<Session>,\n cache: ICache\n};\n\nexport class SessionRepository implements ISessionRepository {\n protected cache : ICache;\n\n protected repository : Repository<Session>;\n\n // -----------------------------------------------------\n\n constructor(ctx: SessionRepositoryContext) {\n this.cache = ctx.cache;\n this.repository = ctx.repository;\n }\n\n // -----------------------------------------------------\n\n async findOneById(id: string): Promise<Session | null> {\n const session = await this.cache.get<Session>(\n buildCacheKey({\n prefix: AuthenticationCachePrefix.SESSION,\n key: id, \n }),\n );\n\n if (session) {\n return session;\n }\n\n return this.repository.findOneBy({ id });\n }\n\n async findOneBySecret(secret: string): Promise<Session | null> {\n if (!secret) {\n // A blank handle must never become a query: the column is\n // nullable, so an empty match is meaningless, and refusing it here\n // keeps a missing cookie from reaching the database at all.\n return null;\n }\n\n // Deliberately not cached: the session cache is id-keyed, and the\n // credential is a multi-day one, so the row is the authority (a cache\n // a replica never saw would answer anonymous in steady state).\n // The column holds a digest, never the credential itself.\n return this.repository.findOneBy({ secret: hashSessionSecret(secret) });\n }\n\n async updateSecret(id: string, secret: string | null): Promise<void> {\n await this.repository.update({ id }, { secret: secret === null ? null : hashSessionSecret(secret) });\n\n // The cached copy never carries the secret (see `save`), so nothing\n // cached goes stale here. `auth_sessions` has no entity subscriber, so\n // a targeted update publishes nothing either.\n }\n\n // -----------------------------------------------------\n\n async findMany(\n query: IQuery,\n options: SessionFindManyOptions = {},\n ): Promise<EntityRepositoryFindManyResult<Session>> {\n const qb = this.repository.createQueryBuilder('session');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'session', ['sub', 'subKind']);\n\n if (options.owner) {\n // mandatory constraint — not overridable by a rapiq filter\n qb.andWhere('session.sub = :ownerSub AND session.subKind = :ownerSubKind', {\n ownerSub: options.owner.sub,\n ownerSubKind: options.owner.subKind,\n });\n }\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findAllByOwner(owner: SessionOwner): Promise<Session[]> {\n return this.repository.createQueryBuilder('session')\n .where('session.sub = :sub AND session.subKind = :subKind', {\n sub: owner.sub,\n subKind: owner.subKind,\n })\n .getMany();\n }\n\n async findAllByQuery(query: IQuery): Promise<Session[]> {\n const qb = this.repository.createQueryBuilder('session');\n\n // NOTE: `parameters: ['filters']` — a bulk revoke must reach every\n // matching row. Applying the schema's `pagination.maxLimit` would\n // default the limit to that cap when the caller sends no page (rapiq\n // `finalizePagination`), silently truncating the delete.\n applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'session', ['sub', 'subKind']);\n\n return qb.getMany();\n }\n\n // -----------------------------------------------------\n\n async save(input: Partial<Session>): Promise<Session> {\n const session = this.repository.create(input);\n await this.repository.save(session);\n\n // The cookie handle must never enter the cache. `findOneById` serves\n // the cached object verbatim, and an owner reads its own session\n // through `GET /sessions/:id` with no permission at all, so a cached\n // secret would be published where a `select: false` column is\n // otherwise absent by construction. Omitted rather than nulled: a\n // cached `secret: null` fed back through `save()` (ping / refresh both\n // do exactly that) would clear the column and kill a live console\n // session on its first request.\n const cacheable : Session = { ...session };\n delete cacheable.secret;\n\n await this.cache.set(\n buildCacheKey({\n prefix: AuthenticationCachePrefix.SESSION,\n key: session.id,\n }),\n cacheable,\n { ttl: new Date(session.expiresAt).getTime() - Date.now() },\n );\n\n return session;\n }\n\n // -----------------------------------------------------\n\n async remove(session: Session): Promise<void> {\n // TypeORM unsets the primary key on the entity it removed, so the id\n // has to be read first or the cache drop misses and the revoked\n // session stays readable until its entry expires.\n const { id } = session;\n\n await this.repository.remove(session);\n await this.cache.drop(\n buildCacheKey({\n prefix: AuthenticationCachePrefix.SESSION,\n key: id,\n }),\n );\n }\n\n async removeById(id: string): Promise<void> {\n const session = await this.findOneById(id);\n\n if (session) {\n await this.remove(session);\n }\n }\n\n async deleteExpired(\n before: string,\n options: SessionDeleteExpiredOptions = {},\n ): Promise<number> {\n // Deliberately bypasses the cache, unlike `remove`. A cached session\n // is written with `ttl = expiresAt - now` on every save (creation and\n // every refresh alike), so an entry has always lapsed by the time its\n // row matches this predicate. Dropping the keys would mean reading\n // each row back only to evict something that is already gone.\n return deleteInBatches(\n this.repository,\n { expiresAt: LessThan(before) },\n resolveSweepBatchSize(options.batchSize, SESSION_EXPIRY_SWEEP_BATCH_SIZE),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,IAAaU,oBAAb,MAAaA;CACCC;CAEAC;CAIV,YAAYC,KAA+B;EACvC,KAAKF,QAAQE,IAAIF;EACjB,KAAKC,aAAaC,IAAID;CAC1B;CAIA,MAAME,YAAYC,IAAqC;EACnD,MAAMC,UAAU,MAAM,KAAKL,MAAMM,IAC7BjB,cAAc;GACVkB,QAAQT,0BAA0BU;GAClCC,KAAKL;EACT,CAAA,CAAA;EAGJ,IAAIC,SACA,OAAOA;EAGX,OAAO,KAAKJ,WAAWS,UAAU,EAAEN,GAAG,CAAA;CAC1C;CAEA,MAAMO,gBAAgBC,QAAyC;EAC3D,IAAI,CAACA,QAID,OAAO;EAOX,OAAO,KAAKX,WAAWS,UAAU,EAAEE,QAAQlB,kBAAkBkB,MAAAA,EAAQ,CAAA;CACzE;CAEA,MAAMC,aAAaT,IAAYQ,QAAsC;EACjE,MAAM,KAAKX,WAAWa,OAAO,EAAEV,GAAG,GAAG,EAAEQ,QAAQA,WAAW,OAAO,OAAOlB,kBAAkBkB,MAAAA,EAAQ,CAAA;CAKtG;CAIA,MAAMG,SACFC,OACAC,UAAkC,CAAC,GACa;EAChD,MAAMC,KAAK,KAAKjB,WAAWkB,mBAAmB,SAAA;EAE9C,MAAM,EAAEC,eAAe7B,WAAW2B,IAAIF,KAAAA;EAEtCrB,sBAAsBuB,IAAI,WAAW,CAAC,OAAO,SAAU,CAAA;EAEvD,IAAID,QAAQI,OAERH,GAAGI,SAAS,+DAA+D;GACvEC,UAAUN,QAAQI,MAAMG;GACxBC,cAAcR,QAAQI,MAAMK;EAChC,CAAA;EAGJ,MAAM,CAACC,UAAUC,SAAS,MAAMV,GAAGW,gBAAe;EAElD,OAAO;GACHC,MAAMtC,sBAAsBwB,OAAOW,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGR;GACP;EACJ;CACJ;CAEA,MAAMY,eAAeX,OAAyC;EAC1D,OAAO,KAAKpB,WAAWkB,mBAAmB,SAAA,CAAA,CACrCc,MAAM,qDAAqD;GACxDT,KAAKH,MAAMG;GACXE,SAASL,MAAMK;EACnB,CAAA,CAAA,CACCQ,QAAO;CAChB;CAEA,MAAMC,eAAenB,OAAmC;EACpD,MAAME,KAAK,KAAKjB,WAAWkB,mBAAmB,SAAA;EAM9C5B,WAAW2B,IAAIF,KAAAA;EAEfrB,sBAAsBuB,IAAI,WAAW,CAAC,OAAO,SAAU,CAAA;EAEvD,OAAOA,GAAGgB,QAAO;CACrB;CAIA,MAAME,KAAKC,OAA2C;EAClD,MAAMhC,UAAU,KAAKJ,WAAWqC,OAAOD,KAAAA;EACvC,MAAM,KAAKpC,WAAWmC,KAAK/B,OAAAA;EAU3B,MAAMkC,YAAsB,EAAE,GAAGlC,QAAQ;EACzC,OAAOkC,UAAU3B;EAEjB,MAAM,KAAKZ,MAAMwC,IACbnD,cAAc;GACVkB,QAAQT,0BAA0BU;GAClCC,KAAKJ,QAAQD;EACjB,CAAA,GACAmC,WACA,EAAEE,KAAK,IAAIC,KAAKrC,QAAQsC,SAAS,CAAA,CAAEC,QAAO,IAAKF,KAAKG,IAAG,EAAG,CAAA;EAG9D,OAAOxC;CACX;CAIA,MAAMyC,OAAOzC,SAAiC;EAI1C,MAAM,EAAED,OAAOC;EAEf,MAAM,KAAKJ,WAAW6C,OAAOzC,OAAAA;EAC7B,MAAM,KAAKL,MAAM+C,KACb1D,cAAc;GACVkB,QAAQT,0BAA0BU;GAClCC,KAAKL;EACT,CAAA,CAAA;CAER;CAEA,MAAM4C,WAAW5C,IAA2B;EACxC,MAAMC,UAAU,MAAM,KAAKF,YAAYC,EAAAA;EAEvC,IAAIC,SACA,MAAM,KAAKyC,OAAOzC,OAAAA;CAE1B;CAEA,MAAM4C,cACFC,QACAjC,UAAuC,CAAC,GACzB;EAMf,OAAOrB,gBACH,KAAKK,YACL,EAAE0C,WAAWrD,SAAS4D,MAAAA,EAAQ,GAC9BrD,sBAAsBoB,QAAQkC,WAAW1D,+BAAAA,CAAAA;CAEjD;AACJ"}
@@ -1,2 +1,3 @@
1
1
  export * from './module.ts';
2
+ export * from './types.ts';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/components/index.ts"],"names":[],"mappings":"AAOA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/components/index.ts"],"names":[],"mappings":"AAOA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import type { Component } from '../../../components/index.ts';
2
2
  import type { IModule } from 'orkos';
3
3
  import type { IContainer } from 'eldin';
4
+ import type { ComponentsModuleOptions } from './types.ts';
4
5
  export declare class ComponentsModule implements IModule {
5
6
  readonly name: string;
6
7
  readonly dependencies: string[];
8
+ protected options: ComponentsModuleOptions;
7
9
  protected components: Component[];
8
- constructor();
10
+ constructor(options?: ComponentsModuleOptions);
9
11
  setup(container: IContainer): Promise<void>;
10
12
  teardown(container: IContainer): Promise<void>;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/components/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAExC,qBAAa,gBAAiB,YAAW,OAAO;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEhC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;;IAQ5B,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B3C,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBvD"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/components/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAS9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,qBAAa,gBAAiB,YAAW,OAAO;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEhC,SAAS,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAE3C,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;gBAEtB,OAAO,GAAE,uBAA4B;IAY3C,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA2D3C,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBvD"}
@@ -1,38 +1,56 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { CacheInjectionKey } from "../cache/constants.mjs";
4
5
  import { ModuleName } from "../constants.mjs";
5
6
  import { ConfigInjectionKey } from "../config/constants.mjs";
6
7
  import "../config/index.mjs";
7
- import { createEventCleanerComponent } from "../../../components/event-cleaner/module.mjs";
8
- import { createOAuth2CleanerComponent } from "../../../components/oauth2-cleaner/module.mjs";
9
- import "../../../components/index.mjs";
10
- import { DatabaseInjectionKey } from "../database/constants.mjs";
8
+ import "../cache/index.mjs";
11
9
  import { LoggerInjectionKey } from "../logger/constants.mjs";
12
10
  import "../logger/index.mjs";
11
+ import { DatabaseInjectionKey } from "../database/constants.mjs";
13
12
  import "../database/index.mjs";
13
+ import { createEventCleanerComponent } from "../../../components/event-cleaner/module.mjs";
14
+ import { createOAuth2CleanerComponent } from "../../../components/oauth2-cleaner/module.mjs";
15
+ import "../../../components/index.mjs";
14
16
  //#region src/app/modules/components/module.ts
15
17
  var ComponentsModule = class {
16
18
  name;
17
19
  dependencies;
20
+ options;
18
21
  components;
19
- constructor() {
22
+ constructor(options = {}) {
20
23
  this.name = ModuleName.COMPONENTS;
21
24
  this.dependencies = [
22
25
  ModuleName.CONFIG,
23
26
  ModuleName.LOGGER,
27
+ ModuleName.CACHE,
24
28
  ModuleName.DATABASE
25
29
  ];
30
+ this.options = options;
26
31
  this.components = [];
27
32
  }
28
33
  async setup(container) {
29
34
  const config = container.resolve(ConfigInjectionKey);
30
35
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
31
36
  const logger = container.resolve(LoggerInjectionKey);
32
- const components = [createOAuth2CleanerComponent(dataSource, logger)];
37
+ if (!config.worker.enabled) {
38
+ if (this.options.required) throw new Error("This process runs in worker mode, but core.worker.enabled is false. Set it to true for this process (WORKER_ENABLED=true), or start the API instead (`authup start` or `authup start core`), which runs the worker in process while the key is true.");
39
+ logger.info("The worker is disabled by configuration (core.worker.enabled: false).");
40
+ return;
41
+ }
42
+ const cache = container.resolve(CacheInjectionKey);
43
+ const registry = [{
44
+ name: "oauth2-cleaner",
45
+ component: createOAuth2CleanerComponent(dataSource, cache, logger)
46
+ }];
33
47
  const securitySweep = config.eventLogRetentionDays > 0;
34
48
  const entitySweep = config.eventLogEntityEnabled && config.eventLogEntityRetentionDays > 0;
35
- if (config.eventLogEnabled && (securitySweep || entitySweep)) components.push(createEventCleanerComponent(dataSource, logger));
49
+ if (config.eventLogEnabled && (securitySweep || entitySweep)) registry.push({
50
+ name: "event-cleaner",
51
+ component: createEventCleanerComponent(dataSource, logger)
52
+ });
53
+ const components = registry.map((entry) => entry.component);
36
54
  this.components = components;
37
55
  components.forEach((component) => {
38
56
  component.start().catch((e) => {
@@ -40,6 +58,7 @@ var ComponentsModule = class {
40
58
  logger.error(e);
41
59
  });
42
60
  });
61
+ logger.info(`Background components started: ${registry.map((entry) => entry.name).join(", ")}.`);
43
62
  }
44
63
  async teardown(container) {
45
64
  const logger = container.tryResolve(LoggerInjectionKey);
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["createEventCleanerComponent","createOAuth2CleanerComponent","ConfigInjectionKey","DatabaseInjectionKey","LoggerInjectionKey","ModuleName","ComponentsModule","name","dependencies","components","COMPONENTS","CONFIG","LOGGER","DATABASE","setup","container","config","resolve","dataSource","DataSource","logger","securitySweep","eventLogRetentionDays","entitySweep","eventLogEntityEnabled","eventLogEntityRetentionDays","eventLogEnabled","push","forEach","component","start","catch","e","error","teardown","tryResolve","stop","success","data","warn"],"sources":["../../../../src/app/modules/components/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Component } from '../../../components/index.ts';\nimport {\n createEventCleanerComponent,\n createOAuth2CleanerComponent,\n} from '../../../components/index.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { DatabaseInjectionKey } from '../database/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class ComponentsModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected components: Component[];\n\n constructor() {\n this.name = ModuleName.COMPONENTS;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER, ModuleName.DATABASE];\n this.components = [];\n }\n\n async setup(container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const logger = container.resolve(LoggerInjectionKey);\n\n const components: Component[] = [\n createOAuth2CleanerComponent(dataSource, logger),\n ];\n\n // The sweep only exists when rows are written AND at least one row\n // family carries an expiry — security events (eventLogRetentionDays)\n // and entity-CRUD events (eventLogEntityRetentionDays) are stamped\n // independently, so either non-zero retention needs the cleaner.\n const securitySweep = config.eventLogRetentionDays > 0;\n const entitySweep = config.eventLogEntityEnabled && config.eventLogEntityRetentionDays > 0;\n if (config.eventLogEnabled && (securitySweep || entitySweep)) {\n components.push(createEventCleanerComponent(dataSource, logger));\n }\n\n this.components = components;\n\n // start() is deliberately fire-and-forget, so a rejection must be\n // caught here — an unhandled rejection is fatal on modern node.\n components.forEach((component) => {\n component.start().catch((e) => {\n logger.error('Starting a background component failed.');\n logger.error(e);\n });\n });\n }\n\n async teardown(container: IContainer): Promise<void> {\n const logger = container.tryResolve(LoggerInjectionKey);\n\n const { components } = this;\n this.components = [];\n\n for (const component of components) {\n try {\n await component.stop();\n } catch (e) {\n if (logger.success) {\n logger.data.warn('Stopping a background component failed.');\n logger.data.warn(e);\n }\n }\n }\n }\n\n // ----------------------------------------------------\n}\n"],"mappings":";;;;;;;;;;;;;;AAmBA,IAAaM,mBAAb,MAAaA;CACAC;CAEAC;CAECC;CAEV,cAAc;EACV,KAAKF,OAAOF,WAAWK;EACvB,KAAKF,eAAe;GAACH,WAAWM;GAAQN,WAAWO;GAAQP,WAAWQ;EAAS;EAC/E,KAAKJ,aAAa,CAAA;CACtB;CAEA,MAAMK,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,QAAQf,kBAAAA;EACjC,MAAMgB,aAAaH,UAAUE,QAAQd,qBAAqBgB,UAAU;EACpE,MAAMC,SAASL,UAAUE,QAAQb,kBAAAA;EAEjC,MAAMK,aAA0B,CAC5BR,6BAA6BiB,YAAYE,MAAAA,CAC5C;EAMD,MAAMC,gBAAgBL,OAAOM,wBAAwB;EACrD,MAAMC,cAAcP,OAAOQ,yBAAyBR,OAAOS,8BAA8B;EACzF,IAAIT,OAAOU,oBAAoBL,iBAAiBE,cAC5Cd,WAAWkB,KAAK3B,4BAA4BkB,YAAYE,MAAAA,CAAAA;EAG5D,KAAKX,aAAaA;EAIlBA,WAAWmB,SAASC,cAAAA;GAChBA,UAAUC,MAAK,CAAA,CAAGC,OAAOC,MAAAA;IACrBZ,OAAOa,MAAM,yCAAA;IACbb,OAAOa,MAAMD,CAAAA;GACjB,CAAA;EACJ,CAAA;CACJ;CAEA,MAAME,SAASnB,WAAsC;EACjD,MAAMK,SAASL,UAAUoB,WAAW/B,kBAAAA;EAEpC,MAAM,EAAEK,eAAe;EACvB,KAAKA,aAAa,CAAA;EAElB,KAAK,MAAMoB,aAAapB,YACpB,IAAI;GACA,MAAMoB,UAAUO,KAAI;EACxB,SAASJ,GAAG;GACR,IAAIZ,OAAOiB,SAAS;IAChBjB,OAAOkB,KAAKC,KAAK,yCAAA;IACjBnB,OAAOkB,KAAKC,KAAKP,CAAAA;GACrB;EACJ;CAER;AAGJ"}
1
+ {"version":3,"file":"module.mjs","names":["createEventCleanerComponent","createOAuth2CleanerComponent","CacheInjectionKey","ConfigInjectionKey","DatabaseInjectionKey","LoggerInjectionKey","ModuleName","ComponentsModule","name","dependencies","options","components","COMPONENTS","CONFIG","LOGGER","CACHE","DATABASE","setup","container","config","resolve","dataSource","DataSource","logger","worker","enabled","required","Error","info","cache","registry","component","securitySweep","eventLogRetentionDays","entitySweep","eventLogEntityEnabled","eventLogEntityRetentionDays","eventLogEnabled","push","map","entry","forEach","start","catch","e","error","join","teardown","tryResolve","stop","success","data","warn"],"sources":["../../../../src/app/modules/components/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Component } from '../../../components/index.ts';\nimport {\n createEventCleanerComponent,\n createOAuth2CleanerComponent,\n} from '../../../components/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport { DatabaseInjectionKey } from '../database/index.ts';\nimport { LoggerInjectionKey } from '../logger/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport type { IContainer } from 'eldin';\nimport type { ComponentsModuleOptions } from './types.ts';\n\nexport class ComponentsModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected options: ComponentsModuleOptions;\n\n protected components: Component[];\n\n constructor(options: ComponentsModuleOptions = {}) {\n this.name = ModuleName.COMPONENTS;\n this.dependencies = [\n ModuleName.CONFIG,\n ModuleName.LOGGER,\n ModuleName.CACHE,\n ModuleName.DATABASE,\n ];\n this.options = options;\n this.components = [];\n }\n\n async setup(container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const logger = container.resolve(LoggerInjectionKey);\n\n // worker mode requires it; the default mode follows the config, so an\n // API replica can hand the sweeps to a dedicated worker process.\n if (!config.worker.enabled) {\n if (this.options.required) {\n throw new Error('This process runs in worker mode, but core.worker.enabled is false. Set it to true for this process (WORKER_ENABLED=true), or start the API instead (`authup start` or `authup start core`), which runs the worker in process while the key is true.');\n }\n\n logger.info('The worker is disabled by configuration (core.worker.enabled: false).');\n return;\n }\n\n const cache = container.resolve(CacheInjectionKey);\n\n // Name and component travel together so the boot log can never drift\n // from what was actually registered.\n const registry: { name: string, component: Component }[] = [\n {\n name: 'oauth2-cleaner',\n component: createOAuth2CleanerComponent(dataSource, cache, logger),\n },\n ];\n\n // The sweep only exists when rows are written AND at least one row\n // family carries an expiry — security events (eventLogRetentionDays)\n // and entity-CRUD events (eventLogEntityRetentionDays) are stamped\n // independently, so either non-zero retention needs the cleaner.\n const securitySweep = config.eventLogRetentionDays > 0;\n const entitySweep = config.eventLogEntityEnabled && config.eventLogEntityRetentionDays > 0;\n if (config.eventLogEnabled && (securitySweep || entitySweep)) {\n registry.push({\n name: 'event-cleaner',\n component: createEventCleanerComponent(dataSource, logger),\n });\n }\n\n const components = registry.map((entry) => entry.component);\n this.components = components;\n\n // start() is deliberately fire-and-forget, so a rejection must be\n // caught here — an unhandled rejection is fatal on modern node.\n components.forEach((component) => {\n component.start().catch((e) => {\n logger.error('Starting a background component failed.');\n logger.error(e);\n });\n });\n\n // Info level, and the only line a healthy process writes about this:\n // the sweeps log nothing per tick, the production console transport\n // is info, and a worker whose whole job is these components would\n // otherwise boot silent.\n logger.info(`Background components started: ${registry.map((entry) => entry.name).join(', ')}.`);\n }\n\n async teardown(container: IContainer): Promise<void> {\n const logger = container.tryResolve(LoggerInjectionKey);\n\n const { components } = this;\n this.components = [];\n\n for (const component of components) {\n try {\n await component.stop();\n } catch (e) {\n if (logger.success) {\n logger.data.warn('Stopping a background component failed.');\n logger.data.warn(e);\n }\n }\n }\n }\n\n // ----------------------------------------------------\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAqBA,IAAaO,mBAAb,MAAaA;CACAC;CAEAC;CAECC;CAEAC;CAEV,YAAYD,UAAmC,CAAC,GAAG;EAC/C,KAAKF,OAAOF,WAAWM;EACvB,KAAKH,eAAe;GAChBH,WAAWO;GACXP,WAAWQ;GACXR,WAAWS;GACXT,WAAWU;EACd;EACD,KAAKN,UAAUA;EACf,KAAKC,aAAa,CAAA;CACtB;CAEA,MAAMM,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,QAAQjB,kBAAAA;EACjC,MAAMkB,aAAaH,UAAUE,QAAQhB,qBAAqBkB,UAAU;EACpE,MAAMC,SAASL,UAAUE,QAAQf,kBAAAA;EAIjC,IAAI,CAACc,OAAOK,OAAOC,SAAS;GACxB,IAAI,KAAKf,QAAQgB,UACb,MAAM,IAAIC,MAAM,sPAAA;GAGpBJ,OAAOK,KAAK,uEAAA;GACZ;EACJ;EAEA,MAAMC,QAAQX,UAAUE,QAAQlB,iBAAAA;EAIhC,MAAM4B,WAAqD,CACvD;GACItB,MAAM;GACNuB,WAAW9B,6BAA6BoB,YAAYQ,OAAON,MAAAA;EAC/D,CACH;EAMD,MAAMS,gBAAgBb,OAAOc,wBAAwB;EACrD,MAAMC,cAAcf,OAAOgB,yBAAyBhB,OAAOiB,8BAA8B;EACzF,IAAIjB,OAAOkB,oBAAoBL,iBAAiBE,cAC5CJ,SAASQ,KAAK;GACV9B,MAAM;GACNuB,WAAW/B,4BAA4BqB,YAAYE,MAAAA;EACvD,CAAA;EAGJ,MAAMZ,aAAamB,SAASS,KAAKC,UAAUA,MAAMT,SAAS;EAC1D,KAAKpB,aAAaA;EAIlBA,WAAW8B,SAASV,cAAAA;GAChBA,UAAUW,MAAK,CAAA,CAAGC,OAAOC,MAAAA;IACrBrB,OAAOsB,MAAM,yCAAA;IACbtB,OAAOsB,MAAMD,CAAAA;GACjB,CAAA;EACJ,CAAA;EAMArB,OAAOK,KAAK,kCAAkCE,SAASS,KAAKC,UAAUA,MAAMhC,IAAI,CAAA,CAAEsC,KAAK,IAAA,EAAM,EAAE;CACnG;CAEA,MAAMC,SAAS7B,WAAsC;EACjD,MAAMK,SAASL,UAAU8B,WAAW3C,kBAAAA;EAEpC,MAAM,EAAEM,eAAe;EACvB,KAAKA,aAAa,CAAA;EAElB,KAAK,MAAMoB,aAAapB,YACpB,IAAI;GACA,MAAMoB,UAAUkB,KAAI;EACxB,SAASL,GAAG;GACR,IAAIrB,OAAO2B,SAAS;IAChB3B,OAAO4B,KAAKC,KAAK,yCAAA;IACjB7B,OAAO4B,KAAKC,KAAKR,CAAAA;GACrB;EACJ;CAER;AAGJ"}
@@ -0,0 +1,11 @@
1
+ export type ComponentsModuleOptions = {
2
+ /**
3
+ * Refuse to boot when `core.worker.enabled` is false instead of skipping
4
+ * the components. Worker mode sets it: a process started for nothing but
5
+ * the sweeps must not come up doing nothing.
6
+ *
7
+ * default: false
8
+ */
9
+ required?: boolean;
10
+ };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/components/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,uBAAuB,GAAG;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Config } from './types.ts';
2
+ /**
3
+ * Derive the set of trusted application origins (scheme://host[:port]).
4
+ *
5
+ * publicUrl may carry a path, so its origin is extracted; trustedOrigins
6
+ * entries are canonical origins already (normalizeConfig owns that
7
+ * invariant, via `expandToOrigins`) and are merged verbatim.
8
+ */
9
+ export declare function getAppOrigins(config: Pick<Config, 'publicUrl' | 'trustedOrigins'>): string[];
10
+ //# sourceMappingURL=app-origins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-origins.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/config/app-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,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAS5F"}