@resolveio/server-lib 22.2.35 → 22.2.37
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.
package/methods/support.js
CHANGED
|
@@ -112,12 +112,13 @@ function loadSupportMethods(methodManager) {
|
|
|
112
112
|
skipValidation: true,
|
|
113
113
|
function: function (supportTicket) {
|
|
114
114
|
return __awaiter(this, void 0, void 0, function () {
|
|
115
|
-
var body, error_2;
|
|
115
|
+
var safePayload, body, error_2;
|
|
116
116
|
return __generator(this, function (_a) {
|
|
117
117
|
switch (_a.label) {
|
|
118
118
|
case 0:
|
|
119
119
|
_a.trys.push([0, 2, , 3]);
|
|
120
|
-
|
|
120
|
+
safePayload = sanitizeSupportTicketCreatePayload(supportTicket);
|
|
121
|
+
return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/support/supportInsertTicket', safePayload)];
|
|
121
122
|
case 1:
|
|
122
123
|
body = _a.sent();
|
|
123
124
|
return [2 /*return*/, body.data.result];
|
|
@@ -187,12 +188,13 @@ function loadSupportMethods(methodManager) {
|
|
|
187
188
|
}),
|
|
188
189
|
function: function (options, searchString, filters) {
|
|
189
190
|
return __awaiter(this, void 0, void 0, function () {
|
|
190
|
-
var body, results, error_4;
|
|
191
|
+
var safeFilters, body, results, error_4;
|
|
191
192
|
return __generator(this, function (_a) {
|
|
192
193
|
switch (_a.label) {
|
|
193
194
|
case 0:
|
|
194
195
|
_a.trys.push([0, 2, , 3]);
|
|
195
|
-
|
|
196
|
+
safeFilters = sanitizeSupportTicketFiltersForBackend(filters);
|
|
197
|
+
return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/support/supportticketsWithOptions', [options, searchString, safeFilters])];
|
|
196
198
|
case 1:
|
|
197
199
|
body = _a.sent();
|
|
198
200
|
results = Array.isArray(body.data.result) ? body.data.result : [];
|
|
@@ -222,12 +224,13 @@ function loadSupportMethods(methodManager) {
|
|
|
222
224
|
}),
|
|
223
225
|
function: function (searchString, filters) {
|
|
224
226
|
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
-
var body, error_5;
|
|
227
|
+
var safeFilters, body, error_5;
|
|
226
228
|
return __generator(this, function (_a) {
|
|
227
229
|
switch (_a.label) {
|
|
228
230
|
case 0:
|
|
229
231
|
_a.trys.push([0, 2, , 3]);
|
|
230
|
-
|
|
232
|
+
safeFilters = sanitizeSupportTicketFiltersForBackend(filters);
|
|
233
|
+
return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/support/supportCountTickets', [searchString, safeFilters])];
|
|
231
234
|
case 1:
|
|
232
235
|
body = _a.sent();
|
|
233
236
|
return [2 /*return*/, body.data.result];
|
|
@@ -277,27 +280,51 @@ function stripSupportMessageInternalMetadata(message) {
|
|
|
277
280
|
delete next.source;
|
|
278
281
|
return next;
|
|
279
282
|
}
|
|
283
|
+
function buildSupportTicketDetailPath(ticket) {
|
|
284
|
+
var ticketId = String((ticket === null || ticket === void 0 ? void 0 : ticket._id) || '').trim();
|
|
285
|
+
if (!ticketId) {
|
|
286
|
+
return '/support-ticket/detail';
|
|
287
|
+
}
|
|
288
|
+
return "/support-ticket/detail/".concat(ticketId);
|
|
289
|
+
}
|
|
280
290
|
function sanitizeSupportTicketForClientView(ticket) {
|
|
281
291
|
if (!ticket || typeof ticket !== 'object') {
|
|
282
292
|
return ticket;
|
|
283
293
|
}
|
|
284
294
|
var next = __assign({}, ticket);
|
|
295
|
+
next.status = normalizeSupportTicketStatusForClient(ticket.status);
|
|
285
296
|
next.messages = Array.isArray(ticket.messages)
|
|
286
297
|
? ticket.messages
|
|
287
298
|
.filter(function (message) { return !isInternalSupportMessage(message); })
|
|
288
299
|
.map(function (message) { return stripSupportMessageInternalMetadata(message); })
|
|
289
300
|
: [];
|
|
301
|
+
next.url_ticket = String(ticket.url_ticket || '').trim() || buildSupportTicketDetailPath(ticket);
|
|
290
302
|
next.notes = [];
|
|
291
303
|
delete next.automation;
|
|
292
304
|
delete next.ai_recommendations;
|
|
293
305
|
delete next.source;
|
|
294
306
|
return next;
|
|
295
307
|
}
|
|
308
|
+
function sanitizeSupportTicketCreatePayload(ticket) {
|
|
309
|
+
if (!ticket || typeof ticket !== 'object') {
|
|
310
|
+
return ticket;
|
|
311
|
+
}
|
|
312
|
+
var next = __assign({}, ticket);
|
|
313
|
+
next.status = normalizeSupportTicketStatusForBackend(ticket.status);
|
|
314
|
+
next.messages = Array.isArray(ticket.messages)
|
|
315
|
+
? ticket.messages
|
|
316
|
+
.filter(function (message) { return !isInternalSupportMessage(message); })
|
|
317
|
+
.map(function (message) { return stripSupportMessageInternalMetadata(message); })
|
|
318
|
+
: [];
|
|
319
|
+
delete next.url_ticket;
|
|
320
|
+
return next;
|
|
321
|
+
}
|
|
296
322
|
function sanitizeSupportTicketUpdatePayload(ticket) {
|
|
297
323
|
if (!ticket || typeof ticket !== 'object') {
|
|
298
324
|
return ticket;
|
|
299
325
|
}
|
|
300
326
|
var next = __assign({}, ticket);
|
|
327
|
+
next.status = normalizeSupportTicketStatusForBackend(ticket.status);
|
|
301
328
|
next.messages = Array.isArray(ticket.messages)
|
|
302
329
|
? ticket.messages
|
|
303
330
|
.filter(function (message) { return !isInternalSupportMessage(message); })
|
|
@@ -307,6 +334,75 @@ function sanitizeSupportTicketUpdatePayload(ticket) {
|
|
|
307
334
|
delete next.automation;
|
|
308
335
|
delete next.ai_recommendations;
|
|
309
336
|
delete next.source;
|
|
337
|
+
delete next.url_ticket;
|
|
338
|
+
return next;
|
|
339
|
+
}
|
|
340
|
+
function normalizeSupportTicketStatusForClient(status) {
|
|
341
|
+
var value = String(status || '').trim().toLowerCase();
|
|
342
|
+
if (value === 'opened' || value === 'active') {
|
|
343
|
+
return 'Active';
|
|
344
|
+
}
|
|
345
|
+
if (value === 'review') {
|
|
346
|
+
return 'Review';
|
|
347
|
+
}
|
|
348
|
+
if (value === 'resolved' || value === 'closed') {
|
|
349
|
+
return 'Closed';
|
|
350
|
+
}
|
|
351
|
+
return String(status || '').trim();
|
|
352
|
+
}
|
|
353
|
+
function normalizeSupportTicketStatusForBackend(status) {
|
|
354
|
+
var value = String(status || '').trim().toLowerCase();
|
|
355
|
+
if (value === 'active' || value === 'opened') {
|
|
356
|
+
return 'Opened';
|
|
357
|
+
}
|
|
358
|
+
if (value === 'review') {
|
|
359
|
+
return 'Review';
|
|
360
|
+
}
|
|
361
|
+
if (value === 'resolved' || value === 'closed') {
|
|
362
|
+
return 'Closed';
|
|
363
|
+
}
|
|
364
|
+
return String(status || '').trim();
|
|
365
|
+
}
|
|
366
|
+
function sanitizeSupportTicketFiltersForBackend(filters) {
|
|
367
|
+
if (!Array.isArray(filters)) {
|
|
368
|
+
return [];
|
|
369
|
+
}
|
|
370
|
+
return filters.map(function (filter) { return sanitizeSupportTicketFilterForBackend(filter); });
|
|
371
|
+
}
|
|
372
|
+
function sanitizeSupportTicketFilterForBackend(filter) {
|
|
373
|
+
if (!filter || typeof filter !== 'object') {
|
|
374
|
+
return filter;
|
|
375
|
+
}
|
|
376
|
+
var next = __assign({}, filter);
|
|
377
|
+
if (String(filter.prop || '').trim() !== 'status') {
|
|
378
|
+
return next;
|
|
379
|
+
}
|
|
380
|
+
next.data = normalizeSupportTicketFilterDataForBackend(filter.data);
|
|
381
|
+
return next;
|
|
382
|
+
}
|
|
383
|
+
function normalizeSupportTicketFilterDataForBackend(value) {
|
|
384
|
+
if (typeof value === 'string') {
|
|
385
|
+
return normalizeSupportTicketStatusForBackend(value);
|
|
386
|
+
}
|
|
387
|
+
if (Array.isArray(value)) {
|
|
388
|
+
return value.map(function (item) { return normalizeSupportTicketFilterDataForBackend(item); });
|
|
389
|
+
}
|
|
390
|
+
if (!value || typeof value !== 'object') {
|
|
391
|
+
return value;
|
|
392
|
+
}
|
|
393
|
+
var next = __assign({}, value);
|
|
394
|
+
if (typeof next.$eq === 'string') {
|
|
395
|
+
next.$eq = normalizeSupportTicketStatusForBackend(next.$eq);
|
|
396
|
+
}
|
|
397
|
+
if (typeof next.$ne === 'string') {
|
|
398
|
+
next.$ne = normalizeSupportTicketStatusForBackend(next.$ne);
|
|
399
|
+
}
|
|
400
|
+
if (Array.isArray(next.$in)) {
|
|
401
|
+
next.$in = next.$in.map(function (entry) { return normalizeSupportTicketFilterDataForBackend(entry); });
|
|
402
|
+
}
|
|
403
|
+
if (Array.isArray(next.$nin)) {
|
|
404
|
+
next.$nin = next.$nin.map(function (entry) { return normalizeSupportTicketFilterDataForBackend(entry); });
|
|
405
|
+
}
|
|
310
406
|
return next;
|
|
311
407
|
}
|
|
312
408
|
|
package/methods/support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/support.ts"],"names":[],"mappings":"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","file":"support.js","sourcesContent":["import axios from 'axios';\nimport SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nconst SUPPORT_INTERNAL_MESSAGE_PATTERN = /\\b(codex|openai|ai dashboard|ai assistant|workflow update|build plan|pull request|confidence gate|dependency follow-up|thread key|workspace cleanup|support automation)\\b/i;\nconst SUPPORT_INTERNAL_SOURCE_PATTERN = /\\b(support_automation|codex|openai|ai(?:[_ -]?assistant|[_ -]?dashboard)?)\\b/i;\n\nexport function loadSupportMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n supportCreateBillingUser: {\n \tcheck: new SimpleSchema({\n\t\t\t\tuser: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(user) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/billing-user', user);\n return body.data.result;\n }\n catch {\n return false;\n }\n }\n\t\t},\n\t\tsupportGetSupportTicketWithId: {\n \tcheck: new SimpleSchema({\n\t\t\t\tid_support_ticket: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n }),\n function: async function(id_support_ticket) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportTicketWithId', {id_support_ticket: id_support_ticket});\n return sanitizeSupportTicketForClientView(body.data.result);\n }\n catch(error) {\n error.message = `Error in Support Get Support Ticket With Id: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportInsertSupportTicket: {\n \tskipValidation: true,\n function: async function(supportTicket) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportInsertTicket', supportTicket);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Insert Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportUpdateSupportTicket: {\n\t\t\tskipValidation: true,\n function: async function(supportTicket) {\n try {\n const safePayload = sanitizeSupportTicketUpdatePayload(supportTicket);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportUpdateTicket', safePayload);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Update Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketsWithOptions: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\toptions: {\n\t\t\t\t\ttype: Object\n\t\t\t\t},\n\t\t\t\t'options.limit': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.skip': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.sort': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\t'options.fields': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(options, searchString, filters) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportticketsWithOptions', [options, searchString, filters]);\n const results = Array.isArray(body.data.result) ? body.data.result : [];\n return results.map((ticket: any) => sanitizeSupportTicketForClientView(ticket));\n }\n catch(error) {\n error.message = `Error in Support Tickets With Options: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketCount: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(searchString, filters) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportCountTickets', [searchString, filters]);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Ticket Count: ${error.message}`;\n throw error;\n }\n }\n\t\t}\n\t});\n}\n\nfunction isInternalSupportMessage(message: any): boolean {\n\tif (!message || typeof message !== 'object') {\n\t\treturn false;\n\t}\n\tif (message.internal === true) {\n\t\treturn true;\n\t}\n\tconst visibility = String(message.visibility || '').trim().toLowerCase();\n\tif (visibility === 'internal') {\n\t\treturn true;\n\t}\n\tconst badge = String(message.badge || '').trim().toLowerCase();\n\tif (badge.includes('internal')) {\n\t\treturn true;\n\t}\n\tconst source = String(message.source || '').trim();\n\tif (source && SUPPORT_INTERNAL_SOURCE_PATTERN.test(source)) {\n\t\treturn true;\n\t}\n\tconst text = [\n\t\tString(message.type || ''),\n\t\tString(message.user || ''),\n\t\tString(message.message || '')\n\t].join(' ');\n\treturn SUPPORT_INTERNAL_MESSAGE_PATTERN.test(text);\n}\n\nfunction stripSupportMessageInternalMetadata(message: any): Record<string, any> {\n\tconst next: Record<string, any> = { ...(message || {}) };\n\tdelete next.internal;\n\tdelete next.visibility;\n\tdelete next.badge;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketForClientView(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketUpdatePayload(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\treturn next;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/support.ts"],"names":[],"mappings":"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","file":"support.js","sourcesContent":["import axios from 'axios';\nimport SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nconst SUPPORT_INTERNAL_MESSAGE_PATTERN = /\\b(codex|openai|ai dashboard|ai assistant|workflow update|build plan|pull request|confidence gate|dependency follow-up|thread key|workspace cleanup|support automation)\\b/i;\nconst SUPPORT_INTERNAL_SOURCE_PATTERN = /\\b(support_automation|codex|openai|ai(?:[_ -]?assistant|[_ -]?dashboard)?)\\b/i;\n\nexport function loadSupportMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n supportCreateBillingUser: {\n \tcheck: new SimpleSchema({\n\t\t\t\tuser: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(user) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/billing-user', user);\n return body.data.result;\n }\n catch {\n return false;\n }\n }\n\t\t},\n\t\tsupportGetSupportTicketWithId: {\n \tcheck: new SimpleSchema({\n\t\t\t\tid_support_ticket: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n }),\n function: async function(id_support_ticket) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportTicketWithId', {id_support_ticket: id_support_ticket});\n return sanitizeSupportTicketForClientView(body.data.result);\n }\n catch(error) {\n error.message = `Error in Support Get Support Ticket With Id: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportInsertSupportTicket: {\n \tskipValidation: true,\n function: async function(supportTicket) {\n try {\n const safePayload = sanitizeSupportTicketCreatePayload(supportTicket);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportInsertTicket', safePayload);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Insert Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportUpdateSupportTicket: {\n\t\t\tskipValidation: true,\n function: async function(supportTicket) {\n try {\n const safePayload = sanitizeSupportTicketUpdatePayload(supportTicket);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportUpdateTicket', safePayload);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Update Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketsWithOptions: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\toptions: {\n\t\t\t\t\ttype: Object\n\t\t\t\t},\n\t\t\t\t'options.limit': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.skip': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.sort': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\t'options.fields': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(options, searchString, filters) {\n try {\n const safeFilters = sanitizeSupportTicketFiltersForBackend(filters);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportticketsWithOptions', [options, searchString, safeFilters]);\n const results = Array.isArray(body.data.result) ? body.data.result : [];\n return results.map((ticket: any) => sanitizeSupportTicketForClientView(ticket));\n }\n catch(error) {\n error.message = `Error in Support Tickets With Options: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketCount: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(searchString, filters) {\n try {\n const safeFilters = sanitizeSupportTicketFiltersForBackend(filters);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportCountTickets', [searchString, safeFilters]);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Ticket Count: ${error.message}`;\n throw error;\n }\n }\n\t\t}\n\t});\n}\n\nfunction isInternalSupportMessage(message: any): boolean {\n\tif (!message || typeof message !== 'object') {\n\t\treturn false;\n\t}\n\tif (message.internal === true) {\n\t\treturn true;\n\t}\n\tconst visibility = String(message.visibility || '').trim().toLowerCase();\n\tif (visibility === 'internal') {\n\t\treturn true;\n\t}\n\tconst badge = String(message.badge || '').trim().toLowerCase();\n\tif (badge.includes('internal')) {\n\t\treturn true;\n\t}\n\tconst source = String(message.source || '').trim();\n\tif (source && SUPPORT_INTERNAL_SOURCE_PATTERN.test(source)) {\n\t\treturn true;\n\t}\n\tconst text = [\n\t\tString(message.type || ''),\n\t\tString(message.user || ''),\n\t\tString(message.message || '')\n\t].join(' ');\n\treturn SUPPORT_INTERNAL_MESSAGE_PATTERN.test(text);\n}\n\nfunction stripSupportMessageInternalMetadata(message: any): Record<string, any> {\n\tconst next: Record<string, any> = { ...(message || {}) };\n\tdelete next.internal;\n\tdelete next.visibility;\n\tdelete next.badge;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction buildSupportTicketDetailPath(ticket: any): string {\n\tconst ticketId = String(ticket?._id || '').trim();\n\tif (!ticketId) {\n\t\treturn '/support-ticket/detail';\n\t}\n\treturn `/support-ticket/detail/${ticketId}`;\n}\n\nfunction sanitizeSupportTicketForClientView(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.status = normalizeSupportTicketStatusForClient(ticket.status);\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.url_ticket = String(ticket.url_ticket || '').trim() || buildSupportTicketDetailPath(ticket);\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketCreatePayload(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.status = normalizeSupportTicketStatusForBackend(ticket.status);\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tdelete next.url_ticket;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketUpdatePayload(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.status = normalizeSupportTicketStatusForBackend(ticket.status);\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\tdelete next.url_ticket;\n\treturn next;\n}\n\nfunction normalizeSupportTicketStatusForClient(status: any): string {\n\tconst value = String(status || '').trim().toLowerCase();\n\tif (value === 'opened' || value === 'active') {\n\t\treturn 'Active';\n\t}\n\tif (value === 'review') {\n\t\treturn 'Review';\n\t}\n\tif (value === 'resolved' || value === 'closed') {\n\t\treturn 'Closed';\n\t}\n\treturn String(status || '').trim();\n}\n\nfunction normalizeSupportTicketStatusForBackend(status: any): string {\n\tconst value = String(status || '').trim().toLowerCase();\n\tif (value === 'active' || value === 'opened') {\n\t\treturn 'Opened';\n\t}\n\tif (value === 'review') {\n\t\treturn 'Review';\n\t}\n\tif (value === 'resolved' || value === 'closed') {\n\t\treturn 'Closed';\n\t}\n\treturn String(status || '').trim();\n}\n\nfunction sanitizeSupportTicketFiltersForBackend(filters: any): any {\n\tif (!Array.isArray(filters)) {\n\t\treturn [];\n\t}\n\treturn filters.map((filter: any) => sanitizeSupportTicketFilterForBackend(filter));\n}\n\nfunction sanitizeSupportTicketFilterForBackend(filter: any): any {\n\tif (!filter || typeof filter !== 'object') {\n\t\treturn filter;\n\t}\n\tconst next: Record<string, any> = { ...filter };\n\tif (String(filter.prop || '').trim() !== 'status') {\n\t\treturn next;\n\t}\n\tnext.data = normalizeSupportTicketFilterDataForBackend(filter.data);\n\treturn next;\n}\n\nfunction normalizeSupportTicketFilterDataForBackend(value: any): any {\n\tif (typeof value === 'string') {\n\t\treturn normalizeSupportTicketStatusForBackend(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.map((item: any) => normalizeSupportTicketFilterDataForBackend(item));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst next: Record<string, any> = { ...value };\n\tif (typeof next.$eq === 'string') {\n\t\tnext.$eq = normalizeSupportTicketStatusForBackend(next.$eq);\n\t}\n\tif (typeof next.$ne === 'string') {\n\t\tnext.$ne = normalizeSupportTicketStatusForBackend(next.$ne);\n\t}\n\tif (Array.isArray(next.$in)) {\n\t\tnext.$in = next.$in.map((entry: any) => normalizeSupportTicketFilterDataForBackend(entry));\n\t}\n\tif (Array.isArray(next.$nin)) {\n\t\tnext.$nin = next.$nin.map((entry: any) => normalizeSupportTicketFilterDataForBackend(entry));\n\t}\n\treturn next;\n}\n"]}
|
|
@@ -10,6 +10,7 @@ export interface SupportTicketModel extends CollectionDocument {
|
|
|
10
10
|
substatus: SupportTicketSubstatus;
|
|
11
11
|
client: string;
|
|
12
12
|
id_client: string;
|
|
13
|
+
url_ticket?: string;
|
|
13
14
|
messages: SupportTicketMessageModel[];
|
|
14
15
|
date_created: Date;
|
|
15
16
|
date_created_string: string;
|
|
@@ -46,7 +47,7 @@ export interface SupportTicketClientUserModel {
|
|
|
46
47
|
export type SupportTicketPriority = 'High' | 'Low';
|
|
47
48
|
export type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction';
|
|
48
49
|
export type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';
|
|
49
|
-
type SupportTicketStatus = 'Opened' | 'Resolved';
|
|
50
|
+
export type SupportTicketStatus = 'Active' | 'Review' | 'Closed' | 'Opened' | 'Resolved';
|
|
50
51
|
export interface SupportTicketMessageModel {
|
|
51
52
|
message: string;
|
|
52
53
|
id_user: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/support-ticket.model.ts"],"names":[],"mappings":"","file":"support-ticket.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface SupportTicketModel extends CollectionDocument {\n\ttype: SupportTicketType;\n\tpriority: SupportTicketPriority;\n\tissue: string;\n\tai_recommendations?: SupportTicketAiRecommendationsModel;\n\tsupport_ticket_number: number;\n\tsupport_ticket_number_string: string;\n\tstatus: SupportTicketStatus;\n\tsubstatus: SupportTicketSubstatus;\n\tclient: string;\n\tid_client: string;\n\tmessages: SupportTicketMessageModel[];\n\tdate_created: Date;\n\tdate_created_string: string;\n\tid_user_created: string;\n\tuser_created: string;\n\tbillable: boolean;\n\tdate_investigation?: Date;\n\tdate_closed?: Date;\n\tfiles: string[];\n\tcurrent_watchers: SupportTicketWatchersModel[];\n\tclient_user: SupportTicketClientUserModel;\n\tusers_assigned: SupportTicketUserAssignedModel[];\n\testimated_billable_hours?: number;\n\tbillable_hours?: number;\n\tbill_description: string;\n\ttasks: SupportTicketTaskModel[];\n\tnotes: SupportTicketNoteModel[];\n\tdifficulty: number;\n}\n\nexport interface SupportTicketAiRecommendationsModel {\n\tsource?: string;\n\thidden_from_client?: boolean;\n\tcreated_at?: Date;\n\tsource_message_id?: string;\n\tsummary?: string;\n\tinternal_recommendations?: string;\n\tcode_change_recommendations?: string;\n}\n\nexport interface SupportTicketClientUserModel {\n\tid_user: string;\n\tuser: string;\n\temail: string;\n}\n\nexport type SupportTicketPriority = 'High' | 'Low';\n\nexport type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction';\nexport type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';\
|
|
1
|
+
{"version":3,"sources":["../../src/models/support-ticket.model.ts"],"names":[],"mappings":"","file":"support-ticket.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface SupportTicketModel extends CollectionDocument {\n\ttype: SupportTicketType;\n\tpriority: SupportTicketPriority;\n\tissue: string;\n\tai_recommendations?: SupportTicketAiRecommendationsModel;\n\tsupport_ticket_number: number;\n\tsupport_ticket_number_string: string;\n\tstatus: SupportTicketStatus;\n\tsubstatus: SupportTicketSubstatus;\n\tclient: string;\n\tid_client: string;\n\turl_ticket?: string;\n\tmessages: SupportTicketMessageModel[];\n\tdate_created: Date;\n\tdate_created_string: string;\n\tid_user_created: string;\n\tuser_created: string;\n\tbillable: boolean;\n\tdate_investigation?: Date;\n\tdate_closed?: Date;\n\tfiles: string[];\n\tcurrent_watchers: SupportTicketWatchersModel[];\n\tclient_user: SupportTicketClientUserModel;\n\tusers_assigned: SupportTicketUserAssignedModel[];\n\testimated_billable_hours?: number;\n\tbillable_hours?: number;\n\tbill_description: string;\n\ttasks: SupportTicketTaskModel[];\n\tnotes: SupportTicketNoteModel[];\n\tdifficulty: number;\n}\n\nexport interface SupportTicketAiRecommendationsModel {\n\tsource?: string;\n\thidden_from_client?: boolean;\n\tcreated_at?: Date;\n\tsource_message_id?: string;\n\tsummary?: string;\n\tinternal_recommendations?: string;\n\tcode_change_recommendations?: string;\n}\n\nexport interface SupportTicketClientUserModel {\n\tid_user: string;\n\tuser: string;\n\temail: string;\n}\n\nexport type SupportTicketPriority = 'High' | 'Low';\n\nexport type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction';\nexport type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';\nexport type SupportTicketStatus = 'Active' | 'Review' | 'Closed' | 'Opened' | 'Resolved';\n\nexport interface SupportTicketMessageModel {\n\tmessage: string;\n\tid_user: string;\n\tuser: string;\n\tdate: Date;\n\ttype: SupportTicketMessageType;\n\tinternal?: boolean;\n\tvisibility?: 'public' | 'internal';\n\tbadge?: string;\n\tsource?: string;\n}\n\ntype SupportTicketMessageType = 'ResolveIO' | 'Client';\n\nexport interface SupportTicketWatchersModel {\n\tuser: string;\n\tid_user: string;\n\temail: string;\n}\n\nexport interface SupportTicketTaskModel {\n\tdescription: string;\n\tcompleted: boolean;\n\tid_user?: string;\n\tuser?: string;\n\tdate_created: Date;\n\tdate_completed?: Date;\n}\n\nexport interface SupportTicketNoteModel {\n\tdescription: string;\n\tid_user: string;\n\tuser: string;\n\tdate_created: Date;\n}\n\nexport interface SupportTicketUserAssignedModel {\n\tid_user: string;\n\tuser: string;\n\tdate_created: Date;\n} \n"]}
|