@hed-hog/core 0.0.355 → 0.0.358

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 (287) hide show
  1. package/dist/ai/ai.service.d.ts +3 -12
  2. package/dist/ai/ai.service.d.ts.map +1 -1
  3. package/dist/ai/ai.service.js +34 -125
  4. package/dist/ai/ai.service.js.map +1 -1
  5. package/dist/auth/guards/auth.guard.d.ts +6 -1
  6. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  7. package/dist/auth/guards/auth.guard.js +33 -2
  8. package/dist/auth/guards/auth.guard.js.map +1 -1
  9. package/dist/core.module.d.ts.map +1 -1
  10. package/dist/core.module.js +3 -3
  11. package/dist/core.module.js.map +1 -1
  12. package/dist/file/file.controller.d.ts +4 -2
  13. package/dist/file/file.controller.d.ts.map +1 -1
  14. package/dist/file/file.controller.js +44 -38
  15. package/dist/file/file.controller.js.map +1 -1
  16. package/dist/file/file.service.d.ts +2 -2
  17. package/dist/file/file.service.d.ts.map +1 -1
  18. package/dist/file/file.service.js +58 -89
  19. package/dist/file/file.service.js.map +1 -1
  20. package/dist/file/provider/azure.provider.d.ts.map +1 -1
  21. package/dist/file/provider/azure.provider.js +10 -15
  22. package/dist/file/provider/azure.provider.js.map +1 -1
  23. package/dist/file/provider/gcs.provider.d.ts.map +1 -1
  24. package/dist/file/provider/gcs.provider.js +8 -9
  25. package/dist/file/provider/gcs.provider.js.map +1 -1
  26. package/dist/file/provider/local.provider.d.ts.map +1 -1
  27. package/dist/file/provider/local.provider.js +11 -10
  28. package/dist/file/provider/local.provider.js.map +1 -1
  29. package/dist/file/provider/provider.enum.d.ts +2 -1
  30. package/dist/file/provider/provider.enum.d.ts.map +1 -1
  31. package/dist/file/provider/provider.enum.js +1 -0
  32. package/dist/file/provider/provider.enum.js.map +1 -1
  33. package/dist/file/provider/provider.factory.d.ts +1 -1
  34. package/dist/file/provider/provider.factory.d.ts.map +1 -1
  35. package/dist/file/provider/provider.factory.js +18 -5
  36. package/dist/file/provider/provider.factory.js.map +1 -1
  37. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  38. package/dist/file/provider/s3.provider.js +4 -20
  39. package/dist/file/provider/s3.provider.js.map +1 -1
  40. package/dist/file/provider/spaces.provider.d.ts +27 -0
  41. package/dist/file/provider/spaces.provider.d.ts.map +1 -0
  42. package/dist/file/provider/spaces.provider.js +203 -0
  43. package/dist/file/provider/spaces.provider.js.map +1 -0
  44. package/dist/index.d.ts +4 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +4 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/integration-profile/dto/create.dto.d.ts +9 -0
  49. package/dist/integration-profile/dto/create.dto.d.ts.map +1 -0
  50. package/dist/integration-profile/dto/create.dto.js +54 -0
  51. package/dist/integration-profile/dto/create.dto.js.map +1 -0
  52. package/dist/integration-profile/dto/export.dto.d.ts +5 -0
  53. package/dist/integration-profile/dto/export.dto.d.ts.map +1 -0
  54. package/dist/integration-profile/dto/export.dto.js +29 -0
  55. package/dist/integration-profile/dto/export.dto.js.map +1 -0
  56. package/dist/integration-profile/dto/import-confirm.dto.d.ts +17 -0
  57. package/dist/integration-profile/dto/import-confirm.dto.d.ts.map +1 -0
  58. package/dist/integration-profile/dto/import-confirm.dto.js +77 -0
  59. package/dist/integration-profile/dto/import-confirm.dto.js.map +1 -0
  60. package/dist/integration-profile/dto/update.dto.d.ts.map +1 -0
  61. package/dist/integration-profile/dto/update.dto.js.map +1 -0
  62. package/dist/integration-profile/integration-profile.controller.d.ts +142 -0
  63. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -0
  64. package/dist/integration-profile/integration-profile.controller.js +166 -0
  65. package/dist/integration-profile/integration-profile.controller.js.map +1 -0
  66. package/dist/integration-profile/integration-profile.module.d.ts +3 -0
  67. package/dist/integration-profile/integration-profile.module.d.ts.map +1 -0
  68. package/dist/{mail-profile/mail-profile.module.js → integration-profile/integration-profile.module.js} +11 -13
  69. package/dist/integration-profile/integration-profile.module.js.map +1 -0
  70. package/dist/integration-profile/integration-profile.service.d.ts +160 -0
  71. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -0
  72. package/dist/integration-profile/integration-profile.service.js +609 -0
  73. package/dist/integration-profile/integration-profile.service.js.map +1 -0
  74. package/dist/integration-profile/integration-profile.utils.d.ts +30 -0
  75. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -0
  76. package/dist/integration-profile/integration-profile.utils.js +156 -0
  77. package/dist/integration-profile/integration-profile.utils.js.map +1 -0
  78. package/dist/mail/mail.module.d.ts.map +1 -1
  79. package/dist/mail/mail.module.js +36 -23
  80. package/dist/mail/mail.module.js.map +1 -1
  81. package/dist/mail/mail.service.d.ts +4 -2
  82. package/dist/mail/mail.service.d.ts.map +1 -1
  83. package/dist/mail/mail.service.js +33 -51
  84. package/dist/mail/mail.service.js.map +1 -1
  85. package/dist/mcp/guards/mcp-auth.guard.js +1 -1
  86. package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
  87. package/dist/mcp/mcp-api-key.controller.d.ts +2 -0
  88. package/dist/mcp/mcp-api-key.controller.d.ts.map +1 -1
  89. package/dist/mcp/mcp-api-key.controller.js +1 -1
  90. package/dist/mcp/mcp-api-key.controller.js.map +1 -1
  91. package/dist/mcp/mcp-api-key.service.d.ts +2 -1
  92. package/dist/mcp/mcp-api-key.service.d.ts.map +1 -1
  93. package/dist/mcp/mcp-api-key.service.js +6 -2
  94. package/dist/mcp/mcp-api-key.service.js.map +1 -1
  95. package/dist/mcp/mcp.module.d.ts.map +1 -1
  96. package/dist/mcp/mcp.module.js +3 -5
  97. package/dist/mcp/mcp.module.js.map +1 -1
  98. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  99. package/dist/mcp-chat/mcp-chat.service.js +17 -16
  100. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  101. package/dist/oauth/interfaces/OAuthProvider.d.ts +1 -1
  102. package/dist/oauth/interfaces/OAuthProvider.d.ts.map +1 -1
  103. package/dist/oauth/oauth.controller.d.ts +4 -1
  104. package/dist/oauth/oauth.controller.d.ts.map +1 -1
  105. package/dist/oauth/oauth.controller.js +31 -5
  106. package/dist/oauth/oauth.controller.js.map +1 -1
  107. package/dist/oauth/oauth.service.d.ts +12 -1
  108. package/dist/oauth/oauth.service.d.ts.map +1 -1
  109. package/dist/oauth/oauth.service.js +125 -23
  110. package/dist/oauth/oauth.service.js.map +1 -1
  111. package/dist/oauth/providers/abstract.provider.d.ts +1 -1
  112. package/dist/oauth/providers/abstract.provider.d.ts.map +1 -1
  113. package/dist/oauth/providers/facebook.provider.d.ts +5 -2
  114. package/dist/oauth/providers/facebook.provider.d.ts.map +1 -1
  115. package/dist/oauth/providers/facebook.provider.js +34 -19
  116. package/dist/oauth/providers/facebook.provider.js.map +1 -1
  117. package/dist/oauth/providers/github.provider.d.ts +6 -2
  118. package/dist/oauth/providers/github.provider.d.ts.map +1 -1
  119. package/dist/oauth/providers/github.provider.js +43 -20
  120. package/dist/oauth/providers/github.provider.js.map +1 -1
  121. package/dist/oauth/providers/google.provider.d.ts +5 -2
  122. package/dist/oauth/providers/google.provider.d.ts.map +1 -1
  123. package/dist/oauth/providers/google.provider.js +34 -19
  124. package/dist/oauth/providers/google.provider.js.map +1 -1
  125. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts +5 -2
  126. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
  127. package/dist/oauth/providers/microsoft-entra-id.provider.js +43 -40
  128. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  129. package/dist/oauth/providers/microsoft.provider.d.ts +5 -2
  130. package/dist/oauth/providers/microsoft.provider.d.ts.map +1 -1
  131. package/dist/oauth/providers/microsoft.provider.js +34 -19
  132. package/dist/oauth/providers/microsoft.provider.js.map +1 -1
  133. package/dist/profile/profile.controller.js +1 -1
  134. package/dist/profile/profile.controller.js.map +1 -1
  135. package/dist/security/security.service.d.ts +2 -0
  136. package/dist/security/security.service.d.ts.map +1 -1
  137. package/dist/security/security.service.js +21 -0
  138. package/dist/security/security.service.js.map +1 -1
  139. package/dist/setting/setting.service.d.ts +26 -1
  140. package/dist/setting/setting.service.d.ts.map +1 -1
  141. package/dist/setting/setting.service.js +240 -7
  142. package/dist/setting/setting.service.js.map +1 -1
  143. package/dist/user/user.controller.d.ts +2 -1
  144. package/dist/user/user.controller.d.ts.map +1 -1
  145. package/dist/user/user.controller.js +5 -4
  146. package/dist/user/user.controller.js.map +1 -1
  147. package/dist/user/user.service.d.ts +4 -2
  148. package/dist/user/user.service.d.ts.map +1 -1
  149. package/dist/user/user.service.js +19 -4
  150. package/dist/user/user.service.js.map +1 -1
  151. package/dist/webhook-integration/dto/webhook-action.dto.d.ts +17 -2
  152. package/dist/webhook-integration/dto/webhook-action.dto.d.ts.map +1 -1
  153. package/dist/webhook-integration/dto/webhook-action.dto.js +93 -2
  154. package/dist/webhook-integration/dto/webhook-action.dto.js.map +1 -1
  155. package/dist/webhook-integration/event-webhook.controller.d.ts +1 -0
  156. package/dist/webhook-integration/event-webhook.controller.d.ts.map +1 -1
  157. package/dist/webhook-integration/event-webhook.controller.js +10 -0
  158. package/dist/webhook-integration/event-webhook.controller.js.map +1 -1
  159. package/dist/webhook-integration/event-webhook.service.d.ts +2 -0
  160. package/dist/webhook-integration/event-webhook.service.d.ts.map +1 -1
  161. package/dist/webhook-integration/event-webhook.service.js +30 -0
  162. package/dist/webhook-integration/event-webhook.service.js.map +1 -1
  163. package/dist/webhook-integration/webhook-command.registry.d.ts +15 -0
  164. package/dist/webhook-integration/webhook-command.registry.d.ts.map +1 -0
  165. package/dist/webhook-integration/webhook-command.registry.js +36 -0
  166. package/dist/webhook-integration/webhook-command.registry.js.map +1 -0
  167. package/dist/webhook-integration/webhook-integration.controller.d.ts +20 -0
  168. package/dist/webhook-integration/webhook-integration.controller.d.ts.map +1 -1
  169. package/dist/webhook-integration/webhook-integration.controller.js +48 -0
  170. package/dist/webhook-integration/webhook-integration.controller.js.map +1 -1
  171. package/dist/webhook-integration/webhook-integration.module.d.ts.map +1 -1
  172. package/dist/webhook-integration/webhook-integration.module.js +5 -0
  173. package/dist/webhook-integration/webhook-integration.module.js.map +1 -1
  174. package/dist/webhook-integration/webhook-integration.service.d.ts +27 -2
  175. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  176. package/dist/webhook-integration/webhook-integration.service.js +377 -50
  177. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  178. package/hedhog/data/file_provider.yaml +9 -1
  179. package/hedhog/data/integration_provider.yaml +148 -0
  180. package/hedhog/data/integration_type.yaml +29 -0
  181. package/hedhog/data/menu.yaml +6 -21
  182. package/hedhog/data/role.yaml +8 -0
  183. package/hedhog/data/route.yaml +73 -373
  184. package/hedhog/data/setting_group.yaml +209 -365
  185. package/hedhog/data/setting_subgroup.yaml +21 -13
  186. package/hedhog/frontend/app/account/components/connected-accounts.tsx.ejs +25 -20
  187. package/hedhog/frontend/app/account/components/tokens.tsx.ejs +421 -0
  188. package/hedhog/frontend/app/account/layout.tsx.ejs +6 -3
  189. package/hedhog/frontend/app/account/mcp-tokens/page.tsx.ejs +2 -2
  190. package/hedhog/frontend/app/account/tokens/page.tsx.ejs +5 -0
  191. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +938 -225
  192. package/hedhog/frontend/app/configurations/layout.tsx.ejs +1 -1
  193. package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +3 -1
  194. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +1830 -0
  195. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +829 -128
  196. package/hedhog/frontend/app/mail/profiles/page.tsx.ejs +1 -820
  197. package/hedhog/frontend/app/setting-list/page.tsx.ejs +229 -395
  198. package/hedhog/frontend/app/users/permissions.tsx.ejs +79 -2
  199. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +7 -2
  200. package/hedhog/frontend/messages/en.json +239 -3
  201. package/hedhog/frontend/messages/pt.json +239 -3
  202. package/hedhog/table/file.yaml +1 -1
  203. package/hedhog/table/integration_profile.yaml +34 -0
  204. package/hedhog/table/integration_provider.yaml +23 -0
  205. package/hedhog/table/integration_type.yaml +19 -0
  206. package/hedhog/table/mcp_api_key.yaml +4 -0
  207. package/hedhog/table/webhook_action.yaml +141 -85
  208. package/package.json +4 -3
  209. package/src/ai/ai.service.ts +35 -153
  210. package/src/auth/guards/auth.guard.ts +32 -0
  211. package/src/core.module.ts +3 -3
  212. package/src/file/file.controller.ts +51 -42
  213. package/src/file/file.service.ts +67 -104
  214. package/src/file/provider/azure.provider.ts +14 -28
  215. package/src/file/provider/gcs.provider.ts +9 -9
  216. package/src/file/provider/local.provider.ts +10 -13
  217. package/src/file/provider/provider.enum.ts +1 -0
  218. package/src/file/provider/provider.factory.ts +21 -6
  219. package/src/file/provider/s3.provider.ts +4 -20
  220. package/src/file/provider/spaces.provider.ts +246 -0
  221. package/src/index.ts +6 -3
  222. package/src/integration-profile/dto/create.dto.ts +44 -0
  223. package/src/integration-profile/dto/export.dto.ts +15 -0
  224. package/src/integration-profile/dto/import-confirm.dto.ts +61 -0
  225. package/src/integration-profile/integration-profile.controller.ts +131 -0
  226. package/src/integration-profile/integration-profile.module.ts +16 -0
  227. package/src/integration-profile/integration-profile.service.ts +793 -0
  228. package/src/integration-profile/integration-profile.utils.ts +173 -0
  229. package/src/mail/mail.module.ts +41 -22
  230. package/src/mail/mail.service.ts +40 -64
  231. package/src/mcp/guards/mcp-auth.guard.ts +1 -1
  232. package/src/mcp/mcp-api-key.controller.ts +2 -2
  233. package/src/mcp/mcp-api-key.service.ts +6 -2
  234. package/src/mcp/mcp.module.ts +3 -5
  235. package/src/mcp-chat/mcp-chat.service.ts +23 -20
  236. package/src/oauth/interfaces/OAuthProvider.ts +1 -1
  237. package/src/oauth/oauth.controller.ts +30 -2
  238. package/src/oauth/oauth.service.ts +194 -35
  239. package/src/oauth/providers/abstract.provider.ts +1 -1
  240. package/src/oauth/providers/facebook.provider.ts +36 -20
  241. package/src/oauth/providers/github.provider.ts +46 -23
  242. package/src/oauth/providers/google.provider.ts +36 -20
  243. package/src/oauth/providers/microsoft-entra-id.provider.ts +42 -46
  244. package/src/oauth/providers/microsoft.provider.ts +36 -21
  245. package/src/profile/profile.controller.ts +2 -2
  246. package/src/security/security.service.ts +34 -1
  247. package/src/setting/setting.service.ts +307 -9
  248. package/src/user/user.controller.ts +4 -1
  249. package/src/user/user.service.ts +20 -2
  250. package/src/webhook-integration/dto/webhook-action.dto.ts +85 -4
  251. package/src/webhook-integration/event-webhook.controller.ts +55 -50
  252. package/src/webhook-integration/event-webhook.service.ts +422 -384
  253. package/src/webhook-integration/webhook-command.registry.ts +42 -0
  254. package/src/webhook-integration/webhook-integration.controller.ts +25 -0
  255. package/src/webhook-integration/webhook-integration.module.ts +50 -45
  256. package/src/webhook-integration/webhook-integration.service.ts +444 -53
  257. package/dist/mail-profile/dto/create.dto.d.ts +0 -23
  258. package/dist/mail-profile/dto/create.dto.d.ts.map +0 -1
  259. package/dist/mail-profile/dto/create.dto.js +0 -139
  260. package/dist/mail-profile/dto/create.dto.js.map +0 -1
  261. package/dist/mail-profile/dto/update.dto.d.ts.map +0 -1
  262. package/dist/mail-profile/dto/update.dto.js.map +0 -1
  263. package/dist/mail-profile/mail-profile.controller.d.ts +0 -94
  264. package/dist/mail-profile/mail-profile.controller.d.ts.map +0 -1
  265. package/dist/mail-profile/mail-profile.controller.js +0 -95
  266. package/dist/mail-profile/mail-profile.controller.js.map +0 -1
  267. package/dist/mail-profile/mail-profile.module.d.ts +0 -3
  268. package/dist/mail-profile/mail-profile.module.d.ts.map +0 -1
  269. package/dist/mail-profile/mail-profile.module.js.map +0 -1
  270. package/dist/mail-profile/mail-profile.service.d.ts +0 -109
  271. package/dist/mail-profile/mail-profile.service.d.ts.map +0 -1
  272. package/dist/mail-profile/mail-profile.service.js +0 -278
  273. package/dist/mail-profile/mail-profile.service.js.map +0 -1
  274. package/dist/mcp/tools/core-mail-profile.mcp-tools.d.ts +0 -32
  275. package/dist/mcp/tools/core-mail-profile.mcp-tools.d.ts.map +0 -1
  276. package/dist/mcp/tools/core-mail-profile.mcp-tools.js +0 -178
  277. package/dist/mcp/tools/core-mail-profile.mcp-tools.js.map +0 -1
  278. package/hedhog/data/mail_profile.yaml +0 -18
  279. package/hedhog/table/mail_profile.yaml +0 -75
  280. package/src/mail-profile/dto/create.dto.ts +0 -145
  281. package/src/mail-profile/mail-profile.controller.ts +0 -56
  282. package/src/mail-profile/mail-profile.module.ts +0 -18
  283. package/src/mail-profile/mail-profile.service.ts +0 -308
  284. package/src/mcp/tools/core-mail-profile.mcp-tools.ts +0 -128
  285. /package/dist/{mail-profile → integration-profile}/dto/update.dto.d.ts +0 -0
  286. /package/dist/{mail-profile → integration-profile}/dto/update.dto.js +0 -0
  287. /package/src/{mail-profile → integration-profile}/dto/update.dto.ts +0 -0
@@ -0,0 +1,609 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.IntegrationProfileService = void 0;
49
+ const api_pagination_1 = require("@hed-hog/api-pagination");
50
+ const api_prisma_1 = require("@hed-hog/api-prisma");
51
+ const common_1 = require("@nestjs/common");
52
+ const pako = __importStar(require("pako"));
53
+ const integration_profile_utils_1 = require("./integration-profile.utils");
54
+ let IntegrationProfileService = class IntegrationProfileService {
55
+ constructor(prismaService, paginationService) {
56
+ this.prismaService = prismaService;
57
+ this.paginationService = paginationService;
58
+ }
59
+ async listTypes() {
60
+ return this.prismaService.integration_type.findMany({
61
+ orderBy: { id: 'asc' },
62
+ select: {
63
+ id: true,
64
+ slug: true,
65
+ icon: true,
66
+ integration_type_locale: {
67
+ select: { name: true, locale: { select: { code: true } } },
68
+ },
69
+ },
70
+ });
71
+ }
72
+ async listProviders(typeId, typeSlug) {
73
+ const normalizedTypeSlug = String(typeSlug !== null && typeSlug !== void 0 ? typeSlug : '').trim();
74
+ return this.prismaService.integration_provider.findMany({
75
+ where: Object.assign(Object.assign({}, (typeId ? { type_id: typeId } : {})), (normalizedTypeSlug
76
+ ? { integration_type: { slug: normalizedTypeSlug } }
77
+ : {})),
78
+ orderBy: { id: 'asc' },
79
+ select: {
80
+ id: true,
81
+ slug: true,
82
+ type_id: true,
83
+ integration_provider_locale: {
84
+ select: { name: true, locale: { select: { code: true } } },
85
+ },
86
+ },
87
+ });
88
+ }
89
+ async list(paginationParams, typeId, typeSlug, providerSlug) {
90
+ const fields = ['slug', 'name'];
91
+ const OR = this.prismaService.createInsensitiveSearch(fields, paginationParams);
92
+ const normalizedTypeSlug = String(typeSlug !== null && typeSlug !== void 0 ? typeSlug : '').trim();
93
+ const normalizedProviderSlug = String(providerSlug !== null && providerSlug !== void 0 ? providerSlug : '').trim();
94
+ const result = await this.paginationService.paginate(this.prismaService.integration_profile, paginationParams, {
95
+ where: Object.assign(Object.assign(Object.assign(Object.assign({}, (OR.length > 0 ? { OR } : {})), (typeId ? { type_id: typeId } : {})), (normalizedTypeSlug
96
+ ? { integration_type: { slug: normalizedTypeSlug } }
97
+ : {})), (normalizedProviderSlug
98
+ ? { integration_provider: { slug: normalizedProviderSlug } }
99
+ : {})),
100
+ select: {
101
+ id: true,
102
+ slug: true,
103
+ name: true,
104
+ config: true,
105
+ type_id: true,
106
+ provider_id: true,
107
+ is_active: true,
108
+ created_at: true,
109
+ updated_at: true,
110
+ integration_type: {
111
+ select: {
112
+ slug: true,
113
+ icon: true,
114
+ integration_type_locale: {
115
+ select: { name: true, locale: { select: { code: true } } },
116
+ },
117
+ },
118
+ },
119
+ integration_provider: {
120
+ select: {
121
+ slug: true,
122
+ integration_provider_locale: {
123
+ select: { name: true, locale: { select: { code: true } } },
124
+ },
125
+ },
126
+ },
127
+ },
128
+ orderBy: [{ updated_at: 'desc' }, { id: 'desc' }],
129
+ });
130
+ const items = Array.isArray(result.data) ? result.data : [];
131
+ if (items.length > 0) {
132
+ const ids = items.map((p) => p.id);
133
+ const counts = await this.prismaService.$queryRaw `
134
+ SELECT
135
+ ip.id,
136
+ (
137
+ COALESCE((SELECT COUNT(*)::int FROM campaign WHERE integration_profile_id = ip.id), 0) +
138
+ COALESCE((SELECT COUNT(*)::int FROM webhook_action WHERE integration_profile_id = ip.id), 0)
139
+ ) AS uses_count
140
+ FROM integration_profile ip
141
+ WHERE ip.id = ANY(${ids}::int[])
142
+ `;
143
+ const countMap = new Map(counts.map((r) => [r.id, Number(r.uses_count)]));
144
+ result.data = items.map((p) => {
145
+ var _a;
146
+ return (Object.assign(Object.assign({}, p), { uses_count: (_a = countMap.get(p.id)) !== null && _a !== void 0 ? _a : 0 }));
147
+ });
148
+ }
149
+ return result;
150
+ }
151
+ async get(id) {
152
+ const profile = await this.prismaService.integration_profile.findUnique({
153
+ where: { id },
154
+ include: {
155
+ integration_type: {
156
+ select: {
157
+ slug: true,
158
+ icon: true,
159
+ integration_type_locale: {
160
+ select: { name: true, locale: { select: { code: true } } },
161
+ },
162
+ },
163
+ },
164
+ integration_provider: {
165
+ select: {
166
+ slug: true,
167
+ integration_provider_locale: {
168
+ select: { name: true, locale: { select: { code: true } } },
169
+ },
170
+ },
171
+ },
172
+ },
173
+ });
174
+ if (!profile) {
175
+ throw new common_1.NotFoundException(`Integration profile with id ${id} not found.`);
176
+ }
177
+ return profile;
178
+ }
179
+ async create(data) {
180
+ var _a, _b;
181
+ await this.ensureSlugIsAvailable(data.slug);
182
+ await this.validateTypeAndProvider(data.type_id, data.provider_id);
183
+ return this.prismaService.integration_profile.create({
184
+ data: {
185
+ slug: data.slug.trim(),
186
+ name: data.name.trim(),
187
+ type_id: data.type_id,
188
+ provider_id: data.provider_id,
189
+ config: (_a = data.config) !== null && _a !== void 0 ? _a : null,
190
+ is_active: (_b = data.is_active) !== null && _b !== void 0 ? _b : true,
191
+ },
192
+ });
193
+ }
194
+ async update({ id, data }) {
195
+ var _a, _b, _c, _d, _e, _f, _g, _h;
196
+ const existing = await this.prismaService.integration_profile.findUnique({
197
+ where: { id },
198
+ });
199
+ if (!existing) {
200
+ throw new common_1.NotFoundException(`Integration profile with id ${id} not found.`);
201
+ }
202
+ if (data.slug && data.slug !== existing.slug) {
203
+ await this.ensureSlugIsAvailable(data.slug);
204
+ }
205
+ const type_id = (_a = data.type_id) !== null && _a !== void 0 ? _a : existing.type_id;
206
+ const provider_id = (_b = data.provider_id) !== null && _b !== void 0 ? _b : existing.provider_id;
207
+ await this.validateTypeAndProvider(type_id, provider_id);
208
+ return this.prismaService.integration_profile.update({
209
+ where: { id },
210
+ data: {
211
+ slug: (_d = (_c = data.slug) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : existing.slug,
212
+ name: (_f = (_e = data.name) === null || _e === void 0 ? void 0 : _e.trim()) !== null && _f !== void 0 ? _f : existing.name,
213
+ type_id,
214
+ provider_id,
215
+ config: data.config !== undefined
216
+ ? ((_g = data.config) !== null && _g !== void 0 ? _g : null)
217
+ : existing.config,
218
+ is_active: (_h = data.is_active) !== null && _h !== void 0 ? _h : existing.is_active,
219
+ },
220
+ });
221
+ }
222
+ async delete({ ids }) {
223
+ if (!(ids === null || ids === void 0 ? void 0 : ids.length)) {
224
+ throw new common_1.BadRequestException('You must select at least one item to delete.');
225
+ }
226
+ return this.prismaService.integration_profile.deleteMany({
227
+ where: { id: { in: ids } },
228
+ });
229
+ }
230
+ async test(data) {
231
+ var _a, _b;
232
+ await this.validateTypeAndProvider(data.type_id, data.provider_id);
233
+ const provider = await this.prismaService.integration_provider.findUnique({
234
+ where: { id: data.provider_id },
235
+ select: {
236
+ slug: true,
237
+ integration_type: {
238
+ select: {
239
+ slug: true,
240
+ },
241
+ },
242
+ },
243
+ });
244
+ if (!provider) {
245
+ throw new common_1.BadRequestException(`Provider with id ${data.provider_id} not found.`);
246
+ }
247
+ if (provider.integration_type.slug !== 'email') {
248
+ throw new common_1.BadRequestException('Integration profile test is only available for email type.');
249
+ }
250
+ (0, integration_profile_utils_1.buildMailConfigFromIntegration)(provider.slug, data.config);
251
+ const destination = String((_b = (_a = data.config) === null || _a === void 0 ? void 0 : _a.from_email) !== null && _b !== void 0 ? _b : '').trim();
252
+ if (!destination) {
253
+ throw new common_1.BadRequestException('Sender email is required.');
254
+ }
255
+ return {
256
+ success: true,
257
+ destination,
258
+ };
259
+ }
260
+ async exportProfiles({ ids, includeSecrets = false, }) {
261
+ const rows = await this.prismaService.integration_profile.findMany({
262
+ where: (ids === null || ids === void 0 ? void 0 : ids.length) ? { id: { in: ids } } : undefined,
263
+ select: {
264
+ slug: true,
265
+ name: true,
266
+ config: true,
267
+ is_active: true,
268
+ integration_type: {
269
+ select: { slug: true },
270
+ },
271
+ integration_provider: {
272
+ select: { slug: true },
273
+ },
274
+ },
275
+ orderBy: [{ slug: 'asc' }],
276
+ });
277
+ const payload = rows.map((row) => ({
278
+ slug: row.slug,
279
+ name: row.name,
280
+ type_slug: row.integration_type.slug,
281
+ provider_slug: row.integration_provider.slug,
282
+ config: this.sanitizeConfigForExport(row.integration_provider.slug, row.config, includeSecrets),
283
+ is_active: row.is_active,
284
+ }));
285
+ const envelope = {
286
+ type: 'integration-profile',
287
+ version: 1,
288
+ generated_at: new Date().toISOString(),
289
+ include_secrets: includeSecrets,
290
+ data: payload,
291
+ };
292
+ const compressed = pako.gzip(JSON.stringify(envelope));
293
+ return Buffer.from(compressed);
294
+ }
295
+ async validateImportFile(file) {
296
+ const envelope = this.parseImportEnvelope(file);
297
+ const typeMap = new Map((await this.prismaService.integration_type.findMany({
298
+ select: { id: true, slug: true },
299
+ })).map((row) => [row.slug.toLowerCase(), row]));
300
+ const providerMap = new Map((await this.prismaService.integration_provider.findMany({
301
+ select: { id: true, slug: true, type_id: true },
302
+ })).map((row) => [row.slug.toLowerCase(), row]));
303
+ const firstSlugIndex = new Map();
304
+ const validItems = [];
305
+ const invalidItems = [];
306
+ envelope.data.forEach((item, index) => {
307
+ var _a, _b, _c, _d, _e, _f;
308
+ const errors = [];
309
+ const slug = String((_a = item === null || item === void 0 ? void 0 : item.slug) !== null && _a !== void 0 ? _a : '').trim();
310
+ const name = String((_b = item === null || item === void 0 ? void 0 : item.name) !== null && _b !== void 0 ? _b : '').trim();
311
+ const typeSlug = String((_c = item === null || item === void 0 ? void 0 : item.type_slug) !== null && _c !== void 0 ? _c : '')
312
+ .trim()
313
+ .toLowerCase();
314
+ const providerSlug = String((_d = item === null || item === void 0 ? void 0 : item.provider_slug) !== null && _d !== void 0 ? _d : '')
315
+ .trim()
316
+ .toLowerCase();
317
+ if (!slug)
318
+ errors.push('Missing slug.');
319
+ if (!name)
320
+ errors.push(`Missing name for slug "${slug || index}".`);
321
+ if (!typeSlug)
322
+ errors.push(`Missing type_slug for slug "${slug || index}".`);
323
+ if (!providerSlug) {
324
+ errors.push(`Missing provider_slug for slug "${slug || index}".`);
325
+ }
326
+ if (slug) {
327
+ if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)) {
328
+ errors.push(`Invalid slug format "${slug}".`);
329
+ }
330
+ if (firstSlugIndex.has(slug)) {
331
+ const originalIndex = firstSlugIndex.get(slug);
332
+ errors.push(`Duplicate slug "${slug}" in file (already used at index ${originalIndex}).`);
333
+ }
334
+ else {
335
+ firstSlugIndex.set(slug, index);
336
+ }
337
+ }
338
+ const type = typeMap.get(typeSlug);
339
+ if (!type && typeSlug) {
340
+ errors.push(`Unknown type_slug "${typeSlug}".`);
341
+ }
342
+ const provider = providerMap.get(providerSlug);
343
+ if (!provider && providerSlug) {
344
+ errors.push(`Unknown provider_slug "${providerSlug}".`);
345
+ }
346
+ if (type && provider && provider.type_id !== type.id) {
347
+ errors.push(`Provider "${providerSlug}" does not belong to type "${typeSlug}".`);
348
+ }
349
+ if ((item === null || item === void 0 ? void 0 : item.config) !== null &&
350
+ (item === null || item === void 0 ? void 0 : item.config) !== undefined &&
351
+ (typeof item.config !== 'object' || Array.isArray(item.config))) {
352
+ errors.push(`Invalid config for slug "${slug || index}".`);
353
+ }
354
+ if (errors.length > 0) {
355
+ invalidItems.push({ index, slug: slug || undefined, errors });
356
+ return;
357
+ }
358
+ validItems.push({
359
+ index,
360
+ slug,
361
+ name,
362
+ type_slug: typeSlug,
363
+ provider_slug: providerSlug,
364
+ config: (_e = item.config) !== null && _e !== void 0 ? _e : null,
365
+ is_active: (_f = item.is_active) !== null && _f !== void 0 ? _f : true,
366
+ });
367
+ });
368
+ const existingSlugs = new Set((await this.prismaService.integration_profile.findMany({
369
+ where: {
370
+ slug: {
371
+ in: validItems.map((item) => item.slug),
372
+ },
373
+ },
374
+ select: { slug: true },
375
+ })).map((row) => row.slug));
376
+ const profiles = validItems.map((item) => (Object.assign(Object.assign({}, item), { has_conflict: existingSlugs.has(item.slug) })));
377
+ const conflictSlugs = profiles
378
+ .filter((item) => item.has_conflict)
379
+ .map((item) => item.slug);
380
+ return {
381
+ format: {
382
+ type: envelope.type,
383
+ version: envelope.version,
384
+ generated_at: envelope.generated_at,
385
+ include_secrets: envelope.include_secrets,
386
+ },
387
+ total_profiles: envelope.data.length,
388
+ valid_profiles: profiles.length,
389
+ invalid_profiles: invalidItems.length,
390
+ conflict_profiles: conflictSlugs.length,
391
+ importable_profiles: profiles.length - conflictSlugs.length,
392
+ conflict_slugs: conflictSlugs,
393
+ profiles,
394
+ invalid_items: invalidItems,
395
+ };
396
+ }
397
+ async confirmImport({ profiles, conflictResolutions, }) {
398
+ var _a, _b, _c;
399
+ if (!(profiles === null || profiles === void 0 ? void 0 : profiles.length)) {
400
+ throw new common_1.BadRequestException('No profiles provided for import.');
401
+ }
402
+ const resolutionMap = new Map((conflictResolutions !== null && conflictResolutions !== void 0 ? conflictResolutions : []).map((resolution) => [
403
+ resolution.slug,
404
+ resolution.action,
405
+ ]));
406
+ const typeMap = new Map((await this.prismaService.integration_type.findMany({
407
+ select: { id: true, slug: true },
408
+ })).map((row) => [row.slug.toLowerCase(), row]));
409
+ const providerMap = new Map((await this.prismaService.integration_provider.findMany({
410
+ select: { id: true, slug: true, type_id: true },
411
+ })).map((row) => [row.slug.toLowerCase(), row]));
412
+ const duplicatedSlugs = new Set();
413
+ const seenSlugs = new Set();
414
+ profiles.forEach((item) => {
415
+ const slug = item.slug.trim();
416
+ if (seenSlugs.has(slug)) {
417
+ duplicatedSlugs.add(slug);
418
+ }
419
+ seenSlugs.add(slug);
420
+ });
421
+ if (duplicatedSlugs.size > 0) {
422
+ throw new common_1.BadRequestException(`File has duplicated slugs: ${Array.from(duplicatedSlugs).join(', ')}`);
423
+ }
424
+ const existingBySlug = new Map((await this.prismaService.integration_profile.findMany({
425
+ where: { slug: { in: profiles.map((profile) => profile.slug.trim()) } },
426
+ select: { id: true, slug: true },
427
+ })).map((row) => [row.slug, row]));
428
+ let created = 0;
429
+ let replaced = 0;
430
+ let ignored = 0;
431
+ let renamed = 0;
432
+ for (const item of profiles) {
433
+ const slug = item.slug.trim();
434
+ const name = item.name.trim();
435
+ const typeSlug = item.type_slug.trim().toLowerCase();
436
+ const providerSlug = item.provider_slug.trim().toLowerCase();
437
+ if (!slug || !name || !typeSlug || !providerSlug) {
438
+ throw new common_1.BadRequestException(`Invalid profile payload for slug "${slug || '<empty>'}".`);
439
+ }
440
+ const type = typeMap.get(typeSlug);
441
+ if (!type) {
442
+ throw new common_1.BadRequestException(`Unknown type_slug "${typeSlug}".`);
443
+ }
444
+ const provider = providerMap.get(providerSlug);
445
+ if (!provider) {
446
+ throw new common_1.BadRequestException(`Unknown provider_slug "${providerSlug}".`);
447
+ }
448
+ if (provider.type_id !== type.id) {
449
+ throw new common_1.BadRequestException(`Provider "${providerSlug}" does not belong to type "${typeSlug}".`);
450
+ }
451
+ const existing = existingBySlug.get(slug);
452
+ const data = {
453
+ slug,
454
+ name,
455
+ type_id: type.id,
456
+ provider_id: provider.id,
457
+ config: (_a = item.config) !== null && _a !== void 0 ? _a : null,
458
+ is_active: (_b = item.is_active) !== null && _b !== void 0 ? _b : true,
459
+ };
460
+ if (!existing) {
461
+ await this.prismaService.integration_profile.create({ data });
462
+ created += 1;
463
+ continue;
464
+ }
465
+ const action = (_c = resolutionMap.get(slug)) !== null && _c !== void 0 ? _c : 'ignore';
466
+ if (action === 'ignore') {
467
+ ignored += 1;
468
+ continue;
469
+ }
470
+ if (action === 'replace') {
471
+ await this.prismaService.integration_profile.update({
472
+ where: { id: existing.id },
473
+ data: {
474
+ name: data.name,
475
+ type_id: data.type_id,
476
+ provider_id: data.provider_id,
477
+ config: data.config,
478
+ is_active: data.is_active,
479
+ },
480
+ });
481
+ replaced += 1;
482
+ continue;
483
+ }
484
+ const newSlug = await this.generateUniqueSlug(slug);
485
+ await this.prismaService.integration_profile.create({
486
+ data: Object.assign(Object.assign({}, data), { slug: newSlug }),
487
+ });
488
+ renamed += 1;
489
+ }
490
+ return {
491
+ success: true,
492
+ total_received: profiles.length,
493
+ created,
494
+ replaced,
495
+ renamed,
496
+ ignored,
497
+ imported: created + replaced + renamed,
498
+ };
499
+ }
500
+ async ensureSlugIsAvailable(slug) {
501
+ const existing = await this.prismaService.integration_profile.findUnique({
502
+ where: { slug },
503
+ select: { id: true },
504
+ });
505
+ if (existing) {
506
+ throw new common_1.BadRequestException(`Integration profile with slug "${slug}" already exists.`);
507
+ }
508
+ }
509
+ async validateTypeAndProvider(type_id, provider_id) {
510
+ const provider = await this.prismaService.integration_provider.findUnique({
511
+ where: { id: provider_id },
512
+ select: { id: true, type_id: true },
513
+ });
514
+ if (!provider) {
515
+ throw new common_1.BadRequestException(`Provider with id ${provider_id} not found.`);
516
+ }
517
+ if (provider.type_id !== type_id) {
518
+ throw new common_1.BadRequestException(`Provider ${provider_id} does not belong to type ${type_id}.`);
519
+ }
520
+ }
521
+ parseImportEnvelope(file) {
522
+ var _a, _b;
523
+ let parsed;
524
+ try {
525
+ const decompressed = pako.ungzip(file.buffer, { to: 'string' });
526
+ parsed = JSON.parse(decompressed);
527
+ }
528
+ catch (_c) {
529
+ throw new common_1.BadRequestException('File is not a valid .hedhog archive or is corrupted.');
530
+ }
531
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
532
+ throw new common_1.BadRequestException('Invalid .hedhog payload format.');
533
+ }
534
+ const payload = parsed;
535
+ if (payload.type !== 'integration-profile') {
536
+ throw new common_1.BadRequestException(`Invalid .hedhog type "${String((_a = payload.type) !== null && _a !== void 0 ? _a : '')}".`);
537
+ }
538
+ if (payload.version !== 1) {
539
+ throw new common_1.BadRequestException(`Unsupported .hedhog version "${String((_b = payload.version) !== null && _b !== void 0 ? _b : '')}".`);
540
+ }
541
+ if (!Array.isArray(payload.data)) {
542
+ throw new common_1.BadRequestException('Invalid .hedhog data: expected an array.');
543
+ }
544
+ return {
545
+ type: 'integration-profile',
546
+ version: 1,
547
+ generated_at: typeof payload.generated_at === 'string'
548
+ ? payload.generated_at
549
+ : new Date().toISOString(),
550
+ include_secrets: payload.include_secrets === true,
551
+ data: payload.data,
552
+ };
553
+ }
554
+ sanitizeConfigForExport(providerSlug, config, includeSecrets) {
555
+ if (!config || includeSecrets)
556
+ return config;
557
+ const hiddenKeys = this.getSensitiveConfigKeys(providerSlug);
558
+ if (hiddenKeys.length === 0)
559
+ return config;
560
+ const sanitized = Object.assign({}, config);
561
+ hiddenKeys.forEach((key) => {
562
+ delete sanitized[key];
563
+ });
564
+ return sanitized;
565
+ }
566
+ getSensitiveConfigKeys(providerSlug) {
567
+ var _a;
568
+ const map = {
569
+ smtp: ['password'],
570
+ gmail: ['client_secret', 'refresh_token'],
571
+ ses: ['secret_access_key'],
572
+ 'evolution-api': ['token'],
573
+ 'whatsapp-official': ['access_token'],
574
+ s3: ['secret_access_key'],
575
+ gcs: ['key_file_json'],
576
+ 'azure-blob': ['key'],
577
+ 's3-compatible': ['secret_access_key'],
578
+ openai: ['api_key'],
579
+ gemini: ['api_key'],
580
+ claude: ['api_key'],
581
+ 'google-oauth': ['client_secret'],
582
+ 'github-oauth': ['client_secret'],
583
+ 'microsoft-oauth': ['client_secret'],
584
+ };
585
+ return (_a = map[providerSlug.toLowerCase()]) !== null && _a !== void 0 ? _a : [];
586
+ }
587
+ async generateUniqueSlug(baseSlug) {
588
+ let candidate = `${baseSlug}-copy`;
589
+ let suffix = 1;
590
+ // Gera slug único determinístico para imports com conflito e opção de renomear.
591
+ while (await this.prismaService.integration_profile.findUnique({
592
+ where: { slug: candidate },
593
+ select: { id: true },
594
+ })) {
595
+ candidate = `${baseSlug}-copy-${suffix}`;
596
+ suffix += 1;
597
+ }
598
+ return candidate;
599
+ }
600
+ };
601
+ exports.IntegrationProfileService = IntegrationProfileService;
602
+ exports.IntegrationProfileService = IntegrationProfileService = __decorate([
603
+ (0, common_1.Injectable)(),
604
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
605
+ __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_pagination_1.PaginationService))),
606
+ __metadata("design:paramtypes", [api_prisma_1.PrismaService,
607
+ api_pagination_1.PaginationService])
608
+ ], IntegrationProfileService);
609
+ //# sourceMappingURL=integration-profile.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-profile.service.js","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.service.ts"],"names":[],"mappings":"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"}