@hed-hog/core 0.0.325 → 0.0.327

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 (100) hide show
  1. package/dist/core.module.d.ts.map +1 -1
  2. package/dist/core.module.js +3 -0
  3. package/dist/core.module.js.map +1 -1
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/integration/services/outbox.processor.d.ts.map +1 -1
  9. package/dist/integration/services/outbox.processor.js +1 -0
  10. package/dist/integration/services/outbox.processor.js.map +1 -1
  11. package/dist/integration/types/event.types.d.ts +1 -0
  12. package/dist/integration/types/event.types.d.ts.map +1 -1
  13. package/dist/mail/mail.controller.d.ts +2 -0
  14. package/dist/mail/mail.controller.d.ts.map +1 -1
  15. package/dist/mail/mail.module.d.ts.map +1 -1
  16. package/dist/mail/mail.module.js +33 -53
  17. package/dist/mail/mail.module.js.map +1 -1
  18. package/dist/mail/mail.service.d.ts +5 -1
  19. package/dist/mail/mail.service.d.ts.map +1 -1
  20. package/dist/mail/mail.service.js +64 -84
  21. package/dist/mail/mail.service.js.map +1 -1
  22. package/dist/role/role.service.d.ts +3 -1
  23. package/dist/role/role.service.d.ts.map +1 -1
  24. package/dist/role/role.service.js +33 -5
  25. package/dist/role/role.service.js.map +1 -1
  26. package/dist/setting/setting.service.d.ts.map +1 -1
  27. package/dist/setting/setting.service.js +1 -0
  28. package/dist/setting/setting.service.js.map +1 -1
  29. package/dist/user/user.service.d.ts +3 -1
  30. package/dist/user/user.service.d.ts.map +1 -1
  31. package/dist/user/user.service.js +31 -4
  32. package/dist/user/user.service.js.map +1 -1
  33. package/dist/webhook-integration/event-webhook.controller.d.ts +29 -0
  34. package/dist/webhook-integration/event-webhook.controller.d.ts.map +1 -0
  35. package/dist/webhook-integration/event-webhook.controller.js +93 -0
  36. package/dist/webhook-integration/event-webhook.controller.js.map +1 -0
  37. package/dist/webhook-integration/event-webhook.service.d.ts +54 -0
  38. package/dist/webhook-integration/event-webhook.service.d.ts.map +1 -0
  39. package/dist/webhook-integration/event-webhook.service.js +334 -0
  40. package/dist/webhook-integration/event-webhook.service.js.map +1 -0
  41. package/dist/webhook-integration/integration-event-catalog.controller.d.ts +21 -0
  42. package/dist/webhook-integration/integration-event-catalog.controller.d.ts.map +1 -0
  43. package/dist/webhook-integration/integration-event-catalog.controller.js +91 -0
  44. package/dist/webhook-integration/integration-event-catalog.controller.js.map +1 -0
  45. package/dist/webhook-integration/integration-event-catalog.service.d.ts +26 -0
  46. package/dist/webhook-integration/integration-event-catalog.service.d.ts.map +1 -0
  47. package/dist/webhook-integration/integration-event-catalog.service.js +112 -0
  48. package/dist/webhook-integration/integration-event-catalog.service.js.map +1 -0
  49. package/dist/webhook-integration/webhook-integration.controller.d.ts +44 -0
  50. package/dist/webhook-integration/webhook-integration.controller.d.ts.map +1 -0
  51. package/dist/webhook-integration/webhook-integration.controller.js +181 -0
  52. package/dist/webhook-integration/webhook-integration.controller.js.map +1 -0
  53. package/dist/webhook-integration/webhook-integration.module.d.ts +3 -0
  54. package/dist/webhook-integration/webhook-integration.module.d.ts.map +1 -0
  55. package/dist/webhook-integration/webhook-integration.module.js +54 -0
  56. package/dist/webhook-integration/webhook-integration.module.js.map +1 -0
  57. package/dist/webhook-integration/webhook-integration.service.d.ts +73 -0
  58. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -0
  59. package/dist/webhook-integration/webhook-integration.service.js +569 -0
  60. package/dist/webhook-integration/webhook-integration.service.js.map +1 -0
  61. package/dist/webhook-integration/webhook-utils.d.ts +7 -0
  62. package/dist/webhook-integration/webhook-utils.d.ts.map +1 -0
  63. package/dist/webhook-integration/webhook-utils.js +104 -0
  64. package/dist/webhook-integration/webhook-utils.js.map +1 -0
  65. package/hedhog/data/integration_event_catalog.yaml +118 -0
  66. package/hedhog/data/mail_profile.yaml +18 -0
  67. package/hedhog/data/menu.yaml +26 -12
  68. package/hedhog/data/route.yaml +152 -8
  69. package/hedhog/data/setting_group.yaml +7 -156
  70. package/hedhog/data/setting_subgroup.yaml +0 -32
  71. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +205 -0
  72. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +1835 -0
  73. package/hedhog/frontend/messages/en.json +2 -1
  74. package/hedhog/frontend/messages/pt.json +2 -1
  75. package/hedhog/table/event_webhook.yaml +55 -0
  76. package/hedhog/table/event_webhook_delivery_log.yaml +66 -0
  77. package/hedhog/table/event_webhook_event.yaml +26 -0
  78. package/hedhog/table/integration_event_catalog.yaml +41 -0
  79. package/hedhog/table/setting.yaml +1 -0
  80. package/hedhog/table/webhook_action.yaml +85 -0
  81. package/hedhog/table/webhook_call_log.yaml +46 -0
  82. package/hedhog/table/webhook_integration.yaml +43 -0
  83. package/package.json +3 -3
  84. package/src/core.module.ts +10 -7
  85. package/src/index.ts +10 -5
  86. package/src/integration/services/outbox.processor.ts +5 -4
  87. package/src/integration/types/event.types.ts +4 -3
  88. package/src/mail/mail.module.ts +36 -59
  89. package/src/mail/mail.service.ts +84 -89
  90. package/src/role/role.service.ts +41 -8
  91. package/src/setting/setting.service.ts +7 -6
  92. package/src/user/user.service.ts +34 -3
  93. package/src/webhook-integration/event-webhook.controller.ts +50 -0
  94. package/src/webhook-integration/event-webhook.service.ts +384 -0
  95. package/src/webhook-integration/integration-event-catalog.controller.ts +50 -0
  96. package/src/webhook-integration/integration-event-catalog.service.ts +117 -0
  97. package/src/webhook-integration/webhook-integration.controller.ts +103 -0
  98. package/src/webhook-integration/webhook-integration.module.ts +45 -0
  99. package/src/webhook-integration/webhook-integration.service.ts +735 -0
  100. package/src/webhook-integration/webhook-utils.ts +79 -0
@@ -0,0 +1,569 @@
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.WebhookIntegrationService = void 0;
13
+ const api_mail_1 = require("@hed-hog/api-mail");
14
+ const api_pagination_1 = require("@hed-hog/api-pagination");
15
+ const api_prisma_1 = require("@hed-hog/api-prisma");
16
+ const axios_1 = require("@nestjs/axios");
17
+ const common_1 = require("@nestjs/common");
18
+ const rxjs_1 = require("rxjs");
19
+ const mail_service_1 = require("../mail/mail.service");
20
+ const setting_service_1 = require("../setting/setting.service");
21
+ const webhook_utils_1 = require("./webhook-utils");
22
+ let WebhookIntegrationService = class WebhookIntegrationService {
23
+ constructor(prisma, pagination, http, mailMainService, coreMailService, settingService) {
24
+ this.prisma = prisma;
25
+ this.pagination = pagination;
26
+ this.http = http;
27
+ this.mailMainService = mailMainService;
28
+ this.coreMailService = coreMailService;
29
+ this.settingService = settingService;
30
+ }
31
+ get integrations() {
32
+ return this.prisma.webhook_integration;
33
+ }
34
+ get actions() {
35
+ return this.prisma.webhook_action;
36
+ }
37
+ get logs() {
38
+ return this.prisma.webhook_call_log;
39
+ }
40
+ async list(paginationParams) {
41
+ const fields = ['slug', 'name', 'description', 'public_uuid', 'status'];
42
+ const OR = this.prisma.createInsensitiveSearch(fields, paginationParams);
43
+ const result = await this.pagination.paginate(this.integrations, paginationParams, {
44
+ where: OR.length > 0 ? { OR } : {},
45
+ include: {
46
+ webhook_action: {
47
+ orderBy: [{ order: 'asc' }, { id: 'asc' }],
48
+ },
49
+ },
50
+ orderBy: [{ updated_at: 'desc' }, { id: 'desc' }],
51
+ });
52
+ return Object.assign(Object.assign({}, result), { data: await this.withPublicUrls(result.data || []) });
53
+ }
54
+ async get(id) {
55
+ const record = await this.integrations.findUnique({
56
+ where: { id },
57
+ include: {
58
+ webhook_action: {
59
+ orderBy: [{ order: 'asc' }, { id: 'asc' }],
60
+ },
61
+ },
62
+ });
63
+ if (!record) {
64
+ throw new common_1.NotFoundException(`Webhook integration with id ${id} not found.`);
65
+ }
66
+ return this.withPublicUrl(record);
67
+ }
68
+ async create(data) {
69
+ await this.ensureSlugAvailable(data.slug);
70
+ let plainToken = null;
71
+ if (data.require_token) {
72
+ plainToken = (0, webhook_utils_1.createPlainToken)();
73
+ }
74
+ const record = await this.integrations.create({
75
+ data: Object.assign(Object.assign({}, this.normalizeIntegration(data)), { public_uuid: (0, webhook_utils_1.createPublicUuid)(), token_hash: plainToken ? (0, webhook_utils_1.hashToken)(plainToken) : null }),
76
+ });
77
+ return Object.assign(Object.assign({}, (await this.withPublicUrl(record))), { plainToken });
78
+ }
79
+ async update(id, data) {
80
+ const existing = await this.get(id);
81
+ if (data.slug && data.slug !== existing.slug) {
82
+ await this.ensureSlugAvailable(data.slug);
83
+ }
84
+ let plainToken = null;
85
+ const updateData = this.normalizeIntegration(data, true);
86
+ if (data.require_token === false) {
87
+ updateData.token_hash = null;
88
+ }
89
+ else if (data.require_token === true && !existing.token_hash) {
90
+ plainToken = (0, webhook_utils_1.createPlainToken)();
91
+ updateData.token_hash = (0, webhook_utils_1.hashToken)(plainToken);
92
+ }
93
+ const record = await this.integrations.update({
94
+ where: { id },
95
+ data: updateData,
96
+ });
97
+ return Object.assign(Object.assign({}, (await this.withPublicUrl(record))), { plainToken });
98
+ }
99
+ async delete(data) {
100
+ var _a;
101
+ if (!((_a = data.ids) === null || _a === void 0 ? void 0 : _a.length)) {
102
+ throw new common_1.BadRequestException('You must select at least one item to delete.');
103
+ }
104
+ return this.integrations.deleteMany({
105
+ where: { id: { in: data.ids } },
106
+ });
107
+ }
108
+ async regenerateUuid(id) {
109
+ await this.get(id);
110
+ const record = await this.integrations.update({
111
+ where: { id },
112
+ data: { public_uuid: (0, webhook_utils_1.createPublicUuid)() },
113
+ });
114
+ return this.withPublicUrl(record);
115
+ }
116
+ async regenerateToken(id) {
117
+ await this.get(id);
118
+ const plainToken = (0, webhook_utils_1.createPlainToken)();
119
+ const record = await this.integrations.update({
120
+ where: { id },
121
+ data: {
122
+ require_token: true,
123
+ token_hash: (0, webhook_utils_1.hashToken)(plainToken),
124
+ },
125
+ });
126
+ return Object.assign(Object.assign({}, (await this.withPublicUrl(record))), { plainToken });
127
+ }
128
+ async getApplicationBaseUrl() {
129
+ const settings = await this.settingService.getSettingValues('url');
130
+ const value = settings === null || settings === void 0 ? void 0 : settings.url;
131
+ return typeof value === 'string' ? value.replace(/\/+$/, '') : '';
132
+ }
133
+ async withPublicUrl(record) {
134
+ const baseUrl = await this.getApplicationBaseUrl();
135
+ return Object.assign(Object.assign({}, record), { public_url: baseUrl && record.public_uuid
136
+ ? `${baseUrl}/webhook/${record.public_uuid}`
137
+ : null });
138
+ }
139
+ async withPublicUrls(records) {
140
+ const baseUrl = await this.getApplicationBaseUrl();
141
+ return records.map((record) => (Object.assign(Object.assign({}, record), { public_url: baseUrl && record.public_uuid
142
+ ? `${baseUrl}/webhook/${record.public_uuid}`
143
+ : null })));
144
+ }
145
+ async listActions(integrationId) {
146
+ await this.get(integrationId);
147
+ return this.actions.findMany({
148
+ where: { webhook_integration_id: integrationId },
149
+ orderBy: [{ order: 'asc' }, { id: 'asc' }],
150
+ });
151
+ }
152
+ async createAction(integrationId, data) {
153
+ await this.get(integrationId);
154
+ return this.actions.create({
155
+ data: Object.assign(Object.assign({}, this.normalizeAction(data)), { webhook_integration_id: integrationId }),
156
+ });
157
+ }
158
+ async updateAction(integrationId, actionId, data) {
159
+ await this.ensureAction(integrationId, actionId);
160
+ return this.actions.update({
161
+ where: { id: actionId },
162
+ data: this.normalizeAction(data, true),
163
+ });
164
+ }
165
+ async deleteActions(integrationId, data) {
166
+ var _a;
167
+ await this.get(integrationId);
168
+ if (!((_a = data.ids) === null || _a === void 0 ? void 0 : _a.length)) {
169
+ throw new common_1.BadRequestException('You must select at least one item to delete.');
170
+ }
171
+ return this.actions.deleteMany({
172
+ where: {
173
+ webhook_integration_id: integrationId,
174
+ id: { in: data.ids },
175
+ },
176
+ });
177
+ }
178
+ async listLogs(integrationId, paginationParams) {
179
+ await this.get(integrationId);
180
+ return this.pagination.paginate(this.logs, paginationParams, {
181
+ where: { webhook_integration_id: integrationId },
182
+ orderBy: [{ created_at: 'desc' }, { id: 'desc' }],
183
+ });
184
+ }
185
+ async executePublic(uuid, body, headers, req) {
186
+ const startedAt = Date.now();
187
+ const remoteIp = this.getRemoteIp(req);
188
+ let integration = null;
189
+ try {
190
+ integration = await this.integrations.findUnique({
191
+ where: { public_uuid: uuid },
192
+ include: {
193
+ webhook_action: {
194
+ where: { status: 'active' },
195
+ orderBy: [{ order: 'asc' }, { id: 'asc' }],
196
+ },
197
+ },
198
+ });
199
+ if (!integration || integration.status !== 'active') {
200
+ throw new common_1.NotFoundException('Webhook not found.');
201
+ }
202
+ this.validateToken(integration, headers);
203
+ this.validateIp(integration, remoteIp);
204
+ this.validateBodySchema(integration, body);
205
+ const actionResults = [];
206
+ for (const action of integration.webhook_action || []) {
207
+ actionResults.push(await this.executeAction(action, body));
208
+ }
209
+ const response = {
210
+ success: true,
211
+ actions: actionResults,
212
+ };
213
+ await this.createCallLog({
214
+ integration,
215
+ uuid,
216
+ status: 'success',
217
+ remoteIp,
218
+ durationMs: Date.now() - startedAt,
219
+ payload: body,
220
+ response,
221
+ });
222
+ return response;
223
+ }
224
+ catch (error) {
225
+ await this.createCallLog({
226
+ integration,
227
+ uuid,
228
+ status: 'failed',
229
+ remoteIp,
230
+ durationMs: Date.now() - startedAt,
231
+ payload: body,
232
+ error,
233
+ });
234
+ throw error;
235
+ }
236
+ }
237
+ async executeAction(action, body) {
238
+ if (action.type === 'email') {
239
+ await this.executeEmailAction(action, body);
240
+ return { id: action.id, type: action.type, success: true };
241
+ }
242
+ if (action.type === 'whatsapp_evolution') {
243
+ await this.executeWhatsappAction(action, body);
244
+ return { id: action.id, type: action.type, success: true };
245
+ }
246
+ throw new common_1.BadRequestException(`Unsupported action type: ${action.type}`);
247
+ }
248
+ async executeEmailAction(action, body) {
249
+ var _a;
250
+ if (!action.mail_profile_id || !action.mail_id || !action.email_to) {
251
+ throw new common_1.BadRequestException('Email action is missing required configuration.');
252
+ }
253
+ const profile = await this.prisma.mail_profile.findUnique({
254
+ where: { id: Number(action.mail_profile_id) },
255
+ });
256
+ const mail = await this.prisma.mail.findUnique({
257
+ where: { id: Number(action.mail_id) },
258
+ include: {
259
+ mail_locale: {
260
+ orderBy: [{ locale_id: 'asc' }],
261
+ },
262
+ },
263
+ });
264
+ if (!profile || !((_a = mail === null || mail === void 0 ? void 0 : mail.mail_locale) === null || _a === void 0 ? void 0 : _a.length)) {
265
+ throw new common_1.BadRequestException('Email action references an invalid profile or template.');
266
+ }
267
+ const template = mail.mail_locale[0];
268
+ const config = this.buildMailConfig(profile);
269
+ const sender = profile.from_name
270
+ ? `${profile.from_name} <${profile.from_email}>`
271
+ : profile.from_email;
272
+ const replyTo = profile.reply_to_email
273
+ ? profile.reply_to_name
274
+ ? `${profile.reply_to_name} <${profile.reply_to_email}>`
275
+ : profile.reply_to_email
276
+ : undefined;
277
+ try {
278
+ this.mailMainService.setConfig(config);
279
+ await this.mailMainService.send({
280
+ to: (0, webhook_utils_1.renderTemplate)(action.email_to, body),
281
+ cc: action.email_cc
282
+ ? (0, webhook_utils_1.renderTemplate)(action.email_cc, body)
283
+ : undefined,
284
+ bcc: action.email_bcc
285
+ ? (0, webhook_utils_1.renderTemplate)(action.email_bcc, body)
286
+ : undefined,
287
+ from: sender,
288
+ replyTo,
289
+ subject: (0, webhook_utils_1.renderTemplate)(template.subject, body),
290
+ body: (0, webhook_utils_1.renderTemplate)(template.body, body),
291
+ mail_id: mail.id,
292
+ });
293
+ }
294
+ finally {
295
+ await this.coreMailService.reloadConfig().catch(() => undefined);
296
+ }
297
+ }
298
+ async executeWhatsappAction(action, body) {
299
+ const required = [
300
+ action.whatsapp_target,
301
+ action.whatsapp_template,
302
+ action.whatsapp_instance,
303
+ action.whatsapp_base_url,
304
+ action.whatsapp_token,
305
+ ];
306
+ if (required.some((value) => !String(value || '').trim())) {
307
+ throw new common_1.BadRequestException('WhatsApp action is missing required configuration.');
308
+ }
309
+ const baseUrl = String(action.whatsapp_base_url).replace(/\/+$/, '');
310
+ const instance = encodeURIComponent(action.whatsapp_instance);
311
+ const url = `${baseUrl}/message/sendText/${instance}`;
312
+ const message = (0, webhook_utils_1.renderTemplate)(action.whatsapp_template, body);
313
+ const target = (0, webhook_utils_1.renderTemplate)(action.whatsapp_target, body);
314
+ await (0, rxjs_1.firstValueFrom)(this.http.post(url, {
315
+ number: target,
316
+ text: message,
317
+ }, {
318
+ headers: {
319
+ apikey: action.whatsapp_token,
320
+ Authorization: `Bearer ${action.whatsapp_token}`,
321
+ },
322
+ timeout: 15000,
323
+ }));
324
+ }
325
+ validateToken(integration, headers) {
326
+ var _a;
327
+ if (!integration.require_token) {
328
+ return;
329
+ }
330
+ const provided = headers['x-webhook-token'] ||
331
+ headers['X-Webhook-Token'] ||
332
+ ((_a = headers.authorization) === null || _a === void 0 ? void 0 : _a.replace(/^Bearer\s+/i, ''));
333
+ if (!provided || (0, webhook_utils_1.hashToken)(String(provided)) !== integration.token_hash) {
334
+ throw new common_1.BadRequestException('Invalid webhook token.');
335
+ }
336
+ }
337
+ validateIp(integration, remoteIp) {
338
+ const allowedIps = Array.isArray(integration.allowed_ips)
339
+ ? integration.allowed_ips
340
+ : [];
341
+ if (!allowedIps.length) {
342
+ return;
343
+ }
344
+ if (!remoteIp || !allowedIps.includes(remoteIp)) {
345
+ throw new common_1.BadRequestException('Remote IP is not allowed.');
346
+ }
347
+ }
348
+ validateBodySchema(integration, body) {
349
+ if (!integration.body_schema) {
350
+ return;
351
+ }
352
+ const errors = this.validateJsonSchema(integration.body_schema, body);
353
+ if (errors.length) {
354
+ throw new common_1.BadRequestException({
355
+ message: 'Webhook body does not match the configured schema.',
356
+ errors,
357
+ });
358
+ }
359
+ }
360
+ validateJsonSchema(schema, value, path = '$') {
361
+ if (!schema || typeof schema !== 'object') {
362
+ return [];
363
+ }
364
+ const errors = [];
365
+ const type = schema.type;
366
+ if (type && !this.matchesJsonSchemaType(type, value)) {
367
+ errors.push(`${path} must be ${type}`);
368
+ return errors;
369
+ }
370
+ if (type === 'object' || schema.properties || schema.required) {
371
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
372
+ errors.push(`${path} must be object`);
373
+ return errors;
374
+ }
375
+ for (const requiredKey of schema.required || []) {
376
+ if (value[requiredKey] === undefined || value[requiredKey] === null) {
377
+ errors.push(`${path}.${requiredKey} is required`);
378
+ }
379
+ }
380
+ for (const [key, childSchema] of Object.entries(schema.properties || {})) {
381
+ if (value[key] !== undefined) {
382
+ errors.push(...this.validateJsonSchema(childSchema, value[key], `${path}.${key}`));
383
+ }
384
+ }
385
+ }
386
+ if (type === 'array' && schema.items && Array.isArray(value)) {
387
+ value.forEach((item, index) => {
388
+ errors.push(...this.validateJsonSchema(schema.items, item, `${path}[${index}]`));
389
+ });
390
+ }
391
+ return errors;
392
+ }
393
+ matchesJsonSchemaType(type, value) {
394
+ const types = Array.isArray(type) ? type : [type];
395
+ return types.some((item) => {
396
+ switch (item) {
397
+ case 'object':
398
+ return (value !== null && typeof value === 'object' && !Array.isArray(value));
399
+ case 'array':
400
+ return Array.isArray(value);
401
+ case 'string':
402
+ return typeof value === 'string';
403
+ case 'number':
404
+ return typeof value === 'number';
405
+ case 'integer':
406
+ return Number.isInteger(value);
407
+ case 'boolean':
408
+ return typeof value === 'boolean';
409
+ case 'null':
410
+ return value === null;
411
+ default:
412
+ return true;
413
+ }
414
+ });
415
+ }
416
+ async createCallLog(input) {
417
+ var _a, _b;
418
+ if (!this.logs) {
419
+ return;
420
+ }
421
+ await this.logs.create({
422
+ data: {
423
+ webhook_integration_id: (_b = (_a = input.integration) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
424
+ public_uuid: input.uuid,
425
+ status: input.status,
426
+ remote_ip: input.remoteIp,
427
+ duration_ms: input.durationMs,
428
+ error_message: input.error
429
+ ? input.error instanceof Error
430
+ ? input.error.message
431
+ : String(input.error)
432
+ : null,
433
+ payload_summary: (0, webhook_utils_1.summarizePayload)(input.payload),
434
+ response_summary: (0, webhook_utils_1.summarizePayload)(input.response),
435
+ },
436
+ });
437
+ }
438
+ getRemoteIp(req) {
439
+ const forwardedFor = req.headers['x-forwarded-for'];
440
+ const forwardedIp = Array.isArray(forwardedFor)
441
+ ? forwardedFor[0]
442
+ : forwardedFor === null || forwardedFor === void 0 ? void 0 : forwardedFor.split(',')[0];
443
+ return (forwardedIp === null || forwardedIp === void 0 ? void 0 : forwardedIp.trim()) || req.ip || req.socket.remoteAddress || null;
444
+ }
445
+ async ensureAction(integrationId, actionId) {
446
+ const record = await this.actions.findFirst({
447
+ where: {
448
+ id: actionId,
449
+ webhook_integration_id: integrationId,
450
+ },
451
+ });
452
+ if (!record) {
453
+ throw new common_1.NotFoundException(`Webhook action with id ${actionId} not found.`);
454
+ }
455
+ return record;
456
+ }
457
+ async ensureSlugAvailable(slug) {
458
+ const existing = await this.integrations.findUnique({
459
+ where: { slug: String(slug || '').trim() },
460
+ select: { id: true },
461
+ });
462
+ if (existing) {
463
+ throw new common_1.BadRequestException(`Webhook integration "${slug}" already exists.`);
464
+ }
465
+ }
466
+ normalizeIntegration(data, partial = false) {
467
+ var _a, _b;
468
+ const normalized = {};
469
+ const assign = (key, value) => {
470
+ if (!partial || value !== undefined) {
471
+ normalized[key] = value;
472
+ }
473
+ };
474
+ assign('slug', String((_a = data.slug) !== null && _a !== void 0 ? _a : '').trim());
475
+ assign('name', String((_b = data.name) !== null && _b !== void 0 ? _b : '').trim());
476
+ assign('description', this.nullableString(data.description, partial));
477
+ assign('status', data.status === 'inactive' ? 'inactive' : 'active');
478
+ assign('require_token', Boolean(data.require_token));
479
+ assign('allowed_ips', (0, webhook_utils_1.normalizeJsonObject)(data.allowed_ips));
480
+ assign('body_schema', (0, webhook_utils_1.normalizeJsonObject)(data.body_schema));
481
+ return normalized;
482
+ }
483
+ normalizeAction(data, partial = false) {
484
+ var _a, _b;
485
+ const normalized = {};
486
+ const assign = (key, value) => {
487
+ if (!partial || value !== undefined) {
488
+ normalized[key] = value;
489
+ }
490
+ };
491
+ assign('type', data.type);
492
+ assign('name', String((_a = data.name) !== null && _a !== void 0 ? _a : '').trim());
493
+ assign('order', Number((_b = data.order) !== null && _b !== void 0 ? _b : 0));
494
+ assign('status', data.status === 'inactive' ? 'inactive' : 'active');
495
+ assign('mail_profile_id', this.nullableNumber(data.mail_profile_id));
496
+ assign('mail_id', this.nullableNumber(data.mail_id));
497
+ assign('email_to', this.nullableString(data.email_to, partial));
498
+ assign('email_cc', this.nullableString(data.email_cc, partial));
499
+ assign('email_bcc', this.nullableString(data.email_bcc, partial));
500
+ assign('whatsapp_target_type', data.whatsapp_target_type || null);
501
+ assign('whatsapp_target', this.nullableString(data.whatsapp_target, partial));
502
+ assign('whatsapp_template', this.nullableString(data.whatsapp_template, partial));
503
+ assign('whatsapp_instance', this.nullableString(data.whatsapp_instance, partial));
504
+ assign('whatsapp_base_url', this.nullableString(data.whatsapp_base_url, partial));
505
+ assign('whatsapp_token', this.nullableString(data.whatsapp_token, partial));
506
+ return normalized;
507
+ }
508
+ nullableString(value, partial = false) {
509
+ if (value === undefined) {
510
+ return partial ? undefined : null;
511
+ }
512
+ if (value === null) {
513
+ return null;
514
+ }
515
+ const normalized = String(value).trim();
516
+ return normalized || null;
517
+ }
518
+ nullableNumber(value) {
519
+ if (value === undefined || value === null || value === '') {
520
+ return null;
521
+ }
522
+ return Number(value);
523
+ }
524
+ buildMailConfig(profile) {
525
+ switch (profile.provider) {
526
+ case 'SMTP':
527
+ return {
528
+ global: true,
529
+ type: 'SMTP',
530
+ host: profile.smtp_host,
531
+ port: Number(profile.smtp_port || 587),
532
+ secure: Boolean(profile.smtp_secure),
533
+ username: profile.smtp_username || '',
534
+ password: profile.smtp_password || '',
535
+ };
536
+ case 'GMAIL':
537
+ return {
538
+ global: true,
539
+ type: 'GMAIL',
540
+ clientId: profile.gmail_client_id,
541
+ clientSecret: profile.gmail_client_secret,
542
+ refreshToken: profile.gmail_refresh_token,
543
+ from: profile.from_email,
544
+ };
545
+ case 'SES':
546
+ return {
547
+ global: true,
548
+ type: 'SES',
549
+ region: profile.ses_region,
550
+ accessKeyId: profile.ses_access_key_id,
551
+ secretAccessKey: profile.ses_secret_access_key,
552
+ from: profile.from_email,
553
+ };
554
+ default:
555
+ throw new common_1.BadRequestException(`Invalid mail profile provider: ${profile.provider}`);
556
+ }
557
+ }
558
+ };
559
+ exports.WebhookIntegrationService = WebhookIntegrationService;
560
+ exports.WebhookIntegrationService = WebhookIntegrationService = __decorate([
561
+ (0, common_1.Injectable)(),
562
+ __metadata("design:paramtypes", [api_prisma_1.PrismaService,
563
+ api_pagination_1.PaginationService,
564
+ axios_1.HttpService,
565
+ api_mail_1.MailService,
566
+ mail_service_1.MailService,
567
+ setting_service_1.SettingService])
568
+ ], WebhookIntegrationService);
569
+ //# sourceMappingURL=webhook-integration.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-integration.service.js","sourceRoot":"","sources":["../../src/webhook-integration/webhook-integration.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function createPublicUuid(): `${string}-${string}-${string}-${string}-${string}`;
2
+ export declare function createPlainToken(): string;
3
+ export declare function hashToken(token: string): string;
4
+ export declare function renderTemplate(source: unknown, context: Record<string, any>): any;
5
+ export declare function summarizePayload(value: unknown): any;
6
+ export declare function normalizeJsonObject(value: unknown): any;
7
+ //# sourceMappingURL=webhook-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-utils.d.ts","sourceRoot":"","sources":["../../src/webhook-integration/webhook-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,wDAE/B;AAED,wBAAgB,gBAAgB,WAE/B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAEtC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAuB3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,OAoB9C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,OAejD"}