@hed-hog/core 0.0.354 → 0.0.356

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