@authup/server-core 1.0.0-beta.50 → 1.0.0-beta.52

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 (656) hide show
  1. package/dist/adapters/database/data-source/options/module.d.ts.map +1 -1
  2. package/dist/adapters/database/data-source/options/module.mjs +2 -0
  3. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  4. package/dist/adapters/database/domains/client/entity.d.ts +1 -0
  5. package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
  6. package/dist/adapters/database/domains/client/entity.mjs +5 -0
  7. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  8. package/dist/adapters/database/domains/client-permission/entity.d.ts +2 -1
  9. package/dist/adapters/database/domains/client-permission/entity.d.ts.map +1 -1
  10. package/dist/adapters/database/domains/client-permission/entity.mjs +6 -0
  11. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  12. package/dist/adapters/database/domains/index.d.ts +1 -0
  13. package/dist/adapters/database/domains/index.d.ts.map +1 -1
  14. package/dist/adapters/database/domains/index.mjs +3 -1
  15. package/dist/adapters/database/domains/robot-permission/entity.d.ts +2 -1
  16. package/dist/adapters/database/domains/robot-permission/entity.d.ts.map +1 -1
  17. package/dist/adapters/database/domains/robot-permission/entity.mjs +6 -0
  18. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +1 -1
  19. package/dist/adapters/database/domains/robot-role/entity.mjs +1 -1
  20. package/dist/adapters/database/domains/robot-role/entity.mjs.map +1 -1
  21. package/dist/adapters/database/domains/role-permission/entity.d.ts +2 -1
  22. package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
  23. package/dist/adapters/database/domains/role-permission/entity.mjs +6 -0
  24. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  25. package/dist/adapters/database/domains/session/entity.mjs +1 -1
  26. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  27. package/dist/adapters/database/domains/session-token/entity.d.ts +17 -0
  28. package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -0
  29. package/dist/adapters/database/domains/session-token/entity.mjs +95 -0
  30. package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -0
  31. package/dist/adapters/database/domains/session-token/index.d.ts +2 -0
  32. package/dist/adapters/database/domains/session-token/index.d.ts.map +1 -0
  33. package/dist/adapters/database/domains/session-token/index.mjs +5 -0
  34. package/dist/adapters/database/domains/user-permission/entity.d.ts +2 -1
  35. package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
  36. package/dist/adapters/database/domains/user-permission/entity.mjs +6 -0
  37. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  38. package/dist/adapters/database/index.mjs +2 -1
  39. package/dist/adapters/database/migrations/mysql/1779300000000-Default.d.ts +7 -0
  40. package/dist/adapters/database/migrations/mysql/1779300000000-Default.d.ts.map +1 -0
  41. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs +85 -0
  42. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs.map +1 -0
  43. package/dist/adapters/database/migrations/mysql/1783325495597-Default.d.ts +28 -0
  44. package/dist/adapters/database/migrations/mysql/1783325495597-Default.d.ts.map +1 -0
  45. package/dist/adapters/database/migrations/mysql/1783325495597-Default.mjs +85 -0
  46. package/dist/adapters/database/migrations/mysql/1783325495597-Default.mjs.map +1 -0
  47. package/dist/adapters/database/migrations/postgres/1779300000000-Default.d.ts +7 -0
  48. package/dist/adapters/database/migrations/postgres/1779300000000-Default.d.ts.map +1 -0
  49. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs +87 -0
  50. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs.map +1 -0
  51. package/dist/adapters/database/migrations/postgres/1783325495597-Default.d.ts +28 -0
  52. package/dist/adapters/database/migrations/postgres/1783325495597-Default.d.ts.map +1 -0
  53. package/dist/adapters/database/migrations/postgres/1783325495597-Default.mjs +79 -0
  54. package/dist/adapters/database/migrations/postgres/1783325495597-Default.mjs.map +1 -0
  55. package/dist/adapters/database/subscriber/module.d.ts.map +1 -1
  56. package/dist/adapters/database/subscriber/module.mjs +4 -3
  57. package/dist/adapters/database/subscriber/module.mjs.map +1 -1
  58. package/dist/adapters/http/adapters/index.mjs +3 -2
  59. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +2 -1
  60. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  61. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +2 -1
  62. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
  63. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +10 -4
  64. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  65. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
  66. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +3 -0
  67. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  68. package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +3 -2
  69. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +2 -1
  70. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
  71. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +14 -4
  72. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  73. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -1
  74. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
  75. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +12 -5
  76. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  77. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +4 -1
  78. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  79. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts +1 -0
  80. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts.map +1 -1
  81. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +2 -2
  82. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
  83. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +1 -1
  84. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts +1 -0
  85. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts.map +1 -1
  86. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.mjs +3 -2
  87. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.d.ts +9 -0
  88. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.d.ts.map +1 -0
  89. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs +21 -0
  90. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs.map +1 -0
  91. package/dist/adapters/http/adapters/oauth2/index.mjs +3 -2
  92. package/dist/adapters/http/controllers/entities/client/module.mjs +2 -2
  93. package/dist/adapters/http/controllers/entities/client-permission/module.mjs +1 -1
  94. package/dist/adapters/http/controllers/entities/client-role/module.mjs +1 -1
  95. package/dist/adapters/http/controllers/entities/client-scope/module.mjs +1 -1
  96. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +1 -1
  97. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  98. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +28 -12
  99. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  100. package/dist/adapters/http/controllers/entities/index.d.ts +1 -0
  101. package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
  102. package/dist/adapters/http/controllers/entities/index.mjs +3 -1
  103. package/dist/adapters/http/controllers/entities/permission/module.mjs +1 -1
  104. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +1 -1
  105. package/dist/adapters/http/controllers/entities/policy/module.mjs +1 -1
  106. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  107. package/dist/adapters/http/controllers/entities/realm/module.mjs +11 -8
  108. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  109. package/dist/adapters/http/controllers/entities/robot/module.mjs +2 -2
  110. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +1 -1
  111. package/dist/adapters/http/controllers/entities/robot-role/module.mjs +1 -1
  112. package/dist/adapters/http/controllers/entities/role/module.mjs +1 -1
  113. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +1 -1
  114. package/dist/adapters/http/controllers/entities/role-permission/module.mjs +1 -1
  115. package/dist/adapters/http/controllers/entities/scope/module.mjs +1 -1
  116. package/dist/adapters/http/controllers/entities/session/index.d.ts +2 -0
  117. package/dist/adapters/http/controllers/entities/session/index.d.ts.map +1 -0
  118. package/dist/adapters/http/controllers/entities/session/index.mjs +5 -0
  119. package/dist/adapters/http/controllers/entities/session/module.d.ts +16 -0
  120. package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -0
  121. package/dist/adapters/http/controllers/entities/session/module.mjs +102 -0
  122. package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -0
  123. package/dist/adapters/http/controllers/entities/user/module.mjs +2 -2
  124. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +1 -1
  125. package/dist/adapters/http/controllers/entities/user-permission/module.mjs +1 -1
  126. package/dist/adapters/http/controllers/entities/user-role/module.mjs +1 -1
  127. package/dist/adapters/http/controllers/index.mjs +3 -1
  128. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  129. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +22 -9
  130. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  131. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +7 -4
  132. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
  133. package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
  134. package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
  135. package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
  136. package/dist/adapters/http/controllers/workflows/logout/index.d.ts +3 -0
  137. package/dist/adapters/http/controllers/workflows/logout/index.d.ts.map +1 -0
  138. package/dist/adapters/http/controllers/workflows/logout/index.mjs +5 -0
  139. package/dist/adapters/http/controllers/workflows/logout/module.d.ts +14 -0
  140. package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -0
  141. package/dist/adapters/http/controllers/workflows/logout/module.mjs +101 -0
  142. package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -0
  143. package/dist/adapters/http/controllers/workflows/logout/types.d.ts +9 -0
  144. package/dist/adapters/http/controllers/workflows/logout/types.d.ts.map +1 -0
  145. package/dist/adapters/http/controllers/workflows/logout/types.mjs +4 -0
  146. package/dist/adapters/http/controllers/workflows/status/module.mjs +1 -1
  147. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  148. package/dist/adapters/http/controllers/workflows/token/module.mjs +12 -4
  149. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  150. package/dist/adapters/http/controllers/workflows/token/types.d.ts +9 -1
  151. package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
  152. package/dist/adapters/http/index.mjs +17 -13
  153. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  154. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +2 -0
  155. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  156. package/dist/adapters/http/middleware/built-in/index.mjs +2 -2
  157. package/dist/adapters/http/middleware/built-in/logger.d.ts +1 -0
  158. package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
  159. package/dist/adapters/http/middleware/built-in/logger.mjs +23 -2
  160. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  161. package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
  162. package/dist/adapters/http/middleware/built-in/prometheus.mjs +1 -1
  163. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  164. package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts.map +1 -1
  165. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs +3 -8
  166. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs.map +1 -1
  167. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +2 -2
  168. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +2 -2
  169. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +1 -1
  170. package/dist/adapters/http/middleware/index.mjs +2 -2
  171. package/dist/adapters/http/request/helpers/identity.d.ts +0 -1
  172. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  173. package/dist/adapters/http/request/helpers/identity.mjs +2 -5
  174. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  175. package/dist/adapters/http/request/helpers/index.d.ts +1 -0
  176. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  177. package/dist/adapters/http/request/helpers/index.mjs +3 -2
  178. package/dist/adapters/http/request/helpers/session-id.d.ts +9 -0
  179. package/dist/adapters/http/request/helpers/session-id.d.ts.map +1 -0
  180. package/dist/adapters/http/request/helpers/session-id.mjs +19 -0
  181. package/dist/adapters/http/request/helpers/session-id.mjs.map +1 -0
  182. package/dist/adapters/http/request/index.mjs +3 -2
  183. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  184. package/dist/adapters/http/request/permission/module.mjs +5 -3
  185. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  186. package/dist/adapters/http/ui/index.d.ts +1 -0
  187. package/dist/adapters/http/ui/index.d.ts.map +1 -1
  188. package/dist/adapters/http/ui/index.mjs +2 -1
  189. package/dist/adapters/http/ui/internal-http-client.d.ts +22 -0
  190. package/dist/adapters/http/ui/internal-http-client.d.ts.map +1 -0
  191. package/dist/adapters/http/ui/internal-http-client.mjs +52 -0
  192. package/dist/adapters/http/ui/internal-http-client.mjs.map +1 -0
  193. package/dist/adapters/http/ui/render.d.ts.map +1 -1
  194. package/dist/adapters/http/ui/render.mjs +5 -2
  195. package/dist/adapters/http/ui/render.mjs.map +1 -1
  196. package/dist/adapters/http/ui/types.d.ts +12 -0
  197. package/dist/adapters/http/ui/types.d.ts.map +1 -1
  198. package/dist/app/modules/authentication/repositories/session.d.ts +5 -2
  199. package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
  200. package/dist/app/modules/authentication/repositories/session.mjs +63 -0
  201. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  202. package/dist/app/modules/config/constants.d.ts +4 -0
  203. package/dist/app/modules/config/constants.d.ts.map +1 -1
  204. package/dist/app/modules/config/constants.mjs +4 -0
  205. package/dist/app/modules/config/constants.mjs.map +1 -1
  206. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  207. package/dist/app/modules/config/normalize.mjs +6 -1
  208. package/dist/app/modules/config/normalize.mjs.map +1 -1
  209. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  210. package/dist/app/modules/config/read/env.mjs +8 -0
  211. package/dist/app/modules/config/read/env.mjs.map +1 -1
  212. package/dist/app/modules/config/types.d.ts +31 -2
  213. package/dist/app/modules/config/types.d.ts.map +1 -1
  214. package/dist/app/modules/config/validator.d.ts.map +1 -1
  215. package/dist/app/modules/config/validator.mjs +5 -0
  216. package/dist/app/modules/config/validator.mjs.map +1 -1
  217. package/dist/app/modules/database/module.d.ts +1 -0
  218. package/dist/app/modules/database/module.d.ts.map +1 -1
  219. package/dist/app/modules/database/module.mjs +19 -6
  220. package/dist/app/modules/database/module.mjs.map +1 -1
  221. package/dist/app/modules/database/repositories/bindings.d.ts +2 -0
  222. package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -1
  223. package/dist/app/modules/database/repositories/bindings.mjs +3 -1
  224. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  225. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  226. package/dist/app/modules/database/repositories/client/repository.mjs +10 -6
  227. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  228. package/dist/app/modules/database/repositories/helpers.d.ts +11 -0
  229. package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
  230. package/dist/app/modules/database/repositories/helpers.mjs +12 -1
  231. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  232. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  233. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +7 -5
  234. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  235. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  236. package/dist/app/modules/database/repositories/permission/repository.mjs +4 -3
  237. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  238. package/dist/app/modules/database/repositories/permission-provider/module.d.ts +2 -2
  239. package/dist/app/modules/database/repositories/permission-provider/module.d.ts.map +1 -1
  240. package/dist/app/modules/database/repositories/permission-provider/module.mjs +4 -3
  241. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  242. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  243. package/dist/app/modules/database/repositories/policy/repository.mjs +4 -3
  244. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  245. package/dist/app/modules/database/repositories/realm/repository.d.ts +1 -0
  246. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  247. package/dist/app/modules/database/repositories/realm/repository.mjs +20 -3
  248. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  249. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
  250. package/dist/app/modules/database/repositories/robot/repository.mjs +8 -6
  251. package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
  252. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  253. package/dist/app/modules/database/repositories/role/repository.mjs +4 -3
  254. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  255. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  256. package/dist/app/modules/database/repositories/role-attribute/repository.mjs +2 -1
  257. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  258. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  259. package/dist/app/modules/database/repositories/scope/repository.mjs +4 -3
  260. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  261. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  262. package/dist/app/modules/database/repositories/user/repository.mjs +8 -5
  263. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  264. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  265. package/dist/app/modules/database/repositories/user-attribute/repository.mjs +2 -1
  266. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  267. package/dist/app/modules/http/constants.d.ts +4 -2
  268. package/dist/app/modules/http/constants.d.ts.map +1 -1
  269. package/dist/app/modules/http/constants.mjs +4 -2
  270. package/dist/app/modules/http/constants.mjs.map +1 -1
  271. package/dist/app/modules/http/module.d.ts +10 -0
  272. package/dist/app/modules/http/module.d.ts.map +1 -1
  273. package/dist/app/modules/http/module.mjs +30 -0
  274. package/dist/app/modules/http/module.mjs.map +1 -1
  275. package/dist/app/modules/http/modules/controller.d.ts +6 -2
  276. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  277. package/dist/app/modules/http/modules/controller.mjs +75 -15
  278. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  279. package/dist/app/modules/http/modules/middleware.mjs +1 -1
  280. package/dist/app/modules/identity/repositories/client.mjs +2 -2
  281. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  282. package/dist/app/modules/identity/repositories/robot.mjs +2 -2
  283. package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
  284. package/dist/app/modules/identity/repositories/user.mjs +2 -2
  285. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  286. package/dist/app/modules/oauth2/constants.d.ts +2 -1
  287. package/dist/app/modules/oauth2/constants.d.ts.map +1 -1
  288. package/dist/app/modules/oauth2/constants.mjs +1 -0
  289. package/dist/app/modules/oauth2/constants.mjs.map +1 -1
  290. package/dist/app/modules/oauth2/module.d.ts.map +1 -1
  291. package/dist/app/modules/oauth2/module.mjs +10 -4
  292. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  293. package/dist/app/modules/oauth2/repositories/client/repository.mjs +2 -2
  294. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  295. package/dist/app/modules/oauth2/repositories/index.d.ts +1 -0
  296. package/dist/app/modules/oauth2/repositories/index.d.ts.map +1 -1
  297. package/dist/app/modules/oauth2/repositories/index.mjs +3 -1
  298. package/dist/app/modules/oauth2/repositories/session-token/index.d.ts +2 -0
  299. package/dist/app/modules/oauth2/repositories/session-token/index.d.ts.map +1 -0
  300. package/dist/app/modules/oauth2/repositories/session-token/index.mjs +5 -0
  301. package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts +17 -0
  302. package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts.map +1 -0
  303. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +63 -0
  304. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -0
  305. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  306. package/dist/app/modules/provisioning/module.mjs +0 -1
  307. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  308. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  309. package/dist/app/modules/provisioning/sources/default/module.mjs +15 -56
  310. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  311. package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
  312. package/dist/app/modules/provisioning/sources/file/module.mjs +2 -1
  313. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  314. package/dist/cli/commands/migration.d.ts.map +1 -1
  315. package/dist/cli/commands/migration.mjs +12 -4
  316. package/dist/cli/commands/migration.mjs.map +1 -1
  317. package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
  318. package/dist/components/oauth2-cleaner/module.mjs +3 -0
  319. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  320. package/dist/core/authentication/index.mjs +2 -1
  321. package/dist/core/authentication/session/index.mjs +2 -1
  322. package/dist/core/authentication/session/module.d.ts +1 -0
  323. package/dist/core/authentication/session/module.d.ts.map +1 -1
  324. package/dist/core/authentication/session/module.mjs +3 -0
  325. package/dist/core/authentication/session/module.mjs.map +1 -1
  326. package/dist/core/authentication/session/types.d.ts +34 -0
  327. package/dist/core/authentication/session/types.d.ts.map +1 -1
  328. package/dist/core/authentication/session/types.mjs +18 -1
  329. package/dist/core/authentication/session/types.mjs.map +1 -0
  330. package/dist/core/entities/client/service.mjs +25 -7
  331. package/dist/core/entities/client/service.mjs.map +1 -1
  332. package/dist/core/entities/client/web-client.d.ts +5 -3
  333. package/dist/core/entities/client/web-client.d.ts.map +1 -1
  334. package/dist/core/entities/client/web-client.mjs +8 -4
  335. package/dist/core/entities/client/web-client.mjs.map +1 -1
  336. package/dist/core/entities/client-permission/service.d.ts +7 -4
  337. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  338. package/dist/core/entities/client-permission/service.mjs +59 -19
  339. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  340. package/dist/core/entities/client-role/service.d.ts +3 -2
  341. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  342. package/dist/core/entities/client-role/service.mjs +12 -5
  343. package/dist/core/entities/client-role/service.mjs.map +1 -1
  344. package/dist/core/entities/client-scope/service.d.ts +3 -2
  345. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  346. package/dist/core/entities/client-scope/service.mjs +12 -5
  347. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  348. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +7 -4
  349. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  350. package/dist/core/entities/identity-provider-role-mapping/service.mjs +29 -6
  351. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  352. package/dist/core/entities/index.d.ts +1 -0
  353. package/dist/core/entities/index.d.ts.map +1 -1
  354. package/dist/core/entities/index.mjs +3 -1
  355. package/dist/core/entities/permission/service.d.ts +3 -5
  356. package/dist/core/entities/permission/service.d.ts.map +1 -1
  357. package/dist/core/entities/permission/service.mjs +30 -24
  358. package/dist/core/entities/permission/service.mjs.map +1 -1
  359. package/dist/core/entities/permission-policy/service.d.ts +3 -2
  360. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  361. package/dist/core/entities/permission-policy/service.mjs +12 -5
  362. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  363. package/dist/core/entities/policy/service.d.ts.map +1 -1
  364. package/dist/core/entities/policy/service.mjs +16 -7
  365. package/dist/core/entities/policy/service.mjs.map +1 -1
  366. package/dist/core/entities/realm/service.mjs +4 -4
  367. package/dist/core/entities/realm/service.mjs.map +1 -1
  368. package/dist/core/entities/realm/types.d.ts +13 -0
  369. package/dist/core/entities/realm/types.d.ts.map +1 -1
  370. package/dist/core/entities/robot/service.d.ts.map +1 -1
  371. package/dist/core/entities/robot/service.mjs +29 -11
  372. package/dist/core/entities/robot/service.mjs.map +1 -1
  373. package/dist/core/entities/robot-permission/service.d.ts +7 -4
  374. package/dist/core/entities/robot-permission/service.d.ts.map +1 -1
  375. package/dist/core/entities/robot-permission/service.mjs +59 -19
  376. package/dist/core/entities/robot-permission/service.mjs.map +1 -1
  377. package/dist/core/entities/robot-role/service.d.ts +3 -2
  378. package/dist/core/entities/robot-role/service.d.ts.map +1 -1
  379. package/dist/core/entities/robot-role/service.mjs +12 -5
  380. package/dist/core/entities/robot-role/service.mjs.map +1 -1
  381. package/dist/core/entities/role/service.d.ts.map +1 -1
  382. package/dist/core/entities/role/service.mjs +16 -7
  383. package/dist/core/entities/role/service.mjs.map +1 -1
  384. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  385. package/dist/core/entities/role-attribute/service.mjs +24 -6
  386. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  387. package/dist/core/entities/role-permission/service.d.ts +7 -4
  388. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  389. package/dist/core/entities/role-permission/service.mjs +61 -21
  390. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  391. package/dist/core/entities/scope/service.d.ts.map +1 -1
  392. package/dist/core/entities/scope/service.mjs +16 -7
  393. package/dist/core/entities/scope/service.mjs.map +1 -1
  394. package/dist/core/entities/session/index.d.ts +3 -0
  395. package/dist/core/entities/session/index.d.ts.map +1 -0
  396. package/dist/core/entities/session/index.mjs +5 -0
  397. package/dist/core/entities/session/service.d.ts +27 -0
  398. package/dist/core/entities/session/service.d.ts.map +1 -0
  399. package/dist/core/entities/session/service.mjs +151 -0
  400. package/dist/core/entities/session/service.mjs.map +1 -0
  401. package/dist/core/entities/session/types.d.ts +48 -0
  402. package/dist/core/entities/session/types.d.ts.map +1 -0
  403. package/dist/core/entities/session/types.mjs +4 -0
  404. package/dist/core/entities/user/service.d.ts +1 -0
  405. package/dist/core/entities/user/service.d.ts.map +1 -1
  406. package/dist/core/entities/user/service.mjs +29 -11
  407. package/dist/core/entities/user/service.mjs.map +1 -1
  408. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  409. package/dist/core/entities/user-attribute/service.mjs +18 -6
  410. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  411. package/dist/core/entities/user-permission/service.d.ts +7 -4
  412. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  413. package/dist/core/entities/user-permission/service.mjs +59 -19
  414. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  415. package/dist/core/entities/user-role/service.d.ts +3 -2
  416. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  417. package/dist/core/entities/user-role/service.mjs +12 -5
  418. package/dist/core/entities/user-role/service.mjs.map +1 -1
  419. package/dist/core/identity/index.mjs +2 -1
  420. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  421. package/dist/core/identity/password-recovery/service.mjs +2 -1
  422. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  423. package/dist/core/identity/password-recovery/types.d.ts +1 -0
  424. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  425. package/dist/core/identity/permission/checker/service.d.ts.map +1 -1
  426. package/dist/core/identity/permission/checker/service.mjs +12 -9
  427. package/dist/core/identity/permission/checker/service.mjs.map +1 -1
  428. package/dist/core/identity/permission/index.d.ts +1 -0
  429. package/dist/core/identity/permission/index.d.ts.map +1 -1
  430. package/dist/core/identity/permission/index.mjs +2 -1
  431. package/dist/core/identity/permission/junction-grant.d.ts +49 -0
  432. package/dist/core/identity/permission/junction-grant.d.ts.map +1 -0
  433. package/dist/core/identity/permission/junction-grant.mjs +57 -0
  434. package/dist/core/identity/permission/junction-grant.mjs.map +1 -0
  435. package/dist/core/identity/permission/module.d.ts +2 -3
  436. package/dist/core/identity/permission/module.d.ts.map +1 -1
  437. package/dist/core/identity/permission/module.mjs +52 -14
  438. package/dist/core/identity/permission/module.mjs.map +1 -1
  439. package/dist/core/identity/permission/types.d.ts +22 -2
  440. package/dist/core/identity/permission/types.d.ts.map +1 -1
  441. package/dist/core/identity/policy/checker/service.d.ts.map +1 -1
  442. package/dist/core/identity/policy/checker/service.mjs +6 -5
  443. package/dist/core/identity/policy/checker/service.mjs.map +1 -1
  444. package/dist/core/identity/provider/authentication/presets/facebook.d.ts.map +1 -1
  445. package/dist/core/identity/provider/authentication/presets/facebook.mjs +2 -1
  446. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  447. package/dist/core/identity/provider/authentication/presets/github.d.ts.map +1 -1
  448. package/dist/core/identity/provider/authentication/presets/github.mjs +2 -1
  449. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  450. package/dist/core/identity/provider/authentication/presets/google.d.ts.map +1 -1
  451. package/dist/core/identity/provider/authentication/presets/google.mjs +2 -1
  452. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  453. package/dist/core/identity/provider/authentication/presets/instagram.d.ts.map +1 -1
  454. package/dist/core/identity/provider/authentication/presets/instagram.mjs +2 -1
  455. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  456. package/dist/core/identity/provider/authentication/presets/paypal.d.ts.map +1 -1
  457. package/dist/core/identity/provider/authentication/presets/paypal.mjs +2 -1
  458. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  459. package/dist/core/identity/provider/authentication/protocols/oauth2/module.d.ts.map +1 -1
  460. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +7 -2
  461. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  462. package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts +2 -0
  463. package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts.map +1 -1
  464. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs +5 -0
  465. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
  466. package/dist/core/identity/registration/service.d.ts.map +1 -1
  467. package/dist/core/identity/registration/service.mjs +9 -6
  468. package/dist/core/identity/registration/service.mjs.map +1 -1
  469. package/dist/core/identity/registration/types.d.ts +1 -0
  470. package/dist/core/identity/registration/types.d.ts.map +1 -1
  471. package/dist/core/identity/resolver/module.d.ts +7 -0
  472. package/dist/core/identity/resolver/module.d.ts.map +1 -1
  473. package/dist/core/identity/resolver/module.mjs +7 -1
  474. package/dist/core/identity/resolver/module.mjs.map +1 -1
  475. package/dist/core/index.mjs +11 -2
  476. package/dist/core/oauth2/authorization/code/index.mjs +1 -0
  477. package/dist/core/oauth2/authorization/code/issuer/module.d.ts +0 -1
  478. package/dist/core/oauth2/authorization/code/issuer/module.d.ts.map +1 -1
  479. package/dist/core/oauth2/authorization/code/issuer/module.mjs +7 -7
  480. package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
  481. package/dist/core/oauth2/authorization/code/issuer/types.d.ts +11 -2
  482. package/dist/core/oauth2/authorization/code/issuer/types.d.ts.map +1 -1
  483. package/dist/core/oauth2/authorization/code/verifier/module.d.ts.map +1 -1
  484. package/dist/core/oauth2/authorization/code/verifier/module.mjs +1 -0
  485. package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
  486. package/dist/core/oauth2/authorization/code/verifier/types.d.ts +1 -0
  487. package/dist/core/oauth2/authorization/code/verifier/types.d.ts.map +1 -1
  488. package/dist/core/oauth2/authorization/code-request/validator.d.ts.map +1 -1
  489. package/dist/core/oauth2/authorization/code-request/validator.mjs +19 -5
  490. package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
  491. package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
  492. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +13 -10
  493. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  494. package/dist/core/oauth2/authorization/code-request/verifier/types.d.ts +7 -0
  495. package/dist/core/oauth2/authorization/code-request/verifier/types.d.ts.map +1 -1
  496. package/dist/core/oauth2/authorization/helpers.d.ts +2 -1
  497. package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
  498. package/dist/core/oauth2/authorization/helpers.mjs +19 -2
  499. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  500. package/dist/core/oauth2/authorization/module.d.ts +6 -7
  501. package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
  502. package/dist/core/oauth2/authorization/module.mjs +24 -38
  503. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  504. package/dist/core/oauth2/authorization/types.d.ts +15 -7
  505. package/dist/core/oauth2/authorization/types.d.ts.map +1 -1
  506. package/dist/core/oauth2/client/grant-type.d.ts +9 -0
  507. package/dist/core/oauth2/client/grant-type.d.ts.map +1 -0
  508. package/dist/core/oauth2/client/grant-type.mjs +18 -0
  509. package/dist/core/oauth2/client/grant-type.mjs.map +1 -0
  510. package/dist/core/oauth2/client/index.d.ts +1 -0
  511. package/dist/core/oauth2/client/index.d.ts.map +1 -1
  512. package/dist/core/oauth2/client/index.mjs +2 -1
  513. package/dist/core/oauth2/end-session/index.d.ts +4 -0
  514. package/dist/core/oauth2/end-session/index.d.ts.map +1 -0
  515. package/dist/core/oauth2/end-session/index.mjs +6 -0
  516. package/dist/core/oauth2/end-session/service.d.ts +30 -0
  517. package/dist/core/oauth2/end-session/service.d.ts.map +1 -0
  518. package/dist/core/oauth2/end-session/service.mjs +117 -0
  519. package/dist/core/oauth2/end-session/service.mjs.map +1 -0
  520. package/dist/core/oauth2/end-session/types.d.ts +55 -0
  521. package/dist/core/oauth2/end-session/types.d.ts.map +1 -0
  522. package/dist/core/oauth2/end-session/types.mjs +4 -0
  523. package/dist/core/oauth2/end-session/validator.d.ts +6 -0
  524. package/dist/core/oauth2/end-session/validator.d.ts.map +1 -0
  525. package/dist/core/oauth2/end-session/validator.mjs +23 -0
  526. package/dist/core/oauth2/end-session/validator.mjs.map +1 -0
  527. package/dist/core/oauth2/grant-types/authorize.d.ts +19 -2
  528. package/dist/core/oauth2/grant-types/authorize.d.ts.map +1 -1
  529. package/dist/core/oauth2/grant-types/authorize.mjs +53 -10
  530. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  531. package/dist/core/oauth2/grant-types/refresh-token.d.ts +21 -2
  532. package/dist/core/oauth2/grant-types/refresh-token.d.ts.map +1 -1
  533. package/dist/core/oauth2/grant-types/refresh-token.mjs +55 -9
  534. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  535. package/dist/core/oauth2/grant-types/types.d.ts +22 -2
  536. package/dist/core/oauth2/grant-types/types.d.ts.map +1 -1
  537. package/dist/core/oauth2/index.d.ts +2 -0
  538. package/dist/core/oauth2/index.d.ts.map +1 -1
  539. package/dist/core/oauth2/index.mjs +7 -3
  540. package/dist/core/oauth2/session-token/index.d.ts +2 -0
  541. package/dist/core/oauth2/session-token/index.d.ts.map +1 -0
  542. package/dist/core/oauth2/session-token/index.mjs +4 -0
  543. package/dist/core/oauth2/session-token/types.d.ts +70 -0
  544. package/dist/core/oauth2/session-token/types.d.ts.map +1 -0
  545. package/dist/core/oauth2/session-token/types.mjs +4 -0
  546. package/dist/core/oauth2/token/issuer/access/module.d.ts +3 -1
  547. package/dist/core/oauth2/token/issuer/access/module.d.ts.map +1 -1
  548. package/dist/core/oauth2/token/issuer/access/module.mjs +12 -1
  549. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  550. package/dist/core/oauth2/token/issuer/open-id/module.d.ts.map +1 -1
  551. package/dist/core/oauth2/token/issuer/open-id/module.mjs +1 -1
  552. package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
  553. package/dist/core/oauth2/token/issuer/refresh/module.d.ts +3 -1
  554. package/dist/core/oauth2/token/issuer/refresh/module.d.ts.map +1 -1
  555. package/dist/core/oauth2/token/issuer/refresh/module.mjs +12 -1
  556. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  557. package/dist/core/oauth2/token/revoker/module.d.ts +3 -1
  558. package/dist/core/oauth2/token/revoker/module.d.ts.map +1 -1
  559. package/dist/core/oauth2/token/revoker/module.mjs +4 -1
  560. package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
  561. package/dist/core/oauth2/token/verifier/module.d.ts.map +1 -1
  562. package/dist/core/oauth2/token/verifier/module.mjs +4 -4
  563. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  564. package/dist/core/oauth2/token/verifier/types.d.ts +6 -0
  565. package/dist/core/oauth2/token/verifier/types.d.ts.map +1 -1
  566. package/dist/core/provisioning/entities/client/relations-validator.d.ts.map +1 -1
  567. package/dist/core/provisioning/entities/client/relations-validator.mjs +3 -2
  568. package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
  569. package/dist/core/provisioning/entities/index.d.ts +1 -0
  570. package/dist/core/provisioning/entities/index.d.ts.map +1 -1
  571. package/dist/core/provisioning/entities/index.mjs +5 -1
  572. package/dist/core/provisioning/entities/permission/index.d.ts +1 -0
  573. package/dist/core/provisioning/entities/permission/index.d.ts.map +1 -1
  574. package/dist/core/provisioning/entities/permission/index.mjs +2 -1
  575. package/dist/core/provisioning/entities/permission/relations-validator.d.ts +6 -0
  576. package/dist/core/provisioning/entities/permission/relations-validator.d.ts.map +1 -0
  577. package/dist/core/provisioning/entities/permission/relations-validator.mjs +17 -0
  578. package/dist/core/provisioning/entities/permission/relations-validator.mjs.map +1 -0
  579. package/dist/core/provisioning/entities/permission/validator.d.ts.map +1 -1
  580. package/dist/core/provisioning/entities/permission/validator.mjs +3 -0
  581. package/dist/core/provisioning/entities/permission/validator.mjs.map +1 -1
  582. package/dist/core/provisioning/entities/policy/index.d.ts +1 -0
  583. package/dist/core/provisioning/entities/policy/index.d.ts.map +1 -1
  584. package/dist/core/provisioning/entities/policy/index.mjs +2 -1
  585. package/dist/core/provisioning/entities/policy/validator.d.ts +6 -0
  586. package/dist/core/provisioning/entities/policy/validator.d.ts.map +1 -0
  587. package/dist/core/provisioning/entities/policy/validator.mjs +26 -0
  588. package/dist/core/provisioning/entities/policy/validator.mjs.map +1 -0
  589. package/dist/core/provisioning/entities/realm/relations-validator.d.ts.map +1 -1
  590. package/dist/core/provisioning/entities/realm/relations-validator.mjs +9 -52
  591. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  592. package/dist/core/provisioning/entities/role/relations-validator.d.ts.map +1 -1
  593. package/dist/core/provisioning/entities/role/relations-validator.mjs +4 -0
  594. package/dist/core/provisioning/entities/role/relations-validator.mjs.map +1 -1
  595. package/dist/core/provisioning/entities/role/types.d.ts +8 -5
  596. package/dist/core/provisioning/entities/role/types.d.ts.map +1 -1
  597. package/dist/core/provisioning/entities/root/validator.d.ts.map +1 -1
  598. package/dist/core/provisioning/entities/root/validator.mjs +11 -26
  599. package/dist/core/provisioning/entities/root/validator.mjs.map +1 -1
  600. package/dist/core/provisioning/entities/utils.d.ts +10 -0
  601. package/dist/core/provisioning/entities/utils.d.ts.map +1 -0
  602. package/dist/core/provisioning/entities/utils.mjs +29 -0
  603. package/dist/core/provisioning/entities/utils.mjs.map +1 -0
  604. package/dist/core/provisioning/index.mjs +4 -1
  605. package/dist/core/provisioning/synchronizer/base.d.ts +3 -0
  606. package/dist/core/provisioning/synchronizer/base.d.ts.map +1 -1
  607. package/dist/core/provisioning/synchronizer/base.mjs +3 -0
  608. package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
  609. package/dist/core/provisioning/synchronizer/client/module.d.ts.map +1 -1
  610. package/dist/core/provisioning/synchronizer/client/module.mjs +1 -0
  611. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  612. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
  613. package/dist/core/provisioning/synchronizer/entity-resolver.mjs +3 -0
  614. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  615. package/dist/core/provisioning/synchronizer/index.mjs +1 -0
  616. package/dist/core/provisioning/synchronizer/permission/module.d.ts.map +1 -1
  617. package/dist/core/provisioning/synchronizer/permission/module.mjs +2 -1
  618. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  619. package/dist/core/provisioning/synchronizer/policy/module.d.ts +2 -0
  620. package/dist/core/provisioning/synchronizer/policy/module.d.ts.map +1 -1
  621. package/dist/core/provisioning/synchronizer/policy/module.mjs +19 -1
  622. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  623. package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
  624. package/dist/core/provisioning/synchronizer/realm/module.mjs +1 -0
  625. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  626. package/dist/core/provisioning/synchronizer/robot/module.d.ts.map +1 -1
  627. package/dist/core/provisioning/synchronizer/robot/module.mjs +1 -0
  628. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +1 -1
  629. package/dist/core/provisioning/synchronizer/role/module.d.ts +2 -3
  630. package/dist/core/provisioning/synchronizer/role/module.d.ts.map +1 -1
  631. package/dist/core/provisioning/synchronizer/role/module.mjs +14 -20
  632. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  633. package/dist/core/provisioning/synchronizer/role/types.d.ts +1 -2
  634. package/dist/core/provisioning/synchronizer/role/types.d.ts.map +1 -1
  635. package/dist/core/provisioning/synchronizer/scope/module.d.ts.map +1 -1
  636. package/dist/core/provisioning/synchronizer/scope/module.mjs +1 -0
  637. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  638. package/dist/core/provisioning/synchronizer/user/module.d.ts.map +1 -1
  639. package/dist/core/provisioning/synchronizer/user/module.mjs +1 -0
  640. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  641. package/dist/core/security/policy/evaluator.d.ts +4 -4
  642. package/dist/core/security/policy/evaluator.d.ts.map +1 -1
  643. package/dist/core/security/policy/evaluator.mjs +19 -18
  644. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  645. package/dist/index.mjs +17 -12
  646. package/dist/swagger.json +585 -23
  647. package/dist/ui/client/.vite/ssr-manifest.json +1981 -577
  648. package/dist/ui/client/assets/index-CP9HCHoS.js +127 -0
  649. package/dist/ui/client/assets/index-VM4JXBXw.css +2 -0
  650. package/dist/ui/client/index.html +2 -2
  651. package/dist/ui/server/assets/{multipart-parser-Dn2Ly9xU.js → multipart-parser-BCMy8Xwv.js} +11 -1
  652. package/dist/ui/server/assets/{multipart-parser-DyM9gi59.js → multipart-parser-BVY8pIV2.js} +11 -1
  653. package/dist/ui/server/server.js +21503 -11128
  654. package/package.json +38 -36
  655. package/dist/ui/client/assets/index-BFXs98mu.js +0 -102
  656. package/dist/ui/client/assets/index-C_-HM1P-.css +0 -2
@@ -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","afterRemove","DELETED","queryResultCache","remove","keys","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);\n }\n\n async afterRemove(event: RemoveEvent<T>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await this.dropCacheKeys(event.connection, event.entity);\n\n await this.publish(EntityDefaultEventName.DELETED, event.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(event: `${EntityDefaultEventName}`, data: T) : 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 });\n }\n}\n"],"mappings":";;;;;AAwBA,SAAgBG,wBACZC,MACAC,UAAqD;CAErD,QAAQC,SAAAA;EACJ,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOR,uBAAuBG,MAAMK,EAAAA,EAAI,CAAA;EAGxD,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,MAAM;CACnE;CAEA,MAAMS,YAAYV,OAAqC;EACnD,IAAI,CAACA,MAAMC,QACP;EAGJ,MAAM,KAAKG,cAAcJ,MAAMK,YAAYL,MAAMC,MAAM;EAEvD,MAAM,KAAKK,QAAQ/B,uBAAuBoC,SAASX,MAAMC,MAAM;CACnE;CAEA,MAAgBG,cAAcC,YAAwBxB,MAAyB;EAC3E,IAAI,CAAC,KAAKa,IAAIQ,SAAS,CAACG,WAAWO,kBAC/B;EAGJ,MAAMP,WAAWO,iBAAiBC,OAAO,KAAKnB,IAAIQ,MAAMY,KAAKjC,IAAAA,CAAAA;CACjE;CAEA,MAAgByB,QAAQN,OAAoCnB,MAAyB;EACjF,IAAI,CAAC,KAAKc,WACN;EAGJ,MAAM,KAAKA,UAAUoB,YAAY;GAC7BC,SAAS;IACLrC,MAAM,KAAKe,IAAIf;IACfqB;IACAnB;GACJ;GACAC,cAAc,KAAKY,IAAIZ,aAAaD,IAAAA;EACxC,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","afterUpdate","UPDATED","afterRemove","databaseEntity","DELETED","queryResultCache","remove","keys","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);\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(event: `${EntityDefaultEventName}`, data: T) : 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 });\n }\n}\n"],"mappings":";;;;;AAwBA,SAAgBG,wBACZC,MACAC,UAAqD;CAErD,QAAQC,SAAAA;EACJ,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOR,uBAAuBG,MAAMK,EAAAA,EAAI,CAAA;EAGxD,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,MAAM;CACnE;CAEA,MAAMS,YAAYV,OAAqC;EAInD,MAAMC,SAASD,MAAMW,kBAAkBX,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,QAAQN,OAAoCnB,MAAyB;EACjF,IAAI,CAAC,KAAKc,WACN;EAGJ,MAAM,KAAKA,UAAUqB,YAAY;GAC7BC,SAAS;IACLtC,MAAM,KAAKe,IAAIf;IACfqB;IACAnB;GACJ;GACAC,cAAc,KAAKY,IAAIZ,aAAaD,IAAAA;EACxC,CAAA;CACJ;AACJ"}
@@ -2,8 +2,9 @@ import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
4
  import { HTTPOAuth2Authorizer } from "./oauth2/authorization/module.mjs";
5
- import { extractClientCredentialsFromRequest } from "./oauth2/grant-types/utils/credentials.mjs";
5
+ import { extractClientCredentialsFromRequest, readStringField } from "./oauth2/grant-types/utils/credentials.mjs";
6
6
  import { guessOauth2GrantTypeByRequest } from "./oauth2/grant-types/utils/guess.mjs";
7
+ import { readRealmHint } from "./oauth2/grant-types/utils/realm.mjs";
7
8
  import { HTTPOAuth2AuthorizeGrant } from "./oauth2/grant-types/authorize.mjs";
8
9
  import { HTTPClientCredentialsGrant } from "./oauth2/grant-types/client-credentials.mjs";
9
10
  import { HTTPOAuth2IdentityGrantType } from "./oauth2/grant-types/identity.mjs";
@@ -11,4 +12,4 @@ import { HTTPPasswordGrant } from "./oauth2/grant-types/password.mjs";
11
12
  import { HTTPOAuth2RefreshTokenGrant } from "./oauth2/grant-types/refresh_token.mjs";
12
13
  import { HTTPRobotCredentialsGrant } from "./oauth2/grant-types/robot-credentials.mjs";
13
14
  import "./oauth2/index.mjs";
14
- export { HTTPClientCredentialsGrant, HTTPOAuth2AuthorizeGrant, HTTPOAuth2Authorizer, HTTPOAuth2IdentityGrantType, HTTPOAuth2RefreshTokenGrant, HTTPPasswordGrant, HTTPRobotCredentialsGrant, extractClientCredentialsFromRequest, guessOauth2GrantTypeByRequest };
15
+ export { HTTPClientCredentialsGrant, HTTPOAuth2AuthorizeGrant, HTTPOAuth2Authorizer, HTTPOAuth2IdentityGrantType, HTTPOAuth2RefreshTokenGrant, HTTPPasswordGrant, HTTPRobotCredentialsGrant, extractClientCredentialsFromRequest, guessOauth2GrantTypeByRequest, readRealmHint, readStringField };
@@ -6,6 +6,7 @@ import { OAuth2Authorization } from "../../../../../core/oauth2/authorization/mo
6
6
  import "../../../../../core/index.mjs";
7
7
  import { useRequestIdentityOrFail } from "../../../request/helpers/identity.mjs";
8
8
  import { readFromLocations } from "../../../request/helpers/locations.mjs";
9
+ import { useRequestSessionId } from "../../../request/helpers/session-id.mjs";
9
10
  import "../../../request/index.mjs";
10
11
  //#region src/adapters/http/adapters/oauth2/authorization/module.ts
11
12
  var HTTPOAuth2Authorizer = class extends OAuth2Authorization {
@@ -20,7 +21,7 @@ var HTTPOAuth2Authorizer = class extends OAuth2Authorization {
20
21
  const codeRequestValidated = await this.validateWithRequest(event);
21
22
  const { data } = await this.codeRequestVerifier.verify(codeRequestValidated);
22
23
  const identity = useRequestIdentityOrFail(event);
23
- return this.authorize(data, identity.raw);
24
+ return this.authorize(data, identity.raw, { sessionId: useRequestSessionId(event) });
24
25
  }
25
26
  /**
26
27
  * Validate authorization request.
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["OAuth2Authorization","OAuth2AuthorizationCodeRequestValidator","readFromLocations","useRequestIdentityOrFail","HTTPOAuth2Authorizer","codeRequestVerifier","requestValidator","ctx","authorizeWithRequest","event","codeRequestValidated","validateWithRequest","data","verify","identity","authorize","raw","run"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/authorization/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IAppEvent } from 'routup';\nimport type { OAuth2AuthorizationCodeRequest } from '@authup/core-kit';\nimport type { IOAuth2AuthorizationCodeRequestVerifier, OAuth2AuthorizationResult } from '../../../../../core/index.ts';\nimport { OAuth2Authorization, OAuth2AuthorizationCodeRequestValidator } from '../../../../../core/index.ts';\nimport { readFromLocations, useRequestIdentityOrFail } from '../../../request/index.ts';\nimport type { HTTPOAuth2AuthorizationManagerContext } from './types.ts';\n\nexport class HTTPOAuth2Authorizer extends OAuth2Authorization {\n protected codeRequestVerifier : IOAuth2AuthorizationCodeRequestVerifier;\n\n protected requestValidator : OAuth2AuthorizationCodeRequestValidator;\n\n constructor(ctx: HTTPOAuth2AuthorizationManagerContext) {\n super(ctx);\n\n this.codeRequestVerifier = ctx.codeRequestVerifier;\n\n this.requestValidator = new OAuth2AuthorizationCodeRequestValidator();\n }\n\n async authorizeWithRequest(event: IAppEvent) : Promise<OAuth2AuthorizationResult> {\n const codeRequestValidated = await this.validateWithRequest(event);\n\n const { data } = await this.codeRequestVerifier.verify(codeRequestValidated);\n\n const identity = useRequestIdentityOrFail(event);\n\n return this.authorize(data, identity.raw);\n }\n\n /**\n * Validate authorization request.\n *\n * @throws OAuth2Error\n */\n async validateWithRequest(\n event: IAppEvent,\n ) : Promise<OAuth2AuthorizationCodeRequest> {\n const data = await readFromLocations(event, ['body', 'query']);\n return this.requestValidator.run(data);\n }\n}\n"],"mappings":";;;;;;;;;;AAcA,IAAaI,uBAAb,cAA0CJ,oBAAAA;CAC5BK;CAEAC;CAEV,YAAYC,KAA4C;EACpD,MAAMA,GAAAA;EAEN,KAAKF,sBAAsBE,IAAIF;EAE/B,KAAKC,mBAAmB,IAAIL,wCAAAA;CAChC;CAEA,MAAMO,qBAAqBC,OAAuD;EAC9E,MAAMC,uBAAuB,MAAM,KAAKC,oBAAoBF,KAAAA;EAE5D,MAAM,EAAEG,SAAS,MAAM,KAAKP,oBAAoBQ,OAAOH,oBAAAA;EAEvD,MAAMI,WAAWX,yBAAyBM,KAAAA;EAE1C,OAAO,KAAKM,UAAUH,MAAME,SAASE,GAAG;CAC5C;;;;;IAOA,MAAML,oBACFF,OACwC;EACxC,MAAMG,OAAO,MAAMV,kBAAkBO,OAAO,CAAC,QAAQ,OAAA,CAAQ;EAC7D,OAAO,KAAKH,iBAAiBW,IAAIL,IAAAA;CACrC;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["OAuth2Authorization","OAuth2AuthorizationCodeRequestValidator","readFromLocations","useRequestIdentityOrFail","useRequestSessionId","HTTPOAuth2Authorizer","codeRequestVerifier","requestValidator","ctx","authorizeWithRequest","event","codeRequestValidated","validateWithRequest","data","verify","identity","authorize","raw","sessionId","run"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/authorization/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IAppEvent } from 'routup';\nimport type { OAuth2AuthorizationCodeRequest } from '@authup/core-kit';\nimport type { IOAuth2AuthorizationCodeRequestVerifier, OAuth2AuthorizationResult } from '../../../../../core/index.ts';\nimport { OAuth2Authorization, OAuth2AuthorizationCodeRequestValidator } from '../../../../../core/index.ts';\nimport { readFromLocations, useRequestIdentityOrFail, useRequestSessionId } from '../../../request/index.ts';\nimport type { HTTPOAuth2AuthorizationManagerContext } from './types.ts';\n\nexport class HTTPOAuth2Authorizer extends OAuth2Authorization {\n protected codeRequestVerifier : IOAuth2AuthorizationCodeRequestVerifier;\n\n protected requestValidator : OAuth2AuthorizationCodeRequestValidator;\n\n constructor(ctx: HTTPOAuth2AuthorizationManagerContext) {\n super(ctx);\n\n this.codeRequestVerifier = ctx.codeRequestVerifier;\n\n this.requestValidator = new OAuth2AuthorizationCodeRequestValidator();\n }\n\n async authorizeWithRequest(event: IAppEvent) : Promise<OAuth2AuthorizationResult> {\n const codeRequestValidated = await this.validateWithRequest(event);\n\n const { data } = await this.codeRequestVerifier.verify(codeRequestValidated);\n\n const identity = useRequestIdentityOrFail(event);\n\n return this.authorize(data, identity.raw, { sessionId: useRequestSessionId(event) });\n }\n\n /**\n * Validate authorization request.\n *\n * @throws OAuth2Error\n */\n async validateWithRequest(\n event: IAppEvent,\n ) : Promise<OAuth2AuthorizationCodeRequest> {\n const data = await readFromLocations(event, ['body', 'query']);\n return this.requestValidator.run(data);\n }\n}\n"],"mappings":";;;;;;;;;;;AAcA,IAAaK,uBAAb,cAA0CL,oBAAAA;CAC5BM;CAEAC;CAEV,YAAYC,KAA4C;EACpD,MAAMA,GAAAA;EAEN,KAAKF,sBAAsBE,IAAIF;EAE/B,KAAKC,mBAAmB,IAAIN,wCAAAA;CAChC;CAEA,MAAMQ,qBAAqBC,OAAuD;EAC9E,MAAMC,uBAAuB,MAAM,KAAKC,oBAAoBF,KAAAA;EAE5D,MAAM,EAAEG,SAAS,MAAM,KAAKP,oBAAoBQ,OAAOH,oBAAAA;EAEvD,MAAMI,WAAWZ,yBAAyBO,KAAAA;EAE1C,OAAO,KAAKM,UAAUH,MAAME,SAASE,KAAK,EAAEC,WAAWd,oBAAoBM,KAAAA,EAAO,CAAA;CACtF;;;;;IAOA,MAAME,oBACFF,OACwC;EACxC,MAAMG,OAAO,MAAMX,kBAAkBQ,OAAO,CAAC,QAAQ,OAAA,CAAQ;EAC7D,OAAO,KAAKH,iBAAiBY,IAAIN,IAAAA;CACrC;AACJ"}
@@ -1,11 +1,12 @@
1
1
  import type { OAuth2TokenGrantResponse } from '@authup/specs';
2
2
  import type { IAppEvent } from 'routup';
3
3
  import { OAuth2AuthorizeGrant } from '../../../../../core/index.ts';
4
- import type { IOAuth2AuthorizationCodeVerifier, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
4
+ import type { IOAuth2AuthorizationCodeVerifier, IRealmRepository, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
5
5
  import type { HTTPOAuth2AuthorizeGrantContext, IHTTPOAuth2Grant } from './types.ts';
6
6
  export declare class HTTPOAuth2AuthorizeGrant extends OAuth2AuthorizeGrant implements IHTTPOAuth2Grant {
7
7
  protected codeVerifier: IOAuth2AuthorizationCodeVerifier;
8
8
  protected clientAuthenticator: OAuth2ClientAuthenticator;
9
+ protected realmRepository: IRealmRepository;
9
10
  constructor(ctx: HTTPOAuth2AuthorizeGrantContext);
10
11
  runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse>;
11
12
  protected pickStringParam(body: Record<string, any> | undefined, query: Record<string, any> | undefined, key: string): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/authorize.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EACR,gCAAgC,EAChC,yBAAyB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,+BAA+B,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGpF,qBAAa,wBAAyB,SAAQ,oBAAqB,YAAW,gBAAgB;IAC1F,SAAS,CAAC,YAAY,EAAG,gCAAgC,CAAC;IAE1D,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;gBAE9C,GAAG,EAAE,+BAA+B;IAO1C,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA6BzE,SAAS,CAAC,eAAe,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACtC,GAAG,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS;CAIxB"}
1
+ {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/authorize.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAA4B,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EACR,gCAAgC,EAChC,gBAAgB,EAChB,yBAAyB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,+BAA+B,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGpF,qBAAa,wBAAyB,SAAQ,oBAAqB,YAAW,gBAAgB;IAC1F,SAAS,CAAC,YAAY,EAAG,gCAAgC,CAAC;IAE1D,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,eAAe,EAAG,gBAAgB,CAAC;gBAEjC,GAAG,EAAE,+BAA+B;IAQ1C,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAgCzE,SAAS,CAAC,eAAe,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACtC,GAAG,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS;CAIxB"}
@@ -1,11 +1,13 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { assertClientGrantAllowed } from "../../../../../core/oauth2/client/grant-type.mjs";
4
5
  import { OAuth2AuthorizeGrant } from "../../../../../core/oauth2/grant-types/authorize.mjs";
5
6
  import "../../../../../core/index.mjs";
6
7
  import { extractClientCredentialsFromRequest } from "./utils/credentials.mjs";
8
+ import { readRealmHint } from "./utils/realm.mjs";
7
9
  import "./utils/index.mjs";
8
- import { OAuth2RequestError } from "@authup/specs";
10
+ import { OAuth2RequestError, OAuth2TokenGrant } from "@authup/specs";
9
11
  import { getRequestHeader, getRequestIP } from "routup";
10
12
  import { readRequestBody } from "@routup/basic/body";
11
13
  import { useRequestQuery } from "@routup/basic/query";
@@ -13,10 +15,12 @@ import { useRequestQuery } from "@routup/basic/query";
13
15
  var HTTPOAuth2AuthorizeGrant = class extends OAuth2AuthorizeGrant {
14
16
  codeVerifier;
15
17
  clientAuthenticator;
18
+ realmRepository;
16
19
  constructor(ctx) {
17
20
  super(ctx);
18
21
  this.codeVerifier = ctx.codeVerifier;
19
22
  this.clientAuthenticator = ctx.clientAuthenticator;
23
+ this.realmRepository = ctx.realmRepository;
20
24
  }
21
25
  async runWithRequest(event) {
22
26
  const body = await readRequestBody(event);
@@ -26,13 +30,15 @@ var HTTPOAuth2AuthorizeGrant = class extends OAuth2AuthorizeGrant {
26
30
  const codeVerifier = this.pickStringParam(body, query, "code_verifier");
27
31
  if (!code) throw OAuth2RequestError.malformed();
28
32
  const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);
29
- const realmId = this.pickStringParam(body, query, "realm_id");
30
- const client = await this.clientAuthenticator.authenticate(clientId, clientSecret, realmId);
33
+ const realm = await this.realmRepository.resolve(readRealmHint(body, query), true);
34
+ const client = await this.clientAuthenticator.authenticate(clientId, clientSecret, realm.id);
35
+ assertClientGrantAllowed(client, OAuth2TokenGrant.AUTHORIZATION_CODE);
31
36
  const entity = await this.codeVerifier.verify(code, {
32
37
  redirectUri,
33
38
  codeVerifier,
34
39
  clientId: client.id,
35
- clientIsPublic: !client.is_confidential
40
+ clientIsPublic: !client.is_confidential,
41
+ realmId: client.realm_id
36
42
  });
37
43
  return this.runWith(entity, {
38
44
  ipAddress: getRequestIP(event, { trustProxy: true }) ?? void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.mjs","names":["OAuth2RequestError","readRequestBody","useRequestQuery","getRequestHeader","getRequestIP","OAuth2AuthorizeGrant","extractClientCredentialsFromRequest","HTTPOAuth2AuthorizeGrant","codeVerifier","clientAuthenticator","ctx","runWithRequest","event","body","query","code","pickStringParam","redirectUri","malformed","clientId","clientSecret","realmId","client","authenticate","entity","verify","id","clientIsPublic","is_confidential","runWith","ipAddress","trustProxy","undefined","userAgent","key","value","length"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/authorize.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { OAuth2RequestError } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport { useRequestQuery } from '@routup/basic/query';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport { OAuth2AuthorizeGrant } from '../../../../../core/index.ts';\nimport type {\n IOAuth2AuthorizationCodeVerifier,\n OAuth2ClientAuthenticator,\n} from '../../../../../core/index.ts';\nimport type { HTTPOAuth2AuthorizeGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest } from './utils/index.ts';\n\nexport class HTTPOAuth2AuthorizeGrant extends OAuth2AuthorizeGrant implements IHTTPOAuth2Grant {\n protected codeVerifier : IOAuth2AuthorizationCodeVerifier;\n\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n constructor(ctx: HTTPOAuth2AuthorizeGrantContext) {\n super(ctx);\n\n this.codeVerifier = ctx.codeVerifier;\n this.clientAuthenticator = ctx.clientAuthenticator;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const body = await readRequestBody(event);\n const query = useRequestQuery(event);\n\n const code = this.pickStringParam(body, query, 'code');\n const redirectUri = this.pickStringParam(body, query, 'redirect_uri');\n const codeVerifier = this.pickStringParam(body, query, 'code_verifier');\n if (!code) {\n throw OAuth2RequestError.malformed();\n }\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n const realmId = this.pickStringParam(body, query, 'realm_id');\n\n const client = await this.clientAuthenticator.authenticate(clientId, clientSecret, realmId);\n\n const entity = await this.codeVerifier.verify(code, {\n redirectUri,\n codeVerifier,\n clientId: client.id,\n clientIsPublic: !client.is_confidential,\n });\n\n return this.runWith(entity, {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n });\n }\n\n protected pickStringParam(\n body: Record<string, any> | undefined,\n query: Record<string, any> | undefined,\n key: string,\n ): string | undefined {\n const value = body?.[key] ?? query?.[key];\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,IAAaO,2BAAb,cAA8CF,qBAAAA;CAChCG;CAEAC;CAEV,YAAYC,KAAsC;EAC9C,MAAMA,GAAAA;EAEN,KAAKF,eAAeE,IAAIF;EACxB,KAAKC,sBAAsBC,IAAID;CACnC;CAEA,MAAME,eAAeC,OAAqD;EACtE,MAAMC,OAAO,MAAMZ,gBAAgBW,KAAAA;EACnC,MAAME,QAAQZ,gBAAgBU,KAAAA;EAE9B,MAAMG,OAAO,KAAKC,gBAAgBH,MAAMC,OAAO,MAAA;EAC/C,MAAMG,cAAc,KAAKD,gBAAgBH,MAAMC,OAAO,cAAA;EACtD,MAAMN,eAAe,KAAKQ,gBAAgBH,MAAMC,OAAO,eAAA;EACvD,IAAI,CAACC,MACD,MAAMf,mBAAmBkB,UAAS;EAGtC,MAAM,EAAEC,UAAUC,iBAAiB,MAAMd,oCAAoCM,KAAAA;EAC7E,MAAMS,UAAU,KAAKL,gBAAgBH,MAAMC,OAAO,UAAA;EAElD,MAAMQ,SAAS,MAAM,KAAKb,oBAAoBc,aAAaJ,UAAUC,cAAcC,OAAAA;EAEnF,MAAMG,SAAS,MAAM,KAAKhB,aAAaiB,OAAOV,MAAM;GAChDE;GACAT;GACAW,UAAUG,OAAOI;GACjBC,gBAAgB,CAACL,OAAOM;EAC5B,CAAA;EAEA,OAAO,KAAKC,QAAQL,QAAQ;GACxBM,WAAW1B,aAAaQ,OAAO,EAAEmB,YAAY,KAAK,CAAA,KAAMC,KAAAA;GACxDC,WAAW9B,iBAAiBS,OAAO,YAAA,KAAiBoB,KAAAA;EACxD,CAAA;CACJ;CAEUhB,gBACNH,MACAC,OACAoB,KACkB;EAClB,MAAMC,QAAQtB,OAAOqB,QAAQpB,QAAQoB;EACrC,OAAO,OAAOC,UAAU,YAAYA,MAAMC,SAAS,IAAID,QAAQH,KAAAA;CACnE;AACJ"}
1
+ {"version":3,"file":"authorize.mjs","names":["OAuth2RequestError","OAuth2TokenGrant","readRequestBody","useRequestQuery","getRequestHeader","getRequestIP","OAuth2AuthorizeGrant","assertClientGrantAllowed","extractClientCredentialsFromRequest","readRealmHint","HTTPOAuth2AuthorizeGrant","codeVerifier","clientAuthenticator","realmRepository","ctx","runWithRequest","event","body","query","code","pickStringParam","redirectUri","malformed","clientId","clientSecret","realm","resolve","client","authenticate","id","AUTHORIZATION_CODE","entity","verify","clientIsPublic","is_confidential","realmId","realm_id","runWith","ipAddress","trustProxy","undefined","userAgent","key","value","length"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/authorize.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { OAuth2RequestError, OAuth2TokenGrant } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport { useRequestQuery } from '@routup/basic/query';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport { OAuth2AuthorizeGrant, assertClientGrantAllowed } from '../../../../../core/index.ts';\nimport type {\n IOAuth2AuthorizationCodeVerifier,\n IRealmRepository,\n OAuth2ClientAuthenticator,\n} from '../../../../../core/index.ts';\nimport type { HTTPOAuth2AuthorizeGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest, readRealmHint } from './utils/index.ts';\n\nexport class HTTPOAuth2AuthorizeGrant extends OAuth2AuthorizeGrant implements IHTTPOAuth2Grant {\n protected codeVerifier : IOAuth2AuthorizationCodeVerifier;\n\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n protected realmRepository : IRealmRepository;\n\n constructor(ctx: HTTPOAuth2AuthorizeGrantContext) {\n super(ctx);\n\n this.codeVerifier = ctx.codeVerifier;\n this.clientAuthenticator = ctx.clientAuthenticator;\n this.realmRepository = ctx.realmRepository;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const body = await readRequestBody(event);\n const query = useRequestQuery(event);\n\n const code = this.pickStringParam(body, query, 'code');\n const redirectUri = this.pickStringParam(body, query, 'redirect_uri');\n const codeVerifier = this.pickStringParam(body, query, 'code_verifier');\n if (!code) {\n throw OAuth2RequestError.malformed();\n }\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n const realm = await this.realmRepository.resolve(readRealmHint(body, query), true);\n\n const client = await this.clientAuthenticator.authenticate(clientId, clientSecret, realm.id);\n\n assertClientGrantAllowed(client, OAuth2TokenGrant.AUTHORIZATION_CODE);\n\n const entity = await this.codeVerifier.verify(code, {\n redirectUri,\n codeVerifier,\n clientId: client.id,\n clientIsPublic: !client.is_confidential,\n realmId: client.realm_id,\n });\n\n return this.runWith(entity, {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n });\n }\n\n protected pickStringParam(\n body: Record<string, any> | undefined,\n query: Record<string, any> | undefined,\n key: string,\n ): string | undefined {\n const value = body?.[key] ?? query?.[key];\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAsBA,IAAaU,2BAAb,cAA8CJ,qBAAAA;CAChCK;CAEAC;CAEAC;CAEV,YAAYC,KAAsC;EAC9C,MAAMA,GAAAA;EAEN,KAAKH,eAAeG,IAAIH;EACxB,KAAKC,sBAAsBE,IAAIF;EAC/B,KAAKC,kBAAkBC,IAAID;CAC/B;CAEA,MAAME,eAAeC,OAAqD;EACtE,MAAMC,OAAO,MAAMf,gBAAgBc,KAAAA;EACnC,MAAME,QAAQf,gBAAgBa,KAAAA;EAE9B,MAAMG,OAAO,KAAKC,gBAAgBH,MAAMC,OAAO,MAAA;EAC/C,MAAMG,cAAc,KAAKD,gBAAgBH,MAAMC,OAAO,cAAA;EACtD,MAAMP,eAAe,KAAKS,gBAAgBH,MAAMC,OAAO,eAAA;EACvD,IAAI,CAACC,MACD,MAAMnB,mBAAmBsB,UAAS;EAGtC,MAAM,EAAEC,UAAUC,iBAAiB,MAAMhB,oCAAoCQ,KAAAA;EAC7E,MAAMS,QAAQ,MAAM,KAAKZ,gBAAgBa,QAAQjB,cAAcQ,MAAMC,KAAAA,GAAQ,IAAA;EAE7E,MAAMS,SAAS,MAAM,KAAKf,oBAAoBgB,aAAaL,UAAUC,cAAcC,MAAMI,EAAE;EAE3FtB,yBAAyBoB,QAAQ1B,iBAAiB6B,kBAAkB;EAEpE,MAAMC,SAAS,MAAM,KAAKpB,aAAaqB,OAAOb,MAAM;GAChDE;GACAV;GACAY,UAAUI,OAAOE;GACjBI,gBAAgB,CAACN,OAAOO;GACxBC,SAASR,OAAOS;EACpB,CAAA;EAEA,OAAO,KAAKC,QAAQN,QAAQ;GACxBO,WAAWjC,aAAaW,OAAO,EAAEuB,YAAY,KAAK,CAAA,KAAMC,KAAAA;GACxDC,WAAWrC,iBAAiBY,OAAO,YAAA,KAAiBwB,KAAAA;EACxD,CAAA;CACJ;CAEUpB,gBACNH,MACAC,OACAwB,KACkB;EAClB,MAAMC,QAAQ1B,OAAOyB,QAAQxB,QAAQwB;EACrC,OAAO,OAAOC,UAAU,YAAYA,MAAMC,SAAS,IAAID,QAAQH,KAAAA;CACnE;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"client-credentials.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/client-credentials.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,uCAAuC,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG5F,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,gBAAgB;IAC9F,SAAS,CAAC,aAAa,EAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAEhD,GAAG,EAAE,uCAAuC;IAMlD,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAgB5E"}
1
+ {"version":3,"file":"client-credentials.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/client-credentials.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAA4B,MAAM,8BAA8B,CAAC;AAChG,OAAO,KAAK,EAAE,uCAAuC,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG5F,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,gBAAgB;IAC9F,SAAS,CAAC,aAAa,EAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAEhD,GAAG,EAAE,uCAAuC;IAMlD,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAkB5E"}
@@ -1,11 +1,13 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { assertClientGrantAllowed } from "../../../../../core/oauth2/client/grant-type.mjs";
4
5
  import { ClientCredentialsGrant } from "../../../../../core/oauth2/grant-types/client-credentials.mjs";
5
6
  import "../../../../../core/index.mjs";
6
7
  import { extractClientCredentialsFromRequest } from "./utils/credentials.mjs";
7
8
  import "./utils/index.mjs";
8
9
  import { EntityCredentialsInvalidError } from "@authup/errors";
10
+ import { OAuth2TokenGrant } from "@authup/specs";
9
11
  import { getRequestHeader, getRequestIP } from "routup";
10
12
  import { readRequestBody } from "@routup/basic/body";
11
13
  //#region src/adapters/http/adapters/oauth2/grant-types/client-credentials.ts
@@ -20,6 +22,7 @@ var HTTPClientCredentialsGrant = class extends ClientCredentialsGrant {
20
22
  const realmId = (await readRequestBody(event))?.realm_id;
21
23
  if (!clientId) throw new EntityCredentialsInvalidError({ entity: "client" });
22
24
  const client = await this.authenticator.authenticate(clientId, clientSecret ?? "", realmId);
25
+ assertClientGrantAllowed(client, OAuth2TokenGrant.CLIENT_CREDENTIALS);
23
26
  return this.runWith(client, {
24
27
  ipAddress: getRequestIP(event, { trustProxy: true }) ?? void 0,
25
28
  userAgent: getRequestHeader(event, "user-agent") ?? void 0
@@ -1 +1 @@
1
- {"version":3,"file":"client-credentials.mjs","names":["readRequestBody","EntityCredentialsInvalidError","getRequestHeader","getRequestIP","ClientCredentialsGrant","extractClientCredentialsFromRequest","HTTPClientCredentialsGrant","authenticator","ctx","runWithRequest","event","clientId","clientSecret","body","realmId","realm_id","entity","client","authenticate","runWith","ipAddress","trustProxy","undefined","userAgent"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/client-credentials.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport type { Client } from '@authup/core-kit';\nimport { EntityCredentialsInvalidError } from '@authup/errors';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport type { ICredentialsAuthenticator } from '../../../../../core/index.ts';\nimport { ClientCredentialsGrant } from '../../../../../core/index.ts';\nimport type { HTTPOAuth2ClientCredentialsGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest } from './utils/index.ts';\n\nexport class HTTPClientCredentialsGrant extends ClientCredentialsGrant implements IHTTPOAuth2Grant {\n protected authenticator : ICredentialsAuthenticator<Client>;\n\n constructor(ctx: HTTPOAuth2ClientCredentialsGrantContext) {\n super(ctx);\n\n this.authenticator = ctx.authenticator;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n const body = await readRequestBody(event);\n const realmId = body?.realm_id;\n\n if (!clientId) {\n throw new EntityCredentialsInvalidError({ entity: 'client' });\n }\n\n const client = await this.authenticator.authenticate(clientId, clientSecret ?? '', realmId);\n\n return this.runWith(client, {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAkBA,IAAaM,6BAAb,cAAgDF,uBAAAA;CAClCG;CAEV,YAAYC,KAA8C;EACtD,MAAMA,GAAAA;EAEN,KAAKD,gBAAgBC,IAAID;CAC7B;CAEA,MAAME,eAAeC,OAAqD;EACtE,MAAM,EAAEC,UAAUC,iBAAiB,MAAMP,oCAAoCK,KAAAA;EAE7E,MAAMI,WAAUD,MADGb,gBAAgBU,KAAAA,EAAAA,EACbK;EAEtB,IAAI,CAACJ,UACD,MAAM,IAAIV,8BAA8B,EAAEe,QAAQ,SAAS,CAAA;EAG/D,MAAMC,SAAS,MAAM,KAAKV,cAAcW,aAAaP,UAAUC,gBAAgB,IAAIE,OAAAA;EAEnF,OAAO,KAAKK,QAAQF,QAAQ;GACxBG,WAAWjB,aAAaO,OAAO,EAAEW,YAAY,KAAK,CAAA,KAAMC,KAAAA;GACxDC,WAAWrB,iBAAiBQ,OAAO,YAAA,KAAiBY,KAAAA;EACxD,CAAA;CACJ;AACJ"}
1
+ {"version":3,"file":"client-credentials.mjs","names":["OAuth2TokenGrant","readRequestBody","EntityCredentialsInvalidError","getRequestHeader","getRequestIP","ClientCredentialsGrant","assertClientGrantAllowed","extractClientCredentialsFromRequest","HTTPClientCredentialsGrant","authenticator","ctx","runWithRequest","event","clientId","clientSecret","body","realmId","realm_id","entity","client","authenticate","CLIENT_CREDENTIALS","runWith","ipAddress","trustProxy","undefined","userAgent"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/client-credentials.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { OAuth2TokenGrant } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport type { Client } from '@authup/core-kit';\nimport { EntityCredentialsInvalidError } from '@authup/errors';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport type { ICredentialsAuthenticator } from '../../../../../core/index.ts';\nimport { ClientCredentialsGrant, assertClientGrantAllowed } from '../../../../../core/index.ts';\nimport type { HTTPOAuth2ClientCredentialsGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest } from './utils/index.ts';\n\nexport class HTTPClientCredentialsGrant extends ClientCredentialsGrant implements IHTTPOAuth2Grant {\n protected authenticator : ICredentialsAuthenticator<Client>;\n\n constructor(ctx: HTTPOAuth2ClientCredentialsGrantContext) {\n super(ctx);\n\n this.authenticator = ctx.authenticator;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n const body = await readRequestBody(event);\n const realmId = body?.realm_id;\n\n if (!clientId) {\n throw new EntityCredentialsInvalidError({ entity: 'client' });\n }\n\n const client = await this.authenticator.authenticate(clientId, clientSecret ?? '', realmId);\n\n assertClientGrantAllowed(client, OAuth2TokenGrant.CLIENT_CREDENTIALS);\n\n return this.runWith(client, {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,IAAaQ,6BAAb,cAAgDH,uBAAAA;CAClCI;CAEV,YAAYC,KAA8C;EACtD,MAAMA,GAAAA;EAEN,KAAKD,gBAAgBC,IAAID;CAC7B;CAEA,MAAME,eAAeC,OAAqD;EACtE,MAAM,EAAEC,UAAUC,iBAAiB,MAAMP,oCAAoCK,KAAAA;EAE7E,MAAMI,WAAUD,MADGd,gBAAgBW,KAAAA,EAAAA,EACbK;EAEtB,IAAI,CAACJ,UACD,MAAM,IAAIX,8BAA8B,EAAEgB,QAAQ,SAAS,CAAA;EAG/D,MAAMC,SAAS,MAAM,KAAKV,cAAcW,aAAaP,UAAUC,gBAAgB,IAAIE,OAAAA;EAEnFV,yBAAyBa,QAAQnB,iBAAiBqB,kBAAkB;EAEpE,OAAO,KAAKC,QAAQH,QAAQ;GACxBI,WAAWnB,aAAaQ,OAAO,EAAEY,YAAY,KAAK,CAAA,KAAMC,KAAAA;GACxDC,WAAWvB,iBAAiBS,OAAO,YAAA,KAAiBa,KAAAA;EACxD,CAAA;CACJ;AACJ"}
@@ -1,8 +1,9 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
- import { extractClientCredentialsFromRequest } from "./utils/credentials.mjs";
4
+ import { extractClientCredentialsFromRequest, readStringField } from "./utils/credentials.mjs";
5
5
  import { guessOauth2GrantTypeByRequest } from "./utils/guess.mjs";
6
+ import { readRealmHint } from "./utils/realm.mjs";
6
7
  import "./utils/index.mjs";
7
8
  import { HTTPOAuth2AuthorizeGrant } from "./authorize.mjs";
8
9
  import { HTTPClientCredentialsGrant } from "./client-credentials.mjs";
@@ -10,4 +11,4 @@ import { HTTPOAuth2IdentityGrantType } from "./identity.mjs";
10
11
  import { HTTPPasswordGrant } from "./password.mjs";
11
12
  import { HTTPOAuth2RefreshTokenGrant } from "./refresh_token.mjs";
12
13
  import { HTTPRobotCredentialsGrant } from "./robot-credentials.mjs";
13
- export { HTTPClientCredentialsGrant, HTTPOAuth2AuthorizeGrant, HTTPOAuth2IdentityGrantType, HTTPOAuth2RefreshTokenGrant, HTTPPasswordGrant, HTTPRobotCredentialsGrant, extractClientCredentialsFromRequest, guessOauth2GrantTypeByRequest };
14
+ export { HTTPClientCredentialsGrant, HTTPOAuth2AuthorizeGrant, HTTPOAuth2IdentityGrantType, HTTPOAuth2RefreshTokenGrant, HTTPPasswordGrant, HTTPRobotCredentialsGrant, extractClientCredentialsFromRequest, guessOauth2GrantTypeByRequest, readRealmHint, readStringField };
@@ -1,12 +1,13 @@
1
1
  import type { User } from '@authup/core-kit';
2
2
  import type { OAuth2TokenGrantResponse } from '@authup/specs';
3
3
  import type { IAppEvent } from 'routup';
4
- import type { ICredentialsAuthenticator, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
4
+ import type { ICredentialsAuthenticator, IRealmRepository, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
5
5
  import { PasswordGrantType } from '../../../../../core/index.ts';
6
6
  import type { HTTPOAuth2PasswordGrantContext, IHTTPOAuth2Grant } from './types.ts';
7
7
  export declare class HTTPPasswordGrant extends PasswordGrantType implements IHTTPOAuth2Grant {
8
8
  protected authenticator: ICredentialsAuthenticator<User>;
9
9
  protected clientAuthenticator: OAuth2ClientAuthenticator;
10
+ protected realmRepository: IRealmRepository;
10
11
  constructor(ctx: HTTPOAuth2PasswordGrantContext);
11
12
  runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse>;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/password.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnF,qBAAa,iBAAkB,SAAQ,iBAAkB,YAAW,gBAAgB;IAChF,SAAS,CAAC,aAAa,EAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAE1D,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;gBAE9C,GAAG,EAAE,8BAA8B;IAOzC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA4B5E"}
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/password.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAA4B,MAAM,8BAA8B,CAAC;AAC3F,OAAO,KAAK,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnF,qBAAa,iBAAkB,SAAQ,iBAAkB,YAAW,gBAAgB;IAChF,SAAS,CAAC,aAAa,EAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAE1D,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,eAAe,EAAG,gBAAgB,CAAC;gBAEjC,GAAG,EAAE,8BAA8B;IAQzC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAmC5E"}
@@ -1,26 +1,36 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { assertClientGrantAllowed } from "../../../../../core/oauth2/client/grant-type.mjs";
4
5
  import { PasswordGrantType } from "../../../../../core/oauth2/grant-types/password.mjs";
5
6
  import "../../../../../core/index.mjs";
6
- import { extractClientCredentialsFromRequest } from "./utils/credentials.mjs";
7
+ import { extractClientCredentialsFromRequest, readStringField } from "./utils/credentials.mjs";
8
+ import { readRealmHint } from "./utils/realm.mjs";
7
9
  import "./utils/index.mjs";
10
+ import { OAuth2RequestError, OAuth2TokenGrant } from "@authup/specs";
8
11
  import { getRequestHeader, getRequestIP } from "routup";
9
12
  import { readRequestBody } from "@routup/basic/body";
10
13
  //#region src/adapters/http/adapters/oauth2/grant-types/password.ts
11
14
  var HTTPPasswordGrant = class extends PasswordGrantType {
12
15
  authenticator;
13
16
  clientAuthenticator;
17
+ realmRepository;
14
18
  constructor(ctx) {
15
19
  super(ctx);
16
20
  this.authenticator = ctx.authenticator;
17
21
  this.clientAuthenticator = ctx.clientAuthenticator;
22
+ this.realmRepository = ctx.realmRepository;
18
23
  }
19
24
  async runWithRequest(event) {
20
- const { username, password, realm_id: realmId } = await readRequestBody(event) || {};
25
+ const body = await readRequestBody(event);
26
+ const username = readStringField(body, "username");
27
+ const password = readStringField(body, "password");
28
+ if (!username || !password) throw OAuth2RequestError.malformed("username and password must be provided.");
21
29
  const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);
22
- const client = clientId ? await this.clientAuthenticator.authenticate(clientId, clientSecret, typeof realmId === "string" ? realmId : void 0) : void 0;
23
- const user = await this.authenticator.authenticate(username, password, realmId);
30
+ const realm = await this.realmRepository.resolve(readRealmHint(body), true);
31
+ const client = clientId ? await this.clientAuthenticator.authenticate(clientId, clientSecret, realm.id) : void 0;
32
+ if (client) assertClientGrantAllowed(client, OAuth2TokenGrant.PASSWORD);
33
+ const user = await this.authenticator.authenticate(username, password, realm.id);
24
34
  return this.runWith({
25
35
  user,
26
36
  client
@@ -1 +1 @@
1
- {"version":3,"file":"password.mjs","names":["readRequestBody","getRequestHeader","getRequestIP","PasswordGrantType","extractClientCredentialsFromRequest","HTTPPasswordGrant","authenticator","clientAuthenticator","ctx","runWithRequest","event","body","username","password","realm_id","realmId","clientId","clientSecret","client","authenticate","undefined","user","runWith","ipAddress","trustProxy","userAgent"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/password.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { User } from '@authup/core-kit';\nimport type { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport type { ICredentialsAuthenticator, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';\nimport { PasswordGrantType } from '../../../../../core/index.ts';\nimport type { HTTPOAuth2PasswordGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest } from './utils/index.ts';\n\nexport class HTTPPasswordGrant extends PasswordGrantType implements IHTTPOAuth2Grant {\n protected authenticator : ICredentialsAuthenticator<User>;\n\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n constructor(ctx: HTTPOAuth2PasswordGrantContext) {\n super(ctx);\n\n this.authenticator = ctx.authenticator;\n this.clientAuthenticator = ctx.clientAuthenticator;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const body = await readRequestBody(event);\n const {\n username,\n password,\n realm_id: realmId,\n } = body || {};\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n\n const client = clientId ?\n await this.clientAuthenticator.authenticate(\n clientId,\n clientSecret,\n typeof realmId === 'string' ? realmId : undefined,\n ) :\n undefined;\n\n const user = await this.authenticator.authenticate(username, password, realmId);\n\n return this.runWith(\n { user, client },\n {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n },\n );\n }\n}\n"],"mappings":";;;;;;;;;;AAiBA,IAAaK,oBAAb,cAAuCF,kBAAAA;CACzBG;CAEAC;CAEV,YAAYC,KAAqC;EAC7C,MAAMA,GAAAA;EAEN,KAAKF,gBAAgBE,IAAIF;EACzB,KAAKC,sBAAsBC,IAAID;CACnC;CAEA,MAAME,eAAeC,OAAqD;EAEtE,MAAM,EACFE,UACAC,UACAC,UAAUC,YACVJ,MALeX,gBAAgBU,KAAAA,KAKvB,CAAC;EAEb,MAAM,EAAEM,UAAUC,iBAAiB,MAAMb,oCAAoCM,KAAAA;EAE7E,MAAMQ,SAASF,WACX,MAAM,KAAKT,oBAAoBY,aAC3BH,UACAC,cACA,OAAOF,YAAY,WAAWA,UAAUK,KAAAA,CAAAA,IAE5CA,KAAAA;EAEJ,MAAMC,OAAO,MAAM,KAAKf,cAAca,aAAaP,UAAUC,UAAUE,OAAAA;EAEvE,OAAO,KAAKO,QACR;GAAED;GAAMH;EAAO,GACf;GACIK,WAAWrB,aAAaQ,OAAO,EAAEc,YAAY,KAAK,CAAA,KAAMJ,KAAAA;GACxDK,WAAWxB,iBAAiBS,OAAO,YAAA,KAAiBU,KAAAA;EACxD,CAAA;CAER;AACJ"}
1
+ {"version":3,"file":"password.mjs","names":["OAuth2RequestError","OAuth2TokenGrant","readRequestBody","getRequestHeader","getRequestIP","PasswordGrantType","assertClientGrantAllowed","extractClientCredentialsFromRequest","readRealmHint","readStringField","HTTPPasswordGrant","authenticator","clientAuthenticator","realmRepository","ctx","runWithRequest","event","body","username","password","malformed","clientId","clientSecret","realm","resolve","client","authenticate","id","undefined","PASSWORD","user","runWith","ipAddress","trustProxy","userAgent"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/password.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { User } from '@authup/core-kit';\nimport type { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { OAuth2RequestError, OAuth2TokenGrant } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport type { ICredentialsAuthenticator, IRealmRepository, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';\nimport { PasswordGrantType, assertClientGrantAllowed } from '../../../../../core/index.ts';\nimport type { HTTPOAuth2PasswordGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest, readRealmHint, readStringField } from './utils/index.ts';\n\nexport class HTTPPasswordGrant extends PasswordGrantType implements IHTTPOAuth2Grant {\n protected authenticator : ICredentialsAuthenticator<User>;\n\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n protected realmRepository : IRealmRepository;\n\n constructor(ctx: HTTPOAuth2PasswordGrantContext) {\n super(ctx);\n\n this.authenticator = ctx.authenticator;\n this.clientAuthenticator = ctx.clientAuthenticator;\n this.realmRepository = ctx.realmRepository;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const body = await readRequestBody(event);\n\n const username = readStringField(body, 'username');\n const password = readStringField(body, 'password');\n if (!username || !password) {\n throw OAuth2RequestError.malformed('username and password must be provided.');\n }\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n\n const realm = await this.realmRepository.resolve(readRealmHint(body), true);\n\n const client = clientId ?\n await this.clientAuthenticator.authenticate(\n clientId,\n clientSecret,\n realm.id,\n ) :\n undefined;\n\n if (client) {\n assertClientGrantAllowed(client, OAuth2TokenGrant.PASSWORD);\n }\n\n const user = await this.authenticator.authenticate(username, password, realm.id);\n\n return this.runWith(\n { user, client },\n {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n },\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAkBA,IAAaU,oBAAb,cAAuCL,kBAAAA;CACzBM;CAEAC;CAEAC;CAEV,YAAYC,KAAqC;EAC7C,MAAMA,GAAAA;EAEN,KAAKH,gBAAgBG,IAAIH;EACzB,KAAKC,sBAAsBE,IAAIF;EAC/B,KAAKC,kBAAkBC,IAAID;CAC/B;CAEA,MAAME,eAAeC,OAAqD;EACtE,MAAMC,OAAO,MAAMf,gBAAgBc,KAAAA;EAEnC,MAAME,WAAWT,gBAAgBQ,MAAM,UAAA;EACvC,MAAME,WAAWV,gBAAgBQ,MAAM,UAAA;EACvC,IAAI,CAACC,YAAY,CAACC,UACd,MAAMnB,mBAAmBoB,UAAU,yCAAA;EAGvC,MAAM,EAAEC,UAAUC,iBAAiB,MAAMf,oCAAoCS,KAAAA;EAE7E,MAAMO,QAAQ,MAAM,KAAKV,gBAAgBW,QAAQhB,cAAcS,IAAAA,GAAO,IAAA;EAEtE,MAAMQ,SAASJ,WACX,MAAM,KAAKT,oBAAoBc,aAC3BL,UACAC,cACAC,MAAMI,EAAE,IAEZC,KAAAA;EAEJ,IAAIH,QACAnB,yBAAyBmB,QAAQxB,iBAAiB4B,QAAQ;EAG9D,MAAMC,OAAO,MAAM,KAAKnB,cAAce,aAAaR,UAAUC,UAAUI,MAAMI,EAAE;EAE/E,OAAO,KAAKI,QACR;GAAED;GAAML;EAAO,GACf;GACIO,WAAW5B,aAAaY,OAAO,EAAEiB,YAAY,KAAK,CAAA,KAAML,KAAAA;GACxDM,WAAW/B,iBAAiBa,OAAO,YAAA,KAAiBY,KAAAA;EACxD,CAAA;CAER;AACJ"}
@@ -1,11 +1,12 @@
1
1
  import type { OAuth2TokenGrantResponse } from '@authup/specs';
2
2
  import type { IAppEvent } from 'routup';
3
3
  import { OAuth2RefreshTokenGrant } from '../../../../../core/index.ts';
4
- import type { IOAuth2TokenVerifier, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
4
+ import type { IOAuth2TokenVerifier, IRealmRepository, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
5
5
  import type { HTTPOAuth2RefreshTokenGrantContext, IHTTPOAuth2Grant } from './types.ts';
6
6
  export declare class HTTPOAuth2RefreshTokenGrant extends OAuth2RefreshTokenGrant implements IHTTPOAuth2Grant {
7
7
  protected clientAuthenticator: OAuth2ClientAuthenticator;
8
8
  protected refreshTokenVerifier: IOAuth2TokenVerifier;
9
+ protected realmRepository: IRealmRepository;
9
10
  constructor(ctx: HTTPOAuth2RefreshTokenGrantContext);
10
11
  runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse>;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"refresh_token.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/refresh_token.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EACR,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,kCAAkC,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGvF,qBAAa,2BAA4B,SAAQ,uBAAwB,YAAW,gBAAgB;IAChG,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,oBAAoB,EAAG,oBAAoB,CAAC;gBAE1C,GAAG,EAAE,kCAAkC;IAO7C,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAqC5E"}
1
+ {"version":3,"file":"refresh_token.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/refresh_token.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAA4B,MAAM,8BAA8B,CAAC;AACjG,OAAO,KAAK,EACR,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,kCAAkC,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGvF,qBAAa,2BAA4B,SAAQ,uBAAwB,YAAW,gBAAgB;IAChG,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,oBAAoB,EAAG,oBAAoB,CAAC;IAEtD,SAAS,CAAC,eAAe,EAAG,gBAAgB,CAAC;gBAEjC,GAAG,EAAE,kCAAkC;IAQ7C,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA2E5E"}
@@ -1,33 +1,40 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
+ import { assertClientGrantAllowed } from "../../../../../core/oauth2/client/grant-type.mjs";
4
5
  import { OAuth2RefreshTokenGrant } from "../../../../../core/oauth2/grant-types/refresh-token.mjs";
5
6
  import "../../../../../core/index.mjs";
6
7
  import { extractClientCredentialsFromRequest } from "./utils/credentials.mjs";
8
+ import { readRealmHint } from "./utils/realm.mjs";
7
9
  import "./utils/index.mjs";
8
- import { OAuth2ClientError, OAuth2GrantError, OAuth2RequestError } from "@authup/specs";
10
+ import { OAuth2GrantError, OAuth2RequestError, OAuth2TokenGrant } from "@authup/specs";
9
11
  import { getRequestHeader, getRequestIP } from "routup";
10
12
  import { readRequestBody } from "@routup/basic/body";
11
13
  //#region src/adapters/http/adapters/oauth2/grant-types/refresh_token.ts
12
14
  var HTTPOAuth2RefreshTokenGrant = class extends OAuth2RefreshTokenGrant {
13
15
  clientAuthenticator;
14
16
  refreshTokenVerifier;
17
+ realmRepository;
15
18
  constructor(ctx) {
16
19
  super(ctx);
17
20
  this.clientAuthenticator = ctx.clientAuthenticator;
18
21
  this.refreshTokenVerifier = ctx.tokenVerifier;
22
+ this.realmRepository = ctx.realmRepository;
19
23
  }
20
24
  async runWithRequest(event) {
21
25
  const body = await readRequestBody(event);
22
26
  const refreshToken = body?.refresh_token;
23
27
  if (typeof refreshToken !== "string" || refreshToken.length === 0) throw OAuth2RequestError.malformed();
24
28
  const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);
25
- const realmId = body?.realm_id;
26
- const payload = await this.refreshTokenVerifier.verify(refreshToken);
29
+ const payload = await this.refreshTokenVerifier.verify(refreshToken, { skipActiveCheck: true });
30
+ let client;
27
31
  if (clientId) {
28
- const client = await this.clientAuthenticator.authenticate(clientId, clientSecret, typeof realmId === "string" ? realmId : void 0);
32
+ const realm = await this.realmRepository.resolve(readRealmHint(body), true);
33
+ client = await this.clientAuthenticator.authenticate(clientId, clientSecret, realm.id);
29
34
  if (payload.client_id && payload.client_id !== client.id) throw OAuth2GrantError.invalid();
30
- } else if (payload.client_id) throw OAuth2ClientError.invalid();
35
+ } else if (payload.client_id) client = await this.clientAuthenticator.authenticate(payload.client_id);
36
+ if (client) assertClientGrantAllowed(client, OAuth2TokenGrant.REFRESH_TOKEN);
37
+ if (client && !client.is_confidential && payload.realm_id && payload.realm_id !== client.realm_id) throw OAuth2GrantError.invalid();
31
38
  return this.runWith(payload, {
32
39
  ipAddress: getRequestIP(event, { trustProxy: true }) ?? void 0,
33
40
  userAgent: getRequestHeader(event, "user-agent") ?? void 0
@@ -1 +1 @@
1
- {"version":3,"file":"refresh_token.mjs","names":["OAuth2ClientError","OAuth2GrantError","OAuth2RequestError","readRequestBody","getRequestHeader","getRequestIP","OAuth2RefreshTokenGrant","extractClientCredentialsFromRequest","HTTPOAuth2RefreshTokenGrant","clientAuthenticator","refreshTokenVerifier","ctx","tokenVerifier","runWithRequest","event","body","refreshToken","refresh_token","length","malformed","clientId","clientSecret","realmId","realm_id","payload","verify","client","authenticate","undefined","client_id","id","invalid","runWith","ipAddress","trustProxy","userAgent"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/refresh_token.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { OAuth2ClientError, OAuth2GrantError, OAuth2RequestError } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport { OAuth2RefreshTokenGrant } from '../../../../../core/index.ts';\nimport type {\n IOAuth2TokenVerifier,\n OAuth2ClientAuthenticator,\n} from '../../../../../core/index.ts';\nimport type { HTTPOAuth2RefreshTokenGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest } from './utils/index.ts';\n\nexport class HTTPOAuth2RefreshTokenGrant extends OAuth2RefreshTokenGrant implements IHTTPOAuth2Grant {\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n protected refreshTokenVerifier : IOAuth2TokenVerifier;\n\n constructor(ctx: HTTPOAuth2RefreshTokenGrantContext) {\n super(ctx);\n\n this.clientAuthenticator = ctx.clientAuthenticator;\n this.refreshTokenVerifier = ctx.tokenVerifier;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const body = await readRequestBody(event);\n const refreshToken = body?.refresh_token;\n if (typeof refreshToken !== 'string' || refreshToken.length === 0) {\n throw OAuth2RequestError.malformed();\n }\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n const realmId = body?.realm_id;\n\n // RFC 6749 §6: verify the refresh token first to learn its bound\n // client (if any), then enforce binding. Authenticate the requesting\n // client when credentials are present, or when the token requires\n // a client binding.\n const payload = await this.refreshTokenVerifier.verify(refreshToken);\n\n if (clientId) {\n const client = await this.clientAuthenticator.authenticate(\n clientId,\n clientSecret,\n typeof realmId === 'string' ? realmId : undefined,\n );\n\n if (payload.client_id && payload.client_id !== client.id) {\n throw OAuth2GrantError.invalid();\n }\n } else if (payload.client_id) {\n // Token was issued to a specific client — that client MUST\n // re-authenticate (RFC 6749 §6 binding requirement).\n throw OAuth2ClientError.invalid();\n }\n\n return this.runWith(payload, {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAoBA,IAAaQ,8BAAb,cAAiDF,wBAAAA;CACnCG;CAEAC;CAEV,YAAYC,KAAyC;EACjD,MAAMA,GAAAA;EAEN,KAAKF,sBAAsBE,IAAIF;EAC/B,KAAKC,uBAAuBC,IAAIC;CACpC;CAEA,MAAMC,eAAeC,OAAqD;EACtE,MAAMC,OAAO,MAAMZ,gBAAgBW,KAAAA;EACnC,MAAME,eAAeD,MAAME;EAC3B,IAAI,OAAOD,iBAAiB,YAAYA,aAAaE,WAAW,GAC5D,MAAMhB,mBAAmBiB,UAAS;EAGtC,MAAM,EAAEC,UAAUC,iBAAiB,MAAMd,oCAAoCO,KAAAA;EAC7E,MAAMQ,UAAUP,MAAMQ;EAMtB,MAAMC,UAAU,MAAM,KAAKd,qBAAqBe,OAAOT,YAAAA;EAEvD,IAAII,UAAU;GACV,MAAMM,SAAS,MAAM,KAAKjB,oBAAoBkB,aAC1CP,UACAC,cACA,OAAOC,YAAY,WAAWA,UAAUM,KAAAA,CAAAA;GAG5C,IAAIJ,QAAQK,aAAaL,QAAQK,cAAcH,OAAOI,IAClD,MAAM7B,iBAAiB8B,QAAO;EAEtC,OAAO,IAAIP,QAAQK,WAGf,MAAM7B,kBAAkB+B,QAAO;EAGnC,OAAO,KAAKC,QAAQR,SAAS;GACzBS,WAAW5B,aAAaS,OAAO,EAAEoB,YAAY,KAAK,CAAA,KAAMN,KAAAA;GACxDO,WAAW/B,iBAAiBU,OAAO,YAAA,KAAiBc,KAAAA;EACxD,CAAA;CACJ;AACJ"}
1
+ {"version":3,"file":"refresh_token.mjs","names":["OAuth2GrantError","OAuth2RequestError","OAuth2TokenGrant","readRequestBody","getRequestHeader","getRequestIP","OAuth2RefreshTokenGrant","assertClientGrantAllowed","extractClientCredentialsFromRequest","readRealmHint","HTTPOAuth2RefreshTokenGrant","clientAuthenticator","refreshTokenVerifier","realmRepository","ctx","tokenVerifier","runWithRequest","event","body","refreshToken","refresh_token","length","malformed","clientId","clientSecret","payload","verify","skipActiveCheck","client","realm","resolve","authenticate","id","client_id","invalid","REFRESH_TOKEN","is_confidential","realm_id","runWith","ipAddress","trustProxy","undefined","userAgent"],"sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/refresh_token.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { Client } from '@authup/core-kit';\nimport type { OAuth2TokenGrantResponse } from '@authup/specs';\nimport { OAuth2GrantError, OAuth2RequestError, OAuth2TokenGrant } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport type { IAppEvent } from 'routup';\nimport { getRequestHeader, getRequestIP } from 'routup';\nimport { OAuth2RefreshTokenGrant, assertClientGrantAllowed } from '../../../../../core/index.ts';\nimport type {\n IOAuth2TokenVerifier,\n IRealmRepository,\n OAuth2ClientAuthenticator,\n} from '../../../../../core/index.ts';\nimport type { HTTPOAuth2RefreshTokenGrantContext, IHTTPOAuth2Grant } from './types.ts';\nimport { extractClientCredentialsFromRequest, readRealmHint } from './utils/index.ts';\n\nexport class HTTPOAuth2RefreshTokenGrant extends OAuth2RefreshTokenGrant implements IHTTPOAuth2Grant {\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n protected refreshTokenVerifier : IOAuth2TokenVerifier;\n\n protected realmRepository : IRealmRepository;\n\n constructor(ctx: HTTPOAuth2RefreshTokenGrantContext) {\n super(ctx);\n\n this.clientAuthenticator = ctx.clientAuthenticator;\n this.refreshTokenVerifier = ctx.tokenVerifier;\n this.realmRepository = ctx.realmRepository;\n }\n\n async runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const body = await readRequestBody(event);\n const refreshToken = body?.refresh_token;\n if (typeof refreshToken !== 'string' || refreshToken.length === 0) {\n throw OAuth2RequestError.malformed();\n }\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n\n // RFC 6749 §6: verify the refresh token first to learn its bound\n // client (if any), then enforce binding. Authenticate the requesting\n // client when credentials are present, or when the token requires\n // a client binding.\n //\n // skipActiveCheck: the durable auth_session_tokens row (not the cache\n // blocklist) is the refresh-token authority, so a replayed/consumed\n // token must reach runWith() to trigger family revocation instead of\n // being rejected here with JWT_INACTIVE.\n const payload = await this.refreshTokenVerifier.verify(refreshToken, { skipActiveCheck: true });\n\n let client: Client | undefined;\n\n if (clientId) {\n // A client authenticated itself. Resolve by the presented\n // id/secret (name resolution scoped by the realm hint — resolved\n // lazily so a bare refresh skips the SELECT) and enforce the\n // token↔client binding.\n const realm = await this.realmRepository.resolve(readRealmHint(body), true);\n\n client = await this.clientAuthenticator.authenticate(\n clientId,\n clientSecret,\n realm.id,\n );\n\n if (payload.client_id && payload.client_id !== client.id) {\n throw OAuth2GrantError.invalid();\n }\n } else if (payload.client_id) {\n // No client credentials were presented, but the token is bound to\n // a client. RFC 6749 §10.4: a public client cannot authenticate\n // (no secret) and is not required to the bound identity is read\n // from the signed token (client_id is server-minted, so trusted)\n // and refresh-token rotation/replay detection is the abuse control.\n // A confidential client MUST still authenticate: authenticate()\n // with no secret throws invalid_client for it, so a confidential-\n // bound token presented without credentials is rejected here.\n client = await this.clientAuthenticator.authenticate(payload.client_id);\n }\n\n if (client) {\n assertClientGrantAllowed(client, OAuth2TokenGrant.REFRESH_TOKEN);\n }\n\n // Realm parity for PUBLIC clients only: a public client may not refresh\n // a token whose realm differs from the (bound) client's own realm.\n // Kills cross-realm refresh tokens minted for a public `web` client\n // before the authorize-side realm gate existed. Confidential clients\n // are exempt — the client secret already proves identity, and the\n // documented cross-realm password grant (UUID-identified user against a\n // master-realm client) depends on that exemption.\n if (\n client &&\n !client.is_confidential &&\n payload.realm_id &&\n payload.realm_id !== client.realm_id\n ) {\n throw OAuth2GrantError.invalid();\n }\n\n return this.runWith(payload, {\n ipAddress: getRequestIP(event, { trustProxy: true }) ?? undefined,\n userAgent: getRequestHeader(event, 'user-agent') ?? undefined,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAsBA,IAAaU,8BAAb,cAAiDJ,wBAAAA;CACnCK;CAEAC;CAEAC;CAEV,YAAYC,KAAyC;EACjD,MAAMA,GAAAA;EAEN,KAAKH,sBAAsBG,IAAIH;EAC/B,KAAKC,uBAAuBE,IAAIC;EAChC,KAAKF,kBAAkBC,IAAID;CAC/B;CAEA,MAAMG,eAAeC,OAAqD;EACtE,MAAMC,OAAO,MAAMf,gBAAgBc,KAAAA;EACnC,MAAME,eAAeD,MAAME;EAC3B,IAAI,OAAOD,iBAAiB,YAAYA,aAAaE,WAAW,GAC5D,MAAMpB,mBAAmBqB,UAAS;EAGtC,MAAM,EAAEC,UAAUC,iBAAiB,MAAMhB,oCAAoCS,KAAAA;EAW7E,MAAMQ,UAAU,MAAM,KAAKb,qBAAqBc,OAAOP,cAAc,EAAEQ,iBAAiB,KAAK,CAAA;EAE7F,IAAIC;EAEJ,IAAIL,UAAU;GAKV,MAAMM,QAAQ,MAAM,KAAKhB,gBAAgBiB,QAAQrB,cAAcS,IAAAA,GAAO,IAAA;GAEtEU,SAAS,MAAM,KAAKjB,oBAAoBoB,aACpCR,UACAC,cACAK,MAAMG,EAAE;GAGZ,IAAIP,QAAQQ,aAAaR,QAAQQ,cAAcL,OAAOI,IAClD,MAAMhC,iBAAiBkC,QAAO;EAEtC,OAAO,IAAIT,QAAQQ,WASfL,SAAS,MAAM,KAAKjB,oBAAoBoB,aAAaN,QAAQQ,SAAS;EAG1E,IAAIL,QACArB,yBAAyBqB,QAAQ1B,iBAAiBiC,aAAa;EAUnE,IACIP,UACA,CAACA,OAAOQ,mBACRX,QAAQY,YACRZ,QAAQY,aAAaT,OAAOS,UAE5B,MAAMrC,iBAAiBkC,QAAO;EAGlC,OAAO,KAAKI,QAAQb,SAAS;GACzBc,WAAWlC,aAAaY,OAAO,EAAEuB,YAAY,KAAK,CAAA,KAAMC,KAAAA;GACxDC,WAAWtC,iBAAiBa,OAAO,YAAA,KAAiBwB,KAAAA;EACxD,CAAA;CACJ;AACJ"}
@@ -1,10 +1,11 @@
1
1
  import type { Client, Robot, User } from '@authup/core-kit';
2
2
  import type { OAuth2TokenGrantResponse } from '@authup/specs';
3
3
  import type { IAppEvent } from 'routup';
4
- import type { BaseGrantContext, ICredentialsAuthenticator, IOAuth2AuthorizationCodeVerifier, OAuth2AuthorizeGrantContext, OAuth2ClientAuthenticator, OAuth2PasswordGrantContext, OAuth2RefreshTokenGrantContext } from '../../../../../core/index.ts';
4
+ import type { BaseGrantContext, ICredentialsAuthenticator, IOAuth2AuthorizationCodeVerifier, IRealmRepository, OAuth2AuthorizeGrantContext, OAuth2ClientAuthenticator, OAuth2PasswordGrantContext, OAuth2RefreshTokenGrantContext } from '../../../../../core/index.ts';
5
5
  export type HTTPOAuth2AuthorizeGrantContext = OAuth2AuthorizeGrantContext & {
6
6
  codeVerifier: IOAuth2AuthorizationCodeVerifier;
7
7
  clientAuthenticator: OAuth2ClientAuthenticator;
8
+ realmRepository: IRealmRepository;
8
9
  };
9
10
  export interface IHTTPOAuth2Grant {
10
11
  runWithRequest(event: IAppEvent): Promise<OAuth2TokenGrantResponse>;
@@ -12,9 +13,11 @@ export interface IHTTPOAuth2Grant {
12
13
  export type HTTPOAuth2PasswordGrantContext = OAuth2PasswordGrantContext & {
13
14
  authenticator: ICredentialsAuthenticator<User>;
14
15
  clientAuthenticator: OAuth2ClientAuthenticator;
16
+ realmRepository: IRealmRepository;
15
17
  };
16
18
  export type HTTPOAuth2RefreshTokenGrantContext = OAuth2RefreshTokenGrantContext & {
17
19
  clientAuthenticator: OAuth2ClientAuthenticator;
20
+ realmRepository: IRealmRepository;
18
21
  };
19
22
  export type HTTPOAuth2ClientCredentialsGrantContext = BaseGrantContext & {
20
23
  authenticator: ICredentialsAuthenticator<Client>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EACR,gBAAgB,EAChB,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,+BAA+B,GAAG,2BAA2B,GAAG;IACxE,YAAY,EAAE,gCAAgC,CAAC;IAC/C,mBAAmB,EAAE,yBAAyB,CAAC;CAClD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC7B,cAAc,CAAC,KAAK,EAAE,SAAS,GAAI,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACvE;AAED,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,GAAG;IACtE,aAAa,EAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,mBAAmB,EAAE,yBAAyB,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,8BAA8B,GAAG;IAC9E,mBAAmB,EAAE,yBAAyB,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG,gBAAgB,GAAG;IACrE,aAAa,EAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;CACpD,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,gBAAgB,GAAG;IACpE,aAAa,EAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;CACnD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/adapters/oauth2/grant-types/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EACR,gBAAgB,EAChB,yBAAyB,EACzB,gCAAgC,EAChC,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,+BAA+B,GAAG,2BAA2B,GAAG;IACxE,YAAY,EAAE,gCAAgC,CAAC;IAC/C,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,eAAe,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC7B,cAAc,CAAC,KAAK,EAAE,SAAS,GAAI,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACvE;AAED,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,GAAG;IACtE,aAAa,EAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,eAAe,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,8BAA8B,GAAG;IAC9E,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,eAAe,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG,gBAAgB,GAAG;IACrE,aAAa,EAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;CACpD,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,gBAAgB,GAAG;IACpE,aAAa,EAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;CACnD,CAAC"}
@@ -12,4 +12,5 @@ export type ExtractedClientCredentials = {
12
12
  * request body.
13
13
  */
14
14
  export declare function extractClientCredentialsFromRequest(event: IAppEvent): Promise<ExtractedClientCredentials>;
15
+ export declare function readStringField(body: Record<string, any> | undefined, key: string): string | undefined;
15
16
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/adapters/oauth2/grant-types/utils/credentials.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA6B/G"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/adapters/oauth2/grant-types/utils/credentials.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA6B/G;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGtG"}
@@ -2,8 +2,8 @@ import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
4
  import { OAuth2RequestError } from "@authup/specs";
5
- import { readRequestBody } from "@routup/basic/body";
6
5
  import { AuthorizationHeaderType, parseAuthorizationHeader } from "hapic";
6
+ import { readRequestBody } from "@routup/basic/body";
7
7
  //#region src/adapters/http/adapters/oauth2/grant-types/utils/credentials.ts
8
8
  /**
9
9
  * Extract client credentials from an OAuth2 token endpoint request.
@@ -56,6 +56,6 @@ function formDecode(value) {
56
56
  }
57
57
  }
58
58
  //#endregion
59
- export { extractClientCredentialsFromRequest };
59
+ export { extractClientCredentialsFromRequest, readStringField };
60
60
 
61
61
  //# sourceMappingURL=credentials.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.mjs","names":["OAuth2RequestError","readRequestBody","AuthorizationHeaderType","parseAuthorizationHeader","extractClientCredentialsFromRequest","event","body","bodyClientId","readStringField","bodyClientSecret","hasBodyCredentials","basicCredentials","parseBasicCredentials","malformed","clientId","clientSecret","key","value","length","undefined","headerValue","headers","get","header","type","BASIC","formDecode","username","password","decodeURIComponent","replace"],"sources":["../../../../../../../src/adapters/http/adapters/oauth2/grant-types/utils/credentials.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { OAuth2RequestError } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport { AuthorizationHeaderType, parseAuthorizationHeader } from 'hapic';\nimport type { IAppEvent } from 'routup';\n\nexport type ExtractedClientCredentials = {\n clientId?: string,\n clientSecret?: string,\n};\n\n/**\n * Extract client credentials from an OAuth2 token endpoint request.\n *\n * Per RFC 6749 §2.3.1, the server MUST NOT support multiple client\n * authentication methods in a single request. This helper rejects requests\n * that present credentials in BOTH the Basic Authorization header and the\n * request body.\n */\nexport async function extractClientCredentialsFromRequest(event: IAppEvent): Promise<ExtractedClientCredentials> {\n const body = await readRequestBody(event);\n const bodyClientId = readStringField(body, 'client_id');\n const bodyClientSecret = readStringField(body, 'client_secret');\n const hasBodyCredentials = !!bodyClientId || !!bodyClientSecret;\n\n const basicCredentials = parseBasicCredentials(event);\n\n if (hasBodyCredentials && basicCredentials) {\n throw OAuth2RequestError.malformed(\n 'Client credentials must be provided either via Basic Authorization header or request body, not both.',\n );\n }\n\n if (hasBodyCredentials) {\n // Reject stray client_secret without client_id — otherwise grants\n // that gate auth on `if (clientId)` would silently skip\n // authentication and leak through with the secret discarded.\n if (!bodyClientId) {\n throw OAuth2RequestError.malformed('client_secret was provided without client_id.');\n }\n return { clientId: bodyClientId, clientSecret: bodyClientSecret };\n }\n\n if (basicCredentials) {\n return basicCredentials;\n }\n\n return {};\n}\n\nfunction readStringField(body: Record<string, any> | undefined, key: string): string | undefined {\n const value = body?.[key];\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction parseBasicCredentials(event: IAppEvent): ExtractedClientCredentials | undefined {\n const headerValue = event.headers.get('authorization');\n if (!headerValue) {\n return undefined;\n }\n\n let header;\n try {\n header = parseAuthorizationHeader(headerValue);\n } catch {\n // Malformed Authorization header — surface as 400 invalid_request\n // rather than letting hapic's error propagate as 500.\n throw OAuth2RequestError.malformed('Malformed Authorization header.');\n }\n\n if (header.type !== AuthorizationHeaderType.BASIC) {\n return undefined;\n }\n\n // RFC 6749 §2.3.1 + Appendix B: client_id and client_secret are\n // application/x-www-form-urlencoded BEFORE base64 encoding in the\n // Authorization header. hapic only base64-decodes; we form-decode here\n // so credentials containing reserved characters (`:`, `+`, `%`, `&`,\n // `=`, etc.) round-trip correctly.\n return {\n clientId: formDecode(header.username),\n clientSecret: formDecode(header.password),\n };\n}\n\nfunction formDecode(value: string): string {\n try {\n // application/x-www-form-urlencoded: '+' represents space; %XX is\n // percent-encoded UTF-8.\n return decodeURIComponent(value.replace(/\\+/g, ' '));\n } catch {\n // Malformed percent-encoding — return raw value rather than\n // throwing; the caller will still validate via authentication.\n return value;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;GAyBA,eAAsBI,oCAAoCC,OAAgB;CACtE,MAAMC,OAAO,MAAML,gBAAgBI,KAAAA;CACnC,MAAME,eAAeC,gBAAgBF,MAAM,WAAA;CAC3C,MAAMG,mBAAmBD,gBAAgBF,MAAM,eAAA;CAC/C,MAAMI,qBAAqB,CAAC,CAACH,gBAAgB,CAAC,CAACE;CAE/C,MAAME,mBAAmBC,sBAAsBP,KAAAA;CAE/C,IAAIK,sBAAsBC,kBACtB,MAAMX,mBAAmBa,UACrB,sGAAA;CAIR,IAAIH,oBAAoB;EAIpB,IAAI,CAACH,cACD,MAAMP,mBAAmBa,UAAU,+CAAA;EAEvC,OAAO;GAAEC,UAAUP;GAAcQ,cAAcN;EAAiB;CACpE;CAEA,IAAIE,kBACA,OAAOA;CAGX,OAAO,CAAC;AACZ;AAEA,SAASH,gBAAgBF,MAAuCU,KAAW;CACvE,MAAMC,QAAQX,OAAOU;CACrB,OAAO,OAAOC,UAAU,YAAYA,MAAMC,SAAS,IAAID,QAAQE,KAAAA;AACnE;AAEA,SAASP,sBAAsBP,OAAgB;CAC3C,MAAMe,cAAcf,MAAMgB,QAAQC,IAAI,eAAA;CACtC,IAAI,CAACF,aACD;CAGJ,IAAIG;CACJ,IAAI;EACAA,SAASpB,yBAAyBiB,WAAAA;CACtC,QAAQ;EAGJ,MAAMpB,mBAAmBa,UAAU,iCAAA;CACvC;CAEA,IAAIU,OAAOC,SAAStB,wBAAwBuB,OACxC;CAQJ,OAAO;EACHX,UAAUY,WAAWH,OAAOI,QAAQ;EACpCZ,cAAcW,WAAWH,OAAOK,QAAQ;CAC5C;AACJ;AAEA,SAASF,WAAWT,OAAa;CAC7B,IAAI;EAGA,OAAOY,mBAAmBZ,MAAMa,QAAQ,OAAO,GAAA,CAAA;CACnD,QAAQ;EAGJ,OAAOb;CACX;AACJ"}
1
+ {"version":3,"file":"credentials.mjs","names":["OAuth2RequestError","readRequestBody","AuthorizationHeaderType","parseAuthorizationHeader","extractClientCredentialsFromRequest","event","body","bodyClientId","readStringField","bodyClientSecret","hasBodyCredentials","basicCredentials","parseBasicCredentials","malformed","clientId","clientSecret","key","value","length","undefined","headerValue","headers","get","header","type","BASIC","formDecode","username","password","decodeURIComponent","replace"],"sources":["../../../../../../../src/adapters/http/adapters/oauth2/grant-types/utils/credentials.ts"],"sourcesContent":["/*\n * Copyright (c) 2025-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 { OAuth2RequestError } from '@authup/specs';\nimport { readRequestBody } from '@routup/basic/body';\nimport { AuthorizationHeaderType, parseAuthorizationHeader } from 'hapic';\nimport type { IAppEvent } from 'routup';\n\nexport type ExtractedClientCredentials = {\n clientId?: string,\n clientSecret?: string,\n};\n\n/**\n * Extract client credentials from an OAuth2 token endpoint request.\n *\n * Per RFC 6749 §2.3.1, the server MUST NOT support multiple client\n * authentication methods in a single request. This helper rejects requests\n * that present credentials in BOTH the Basic Authorization header and the\n * request body.\n */\nexport async function extractClientCredentialsFromRequest(event: IAppEvent): Promise<ExtractedClientCredentials> {\n const body = await readRequestBody(event);\n const bodyClientId = readStringField(body, 'client_id');\n const bodyClientSecret = readStringField(body, 'client_secret');\n const hasBodyCredentials = !!bodyClientId || !!bodyClientSecret;\n\n const basicCredentials = parseBasicCredentials(event);\n\n if (hasBodyCredentials && basicCredentials) {\n throw OAuth2RequestError.malformed(\n 'Client credentials must be provided either via Basic Authorization header or request body, not both.',\n );\n }\n\n if (hasBodyCredentials) {\n // Reject stray client_secret without client_id — otherwise grants\n // that gate auth on `if (clientId)` would silently skip\n // authentication and leak through with the secret discarded.\n if (!bodyClientId) {\n throw OAuth2RequestError.malformed('client_secret was provided without client_id.');\n }\n return { clientId: bodyClientId, clientSecret: bodyClientSecret };\n }\n\n if (basicCredentials) {\n return basicCredentials;\n }\n\n return {};\n}\n\nexport function readStringField(body: Record<string, any> | undefined, key: string): string | undefined {\n const value = body?.[key];\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction parseBasicCredentials(event: IAppEvent): ExtractedClientCredentials | undefined {\n const headerValue = event.headers.get('authorization');\n if (!headerValue) {\n return undefined;\n }\n\n let header;\n try {\n header = parseAuthorizationHeader(headerValue);\n } catch {\n // Malformed Authorization header — surface as 400 invalid_request\n // rather than letting hapic's error propagate as 500.\n throw OAuth2RequestError.malformed('Malformed Authorization header.');\n }\n\n if (header.type !== AuthorizationHeaderType.BASIC) {\n return undefined;\n }\n\n // RFC 6749 §2.3.1 + Appendix B: client_id and client_secret are\n // application/x-www-form-urlencoded BEFORE base64 encoding in the\n // Authorization header. hapic only base64-decodes; we form-decode here\n // so credentials containing reserved characters (`:`, `+`, `%`, `&`,\n // `=`, etc.) round-trip correctly.\n return {\n clientId: formDecode(header.username),\n clientSecret: formDecode(header.password),\n };\n}\n\nfunction formDecode(value: string): string {\n try {\n // application/x-www-form-urlencoded: '+' represents space; %XX is\n // percent-encoded UTF-8.\n return decodeURIComponent(value.replace(/\\+/g, ' '));\n } catch {\n // Malformed percent-encoding — return raw value rather than\n // throwing; the caller will still validate via authentication.\n return value;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;GAyBA,eAAsBI,oCAAoCC,OAAgB;CACtE,MAAMC,OAAO,MAAML,gBAAgBI,KAAAA;CACnC,MAAME,eAAeC,gBAAgBF,MAAM,WAAA;CAC3C,MAAMG,mBAAmBD,gBAAgBF,MAAM,eAAA;CAC/C,MAAMI,qBAAqB,CAAC,CAACH,gBAAgB,CAAC,CAACE;CAE/C,MAAME,mBAAmBC,sBAAsBP,KAAAA;CAE/C,IAAIK,sBAAsBC,kBACtB,MAAMX,mBAAmBa,UACrB,sGAAA;CAIR,IAAIH,oBAAoB;EAIpB,IAAI,CAACH,cACD,MAAMP,mBAAmBa,UAAU,+CAAA;EAEvC,OAAO;GAAEC,UAAUP;GAAcQ,cAAcN;EAAiB;CACpE;CAEA,IAAIE,kBACA,OAAOA;CAGX,OAAO,CAAC;AACZ;AAEA,SAAgBH,gBAAgBF,MAAuCU,KAAW;CAC9E,MAAMC,QAAQX,OAAOU;CACrB,OAAO,OAAOC,UAAU,YAAYA,MAAMC,SAAS,IAAID,QAAQE,KAAAA;AACnE;AAEA,SAASP,sBAAsBP,OAAgB;CAC3C,MAAMe,cAAcf,MAAMgB,QAAQC,IAAI,eAAA;CACtC,IAAI,CAACF,aACD;CAGJ,IAAIG;CACJ,IAAI;EACAA,SAASpB,yBAAyBiB,WAAAA;CACtC,QAAQ;EAGJ,MAAMpB,mBAAmBa,UAAU,iCAAA;CACvC;CAEA,IAAIU,OAAOC,SAAStB,wBAAwBuB,OACxC;CAQJ,OAAO;EACHX,UAAUY,WAAWH,OAAOI,QAAQ;EACpCZ,cAAcW,WAAWH,OAAOK,QAAQ;CAC5C;AACJ;AAEA,SAASF,WAAWT,OAAa;CAC7B,IAAI;EAGA,OAAOY,mBAAmBZ,MAAMa,QAAQ,OAAO,GAAA,CAAA;CACnD,QAAQ;EAGJ,OAAOb;CACX;AACJ"}
@@ -2,9 +2,9 @@ import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
4
  import { OAuth2TokenGrant } from "@authup/specs";
5
+ import { AuthorizationHeaderType, parseAuthorizationHeader } from "hapic";
5
6
  import { readRequestBody } from "@routup/basic/body";
6
7
  import { useRequestQuery } from "@routup/basic/query";
7
- import { AuthorizationHeaderType, parseAuthorizationHeader } from "hapic";
8
8
  //#region src/adapters/http/adapters/oauth2/grant-types/utils/guess.ts
9
9
  async function guessOauth2GrantTypeByRequest(event) {
10
10
  const body = await readRequestBody(event);
@@ -1,3 +1,4 @@
1
1
  export * from './credentials.ts';
2
2
  export * from './guess.ts';
3
+ export * from './realm.ts';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/adapters/oauth2/grant-types/utils/index.ts"],"names":[],"mappings":"AAOA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/adapters/oauth2/grant-types/utils/index.ts"],"names":[],"mappings":"AAOA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}