@authup/server-core 1.0.0-beta.40 → 1.0.0-beta.41

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 (343) hide show
  1. package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts +5 -8
  2. package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts.map +1 -1
  3. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +8 -10
  4. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  5. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +3 -3
  6. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
  7. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +13 -12
  8. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  9. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts +2 -2
  10. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
  11. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +6 -6
  12. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  13. package/dist/adapters/http/adapters/oauth2/grant-types/identity.d.ts +2 -2
  14. package/dist/adapters/http/adapters/oauth2/grant-types/identity.d.ts.map +1 -1
  15. package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs +4 -4
  16. package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs.map +1 -1
  17. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +2 -2
  18. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
  19. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +6 -6
  20. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  21. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -2
  22. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
  23. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +8 -7
  24. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  25. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts +2 -2
  26. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts.map +1 -1
  27. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs +5 -5
  28. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +1 -1
  29. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +2 -2
  30. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  31. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts +2 -2
  32. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts.map +1 -1
  33. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +11 -10
  34. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
  35. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts +2 -2
  36. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts.map +1 -1
  37. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +16 -13
  38. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
  39. package/dist/adapters/http/controllers/entities/client/module.d.ts +9 -6
  40. package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
  41. package/dist/adapters/http/controllers/entities/client/module.mjs +46 -61
  42. package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
  43. package/dist/adapters/http/controllers/entities/client-permission/module.d.ts +8 -5
  44. package/dist/adapters/http/controllers/entities/client-permission/module.d.ts.map +1 -1
  45. package/dist/adapters/http/controllers/entities/client-permission/module.mjs +35 -48
  46. package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
  47. package/dist/adapters/http/controllers/entities/client-role/module.d.ts +7 -4
  48. package/dist/adapters/http/controllers/entities/client-role/module.d.ts.map +1 -1
  49. package/dist/adapters/http/controllers/entities/client-role/module.mjs +27 -40
  50. package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
  51. package/dist/adapters/http/controllers/entities/client-scope/module.d.ts +7 -4
  52. package/dist/adapters/http/controllers/entities/client-scope/module.d.ts.map +1 -1
  53. package/dist/adapters/http/controllers/entities/client-scope/module.mjs +27 -40
  54. package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
  55. package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts +8 -6
  56. package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts.map +1 -1
  57. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +35 -48
  58. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs.map +1 -1
  59. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +10 -9
  60. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  61. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +76 -100
  62. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  63. package/dist/adapters/http/controllers/entities/permission/module.d.ts +10 -7
  64. package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
  65. package/dist/adapters/http/controllers/entities/permission/module.mjs +50 -69
  66. package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
  67. package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts +7 -4
  68. package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts.map +1 -1
  69. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +27 -40
  70. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
  71. package/dist/adapters/http/controllers/entities/policy/module.d.ts +11 -9
  72. package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
  73. package/dist/adapters/http/controllers/entities/policy/module.mjs +54 -72
  74. package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
  75. package/dist/adapters/http/controllers/entities/realm/module.d.ts +13 -8
  76. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  77. package/dist/adapters/http/controllers/entities/realm/module.mjs +55 -74
  78. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  79. package/dist/adapters/http/controllers/entities/robot/module.d.ts +9 -6
  80. package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +1 -1
  81. package/dist/adapters/http/controllers/entities/robot/module.mjs +46 -63
  82. package/dist/adapters/http/controllers/entities/robot/module.mjs.map +1 -1
  83. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts +8 -5
  84. package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts.map +1 -1
  85. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +35 -48
  86. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +1 -1
  87. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts +7 -4
  88. package/dist/adapters/http/controllers/entities/robot-role/module.d.ts.map +1 -1
  89. package/dist/adapters/http/controllers/entities/robot-role/module.mjs +27 -40
  90. package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +1 -1
  91. package/dist/adapters/http/controllers/entities/role/module.d.ts +9 -6
  92. package/dist/adapters/http/controllers/entities/role/module.d.ts.map +1 -1
  93. package/dist/adapters/http/controllers/entities/role/module.mjs +42 -57
  94. package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
  95. package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts +8 -5
  96. package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts.map +1 -1
  97. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +35 -48
  98. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
  99. package/dist/adapters/http/controllers/entities/role-permission/module.d.ts +8 -5
  100. package/dist/adapters/http/controllers/entities/role-permission/module.d.ts.map +1 -1
  101. package/dist/adapters/http/controllers/entities/role-permission/module.mjs +35 -48
  102. package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
  103. package/dist/adapters/http/controllers/entities/scope/module.d.ts +9 -6
  104. package/dist/adapters/http/controllers/entities/scope/module.d.ts.map +1 -1
  105. package/dist/adapters/http/controllers/entities/scope/module.mjs +42 -57
  106. package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
  107. package/dist/adapters/http/controllers/entities/user/module.d.ts +9 -6
  108. package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
  109. package/dist/adapters/http/controllers/entities/user/module.mjs +42 -57
  110. package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
  111. package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts +8 -5
  112. package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts.map +1 -1
  113. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +35 -48
  114. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
  115. package/dist/adapters/http/controllers/entities/user-permission/module.d.ts +8 -5
  116. package/dist/adapters/http/controllers/entities/user-permission/module.d.ts.map +1 -1
  117. package/dist/adapters/http/controllers/entities/user-permission/module.mjs +35 -48
  118. package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
  119. package/dist/adapters/http/controllers/entities/user-role/module.d.ts +7 -4
  120. package/dist/adapters/http/controllers/entities/user-role/module.d.ts.map +1 -1
  121. package/dist/adapters/http/controllers/entities/user-role/module.mjs +27 -40
  122. package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
  123. package/dist/adapters/http/controllers/workflows/activate/module.d.ts +3 -2
  124. package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
  125. package/dist/adapters/http/controllers/workflows/activate/module.mjs +6 -11
  126. package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
  127. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts +7 -5
  128. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  129. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +19 -20
  130. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  131. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts +5 -3
  132. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts.map +1 -1
  133. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +12 -14
  134. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
  135. package/dist/adapters/http/controllers/workflows/jwks/module.d.ts +6 -3
  136. package/dist/adapters/http/controllers/workflows/jwks/module.d.ts.map +1 -1
  137. package/dist/adapters/http/controllers/workflows/jwks/module.mjs +17 -26
  138. package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
  139. package/dist/adapters/http/controllers/workflows/openid/module.d.ts.map +1 -1
  140. package/dist/adapters/http/controllers/workflows/openid/module.mjs +10 -7
  141. package/dist/adapters/http/controllers/workflows/openid/module.mjs.map +1 -1
  142. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +3 -3
  143. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
  144. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +7 -11
  145. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
  146. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +3 -3
  147. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
  148. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +7 -11
  149. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
  150. package/dist/adapters/http/controllers/workflows/register/module.d.ts +3 -3
  151. package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
  152. package/dist/adapters/http/controllers/workflows/register/module.mjs +7 -11
  153. package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
  154. package/dist/adapters/http/controllers/workflows/status/module.d.ts.map +1 -1
  155. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  156. package/dist/adapters/http/controllers/workflows/token/module.d.ts +5 -5
  157. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  158. package/dist/adapters/http/controllers/workflows/token/module.mjs +20 -21
  159. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  160. package/dist/adapters/http/controllers/workflows/token/utils/extract.d.ts +2 -2
  161. package/dist/adapters/http/controllers/workflows/token/utils/extract.d.ts.map +1 -1
  162. package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs +8 -7
  163. package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs.map +1 -1
  164. package/dist/adapters/http/index.d.ts +0 -2
  165. package/dist/adapters/http/index.d.ts.map +1 -1
  166. package/dist/adapters/http/index.mjs +4 -7
  167. package/dist/adapters/http/middleware/built-in/assets.d.ts +1 -0
  168. package/dist/adapters/http/middleware/built-in/assets.d.ts.map +1 -1
  169. package/dist/adapters/http/middleware/built-in/assets.mjs +9 -9
  170. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  171. package/dist/adapters/http/middleware/built-in/authorization/factory.d.ts.map +1 -1
  172. package/dist/adapters/http/middleware/built-in/authorization/factory.mjs +5 -2
  173. package/dist/adapters/http/middleware/built-in/authorization/factory.mjs.map +1 -1
  174. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +4 -10
  175. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  176. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +24 -39
  177. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  178. package/dist/adapters/http/middleware/built-in/cors.d.ts +1 -1
  179. package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
  180. package/dist/adapters/http/middleware/built-in/cors.mjs +18 -10
  181. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  182. package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
  183. package/dist/adapters/http/middleware/built-in/error.mjs +7 -18
  184. package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
  185. package/dist/adapters/http/middleware/built-in/index.mjs +2 -2
  186. package/dist/adapters/http/middleware/built-in/loggedin/module.d.ts +2 -2
  187. package/dist/adapters/http/middleware/built-in/loggedin/module.d.ts.map +1 -1
  188. package/dist/adapters/http/middleware/built-in/loggedin/module.mjs +3 -3
  189. package/dist/adapters/http/middleware/built-in/loggedin/module.mjs.map +1 -1
  190. package/dist/adapters/http/middleware/built-in/loggedin/user.d.ts +2 -2
  191. package/dist/adapters/http/middleware/built-in/loggedin/user.d.ts.map +1 -1
  192. package/dist/adapters/http/middleware/built-in/loggedin/user.mjs +3 -3
  193. package/dist/adapters/http/middleware/built-in/loggedin/user.mjs.map +1 -1
  194. package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
  195. package/dist/adapters/http/middleware/built-in/logger.mjs +21 -29
  196. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  197. package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
  198. package/dist/adapters/http/middleware/built-in/prometheus.mjs +2 -3
  199. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  200. package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
  201. package/dist/adapters/http/middleware/built-in/rate-limit.mjs +2 -2
  202. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  203. package/dist/adapters/http/middleware/built-in/swagger.d.ts +3 -4
  204. package/dist/adapters/http/middleware/built-in/swagger.d.ts.map +1 -1
  205. package/dist/adapters/http/middleware/built-in/swagger.mjs +4 -16
  206. package/dist/adapters/http/middleware/built-in/swagger.mjs.map +1 -1
  207. package/dist/adapters/http/middleware/index.mjs +2 -2
  208. package/dist/adapters/http/request/helpers/actor.d.ts +2 -2
  209. package/dist/adapters/http/request/helpers/actor.d.ts.map +1 -1
  210. package/dist/adapters/http/request/helpers/actor.mjs +3 -3
  211. package/dist/adapters/http/request/helpers/actor.mjs.map +1 -1
  212. package/dist/adapters/http/request/helpers/body-realm-id.d.ts +1 -2
  213. package/dist/adapters/http/request/helpers/body-realm-id.d.ts.map +1 -1
  214. package/dist/adapters/http/request/helpers/body-realm-id.mjs +3 -4
  215. package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
  216. package/dist/adapters/http/request/helpers/identity.d.ts +4 -4
  217. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  218. package/dist/adapters/http/request/helpers/identity.mjs +6 -7
  219. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  220. package/dist/adapters/http/request/helpers/index.d.ts +1 -0
  221. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  222. package/dist/adapters/http/request/helpers/index.mjs +3 -2
  223. package/dist/adapters/http/request/helpers/locations.d.ts +4 -0
  224. package/dist/adapters/http/request/helpers/locations.d.ts.map +1 -0
  225. package/dist/adapters/http/request/helpers/locations.mjs +28 -0
  226. package/dist/adapters/http/request/helpers/locations.mjs.map +1 -0
  227. package/dist/adapters/http/request/helpers/param-id.d.ts +5 -5
  228. package/dist/adapters/http/request/helpers/param-id.d.ts.map +1 -1
  229. package/dist/adapters/http/request/helpers/param-id.mjs +8 -9
  230. package/dist/adapters/http/request/helpers/param-id.mjs.map +1 -1
  231. package/dist/adapters/http/request/helpers/scopes.d.ts +3 -3
  232. package/dist/adapters/http/request/helpers/scopes.d.ts.map +1 -1
  233. package/dist/adapters/http/request/helpers/scopes.mjs +4 -5
  234. package/dist/adapters/http/request/helpers/scopes.mjs.map +1 -1
  235. package/dist/adapters/http/request/helpers/token.d.ts +3 -3
  236. package/dist/adapters/http/request/helpers/token.d.ts.map +1 -1
  237. package/dist/adapters/http/request/helpers/token.mjs +4 -5
  238. package/dist/adapters/http/request/helpers/token.mjs.map +1 -1
  239. package/dist/adapters/http/request/index.mjs +3 -2
  240. package/dist/adapters/http/request/permission/helper.d.ts +3 -3
  241. package/dist/adapters/http/request/permission/helper.d.ts.map +1 -1
  242. package/dist/adapters/http/request/permission/helper.mjs +4 -5
  243. package/dist/adapters/http/request/permission/helper.mjs.map +1 -1
  244. package/dist/adapters/http/request/permission/module.d.ts +3 -3
  245. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  246. package/dist/adapters/http/request/permission/module.mjs +5 -5
  247. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  248. package/dist/app/builder.d.ts +1 -2
  249. package/dist/app/builder.d.ts.map +1 -1
  250. package/dist/app/builder.mjs +0 -5
  251. package/dist/app/builder.mjs.map +1 -1
  252. package/dist/app/factory.d.ts.map +1 -1
  253. package/dist/app/factory.mjs +1 -1
  254. package/dist/app/factory.mjs.map +1 -1
  255. package/dist/app/index.mjs +1 -2
  256. package/dist/app/modules/config/types.d.ts +2 -2
  257. package/dist/app/modules/config/types.d.ts.map +1 -1
  258. package/dist/app/modules/constants.d.ts +0 -1
  259. package/dist/app/modules/constants.d.ts.map +1 -1
  260. package/dist/app/modules/constants.mjs +0 -1
  261. package/dist/app/modules/constants.mjs.map +1 -1
  262. package/dist/app/modules/http/constants.d.ts +3 -2
  263. package/dist/app/modules/http/constants.d.ts.map +1 -1
  264. package/dist/app/modules/http/constants.mjs.map +1 -1
  265. package/dist/app/modules/http/module.d.ts +2 -2
  266. package/dist/app/modules/http/module.d.ts.map +1 -1
  267. package/dist/app/modules/http/module.mjs +10 -17
  268. package/dist/app/modules/http/module.mjs.map +1 -1
  269. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  270. package/dist/app/modules/http/modules/controller.mjs +32 -51
  271. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  272. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  273. package/dist/app/modules/http/modules/middleware.mjs +3 -6
  274. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  275. package/dist/app/modules/index.d.ts +0 -1
  276. package/dist/app/modules/index.d.ts.map +1 -1
  277. package/dist/app/modules/index.mjs +1 -3
  278. package/dist/app/modules/runtime/module.d.ts.map +1 -1
  279. package/dist/app/modules/runtime/module.mjs +3 -1
  280. package/dist/app/modules/runtime/module.mjs.map +1 -1
  281. package/dist/cli/commands/healthcheck.mjs +1 -1
  282. package/dist/cli/commands/index.d.ts +0 -1
  283. package/dist/cli/commands/index.d.ts.map +1 -1
  284. package/dist/cli/commands/index.mjs +1 -2
  285. package/dist/cli/commands/start.d.ts.map +1 -1
  286. package/dist/cli/commands/start.mjs +22 -1
  287. package/dist/cli/commands/start.mjs.map +1 -1
  288. package/dist/cli/module.d.ts.map +1 -1
  289. package/dist/cli/module.mjs +1 -3
  290. package/dist/cli/module.mjs.map +1 -1
  291. package/dist/core/oauth2/helpers/erorr.d.ts +1 -2
  292. package/dist/core/oauth2/helpers/erorr.d.ts.map +1 -1
  293. package/dist/core/oauth2/helpers/erorr.mjs +11 -10
  294. package/dist/core/oauth2/helpers/erorr.mjs.map +1 -1
  295. package/dist/index.mjs +4 -7
  296. package/dist/swagger.json +7139 -2355
  297. package/dist/ui/client/.vite/ssr-manifest.json +15 -90
  298. package/dist/ui/client/assets/index-DJBdH-x_.js +64 -0
  299. package/dist/ui/client/index.html +1 -1
  300. package/dist/ui/server/server.js +1120 -23992
  301. package/dist/utils/error.d.ts.map +1 -1
  302. package/dist/utils/error.mjs +7 -8
  303. package/dist/utils/error.mjs.map +1 -1
  304. package/dist/utils/index.d.ts +1 -0
  305. package/dist/utils/index.d.ts.map +1 -1
  306. package/dist/utils/index.mjs +2 -1
  307. package/dist/utils/url.d.ts +10 -0
  308. package/dist/utils/url.d.ts.map +1 -0
  309. package/dist/utils/url.mjs +17 -0
  310. package/dist/utils/url.mjs.map +1 -0
  311. package/package.json +28 -28
  312. package/dist/adapters/http/server/index.d.ts +0 -3
  313. package/dist/adapters/http/server/index.d.ts.map +0 -1
  314. package/dist/adapters/http/server/index.mjs +0 -2
  315. package/dist/adapters/http/server/module.d.ts +0 -3
  316. package/dist/adapters/http/server/module.d.ts.map +0 -1
  317. package/dist/adapters/http/server/module.mjs +0 -10
  318. package/dist/adapters/http/server/module.mjs.map +0 -1
  319. package/dist/adapters/http/server/type.d.ts +0 -8
  320. package/dist/adapters/http/server/type.d.ts.map +0 -1
  321. package/dist/adapters/http/server/type.mjs +0 -1
  322. package/dist/adapters/http/swagger/index.d.ts +0 -3
  323. package/dist/adapters/http/swagger/index.d.ts.map +0 -1
  324. package/dist/adapters/http/swagger/index.mjs +0 -2
  325. package/dist/adapters/http/swagger/module.d.ts +0 -12
  326. package/dist/adapters/http/swagger/module.d.ts.map +0 -1
  327. package/dist/adapters/http/swagger/module.mjs +0 -75
  328. package/dist/adapters/http/swagger/module.mjs.map +0 -1
  329. package/dist/adapters/http/swagger/type.d.ts +0 -4
  330. package/dist/adapters/http/swagger/type.d.ts.map +0 -1
  331. package/dist/adapters/http/swagger/type.mjs +0 -1
  332. package/dist/app/modules/swagger/index.d.ts +0 -2
  333. package/dist/app/modules/swagger/index.d.ts.map +0 -1
  334. package/dist/app/modules/swagger/index.mjs +0 -2
  335. package/dist/app/modules/swagger/module.d.ts +0 -9
  336. package/dist/app/modules/swagger/module.d.ts.map +0 -1
  337. package/dist/app/modules/swagger/module.mjs +0 -32
  338. package/dist/app/modules/swagger/module.mjs.map +0 -1
  339. package/dist/cli/commands/swagger.d.ts +0 -8
  340. package/dist/cli/commands/swagger.d.ts.map +0 -1
  341. package/dist/cli/commands/swagger.mjs +0 -29
  342. package/dist/cli/commands/swagger.mjs.map +0 -1
  343. package/dist/ui/client/assets/index-Noe7uiOY.js +0 -41
@@ -1,4 +1,5 @@
1
- import type { Request, Response } from 'routup';
1
+ import type { IRoutupEvent } from 'routup';
2
+ import type { ActivatePayload } from '@authup/core-http-kit';
2
3
  import type { IRegistrationService } from '../../../../../core/index.ts';
3
4
  export type ActivateControllerContext = {
4
5
  service: IRegistrationService;
@@ -6,6 +7,6 @@ export type ActivateControllerContext = {
6
7
  export declare class ActivateController {
7
8
  protected service: IRegistrationService;
8
9
  constructor(ctx: ActivateControllerContext);
9
- execute(data: any, req: Request, res: Response): Promise<any>;
10
+ execute(data: ActivatePayload, event: IRoutupEvent): Promise<null>;
10
11
  }
11
12
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/activate/module.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,MAAM,MAAM,yBAAyB,GAAG;IACpC,OAAO,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,qBACa,kBAAkB;IAC3B,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAE5B,GAAG,EAAE,yBAAyB;IAKpC,OAAO,CACA,IAAI,EAAE,GAAG,EACN,GAAG,EAAE,OAAO,EACX,GAAG,EAAE,QAAQ,GAC3B,OAAO,CAAC,GAAG,CAAC;CAQlB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/activate/module.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,MAAM,MAAM,yBAAyB,GAAG;IACpC,OAAO,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,qBACa,kBAAkB;IAC3B,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAE5B,GAAG,EAAE,yBAAyB;IAKpC,OAAO,CACA,IAAI,EAAE,eAAe,EAClB,KAAK,EAAE,YAAY,GAChC,OAAO,CAAC,IAAI,CAAC;CASnB"}
@@ -1,6 +1,5 @@
1
1
  import { ActivateRequestValidator } from "./validator.mjs";
2
- import { sendAccepted } from "routup";
3
- import { DBody, DController, DPost, DRequest, DResponse } from "@routup/decorators";
2
+ import { DBody, DContext, DController, DPost } from "@routup/decorators";
4
3
  //#region src/adapters/http/controllers/workflows/activate/module.ts
5
4
  function _ts_decorate(decorators, target, key, desc) {
6
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -21,23 +20,19 @@ var ActivateController = class {
21
20
  constructor(ctx) {
22
21
  this.service = ctx.service;
23
22
  }
24
- async execute(data, req, res) {
23
+ async execute(data, event) {
25
24
  const validated = await new ActivateRequestValidator().run(data);
26
25
  await this.service.activate(validated);
27
- return sendAccepted(res);
26
+ event.response.status = 202;
27
+ return null;
28
28
  }
29
29
  };
30
30
  _ts_decorate([
31
31
  DPost("", []),
32
32
  _ts_param(0, DBody()),
33
- _ts_param(1, DRequest()),
34
- _ts_param(2, DResponse()),
33
+ _ts_param(1, DContext()),
35
34
  _ts_metadata("design:type", Function),
36
- _ts_metadata("design:paramtypes", [
37
- Object,
38
- typeof Request === "undefined" ? Object : Request,
39
- typeof Response === "undefined" ? Object : Response
40
- ]),
35
+ _ts_metadata("design:paramtypes", [typeof ActivatePayload === "undefined" ? Object : ActivatePayload, typeof IRoutupEvent === "undefined" ? Object : IRoutupEvent]),
41
36
  _ts_metadata("design:returntype", Promise)
42
37
  ], ActivateController.prototype, "execute", null);
43
38
  ActivateController = _ts_decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["DBody","DController","DPost","DRequest","DResponse","sendAccepted","ActivateRequestValidator","ActivateController","service","ctx","execute","data","req","res","validator","validated","run","activate"],"sources":["../../../../../../src/adapters/http/controllers/workflows/activate/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n DBody, \n DController, \n DPost, \n DRequest, \n DResponse,\n} from '@routup/decorators';\nimport type { Request, Response } from 'routup';\nimport { sendAccepted } from 'routup';\nimport type { IRegistrationService } from '../../../../../core/index.ts';\nimport { ActivateRequestValidator } from './validator.ts';\n\nexport type ActivateControllerContext = {\n service: IRegistrationService,\n};\n\n@DController('/activate')\nexport class ActivateController {\n protected service: IRegistrationService;\n\n constructor(ctx: ActivateControllerContext) {\n this.service = ctx.service;\n }\n\n @DPost('', [])\n async execute(\n @DBody() data: any,\n @DRequest() req: Request,\n @DResponse() res: Response,\n ): Promise<any> {\n const validator = new ActivateRequestValidator();\n const validated = await validator.run(data);\n\n await this.service.activate(validated);\n\n return sendAccepted(res);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwBA,IAAaO,qBAAb,MAAaA;CACCC;CAEV,YAAYC,KAAgC;AACxC,OAAKD,UAAUC,IAAID;;CAGvB,MACME,QACF,MACA,KACA,KACY;EAEZ,MAAMK,YAAY,MAAMD,IADFR,0BACEQ,CAAUE,IAAIL,KAAAA;AAEtC,QAAM,KAAKH,QAAQS,SAASF,UAAAA;AAE5B,SAAOV,aAAaQ,IAAAA"}
1
+ {"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DPost","ActivateRequestValidator","ActivateController","service","ctx","execute","data","event","validator","validated","run","activate","response","status"],"sources":["../../../../../../src/adapters/http/controllers/workflows/activate/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n DBody,\n DContext,\n DController,\n DPost,\n} from '@routup/decorators';\nimport type { IRoutupEvent } from 'routup';\nimport type { ActivatePayload } from '@authup/core-http-kit';\nimport type { IRegistrationService } from '../../../../../core/index.ts';\nimport { ActivateRequestValidator } from './validator.ts';\n\nexport type ActivateControllerContext = {\n service: IRegistrationService,\n};\n\n@DController('/activate')\nexport class ActivateController {\n protected service: IRegistrationService;\n\n constructor(ctx: ActivateControllerContext) {\n this.service = ctx.service;\n }\n\n @DPost('', [])\n async execute(\n @DBody() data: ActivatePayload,\n @DContext() event: IRoutupEvent,\n ): Promise<null> {\n const validator = new ActivateRequestValidator();\n const validated = await validator.run(data);\n\n await this.service.activate(validated);\n\n event.response.status = 202;\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,IAAaK,qBAAb,MAAaA;CACCC;CAEV,YAAYC,KAAgC;AACxC,OAAKD,UAAUC,IAAID;;CAGvB,MACME,QACF,MACA,OACa;EAEb,MAAMI,YAAY,MAAMD,IADFP,0BACEO,CAAUE,IAAIJ,KAAAA;AAEtC,QAAM,KAAKH,QAAQQ,SAASF,UAAAA;AAE5BF,QAAMK,SAASC,SAAS;AACxB,SAAO"}
@@ -1,15 +1,17 @@
1
- import { RoutupContainerAdapter } from '@validup/adapter-routup';
2
- import type { OAuth2AuthorizationCodeRequest } from '@authup/core-kit';
1
+ import type { IRoutupEvent } from 'routup';
3
2
  import { HTTPOAuth2Authorizer } from '../../../adapters/index.ts';
4
3
  import type { IOAuth2AuthorizationCodeRequestVerifier } from '../../../../../core/index.ts';
4
+ import { OAuth2AuthorizationCodeRequestValidator } from '../../../../../core/index.ts';
5
5
  import type { AuthorizeControllerContext, AuthorizeControllerOptions } from './types.ts';
6
6
  export declare class AuthorizeController {
7
7
  protected options: AuthorizeControllerOptions;
8
8
  protected codeRequestVerifier: IOAuth2AuthorizationCodeRequestVerifier;
9
- protected codeRequestValidator: RoutupContainerAdapter<OAuth2AuthorizationCodeRequest>;
9
+ protected codeRequestValidator: OAuth2AuthorizationCodeRequestValidator;
10
10
  protected authorizer: HTTPOAuth2Authorizer;
11
11
  constructor(ctx: AuthorizeControllerContext);
12
- confirm(req: any, res: any): Promise<void>;
13
- serve(req: any, res: any): Promise<void>;
12
+ confirm(event: IRoutupEvent): Promise<{
13
+ url: string;
14
+ }>;
15
+ serve(event: IRoutupEvent): Promise<string>;
14
16
  }
15
17
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/authorize/module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAU,8BAA8B,EAAS,MAAM,kBAAkB,CAAC;AAItF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AAG5F,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAEzF,qBACa,mBAAmB;IAI5B,SAAS,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAE9C,SAAS,CAAC,mBAAmB,EAAG,uCAAuC,CAAC;IAExE,SAAS,CAAC,oBAAoB,EAAG,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;IAExF,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC;gBAI/B,GAAG,EAAE,0BAA0B;IAoBrC,OAAO,CACG,GAAG,EAAE,GAAG,EACP,GAAG,EAAE,GAAG,GACtB,OAAO,CAAC,IAAI,CAAC;IAwBV,KAAK,CACK,GAAG,EAAE,GAAG,EACP,GAAG,EAAE,GAAG,GACtB,OAAO,CAAC,IAAI,CAAC;CAgFnB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/authorize/module.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAM3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AAEvF,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAEzF,qBACa,mBAAmB;IAI5B,SAAS,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAE9C,SAAS,CAAC,mBAAmB,EAAG,uCAAuC,CAAC;IAExE,SAAS,CAAC,oBAAoB,EAAG,uCAAuC,CAAC;IAEzE,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC;gBAI/B,GAAG,EAAE,0BAA0B;IAmBrC,OAAO,CAAa,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBlE,KAAK,CAAa,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CA8EhE"}
@@ -1,17 +1,18 @@
1
1
  import { OAuth2AuthorizationCodeRequestValidator } from "../../../../../core/oauth2/authorization/code-request/validator.mjs";
2
2
  import "../../../../../core/index.mjs";
3
+ import { readFromLocations } from "../../../request/helpers/locations.mjs";
4
+ import "../../../request/index.mjs";
3
5
  import { HTTPOAuth2Authorizer } from "../../../adapters/oauth2/authorization/module.mjs";
4
6
  import "../../../adapters/index.mjs";
5
7
  import { ForceUserLoggedInMiddleware } from "../../../middleware/built-in/loggedin/user.mjs";
6
8
  import { UI_DIST_PATH, UI_SOURCE_PATH } from "../../../../../path.mjs";
9
+ import { VITE_SERVER_STORE_KEY } from "../../../middleware/built-in/assets.mjs";
7
10
  import { sanitizeError } from "../../../../../utils/error.mjs";
8
11
  import "../../../../../utils/index.mjs";
9
12
  import "../../../middleware/index.mjs";
10
13
  import path from "node:path";
11
14
  import { CodeTransformation, isCodeTransformation } from "typeorm-extension";
12
- import { send, useRequestParam } from "routup";
13
- import { RoutupContainerAdapter } from "@validup/adapter-routup";
14
- import { DController, DGet, DPost, DRequest, DResponse } from "@routup/decorators";
15
+ import { DContext, DController, DGet, DPost } from "@routup/decorators";
15
16
  import { load } from "locter";
16
17
  import { URL } from "node:url";
17
18
  import fs from "node:fs";
@@ -38,8 +39,7 @@ var AuthorizeController = class {
38
39
  constructor(ctx) {
39
40
  this.options = ctx.options;
40
41
  this.codeRequestVerifier = ctx.codeRequestVerifier;
41
- const validator = new OAuth2AuthorizationCodeRequestValidator();
42
- this.codeRequestValidator = new RoutupContainerAdapter(validator);
42
+ this.codeRequestValidator = new OAuth2AuthorizationCodeRequestValidator();
43
43
  this.authorizer = new HTTPOAuth2Authorizer({
44
44
  codeRequestVerifier: this.codeRequestVerifier,
45
45
  accessTokenIssuer: ctx.accessTokenIssuer,
@@ -48,22 +48,23 @@ var AuthorizeController = class {
48
48
  identityResolver: ctx.identityResolver
49
49
  });
50
50
  }
51
- async confirm(req, res) {
52
- const result = await this.authorizer.authorizeWithRequest(req);
51
+ async confirm(event) {
52
+ const result = await this.authorizer.authorizeWithRequest(event);
53
53
  const url = new URL(result.redirectUri);
54
54
  if (result.state) url.searchParams.set("state", result.state);
55
55
  if (result.authorizationCode) url.searchParams.set("code", result.authorizationCode);
56
56
  if (result.accessToken) url.searchParams.set("access_token", result.accessToken);
57
57
  if (result.idToken) url.searchParams.set("id_token", result.idToken);
58
- return send(res, { url: url.href });
58
+ return { url: url.href };
59
59
  }
60
- async serve(req, res) {
60
+ async serve(event) {
61
61
  let codeRequest;
62
62
  let client;
63
63
  let scopes;
64
64
  let error;
65
65
  try {
66
- const data = await this.codeRequestValidator.run(req, { locations: ["body", "query"] });
66
+ const merged = await readFromLocations(event, ["body", "query"]);
67
+ const data = await this.codeRequestValidator.run(merged);
67
68
  const result = await this.codeRequestVerifier.verify(data);
68
69
  client = result.client;
69
70
  scopes = result.scopes;
@@ -89,9 +90,7 @@ var AuthorizeController = class {
89
90
  let manifest;
90
91
  let render;
91
92
  if (isJIT) {
92
- /**
93
- * @type {import('vite').ViteDevServer}
94
- */ const vite = useRequestParam(req, "viteServer");
93
+ const vite = event.store[VITE_SERVER_STORE_KEY];
95
94
  html = await fs.promises.readFile(path.join(UI_SOURCE_PATH, "index.html"), "utf-8");
96
95
  html = await vite.transformIndexHtml("/", html);
97
96
  manifest = {};
@@ -106,23 +105,23 @@ var AuthorizeController = class {
106
105
  manifest,
107
106
  payload
108
107
  });
109
- return send(res, html.replace("<!--preload-links-->", preloadLinks).replace("<!--app-html-->", appHtml));
108
+ const body = html.replace("<!--preload-links-->", preloadLinks).replace("<!--app-html-->", appHtml);
109
+ event.response.headers.set("content-type", "text/html; charset=utf-8");
110
+ return body;
110
111
  }
111
112
  };
112
113
  _ts_decorate([
113
114
  DPost("", [ForceUserLoggedInMiddleware]),
114
- _ts_param(0, DRequest()),
115
- _ts_param(1, DResponse()),
115
+ _ts_param(0, DContext()),
116
116
  _ts_metadata("design:type", Function),
117
- _ts_metadata("design:paramtypes", [Object, Object]),
117
+ _ts_metadata("design:paramtypes", [typeof IRoutupEvent === "undefined" ? Object : IRoutupEvent]),
118
118
  _ts_metadata("design:returntype", Promise)
119
119
  ], AuthorizeController.prototype, "confirm", null);
120
120
  _ts_decorate([
121
121
  DGet("", []),
122
- _ts_param(0, DRequest()),
123
- _ts_param(1, DResponse()),
122
+ _ts_param(0, DContext()),
124
123
  _ts_metadata("design:type", Function),
125
- _ts_metadata("design:paramtypes", [Object, Object]),
124
+ _ts_metadata("design:paramtypes", [typeof IRoutupEvent === "undefined" ? Object : IRoutupEvent]),
126
125
  _ts_metadata("design:returntype", Promise)
127
126
  ], AuthorizeController.prototype, "serve", null);
128
127
  AuthorizeController = _ts_decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["DController","DGet","DPost","DRequest","DResponse","load","fs","path","URL","send","useRequestParam","RoutupContainerAdapter","CodeTransformation","isCodeTransformation","UI_DIST_PATH","UI_SOURCE_PATH","ForceUserLoggedInMiddleware","HTTPOAuth2Authorizer","OAuth2AuthorizationCodeRequestValidator","sanitizeError","AuthorizeController","options","codeRequestVerifier","codeRequestValidator","authorizer","ctx","validator","accessTokenIssuer","openIdTokenIssuer","codeIssuer","identityResolver","confirm","req","res","result","authorizeWithRequest","url","redirectUri","state","searchParams","set","authorizationCode","accessToken","idToken","href","serve","codeRequest","client","scopes","error","data","run","locations","verify","e","normalized","message","isJIT","JUST_IN_TIME","payload","config","baseURL","html","manifest","render","vite","promises","readFile","join","transformIndexHtml","ssrLoadModule","JSON","parse","appHtml","preloadLinks","replace"],"sources":["../../../../../../src/adapters/http/controllers/workflows/authorize/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n DController, \n DGet, \n DPost, \n DRequest, \n DResponse,\n} from '@routup/decorators';\nimport { load } from 'locter';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { URL } from 'node:url';\nimport { send, useRequestParam } from 'routup';\nimport { RoutupContainerAdapter } from '@validup/adapter-routup';\nimport type { Client, OAuth2AuthorizationCodeRequest, Scope } from '@authup/core-kit';\nimport { CodeTransformation, isCodeTransformation } from 'typeorm-extension';\nimport { UI_DIST_PATH, UI_SOURCE_PATH } from '../../../../../path.ts';\nimport { ForceUserLoggedInMiddleware } from '../../../middleware/index.ts';\nimport { HTTPOAuth2Authorizer } from '../../../adapters/index.ts';\nimport type { IOAuth2AuthorizationCodeRequestVerifier } from '../../../../../core/index.ts';\nimport { OAuth2AuthorizationCodeRequestValidator } from '../../../../../core/index.ts';\nimport { sanitizeError } from '../../../../../utils/index.ts';\nimport type { AuthorizeControllerContext, AuthorizeControllerOptions } from './types.ts';\n\n@DController('/authorize')\nexport class AuthorizeController {\n // todo: maybe /realms/<realm>/protocol/openid-connect/authorize\n // todo: maybe /realms/<realm>/[...]/authorize\n\n protected options: AuthorizeControllerOptions;\n\n protected codeRequestVerifier : IOAuth2AuthorizationCodeRequestVerifier;\n\n protected codeRequestValidator : RoutupContainerAdapter<OAuth2AuthorizationCodeRequest>;\n\n protected authorizer: HTTPOAuth2Authorizer;\n\n // ---------------------------------------------------------\n\n constructor(ctx: AuthorizeControllerContext) {\n this.options = ctx.options;\n\n this.codeRequestVerifier = ctx.codeRequestVerifier;\n\n const validator = new OAuth2AuthorizationCodeRequestValidator();\n this.codeRequestValidator = new RoutupContainerAdapter(validator);\n\n this.authorizer = new HTTPOAuth2Authorizer({\n codeRequestVerifier: this.codeRequestVerifier,\n accessTokenIssuer: ctx.accessTokenIssuer,\n openIdTokenIssuer: ctx.openIdTokenIssuer,\n codeIssuer: ctx.codeIssuer,\n identityResolver: ctx.identityResolver,\n });\n }\n\n // ---------------------------------------------------------\n\n @DPost('', [ForceUserLoggedInMiddleware])\n async confirm(\n @DRequest() req: any,\n @DResponse() res: any,\n ): Promise<void> {\n const result = await this.authorizer.authorizeWithRequest(req);\n\n const url = new URL(result.redirectUri);\n if (result.state) {\n url.searchParams.set('state', result.state);\n }\n\n if (result.authorizationCode) {\n url.searchParams.set('code', result.authorizationCode);\n }\n\n if (result.accessToken) {\n url.searchParams.set('access_token', result.accessToken);\n }\n\n if (result.idToken) {\n url.searchParams.set('id_token', result.idToken);\n }\n\n return send(res, { url: url.href });\n }\n\n @DGet('', [])\n async serve(\n @DRequest() req: any,\n @DResponse() res: any,\n ): Promise<void> {\n let codeRequest : OAuth2AuthorizationCodeRequest | undefined;\n\n let client : Client | undefined;\n let scopes : Scope[] | undefined;\n\n let error : Error | undefined;\n\n try {\n const data = await this.codeRequestValidator.run(req, { locations: ['body', 'query'] });\n\n const result = await this.codeRequestVerifier.verify(data);\n client = result.client;\n scopes = result.scopes;\n\n codeRequest = result.data;\n } catch (e) {\n const normalized = sanitizeError(e);\n error = {\n ...normalized,\n message: normalized.message,\n };\n }\n\n const isJIT = isCodeTransformation(CodeTransformation.JUST_IN_TIME);\n\n const payload = {\n config: { baseURL: this.options.baseURL },\n data: {\n codeRequest,\n error,\n client,\n scopes,\n },\n };\n\n let html : string;\n let manifest : Record<string, any>;\n let render : CallableFunction;\n\n if (isJIT) {\n /**\n * @type {import('vite').ViteDevServer}\n */\n const vite = useRequestParam(req, 'viteServer');\n\n html = await fs.promises.readFile(\n path.join(UI_SOURCE_PATH, 'index.html'),\n 'utf-8',\n );\n html = await vite.transformIndexHtml('/', html);\n manifest = {};\n render = (await vite.ssrLoadModule('/src/server.ts')).render;\n } else {\n html = await fs.promises.readFile(\n path.join(UI_DIST_PATH, 'client', 'index.html'),\n 'utf-8',\n );\n\n manifest = JSON.parse(await fs.promises.readFile(\n path.join(UI_DIST_PATH, 'client', '.vite', 'ssr-manifest.json'),\n 'utf-8',\n ));\n\n render = (await load(path.join(UI_DIST_PATH, 'server', 'server.js'))).render;\n }\n\n const [appHtml, preloadLinks] = await render({\n url: '/authorize',\n manifest,\n payload,\n });\n\n return send(\n res,\n html\n .replace('<!--preload-links-->', preloadLinks)\n .replace('<!--app-html-->', appHtml),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,IAAaoB,sBAAb,MAAaA;CAICC;CAEAC;CAEAC;CAEAC;CAIV,YAAYC,KAAiC;AACzC,OAAKJ,UAAUI,IAAIJ;AAEnB,OAAKC,sBAAsBG,IAAIH;EAE/B,MAAMI,YAAY,IAAIR,yCAAAA;AACtB,OAAKK,uBAAuB,IAAIZ,uBAAuBe,UAAAA;AAEvD,OAAKF,aAAa,IAAIP,qBAAqB;GACvCK,qBAAqB,KAAKA;GAC1BK,mBAAmBF,IAAIE;GACvBC,mBAAmBH,IAAIG;GACvBC,YAAYJ,IAAII;GAChBC,kBAAkBL,IAAIK;GAC1B,CAAA;;CAKJ,MACMC,QACF,KACA,KACa;EACb,MAAMG,SAAS,MAAM,KAAKV,WAAWW,qBAAqBH,IAAAA;EAE1D,MAAMI,MAAM,IAAI5B,IAAI0B,OAAOG,YAAW;AACtC,MAAIH,OAAOI,MACPF,KAAIG,aAAaC,IAAI,SAASN,OAAOI,MAAK;AAG9C,MAAIJ,OAAOO,kBACPL,KAAIG,aAAaC,IAAI,QAAQN,OAAOO,kBAAiB;AAGzD,MAAIP,OAAOQ,YACPN,KAAIG,aAAaC,IAAI,gBAAgBN,OAAOQ,YAAW;AAG3D,MAAIR,OAAOS,QACPP,KAAIG,aAAaC,IAAI,YAAYN,OAAOS,QAAO;AAGnD,SAAOlC,KAAKwB,KAAK,EAAEG,KAAKA,IAAIQ,MAAK,CAAA;;CAGrC,MACMC,MACF,KACA,KACa;EACb,IAAIC;EAEJ,IAAIC;EACJ,IAAIC;EAEJ,IAAIC;AAEJ,MAAI;GACA,MAAMC,OAAO,MAAM,KAAK3B,qBAAqB4B,IAAInB,KAAK,EAAEoB,WAAW,CAAC,QAAQ,QAAQ,EAAC,CAAA;GAErF,MAAMlB,SAAS,MAAM,KAAKZ,oBAAoB+B,OAAOH,KAAAA;AACrDH,YAASb,OAAOa;AAChBC,YAASd,OAAOc;AAEhBF,iBAAcZ,OAAOgB;WAChBI,GAAG;GACR,MAAMC,aAAapC,cAAcmC,EAAAA;AACjCL,WAAQ;IACJ,GAAGM;IACHC,SAASD,WAAWC;IACxB;;EAGJ,MAAMC,QAAQ5C,qBAAqBD,mBAAmB8C,aAAY;EAElE,MAAMC,UAAU;GACZC,QAAQ,EAAEC,SAAS,KAAKxC,QAAQwC,SAAQ;GACxCX,MAAM;IACFJ;IACAG;IACAF;IACAC;IACJ;GACJ;EAEA,IAAIc;EACJ,IAAIC;EACJ,IAAIC;AAEJ,MAAIP,OAAO;;;MAIP,MAAMQ,OAAOvD,gBAAgBsB,KAAK,aAAA;AAElC8B,UAAO,MAAMxD,GAAG4D,SAASC,SACrB5D,KAAK6D,KAAKrD,gBAAgB,aAAA,EAC1B,QAAA;AAEJ+C,UAAO,MAAMG,KAAKI,mBAAmB,KAAKP,KAAAA;AAC1CC,cAAW,EAAC;AACZC,aAAU,MAAMC,KAAKK,cAAc,iBAAgB,EAAGN;SACnD;AACHF,UAAO,MAAMxD,GAAG4D,SAASC,SACrB5D,KAAK6D,KAAKtD,cAAc,UAAU,aAAA,EAClC,QAAA;AAGJiD,cAAWQ,KAAKC,MAAM,MAAMlE,GAAG4D,SAASC,SACpC5D,KAAK6D,KAAKtD,cAAc,UAAU,SAAS,oBAAA,EAC3C,QAAA,CAAA;AAGJkD,aAAU,MAAM3D,KAAKE,KAAK6D,KAAKtD,cAAc,UAAU,YAAA,CAAY,EAAGkD;;EAG1E,MAAM,CAACS,SAASC,gBAAgB,MAAMV,OAAO;GACzC5B,KAAK;GACL2B;GACAJ;GACJ,CAAA;AAEA,SAAOlD,KACHwB,KACA6B,KACKa,QAAQ,wBAAwBD,aAAAA,CAChCC,QAAQ,mBAAmBF,QAAAA,CAAAA;;;;YA5G5BzD,4BAAAA,CAAAA"}
1
+ {"version":3,"file":"module.mjs","names":["DContext","DController","DGet","DPost","load","fs","path","URL","CodeTransformation","isCodeTransformation","UI_DIST_PATH","UI_SOURCE_PATH","ForceUserLoggedInMiddleware","VITE_SERVER_STORE_KEY","HTTPOAuth2Authorizer","readFromLocations","OAuth2AuthorizationCodeRequestValidator","sanitizeError","AuthorizeController","options","codeRequestVerifier","codeRequestValidator","authorizer","ctx","accessTokenIssuer","openIdTokenIssuer","codeIssuer","identityResolver","confirm","event","result","authorizeWithRequest","url","redirectUri","state","searchParams","set","authorizationCode","accessToken","idToken","href","serve","codeRequest","client","scopes","error","merged","data","run","verify","e","normalized","message","isJIT","JUST_IN_TIME","payload","config","baseURL","html","manifest","render","vite","store","promises","readFile","join","transformIndexHtml","ssrLoadModule","JSON","parse","appHtml","preloadLinks","body","replace","response","headers"],"sources":["../../../../../../src/adapters/http/controllers/workflows/authorize/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n DContext,\n DController,\n DGet,\n DPost,\n} from '@routup/decorators';\nimport { load } from 'locter';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { URL } from 'node:url';\n\nimport type { IRoutupEvent } from 'routup';\nimport type { ViteDevServer } from 'vite';\nimport type { Client, OAuth2AuthorizationCodeRequest, Scope } from '@authup/core-kit';\nimport { CodeTransformation, isCodeTransformation } from 'typeorm-extension';\nimport { UI_DIST_PATH, UI_SOURCE_PATH } from '../../../../../path.ts';\nimport { ForceUserLoggedInMiddleware, VITE_SERVER_STORE_KEY } from '../../../middleware/index.ts';\nimport { HTTPOAuth2Authorizer } from '../../../adapters/index.ts';\nimport { readFromLocations } from '../../../request/index.ts';\nimport type { IOAuth2AuthorizationCodeRequestVerifier } from '../../../../../core/index.ts';\nimport { OAuth2AuthorizationCodeRequestValidator } from '../../../../../core/index.ts';\nimport { sanitizeError } from '../../../../../utils/index.ts';\nimport type { AuthorizeControllerContext, AuthorizeControllerOptions } from './types.ts';\n\n@DController('/authorize')\nexport class AuthorizeController {\n // todo: maybe /realms/<realm>/protocol/openid-connect/authorize\n // todo: maybe /realms/<realm>/[...]/authorize\n\n protected options: AuthorizeControllerOptions;\n\n protected codeRequestVerifier : IOAuth2AuthorizationCodeRequestVerifier;\n\n protected codeRequestValidator : OAuth2AuthorizationCodeRequestValidator;\n\n protected authorizer: HTTPOAuth2Authorizer;\n\n // ---------------------------------------------------------\n\n constructor(ctx: AuthorizeControllerContext) {\n this.options = ctx.options;\n\n this.codeRequestVerifier = ctx.codeRequestVerifier;\n\n this.codeRequestValidator = new OAuth2AuthorizationCodeRequestValidator();\n\n this.authorizer = new HTTPOAuth2Authorizer({\n codeRequestVerifier: this.codeRequestVerifier,\n accessTokenIssuer: ctx.accessTokenIssuer,\n openIdTokenIssuer: ctx.openIdTokenIssuer,\n codeIssuer: ctx.codeIssuer,\n identityResolver: ctx.identityResolver,\n });\n }\n\n // ---------------------------------------------------------\n\n @DPost('', [ForceUserLoggedInMiddleware])\n async confirm(@DContext() event: IRoutupEvent): Promise<{ url: string }> {\n const result = await this.authorizer.authorizeWithRequest(event);\n\n const url = new URL(result.redirectUri);\n if (result.state) {\n url.searchParams.set('state', result.state);\n }\n\n if (result.authorizationCode) {\n url.searchParams.set('code', result.authorizationCode);\n }\n\n if (result.accessToken) {\n url.searchParams.set('access_token', result.accessToken);\n }\n\n if (result.idToken) {\n url.searchParams.set('id_token', result.idToken);\n }\n\n return { url: url.href };\n }\n\n @DGet('', [])\n async serve(@DContext() event: IRoutupEvent): Promise<string> {\n let codeRequest : OAuth2AuthorizationCodeRequest | undefined;\n\n let client : Client | undefined;\n let scopes : Scope[] | undefined;\n\n let error : Error | undefined;\n\n try {\n const merged = await readFromLocations(event, ['body', 'query']);\n const data = await this.codeRequestValidator.run(merged);\n\n const result = await this.codeRequestVerifier.verify(data);\n client = result.client;\n scopes = result.scopes;\n\n codeRequest = result.data;\n } catch (e) {\n const normalized = sanitizeError(e);\n error = {\n ...normalized,\n message: normalized.message,\n };\n }\n\n const isJIT = isCodeTransformation(CodeTransformation.JUST_IN_TIME);\n\n const payload = {\n config: { baseURL: this.options.baseURL },\n data: {\n codeRequest,\n error,\n client,\n scopes,\n },\n };\n\n let html : string;\n let manifest : Record<string, any>;\n let render : CallableFunction;\n\n if (isJIT) {\n const vite = event.store[VITE_SERVER_STORE_KEY] as ViteDevServer;\n\n html = await fs.promises.readFile(\n path.join(UI_SOURCE_PATH, 'index.html'),\n 'utf-8',\n );\n html = await vite.transformIndexHtml('/', html);\n manifest = {};\n render = (await vite.ssrLoadModule('/src/server.ts')).render;\n } else {\n html = await fs.promises.readFile(\n path.join(UI_DIST_PATH, 'client', 'index.html'),\n 'utf-8',\n );\n\n manifest = JSON.parse(await fs.promises.readFile(\n path.join(UI_DIST_PATH, 'client', '.vite', 'ssr-manifest.json'),\n 'utf-8',\n ));\n\n render = (await load(path.join(UI_DIST_PATH, 'server', 'server.js'))).render;\n }\n\n const [appHtml, preloadLinks] = await render({\n url: '/authorize',\n manifest,\n payload,\n });\n\n const body = html\n .replace('<!--preload-links-->', preloadLinks)\n .replace('<!--app-html-->', appHtml);\n\n event.response.headers.set('content-type', 'text/html; charset=utf-8');\n return body;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAakB,sBAAb,MAAaA;CAICC;CAEAC;CAEAC;CAEAC;CAIV,YAAYC,KAAiC;AACzC,OAAKJ,UAAUI,IAAIJ;AAEnB,OAAKC,sBAAsBG,IAAIH;AAE/B,OAAKC,uBAAuB,IAAIL,yCAAAA;AAEhC,OAAKM,aAAa,IAAIR,qBAAqB;GACvCM,qBAAqB,KAAKA;GAC1BI,mBAAmBD,IAAIC;GACvBC,mBAAmBF,IAAIE;GACvBC,YAAYH,IAAIG;GAChBC,kBAAkBJ,IAAII;GAC1B,CAAA;;CAKJ,MACMC,QAAQ,OAA2D;EACrE,MAAME,SAAS,MAAM,KAAKR,WAAWS,qBAAqBF,MAAAA;EAE1D,MAAMG,MAAM,IAAIzB,IAAIuB,OAAOG,YAAW;AACtC,MAAIH,OAAOI,MACPF,KAAIG,aAAaC,IAAI,SAASN,OAAOI,MAAK;AAG9C,MAAIJ,OAAOO,kBACPL,KAAIG,aAAaC,IAAI,QAAQN,OAAOO,kBAAiB;AAGzD,MAAIP,OAAOQ,YACPN,KAAIG,aAAaC,IAAI,gBAAgBN,OAAOQ,YAAW;AAG3D,MAAIR,OAAOS,QACPP,KAAIG,aAAaC,IAAI,YAAYN,OAAOS,QAAO;AAGnD,SAAO,EAAEP,KAAKA,IAAIQ,MAAK;;CAG3B,MACMC,MAAM,OAAkD;EAC1D,IAAIC;EAEJ,IAAIC;EACJ,IAAIC;EAEJ,IAAIC;AAEJ,MAAI;GACA,MAAMC,SAAS,MAAM/B,kBAAkBc,OAAO,CAAC,QAAQ,QAAQ,CAAA;GAC/D,MAAMkB,OAAO,MAAM,KAAK1B,qBAAqB2B,IAAIF,OAAAA;GAEjD,MAAMhB,SAAS,MAAM,KAAKV,oBAAoB6B,OAAOF,KAAAA;AACrDJ,YAASb,OAAOa;AAChBC,YAASd,OAAOc;AAEhBF,iBAAcZ,OAAOiB;WAChBG,GAAG;GACR,MAAMC,aAAalC,cAAciC,EAAAA;AACjCL,WAAQ;IACJ,GAAGM;IACHC,SAASD,WAAWC;IACxB;;EAGJ,MAAMC,QAAQ5C,qBAAqBD,mBAAmB8C,aAAY;EAElE,MAAMC,UAAU;GACZC,QAAQ,EAAEC,SAAS,KAAKtC,QAAQsC,SAAQ;GACxCV,MAAM;IACFL;IACAG;IACAF;IACAC;IACJ;GACJ;EAEA,IAAIc;EACJ,IAAIC;EACJ,IAAIC;AAEJ,MAAIP,OAAO;GACP,MAAMQ,OAAOhC,MAAMiC,MAAMjD;AAEzB6C,UAAO,MAAMrD,GAAG0D,SAASC,SACrB1D,KAAK2D,KAAKtD,gBAAgB,aAAA,EAC1B,QAAA;AAEJ+C,UAAO,MAAMG,KAAKK,mBAAmB,KAAKR,KAAAA;AAC1CC,cAAW,EAAC;AACZC,aAAU,MAAMC,KAAKM,cAAc,iBAAgB,EAAGP;SACnD;AACHF,UAAO,MAAMrD,GAAG0D,SAASC,SACrB1D,KAAK2D,KAAKvD,cAAc,UAAU,aAAA,EAClC,QAAA;AAGJiD,cAAWS,KAAKC,MAAM,MAAMhE,GAAG0D,SAASC,SACpC1D,KAAK2D,KAAKvD,cAAc,UAAU,SAAS,oBAAA,EAC3C,QAAA,CAAA;AAGJkD,aAAU,MAAMxD,KAAKE,KAAK2D,KAAKvD,cAAc,UAAU,YAAA,CAAY,EAAGkD;;EAG1E,MAAM,CAACU,SAASC,gBAAgB,MAAMX,OAAO;GACzC5B,KAAK;GACL2B;GACAJ;GACJ,CAAA;EAEA,MAAMiB,OAAOd,KACRe,QAAQ,wBAAwBF,aAAAA,CAChCE,QAAQ,mBAAmBH,QAAAA;AAEhCzC,QAAM6C,SAASC,QAAQvC,IAAI,gBAAgB,2BAAA;AAC3C,SAAOoC;;;;YArGC5D,4BAAAA,CAAAA"}
@@ -1,6 +1,8 @@
1
- import type { Response } from 'routup';
1
+ import type { OAuth2JsonWebKey } from '@authup/specs';
2
2
  import type { Repository } from 'typeorm';
3
3
  import type { KeyEntity } from '../../../../../database/domains/index.ts';
4
- export declare function getJwksRouteHandler(res: Response, repository: Repository<KeyEntity>, realmId?: string): Promise<any>;
5
- export declare function getJwkRouteHandler(res: Response, repository: Repository<KeyEntity>, keyId: string, realmId?: string): Promise<any>;
4
+ export declare function getJwksRouteHandler(repository: Repository<KeyEntity>, realmId?: string): Promise<{
5
+ keys: OAuth2JsonWebKey[];
6
+ }>;
7
+ export declare function getJwkRouteHandler(repository: Repository<KeyEntity>, keyId: string, realmId?: string): Promise<OAuth2JsonWebKey>;
6
8
  //# sourceMappingURL=read.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/controllers/workflows/jwks/handlers/read.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAE1E,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EACjC,OAAO,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA6Bf;AAED,wBAAsB,kBAAkB,CACpC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA+Bf"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/controllers/workflows/jwks/handlers/read.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAE1E,wBAAsB,mBAAmB,CACrC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EACjC,OAAO,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CA6BxC;AAED,wBAAsB,kBAAkB,CACpC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CA+B5B"}
@@ -2,9 +2,8 @@ import { In } from "typeorm";
2
2
  import { AsymmetricKey } from "@authup/server-kit";
3
3
  import { JWKType } from "@authup/specs";
4
4
  import { BadRequestError, NotFoundError } from "@ebec/http";
5
- import { send } from "routup";
6
5
  //#region src/adapters/http/controllers/workflows/jwks/handlers/read.ts
7
- async function getJwksRouteHandler(res, repository, realmId) {
6
+ async function getJwksRouteHandler(repository, realmId) {
8
7
  const promises = (await repository.find({
9
8
  where: {
10
9
  type: In([JWKType.RSA, JWKType.EC]),
@@ -20,9 +19,9 @@ async function getJwksRouteHandler(res, repository, realmId) {
20
19
  kid: entity.id,
21
20
  alg: entity.signature_algorithm
22
21
  })));
23
- return send(res, { keys: await Promise.all(promises) });
22
+ return { keys: await Promise.all(promises) };
24
23
  }
25
- async function getJwkRouteHandler(res, repository, keyId, realmId) {
24
+ async function getJwkRouteHandler(repository, keyId, realmId) {
26
25
  const entity = await repository.findOne({ where: {
27
26
  type: In([JWKType.RSA, JWKType.EC]),
28
27
  id: keyId,
@@ -30,16 +29,15 @@ async function getJwkRouteHandler(res, repository, keyId, realmId) {
30
29
  } });
31
30
  if (!entity) throw new NotFoundError();
32
31
  if (!entity.encryption_key) throw new BadRequestError("The encryption key does not exist");
33
- const jsonWebKey = await (await AsymmetricKey.fromBase64({
34
- format: "spki",
35
- key: entity.encryption_key,
36
- options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm)
37
- })).toJWK();
38
- jsonWebKey.alg = entity.signature_algorithm;
39
- return send(res, {
40
- ...jsonWebKey,
41
- kid: entity.id
42
- });
32
+ return {
33
+ ...await (await AsymmetricKey.fromBase64({
34
+ format: "spki",
35
+ key: entity.encryption_key,
36
+ options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm)
37
+ })).toJWK(),
38
+ kid: entity.id,
39
+ alg: entity.signature_algorithm
40
+ };
43
41
  }
44
42
  //#endregion
45
43
  export { getJwkRouteHandler, getJwksRouteHandler };
@@ -1 +1 @@
1
- {"version":3,"file":"read.mjs","names":["AsymmetricKey","JWKType","send","In","BadRequestError","NotFoundError","getJwksRouteHandler","res","repository","realmId","entities","find","where","type","RSA","EC","realm_id","order","priority","promises","filter","entity","encryption_key","map","fromBase64","format","key","options","buildImportOptionsForJWTAlgorithm","signature_algorithm","then","container","toJWK","kid","id","alg","keys","Promise","all","getJwkRouteHandler","keyId","findOne","jsonWebKey"],"sources":["../../../../../../../src/adapters/http/controllers/workflows/jwks/handlers/read.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\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 { AsymmetricKey } from '@authup/server-kit';\nimport { JWKType } from '@authup/specs';\nimport type { Response } from 'routup';\nimport { send } from 'routup';\nimport type { Repository } from 'typeorm';\nimport { In } from 'typeorm';\nimport { BadRequestError, NotFoundError } from '@ebec/http';\nimport type { KeyEntity } from '../../../../../database/domains/index.ts';\n\nexport async function getJwksRouteHandler(\n res: Response,\n repository: Repository<KeyEntity>,\n realmId?: string,\n) : Promise<any> {\n const entities = await repository.find({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n ...(realmId ? { realm_id: realmId } : {}),\n },\n order: { priority: 'DESC' },\n });\n\n const promises = entities\n .filter((entity) => !!entity.encryption_key)\n .map(\n (entity) => AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key!,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n })\n .then((container) => container.toJWK())\n .then((key) => ({\n ...key,\n kid: entity.id,\n alg: entity.signature_algorithm,\n })),\n );\n\n const keys = await Promise.all(promises);\n\n return send(res, { keys });\n}\n\nexport async function getJwkRouteHandler(\n res: Response,\n repository: Repository<KeyEntity>,\n keyId: string,\n realmId?: string,\n) : Promise<any> {\n const entity = await repository.findOne({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n id: keyId,\n ...(realmId ? { realm_id: realmId } : {}),\n },\n });\n\n if (!entity) {\n throw new NotFoundError();\n }\n\n if (!entity.encryption_key) {\n throw new BadRequestError('The encryption key does not exist');\n }\n\n const container = await AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key!,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n });\n\n const jsonWebKey = await container.toJWK();\n jsonWebKey.alg = entity.signature_algorithm;\n\n return send(res, {\n ...jsonWebKey,\n kid: entity.id,\n });\n}\n"],"mappings":";;;;;;AAgBA,eAAsBM,oBAClBC,KACAC,YACAC,SAAgB;CAUhB,MAAMU,YAAWT,MARMF,WAAWG,KAAK;EACnCC,OAAO;GACHC,MAAMV,GAAG,CAACF,QAAQa,KAAKb,QAAQc,GAAG,CAAA;GAClC,GAAIN,UAAU,EAAEO,UAAUP,SAAQ,GAAI,EAAE;GAC5C;EACAQ,OAAO,EAAEC,UAAU,QAAO;EAC9B,CAAA,EAGKE,QAAQC,WAAW,CAAC,CAACA,OAAOC,eAAc,CAC1CC,KACIF,WAAWrB,cACPwB,WAAW;EACRC,QAAQ;EACRC,KAAKL,OAAOC;EACZK,SAAS3B,cAAc4B,kCAAkCP,OAAOQ,oBAAmB;EACvF,CAAA,CACCC,MAAMC,cAAcA,UAAUC,OAAK,CAAA,CACnCF,MAAMJ,SAAS;EACZ,GAAGA;EACHO,KAAKZ,OAAOa;EACZC,KAAKd,OAAOQ;EAChB,EAAA,CAAA;AAKZ,QAAO3B,KAAKK,KAAK,EAAE6B,MAAAA,MAFAC,QAAQC,IAAInB,SAAAA,EAEP,CAAA;;AAG5B,eAAsBoB,mBAClBhC,KACAC,YACAgC,OACA/B,SAAgB;CAEhB,MAAMY,SAAS,MAAMb,WAAWiC,QAAQ,EACpC7B,OAAO;EACHC,MAAMV,GAAG,CAACF,QAAQa,KAAKb,QAAQc,GAAG,CAAA;EAClCmB,IAAIM;EACJ,GAAI/B,UAAU,EAAEO,UAAUP,SAAQ,GAAI,EAAE;EAC5C,EACJ,CAAA;AAEA,KAAI,CAACY,OACD,OAAM,IAAIhB,eAAAA;AAGd,KAAI,CAACgB,OAAOC,eACR,OAAM,IAAIlB,gBAAgB,oCAAA;CAU9B,MAAMsC,aAAa,OAAMX,MAPD/B,cACnBwB,WAAW;EACRC,QAAQ;EACRC,KAAKL,OAAOC;EACZK,SAAS3B,cAAc4B,kCAAkCP,OAAOQ,oBAAmB;EACvF,CAAA,EAE+BG,OAAK;AACxCU,YAAWP,MAAMd,OAAOQ;AAExB,QAAO3B,KAAKK,KAAK;EACb,GAAGmC;EACHT,KAAKZ,OAAOa;EAChB,CAAA"}
1
+ {"version":3,"file":"read.mjs","names":["AsymmetricKey","JWKType","In","BadRequestError","NotFoundError","getJwksRouteHandler","repository","realmId","entities","find","where","type","RSA","EC","realm_id","order","priority","promises","filter","entity","encryption_key","map","fromBase64","format","key","options","buildImportOptionsForJWTAlgorithm","signature_algorithm","then","container","toJWK","kid","id","alg","keys","Promise","all","getJwkRouteHandler","keyId","findOne","jsonWebKey"],"sources":["../../../../../../../src/adapters/http/controllers/workflows/jwks/handlers/read.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\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 { AsymmetricKey } from '@authup/server-kit';\nimport type { OAuth2JsonWebKey } from '@authup/specs';\nimport { JWKType } from '@authup/specs';\nimport type { Repository } from 'typeorm';\nimport { In } from 'typeorm';\nimport { BadRequestError, NotFoundError } from '@ebec/http';\nimport type { KeyEntity } from '../../../../../database/domains/index.ts';\n\nexport async function getJwksRouteHandler(\n repository: Repository<KeyEntity>,\n realmId?: string,\n) : Promise<{ keys: OAuth2JsonWebKey[] }> {\n const entities = await repository.find({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n ...(realmId ? { realm_id: realmId } : {}),\n },\n order: { priority: 'DESC' },\n });\n\n const promises = entities\n .filter((entity): entity is KeyEntity & { encryption_key: string } => !!entity.encryption_key)\n .map(\n (entity) => AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n })\n .then((container) => container.toJWK())\n .then((key) => ({\n ...key,\n kid: entity.id,\n alg: entity.signature_algorithm,\n })),\n );\n\n const keys = await Promise.all(promises);\n\n return { keys };\n}\n\nexport async function getJwkRouteHandler(\n repository: Repository<KeyEntity>,\n keyId: string,\n realmId?: string,\n) : Promise<OAuth2JsonWebKey> {\n const entity = await repository.findOne({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n id: keyId,\n ...(realmId ? { realm_id: realmId } : {}),\n },\n });\n\n if (!entity) {\n throw new NotFoundError();\n }\n\n if (!entity.encryption_key) {\n throw new BadRequestError('The encryption key does not exist');\n }\n\n const container = await AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n });\n\n const jsonWebKey = await container.toJWK();\n\n return {\n ...jsonWebKey,\n kid: entity.id,\n alg: entity.signature_algorithm,\n };\n}\n"],"mappings":";;;;;AAeA,eAAsBK,oBAClBC,YACAC,SAAgB;CAUhB,MAAMU,YAAWT,MARMF,WAAWG,KAAK;EACnCC,OAAO;GACHC,MAAMT,GAAG,CAACD,QAAQW,KAAKX,QAAQY,GAAG,CAAA;GAClC,GAAIN,UAAU,EAAEO,UAAUP,SAAQ,GAAI,EAAE;GAC5C;EACAQ,OAAO,EAAEC,UAAU,QAAO;EAC9B,CAAA,EAGKE,QAAQC,WAA6D,CAAC,CAACA,OAAOC,eAAc,CAC5FC,KACIF,WAAWnB,cACPsB,WAAW;EACRC,QAAQ;EACRC,KAAKL,OAAOC;EACZK,SAASzB,cAAc0B,kCAAkCP,OAAOQ,oBAAmB;EACvF,CAAA,CACCC,MAAMC,cAAcA,UAAUC,OAAK,CAAA,CACnCF,MAAMJ,SAAS;EACZ,GAAGA;EACHO,KAAKZ,OAAOa;EACZC,KAAKd,OAAOQ;EAChB,EAAA,CAAA;AAKZ,QAAO,EAAEO,MAAAA,MAFUC,QAAQC,IAAInB,SAAAA,EAEjB;;AAGlB,eAAsBoB,mBAClB/B,YACAgC,OACA/B,SAAgB;CAEhB,MAAMY,SAAS,MAAMb,WAAWiC,QAAQ,EACpC7B,OAAO;EACHC,MAAMT,GAAG,CAACD,QAAQW,KAAKX,QAAQY,GAAG,CAAA;EAClCmB,IAAIM;EACJ,GAAI/B,UAAU,EAAEO,UAAUP,SAAQ,GAAI,EAAE;EAC5C,EACJ,CAAA;AAEA,KAAI,CAACY,OACD,OAAM,IAAIf,eAAAA;AAGd,KAAI,CAACe,OAAOC,eACR,OAAM,IAAIjB,gBAAgB,oCAAA;AAY9B,QAAO;EACH,GAAGqC,OAHkBX,MAPD7B,cACnBsB,WAAW;GACRC,QAAQ;GACRC,KAAKL,OAAOC;GACZK,SAASzB,cAAc0B,kCAAkCP,OAAOQ,oBAAmB;GACvF,CAAA,EAE+BG,OAAK;EAIpCC,KAAKZ,OAAOa;EACZC,KAAKd,OAAOQ;EAChB"}
@@ -1,4 +1,5 @@
1
- import type { Request, Response } from 'routup';
1
+ import type { OAuth2JsonWebKey } from '@authup/specs';
2
+ import type { IRoutupEvent } from 'routup';
2
3
  import type { Repository } from 'typeorm';
3
4
  import type { KeyEntity } from '../../../../database/domains/index.ts';
4
5
  export type JwkControllerContext = {
@@ -7,7 +8,9 @@ export type JwkControllerContext = {
7
8
  export declare class JwkController {
8
9
  protected repository: Repository<KeyEntity>;
9
10
  constructor(ctx: JwkControllerContext);
10
- getManyJwks(req: Request, res: Response): Promise<any>;
11
- getOneJwks(id: string, req: Request, res: Response): Promise<any>;
11
+ getManyJwks(event: IRoutupEvent): Promise<{
12
+ keys: OAuth2JsonWebKey[];
13
+ }>;
14
+ getOneJwks(id: string): Promise<OAuth2JsonWebKey>;
12
15
  }
13
16
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/jwks/module.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAGvE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;CACpC,CAAC;AAEF,qBACa,aAAa;IACtB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;gBAEhC,GAAG,EAAE,oBAAoB;IAK/B,WAAW,CACD,GAAG,EAAE,OAAO,EACX,GAAG,EAAE,QAAQ,GAC3B,OAAO,CAAC,GAAG,CAAC;IAkCT,UAAU,CACC,EAAE,EAAE,MAAM,EACX,GAAG,EAAE,OAAO,EACX,GAAG,EAAE,QAAQ,GAC3B,OAAO,CAAC,GAAG,CAAC;CA+BlB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/jwks/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAStD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAGvE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;CACpC,CAAC;AAEF,qBACa,aAAa;IACtB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;gBAEhC,GAAG,EAAE,oBAAoB;IAK/B,WAAW,CACD,KAAK,EAAE,YAAY,GAChC,OAAO,CAAC;QAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IAkClC,UAAU,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+BvE"}
@@ -4,8 +4,7 @@ import { In } from "typeorm";
4
4
  import { AsymmetricKey } from "@authup/server-kit";
5
5
  import { JWKType } from "@authup/specs";
6
6
  import { BadRequestError, NotFoundError } from "@ebec/http";
7
- import { send } from "routup";
8
- import { DController, DGet, DPath, DRequest, DResponse } from "@routup/decorators";
7
+ import { DContext, DController, DGet, DPath } from "@routup/decorators";
9
8
  //#region src/adapters/http/controllers/workflows/jwks/module.ts
10
9
  function _ts_decorate(decorators, target, key, desc) {
11
10
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -26,8 +25,8 @@ var JwkController = class {
26
25
  constructor(ctx) {
27
26
  this.repository = ctx.repository;
28
27
  }
29
- async getManyJwks(req, res) {
30
- const realmId = getRequestStringParam(req, "realmId");
28
+ async getManyJwks(event) {
29
+ const realmId = getRequestStringParam(event, "realmId");
31
30
  const promises = (await this.repository.find({
32
31
  where: {
33
32
  type: In([JWKType.RSA, JWKType.EC]),
@@ -43,46 +42,38 @@ var JwkController = class {
43
42
  kid: entity.id,
44
43
  alg: entity.signature_algorithm
45
44
  })));
46
- return send(res, { keys: await Promise.all(promises) });
45
+ return { keys: await Promise.all(promises) };
47
46
  }
48
- async getOneJwks(id, req, res) {
47
+ async getOneJwks(id) {
49
48
  const entity = await this.repository.findOne({ where: {
50
49
  type: In([JWKType.RSA, JWKType.EC]),
51
50
  id
52
51
  } });
53
52
  if (!entity) throw new NotFoundError();
54
53
  if (!entity.encryption_key) throw new BadRequestError("The encryption key does not exist");
55
- const jsonWebKey = await (await AsymmetricKey.fromBase64({
56
- format: "spki",
57
- key: entity.encryption_key,
58
- options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm)
59
- })).toJWK();
60
- jsonWebKey.alg = entity.signature_algorithm;
61
- return send(res, {
62
- ...jsonWebKey,
63
- kid: entity.id
64
- });
54
+ return {
55
+ ...await (await AsymmetricKey.fromBase64({
56
+ format: "spki",
57
+ key: entity.encryption_key,
58
+ options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm)
59
+ })).toJWK(),
60
+ kid: entity.id,
61
+ alg: entity.signature_algorithm
62
+ };
65
63
  }
66
64
  };
67
65
  _ts_decorate([
68
66
  DGet("/jwks", []),
69
- _ts_param(0, DRequest()),
70
- _ts_param(1, DResponse()),
67
+ _ts_param(0, DContext()),
71
68
  _ts_metadata("design:type", Function),
72
- _ts_metadata("design:paramtypes", [typeof Request === "undefined" ? Object : Request, typeof Response === "undefined" ? Object : Response]),
69
+ _ts_metadata("design:paramtypes", [typeof IRoutupEvent === "undefined" ? Object : IRoutupEvent]),
73
70
  _ts_metadata("design:returntype", Promise)
74
71
  ], JwkController.prototype, "getManyJwks", null);
75
72
  _ts_decorate([
76
73
  DGet("/jwks/:id", []),
77
74
  _ts_param(0, DPath("id")),
78
- _ts_param(1, DRequest()),
79
- _ts_param(2, DResponse()),
80
75
  _ts_metadata("design:type", Function),
81
- _ts_metadata("design:paramtypes", [
82
- String,
83
- typeof Request === "undefined" ? Object : Request,
84
- typeof Response === "undefined" ? Object : Response
85
- ]),
76
+ _ts_metadata("design:paramtypes", [String]),
86
77
  _ts_metadata("design:returntype", Promise)
87
78
  ], JwkController.prototype, "getOneJwks", null);
88
79
  JwkController = _ts_decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["JWKType","AsymmetricKey","DController","DGet","DPath","DRequest","DResponse","send","In","BadRequestError","NotFoundError","getRequestStringParam","JwkController","repository","ctx","getManyJwks","req","res","realmId","entities","find","where","type","RSA","EC","realm_id","order","priority","promises","filter","entity","encryption_key","map","fromBase64","format","key","options","buildImportOptionsForJWTAlgorithm","signature_algorithm","then","container","toJWK","kid","id","alg","keys","Promise","all","getOneJwks","findOne","jsonWebKey"],"sources":["../../../../../../src/adapters/http/controllers/workflows/jwks/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { JWKType } from '@authup/specs';\nimport { AsymmetricKey } from '@authup/server-kit';\nimport {\n DController, \n DGet, \n DPath, \n DRequest, \n DResponse,\n} from '@routup/decorators';\nimport type { Request, Response } from 'routup';\nimport { send } from 'routup';\nimport type { Repository } from 'typeorm';\nimport { In } from 'typeorm';\nimport { BadRequestError, NotFoundError } from '@ebec/http';\nimport type { KeyEntity } from '../../../../database/domains/index.ts';\nimport { getRequestStringParam } from '../../../request/index.ts';\n\nexport type JwkControllerContext = {\n repository: Repository<KeyEntity>\n};\n\n@DController('')\nexport class JwkController {\n protected repository: Repository<KeyEntity>;\n\n constructor(ctx: JwkControllerContext) {\n this.repository = ctx.repository;\n }\n\n @DGet('/jwks', [])\n async getManyJwks(\n @DRequest() req: Request,\n @DResponse() res: Response,\n ): Promise<any> {\n const realmId = getRequestStringParam(req, 'realmId');\n\n const entities = await this.repository.find({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n ...(realmId ? { realm_id: realmId } : {}),\n },\n order: { priority: 'DESC' },\n });\n\n const promises = entities\n .filter((entity) => !!entity.encryption_key)\n .map(\n (entity) => AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key!,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n })\n .then((container) => container.toJWK())\n .then((key) => ({\n ...key,\n kid: entity.id,\n alg: entity.signature_algorithm,\n })),\n );\n\n const keys = await Promise.all(promises);\n\n return send(res, { keys });\n }\n\n @DGet('/jwks/:id', [])\n async getOneJwks(\n @DPath('id') id: string,\n @DRequest() req: Request,\n @DResponse() res: Response,\n ): Promise<any> {\n const entity = await this.repository.findOne({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n id,\n },\n });\n\n if (!entity) {\n throw new NotFoundError();\n }\n\n if (!entity.encryption_key) {\n throw new BadRequestError('The encryption key does not exist');\n }\n\n const container = await AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key!,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n });\n\n const jsonWebKey = await container.toJWK();\n jsonWebKey.alg = entity.signature_algorithm;\n\n return send(res, {\n ...jsonWebKey,\n kid: entity.id,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6BA,IAAaY,gBAAb,MAAaA;CACCC;CAEV,YAAYC,KAA2B;AACnC,OAAKD,aAAaC,IAAID;;CAG1B,MACME,YACF,KACA,KACY;EACZ,MAAMG,UAAUP,sBAAsBK,KAAK,UAAA;EAU3C,MAAMY,YAAWT,MARM,KAAKN,WAAWO,KAAK;GACxCC,OAAO;IACHC,MAAMd,GAAG,CAACR,QAAQuB,KAAKvB,QAAQwB,GAAG,CAAA;IAClC,GAAIN,UAAU,EAAEO,UAAUP,SAAQ,GAAI,EAAE;IAC5C;GACAQ,OAAO,EAAEC,UAAU,QAAO;GAC9B,CAAA,EAGKE,QAAQC,WAAW,CAAC,CAACA,OAAOC,eAAc,CAC1CC,KACIF,WAAW7B,cACPgC,WAAW;GACRC,QAAQ;GACRC,KAAKL,OAAOC;GACZK,SAASnC,cAAcoC,kCAAkCP,OAAOQ,oBAAmB;GACvF,CAAA,CACCC,MAAMC,cAAcA,UAAUC,OAAK,CAAA,CACnCF,MAAMJ,SAAS;GACZ,GAAGA;GACHO,KAAKZ,OAAOa;GACZC,KAAKd,OAAOQ;GAChB,EAAA,CAAA;AAKZ,SAAO/B,KAAKU,KAAK,EAAE4B,MAAAA,MAFAC,QAAQC,IAAInB,SAAAA,EAEP,CAAA;;CAG5B,MACMoB,WACF,IACA,KACA,KACY;EACZ,MAAMlB,SAAS,MAAM,KAAKjB,WAAWoC,QAAQ,EACzC5B,OAAO;GACHC,MAAMd,GAAG,CAACR,QAAQuB,KAAKvB,QAAQwB,GAAG,CAAA;GAClCmB;GACJ,EACJ,CAAA;AAEA,MAAI,CAACb,OACD,OAAM,IAAIpB,eAAAA;AAGd,MAAI,CAACoB,OAAOC,eACR,OAAM,IAAItB,gBAAgB,oCAAA;EAU9B,MAAMyC,aAAa,OAAMV,MAPDvC,cACnBgC,WAAW;GACRC,QAAQ;GACRC,KAAKL,OAAOC;GACZK,SAASnC,cAAcoC,kCAAkCP,OAAOQ,oBAAmB;GACvF,CAAA,EAE+BG,OAAK;AACxCS,aAAWN,MAAMd,OAAOQ;AAExB,SAAO/B,KAAKU,KAAK;GACb,GAAGiC;GACHR,KAAKZ,OAAOa;GAChB,CAAA"}
1
+ {"version":3,"file":"module.mjs","names":["JWKType","AsymmetricKey","DContext","DController","DGet","DPath","In","BadRequestError","NotFoundError","getRequestStringParam","JwkController","repository","ctx","getManyJwks","event","realmId","entities","find","where","type","RSA","EC","realm_id","order","priority","promises","filter","entity","encryption_key","map","fromBase64","format","key","options","buildImportOptionsForJWTAlgorithm","signature_algorithm","then","container","toJWK","kid","id","alg","keys","Promise","all","getOneJwks","findOne","jsonWebKey"],"sources":["../../../../../../src/adapters/http/controllers/workflows/jwks/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OAuth2JsonWebKey } from '@authup/specs';\nimport { JWKType } from '@authup/specs';\nimport { AsymmetricKey } from '@authup/server-kit';\nimport {\n DContext,\n DController,\n DGet,\n DPath,\n} from '@routup/decorators';\nimport type { IRoutupEvent } from 'routup';\nimport type { Repository } from 'typeorm';\nimport { In } from 'typeorm';\nimport { BadRequestError, NotFoundError } from '@ebec/http';\nimport type { KeyEntity } from '../../../../database/domains/index.ts';\nimport { getRequestStringParam } from '../../../request/index.ts';\n\nexport type JwkControllerContext = {\n repository: Repository<KeyEntity>\n};\n\n@DController('')\nexport class JwkController {\n protected repository: Repository<KeyEntity>;\n\n constructor(ctx: JwkControllerContext) {\n this.repository = ctx.repository;\n }\n\n @DGet('/jwks', [])\n async getManyJwks(\n @DContext() event: IRoutupEvent,\n ): Promise<{ keys: OAuth2JsonWebKey[] }> {\n const realmId = getRequestStringParam(event, 'realmId');\n\n const entities = await this.repository.find({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n ...(realmId ? { realm_id: realmId } : {}),\n },\n order: { priority: 'DESC' },\n });\n\n const promises = entities\n .filter((entity): entity is KeyEntity & { encryption_key: string } => !!entity.encryption_key)\n .map(\n (entity) => AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n })\n .then((container) => container.toJWK())\n .then((key) => ({\n ...key,\n kid: entity.id,\n alg: entity.signature_algorithm,\n })),\n );\n\n const keys = await Promise.all(promises);\n\n return { keys };\n }\n\n @DGet('/jwks/:id', [])\n async getOneJwks(@DPath('id') id: string): Promise<OAuth2JsonWebKey> {\n const entity = await this.repository.findOne({\n where: {\n type: In([JWKType.RSA, JWKType.EC]),\n id,\n },\n });\n\n if (!entity) {\n throw new NotFoundError();\n }\n\n if (!entity.encryption_key) {\n throw new BadRequestError('The encryption key does not exist');\n }\n\n const container = await AsymmetricKey\n .fromBase64({\n format: 'spki',\n key: entity.encryption_key,\n options: AsymmetricKey.buildImportOptionsForJWTAlgorithm(entity.signature_algorithm),\n });\n\n const jsonWebKey = await container.toJWK();\n\n return {\n ...jsonWebKey,\n kid: entity.id,\n alg: entity.signature_algorithm,\n };\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;;;;;AAuBD,IAAaU,gBAAb,MAAaA;CACCC;CAEV,YAAYC,KAA2B;AACnC,OAAKD,aAAaC,IAAID;;CAG1B,MACME,YACF,OACqC;EACrC,MAAME,UAAUN,sBAAsBK,OAAO,UAAA;EAU7C,MAAMW,YAAWT,MARM,KAAKL,WAAWM,KAAK;GACxCC,OAAO;IACHC,MAAMb,GAAG,CAACN,QAAQoB,KAAKpB,QAAQqB,GAAG,CAAA;IAClC,GAAIN,UAAU,EAAEO,UAAUP,SAAQ,GAAI,EAAE;IAC5C;GACAQ,OAAO,EAAEC,UAAU,QAAO;GAC9B,CAAA,EAGKE,QAAQC,WAA6D,CAAC,CAACA,OAAOC,eAAc,CAC5FC,KACIF,WAAW1B,cACP6B,WAAW;GACRC,QAAQ;GACRC,KAAKL,OAAOC;GACZK,SAAShC,cAAciC,kCAAkCP,OAAOQ,oBAAmB;GACvF,CAAA,CACCC,MAAMC,cAAcA,UAAUC,OAAK,CAAA,CACnCF,MAAMJ,SAAS;GACZ,GAAGA;GACHO,KAAKZ,OAAOa;GACZC,KAAKd,OAAOQ;GAChB,EAAA,CAAA;AAKZ,SAAO,EAAEO,MAAAA,MAFUC,QAAQC,IAAInB,SAAAA,EAEjB;;CAGlB,MACMoB,WAAW,IAAoD;EACjE,MAAMlB,SAAS,MAAM,KAAKhB,WAAWmC,QAAQ,EACzC5B,OAAO;GACHC,MAAMb,GAAG,CAACN,QAAQoB,KAAKpB,QAAQqB,GAAG,CAAA;GAClCmB;GACJ,EACJ,CAAA;AAEA,MAAI,CAACb,OACD,OAAM,IAAInB,eAAAA;AAGd,MAAI,CAACmB,OAAOC,eACR,OAAM,IAAIrB,gBAAgB,oCAAA;AAY9B,SAAO;GACH,GAAGwC,OAHkBV,MAPDpC,cACnB6B,WAAW;IACRC,QAAQ;IACRC,KAAKL,OAAOC;IACZK,SAAShC,cAAciC,kCAAkCP,OAAOQ,oBAAmB;IACvF,CAAA,EAE+BG,OAAK;GAIpCC,KAAKZ,OAAOa;GACZC,KAAKd,OAAOQ;GAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/openid/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAI5D,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAA;CAClB,CAAC;AAEF,qBACa,gBAAgB;IACzB,SAAS,CAAC,OAAO,EAAE,uBAAuB,CAAC;gBAE/B,OAAO,EAAE,uBAAuB;IAKtC,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAyClE"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/openid/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAQ5D,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAA;CAClB,CAAC;AAEF,qBACa,gBAAgB;IACzB,SAAS,CAAC,OAAO,EAAE,uBAAuB,CAAC;gBAE/B,OAAO,EAAE,uBAAuB;IAKtC,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,CAAC;CA0ClE"}
@@ -1,3 +1,5 @@
1
+ import { resolveURL } from "../../../../../utils/url.mjs";
2
+ import "../../../../../utils/index.mjs";
1
3
  import { OAuth2AuthorizationResponseType } from "@authup/specs";
2
4
  import { DController, DGet } from "@routup/decorators";
3
5
  //#region src/adapters/http/controllers/workflows/openid/module.ts
@@ -16,10 +18,11 @@ var OpenIDController = class {
16
18
  this.options = options;
17
19
  }
18
20
  async getOpenIdConfiguration() {
21
+ const { baseURL } = this.options;
19
22
  return {
20
- issuer: this.options.baseURL,
21
- authorization_endpoint: new URL("authorize", this.options.baseURL).href,
22
- jwks_uri: new URL("jwks", this.options.baseURL).href,
23
+ issuer: baseURL,
24
+ authorization_endpoint: resolveURL(baseURL, "authorize"),
25
+ jwks_uri: resolveURL(baseURL, "jwks"),
23
26
  response_types_supported: [
24
27
  OAuth2AuthorizationResponseType.CODE,
25
28
  OAuth2AuthorizationResponseType.TOKEN,
@@ -35,11 +38,11 @@ var OpenIDController = class {
35
38
  "RS512",
36
39
  "none"
37
40
  ],
38
- token_endpoint: new URL("token", this.options.baseURL).href,
39
- introspection_endpoint: new URL("token/introspect", this.options.baseURL).href,
40
- revocation_endpoint: new URL("token", this.options.baseURL).href,
41
+ token_endpoint: resolveURL(baseURL, "token"),
42
+ introspection_endpoint: resolveURL(baseURL, "token/introspect"),
43
+ revocation_endpoint: resolveURL(baseURL, "token"),
41
44
  service_documentation: "https://authup.org/",
42
- userinfo_endpoint: new URL("users/@me", this.options.baseURL).href
45
+ userinfo_endpoint: resolveURL(baseURL, "users/@me")
43
46
  };
44
47
  }
45
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["OAuth2AuthorizationResponseType","DController","DGet","OpenIDController","options","getOpenIdConfiguration","issuer","baseURL","authorization_endpoint","URL","href","jwks_uri","response_types_supported","CODE","TOKEN","NONE","subject_types_supported","id_token_signing_alg_values_supported","token_endpoint","introspection_endpoint","revocation_endpoint","service_documentation","userinfo_endpoint"],"sources":["../../../../../../src/adapters/http/controllers/workflows/openid/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OpenIDProviderMetadata } from '@authup/specs';\nimport { OAuth2AuthorizationResponseType } from '@authup/specs';\nimport { DController, DGet } from '@routup/decorators';\n\nexport type OpenIDControllerOptions = {\n baseURL: string\n};\n\n@DController('')\nexport class OpenIDController {\n protected options: OpenIDControllerOptions;\n\n constructor(options: OpenIDControllerOptions) {\n this.options = options;\n }\n\n @DGet('/.well-known/openid-configuration', [])\n async getOpenIdConfiguration(): Promise<OpenIDProviderMetadata> {\n return {\n issuer: this.options.baseURL,\n\n authorization_endpoint: new URL('authorize', this.options.baseURL).href,\n\n jwks_uri: new URL('jwks', this.options.baseURL).href,\n\n response_types_supported: [\n OAuth2AuthorizationResponseType.CODE,\n OAuth2AuthorizationResponseType.TOKEN,\n OAuth2AuthorizationResponseType.NONE,\n ],\n\n subject_types_supported: [\n 'public',\n ],\n\n id_token_signing_alg_values_supported: [\n 'HS256', \n 'HS384', \n 'HS512', \n 'RS256', \n 'RS384', \n 'RS512', \n 'none',\n ],\n\n token_endpoint: new URL('token', this.options.baseURL).href,\n\n introspection_endpoint: new URL('token/introspect', this.options.baseURL).href,\n\n revocation_endpoint: new URL('token', this.options.baseURL).href,\n\n // -----------------------------------------------------------\n\n service_documentation: 'https://authup.org/',\n\n userinfo_endpoint: new URL('users/@me', this.options.baseURL).href,\n };\n }\n}\n"],"mappings":";;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;AAWD,IAAaG,mBAAb,MAAaA;CACCC;CAEV,YAAYA,SAAkC;AAC1C,OAAKA,UAAUA;;CAGnB,MACMC,yBAA0D;AAC5D,SAAO;GACHC,QAAQ,KAAKF,QAAQG;GAErBC,wBAAwB,IAAIC,IAAI,aAAa,KAAKL,QAAQG,QAAO,CAAEG;GAEnEC,UAAU,IAAIF,IAAI,QAAQ,KAAKL,QAAQG,QAAO,CAAEG;GAEhDE,0BAA0B;IACtBZ,gCAAgCa;IAChCb,gCAAgCc;IAChCd,gCAAgCe;IACnC;GAEDC,yBAAyB,CACrB,SACH;GAEDC,uCAAuC;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACH;GAEDC,gBAAgB,IAAIT,IAAI,SAAS,KAAKL,QAAQG,QAAO,CAAEG;GAEvDS,wBAAwB,IAAIV,IAAI,oBAAoB,KAAKL,QAAQG,QAAO,CAAEG;GAE1EU,qBAAqB,IAAIX,IAAI,SAAS,KAAKL,QAAQG,QAAO,CAAEG;GAI5DW,uBAAuB;GAEvBC,mBAAmB,IAAIb,IAAI,aAAa,KAAKL,QAAQG,QAAO,CAAEG;GAClE"}
1
+ {"version":3,"file":"module.mjs","names":["OAuth2AuthorizationResponseType","DController","DGet","resolveURL","OpenIDController","options","getOpenIdConfiguration","baseURL","issuer","authorization_endpoint","jwks_uri","response_types_supported","CODE","TOKEN","NONE","subject_types_supported","id_token_signing_alg_values_supported","token_endpoint","introspection_endpoint","revocation_endpoint","service_documentation","userinfo_endpoint"],"sources":["../../../../../../src/adapters/http/controllers/workflows/openid/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OpenIDProviderMetadata } from '@authup/specs';\nimport { OAuth2AuthorizationResponseType } from '@authup/specs';\nimport {\n DController,\n DGet,\n} from '@routup/decorators';\nimport { resolveURL } from '../../../../../utils/index.ts';\n\nexport type OpenIDControllerOptions = {\n baseURL: string\n};\n\n@DController('')\nexport class OpenIDController {\n protected options: OpenIDControllerOptions;\n\n constructor(options: OpenIDControllerOptions) {\n this.options = options;\n }\n\n @DGet('/.well-known/openid-configuration', [])\n async getOpenIdConfiguration(): Promise<OpenIDProviderMetadata> {\n const { baseURL } = this.options;\n return {\n issuer: baseURL,\n\n authorization_endpoint: resolveURL(baseURL, 'authorize'),\n\n jwks_uri: resolveURL(baseURL, 'jwks'),\n\n response_types_supported: [\n OAuth2AuthorizationResponseType.CODE,\n OAuth2AuthorizationResponseType.TOKEN,\n OAuth2AuthorizationResponseType.NONE,\n ],\n\n subject_types_supported: [\n 'public',\n ],\n\n id_token_signing_alg_values_supported: [\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'none',\n ],\n\n token_endpoint: resolveURL(baseURL, 'token'),\n\n introspection_endpoint: resolveURL(baseURL, 'token/introspect'),\n\n revocation_endpoint: resolveURL(baseURL, 'token'),\n\n // -----------------------------------------------------------\n\n service_documentation: 'https://authup.org/',\n\n userinfo_endpoint: resolveURL(baseURL, 'users/@me'),\n };\n }\n}\n"],"mappings":";;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;AAeD,IAAaI,mBAAb,MAAaA;CACCC;CAEV,YAAYA,SAAkC;AAC1C,OAAKA,UAAUA;;CAGnB,MACMC,yBAA0D;EAC5D,MAAM,EAAEC,YAAY,KAAKF;AACzB,SAAO;GACHG,QAAQD;GAERE,wBAAwBN,WAAWI,SAAS,YAAA;GAE5CG,UAAUP,WAAWI,SAAS,OAAA;GAE9BI,0BAA0B;IACtBX,gCAAgCY;IAChCZ,gCAAgCa;IAChCb,gCAAgCc;IACnC;GAEDC,yBAAyB,CACrB,SACH;GAEDC,uCAAuC;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACH;GAEDC,gBAAgBd,WAAWI,SAAS,QAAA;GAEpCW,wBAAwBf,WAAWI,SAAS,mBAAA;GAE5CY,qBAAqBhB,WAAWI,SAAS,QAAA;GAIzCa,uBAAuB;GAEvBC,mBAAmBlB,WAAWI,SAAS,YAAA;GAC3C"}
@@ -1,5 +1,5 @@
1
- import type { PasswordForgotResponse } from '@authup/core-http-kit';
2
- import type { Request, Response } from 'routup';
1
+ import type { PasswordForgotPayload, PasswordForgotResponse } from '@authup/core-http-kit';
2
+ import type { IRoutupEvent } from 'routup';
3
3
  import type { IPasswordRecoveryService } from '../../../../../core/index.ts';
4
4
  export type PasswordForgotControllerContext = {
5
5
  service: IPasswordRecoveryService;
@@ -7,6 +7,6 @@ export type PasswordForgotControllerContext = {
7
7
  export declare class PasswordForgotController {
8
8
  protected service: IPasswordRecoveryService;
9
9
  constructor(ctx: PasswordForgotControllerContext);
10
- execute(data: any, req: Request, res: Response): Promise<PasswordForgotResponse>;
10
+ execute(data: PasswordForgotPayload, event: IRoutupEvent): Promise<PasswordForgotResponse>;
11
11
  }
12
12
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/password-forgot/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,MAAM,MAAM,+BAA+B,GAAG;IAC1C,OAAO,EAAE,wBAAwB,CAAC;CACrC,CAAC;AAEF,qBACa,wBAAwB;IACjC,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC;gBAEhC,GAAG,EAAE,+BAA+B;IAK1C,OAAO,CACA,IAAI,EAAE,GAAG,EACN,GAAG,EAAE,OAAO,EACX,GAAG,EAAE,QAAQ,GAC3B,OAAO,CAAC,sBAAsB,CAAC;CAOrC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/password-forgot/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAO3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,MAAM,MAAM,+BAA+B,GAAG;IAC1C,OAAO,EAAE,wBAAwB,CAAC;CACrC,CAAC;AAEF,qBACa,wBAAwB;IACjC,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC;gBAEhC,GAAG,EAAE,+BAA+B;IAK1C,OAAO,CACA,IAAI,EAAE,qBAAqB,EACxB,KAAK,EAAE,YAAY,GAChC,OAAO,CAAC,sBAAsB,CAAC;CAOrC"}