@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":"repository.mjs","names":["FindOptionsUtils","InstanceChecker","TreeRepository","TreeRepositoryUtils","ExtraAttributesTreeRepositoryAdapter","EATreeRepository","adapter","options","instance","entity","attributeEntity","ctx","isDataSource","manager","repository","attributeRepository","getRepository","create","entityLike","Array","isArray","map","i","preserveExtraAttributes","source","columns","Set","col","metadata","add","propertyName","rel","relations","key","Object","keys","has","saveOneWithEA","input","attributes","saveWithEA","findOneWithEA","extraOptions","findOneWithEAByPrimaryColumn","value","findManyWithEA","findWithEA","extendOneWithEA","output","extendManyWithEA","entities","findRoots","findDescendantsTree","qb","createDescendantsQueryBuilder","applyOptionsToTreeQueryBuilder","getRawAndEntities","relationMaps","createRelationMaps","raw","buildChildrenEntityTree","depth","findAncestors","findAncestorsTree","createAncestorsQueryBuilder","buildParentEntityTree","updateClosureTable","primaryKeyValue","primaryColumns","getEntityValue","closureTable","closureJunctionTable","executeClosureTableUpdate","connection","transaction","tableName","ancestorColumn","ancestorColumns","descendantColumn","descendantColumns","param","index","driver","createParameter","ancestors","query","databasePath","treeParentRelation","parentId","joinColumns","ancestorIds","filter","ancestor","length","descendants","descendantIds","descendant","placeholders","_","join","ancestorsOfDescendants","acc","reduce","curr","push","ancestorsOfDescendent","ancestorId","indexOf","descendantId"],"sources":["../../../../../src/adapters/database/extra-attribute-repository/tree/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n DataSource, \n DeepPartial, \n EntityManager, \n FindManyOptions, \n FindOneOptions, \n FindTreeOptions,\n SelectQueryBuilder,\n} from 'typeorm';\nimport {\n FindOptionsUtils,\n InstanceChecker,\n TreeRepository, \n TreeRepositoryUtils,\n} from 'typeorm';\nimport type { ObjectLiteral } from '@authup/kit';\nimport type { ExtraAttributesRepositoryAdapter } from '../adapter.ts';\nimport type {\n EARepositoryEntityBase, \n EARepositoryFindOptions, \n EARepositoryOptions, \n EARepositorySaveOptions, \n IEARepository,\n} from '../types.ts';\nimport { ExtraAttributesTreeRepositoryAdapter } from './adapter.ts';\n\n/**\n * @see https://github.com/typeorm/typeorm/blob/master/src/repository/TreeRepository.ts\n */\nexport class EATreeRepository<\n T extends ObjectLiteral = ObjectLiteral,\n A extends EARepositoryEntityBase = EARepositoryEntityBase,\n> extends TreeRepository<T> implements IEARepository<T> {\n protected adapter: ExtraAttributesRepositoryAdapter<T, A>;\n\n protected options: EARepositoryOptions<T, A>;\n\n constructor(\n instance: DataSource | EntityManager,\n options: EARepositoryOptions<T, A>,\n ) {\n const {\n entity,\n attributeEntity,\n ...ctx\n } = options;\n\n super(\n entity,\n InstanceChecker.isDataSource(instance) ? instance.manager : instance,\n );\n\n this.options = options;\n this.adapter = new ExtraAttributesTreeRepositoryAdapter<T, A>({\n ...ctx,\n repository: this,\n attributeRepository: this.manager.getRepository(attributeEntity),\n });\n }\n\n // ------------------------------------------------------------------------------\n\n override create(): T;\n\n override create(entityLikeArray: DeepPartial<T>[]): T[];\n\n override create(entityLike: DeepPartial<T>): T;\n\n override create(entityLike?: DeepPartial<T> | DeepPartial<T>[]): T | T[] {\n if (!entityLike) {\n return super.create();\n }\n\n if (Array.isArray(entityLike)) {\n return super.create(entityLike).map((entity, i) => {\n this.preserveExtraAttributes(entity, entityLike[i]);\n return entity;\n });\n }\n\n const entity = super.create(entityLike);\n this.preserveExtraAttributes(entity, entityLike);\n return entity;\n }\n\n private preserveExtraAttributes(entity: T, source: DeepPartial<T>): void {\n const columns = new Set<string>();\n for (const col of this.metadata.columns) {\n columns.add(col.propertyName);\n }\n for (const rel of this.metadata.relations) {\n columns.add(rel.propertyName);\n }\n\n for (const key of Object.keys(source)) {\n if (!columns.has(key) && !(key in entity)) {\n (entity as Record<string, any>)[key] = (source as Record<string, any>)[key];\n }\n }\n }\n\n // ------------------------------------------------------------------------------\n\n async saveOneWithEA<E extends Record<string, any>>(\n input: T & E,\n attributes?: E,\n options?: EARepositorySaveOptions<T>,\n ): Promise<T & E> {\n return this.adapter.saveWithEA(input, attributes, options);\n }\n\n // ------------------------------------------------------------------------------\n\n async findOneWithEA(\n options: FindOneOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<T | undefined> {\n return this.adapter.findOneWithEA(options, extraOptions);\n }\n\n async findOneWithEAByPrimaryColumn<E extends Record<string, any>>(\n value: T[keyof T],\n extraOptions?: EARepositoryFindOptions,\n ): Promise<E> {\n return this.adapter.findOneWithEAByPrimaryColumn(value, extraOptions);\n }\n\n async findManyWithEA<\n E extends Record<string, any>,\n >(\n options: FindManyOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<(T & E)[]> {\n return this.adapter.findWithEA(options, extraOptions);\n }\n\n // ------------------------------------------------------------------------------\n\n async extendOneWithEA<E extends Record<string, any>>(\n entity: T,\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<T & E> {\n const [output] = await this.extendManyWithEA([entity], extraOptions);\n\n return output as (T & E);\n }\n\n async extendManyWithEA<E extends Record<string, any>>(\n entities: T[],\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<(T & E)[]> {\n return this.adapter.extendManyWithEA(entities, extraOptions);\n }\n\n // -------------------------------------------------------------------------------\n\n async findRoots(options?: FindTreeOptions): Promise<T[]> {\n const entities = await super.findRoots(options);\n\n await this.extendManyWithEA(entities);\n\n return entities;\n }\n\n async findDescendantsTree(\n entity: T,\n options?: FindTreeOptions,\n ): Promise<T> {\n const qb: SelectQueryBuilder<T> = this.createDescendantsQueryBuilder(\n 'treeEntity',\n 'treeClosure',\n entity,\n );\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = TreeRepositoryUtils.createRelationMaps(\n this.manager,\n this.metadata,\n 'treeEntity',\n entities.raw,\n );\n\n await this.extendManyWithEA(entities.entities);\n\n TreeRepositoryUtils.buildChildrenEntityTree(\n this.metadata,\n entity,\n entities.entities,\n relationMaps,\n {\n depth: -1,\n ...options,\n },\n );\n\n // The descendants closure may include the root, but `entity` here is a\n // different reference than the one in `entities.entities`, so its own EA\n // fields are not populated. Load them explicitly so leaf-as-root callers\n // (e.g. policies bound directly to permissions/junctions) see EA.\n await this.extendOneWithEA(entity);\n\n return entity;\n }\n\n async findAncestors(\n entity: T,\n options?: FindTreeOptions,\n ): Promise<T[]> {\n const entities = await super.findAncestors(entity, options);\n\n await this.extendManyWithEA(entities);\n\n return entities;\n }\n\n // -------------------------------------------------------------------------------\n\n async findAncestorsTree(\n entity: T,\n options?: FindTreeOptions,\n ): Promise<T> {\n const qb = this.createAncestorsQueryBuilder(\n 'treeEntity',\n 'treeClosure',\n entity,\n );\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = TreeRepositoryUtils.createRelationMaps(\n this.manager,\n this.metadata,\n 'treeEntity',\n entities.raw,\n );\n\n await this.extendManyWithEA(entities.entities);\n\n TreeRepositoryUtils.buildParentEntityTree(\n this.metadata,\n entity,\n entities.entities,\n relationMaps,\n );\n return entity;\n }\n\n // -------------------------------------------------------------------------------\n\n async updateClosureTable(entity: T, manager?: EntityManager) {\n const primaryKeyValue = this.metadata.primaryColumns[0].getEntityValue(entity);\n if (!primaryKeyValue) {\n return;\n }\n\n const closureTable = this.metadata.closureJunctionTable;\n if (!closureTable) {\n return;\n }\n\n if (manager) {\n await this.executeClosureTableUpdate(entity, manager);\n } else {\n await this.manager.connection.transaction(async (manager) => {\n await this.executeClosureTableUpdate(entity, manager);\n });\n }\n }\n\n private async executeClosureTableUpdate(entity: T, manager: EntityManager) {\n const primaryKeyValue = this.metadata.primaryColumns[0].getEntityValue(entity);\n\n const { tableName } = this.metadata.closureJunctionTable;\n const ancestorColumn = this.metadata.closureJunctionTable.ancestorColumns[0];\n const descendantColumn = this.metadata.closureJunctionTable.descendantColumns[0];\n\n const param = (index: number) => manager.connection.driver.createParameter(`p${index}`, index);\n\n // 1. Get All ancestors of current entity\n const ancestors = await manager.query<Record<string, any>[]>(\n `SELECT *\n FROM ${tableName}\n WHERE ${ancestorColumn.databasePath} != ${descendantColumn.databasePath} AND\n ${descendantColumn.databasePath} = ${param(0)} AND\n ${ancestorColumn.databasePath} != ${param(1)}`,\n [primaryKeyValue, primaryKeyValue],\n );\n\n if (!this.metadata.treeParentRelation) {\n return;\n }\n\n const parentId = this.metadata.treeParentRelation.joinColumns[0].getEntityValue(entity);\n\n let ancestorIds : string[];\n if (parentId) {\n ancestorIds = [\n parentId,\n ...ancestors\n .filter((ancestor) => ancestor[ancestorColumn.databasePath] !== parentId)\n .map((ancestor) => ancestor[ancestorColumn.databasePath]),\n ];\n } else {\n ancestorIds = ancestors.map((ancestor) => ancestor[ancestorColumn.databasePath]);\n }\n\n if (ancestorIds.length === 0) {\n return;\n }\n\n // 2. Get All descendants of current entity.\n const descendants = await manager.query<Record<string, any>[]>(\n `SELECT *\n FROM ${tableName}\n WHERE ${ancestorColumn.databasePath} != ${descendantColumn.databasePath} AND\n ${ancestorColumn.databasePath} = ${param(0)} AND\n ${descendantColumn.databasePath} != ${param(1)}`,\n [primaryKeyValue, primaryKeyValue],\n );\n\n if (parentId) {\n // 3. get all descendant\n const descendantIds = descendants\n .map((descendant) => descendant[descendantColumn.databasePath]);\n\n if (descendantIds.length > 0) {\n // 4. get all ancestors of each descendant\n const placeholders = descendantIds.map((_, i) => param(i + 1)).join(',');\n const ancestorsOfDescendants = await manager.query<Record<string, any>[]>(\n `SELECT *\n FROM ${tableName}\n WHERE\n ${ancestorColumn.databasePath} != ${param(0)} AND\n ${ancestorColumn.databasePath} != ${descendantColumn.databasePath} AND\n ${descendantColumn.databasePath} IN (${placeholders})`,\n [primaryKeyValue, ...descendantIds],\n );\n\n const acc = ancestorsOfDescendants.reduce((acc, curr) => {\n if (!acc[curr[descendantColumn.databasePath]]) {\n acc[curr[descendantColumn.databasePath]] = [];\n }\n\n acc[curr[descendantColumn.databasePath]].push(curr[ancestorColumn.databasePath]);\n return acc;\n }, {} as Record<string, string[]>);\n\n // 5. Check if for each child a relation exists with each ancestor (create if not exist)\n for (const descendant of descendantIds) {\n const ancestorsOfDescendent = acc[descendant] ?? [];\n\n for (const ancestorId of ancestorIds) {\n const index = ancestorsOfDescendent.indexOf(ancestorId);\n if (index === -1) {\n await manager.query(\n `INSERT INTO ${tableName}\n (${ancestorColumn.databasePath}, ${descendantColumn.databasePath})\n VALUES (${param(0)}, ${param(1)})`,\n [ancestorId, descendant],\n );\n }\n }\n }\n }\n } else {\n const descendantIds = [\n primaryKeyValue,\n ...descendants.map((descendant) => descendant[descendantColumn.databasePath]),\n ];\n\n for (const ancestorId of ancestorIds) {\n for (const descendantId of descendantIds) {\n await manager.query(\n `DELETE FROM ${tableName}\n WHERE ${ancestorColumn.databasePath} = ${param(0)}\n AND ${descendantColumn.databasePath} = ${param(1)}`,\n [ancestorId, descendantId],\n );\n }\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"repository.mjs","names":["FindOptionsUtils","InstanceChecker","TreeRepository","TreeRepositoryUtils","ExtraAttributesTreeRepositoryAdapter","EATreeRepository","adapter","options","instance","entity","attributeEntity","ctx","isDataSource","manager","repository","attributeRepository","getRepository","create","entityLike","Array","isArray","map","i","preserveExtraAttributes","source","columns","Set","col","metadata","add","propertyName","rel","relations","key","value","Object","entries","has","saveOneWithEA","input","attributes","saveWithEA","findOneWithEA","extraOptions","findOneWithEAByPrimaryColumn","findManyWithEA","findWithEA","extendOneWithEA","output","extendManyWithEA","entities","findRoots","findDescendantsTree","qb","createDescendantsQueryBuilder","applyOptionsToTreeQueryBuilder","getRawAndEntities","relationMaps","createRelationMaps","raw","buildChildrenEntityTree","depth","findAncestors","findAncestorsTree","createAncestorsQueryBuilder","buildParentEntityTree","updateClosureTable","primaryKeyValue","primaryColumns","getEntityValue","closureTable","closureJunctionTable","executeClosureTableUpdate","connection","transaction","tableName","ancestorColumn","ancestorColumns","descendantColumn","descendantColumns","param","index","driver","createParameter","ancestors","query","databasePath","treeParentRelation","parentId","joinColumns","ancestorIds","filter","ancestor","length","descendants","descendantIds","descendant","placeholders","_","join","ancestorsOfDescendants","acc","reduce","curr","push","ancestorsOfDescendent","ancestorId","indexOf","descendantId"],"sources":["../../../../../src/adapters/database/extra-attribute-repository/tree/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n DataSource, \n DeepPartial, \n EntityManager, \n FindManyOptions, \n FindOneOptions, \n FindTreeOptions,\n SelectQueryBuilder,\n} from 'typeorm';\nimport {\n FindOptionsUtils,\n InstanceChecker,\n TreeRepository, \n TreeRepositoryUtils,\n} from 'typeorm';\nimport type { ObjectLiteral } from '@authup/kit';\nimport type { ExtraAttributesRepositoryAdapter } from '../adapter.ts';\nimport type {\n EARepositoryEntityBase, \n EARepositoryFindOptions, \n EARepositoryOptions, \n EARepositorySaveOptions, \n IEARepository,\n} from '../types.ts';\nimport { ExtraAttributesTreeRepositoryAdapter } from './adapter.ts';\n\n/**\n * @see https://github.com/typeorm/typeorm/blob/master/src/repository/TreeRepository.ts\n */\nexport class EATreeRepository<\n T extends ObjectLiteral = ObjectLiteral,\n A extends EARepositoryEntityBase = EARepositoryEntityBase,\n> extends TreeRepository<T> implements IEARepository<T> {\n protected adapter: ExtraAttributesRepositoryAdapter<T, A>;\n\n protected options: EARepositoryOptions<T, A>;\n\n constructor(\n instance: DataSource | EntityManager,\n options: EARepositoryOptions<T, A>,\n ) {\n const {\n entity,\n attributeEntity,\n ...ctx\n } = options;\n\n super(\n entity,\n InstanceChecker.isDataSource(instance) ? instance.manager : instance,\n );\n\n this.options = options;\n this.adapter = new ExtraAttributesTreeRepositoryAdapter<T, A>({\n ...ctx,\n repository: this,\n attributeRepository: this.manager.getRepository(attributeEntity),\n });\n }\n\n // ------------------------------------------------------------------------------\n\n override create(): T;\n\n override create(entityLikeArray: DeepPartial<T>[]): T[];\n\n override create(entityLike: DeepPartial<T>): T;\n\n override create(entityLike?: DeepPartial<T> | DeepPartial<T>[]): T | T[] {\n if (!entityLike) {\n return super.create();\n }\n\n if (Array.isArray(entityLike)) {\n return super.create(entityLike).map((entity, i) => {\n this.preserveExtraAttributes(entity, entityLike[i]);\n return entity;\n });\n }\n\n const entity = super.create(entityLike);\n this.preserveExtraAttributes(entity, entityLike);\n return entity;\n }\n\n private preserveExtraAttributes(entity: T, source: DeepPartial<T>): void {\n const columns = new Set<string>();\n for (const col of this.metadata.columns) {\n columns.add(col.propertyName);\n }\n for (const rel of this.metadata.relations) {\n columns.add(rel.propertyName);\n }\n\n for (const [key, value] of Object.entries(source as Record<string, any>)) {\n if (!columns.has(key) && !(key in entity)) {\n (entity as Record<string, any>)[key] = value;\n }\n }\n }\n\n // ------------------------------------------------------------------------------\n\n async saveOneWithEA<E extends Record<string, any>>(\n input: T & E,\n attributes?: E,\n options?: EARepositorySaveOptions<T>,\n ): Promise<T & E> {\n return this.adapter.saveWithEA(input, attributes, options);\n }\n\n // ------------------------------------------------------------------------------\n\n async findOneWithEA(\n options: FindOneOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<T | undefined> {\n return this.adapter.findOneWithEA(options, extraOptions);\n }\n\n async findOneWithEAByPrimaryColumn<E extends Record<string, any>>(\n value: T[keyof T],\n extraOptions?: EARepositoryFindOptions,\n ): Promise<E> {\n return this.adapter.findOneWithEAByPrimaryColumn(value, extraOptions);\n }\n\n async findManyWithEA<\n E extends Record<string, any>,\n >(\n options: FindManyOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<(T & E)[]> {\n return this.adapter.findWithEA(options, extraOptions);\n }\n\n // ------------------------------------------------------------------------------\n\n async extendOneWithEA<E extends Record<string, any>>(\n entity: T,\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<T & E> {\n const [output] = await this.extendManyWithEA([entity], extraOptions);\n\n return output as (T & E);\n }\n\n async extendManyWithEA<E extends Record<string, any>>(\n entities: T[],\n extraOptions: EARepositoryFindOptions = {},\n ): Promise<(T & E)[]> {\n return this.adapter.extendManyWithEA(entities, extraOptions);\n }\n\n // -------------------------------------------------------------------------------\n\n async findRoots(options?: FindTreeOptions): Promise<T[]> {\n const entities = await super.findRoots(options);\n\n await this.extendManyWithEA(entities);\n\n return entities;\n }\n\n async findDescendantsTree(\n entity: T,\n options?: FindTreeOptions,\n ): Promise<T> {\n const qb: SelectQueryBuilder<T> = this.createDescendantsQueryBuilder(\n 'treeEntity',\n 'treeClosure',\n entity,\n );\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = TreeRepositoryUtils.createRelationMaps(\n this.manager,\n this.metadata,\n 'treeEntity',\n entities.raw,\n );\n\n await this.extendManyWithEA(entities.entities);\n\n TreeRepositoryUtils.buildChildrenEntityTree(\n this.metadata,\n entity,\n entities.entities,\n relationMaps,\n {\n depth: -1,\n ...options,\n },\n );\n\n // The descendants closure may include the root, but `entity` here is a\n // different reference than the one in `entities.entities`, so its own EA\n // fields are not populated. Load them explicitly so leaf-as-root callers\n // (e.g. policies bound directly to permissions/junctions) see EA.\n await this.extendOneWithEA(entity);\n\n return entity;\n }\n\n async findAncestors(\n entity: T,\n options?: FindTreeOptions,\n ): Promise<T[]> {\n const entities = await super.findAncestors(entity, options);\n\n await this.extendManyWithEA(entities);\n\n return entities;\n }\n\n // -------------------------------------------------------------------------------\n\n async findAncestorsTree(\n entity: T,\n options?: FindTreeOptions,\n ): Promise<T> {\n const qb = this.createAncestorsQueryBuilder(\n 'treeEntity',\n 'treeClosure',\n entity,\n );\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = TreeRepositoryUtils.createRelationMaps(\n this.manager,\n this.metadata,\n 'treeEntity',\n entities.raw,\n );\n\n await this.extendManyWithEA(entities.entities);\n\n TreeRepositoryUtils.buildParentEntityTree(\n this.metadata,\n entity,\n entities.entities,\n relationMaps,\n );\n return entity;\n }\n\n // -------------------------------------------------------------------------------\n\n async updateClosureTable(entity: T, manager?: EntityManager) {\n const primaryKeyValue = this.metadata.primaryColumns[0].getEntityValue(entity);\n if (!primaryKeyValue) {\n return;\n }\n\n const closureTable = this.metadata.closureJunctionTable;\n if (!closureTable) {\n return;\n }\n\n if (manager) {\n await this.executeClosureTableUpdate(entity, manager);\n } else {\n await this.manager.connection.transaction(async (manager) => {\n await this.executeClosureTableUpdate(entity, manager);\n });\n }\n }\n\n private async executeClosureTableUpdate(entity: T, manager: EntityManager) {\n const primaryKeyValue = this.metadata.primaryColumns[0].getEntityValue(entity);\n\n const { tableName } = this.metadata.closureJunctionTable;\n const ancestorColumn = this.metadata.closureJunctionTable.ancestorColumns[0];\n const descendantColumn = this.metadata.closureJunctionTable.descendantColumns[0];\n\n const param = (index: number) => manager.connection.driver.createParameter(`p${index}`, index);\n\n // 1. Get All ancestors of current entity\n const ancestors = await manager.query<Record<string, any>[]>(\n `SELECT *\n FROM ${tableName}\n WHERE ${ancestorColumn.databasePath} != ${descendantColumn.databasePath} AND\n ${descendantColumn.databasePath} = ${param(0)} AND\n ${ancestorColumn.databasePath} != ${param(1)}`,\n [primaryKeyValue, primaryKeyValue],\n );\n\n if (!this.metadata.treeParentRelation) {\n return;\n }\n\n const parentId = this.metadata.treeParentRelation.joinColumns[0].getEntityValue(entity);\n\n let ancestorIds : string[];\n if (parentId) {\n ancestorIds = [\n parentId,\n ...ancestors\n .filter((ancestor) => ancestor[ancestorColumn.databasePath] !== parentId)\n .map((ancestor) => ancestor[ancestorColumn.databasePath]),\n ];\n } else {\n ancestorIds = ancestors.map((ancestor) => ancestor[ancestorColumn.databasePath]);\n }\n\n if (ancestorIds.length === 0) {\n return;\n }\n\n // 2. Get All descendants of current entity.\n const descendants = await manager.query<Record<string, any>[]>(\n `SELECT *\n FROM ${tableName}\n WHERE ${ancestorColumn.databasePath} != ${descendantColumn.databasePath} AND\n ${ancestorColumn.databasePath} = ${param(0)} AND\n ${descendantColumn.databasePath} != ${param(1)}`,\n [primaryKeyValue, primaryKeyValue],\n );\n\n if (parentId) {\n // 3. get all descendant\n const descendantIds = descendants\n .map((descendant) => descendant[descendantColumn.databasePath]);\n\n if (descendantIds.length > 0) {\n // 4. get all ancestors of each descendant\n const placeholders = descendantIds.map((_, i) => param(i + 1)).join(',');\n const ancestorsOfDescendants = await manager.query<Record<string, any>[]>(\n `SELECT *\n FROM ${tableName}\n WHERE\n ${ancestorColumn.databasePath} != ${param(0)} AND\n ${ancestorColumn.databasePath} != ${descendantColumn.databasePath} AND\n ${descendantColumn.databasePath} IN (${placeholders})`,\n [primaryKeyValue, ...descendantIds],\n );\n\n const acc = ancestorsOfDescendants.reduce((acc, curr) => {\n if (!acc[curr[descendantColumn.databasePath]]) {\n acc[curr[descendantColumn.databasePath]] = [];\n }\n\n acc[curr[descendantColumn.databasePath]].push(curr[ancestorColumn.databasePath]);\n return acc;\n }, {} as Record<string, string[]>);\n\n // 5. Check if for each child a relation exists with each ancestor (create if not exist)\n for (const descendant of descendantIds) {\n const ancestorsOfDescendent = acc[descendant] ?? [];\n\n for (const ancestorId of ancestorIds) {\n const index = ancestorsOfDescendent.indexOf(ancestorId);\n if (index === -1) {\n await manager.query(\n `INSERT INTO ${tableName}\n (${ancestorColumn.databasePath}, ${descendantColumn.databasePath})\n VALUES (${param(0)}, ${param(1)})`,\n [ancestorId, descendant],\n );\n }\n }\n }\n }\n } else {\n const descendantIds = [\n primaryKeyValue,\n ...descendants.map((descendant) => descendant[descendantColumn.databasePath]),\n ];\n\n for (const ancestorId of ancestorIds) {\n for (const descendantId of descendantIds) {\n await manager.query(\n `DELETE FROM ${tableName}\n WHERE ${ancestorColumn.databasePath} = ${param(0)}\n AND ${descendantColumn.databasePath} = ${param(1)}`,\n [ancestorId, descendantId],\n );\n }\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -64,11 +64,11 @@ import { UserPermissionSubscriber } from "./domains/user-permission/subscriber.m
64
64
  import { UserRoleEntity } from "./domains/user-role/entity.mjs";
65
65
  import { UserRoleSubscriber } from "./domains/user-role/subscriber.mjs";
66
66
  import "./domains/index.mjs";
67
+ import { DatabaseConflictError } from "./errors/conflict.mjs";
68
+ import { getDatabaseDriverErrorCode, isForeignKeyConstraintDatabaseError, isUniqueConstraintDatabaseError } from "./errors/driver.mjs";
69
+ import "./errors/index.mjs";
67
70
  import { DatabaseQueryResultCache } from "./cache/module.mjs";
68
71
  import "./cache/index.mjs";
69
72
  import { DataSourceOptionsBuilder } from "./data-source/options/module.mjs";
70
73
  import "./data-source/index.mjs";
71
- import { DatabaseConflictError } from "./errors/conflict.mjs";
72
- import { getDatabaseDriverErrorCode, isForeignKeyConstraintDatabaseError, isUniqueConstraintDatabaseError } from "./errors/driver.mjs";
73
- import "./errors/index.mjs";
74
74
  export { CachePrefix, ClientEntity, ClientPermissionEntity, ClientPermissionSubscriber, ClientRoleEntity, ClientRoleSubscriber, ClientScopeEntity, ClientScopeSubscriber, ClientSubscriber, ConsentEntity, ConsentEntitySubscriber, DataSourceOptionsBuilder, DatabaseConflictError, DatabaseQueryResultCache, EntitySubscriber, EventEntity, IdentityProviderAccountEntity, IdentityProviderAccountSubscriber, IdentityProviderAttributeEntity, IdentityProviderAttributeMappingEntity, IdentityProviderAttributeSubscriber, IdentityProviderEntity, IdentityProviderPermissionMappingEntity, IdentityProviderRepository, IdentityProviderRoleMappingEntity, IdentityProviderRoleSubscriber, IdentityProviderSubscriber, KeyEntity, PermissionEntity, PermissionPolicyEntity, PermissionSubscriber, PolicyAttributeEntity, PolicyAttributeSubscriber, PolicyEntity, PolicyRepository, PolicySubscriber, RealmEntity, RealmRepository, RealmSubscriber, RoleAttributeEntity, RoleAttributeSubscriber, RoleEntity, RolePermissionEntity, RolePermissionSubscriber, RoleRepository, RoleSubscriber, ScopeEntity, ScopeSubscriber, SessionEntity, SessionTokenEntity, TrustAnchorEntity, UserAttributeEntity, UserAttributeSubscriber, UserAuthenticatorEntity, UserEntity, UserPermissionEntity, UserPermissionSubscriber, UserRepository, UserRoleEntity, UserRoleSubscriber, UserSubscriber, buildEntityDestinations, dateToISOStringTransformer, getDatabaseDriverErrorCode, isDatabaseTypeRowLockable, isDatabaseTypeSupported, isDatabaseTypeSupportedForEnvironment, isForeignKeyConstraintDatabaseError, isUniqueConstraintDatabaseError };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The beta.64 release window, folded into one migration per dialect.
3
+ *
4
+ * ## `auth_sessions.secret` (plan 088 Stage 1: the console session credential)
5
+ *
6
+ * The opaque value a console browser presents in the `authup_session` cookie.
7
+ * It is NOT the session id: that id is published as the `sid` claim in every
8
+ * id_token and in every `/sessions` row, so it is a public identifier and
9
+ * cannot double as a credential. This column is the secret half.
10
+ *
11
+ * Nullable because every bearer-mode session has none, and unique so one value
12
+ * resolves at most one session. The entity additionally marks it
13
+ * `select: false`, so it is re-selected only by `findOneBySecret` and never on
14
+ * an ordinary session read.
15
+ *
16
+ * ## `auth_users.email_verified` (issue #3519: the OIDC claim gets a column)
17
+ *
18
+ * The claim was mapped onto `auth_users.active`, which is the account's
19
+ * enable flag and carries no statement about the address. It was wrong in
20
+ * both directions: registration sets `active` outright when email
21
+ * verification is off (the default), and a federated or provisioned user is
22
+ * created active with a synthesized `<name>@example.com`, so authup asserted
23
+ * a verified address nobody had ever received mail at; conversely an admin
24
+ * deactivating a user who DID complete activation flipped the claim back to
25
+ * false.
26
+ *
27
+ * NOT NULL DEFAULT false, so the ALTER backfills every existing row itself.
28
+ * False is the only safe backfill: `activate_hash` is null both after a
29
+ * completed activation and for a user who was never asked to verify, so the
30
+ * two states are indistinguishable and no row can be proven verified. An
31
+ * operator repairs a known-good address through the API. The column is
32
+ * admin-settable, and denied on the self-edit path by
33
+ * `system.user-names-self-manage`.
34
+ *
35
+ * ## `auth_clients` columns (issue #3355 and plan 064 Stage 1)
36
+ *
37
+ * `scope` was a text copy of the client's scope list that nothing has read
38
+ * since #3354: `/authorize` grants exactly the scopes bound in
39
+ * `auth_client_scopes`, so a value here never granted anything. `root_url`
40
+ * was stored and never resolved against anything. Both drop WITH their data;
41
+ * the generated down() re-adds them empty, and
42
+ * `docs/src/guide/deployment/upgrading.md` carries the export query for an
43
+ * operator who set either.
44
+ *
45
+ * `backchannel_logout_uri` is the one absolute http(s) URL Authup POSTs a
46
+ * signed `logout_token` to when a session the client received tokens for is
47
+ * revoked (OIDC Back-Channel Logout 1.0). Nullable with no default, so every
48
+ * existing row and every provisioned system client starts with no push.
49
+ */
50
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
51
+ export declare class SessionUserAndClientColumns1787571998009 implements MigrationInterface {
52
+ name: string;
53
+ up(queryRunner: QueryRunner): Promise<void>;
54
+ down(queryRunner: QueryRunner): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=1787571998009-SessionUserAndClientColumns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1787571998009-SessionUserAndClientColumns.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,wCAAyC,YAAW,kBAAkB;IAC/E,IAAI,SAA8C;IAErC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB7D"}
@@ -0,0 +1,105 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ //#region src/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.ts
5
+ /**
6
+ * The beta.64 release window, folded into one migration per dialect.
7
+ *
8
+ * ## `auth_sessions.secret` (plan 088 Stage 1: the console session credential)
9
+ *
10
+ * The opaque value a console browser presents in the `authup_session` cookie.
11
+ * It is NOT the session id: that id is published as the `sid` claim in every
12
+ * id_token and in every `/sessions` row, so it is a public identifier and
13
+ * cannot double as a credential. This column is the secret half.
14
+ *
15
+ * Nullable because every bearer-mode session has none, and unique so one value
16
+ * resolves at most one session. The entity additionally marks it
17
+ * `select: false`, so it is re-selected only by `findOneBySecret` and never on
18
+ * an ordinary session read.
19
+ *
20
+ * ## `auth_users.email_verified` (issue #3519: the OIDC claim gets a column)
21
+ *
22
+ * The claim was mapped onto `auth_users.active`, which is the account's
23
+ * enable flag and carries no statement about the address. It was wrong in
24
+ * both directions: registration sets `active` outright when email
25
+ * verification is off (the default), and a federated or provisioned user is
26
+ * created active with a synthesized `<name>@example.com`, so authup asserted
27
+ * a verified address nobody had ever received mail at; conversely an admin
28
+ * deactivating a user who DID complete activation flipped the claim back to
29
+ * false.
30
+ *
31
+ * NOT NULL DEFAULT false, so the ALTER backfills every existing row itself.
32
+ * False is the only safe backfill: `activate_hash` is null both after a
33
+ * completed activation and for a user who was never asked to verify, so the
34
+ * two states are indistinguishable and no row can be proven verified. An
35
+ * operator repairs a known-good address through the API. The column is
36
+ * admin-settable, and denied on the self-edit path by
37
+ * `system.user-names-self-manage`.
38
+ *
39
+ * ## `auth_clients` columns (issue #3355 and plan 064 Stage 1)
40
+ *
41
+ * `scope` was a text copy of the client's scope list that nothing has read
42
+ * since #3354: `/authorize` grants exactly the scopes bound in
43
+ * `auth_client_scopes`, so a value here never granted anything. `root_url`
44
+ * was stored and never resolved against anything. Both drop WITH their data;
45
+ * the generated down() re-adds them empty, and
46
+ * `docs/src/guide/deployment/upgrading.md` carries the export query for an
47
+ * operator who set either.
48
+ *
49
+ * `backchannel_logout_uri` is the one absolute http(s) URL Authup POSTs a
50
+ * signed `logout_token` to when a session the client received tokens for is
51
+ * revoked (OIDC Back-Channel Logout 1.0). Nullable with no default, so every
52
+ * existing row and every provisioned system client starts with no push.
53
+ */ var SessionUserAndClientColumns1787571998009 = class {
54
+ name = "SessionUserAndClientColumns1787571998009";
55
+ async up(queryRunner) {
56
+ await queryRunner.query(`
57
+ ALTER TABLE \`auth_sessions\`
58
+ ADD \`secret\` varchar(64) NULL
59
+ `);
60
+ await queryRunner.query(`
61
+ ALTER TABLE \`auth_sessions\`
62
+ ADD UNIQUE INDEX \`IDX_833c743f7cd787dfc8b70ba400\` (\`secret\`)
63
+ `);
64
+ await queryRunner.query(`
65
+ ALTER TABLE \`auth_users\`
66
+ ADD \`email_verified\` tinyint NOT NULL DEFAULT 0
67
+ `);
68
+ await queryRunner.query(`
69
+ ALTER TABLE \`auth_clients\` DROP COLUMN \`root_url\`
70
+ `);
71
+ await queryRunner.query(`
72
+ ALTER TABLE \`auth_clients\` DROP COLUMN \`scope\`
73
+ `);
74
+ await queryRunner.query(`
75
+ ALTER TABLE \`auth_clients\`
76
+ ADD \`backchannel_logout_uri\` varchar(2000) NULL
77
+ `);
78
+ }
79
+ async down(queryRunner) {
80
+ await queryRunner.query(`
81
+ ALTER TABLE \`auth_clients\` DROP COLUMN \`backchannel_logout_uri\`
82
+ `);
83
+ await queryRunner.query(`
84
+ ALTER TABLE \`auth_clients\`
85
+ ADD \`scope\` varchar(512) NULL
86
+ `);
87
+ await queryRunner.query(`
88
+ ALTER TABLE \`auth_clients\`
89
+ ADD \`root_url\` varchar(2000) NULL
90
+ `);
91
+ await queryRunner.query(`
92
+ ALTER TABLE \`auth_users\` DROP COLUMN \`email_verified\`
93
+ `);
94
+ await queryRunner.query(`
95
+ ALTER TABLE \`auth_sessions\` DROP INDEX \`IDX_833c743f7cd787dfc8b70ba400\`
96
+ `);
97
+ await queryRunner.query(`
98
+ ALTER TABLE \`auth_sessions\` DROP COLUMN \`secret\`
99
+ `);
100
+ }
101
+ };
102
+ //#endregion
103
+ export { SessionUserAndClientColumns1787571998009 };
104
+
105
+ //# sourceMappingURL=1787571998009-SessionUserAndClientColumns.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1787571998009-SessionUserAndClientColumns.mjs","names":["SessionUserAndClientColumns1787571998009","name","up","queryRunner","query","down"],"sources":["../../../../../src/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n/**\n * The beta.64 release window, folded into one migration per dialect.\n *\n * ## `auth_sessions.secret` (plan 088 Stage 1: the console session credential)\n *\n * The opaque value a console browser presents in the `authup_session` cookie.\n * It is NOT the session id: that id is published as the `sid` claim in every\n * id_token and in every `/sessions` row, so it is a public identifier and\n * cannot double as a credential. This column is the secret half.\n *\n * Nullable because every bearer-mode session has none, and unique so one value\n * resolves at most one session. The entity additionally marks it\n * `select: false`, so it is re-selected only by `findOneBySecret` and never on\n * an ordinary session read.\n *\n * ## `auth_users.email_verified` (issue #3519: the OIDC claim gets a column)\n *\n * The claim was mapped onto `auth_users.active`, which is the account's\n * enable flag and carries no statement about the address. It was wrong in\n * both directions: registration sets `active` outright when email\n * verification is off (the default), and a federated or provisioned user is\n * created active with a synthesized `<name>@example.com`, so authup asserted\n * a verified address nobody had ever received mail at; conversely an admin\n * deactivating a user who DID complete activation flipped the claim back to\n * false.\n *\n * NOT NULL DEFAULT false, so the ALTER backfills every existing row itself.\n * False is the only safe backfill: `activate_hash` is null both after a\n * completed activation and for a user who was never asked to verify, so the\n * two states are indistinguishable and no row can be proven verified. An\n * operator repairs a known-good address through the API. The column is\n * admin-settable, and denied on the self-edit path by\n * `system.user-names-self-manage`.\n *\n * ## `auth_clients` columns (issue #3355 and plan 064 Stage 1)\n *\n * `scope` was a text copy of the client's scope list that nothing has read\n * since #3354: `/authorize` grants exactly the scopes bound in\n * `auth_client_scopes`, so a value here never granted anything. `root_url`\n * was stored and never resolved against anything. Both drop WITH their data;\n * the generated down() re-adds them empty, and\n * `docs/src/guide/deployment/upgrading.md` carries the export query for an\n * operator who set either.\n *\n * `backchannel_logout_uri` is the one absolute http(s) URL Authup POSTs a\n * signed `logout_token` to when a session the client received tokens for is\n * revoked (OIDC Back-Channel Logout 1.0). Nullable with no default, so every\n * existing row and every provisioned system client starts with no push.\n */\nimport type { MigrationInterface, QueryRunner } from 'typeorm';\n\nexport class SessionUserAndClientColumns1787571998009 implements MigrationInterface {\n name = 'SessionUserAndClientColumns1787571998009';\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`\n ALTER TABLE \\`auth_sessions\\`\n ADD \\`secret\\` varchar(64) NULL\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_sessions\\`\n ADD UNIQUE INDEX \\`IDX_833c743f7cd787dfc8b70ba400\\` (\\`secret\\`)\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_users\\`\n ADD \\`email_verified\\` tinyint NOT NULL DEFAULT 0\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_clients\\` DROP COLUMN \\`root_url\\`\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_clients\\` DROP COLUMN \\`scope\\`\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_clients\\`\n ADD \\`backchannel_logout_uri\\` varchar(2000) NULL\n `);\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`\n ALTER TABLE \\`auth_clients\\` DROP COLUMN \\`backchannel_logout_uri\\`\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_clients\\`\n ADD \\`scope\\` varchar(512) NULL\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_clients\\`\n ADD \\`root_url\\` varchar(2000) NULL\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_users\\` DROP COLUMN \\`email_verified\\`\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_sessions\\` DROP INDEX \\`IDX_833c743f7cd787dfc8b70ba400\\`\n `);\n await queryRunner.query(`\n ALTER TABLE \\`auth_sessions\\` DROP COLUMN \\`secret\\`\n `);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DA,IAAaA,2CAAb,MAAaA;CACTC,OAAO;CAEP,MAAaC,GAAGC,aAAyC;EACrD,MAAMA,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;CACL;CAEA,MAAaC,KAAKF,aAAyC;EACvD,MAAMA,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;CACL;AACJ"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The beta.64 release window, folded into one migration per dialect.
3
+ *
4
+ * ## `auth_sessions.secret` (plan 088 Stage 1: the console session credential)
5
+ *
6
+ * The opaque value a console browser presents in the `authup_session` cookie.
7
+ * It is NOT the session id: that id is published as the `sid` claim in every
8
+ * id_token and in every `/sessions` row, so it is a public identifier and
9
+ * cannot double as a credential. This column is the secret half.
10
+ *
11
+ * Nullable because every bearer-mode session has none, and unique so one value
12
+ * resolves at most one session. The entity additionally marks it
13
+ * `select: false`, so it is re-selected only by `findOneBySecret` and never on
14
+ * an ordinary session read.
15
+ *
16
+ * ## `auth_users.email_verified` (issue #3519: the OIDC claim gets a column)
17
+ *
18
+ * The claim was mapped onto `auth_users.active`, which is the account's
19
+ * enable flag and carries no statement about the address. It was wrong in
20
+ * both directions: registration sets `active` outright when email
21
+ * verification is off (the default), and a federated or provisioned user is
22
+ * created active with a synthesized `<name>@example.com`, so authup asserted
23
+ * a verified address nobody had ever received mail at; conversely an admin
24
+ * deactivating a user who DID complete activation flipped the claim back to
25
+ * false.
26
+ *
27
+ * NOT NULL DEFAULT false, so the ALTER backfills every existing row itself.
28
+ * False is the only safe backfill: `activate_hash` is null both after a
29
+ * completed activation and for a user who was never asked to verify, so the
30
+ * two states are indistinguishable and no row can be proven verified. An
31
+ * operator repairs a known-good address through the API. The column is
32
+ * admin-settable, and denied on the self-edit path by
33
+ * `system.user-names-self-manage`.
34
+ *
35
+ * ## `auth_clients` columns (issue #3355 and plan 064 Stage 1)
36
+ *
37
+ * `scope` was a text copy of the client's scope list that nothing has read
38
+ * since #3354: `/authorize` grants exactly the scopes bound in
39
+ * `auth_client_scopes`, so a value here never granted anything. `root_url`
40
+ * was stored and never resolved against anything. Both drop WITH their data;
41
+ * the generated down() re-adds them empty, and
42
+ * `docs/src/guide/deployment/upgrading.md` carries the export query for an
43
+ * operator who set either.
44
+ *
45
+ * `backchannel_logout_uri` is the one absolute http(s) URL Authup POSTs a
46
+ * signed `logout_token` to when a session the client received tokens for is
47
+ * revoked (OIDC Back-Channel Logout 1.0). Nullable with no default, so every
48
+ * existing row and every provisioned system client starts with no push.
49
+ */
50
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
51
+ export declare class SessionUserAndClientColumns1787571998009 implements MigrationInterface {
52
+ name: string;
53
+ up(queryRunner: QueryRunner): Promise<void>;
54
+ down(queryRunner: QueryRunner): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=1787571998009-SessionUserAndClientColumns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1787571998009-SessionUserAndClientColumns.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,wCAAyC,YAAW,kBAAkB;IAC/E,IAAI,SAA8C;IAErC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB7D"}
@@ -0,0 +1,104 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ //#region src/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.ts
5
+ /**
6
+ * The beta.64 release window, folded into one migration per dialect.
7
+ *
8
+ * ## `auth_sessions.secret` (plan 088 Stage 1: the console session credential)
9
+ *
10
+ * The opaque value a console browser presents in the `authup_session` cookie.
11
+ * It is NOT the session id: that id is published as the `sid` claim in every
12
+ * id_token and in every `/sessions` row, so it is a public identifier and
13
+ * cannot double as a credential. This column is the secret half.
14
+ *
15
+ * Nullable because every bearer-mode session has none, and unique so one value
16
+ * resolves at most one session. The entity additionally marks it
17
+ * `select: false`, so it is re-selected only by `findOneBySecret` and never on
18
+ * an ordinary session read.
19
+ *
20
+ * ## `auth_users.email_verified` (issue #3519: the OIDC claim gets a column)
21
+ *
22
+ * The claim was mapped onto `auth_users.active`, which is the account's
23
+ * enable flag and carries no statement about the address. It was wrong in
24
+ * both directions: registration sets `active` outright when email
25
+ * verification is off (the default), and a federated or provisioned user is
26
+ * created active with a synthesized `<name>@example.com`, so authup asserted
27
+ * a verified address nobody had ever received mail at; conversely an admin
28
+ * deactivating a user who DID complete activation flipped the claim back to
29
+ * false.
30
+ *
31
+ * NOT NULL DEFAULT false, so the ALTER backfills every existing row itself.
32
+ * False is the only safe backfill: `activate_hash` is null both after a
33
+ * completed activation and for a user who was never asked to verify, so the
34
+ * two states are indistinguishable and no row can be proven verified. An
35
+ * operator repairs a known-good address through the API. The column is
36
+ * admin-settable, and denied on the self-edit path by
37
+ * `system.user-names-self-manage`.
38
+ *
39
+ * ## `auth_clients` columns (issue #3355 and plan 064 Stage 1)
40
+ *
41
+ * `scope` was a text copy of the client's scope list that nothing has read
42
+ * since #3354: `/authorize` grants exactly the scopes bound in
43
+ * `auth_client_scopes`, so a value here never granted anything. `root_url`
44
+ * was stored and never resolved against anything. Both drop WITH their data;
45
+ * the generated down() re-adds them empty, and
46
+ * `docs/src/guide/deployment/upgrading.md` carries the export query for an
47
+ * operator who set either.
48
+ *
49
+ * `backchannel_logout_uri` is the one absolute http(s) URL Authup POSTs a
50
+ * signed `logout_token` to when a session the client received tokens for is
51
+ * revoked (OIDC Back-Channel Logout 1.0). Nullable with no default, so every
52
+ * existing row and every provisioned system client starts with no push.
53
+ */ var SessionUserAndClientColumns1787571998009 = class {
54
+ name = "SessionUserAndClientColumns1787571998009";
55
+ async up(queryRunner) {
56
+ await queryRunner.query(`
57
+ ALTER TABLE "auth_sessions"
58
+ ADD "secret" character varying(64)
59
+ `);
60
+ await queryRunner.query(`
61
+ CREATE UNIQUE INDEX "IDX_833c743f7cd787dfc8b70ba400" ON "auth_sessions" ("secret")
62
+ `);
63
+ await queryRunner.query(`
64
+ ALTER TABLE "auth_users"
65
+ ADD "email_verified" boolean NOT NULL DEFAULT false
66
+ `);
67
+ await queryRunner.query(`
68
+ ALTER TABLE "auth_clients" DROP COLUMN "scope"
69
+ `);
70
+ await queryRunner.query(`
71
+ ALTER TABLE "auth_clients" DROP COLUMN "root_url"
72
+ `);
73
+ await queryRunner.query(`
74
+ ALTER TABLE "auth_clients"
75
+ ADD "backchannel_logout_uri" character varying(2000)
76
+ `);
77
+ }
78
+ async down(queryRunner) {
79
+ await queryRunner.query(`
80
+ ALTER TABLE "auth_clients" DROP COLUMN "backchannel_logout_uri"
81
+ `);
82
+ await queryRunner.query(`
83
+ ALTER TABLE "auth_clients"
84
+ ADD "root_url" character varying(2000)
85
+ `);
86
+ await queryRunner.query(`
87
+ ALTER TABLE "auth_clients"
88
+ ADD "scope" character varying(512)
89
+ `);
90
+ await queryRunner.query(`
91
+ ALTER TABLE "auth_users" DROP COLUMN "email_verified"
92
+ `);
93
+ await queryRunner.query(`
94
+ DROP INDEX "public"."IDX_833c743f7cd787dfc8b70ba400"
95
+ `);
96
+ await queryRunner.query(`
97
+ ALTER TABLE "auth_sessions" DROP COLUMN "secret"
98
+ `);
99
+ }
100
+ };
101
+ //#endregion
102
+ export { SessionUserAndClientColumns1787571998009 };
103
+
104
+ //# sourceMappingURL=1787571998009-SessionUserAndClientColumns.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1787571998009-SessionUserAndClientColumns.mjs","names":["SessionUserAndClientColumns1787571998009","name","up","queryRunner","query","down"],"sources":["../../../../../src/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n/**\n * The beta.64 release window, folded into one migration per dialect.\n *\n * ## `auth_sessions.secret` (plan 088 Stage 1: the console session credential)\n *\n * The opaque value a console browser presents in the `authup_session` cookie.\n * It is NOT the session id: that id is published as the `sid` claim in every\n * id_token and in every `/sessions` row, so it is a public identifier and\n * cannot double as a credential. This column is the secret half.\n *\n * Nullable because every bearer-mode session has none, and unique so one value\n * resolves at most one session. The entity additionally marks it\n * `select: false`, so it is re-selected only by `findOneBySecret` and never on\n * an ordinary session read.\n *\n * ## `auth_users.email_verified` (issue #3519: the OIDC claim gets a column)\n *\n * The claim was mapped onto `auth_users.active`, which is the account's\n * enable flag and carries no statement about the address. It was wrong in\n * both directions: registration sets `active` outright when email\n * verification is off (the default), and a federated or provisioned user is\n * created active with a synthesized `<name>@example.com`, so authup asserted\n * a verified address nobody had ever received mail at; conversely an admin\n * deactivating a user who DID complete activation flipped the claim back to\n * false.\n *\n * NOT NULL DEFAULT false, so the ALTER backfills every existing row itself.\n * False is the only safe backfill: `activate_hash` is null both after a\n * completed activation and for a user who was never asked to verify, so the\n * two states are indistinguishable and no row can be proven verified. An\n * operator repairs a known-good address through the API. The column is\n * admin-settable, and denied on the self-edit path by\n * `system.user-names-self-manage`.\n *\n * ## `auth_clients` columns (issue #3355 and plan 064 Stage 1)\n *\n * `scope` was a text copy of the client's scope list that nothing has read\n * since #3354: `/authorize` grants exactly the scopes bound in\n * `auth_client_scopes`, so a value here never granted anything. `root_url`\n * was stored and never resolved against anything. Both drop WITH their data;\n * the generated down() re-adds them empty, and\n * `docs/src/guide/deployment/upgrading.md` carries the export query for an\n * operator who set either.\n *\n * `backchannel_logout_uri` is the one absolute http(s) URL Authup POSTs a\n * signed `logout_token` to when a session the client received tokens for is\n * revoked (OIDC Back-Channel Logout 1.0). Nullable with no default, so every\n * existing row and every provisioned system client starts with no push.\n */\nimport type { MigrationInterface, QueryRunner } from 'typeorm';\n\nexport class SessionUserAndClientColumns1787571998009 implements MigrationInterface {\n name = 'SessionUserAndClientColumns1787571998009';\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`\n ALTER TABLE \"auth_sessions\"\n ADD \"secret\" character varying(64)\n `);\n await queryRunner.query(`\n CREATE UNIQUE INDEX \"IDX_833c743f7cd787dfc8b70ba400\" ON \"auth_sessions\" (\"secret\")\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_users\"\n ADD \"email_verified\" boolean NOT NULL DEFAULT false\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_clients\" DROP COLUMN \"scope\"\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_clients\" DROP COLUMN \"root_url\"\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_clients\"\n ADD \"backchannel_logout_uri\" character varying(2000)\n `);\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`\n ALTER TABLE \"auth_clients\" DROP COLUMN \"backchannel_logout_uri\"\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_clients\"\n ADD \"root_url\" character varying(2000)\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_clients\"\n ADD \"scope\" character varying(512)\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_users\" DROP COLUMN \"email_verified\"\n `);\n await queryRunner.query(`\n DROP INDEX \"public\".\"IDX_833c743f7cd787dfc8b70ba400\"\n `);\n await queryRunner.query(`\n ALTER TABLE \"auth_sessions\" DROP COLUMN \"secret\"\n `);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DA,IAAaA,2CAAb,MAAaA;CACTC,OAAO;CAEP,MAAaC,GAAGC,aAAyC;EACrD,MAAMA,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;CACL;CAEA,MAAaC,KAAKF,aAAyC;EACvD,MAAMA,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;;SAGvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;EACD,MAAMD,YAAYC,MAAM;;SAEvB;CACL;AACJ"}
@@ -1,7 +1,7 @@
1
1
  import type { EntityType } from '@authup/core-kit';
2
2
  import { EntityDefaultEventName } from '@authup/core-kit';
3
3
  import type { DomainEventDestinations, IDomainEventPublisher } from '@authup/server-kit';
4
- import type { DataSource, EntitySubscriberInterface, InsertEvent, ObjectLiteral, RemoveEvent, UpdateEvent } from 'typeorm';
4
+ import type { DataSource, EntityManager, EntitySubscriberInterface, InsertEvent, ObjectLiteral, RemoveEvent, UpdateEvent } from 'typeorm';
5
5
  import type { EntitySubscriberContext } from './types.ts';
6
6
  export declare function buildEntityDestinations<T extends ObjectLiteral>(type: `${EntityType}`, realmIds?: (data: T) => (string | null | undefined)[]): (data: T) => DomainEventDestinations;
7
7
  export declare class EntitySubscriber<T extends ObjectLiteral> implements EntitySubscriberInterface<T> {
@@ -14,6 +14,10 @@ export declare class EntitySubscriber<T extends ObjectLiteral> implements Entity
14
14
  afterUpdate(event: UpdateEvent<T>): Promise<any>;
15
15
  afterRemove(event: RemoveEvent<T>): Promise<any>;
16
16
  protected dropCacheKeys(connection: DataSource, data: T): Promise<void>;
17
- protected publish(event: `${EntityDefaultEventName}`, data: T, dataPrevious?: T): Promise<void>;
17
+ /**
18
+ * `transaction` is the hook's `event.manager`: the after* hooks run inside
19
+ * the persist transaction, so a handler that persists rides it (#3539).
20
+ */
21
+ protected publish(event: `${EntityDefaultEventName}`, data: T, dataPrevious?: T, transaction?: EntityManager): Promise<void>;
18
22
  }
19
23
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/adapters/database/subscriber/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACH,sBAAsB,EAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,KAAK,EACR,UAAU,EACV,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,aAAa,EAC3D,IAAI,EAAE,GAAG,UAAU,EAAE,EACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACrD,CAAC,IAAI,EAAE,CAAC,KAAK,uBAAuB,CAsBvC;AAED,qBAAa,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAE,YAAW,yBAAyB,CAAC,CAAC,CAAC;IAC1F,SAAS,CAAC,GAAG,EAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,SAAS,CAAC,EAAG,qBAAqB,CAAC;gBAEjC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAK3C,YAAY,CAAC,SAAS,EAAE,qBAAqB,GAAI,IAAI;IAKrD,QAAQ,IAAK,QAAQ,GAAG,MAAM;IAIxB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAYhD,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAUhD,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cActC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC;cAQ9D,OAAO,CACnB,KAAK,EAAE,GAAG,sBAAsB,EAAE,EAClC,IAAI,EAAE,CAAC,EACP,YAAY,CAAC,EAAE,CAAC,GAChB,OAAO,CAAC,IAAI,CAAC;CAepB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/adapters/database/subscriber/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACH,sBAAsB,EAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,KAAK,EACR,UAAU,EACV,aAAa,EACb,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,aAAa,EAC3D,IAAI,EAAE,GAAG,UAAU,EAAE,EACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACrD,CAAC,IAAI,EAAE,CAAC,KAAK,uBAAuB,CAsBvC;AAED,qBAAa,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAE,YAAW,yBAAyB,CAAC,CAAC,CAAC;IAC1F,SAAS,CAAC,GAAG,EAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,SAAS,CAAC,EAAG,qBAAqB,CAAC;gBAEjC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAK3C,YAAY,CAAC,SAAS,EAAE,qBAAqB,GAAI,IAAI;IAKrD,QAAQ,IAAK,QAAQ,GAAG,MAAM;IAIxB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAYhD,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAUhD,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cActC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC;IAQ9E;;;OAGG;cACa,OAAO,CACnB,KAAK,EAAE,GAAG,sBAAsB,EAAE,EAClC,IAAI,EAAE,CAAC,EACP,YAAY,CAAC,EAAE,CAAC,EAChB,WAAW,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC;CAgBpB"}
@@ -36,24 +36,27 @@ var EntitySubscriber = class {
36
36
  async afterInsert(event) {
37
37
  if (!event.entity) return;
38
38
  if (this.ctx.cache && this.ctx.cache.onInsert) await this.dropCacheKeys(event.connection, event.entity);
39
- await this.publish(EntityDefaultEventName.CREATED, event.entity);
39
+ await this.publish(EntityDefaultEventName.CREATED, event.entity, void 0, event.manager);
40
40
  }
41
41
  async afterUpdate(event) {
42
42
  if (!event.entity) return;
43
43
  await this.dropCacheKeys(event.connection, event.entity);
44
- await this.publish(EntityDefaultEventName.UPDATED, event.entity, event.databaseEntity);
44
+ await this.publish(EntityDefaultEventName.UPDATED, event.entity, event.databaseEntity, event.manager);
45
45
  }
46
46
  async afterRemove(event) {
47
47
  const entity = event.databaseEntity ?? event.entity;
48
48
  if (!entity) return;
49
49
  await this.dropCacheKeys(event.connection, entity);
50
- await this.publish(EntityDefaultEventName.DELETED, entity);
50
+ await this.publish(EntityDefaultEventName.DELETED, entity, void 0, event.manager);
51
51
  }
52
52
  async dropCacheKeys(connection, data) {
53
53
  if (!this.ctx.cache || !connection.queryResultCache) return;
54
54
  await connection.queryResultCache.remove(this.ctx.cache.keys(data));
55
55
  }
56
- async publish(event, data, dataPrevious) {
56
+ /**
57
+ * `transaction` is the hook's `event.manager`: the after* hooks run inside
58
+ * the persist transaction, so a handler that persists rides it (#3539).
59
+ */ async publish(event, data, dataPrevious, transaction) {
57
60
  if (!this.publisher) return;
58
61
  await this.publisher.safePublish({
59
62
  content: {
@@ -62,7 +65,8 @@ var EntitySubscriber = class {
62
65
  data
63
66
  },
64
67
  destinations: this.ctx.destinations(data),
65
- ...dataPrevious ? { dataPrevious } : {}
68
+ ...dataPrevious ? { dataPrevious } : {},
69
+ transaction
66
70
  });
67
71
  }
68
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["EntityDefaultEventName","buildEntityChannelName","buildEntityNamespaceName","buildEntityDestinations","type","realmIds","data","destinations","channel","id","items","seen","Set","realmId","has","add","push","namespace","EntitySubscriber","ctx","publisher","setPublisher","listenTo","target","afterInsert","event","entity","cache","onInsert","dropCacheKeys","connection","publish","CREATED","afterUpdate","UPDATED","databaseEntity","afterRemove","DELETED","queryResultCache","remove","keys","dataPrevious","safePublish","content"],"sources":["../../../../src/adapters/database/subscriber/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EntityType } from '@authup/core-kit';\nimport {\n EntityDefaultEventName,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestinations, IDomainEventPublisher } from '@authup/server-kit';\nimport type {\n DataSource,\n EntitySubscriberInterface,\n InsertEvent,\n ObjectLiteral,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport type { EntitySubscriberContext } from './types.ts';\n\nexport function buildEntityDestinations<T extends ObjectLiteral>(\n type: `${EntityType}`,\n realmIds?: (data: T) => (string | null | undefined)[],\n) : (data: T) => DomainEventDestinations {\n return (data) => {\n const destinations : DomainEventDestinations = [\n { channel: (id) => buildEntityChannelName(type, id) },\n ];\n\n if (realmIds) {\n const items = realmIds(data);\n const seen = new Set<string>();\n for (const realmId of items) {\n if (realmId && !seen.has(realmId)) {\n seen.add(realmId);\n destinations.push({\n channel: (id) => buildEntityChannelName(type, id),\n namespace: buildEntityNamespaceName(realmId),\n });\n }\n }\n }\n\n return destinations;\n };\n}\n\nexport class EntitySubscriber<T extends ObjectLiteral> implements EntitySubscriberInterface<T> {\n protected ctx : EntitySubscriberContext<T>;\n\n protected publisher? : IDomainEventPublisher;\n\n constructor(ctx: EntitySubscriberContext<T>) {\n this.ctx = ctx;\n this.publisher = ctx.publisher;\n }\n\n setPublisher(publisher: IDomainEventPublisher) : void {\n this.publisher = publisher;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo() : Function | string {\n return this.ctx.target;\n }\n\n async afterInsert(event: InsertEvent<T>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (this.ctx.cache && this.ctx.cache.onInsert) {\n await this.dropCacheKeys(event.connection, event.entity);\n }\n\n await this.publish(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<T>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await this.dropCacheKeys(event.connection, event.entity as T);\n\n await this.publish(EntityDefaultEventName.UPDATED, event.entity as T, event.databaseEntity);\n }\n\n async afterRemove(event: RemoveEvent<T>): Promise<any> {\n // remove() strips the primary key from event.entity before the\n // subscriber runs — databaseEntity is the pre-removal row and keeps\n // the id-keyed cache invalidation (and the DELETED payload) intact.\n const entity = event.databaseEntity ?? event.entity;\n if (!entity) {\n return;\n }\n\n await this.dropCacheKeys(event.connection, entity);\n\n await this.publish(EntityDefaultEventName.DELETED, entity);\n }\n\n protected async dropCacheKeys(connection: DataSource, data: T) : Promise<void> {\n if (!this.ctx.cache || !connection.queryResultCache) {\n return;\n }\n\n await connection.queryResultCache.remove(this.ctx.cache.keys(data));\n }\n\n protected async publish(\n event: `${EntityDefaultEventName}`,\n data: T,\n dataPrevious?: T,\n ) : Promise<void> {\n if (!this.publisher) {\n return;\n }\n\n await this.publisher.safePublish({\n content: {\n type: this.ctx.type,\n event,\n data,\n },\n destinations: this.ctx.destinations(data),\n ...(dataPrevious ? { dataPrevious } : {}),\n });\n }\n}\n"],"mappings":";;;;;AAwBA,SAAgBG,wBACZC,MACAC,UAAqD;CAErD,QAAQC,SAAAA;EACJ,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOR,uBAAuBG,MAAMK,EAAAA,EAAI,CACvD;EAED,IAAIJ,UAAU;GACV,MAAMK,QAAQL,SAASC,IAAAA;GACvB,MAAMK,uBAAO,IAAIC,IAAAA;GACjB,KAAK,MAAMC,WAAWH,OAClB,IAAIG,WAAW,CAACF,KAAKG,IAAID,OAAAA,GAAU;IAC/BF,KAAKI,IAAIF,OAAAA;IACTN,aAAaS,KAAK;KACdR,UAAUC,OAAOR,uBAAuBG,MAAMK,EAAAA;KAC9CQ,WAAWf,yBAAyBW,OAAAA;IACxC,CAAA;GACJ;EAER;EAEA,OAAON;CACX;AACJ;AAEA,IAAaW,mBAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYD,KAAiC;EACzC,KAAKA,MAAMA;EACX,KAAKC,YAAYD,IAAIC;CACzB;CAEAC,aAAaD,WAAyC;EAClD,KAAKA,YAAYA;CACrB;CAGAE,WAA+B;EAC3B,OAAO,KAAKH,IAAII;CACpB;CAEA,MAAMC,YAAYC,OAAqC;EACnD,IAAI,CAACA,MAAMC,QACP;EAGJ,IAAI,KAAKP,IAAIQ,SAAS,KAAKR,IAAIQ,MAAMC,UACjC,MAAM,KAAKC,cAAcJ,MAAMK,YAAYL,MAAMC,MAAM;EAG3D,MAAM,KAAKK,QAAQ/B,uBAAuBgC,SAASP,MAAMC,MAAM;CACnE;CAEA,MAAMO,YAAYR,OAAqC;EACnD,IAAI,CAACA,MAAMC,QACP;EAGJ,MAAM,KAAKG,cAAcJ,MAAMK,YAAYL,MAAMC,MAAM;EAEvD,MAAM,KAAKK,QAAQ/B,uBAAuBkC,SAAST,MAAMC,QAAaD,MAAMU,cAAc;CAC9F;CAEA,MAAMC,YAAYX,OAAqC;EAInD,MAAMC,SAASD,MAAMU,kBAAkBV,MAAMC;EAC7C,IAAI,CAACA,QACD;EAGJ,MAAM,KAAKG,cAAcJ,MAAMK,YAAYJ,MAAAA;EAE3C,MAAM,KAAKK,QAAQ/B,uBAAuBqC,SAASX,MAAAA;CACvD;CAEA,MAAgBG,cAAcC,YAAwBxB,MAAyB;EAC3E,IAAI,CAAC,KAAKa,IAAIQ,SAAS,CAACG,WAAWQ,kBAC/B;EAGJ,MAAMR,WAAWQ,iBAAiBC,OAAO,KAAKpB,IAAIQ,MAAMa,KAAKlC,IAAAA,CAAAA;CACjE;CAEA,MAAgByB,QACZN,OACAnB,MACAmC,cACc;EACd,IAAI,CAAC,KAAKrB,WACN;EAGJ,MAAM,KAAKA,UAAUsB,YAAY;GAC7BC,SAAS;IACLvC,MAAM,KAAKe,IAAIf;IACfqB;IACAnB;GACJ;GACAC,cAAc,KAAKY,IAAIZ,aAAaD,IAAAA;GACpC,GAAImC,eAAe,EAAEA,aAAa,IAAI,CAAC;EAC3C,CAAA;CACJ;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["EntityDefaultEventName","buildEntityChannelName","buildEntityNamespaceName","buildEntityDestinations","type","realmIds","data","destinations","channel","id","items","seen","Set","realmId","has","add","push","namespace","EntitySubscriber","ctx","publisher","setPublisher","listenTo","target","afterInsert","event","entity","cache","onInsert","dropCacheKeys","connection","publish","CREATED","undefined","manager","afterUpdate","UPDATED","databaseEntity","afterRemove","DELETED","queryResultCache","remove","keys","dataPrevious","transaction","safePublish","content"],"sources":["../../../../src/adapters/database/subscriber/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EntityType } from '@authup/core-kit';\nimport {\n EntityDefaultEventName,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestinations, IDomainEventPublisher } from '@authup/server-kit';\nimport type {\n DataSource,\n EntityManager,\n EntitySubscriberInterface,\n InsertEvent,\n ObjectLiteral,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport type { EntitySubscriberContext } from './types.ts';\n\nexport function buildEntityDestinations<T extends ObjectLiteral>(\n type: `${EntityType}`,\n realmIds?: (data: T) => (string | null | undefined)[],\n) : (data: T) => DomainEventDestinations {\n return (data) => {\n const destinations : DomainEventDestinations = [\n { channel: (id) => buildEntityChannelName(type, id) },\n ];\n\n if (realmIds) {\n const items = realmIds(data);\n const seen = new Set<string>();\n for (const realmId of items) {\n if (realmId && !seen.has(realmId)) {\n seen.add(realmId);\n destinations.push({\n channel: (id) => buildEntityChannelName(type, id),\n namespace: buildEntityNamespaceName(realmId),\n });\n }\n }\n }\n\n return destinations;\n };\n}\n\nexport class EntitySubscriber<T extends ObjectLiteral> implements EntitySubscriberInterface<T> {\n protected ctx : EntitySubscriberContext<T>;\n\n protected publisher? : IDomainEventPublisher;\n\n constructor(ctx: EntitySubscriberContext<T>) {\n this.ctx = ctx;\n this.publisher = ctx.publisher;\n }\n\n setPublisher(publisher: IDomainEventPublisher) : void {\n this.publisher = publisher;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo() : Function | string {\n return this.ctx.target;\n }\n\n async afterInsert(event: InsertEvent<T>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (this.ctx.cache && this.ctx.cache.onInsert) {\n await this.dropCacheKeys(event.connection, event.entity);\n }\n\n await this.publish(EntityDefaultEventName.CREATED, event.entity, undefined, event.manager);\n }\n\n async afterUpdate(event: UpdateEvent<T>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await this.dropCacheKeys(event.connection, event.entity as T);\n\n await this.publish(EntityDefaultEventName.UPDATED, event.entity as T, event.databaseEntity, event.manager);\n }\n\n async afterRemove(event: RemoveEvent<T>): Promise<any> {\n // remove() strips the primary key from event.entity before the\n // subscriber runs — databaseEntity is the pre-removal row and keeps\n // the id-keyed cache invalidation (and the DELETED payload) intact.\n const entity = event.databaseEntity ?? event.entity;\n if (!entity) {\n return;\n }\n\n await this.dropCacheKeys(event.connection, entity);\n\n await this.publish(EntityDefaultEventName.DELETED, entity, undefined, event.manager);\n }\n\n protected async dropCacheKeys(connection: DataSource, data: T) : Promise<void> {\n if (!this.ctx.cache || !connection.queryResultCache) {\n return;\n }\n\n await connection.queryResultCache.remove(this.ctx.cache.keys(data));\n }\n\n /**\n * `transaction` is the hook's `event.manager`: the after* hooks run inside\n * the persist transaction, so a handler that persists rides it (#3539).\n */\n protected async publish(\n event: `${EntityDefaultEventName}`,\n data: T,\n dataPrevious?: T,\n transaction?: EntityManager,\n ) : Promise<void> {\n if (!this.publisher) {\n return;\n }\n\n await this.publisher.safePublish({\n content: {\n type: this.ctx.type,\n event,\n data,\n },\n destinations: this.ctx.destinations(data),\n ...(dataPrevious ? { dataPrevious } : {}),\n transaction,\n });\n }\n}\n"],"mappings":";;;;;AAyBA,SAAgBG,wBACZC,MACAC,UAAqD;CAErD,QAAQC,SAAAA;EACJ,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOR,uBAAuBG,MAAMK,EAAAA,EAAI,CACvD;EAED,IAAIJ,UAAU;GACV,MAAMK,QAAQL,SAASC,IAAAA;GACvB,MAAMK,uBAAO,IAAIC,IAAAA;GACjB,KAAK,MAAMC,WAAWH,OAClB,IAAIG,WAAW,CAACF,KAAKG,IAAID,OAAAA,GAAU;IAC/BF,KAAKI,IAAIF,OAAAA;IACTN,aAAaS,KAAK;KACdR,UAAUC,OAAOR,uBAAuBG,MAAMK,EAAAA;KAC9CQ,WAAWf,yBAAyBW,OAAAA;IACxC,CAAA;GACJ;EAER;EAEA,OAAON;CACX;AACJ;AAEA,IAAaW,mBAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYD,KAAiC;EACzC,KAAKA,MAAMA;EACX,KAAKC,YAAYD,IAAIC;CACzB;CAEAC,aAAaD,WAAyC;EAClD,KAAKA,YAAYA;CACrB;CAGAE,WAA+B;EAC3B,OAAO,KAAKH,IAAII;CACpB;CAEA,MAAMC,YAAYC,OAAqC;EACnD,IAAI,CAACA,MAAMC,QACP;EAGJ,IAAI,KAAKP,IAAIQ,SAAS,KAAKR,IAAIQ,MAAMC,UACjC,MAAM,KAAKC,cAAcJ,MAAMK,YAAYL,MAAMC,MAAM;EAG3D,MAAM,KAAKK,QAAQ/B,uBAAuBgC,SAASP,MAAMC,QAAQO,KAAAA,GAAWR,MAAMS,OAAO;CAC7F;CAEA,MAAMC,YAAYV,OAAqC;EACnD,IAAI,CAACA,MAAMC,QACP;EAGJ,MAAM,KAAKG,cAAcJ,MAAMK,YAAYL,MAAMC,MAAM;EAEvD,MAAM,KAAKK,QAAQ/B,uBAAuBoC,SAASX,MAAMC,QAAaD,MAAMY,gBAAgBZ,MAAMS,OAAO;CAC7G;CAEA,MAAMI,YAAYb,OAAqC;EAInD,MAAMC,SAASD,MAAMY,kBAAkBZ,MAAMC;EAC7C,IAAI,CAACA,QACD;EAGJ,MAAM,KAAKG,cAAcJ,MAAMK,YAAYJ,MAAAA;EAE3C,MAAM,KAAKK,QAAQ/B,uBAAuBuC,SAASb,QAAQO,KAAAA,GAAWR,MAAMS,OAAO;CACvF;CAEA,MAAgBL,cAAcC,YAAwBxB,MAAyB;EAC3E,IAAI,CAAC,KAAKa,IAAIQ,SAAS,CAACG,WAAWU,kBAC/B;EAGJ,MAAMV,WAAWU,iBAAiBC,OAAO,KAAKtB,IAAIQ,MAAMe,KAAKpC,IAAAA,CAAAA;CACjE;;;;IAMA,MAAgByB,QACZN,OACAnB,MACAqC,cACAC,aACc;EACd,IAAI,CAAC,KAAKxB,WACN;EAGJ,MAAM,KAAKA,UAAUyB,YAAY;GAC7BC,SAAS;IACL1C,MAAM,KAAKe,IAAIf;IACfqB;IACAnB;GACJ;GACAC,cAAc,KAAKY,IAAIZ,aAAaD,IAAAA;GACpC,GAAIqC,eAAe,EAAEA,aAAa,IAAI,CAAC;GACvCC;EACJ,CAAA;CACJ;AACJ"}
@@ -30,7 +30,7 @@ var HTTPOAuth2Authorizer = class extends OAuth2Authorization {
30
30
  client,
31
31
  redirectUriVerified
32
32
  });
33
- if (this.consentService && client && !client.builtIn) try {
33
+ if (client && this.consentService && !client.builtIn) try {
34
34
  await this.consentService.record({
35
35
  clientId: client.id,
36
36
  realmId: client.realmId,