@hed-hog/core 0.0.399 → 0.0.400

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 (668) hide show
  1. package/dist/ai/ai-agent.sort.d.ts +6 -0
  2. package/dist/ai/ai-agent.sort.d.ts.map +1 -0
  3. package/dist/ai/ai-agent.sort.js +21 -0
  4. package/dist/ai/ai-agent.sort.js.map +1 -0
  5. package/dist/ai/ai.controller.d.ts +4 -4
  6. package/dist/ai/ai.service.d.ts +35 -4
  7. package/dist/ai/ai.service.d.ts.map +1 -1
  8. package/dist/ai/ai.service.js +51 -137
  9. package/dist/ai/ai.service.js.map +1 -1
  10. package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
  11. package/dist/ai-instruction/ai-instruction.service.js +26 -23
  12. package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
  13. package/dist/ai-instruction/ai-instruction.sort.d.ts +16 -0
  14. package/dist/ai-instruction/ai-instruction.sort.d.ts.map +1 -0
  15. package/dist/ai-instruction/ai-instruction.sort.js +32 -0
  16. package/dist/ai-instruction/ai-instruction.sort.js.map +1 -0
  17. package/dist/auth/auth.controller.d.ts +24 -8
  18. package/dist/auth/auth.controller.d.ts.map +1 -1
  19. package/dist/auth/auth.module.d.ts.map +1 -1
  20. package/dist/auth/auth.module.js +8 -1
  21. package/dist/auth/auth.module.js.map +1 -1
  22. package/dist/auth/auth.service.d.ts +72 -25
  23. package/dist/auth/auth.service.d.ts.map +1 -1
  24. package/dist/auth/auth.service.js +41 -4
  25. package/dist/auth/auth.service.js.map +1 -1
  26. package/dist/auth/guards/auth.guard.d.ts +3 -1
  27. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  28. package/dist/auth/guards/auth.guard.js +12 -3
  29. package/dist/auth/guards/auth.guard.js.map +1 -1
  30. package/dist/authorize/authorize.controller.d.ts +29 -5
  31. package/dist/authorize/authorize.controller.d.ts.map +1 -1
  32. package/dist/authorize/authorize.controller.js +120 -13
  33. package/dist/authorize/authorize.controller.js.map +1 -1
  34. package/dist/authorize/authorize.errors.d.ts +34 -0
  35. package/dist/authorize/authorize.errors.d.ts.map +1 -0
  36. package/dist/authorize/authorize.errors.js +37 -0
  37. package/dist/authorize/authorize.errors.js.map +1 -0
  38. package/dist/authorize/authorize.module.d.ts.map +1 -1
  39. package/dist/authorize/authorize.module.js +6 -1
  40. package/dist/authorize/authorize.module.js.map +1 -1
  41. package/dist/authorize/authorize.service.d.ts +77 -3
  42. package/dist/authorize/authorize.service.d.ts.map +1 -1
  43. package/dist/authorize/authorize.service.js +212 -21
  44. package/dist/authorize/authorize.service.js.map +1 -1
  45. package/dist/authorize/dto/authorize-info.dto.d.ts +10 -1
  46. package/dist/authorize/dto/authorize-info.dto.d.ts.map +1 -1
  47. package/dist/authorize/dto/authorize-info.dto.js +16 -1
  48. package/dist/authorize/dto/authorize-info.dto.js.map +1 -1
  49. package/dist/authorize/dto/consent.dto.d.ts +10 -1
  50. package/dist/authorize/dto/consent.dto.d.ts.map +1 -1
  51. package/dist/authorize/dto/consent.dto.js +16 -1
  52. package/dist/authorize/dto/consent.dto.js.map +1 -1
  53. package/dist/authorize/dto/token.dto.d.ts +12 -0
  54. package/dist/authorize/dto/token.dto.d.ts.map +1 -1
  55. package/dist/authorize/dto/token.dto.js +21 -1
  56. package/dist/authorize/dto/token.dto.js.map +1 -1
  57. package/dist/authorize/oauth-exception.filter.d.ts +17 -0
  58. package/dist/authorize/oauth-exception.filter.d.ts.map +1 -0
  59. package/dist/authorize/oauth-exception.filter.js +54 -0
  60. package/dist/authorize/oauth-exception.filter.js.map +1 -0
  61. package/dist/authorize/oauth-metadata.service.d.ts +39 -0
  62. package/dist/authorize/oauth-metadata.service.d.ts.map +1 -0
  63. package/dist/authorize/oauth-metadata.service.js +81 -0
  64. package/dist/authorize/oauth-metadata.service.js.map +1 -0
  65. package/dist/authorize/well-known.controller.d.ts +67 -0
  66. package/dist/authorize/well-known.controller.d.ts.map +1 -0
  67. package/dist/authorize/well-known.controller.js +126 -0
  68. package/dist/authorize/well-known.controller.js.map +1 -0
  69. package/dist/captcha/captcha.service.d.ts +32 -2
  70. package/dist/captcha/captcha.service.d.ts.map +1 -1
  71. package/dist/captcha/captcha.service.js +85 -12
  72. package/dist/captcha/captcha.service.js.map +1 -1
  73. package/dist/challenge/challenge.service.d.ts +2 -2
  74. package/dist/core.module.d.ts.map +1 -1
  75. package/dist/core.module.js +6 -0
  76. package/dist/core.module.js.map +1 -1
  77. package/dist/dashboard/dashboard/dashboard.controller.d.ts +9 -9
  78. package/dist/dashboard/dashboard/dashboard.service.d.ts +9 -9
  79. package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +3 -3
  80. package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +3 -3
  81. package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +3 -3
  82. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +3 -3
  83. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts.map +1 -1
  84. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js +2 -4
  85. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js.map +1 -1
  86. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts +8 -0
  87. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts.map +1 -0
  88. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js +18 -0
  89. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js.map +1 -0
  90. package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts.map +1 -1
  91. package/dist/dashboard/dashboard-item/dashboard-item.service.js +2 -4
  92. package/dist/dashboard/dashboard-item/dashboard-item.service.js.map +1 -1
  93. package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts +9 -0
  94. package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts.map +1 -0
  95. package/dist/dashboard/dashboard-item/dashboard-item.sort.js +19 -0
  96. package/dist/dashboard/dashboard-item/dashboard-item.sort.js.map +1 -0
  97. package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +3 -3
  98. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +3 -3
  99. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts.map +1 -1
  100. package/dist/dashboard/dashboard-role/dashboard-role.service.js +2 -4
  101. package/dist/dashboard/dashboard-role/dashboard-role.service.js.map +1 -1
  102. package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts +8 -0
  103. package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts.map +1 -0
  104. package/dist/dashboard/dashboard-role/dashboard-role.sort.js +16 -0
  105. package/dist/dashboard/dashboard-role/dashboard-role.sort.js.map +1 -0
  106. package/dist/file/file-upload-ticket.service.d.ts +160 -0
  107. package/dist/file/file-upload-ticket.service.d.ts.map +1 -0
  108. package/dist/file/file-upload-ticket.service.js +382 -0
  109. package/dist/file/file-upload-ticket.service.js.map +1 -0
  110. package/dist/file/file.controller.d.ts +24 -1
  111. package/dist/file/file.controller.d.ts.map +1 -1
  112. package/dist/file/file.controller.js +63 -2
  113. package/dist/file/file.controller.js.map +1 -1
  114. package/dist/file/file.module.d.ts.map +1 -1
  115. package/dist/file/file.module.js +14 -2
  116. package/dist/file/file.module.js.map +1 -1
  117. package/dist/file/file.service.d.ts +182 -6
  118. package/dist/file/file.service.d.ts.map +1 -1
  119. package/dist/file/file.service.js +386 -54
  120. package/dist/file/file.service.js.map +1 -1
  121. package/dist/file/filename-encoding.util.d.ts +24 -0
  122. package/dist/file/filename-encoding.util.d.ts.map +1 -0
  123. package/dist/file/filename-encoding.util.js +63 -0
  124. package/dist/file/filename-encoding.util.js.map +1 -0
  125. package/dist/file/image-optimization.service.d.ts +27 -0
  126. package/dist/file/image-optimization.service.d.ts.map +1 -1
  127. package/dist/file/image-optimization.service.js +63 -14
  128. package/dist/file/image-optimization.service.js.map +1 -1
  129. package/dist/file/mcp-file-source.schema.d.ts +33 -0
  130. package/dist/file/mcp-file-source.schema.d.ts.map +1 -0
  131. package/dist/file/mcp-file-source.schema.js +75 -0
  132. package/dist/file/mcp-file-source.schema.js.map +1 -0
  133. package/dist/file/mcp-file-source.service.d.ts +124 -0
  134. package/dist/file/mcp-file-source.service.d.ts.map +1 -0
  135. package/dist/file/mcp-file-source.service.js +262 -0
  136. package/dist/file/mcp-file-source.service.js.map +1 -0
  137. package/dist/file/mimetype-sniff.util.d.ts +62 -0
  138. package/dist/file/mimetype-sniff.util.d.ts.map +1 -0
  139. package/dist/file/mimetype-sniff.util.js +226 -0
  140. package/dist/file/mimetype-sniff.util.js.map +1 -0
  141. package/dist/file/remote-fetch.util.d.ts +35 -0
  142. package/dist/file/remote-fetch.util.d.ts.map +1 -0
  143. package/dist/file/remote-fetch.util.js +236 -0
  144. package/dist/file/remote-fetch.util.js.map +1 -0
  145. package/dist/impersonation/dto/start-impersonation.dto.d.ts +4 -1
  146. package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -1
  147. package/dist/impersonation/dto/start-impersonation.dto.js +1 -1
  148. package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -1
  149. package/dist/impersonation/impersonation.service.d.ts +8 -3
  150. package/dist/impersonation/impersonation.service.d.ts.map +1 -1
  151. package/dist/impersonation/impersonation.service.js +14 -4
  152. package/dist/impersonation/impersonation.service.js.map +1 -1
  153. package/dist/incident/incident.controller.d.ts +2 -1
  154. package/dist/incident/incident.controller.d.ts.map +1 -1
  155. package/dist/incident/incident.controller.js +10 -6
  156. package/dist/incident/incident.controller.js.map +1 -1
  157. package/dist/incident/incident.service.d.ts +2 -0
  158. package/dist/incident/incident.service.d.ts.map +1 -1
  159. package/dist/incident/incident.service.js +4 -0
  160. package/dist/incident/incident.service.js.map +1 -1
  161. package/dist/index.d.ts +17 -0
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +17 -0
  164. package/dist/index.js.map +1 -1
  165. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  166. package/dist/integration-profile/integration-profile.secrets.js +7 -0
  167. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  168. package/dist/integration-profile/integration-profile.service.d.ts +0 -13
  169. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  170. package/dist/integration-profile/integration-profile.service.js +5 -40
  171. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  172. package/dist/integration-profile/integration-profile.utils.js +5 -5
  173. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  174. package/dist/integration-profile/testers/index.d.ts.map +1 -1
  175. package/dist/integration-profile/testers/index.js +2 -0
  176. package/dist/integration-profile/testers/index.js.map +1 -1
  177. package/dist/integration-profile/testers/shipping.testers.d.ts +3 -0
  178. package/dist/integration-profile/testers/shipping.testers.d.ts.map +1 -0
  179. package/dist/integration-profile/testers/shipping.testers.js +71 -0
  180. package/dist/integration-profile/testers/shipping.testers.js.map +1 -0
  181. package/dist/locale/locale.controller.d.ts +1 -1
  182. package/dist/locale/locale.service.d.ts +1 -1
  183. package/dist/mail/dto/send.dto.d.ts +6 -1
  184. package/dist/mail/dto/send.dto.d.ts.map +1 -1
  185. package/dist/mail/dto/send.dto.js.map +1 -1
  186. package/dist/mail/mail.service.d.ts +9 -0
  187. package/dist/mail/mail.service.d.ts.map +1 -1
  188. package/dist/mail/mail.service.js +34 -14
  189. package/dist/mail/mail.service.js.map +1 -1
  190. package/dist/mail-sent/mail-sent.controller.d.ts +1 -1
  191. package/dist/mail-sent/mail-sent.service.d.ts +1 -1
  192. package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
  193. package/dist/mail-sent/mail-sent.service.js +2 -1
  194. package/dist/mail-sent/mail-sent.service.js.map +1 -1
  195. package/dist/mail-sent/mail-sent.sort.d.ts +9 -0
  196. package/dist/mail-sent/mail-sent.sort.d.ts.map +1 -0
  197. package/dist/mail-sent/mail-sent.sort.js +19 -0
  198. package/dist/mail-sent/mail-sent.sort.js.map +1 -0
  199. package/dist/mcp/filters/mcp-challenge.filter.d.ts +20 -0
  200. package/dist/mcp/filters/mcp-challenge.filter.d.ts.map +1 -0
  201. package/dist/mcp/filters/mcp-challenge.filter.js +69 -0
  202. package/dist/mcp/filters/mcp-challenge.filter.js.map +1 -0
  203. package/dist/mcp/guards/mcp-auth.guard.d.ts +4 -1
  204. package/dist/mcp/guards/mcp-auth.guard.d.ts.map +1 -1
  205. package/dist/mcp/guards/mcp-auth.guard.js +19 -5
  206. package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
  207. package/dist/mcp/guards/mcp-permission.guard.d.ts +25 -3
  208. package/dist/mcp/guards/mcp-permission.guard.d.ts.map +1 -1
  209. package/dist/mcp/guards/mcp-permission.guard.js +46 -26
  210. package/dist/mcp/guards/mcp-permission.guard.js.map +1 -1
  211. package/dist/mcp/mcp-audit.service.d.ts +17 -0
  212. package/dist/mcp/mcp-audit.service.d.ts.map +1 -1
  213. package/dist/mcp/mcp-audit.service.js +32 -3
  214. package/dist/mcp/mcp-audit.service.js.map +1 -1
  215. package/dist/mcp/mcp-permission.service.d.ts +64 -0
  216. package/dist/mcp/mcp-permission.service.d.ts.map +1 -0
  217. package/dist/mcp/mcp-permission.service.js +178 -0
  218. package/dist/mcp/mcp-permission.service.js.map +1 -0
  219. package/dist/mcp/mcp-server.service.d.ts +3 -1
  220. package/dist/mcp/mcp-server.service.d.ts.map +1 -1
  221. package/dist/mcp/mcp-server.service.js +36 -15
  222. package/dist/mcp/mcp-server.service.js.map +1 -1
  223. package/dist/mcp/mcp.controller.d.ts.map +1 -1
  224. package/dist/mcp/mcp.controller.js +10 -2
  225. package/dist/mcp/mcp.controller.js.map +1 -1
  226. package/dist/mcp/mcp.module.d.ts.map +1 -1
  227. package/dist/mcp/mcp.module.js +5 -1
  228. package/dist/mcp/mcp.module.js.map +1 -1
  229. package/dist/mcp/tools/core-ai.mcp-tools.js +2 -9
  230. package/dist/mcp/tools/core-ai.mcp-tools.js.map +1 -1
  231. package/dist/mcp/tools/core-dashboard-items.mcp-tools.js +1 -1
  232. package/dist/mcp/tools/core-dashboard-items.mcp-tools.js.map +1 -1
  233. package/dist/mcp/tools/core-dashboard.mcp-tools.js +2 -9
  234. package/dist/mcp/tools/core-dashboard.mcp-tools.js.map +1 -1
  235. package/dist/mcp/tools/core-event-webhooks.mcp-tools.d.ts.map +1 -1
  236. package/dist/mcp/tools/core-event-webhooks.mcp-tools.js +2 -10
  237. package/dist/mcp/tools/core-event-webhooks.mcp-tools.js.map +1 -1
  238. package/dist/mcp/tools/core-files.mcp-tools.d.ts +17 -5
  239. package/dist/mcp/tools/core-files.mcp-tools.d.ts.map +1 -1
  240. package/dist/mcp/tools/core-files.mcp-tools.js +186 -24
  241. package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -1
  242. package/dist/mcp/tools/core-integration-events.mcp-tools.js +2 -9
  243. package/dist/mcp/tools/core-integration-events.mcp-tools.js.map +1 -1
  244. package/dist/mcp/tools/core-mail-sent.mcp-tools.js +2 -14
  245. package/dist/mcp/tools/core-mail-sent.mcp-tools.js.map +1 -1
  246. package/dist/mcp/tools/core-mail.mcp-tools.js +2 -9
  247. package/dist/mcp/tools/core-mail.mcp-tools.js.map +1 -1
  248. package/dist/mcp/tools/core-menus.mcp-tools.d.ts.map +1 -1
  249. package/dist/mcp/tools/core-menus.mcp-tools.js +2 -10
  250. package/dist/mcp/tools/core-menus.mcp-tools.js.map +1 -1
  251. package/dist/mcp/tools/core-notifications.mcp-tools.d.ts.map +1 -1
  252. package/dist/mcp/tools/core-notifications.mcp-tools.js +0 -1
  253. package/dist/mcp/tools/core-notifications.mcp-tools.js.map +1 -1
  254. package/dist/mcp/tools/core-roles.mcp-tools.d.ts.map +1 -1
  255. package/dist/mcp/tools/core-roles.mcp-tools.js +2 -13
  256. package/dist/mcp/tools/core-roles.mcp-tools.js.map +1 -1
  257. package/dist/mcp/tools/core-routes.mcp-tools.d.ts.map +1 -1
  258. package/dist/mcp/tools/core-routes.mcp-tools.js +2 -11
  259. package/dist/mcp/tools/core-routes.mcp-tools.js.map +1 -1
  260. package/dist/mcp/tools/core-screens.mcp-tools.d.ts.map +1 -1
  261. package/dist/mcp/tools/core-screens.mcp-tools.js +2 -11
  262. package/dist/mcp/tools/core-screens.mcp-tools.js.map +1 -1
  263. package/dist/mcp/tools/core-sessions.mcp-tools.d.ts.map +1 -1
  264. package/dist/mcp/tools/core-sessions.mcp-tools.js +0 -2
  265. package/dist/mcp/tools/core-sessions.mcp-tools.js.map +1 -1
  266. package/dist/mcp/tools/core-settings.mcp-tools.d.ts.map +1 -1
  267. package/dist/mcp/tools/core-settings.mcp-tools.js +2 -10
  268. package/dist/mcp/tools/core-settings.mcp-tools.js.map +1 -1
  269. package/dist/mcp/tools/core-users.mcp-tools.js +2 -9
  270. package/dist/mcp/tools/core-users.mcp-tools.js.map +1 -1
  271. package/dist/mcp/tools/core-webhooks.mcp-tools.d.ts.map +1 -1
  272. package/dist/mcp/tools/core-webhooks.mcp-tools.js +2 -10
  273. package/dist/mcp/tools/core-webhooks.mcp-tools.js.map +1 -1
  274. package/dist/mcp/types/mcp-context.type.d.ts +9 -0
  275. package/dist/mcp/types/mcp-context.type.d.ts.map +1 -1
  276. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  277. package/dist/mcp-chat/mcp-chat.service.js +8 -0
  278. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  279. package/dist/meeting/meeting-provider.registry.d.ts +115 -0
  280. package/dist/meeting/meeting-provider.registry.d.ts.map +1 -1
  281. package/dist/meeting/meeting-provider.registry.js.map +1 -1
  282. package/dist/meeting/meeting.constants.d.ts +70 -0
  283. package/dist/meeting/meeting.constants.d.ts.map +1 -1
  284. package/dist/meeting/meeting.constants.js +9 -1
  285. package/dist/meeting/meeting.constants.js.map +1 -1
  286. package/dist/menu/menu.service.d.ts.map +1 -1
  287. package/dist/menu/menu.service.js +29 -9
  288. package/dist/menu/menu.service.js.map +1 -1
  289. package/dist/message-template/dto/update-message-template.dto.d.ts +18 -0
  290. package/dist/message-template/dto/update-message-template.dto.d.ts.map +1 -0
  291. package/dist/message-template/dto/update-message-template.dto.js +38 -0
  292. package/dist/message-template/dto/update-message-template.dto.js.map +1 -0
  293. package/dist/message-template/message-template-admin.service.d.ts +70 -0
  294. package/dist/message-template/message-template-admin.service.d.ts.map +1 -0
  295. package/dist/message-template/message-template-admin.service.js +226 -0
  296. package/dist/message-template/message-template-admin.service.js.map +1 -0
  297. package/dist/message-template/message-template.controller.d.ts +29 -0
  298. package/dist/message-template/message-template.controller.d.ts.map +1 -0
  299. package/dist/message-template/message-template.controller.js +101 -0
  300. package/dist/message-template/message-template.controller.js.map +1 -0
  301. package/dist/message-template/message-template.module.d.ts +10 -0
  302. package/dist/message-template/message-template.module.d.ts.map +1 -0
  303. package/dist/message-template/message-template.module.js +33 -0
  304. package/dist/message-template/message-template.module.js.map +1 -0
  305. package/dist/message-template/message-template.registry.d.ts +55 -0
  306. package/dist/message-template/message-template.registry.d.ts.map +1 -0
  307. package/dist/message-template/message-template.registry.js +64 -0
  308. package/dist/message-template/message-template.registry.js.map +1 -0
  309. package/dist/message-template/message-template.service.d.ts +59 -0
  310. package/dist/message-template/message-template.service.d.ts.map +1 -0
  311. package/dist/message-template/message-template.service.js +166 -0
  312. package/dist/message-template/message-template.service.js.map +1 -0
  313. package/dist/notification/notification.constants.d.ts +11 -0
  314. package/dist/notification/notification.constants.d.ts.map +1 -0
  315. package/dist/notification/notification.constants.js +14 -0
  316. package/dist/notification/notification.constants.js.map +1 -0
  317. package/dist/notification/notification.controller.d.ts +20 -20
  318. package/dist/notification/notification.module.d.ts.map +1 -1
  319. package/dist/notification/notification.module.js +3 -0
  320. package/dist/notification/notification.module.js.map +1 -1
  321. package/dist/notification/notification.service.d.ts +33 -21
  322. package/dist/notification/notification.service.d.ts.map +1 -1
  323. package/dist/notification/notification.service.js +36 -2
  324. package/dist/notification/notification.service.js.map +1 -1
  325. package/dist/oauth/oauth.controller.d.ts +4 -6
  326. package/dist/oauth/oauth.controller.d.ts.map +1 -1
  327. package/dist/oauth/oauth.controller.js +0 -1
  328. package/dist/oauth/oauth.controller.js.map +1 -1
  329. package/dist/oauth/oauth.errors.d.ts +15 -1
  330. package/dist/oauth/oauth.errors.d.ts.map +1 -1
  331. package/dist/oauth/oauth.errors.js +9 -1
  332. package/dist/oauth/oauth.errors.js.map +1 -1
  333. package/dist/oauth/oauth.module.d.ts.map +1 -1
  334. package/dist/oauth/oauth.module.js +6 -1
  335. package/dist/oauth/oauth.module.js.map +1 -1
  336. package/dist/oauth/oauth.service.d.ts +25 -5
  337. package/dist/oauth/oauth.service.d.ts.map +1 -1
  338. package/dist/oauth/oauth.service.js +63 -27
  339. package/dist/oauth/oauth.service.js.map +1 -1
  340. package/dist/oauth/providers/abstract.provider.d.ts +10 -0
  341. package/dist/oauth/providers/abstract.provider.d.ts.map +1 -1
  342. package/dist/oauth/providers/abstract.provider.js +39 -12
  343. package/dist/oauth/providers/abstract.provider.js.map +1 -1
  344. package/dist/oauth/providers/github.provider.d.ts +1 -1
  345. package/dist/oauth/providers/github.provider.d.ts.map +1 -1
  346. package/dist/oauth/providers/github.provider.js +48 -22
  347. package/dist/oauth/providers/github.provider.js.map +1 -1
  348. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
  349. package/dist/oauth/providers/microsoft-entra-id.provider.js +6 -0
  350. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  351. package/dist/observability/monitored-cron.d.ts +29 -12
  352. package/dist/observability/monitored-cron.d.ts.map +1 -1
  353. package/dist/observability/monitored-cron.js +131 -46
  354. package/dist/observability/monitored-cron.js.map +1 -1
  355. package/dist/pairing/pairing.service.d.ts +6 -2
  356. package/dist/pairing/pairing.service.d.ts.map +1 -1
  357. package/dist/profile/dto/change-password.dto.d.ts.map +1 -1
  358. package/dist/profile/dto/change-password.dto.js +4 -6
  359. package/dist/profile/dto/change-password.dto.js.map +1 -1
  360. package/dist/profile/profile.controller.d.ts +1 -1
  361. package/dist/profile/profile.service.d.ts +1 -1
  362. package/dist/profile/profile.service.d.ts.map +1 -1
  363. package/dist/profile/profile.service.js +9 -3
  364. package/dist/profile/profile.service.js.map +1 -1
  365. package/dist/realtime/realtime-tick.coalescer.d.ts +34 -0
  366. package/dist/realtime/realtime-tick.coalescer.d.ts.map +1 -0
  367. package/dist/realtime/realtime-tick.coalescer.js +60 -0
  368. package/dist/realtime/realtime-tick.coalescer.js.map +1 -0
  369. package/dist/realtime/realtime.service.d.ts +2 -0
  370. package/dist/realtime/realtime.service.d.ts.map +1 -1
  371. package/dist/realtime/realtime.service.js +22 -2
  372. package/dist/realtime/realtime.service.js.map +1 -1
  373. package/dist/redis/redis-kv.service.d.ts +90 -0
  374. package/dist/redis/redis-kv.service.d.ts.map +1 -0
  375. package/dist/redis/redis-kv.service.js +247 -0
  376. package/dist/redis/redis-kv.service.js.map +1 -0
  377. package/dist/redis/redis-master.d.ts +29 -0
  378. package/dist/redis/redis-master.d.ts.map +1 -0
  379. package/dist/redis/redis-master.js +81 -0
  380. package/dist/redis/redis-master.js.map +1 -0
  381. package/dist/redis/redis-pubsub.d.ts +12 -0
  382. package/dist/redis/redis-pubsub.d.ts.map +1 -1
  383. package/dist/redis/redis-pubsub.js +25 -2
  384. package/dist/redis/redis-pubsub.js.map +1 -1
  385. package/dist/redis/redis.module.d.ts +11 -0
  386. package/dist/redis/redis.module.d.ts.map +1 -0
  387. package/dist/redis/redis.module.js +30 -0
  388. package/dist/redis/redis.module.js.map +1 -0
  389. package/dist/session/session.controller.d.ts +6 -2
  390. package/dist/session/session.controller.d.ts.map +1 -1
  391. package/dist/session/session.service.d.ts +118 -15
  392. package/dist/session/session.service.d.ts.map +1 -1
  393. package/dist/session/session.service.js +251 -77
  394. package/dist/session/session.service.js.map +1 -1
  395. package/dist/setting/setting.controller.d.ts +5 -0
  396. package/dist/setting/setting.controller.d.ts.map +1 -1
  397. package/dist/setting/setting.service.d.ts +7 -0
  398. package/dist/setting/setting.service.d.ts.map +1 -1
  399. package/dist/setting/setting.service.js +38 -3
  400. package/dist/setting/setting.service.js.map +1 -1
  401. package/dist/task/task.service.d.ts +17 -0
  402. package/dist/task/task.service.d.ts.map +1 -1
  403. package/dist/task/task.service.js +48 -13
  404. package/dist/task/task.service.js.map +1 -1
  405. package/dist/token/token.service.d.ts +19 -1
  406. package/dist/token/token.service.d.ts.map +1 -1
  407. package/dist/token/token.service.js +39 -2
  408. package/dist/token/token.service.js.map +1 -1
  409. package/dist/user/user-credential.util.d.ts +10 -0
  410. package/dist/user/user-credential.util.d.ts.map +1 -1
  411. package/dist/user/user-credential.util.js +14 -1
  412. package/dist/user/user-credential.util.js.map +1 -1
  413. package/dist/user/user.service.d.ts +12 -4
  414. package/dist/user/user.service.d.ts.map +1 -1
  415. package/dist/user/user.service.js +2 -11
  416. package/dist/user/user.service.js.map +1 -1
  417. package/dist/user/user.sort.d.ts +16 -0
  418. package/dist/user/user.sort.d.ts.map +1 -0
  419. package/dist/user/user.sort.js +25 -0
  420. package/dist/user/user.sort.js.map +1 -0
  421. package/dist/utils/abbreviate-name.d.ts +13 -0
  422. package/dist/utils/abbreviate-name.d.ts.map +1 -0
  423. package/dist/utils/abbreviate-name.js +42 -0
  424. package/dist/utils/abbreviate-name.js.map +1 -0
  425. package/dist/utils/date-range-query.dto.d.ts +11 -0
  426. package/dist/utils/date-range-query.dto.d.ts.map +1 -0
  427. package/dist/utils/date-range-query.dto.js +63 -0
  428. package/dist/utils/date-range-query.dto.js.map +1 -0
  429. package/dist/utils/date-range.d.ts +96 -0
  430. package/dist/utils/date-range.d.ts.map +1 -0
  431. package/dist/utils/date-range.js +172 -0
  432. package/dist/utils/date-range.js.map +1 -0
  433. package/dist/webhook-integration/webhook-utils.d.ts.map +1 -1
  434. package/dist/webhook-integration/webhook-utils.js +24 -0
  435. package/dist/webhook-integration/webhook-utils.js.map +1 -1
  436. package/dist/whatsapp-sender/whatsapp-recipients.d.ts +49 -0
  437. package/dist/whatsapp-sender/whatsapp-recipients.d.ts.map +1 -0
  438. package/dist/whatsapp-sender/whatsapp-recipients.js +66 -0
  439. package/dist/whatsapp-sender/whatsapp-recipients.js.map +1 -0
  440. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +25 -0
  441. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -1
  442. package/dist/whatsapp-sender/whatsapp-sender.service.js +46 -5
  443. package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -1
  444. package/hedhog/data/integration_provider.yaml +9 -0
  445. package/hedhog/data/integration_type.yaml +6 -0
  446. package/hedhog/data/locale.yaml +0 -1
  447. package/hedhog/data/mail.yaml +2 -2
  448. package/hedhog/data/mail_layout.yaml +6 -3
  449. package/hedhog/data/menu.yaml +25 -5
  450. package/hedhog/data/route.yaml +140 -0
  451. package/hedhog/data/setting_group.yaml +137 -3
  452. package/hedhog/frontend/app/access-log/page.tsx.ejs +47 -53
  453. package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +33 -8
  454. package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +54 -13
  455. package/hedhog/frontend/app/account/components/mfa-method-card.tsx.ejs +7 -1
  456. package/hedhog/frontend/app/account/components/recovery-codes-dialog.tsx.ejs +1 -0
  457. package/hedhog/frontend/app/account/components/tokens.tsx.ejs +47 -17
  458. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +46 -5
  459. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +101 -30
  460. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +24 -8
  461. package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +80 -15
  462. package/hedhog/frontend/app/configurations/[slug]/components/image-optimization-action.tsx.ejs +166 -0
  463. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +145 -45
  464. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +99 -219
  465. package/hedhog/frontend/app/configurations/[slug]/page.tsx.ejs +19 -1
  466. package/hedhog/frontend/app/configurations/layout.tsx.ejs +19 -5
  467. package/hedhog/frontend/app/dashboard/[slug]/widget-renderer.tsx.ejs +2 -8
  468. package/hedhog/frontend/app/dashboard/components/dynamic-widget.tsx.ejs +3 -0
  469. package/hedhog/frontend/app/dashboard/components/widget-wrapper.tsx.ejs +4 -0
  470. package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +43 -44
  471. package/hedhog/frontend/app/dashboard/management/tabs/component-roles-tab.tsx.ejs +41 -3
  472. package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +42 -2
  473. package/hedhog/frontend/app/dashboard/management/tabs/dashboard-roles-tab.tsx.ejs +41 -3
  474. package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +39 -4
  475. package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +42 -3
  476. package/hedhog/frontend/app/incidents/page.tsx.ejs +60 -31
  477. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +45 -5
  478. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +92 -15
  479. package/hedhog/frontend/app/mail/log/page.tsx.ejs +109 -61
  480. package/hedhog/frontend/app/mail/template/page.tsx.ejs +125 -23
  481. package/hedhog/frontend/app/mcp_chat/chat-components.tsx.ejs +13 -15
  482. package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +116 -110
  483. package/hedhog/frontend/app/message-templates/_components/message-template-sheet.tsx.ejs +245 -0
  484. package/hedhog/frontend/app/message-templates/_lib/types.ts.ejs +24 -0
  485. package/hedhog/frontend/app/message-templates/page.tsx.ejs +182 -0
  486. package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1 -0
  487. package/hedhog/frontend/app/pages/page.tsx.ejs +94 -9
  488. package/hedhog/frontend/app/roles/menus.tsx.ejs +4 -4
  489. package/hedhog/frontend/app/roles/routes.tsx.ejs +4 -4
  490. package/hedhog/frontend/app/roles/users.tsx.ejs +4 -4
  491. package/hedhog/frontend/app/setting-list/page.tsx.ejs +71 -9
  492. package/hedhog/frontend/app/users/page.tsx.ejs +77 -67
  493. package/hedhog/frontend/messages/en.json +183 -36
  494. package/hedhog/frontend/messages/pt.json +183 -36
  495. package/hedhog/table/cron_lock.yaml +17 -0
  496. package/hedhog/table/file.yaml +13 -1
  497. package/hedhog/table/file_upload_chunk.yaml +23 -0
  498. package/hedhog/table/file_upload_ticket.yaml +67 -0
  499. package/hedhog/table/mcp_tool_call_log.yaml +30 -22
  500. package/hedhog/table/message_template.yaml +33 -0
  501. package/hedhog/table/setting.yaml +8 -0
  502. package/hedhog/table/user_session.yaml +36 -1
  503. package/package.json +7 -5
  504. package/src/ai/ai-agent.sort.ts +21 -0
  505. package/src/ai/ai.service.spec.ts +173 -1
  506. package/src/ai/ai.service.ts +64 -193
  507. package/src/ai-instruction/ai-instruction.service.ts +32 -28
  508. package/src/ai-instruction/ai-instruction.sort.ts +32 -0
  509. package/src/auth/auth.module.ts +8 -1
  510. package/src/auth/auth.service.spec.ts +108 -1
  511. package/src/auth/auth.service.ts +59 -5
  512. package/src/auth/guards/auth.guard.ts +9 -1
  513. package/src/authorize/authorize.controller.ts +126 -11
  514. package/src/authorize/authorize.errors.ts +55 -0
  515. package/src/authorize/authorize.module.ts +6 -1
  516. package/src/authorize/authorize.service.spec.ts +379 -7
  517. package/src/authorize/authorize.service.ts +309 -23
  518. package/src/authorize/dto/authorize-info.dto.ts +21 -3
  519. package/src/authorize/dto/consent.dto.ts +21 -3
  520. package/src/authorize/dto/token.dto.ts +24 -2
  521. package/src/authorize/oauth-exception.filter.ts +58 -0
  522. package/src/authorize/oauth-metadata.service.ts +67 -0
  523. package/src/authorize/well-known.controller.spec.ts +84 -0
  524. package/src/authorize/well-known.controller.ts +96 -0
  525. package/src/captcha/captcha.service.spec.ts +211 -4
  526. package/src/captcha/captcha.service.ts +127 -10
  527. package/src/core.module.ts +6 -0
  528. package/src/dashboard/dashboard-component-role/dashboard-component-role.service.ts +2 -3
  529. package/src/dashboard/dashboard-component-role/dashboard-component-role.sort.ts +18 -0
  530. package/src/dashboard/dashboard-item/dashboard-item.service.ts +2 -3
  531. package/src/dashboard/dashboard-item/dashboard-item.sort.ts +19 -0
  532. package/src/dashboard/dashboard-role/dashboard-role.service.ts +2 -3
  533. package/src/dashboard/dashboard-role/dashboard-role.sort.ts +16 -0
  534. package/src/file/file-upload-ticket.service.spec.ts +422 -0
  535. package/src/file/file-upload-ticket.service.ts +513 -0
  536. package/src/file/file.controller.ts +65 -0
  537. package/src/file/file.module.ts +14 -2
  538. package/src/file/file.service.spec.ts +94 -0
  539. package/src/file/file.service.ts +433 -53
  540. package/src/file/filename-encoding.util.spec.ts +54 -0
  541. package/src/file/filename-encoding.util.ts +67 -0
  542. package/src/file/image-optimization.service.spec.ts +156 -19
  543. package/src/file/image-optimization.service.ts +106 -21
  544. package/src/file/mcp-file-source.schema.ts +83 -0
  545. package/src/file/mcp-file-source.service.spec.ts +473 -0
  546. package/src/file/mcp-file-source.service.ts +445 -0
  547. package/src/file/mimetype-sniff.util.spec.ts +126 -0
  548. package/src/file/mimetype-sniff.util.ts +265 -0
  549. package/src/file/remote-fetch.util.spec.ts +117 -0
  550. package/src/file/remote-fetch.util.ts +330 -0
  551. package/src/impersonation/dto/start-impersonation.dto.ts +5 -2
  552. package/src/impersonation/impersonation.service.spec.ts +24 -1
  553. package/src/impersonation/impersonation.service.ts +14 -4
  554. package/src/incident/incident.controller.ts +9 -1
  555. package/src/incident/incident.service.ts +7 -0
  556. package/src/index.ts +17 -0
  557. package/src/integration-profile/integration-profile.secrets.ts +7 -0
  558. package/src/integration-profile/integration-profile.service.ts +7 -64
  559. package/src/integration-profile/integration-profile.utils.spec.ts +9 -0
  560. package/src/integration-profile/integration-profile.utils.ts +5 -5
  561. package/src/integration-profile/testers/index.ts +2 -0
  562. package/src/integration-profile/testers/remaining.testers.spec.ts +79 -0
  563. package/src/integration-profile/testers/shipping.testers.ts +94 -0
  564. package/src/mail/dto/send.dto.ts +6 -1
  565. package/src/mail/mail-template.spec.ts +58 -1
  566. package/src/mail/mail.service.spec.ts +112 -0
  567. package/src/mail/mail.service.ts +42 -4
  568. package/src/mail-sent/mail-sent.service.ts +3 -0
  569. package/src/mail-sent/mail-sent.sort.ts +19 -0
  570. package/src/mcp/filters/mcp-challenge.filter.spec.ts +76 -0
  571. package/src/mcp/filters/mcp-challenge.filter.ts +70 -0
  572. package/src/mcp/guards/mcp-auth.guard.spec.ts +51 -2
  573. package/src/mcp/guards/mcp-auth.guard.ts +24 -1
  574. package/src/mcp/guards/mcp-permission.guard.spec.ts +109 -15
  575. package/src/mcp/guards/mcp-permission.guard.ts +76 -51
  576. package/src/mcp/mcp-audit.service.spec.ts +107 -0
  577. package/src/mcp/mcp-audit.service.ts +37 -1
  578. package/src/mcp/mcp-permission.service.spec.ts +197 -0
  579. package/src/mcp/mcp-permission.service.ts +184 -0
  580. package/src/mcp/mcp-server.service.spec.ts +84 -2
  581. package/src/mcp/mcp-server.service.ts +111 -87
  582. package/src/mcp/mcp.controller.ts +8 -1
  583. package/src/mcp/mcp.module.ts +5 -1
  584. package/src/mcp/tools/core-ai.mcp-tools.ts +1 -1
  585. package/src/mcp/tools/core-dashboard-items.mcp-tools.ts +1 -1
  586. package/src/mcp/tools/core-dashboard.mcp-tools.ts +1 -1
  587. package/src/mcp/tools/core-event-webhooks.mcp-tools.ts +1 -2
  588. package/src/mcp/tools/core-files.mcp-tools.ts +202 -22
  589. package/src/mcp/tools/core-integration-events.mcp-tools.ts +1 -1
  590. package/src/mcp/tools/core-mail-sent.mcp-tools.ts +1 -1
  591. package/src/mcp/tools/core-mail.mcp-tools.ts +1 -1
  592. package/src/mcp/tools/core-menus.mcp-tools.ts +1 -2
  593. package/src/mcp/tools/core-notifications.mcp-tools.ts +0 -1
  594. package/src/mcp/tools/core-roles.mcp-tools.ts +1 -5
  595. package/src/mcp/tools/core-routes.mcp-tools.ts +1 -3
  596. package/src/mcp/tools/core-screens.mcp-tools.ts +1 -3
  597. package/src/mcp/tools/core-sessions.mcp-tools.ts +0 -2
  598. package/src/mcp/tools/core-settings.mcp-tools.ts +1 -2
  599. package/src/mcp/tools/core-users.mcp-tools.ts +1 -1
  600. package/src/mcp/tools/core-webhooks.mcp-tools.ts +1 -2
  601. package/src/mcp/types/mcp-context.type.ts +15 -6
  602. package/src/mcp-chat/mcp-chat.service.ts +8 -0
  603. package/src/meeting/meeting-provider.registry.ts +121 -0
  604. package/src/meeting/meeting.constants.ts +74 -0
  605. package/src/menu/menu.service.spec.ts +89 -0
  606. package/src/menu/menu.service.ts +29 -11
  607. package/src/message-template/dto/update-message-template.dto.ts +22 -0
  608. package/src/message-template/message-template-admin.service.spec.ts +163 -0
  609. package/src/message-template/message-template-admin.service.ts +239 -0
  610. package/src/message-template/message-template.controller.ts +52 -0
  611. package/src/message-template/message-template.module.ts +21 -0
  612. package/src/message-template/message-template.registry.spec.ts +62 -0
  613. package/src/message-template/message-template.registry.ts +125 -0
  614. package/src/message-template/message-template.service.spec.ts +149 -0
  615. package/src/message-template/message-template.service.ts +149 -0
  616. package/src/notification/notification.constants.ts +10 -0
  617. package/src/notification/notification.module.ts +3 -0
  618. package/src/notification/notification.service.spec.ts +75 -1
  619. package/src/notification/notification.service.ts +39 -1
  620. package/src/oauth/oauth.controller.ts +0 -1
  621. package/src/oauth/oauth.errors.ts +7 -0
  622. package/src/oauth/oauth.module.ts +6 -1
  623. package/src/oauth/oauth.service.spec.ts +58 -7
  624. package/src/oauth/oauth.service.ts +71 -32
  625. package/src/oauth/providers/abstract.provider.spec.ts +192 -0
  626. package/src/oauth/providers/abstract.provider.ts +46 -14
  627. package/src/oauth/providers/github.provider.ts +57 -34
  628. package/src/oauth/providers/microsoft-entra-id.provider.ts +8 -1
  629. package/src/observability/monitored-cron.spec.ts +164 -31
  630. package/src/observability/monitored-cron.ts +154 -62
  631. package/src/profile/dto/change-password.dto.ts +25 -7
  632. package/src/profile/profile.service.spec.ts +97 -0
  633. package/src/profile/profile.service.ts +9 -3
  634. package/src/realtime/realtime-tick.coalescer.spec.ts +92 -0
  635. package/src/realtime/realtime-tick.coalescer.ts +60 -0
  636. package/src/realtime/realtime.service.spec.ts +33 -0
  637. package/src/realtime/realtime.service.ts +28 -2
  638. package/src/redis/redis-kv.service.ts +261 -0
  639. package/src/redis/redis-master.spec.ts +111 -0
  640. package/src/redis/redis-master.ts +86 -0
  641. package/src/redis/redis-pubsub.ts +27 -3
  642. package/src/redis/redis.module.ts +17 -0
  643. package/src/session/session.service.spec.ts +121 -42
  644. package/src/session/session.service.ts +279 -82
  645. package/src/setting/setting.service.ts +44 -3
  646. package/src/task/task.service.spec.ts +41 -0
  647. package/src/task/task.service.ts +53 -13
  648. package/src/token/token.service.spec.ts +90 -0
  649. package/src/token/token.service.ts +48 -2
  650. package/src/user/user-credential.util.ts +14 -5
  651. package/src/user/user.service.ts +2 -12
  652. package/src/user/user.sort.ts +25 -0
  653. package/src/utils/abbreviate-name.spec.ts +50 -0
  654. package/src/utils/abbreviate-name.ts +44 -0
  655. package/src/utils/date-range-query.dto.ts +56 -0
  656. package/src/utils/date-range.spec.ts +175 -0
  657. package/src/utils/date-range.ts +246 -0
  658. package/src/webhook-integration/webhook-utils.spec.ts +67 -0
  659. package/src/webhook-integration/webhook-utils.ts +26 -0
  660. package/src/whatsapp-sender/whatsapp-recipients.spec.ts +89 -0
  661. package/src/whatsapp-sender/whatsapp-recipients.ts +83 -0
  662. package/src/whatsapp-sender/whatsapp-sender.service.spec.ts +112 -0
  663. package/src/whatsapp-sender/whatsapp-sender.service.ts +58 -5
  664. package/hedhog/query/device_pairing_request.sql +0 -46
  665. package/hedhog/query/impersonation_grant.sql +0 -71
  666. package/hedhog/query/oauth_authorize_pkce.sql +0 -58
  667. package/hedhog/query/oauth_mobile_state_token.sql +0 -30
  668. package/hedhog/query/oauth_web_ref_token.sql +0 -25
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OAuthExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const authorize_errors_1 = require("./authorize.errors");
12
+ /**
13
+ * Traduz o que sai dos endpoints OAuth para o formato do RFC 6749 §5.2:
14
+ * `{ error, error_description }`, sempre `no-store`.
15
+ *
16
+ * Existe porque o `HttpExceptionFilter` global quase serve, mas não nos dois
17
+ * casos que importam: ele acrescenta `statusCode`/`timestamp`/`path` ao corpo, e
18
+ * uma falha do `ValidationPipe` sai como `{ message: { campo: [...] } }`, que não
19
+ * é um erro OAuth e nenhum cliente sabe ler.
20
+ *
21
+ * O campo `message` é preservado de propósito — os cinco clientes já registrados
22
+ * leem ele nas respostas de erro de hoje.
23
+ */
24
+ let OAuthExceptionFilter = class OAuthExceptionFilter {
25
+ catch(exception, host) {
26
+ var _a, _b;
27
+ const response = host.switchToHttp().getResponse();
28
+ const status = exception.getStatus();
29
+ const body = exception.getResponse();
30
+ response.setHeader('Cache-Control', 'no-store');
31
+ response.setHeader('Pragma', 'no-cache');
32
+ if (exception instanceof authorize_errors_1.OAuthError) {
33
+ response.status(status).json(Object.assign(Object.assign(Object.assign({ error: body.error, error_description: body.error_description }, (body.redirectable ? { redirectable: true } : {})), (body.issuer ? { issuer: body.issuer } : {})), { message: body.message }));
34
+ return;
35
+ }
36
+ // Falha de validação de DTO: vira invalid_request, com a mensagem original
37
+ // preservada para quem estiver depurando.
38
+ const description = typeof body === 'string'
39
+ ? body
40
+ : typeof (body === null || body === void 0 ? void 0 : body.message) === 'string'
41
+ ? body.message
42
+ : JSON.stringify((_a = body === null || body === void 0 ? void 0 : body.message) !== null && _a !== void 0 ? _a : 'Invalid request.');
43
+ response.status(status).json({
44
+ error: status === 400 ? 'invalid_request' : 'server_error',
45
+ error_description: description,
46
+ message: (_b = body === null || body === void 0 ? void 0 : body.message) !== null && _b !== void 0 ? _b : description,
47
+ });
48
+ }
49
+ };
50
+ exports.OAuthExceptionFilter = OAuthExceptionFilter;
51
+ exports.OAuthExceptionFilter = OAuthExceptionFilter = __decorate([
52
+ (0, common_1.Catch)(common_1.HttpException)
53
+ ], OAuthExceptionFilter);
54
+ //# sourceMappingURL=oauth-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-exception.filter.js","sourceRoot":"","sources":["../../src/authorize/oauth-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAKwB;AAExB,yDAAgD;AAEhD;;;;;;;;;;;GAWG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,KAAK,CAAC,SAAwB,EAAE,IAAmB;;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAY,CAAC;QAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,EAAS,CAAC;QAE5C,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAChD,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,SAAS,YAAY,6BAAU,EAAE,CAAC;YACpC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,6CAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IACtC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACjD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC/C,OAAO,EAAE,IAAI,CAAC,OAAO,IACrB,CAAC;YACH,OAAO;QACT,CAAC;QAED,2EAA2E;QAC3E,0CAA0C;QAC1C,MAAM,WAAW,GACf,OAAO,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA,KAAK,QAAQ;gBACjC,CAAC,CAAC,IAAI,CAAC,OAAO;gBACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,kBAAkB,CAAC,CAAC;QAE5D,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc;YAC1D,iBAAiB,EAAE,WAAW;YAC9B,OAAO,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,WAAW;SACtC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,cAAK,EAAC,sBAAa,CAAC;GACR,oBAAoB,CAmChC"}
@@ -0,0 +1,39 @@
1
+ import { SettingService } from '../setting/setting.service';
2
+ /**
3
+ * Escopo que confina um token ao /mcp.
4
+ *
5
+ * Mora aqui, e nao no modulo mcp, porque quem decide se uma concessao e de
6
+ * recurso e o fluxo de autorizacao — o guard do MCP so verifica o resultado.
7
+ */
8
+ export declare const MCP_SCOPE = "mcp";
9
+ /**
10
+ * Os identificadores canônicos do HedHog como OAuth provider.
11
+ *
12
+ * Existe como service, e não como constante, porque nada aqui é fixo: o mesmo
13
+ * código roda em produção, em dev e atrás de um túnel, e o `issuer` precisa
14
+ * casar exatamente com a origem de onde o cliente buscou os metadados (RFC 8414
15
+ * §3.3). Um valor compilado serviria a uma instalação só.
16
+ *
17
+ * `OAUTH_ISSUER` existe para o caso em que a API responde por um host diferente
18
+ * do que está na setting — um túnel de teste, tipicamente. Fora disso, a setting
19
+ * `api-url` é a fonte.
20
+ */
21
+ export declare class OAuthMetadataService {
22
+ private readonly setting;
23
+ constructor(setting: SettingService);
24
+ /**
25
+ * Sem barra final, sempre. `https://host/` e `https://host` são URIs válidas e
26
+ * diferentes, e a comparação de `issuer` e de `resource` é feita por igualdade
27
+ * de string — normalizar aqui, uma vez, evita que os dois formatos circulem.
28
+ */
29
+ getIssuer(): Promise<string>;
30
+ /** O recurso protegido: o valor que o `aud` de um token de conector carrega. */
31
+ getMcpResource(): Promise<string>;
32
+ /** Onde a API recebe o authorization request e redireciona para o consent. */
33
+ getAuthorizationEndpoint(): Promise<string>;
34
+ getTokenEndpoint(): Promise<string>;
35
+ /** Base da tela de consent (o admin), que é onde o usuário aprova de fato. */
36
+ getConsentUiBase(): Promise<string>;
37
+ private stripTrailingSlash;
38
+ }
39
+ //# sourceMappingURL=oauth-metadata.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-metadata.service.d.ts","sourceRoot":"","sources":["../../src/authorize/oauth-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAG1C;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQlC,gFAAgF;IAC1E,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,8EAA8E;IACxE,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzC,8EAA8E;IACxE,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKzC,OAAO,CAAC,kBAAkB;CAG3B"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OAuthMetadataService = exports.MCP_SCOPE = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const setting_service_1 = require("../setting/setting.service");
18
+ /**
19
+ * Escopo que confina um token ao /mcp.
20
+ *
21
+ * Mora aqui, e nao no modulo mcp, porque quem decide se uma concessao e de
22
+ * recurso e o fluxo de autorizacao — o guard do MCP so verifica o resultado.
23
+ */
24
+ exports.MCP_SCOPE = 'mcp';
25
+ /**
26
+ * Os identificadores canônicos do HedHog como OAuth provider.
27
+ *
28
+ * Existe como service, e não como constante, porque nada aqui é fixo: o mesmo
29
+ * código roda em produção, em dev e atrás de um túnel, e o `issuer` precisa
30
+ * casar exatamente com a origem de onde o cliente buscou os metadados (RFC 8414
31
+ * §3.3). Um valor compilado serviria a uma instalação só.
32
+ *
33
+ * `OAUTH_ISSUER` existe para o caso em que a API responde por um host diferente
34
+ * do que está na setting — um túnel de teste, tipicamente. Fora disso, a setting
35
+ * `api-url` é a fonte.
36
+ */
37
+ let OAuthMetadataService = class OAuthMetadataService {
38
+ constructor(setting) {
39
+ this.setting = setting;
40
+ }
41
+ /**
42
+ * Sem barra final, sempre. `https://host/` e `https://host` são URIs válidas e
43
+ * diferentes, e a comparação de `issuer` e de `resource` é feita por igualdade
44
+ * de string — normalizar aqui, uma vez, evita que os dois formatos circulem.
45
+ */
46
+ async getIssuer() {
47
+ var _a, _b;
48
+ const fromEnv = (_a = process.env.OAUTH_ISSUER) === null || _a === void 0 ? void 0 : _a.trim();
49
+ if (fromEnv)
50
+ return this.stripTrailingSlash(fromEnv);
51
+ const settings = await this.setting.getSettingValues(['api-url']);
52
+ return this.stripTrailingSlash(String((_b = settings['api-url']) !== null && _b !== void 0 ? _b : ''));
53
+ }
54
+ /** O recurso protegido: o valor que o `aud` de um token de conector carrega. */
55
+ async getMcpResource() {
56
+ return `${await this.getIssuer()}/mcp`;
57
+ }
58
+ /** Onde a API recebe o authorization request e redireciona para o consent. */
59
+ async getAuthorizationEndpoint() {
60
+ return `${await this.getIssuer()}/auth/authorize`;
61
+ }
62
+ async getTokenEndpoint() {
63
+ return `${await this.getIssuer()}/auth/token`;
64
+ }
65
+ /** Base da tela de consent (o admin), que é onde o usuário aprova de fato. */
66
+ async getConsentUiBase() {
67
+ var _a;
68
+ const settings = await this.setting.getSettingValues(['url']);
69
+ return this.stripTrailingSlash(String((_a = settings['url']) !== null && _a !== void 0 ? _a : ''));
70
+ }
71
+ stripTrailingSlash(value) {
72
+ return value.trim().replace(/\/+$/, '');
73
+ }
74
+ };
75
+ exports.OAuthMetadataService = OAuthMetadataService;
76
+ exports.OAuthMetadataService = OAuthMetadataService = __decorate([
77
+ (0, common_1.Injectable)(),
78
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
79
+ __metadata("design:paramtypes", [setting_service_1.SettingService])
80
+ ], OAuthMetadataService);
81
+ //# sourceMappingURL=oauth-metadata.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-metadata.service.js","sourceRoot":"","sources":["../../src/authorize/oauth-metadata.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,gEAA4D;AAE5D;;;;;GAKG;AACU,QAAA,SAAS,GAAG,KAAK,CAAC;AAE/B;;;;;;;;;;;GAWG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAEmB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IACvC,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,SAAS;;QACb,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,YAAY,0CAAE,IAAI,EAAE,CAAC;QACjD,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAA,QAAQ,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,cAAc;QAClB,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;IACzC,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,wBAAwB;QAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IAChD,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,gBAAgB;;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAA,QAAQ,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AA1CY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC,CAAC,CAAA;qCACf,gCAAc;GAH/B,oBAAoB,CA0ChC"}
@@ -0,0 +1,67 @@
1
+ import { OAuthMetadataService } from './oauth-metadata.service';
2
+ /**
3
+ * Descoberta OAuth: como um cliente que só conhece a URL do recurso chega até o
4
+ * authorization server.
5
+ *
6
+ * Servido na raiz do host da API. Não há `setGlobalPrefix` no `main.ts`, e o
7
+ * middleware de compatibilidade de lá só remove um `/api` *inicial* — então
8
+ * `/.well-known/...` chega aqui intacto.
9
+ *
10
+ * Os paths são todos literais de propósito: com Express 5 (path-to-regexp v8) uma
11
+ * rota curinga derruba o boot da aplicação.
12
+ *
13
+ * Não servimos `/.well-known/openid-configuration`: não somos OIDC. Não há
14
+ * `id_token` nem JWKS (a assinatura é HS256, com segredo simétrico), e anunciar
15
+ * OIDC faria clientes procurarem endpoints que não existem.
16
+ */
17
+ export declare class WellKnownController {
18
+ private readonly metadata;
19
+ constructor(metadata: OAuthMetadataService);
20
+ /**
21
+ * RFC 9728. O par sem sufixo e o com `/mcp` devolvem o mesmo documento: a RFC
22
+ * manda inserir o path do recurso depois do `.well-known`, mas clientes
23
+ * divergem, e responder aos dois custa uma linha.
24
+ */
25
+ protectedResource(): Promise<{
26
+ resource: string;
27
+ authorization_servers: string[];
28
+ scopes_supported: string[];
29
+ bearer_methods_supported: string[];
30
+ resource_name: string;
31
+ }>;
32
+ protectedResourceMcp(): Promise<{
33
+ resource: string;
34
+ authorization_servers: string[];
35
+ scopes_supported: string[];
36
+ bearer_methods_supported: string[];
37
+ resource_name: string;
38
+ }>;
39
+ /** RFC 8414. */
40
+ authorizationServer(): Promise<{
41
+ issuer: string;
42
+ authorization_endpoint: string;
43
+ token_endpoint: string;
44
+ scopes_supported: string[];
45
+ response_types_supported: string[];
46
+ response_modes_supported: string[];
47
+ grant_types_supported: string[];
48
+ token_endpoint_auth_methods_supported: string[];
49
+ code_challenge_methods_supported: string[];
50
+ authorization_response_iss_parameter_supported: boolean;
51
+ }>;
52
+ authorizationServerMcp(): Promise<{
53
+ issuer: string;
54
+ authorization_endpoint: string;
55
+ token_endpoint: string;
56
+ scopes_supported: string[];
57
+ response_types_supported: string[];
58
+ response_modes_supported: string[];
59
+ grant_types_supported: string[];
60
+ token_endpoint_auth_methods_supported: string[];
61
+ code_challenge_methods_supported: string[];
62
+ authorization_response_iss_parameter_supported: boolean;
63
+ }>;
64
+ private buildProtectedResource;
65
+ private buildAuthorizationServer;
66
+ }
67
+ //# sourceMappingURL=well-known.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"well-known.controller.d.ts","sourceRoot":"","sources":["../../src/authorize/well-known.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AACH,qBAEa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAE3D;;;;OAIG;IAGG,iBAAiB;;;;;;;IAMjB,oBAAoB;;;;;;;IAI1B,gBAAgB;IAGV,mBAAmB;;;;;;;;;;;;IAMnB,sBAAsB;;;;;;;;;;;;YAId,sBAAsB;YAetB,wBAAwB;CA0BvC"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WellKnownController = void 0;
13
+ const api_1 = require("@hed-hog/api");
14
+ const common_1 = require("@nestjs/common");
15
+ const oauth_metadata_service_1 = require("./oauth-metadata.service");
16
+ /**
17
+ * Descoberta OAuth: como um cliente que só conhece a URL do recurso chega até o
18
+ * authorization server.
19
+ *
20
+ * Servido na raiz do host da API. Não há `setGlobalPrefix` no `main.ts`, e o
21
+ * middleware de compatibilidade de lá só remove um `/api` *inicial* — então
22
+ * `/.well-known/...` chega aqui intacto.
23
+ *
24
+ * Os paths são todos literais de propósito: com Express 5 (path-to-regexp v8) uma
25
+ * rota curinga derruba o boot da aplicação.
26
+ *
27
+ * Não servimos `/.well-known/openid-configuration`: não somos OIDC. Não há
28
+ * `id_token` nem JWKS (a assinatura é HS256, com segredo simétrico), e anunciar
29
+ * OIDC faria clientes procurarem endpoints que não existem.
30
+ */
31
+ let WellKnownController = class WellKnownController {
32
+ constructor(metadata) {
33
+ this.metadata = metadata;
34
+ }
35
+ /**
36
+ * RFC 9728. O par sem sufixo e o com `/mcp` devolvem o mesmo documento: a RFC
37
+ * manda inserir o path do recurso depois do `.well-known`, mas clientes
38
+ * divergem, e responder aos dois custa uma linha.
39
+ */
40
+ async protectedResource() {
41
+ return this.buildProtectedResource();
42
+ }
43
+ async protectedResourceMcp() {
44
+ return this.buildProtectedResource();
45
+ }
46
+ /** RFC 8414. */
47
+ async authorizationServer() {
48
+ return this.buildAuthorizationServer();
49
+ }
50
+ async authorizationServerMcp() {
51
+ return this.buildAuthorizationServer();
52
+ }
53
+ async buildProtectedResource() {
54
+ const [issuer, resource] = await Promise.all([
55
+ this.metadata.getIssuer(),
56
+ this.metadata.getMcpResource(),
57
+ ]);
58
+ return {
59
+ resource,
60
+ authorization_servers: [issuer],
61
+ scopes_supported: ['mcp'],
62
+ bearer_methods_supported: ['header'],
63
+ resource_name: 'HedHog Hub MCP',
64
+ };
65
+ }
66
+ async buildAuthorizationServer() {
67
+ const [issuer, authorizationEndpoint, tokenEndpoint] = await Promise.all([
68
+ this.metadata.getIssuer(),
69
+ this.metadata.getAuthorizationEndpoint(),
70
+ this.metadata.getTokenEndpoint(),
71
+ ]);
72
+ return {
73
+ // RFC 8414 §3.3: o cliente compara este valor com a origem de onde buscou o
74
+ // documento. Uma barra final a mais reprova a validação inteira — por isso
75
+ // o OAuthMetadataService normaliza na entrada, e não aqui.
76
+ issuer,
77
+ authorization_endpoint: authorizationEndpoint,
78
+ token_endpoint: tokenEndpoint,
79
+ scopes_supported: ['mcp', 'profile', 'vaults'],
80
+ response_types_supported: ['code'],
81
+ response_modes_supported: ['query'],
82
+ grant_types_supported: ['authorization_code', 'refresh_token'],
83
+ // Só clientes públicos: `AuthorizeService.exchangeCode` recusa qualquer
84
+ // `client_type` diferente de 'public', e não existe client_secret no modelo.
85
+ token_endpoint_auth_methods_supported: ['none'],
86
+ // `plain` é rejeitado pelo serviço, então não anunciamos.
87
+ code_challenge_methods_supported: ['S256'],
88
+ authorization_response_iss_parameter_supported: true,
89
+ };
90
+ }
91
+ };
92
+ exports.WellKnownController = WellKnownController;
93
+ __decorate([
94
+ (0, common_1.Get)('oauth-protected-resource'),
95
+ (0, common_1.Header)('Cache-Control', 'public, max-age=3600'),
96
+ __metadata("design:type", Function),
97
+ __metadata("design:paramtypes", []),
98
+ __metadata("design:returntype", Promise)
99
+ ], WellKnownController.prototype, "protectedResource", null);
100
+ __decorate([
101
+ (0, common_1.Get)('oauth-protected-resource/mcp'),
102
+ (0, common_1.Header)('Cache-Control', 'public, max-age=3600'),
103
+ __metadata("design:type", Function),
104
+ __metadata("design:paramtypes", []),
105
+ __metadata("design:returntype", Promise)
106
+ ], WellKnownController.prototype, "protectedResourceMcp", null);
107
+ __decorate([
108
+ (0, common_1.Get)('oauth-authorization-server'),
109
+ (0, common_1.Header)('Cache-Control', 'public, max-age=3600'),
110
+ __metadata("design:type", Function),
111
+ __metadata("design:paramtypes", []),
112
+ __metadata("design:returntype", Promise)
113
+ ], WellKnownController.prototype, "authorizationServer", null);
114
+ __decorate([
115
+ (0, common_1.Get)('oauth-authorization-server/mcp'),
116
+ (0, common_1.Header)('Cache-Control', 'public, max-age=3600'),
117
+ __metadata("design:type", Function),
118
+ __metadata("design:paramtypes", []),
119
+ __metadata("design:returntype", Promise)
120
+ ], WellKnownController.prototype, "authorizationServerMcp", null);
121
+ exports.WellKnownController = WellKnownController = __decorate([
122
+ (0, api_1.Public)(),
123
+ (0, common_1.Controller)('.well-known'),
124
+ __metadata("design:paramtypes", [oauth_metadata_service_1.OAuthMetadataService])
125
+ ], WellKnownController);
126
+ //# sourceMappingURL=well-known.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"well-known.controller.js","sourceRoot":"","sources":["../../src/authorize/well-known.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAsC;AACtC,2CAAyD;AACzD,qEAAgE;AAEhE;;;;;;;;;;;;;;GAcG;AAGI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAA6B,QAA8B;QAA9B,aAAQ,GAAR,QAAQ,CAAsB;IAAG,CAAC;IAE/D;;;;OAIG;IAGG,AAAN,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAED,gBAAgB;IAGV,AAAN,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACzC,CAAC;IAIK,AAAN,KAAK,CAAC,sBAAsB;QAC1B,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;SAC/B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ;YACR,qBAAqB,EAAE,CAAC,MAAM,CAAC;YAC/B,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,wBAAwB,EAAE,CAAC,QAAQ,CAAC;YACpC,aAAa,EAAE,gBAAgB;SAChC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;SACjC,CAAC,CAAC;QAEH,OAAO;YACL,4EAA4E;YAC5E,2EAA2E;YAC3E,2DAA2D;YAC3D,MAAM;YACN,sBAAsB,EAAE,qBAAqB;YAC7C,cAAc,EAAE,aAAa;YAC7B,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;YAC9C,wBAAwB,EAAE,CAAC,MAAM,CAAC;YAClC,wBAAwB,EAAE,CAAC,OAAO,CAAC;YACnC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;YAC9D,wEAAwE;YACxE,6EAA6E;YAC7E,qCAAqC,EAAE,CAAC,MAAM,CAAC;YAC/C,0DAA0D;YAC1D,gCAAgC,EAAE,CAAC,MAAM,CAAC;YAC1C,8CAA8C,EAAE,IAAI;SACrD,CAAC;IACJ,CAAC;CACF,CAAA;AA1EY,kDAAmB;AAUxB;IAFL,IAAA,YAAG,EAAC,0BAA0B,CAAC;IAC/B,IAAA,eAAM,EAAC,eAAe,EAAE,sBAAsB,CAAC;;;;4DAG/C;AAIK;IAFL,IAAA,YAAG,EAAC,8BAA8B,CAAC;IACnC,IAAA,eAAM,EAAC,eAAe,EAAE,sBAAsB,CAAC;;;;+DAG/C;AAKK;IAFL,IAAA,YAAG,EAAC,4BAA4B,CAAC;IACjC,IAAA,eAAM,EAAC,eAAe,EAAE,sBAAsB,CAAC;;;;8DAG/C;AAIK;IAFL,IAAA,YAAG,EAAC,gCAAgC,CAAC;IACrC,IAAA,eAAM,EAAC,eAAe,EAAE,sBAAsB,CAAC;;;;iEAG/C;8BA/BU,mBAAmB;IAF/B,IAAA,YAAM,GAAE;IACR,IAAA,mBAAU,EAAC,aAAa,CAAC;qCAEe,6CAAoB;GADhD,mBAAmB,CA0E/B"}
@@ -6,6 +6,17 @@ export interface CaptchaPublicConfig {
6
6
  provider_slug: string | null;
7
7
  site_key: string | null;
8
8
  }
9
+ /**
10
+ * Contexto da submissao que esta sendo verificada. Tudo opcional: uma superficie
11
+ * que ainda nao manda `action` continua passando, o que permite subir o backend
12
+ * antes do front sem derrubar quem esta com bundle antigo em cache.
13
+ */
14
+ export interface CaptchaVerifyContext {
15
+ /** IP do visitante (X-Forwarded-For repassado pelo BFF), nao o IP do pod. */
16
+ remoteIp?: string | null;
17
+ /** `data-action` que a superficie manda no widget. */
18
+ expectedAction?: string | null;
19
+ }
9
20
  /**
10
21
  * Server-side CAPTCHA verification shared by every public form in the platform.
11
22
  *
@@ -18,16 +29,35 @@ export declare class CaptchaService {
18
29
  /**
19
30
  * Verifies a token against the provider configured in an integration profile.
20
31
  * Throws `BadRequestException` when the challenge does not check out.
32
+ *
33
+ * The profile can be addressed by numeric id or by slug. Forms and channels
34
+ * hold a real FK (`captcha_integration_profile_id`), but a setting picked
35
+ * through the admin's entity-picker stores the profile *slug* — as
36
+ * `commerce-back-in-stock-captcha-profile-id` does. Accepting both keeps a
37
+ * profile chosen on screen from silently failing the challenge shut.
21
38
  */
22
- verifyForProfile(integrationProfileId: number | null | undefined, token: string | null | undefined): Promise<void>;
39
+ verifyForProfile(integrationProfileRef: number | string | null | undefined, token: string | null | undefined, context?: CaptchaVerifyContext): Promise<void>;
23
40
  /** Verifies a token against an explicit provider and its credentials. */
24
- verify(token: string, providerSlug: string, config: Record<string, string>): Promise<void>;
41
+ verify(token: string, providerSlug: string, config: Record<string, string>, context?: CaptchaVerifyContext): Promise<void>;
25
42
  /**
26
43
  * Public settings a front end needs to mount the widget. Only the site key is
27
44
  * returned - the secret never leaves the server.
28
45
  */
29
46
  getPublicConfig(integrationProfileId: number | null | undefined, enabled?: boolean): Promise<CaptchaPublicConfig>;
30
47
  static extractSiteKey(config: Record<string, unknown> | null): string | null;
48
+ /**
49
+ * Hostnames que o perfil aceita, em `config.hostnames` (separados por virgula).
50
+ * Vazio significa "nao confira" - todo perfil ja existente continua valendo.
51
+ */
52
+ static parseHostnames(config: Record<string, unknown> | null): Set<string>;
53
+ /**
54
+ * Chamada canonica de siteverify: manda o IP do visitante, tem timeout, e
55
+ * confere `action` e `hostname` alem do `success`.
56
+ *
57
+ * Toda falha - rede, HTTP nao-2xx, corpo que nao e JSON - vira falha de
58
+ * CAPTCHA. Deixar a excecao subir crua transformaria um solavanco do provedor em
59
+ * 500, e o visitante veria "erro do servidor" no lugar de "tente de novo".
60
+ */
31
61
  private verifyRemote;
32
62
  /**
33
63
  * Altcha is verified locally: the client solves a proof-of-work, and the HMAC
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.service.d.ts","sourceRoot":"","sources":["../../src/captcha/captcha.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASpD,eAAO,MAAM,iBAAiB,0DAIpB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAUD;;;;;GAKG;AACH,qBACa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAGxC;;;OAGG;IACG,gBAAgB,CACpB,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/C,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,OAAO,CAAC,IAAI,CAAC;IA0BhB,yEAAyE;IACnE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IAiChB;;;OAGG;IACG,eAAe,CACnB,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/C,OAAO,UAAO,GACb,OAAO,CAAC,mBAAmB,CAAC;IAoB/B,MAAM,CAAC,cAAc,CACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACrC,MAAM,GAAG,IAAI;YAMF,YAAY;IAc1B;;;OAGG;IACH,OAAO,CAAC,YAAY;CAsBrB"}
1
+ {"version":3,"file":"captcha.service.d.ts","sourceRoot":"","sources":["../../src/captcha/captcha.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASpD,eAAO,MAAM,iBAAiB,0DAIpB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAwBD;;;;;GAKG;AACH,qBACa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAGxC;;;;;;;;;OASG;IACG,gBAAgB,CACpB,qBAAqB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzD,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC;IAqChB,yEAAyE;IACnE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC;IAuChB;;;OAGG;IACG,eAAe,CACnB,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/C,OAAO,UAAO,GACb,OAAO,CAAC,mBAAmB,CAAC;IAoB/B,MAAM,CAAC,cAAc,CACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACrC,MAAM,GAAG,IAAI;IAMhB;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;IAU1E;;;;;;;OAOG;YACW,YAAY;IA0D1B;;;OAGG;IACH,OAAO,CAAC,YAAY;CAsBrB"}
@@ -22,6 +22,10 @@ exports.CAPTCHA_PROVIDERS = [
22
22
  'cloudflare-turnstile',
23
23
  'altcha',
24
24
  ];
25
+ /** Teto do token aceito pelo siteverify; acima disso nem vale a viagem de rede. */
26
+ const MAX_TOKEN_LENGTH = 2048;
27
+ /** Timeout da chamada ao provedor: sem ele um provedor lento prende o request. */
28
+ const SITEVERIFY_TIMEOUT_MS = 10000;
25
29
  /**
26
30
  * Server-side CAPTCHA verification shared by every public form in the platform.
27
31
  *
@@ -35,14 +39,26 @@ let CaptchaService = CaptchaService_1 = class CaptchaService {
35
39
  /**
36
40
  * Verifies a token against the provider configured in an integration profile.
37
41
  * Throws `BadRequestException` when the challenge does not check out.
42
+ *
43
+ * The profile can be addressed by numeric id or by slug. Forms and channels
44
+ * hold a real FK (`captcha_integration_profile_id`), but a setting picked
45
+ * through the admin's entity-picker stores the profile *slug* — as
46
+ * `commerce-back-in-stock-captcha-profile-id` does. Accepting both keeps a
47
+ * profile chosen on screen from silently failing the challenge shut.
38
48
  */
39
- async verifyForProfile(integrationProfileId, token) {
49
+ async verifyForProfile(integrationProfileRef, token, context = {}) {
40
50
  var _a, _b;
41
- if (!integrationProfileId) {
51
+ const ref = typeof integrationProfileRef === 'string'
52
+ ? integrationProfileRef.trim()
53
+ : integrationProfileRef;
54
+ // `'0'` is the legacy default of the settings named `...-profile-id`: it is
55
+ // nobody's id and nobody's slug.
56
+ if (!ref || ref === '0') {
42
57
  throw new common_1.BadRequestException('CAPTCHA is enabled but no integration profile is configured.');
43
58
  }
59
+ const numericId = typeof ref === 'number' ? ref : /^\d+$/.test(ref) ? Number(ref) : null;
44
60
  const profile = await this.prisma.integration_profile.findFirst({
45
- where: { id: integrationProfileId },
61
+ where: numericId ? { id: numericId } : { slug: String(ref) },
46
62
  select: {
47
63
  config: true,
48
64
  integration_provider: { select: { slug: true } },
@@ -51,19 +67,22 @@ let CaptchaService = CaptchaService_1 = class CaptchaService {
51
67
  if (!profile) {
52
68
  throw new common_1.BadRequestException('CAPTCHA integration profile not found.');
53
69
  }
54
- await this.verify(token !== null && token !== void 0 ? token : '', (_a = profile.integration_provider) === null || _a === void 0 ? void 0 : _a.slug, ((_b = profile.config) !== null && _b !== void 0 ? _b : {}));
70
+ await this.verify(token !== null && token !== void 0 ? token : '', (_a = profile.integration_provider) === null || _a === void 0 ? void 0 : _a.slug, ((_b = profile.config) !== null && _b !== void 0 ? _b : {}), context);
55
71
  }
56
72
  /** Verifies a token against an explicit provider and its credentials. */
57
- async verify(token, providerSlug, config) {
73
+ async verify(token, providerSlug, config, context = {}) {
58
74
  if (!token) {
59
75
  throw new common_1.BadRequestException('CAPTCHA token is required.');
60
76
  }
77
+ if (token.length > MAX_TOKEN_LENGTH) {
78
+ throw new common_1.BadRequestException('CAPTCHA token is malformed.');
79
+ }
61
80
  switch (providerSlug) {
62
81
  case 'recaptcha':
63
- await this.verifyRemote('https://www.google.com/recaptcha/api/siteverify', config.secret_key, token);
82
+ await this.verifyRemote('https://www.google.com/recaptcha/api/siteverify', config, token, context);
64
83
  break;
65
84
  case 'cloudflare-turnstile':
66
- await this.verifyRemote('https://challenges.cloudflare.com/turnstile/v0/siteverify', config.secret_key, token);
85
+ await this.verifyRemote('https://challenges.cloudflare.com/turnstile/v0/siteverify', config, token, context);
67
86
  break;
68
87
  case 'altcha':
69
88
  this.verifyAltcha(token, config);
@@ -101,11 +120,65 @@ let CaptchaService = CaptchaService_1 = class CaptchaService {
101
120
  const value = (_b = (_a = config.site_key) !== null && _a !== void 0 ? _a : config.sitekey) !== null && _b !== void 0 ? _b : config.public_key;
102
121
  return value ? String(value) : null;
103
122
  }
104
- async verifyRemote(url, secret, token) {
105
- const body = new URLSearchParams({ secret, response: token });
106
- const response = await fetch(url, { method: 'POST', body });
107
- const json = (await response.json());
108
- if (!json.success) {
123
+ /**
124
+ * Hostnames que o perfil aceita, em `config.hostnames` (separados por virgula).
125
+ * Vazio significa "nao confira" - todo perfil ja existente continua valendo.
126
+ */
127
+ static parseHostnames(config) {
128
+ var _a;
129
+ const raw = (_a = config === null || config === void 0 ? void 0 : config.hostnames) !== null && _a !== void 0 ? _a : config === null || config === void 0 ? void 0 : config.allowed_hostnames;
130
+ return new Set(String(raw !== null && raw !== void 0 ? raw : '')
131
+ .split(',')
132
+ .map((hostname) => hostname.trim().toLowerCase())
133
+ .filter(Boolean));
134
+ }
135
+ /**
136
+ * Chamada canonica de siteverify: manda o IP do visitante, tem timeout, e
137
+ * confere `action` e `hostname` alem do `success`.
138
+ *
139
+ * Toda falha - rede, HTTP nao-2xx, corpo que nao e JSON - vira falha de
140
+ * CAPTCHA. Deixar a excecao subir crua transformaria um solavanco do provedor em
141
+ * 500, e o visitante veria "erro do servidor" no lugar de "tente de novo".
142
+ */
143
+ async verifyRemote(url, config, token, context) {
144
+ const body = new URLSearchParams({
145
+ secret: config.secret_key,
146
+ response: token,
147
+ });
148
+ if (context.remoteIp) {
149
+ body.set('remoteip', context.remoteIp);
150
+ }
151
+ let result;
152
+ try {
153
+ const response = await fetch(url, {
154
+ method: 'POST',
155
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
156
+ signal: AbortSignal.timeout(SITEVERIFY_TIMEOUT_MS),
157
+ body,
158
+ });
159
+ if (!response.ok) {
160
+ throw new Error(`siteverify ${response.status}`);
161
+ }
162
+ result = (await response.json());
163
+ }
164
+ catch (_a) {
165
+ throw new common_1.BadRequestException('CAPTCHA validation failed.');
166
+ }
167
+ if (!(result === null || result === void 0 ? void 0 : result.success)) {
168
+ throw new common_1.BadRequestException('CAPTCHA validation failed.');
169
+ }
170
+ // As duas checagens abaixo so valem quando os dois lados informaram o campo:
171
+ // o reCAPTCHA v2 nao devolve `action`, e um perfil sem `hostnames` nao pediu
172
+ // conferencia de origem.
173
+ if (context.expectedAction &&
174
+ result.action &&
175
+ result.action !== context.expectedAction) {
176
+ throw new common_1.BadRequestException('CAPTCHA validation failed.');
177
+ }
178
+ const hostnames = CaptchaService_1.parseHostnames(config);
179
+ if (hostnames.size > 0 &&
180
+ result.hostname &&
181
+ !hostnames.has(result.hostname.toLowerCase())) {
109
182
  throw new common_1.BadRequestException('CAPTCHA validation failed.');
110
183
  }
111
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.service.js","sourceRoot":"","sources":["../../src/captcha/captcha.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAoD;AACpD,2CAKwB;AACxB,mCAAgD;AAEnC,QAAA,iBAAiB,GAAG;IAC/B,WAAW;IACX,sBAAsB;IACtB,QAAQ;CACA,CAAC;AAkBX;;;;;GAKG;AAEI,IAAM,cAAc,sBAApB,MAAM,cAAc;IACzB,YAEmB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IACrC,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CACpB,oBAA+C,EAC/C,KAAgC;;QAEhC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,4BAAmB,CAC3B,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAO,IAAI,CAAC,MAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACvE,KAAK,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE;YACnC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;aACjD;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CACf,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EACX,MAAA,OAAO,CAAC,oBAAoB,0CAAE,IAAc,EAC5C,CAAC,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,CAA2B,CACjD,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,MAAM,CACV,KAAa,EACb,YAAoB,EACpB,MAA8B;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,4BAAmB,CAAC,4BAA4B,CAAC,CAAC;QAC9D,CAAC;QAED,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,WAAW;gBACd,MAAM,IAAI,CAAC,YAAY,CACrB,iDAAiD,EACjD,MAAM,CAAC,UAAU,EACjB,KAAK,CACN,CAAC;gBACF,MAAM;YAER,KAAK,sBAAsB;gBACzB,MAAM,IAAI,CAAC,YAAY,CACrB,2DAA2D,EAC3D,MAAM,CAAC,UAAU,EACjB,KAAK,CACN,CAAC;gBACF,MAAM;YAER,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACjC,MAAM;YAER;gBACE,MAAM,IAAI,4BAAmB,CAC3B,iCAAiC,YAAY,GAAG,CACjD,CAAC;QACN,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,oBAA+C,EAC/C,OAAO,GAAG,IAAI;;QAEd,IAAI,CAAC,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,MAAO,IAAI,CAAC,MAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACvE,KAAK,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE;YACnC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;aACjD;SACF,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oBAAoB,0CAAE,IAAI,mCAAI,IAAI;YAC1D,QAAQ,EAAE,gBAAc,CAAC,cAAc,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,IAAI,CAAC;SACjE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,MAAsC;;QAEtC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,KAAK,GAAG,MAAA,MAAA,MAAM,CAAC,QAAQ,mCAAI,MAAM,CAAC,OAAO,mCAAI,MAAM,CAAC,UAAU,CAAC;QACrE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,GAAW,EACX,MAAc,EACd,KAAa;QAEb,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,4BAAmB,CAAC,4BAA4B,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,KAAa,EAAE,MAA8B;QAChE,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,4BAAmB,CAAC,+BAA+B,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC;aAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,4BAAmB,CAAC,4BAA4B,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;aAC/C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aACzB,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,4BAAmB,CAAC,4BAA4B,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF,CAAA;AAxJY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,0BAAa,CAAC,CAAC,CAAA;qCACf,0BAAa;GAH7B,cAAc,CAwJ1B"}
1
+ {"version":3,"file":"captcha.service.js","sourceRoot":"","sources":["../../src/captcha/captcha.service.ts"],"names":[],"mappings":"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"}