grm-shared-library 1.1.201 → 1.1.203
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/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/kafka/topics.js +26 -0
- package/dist/cjs/kafka/topics.js.map +1 -1
- package/dist/cjs/modules/common/constants/service.const.js +1 -0
- package/dist/cjs/modules/common/constants/service.const.js.map +1 -1
- package/dist/cjs/modules/permission/data/permissions.data.js +26 -0
- package/dist/cjs/modules/permission/data/permissions.data.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js +40 -0
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permissions-module.enum.js +1 -0
- package/dist/cjs/modules/permission/enums/permissions-module.enum.js.map +1 -1
- package/dist/cjs/modules/role/data/roles.data.js +85 -0
- package/dist/cjs/modules/role/data/roles.data.js.map +1 -1
- package/dist/cjs/modules/socket/enums/redis-channel-name.enum.js +1 -0
- package/dist/cjs/modules/socket/enums/redis-channel-name.enum.js.map +1 -1
- package/dist/cjs/modules/socket/enums/room-type.enum.js +8 -0
- package/dist/cjs/modules/socket/enums/room-type.enum.js.map +1 -1
- package/dist/cjs/modules/socket/enums/socket-event-name.enum.js +5 -0
- package/dist/cjs/modules/socket/enums/socket-event-name.enum.js.map +1 -1
- package/dist/cjs/modules/support/constants/support-defaults.const.js +139 -0
- package/dist/cjs/modules/support/constants/support-defaults.const.js.map +1 -0
- package/dist/cjs/modules/support/constants/support-kafka.const.js +51 -0
- package/dist/cjs/modules/support/constants/support-kafka.const.js.map +1 -0
- package/dist/cjs/modules/support/dtos/create-support-ticket-message.dto.js +82 -0
- package/dist/cjs/modules/support/dtos/create-support-ticket-message.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/create-support-ticket.dto.js +169 -0
- package/dist/cjs/modules/support/dtos/create-support-ticket.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/customer-feedback.dto.js +401 -0
- package/dist/cjs/modules/support/dtos/customer-feedback.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/support-configuration.dto.js +732 -0
- package/dist/cjs/modules/support/dtos/support-configuration.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/support-related-entity.dto.js +38 -0
- package/dist/cjs/modules/support/dtos/support-related-entity.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/support-report-query.dto.js +127 -0
- package/dist/cjs/modules/support/dtos/support-report-query.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/support-sync.dto.js +175 -0
- package/dist/cjs/modules/support/dtos/support-sync.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/support-ticket-actions.dto.js +191 -0
- package/dist/cjs/modules/support/dtos/support-ticket-actions.dto.js.map +1 -0
- package/dist/cjs/modules/support/dtos/support-ticket-query.dto.js +225 -0
- package/dist/cjs/modules/support/dtos/support-ticket-query.dto.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-audit-action.enum.js +87 -0
- package/dist/cjs/modules/support/enums/support-audit-action.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-feedback.enum.js +110 -0
- package/dist/cjs/modules/support/enums/support-feedback.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-provider-code.enum.js +66 -0
- package/dist/cjs/modules/support/enums/support-provider-code.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-related-entity-type.enum.js +50 -0
- package/dist/cjs/modules/support/enums/support-related-entity-type.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-routing.enum.js +58 -0
- package/dist/cjs/modules/support/enums/support-routing.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-sla.enum.js +55 -0
- package/dist/cjs/modules/support/enums/support-sla.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-sync.enum.js +133 -0
- package/dist/cjs/modules/support/enums/support-sync.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-ticket-channel.enum.js +36 -0
- package/dist/cjs/modules/support/enums/support-ticket-channel.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-ticket-message.enum.js +54 -0
- package/dist/cjs/modules/support/enums/support-ticket-message.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-ticket-priority.enum.js +41 -0
- package/dist/cjs/modules/support/enums/support-ticket-priority.enum.js.map +1 -0
- package/dist/cjs/modules/support/enums/support-ticket-status.enum.js +138 -0
- package/dist/cjs/modules/support/enums/support-ticket-status.enum.js.map +1 -0
- package/dist/cjs/modules/support/index.js +60 -0
- package/dist/cjs/modules/support/index.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/customer-feedback.js +3 -0
- package/dist/cjs/modules/support/interfaces/customer-feedback.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-configuration.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-configuration.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-events.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-events.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-provider-descriptor.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-provider-descriptor.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-realtime.js +18 -0
- package/dist/cjs/modules/support/interfaces/support-realtime.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-reports.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-reports.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-sync.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-sync.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-ticket-message.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-ticket-message.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-ticket.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-ticket.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-feedback.util.js +66 -0
- package/dist/cjs/modules/support/utils/support-feedback.util.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-redaction.util.js +173 -0
- package/dist/cjs/modules/support/utils/support-redaction.util.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-routing.util.js +87 -0
- package/dist/cjs/modules/support/utils/support-routing.util.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-sla.util.js +239 -0
- package/dist/cjs/modules/support/utils/support-sla.util.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-status.util.js +93 -0
- package/dist/cjs/modules/support/utils/support-status.util.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-sync.util.js +151 -0
- package/dist/cjs/modules/support/utils/support-sync.util.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-ticket-number.util.js +61 -0
- package/dist/cjs/modules/support/utils/support-ticket-number.util.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/kafka/topics.js +26 -0
- package/dist/esm/kafka/topics.js.map +1 -1
- package/dist/esm/modules/common/constants/service.const.js +1 -0
- package/dist/esm/modules/common/constants/service.const.js.map +1 -1
- package/dist/esm/modules/permission/data/permissions.data.js +26 -0
- package/dist/esm/modules/permission/data/permissions.data.js.map +1 -1
- package/dist/esm/modules/permission/enums/permission-actions.enum.js +40 -0
- package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
- package/dist/esm/modules/permission/enums/permissions-module.enum.js +1 -0
- package/dist/esm/modules/permission/enums/permissions-module.enum.js.map +1 -1
- package/dist/esm/modules/role/data/roles.data.js +85 -0
- package/dist/esm/modules/role/data/roles.data.js.map +1 -1
- package/dist/esm/modules/socket/enums/redis-channel-name.enum.js +1 -0
- package/dist/esm/modules/socket/enums/redis-channel-name.enum.js.map +1 -1
- package/dist/esm/modules/socket/enums/room-type.enum.js +8 -0
- package/dist/esm/modules/socket/enums/room-type.enum.js.map +1 -1
- package/dist/esm/modules/socket/enums/socket-event-name.enum.js +5 -0
- package/dist/esm/modules/socket/enums/socket-event-name.enum.js.map +1 -1
- package/dist/esm/modules/support/constants/support-defaults.const.js +136 -0
- package/dist/esm/modules/support/constants/support-defaults.const.js.map +1 -0
- package/dist/esm/modules/support/constants/support-kafka.const.js +48 -0
- package/dist/esm/modules/support/constants/support-kafka.const.js.map +1 -0
- package/dist/esm/modules/support/dtos/create-support-ticket-message.dto.js +77 -0
- package/dist/esm/modules/support/dtos/create-support-ticket-message.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/create-support-ticket.dto.js +165 -0
- package/dist/esm/modules/support/dtos/create-support-ticket.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/customer-feedback.dto.js +392 -0
- package/dist/esm/modules/support/dtos/customer-feedback.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/support-configuration.dto.js +716 -0
- package/dist/esm/modules/support/dtos/support-configuration.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/support-related-entity.dto.js +34 -0
- package/dist/esm/modules/support/dtos/support-related-entity.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/support-report-query.dto.js +123 -0
- package/dist/esm/modules/support/dtos/support-report-query.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/support-sync.dto.js +169 -0
- package/dist/esm/modules/support/dtos/support-sync.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/support-ticket-actions.dto.js +180 -0
- package/dist/esm/modules/support/dtos/support-ticket-actions.dto.js.map +1 -0
- package/dist/esm/modules/support/dtos/support-ticket-query.dto.js +221 -0
- package/dist/esm/modules/support/dtos/support-ticket-query.dto.js.map +1 -0
- package/dist/esm/modules/support/enums/support-audit-action.enum.js +84 -0
- package/dist/esm/modules/support/enums/support-audit-action.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-feedback.enum.js +107 -0
- package/dist/esm/modules/support/enums/support-feedback.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-provider-code.enum.js +63 -0
- package/dist/esm/modules/support/enums/support-provider-code.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-related-entity-type.enum.js +47 -0
- package/dist/esm/modules/support/enums/support-related-entity-type.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-routing.enum.js +55 -0
- package/dist/esm/modules/support/enums/support-routing.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-sla.enum.js +52 -0
- package/dist/esm/modules/support/enums/support-sla.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-sync.enum.js +130 -0
- package/dist/esm/modules/support/enums/support-sync.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-ticket-channel.enum.js +33 -0
- package/dist/esm/modules/support/enums/support-ticket-channel.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-ticket-message.enum.js +51 -0
- package/dist/esm/modules/support/enums/support-ticket-message.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-ticket-priority.enum.js +38 -0
- package/dist/esm/modules/support/enums/support-ticket-priority.enum.js.map +1 -0
- package/dist/esm/modules/support/enums/support-ticket-status.enum.js +135 -0
- package/dist/esm/modules/support/enums/support-ticket-status.enum.js.map +1 -0
- package/dist/esm/modules/support/index.js +44 -0
- package/dist/esm/modules/support/index.js.map +1 -0
- package/dist/esm/modules/support/interfaces/customer-feedback.js +2 -0
- package/dist/esm/modules/support/interfaces/customer-feedback.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-configuration.js +2 -0
- package/dist/esm/modules/support/interfaces/support-configuration.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-events.js +2 -0
- package/dist/esm/modules/support/interfaces/support-events.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-provider-descriptor.js +2 -0
- package/dist/esm/modules/support/interfaces/support-provider-descriptor.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-realtime.js +15 -0
- package/dist/esm/modules/support/interfaces/support-realtime.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-reports.js +2 -0
- package/dist/esm/modules/support/interfaces/support-reports.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-sync.js +2 -0
- package/dist/esm/modules/support/interfaces/support-sync.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-ticket-message.js +2 -0
- package/dist/esm/modules/support/interfaces/support-ticket-message.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-ticket.js +2 -0
- package/dist/esm/modules/support/interfaces/support-ticket.js.map +1 -0
- package/dist/esm/modules/support/utils/support-feedback.util.js +60 -0
- package/dist/esm/modules/support/utils/support-feedback.util.js.map +1 -0
- package/dist/esm/modules/support/utils/support-redaction.util.js +164 -0
- package/dist/esm/modules/support/utils/support-redaction.util.js.map +1 -0
- package/dist/esm/modules/support/utils/support-routing.util.js +82 -0
- package/dist/esm/modules/support/utils/support-routing.util.js.map +1 -0
- package/dist/esm/modules/support/utils/support-sla.util.js +229 -0
- package/dist/esm/modules/support/utils/support-sla.util.js.map +1 -0
- package/dist/esm/modules/support/utils/support-status.util.js +81 -0
- package/dist/esm/modules/support/utils/support-status.util.js.map +1 -0
- package/dist/esm/modules/support/utils/support-sync.util.js +142 -0
- package/dist/esm/modules/support/utils/support-sync.util.js.map +1 -0
- package/dist/esm/modules/support/utils/support-ticket-number.util.js +56 -0
- package/dist/esm/modules/support/utils/support-ticket-number.util.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/kafka/topics.d.ts +21 -0
- package/dist/types/modules/common/constants/service.const.d.ts +4 -0
- package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +21 -0
- package/dist/types/modules/permission/enums/permissions-module.enum.d.ts +2 -1
- package/dist/types/modules/socket/enums/redis-channel-name.enum.d.ts +2 -1
- package/dist/types/modules/socket/enums/room-type.enum.d.ts +8 -0
- package/dist/types/modules/socket/enums/socket-event-name.enum.d.ts +2 -1
- package/dist/types/modules/support/constants/support-defaults.const.d.ts +129 -0
- package/dist/types/modules/support/constants/support-kafka.const.d.ts +47 -0
- package/dist/types/modules/support/dtos/create-support-ticket-message.dto.d.ts +30 -0
- package/dist/types/modules/support/dtos/create-support-ticket.dto.d.ts +35 -0
- package/dist/types/modules/support/dtos/customer-feedback.dto.d.ts +83 -0
- package/dist/types/modules/support/dtos/support-configuration.dto.d.ts +130 -0
- package/dist/types/modules/support/dtos/support-related-entity.dto.d.ts +13 -0
- package/dist/types/modules/support/dtos/support-report-query.dto.d.ts +29 -0
- package/dist/types/modules/support/dtos/support-sync.dto.d.ts +40 -0
- package/dist/types/modules/support/dtos/support-ticket-actions.dto.d.ts +61 -0
- package/dist/types/modules/support/dtos/support-ticket-query.dto.d.ts +41 -0
- package/dist/types/modules/support/enums/support-audit-action.enum.d.ts +80 -0
- package/dist/types/modules/support/enums/support-feedback.enum.d.ts +65 -0
- package/dist/types/modules/support/enums/support-provider-code.enum.d.ts +57 -0
- package/dist/types/modules/support/enums/support-related-entity-type.enum.d.ts +41 -0
- package/dist/types/modules/support/enums/support-routing.enum.d.ts +48 -0
- package/dist/types/modules/support/enums/support-sla.enum.d.ts +47 -0
- package/dist/types/modules/support/enums/support-sync.enum.d.ts +108 -0
- package/dist/types/modules/support/enums/support-ticket-channel.enum.d.ts +30 -0
- package/dist/types/modules/support/enums/support-ticket-message.enum.d.ts +42 -0
- package/dist/types/modules/support/enums/support-ticket-priority.enum.d.ts +24 -0
- package/dist/types/modules/support/enums/support-ticket-status.enum.d.ts +58 -0
- package/dist/types/modules/support/index.d.ts +38 -0
- package/dist/types/modules/support/interfaces/customer-feedback.d.ts +115 -0
- package/dist/types/modules/support/interfaces/support-configuration.d.ts +170 -0
- package/dist/types/modules/support/interfaces/support-events.d.ts +126 -0
- package/dist/types/modules/support/interfaces/support-provider-descriptor.d.ts +92 -0
- package/dist/types/modules/support/interfaces/support-realtime.d.ts +65 -0
- package/dist/types/modules/support/interfaces/support-reports.d.ts +122 -0
- package/dist/types/modules/support/interfaces/support-sync.d.ts +105 -0
- package/dist/types/modules/support/interfaces/support-ticket-message.d.ts +66 -0
- package/dist/types/modules/support/interfaces/support-ticket.d.ts +180 -0
- package/dist/types/modules/support/utils/support-feedback.util.d.ts +23 -0
- package/dist/types/modules/support/utils/support-redaction.util.d.ts +48 -0
- package/dist/types/modules/support/utils/support-routing.util.d.ts +50 -0
- package/dist/types/modules/support/utils/support-sla.util.d.ts +69 -0
- package/dist/types/modules/support/utils/support-status.util.d.ts +44 -0
- package/dist/types/modules/support/utils/support-sync.util.d.ts +76 -0
- package/dist/types/modules/support/utils/support-ticket-number.util.d.ts +39 -0
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canTransitionSupportTicket = canTransitionSupportTicket;
|
|
4
|
+
exports.allowedSupportTicketTransitions = allowedSupportTicketTransitions;
|
|
5
|
+
exports.isTerminalSupportTicketStatus = isTerminalSupportTicketStatus;
|
|
6
|
+
exports.isActiveSupportTicketStatus = isActiveSupportTicketStatus;
|
|
7
|
+
exports.isSlaPausedStatus = isSlaPausedStatus;
|
|
8
|
+
exports.isSlaStoppedStatus = isSlaStoppedStatus;
|
|
9
|
+
exports.customerMayReply = customerMayReply;
|
|
10
|
+
exports.statusAfterCustomerReply = statusAfterCustomerReply;
|
|
11
|
+
exports.canTransitionCustomerFeedback = canTransitionCustomerFeedback;
|
|
12
|
+
exports.allowedCustomerFeedbackTransitions = allowedCustomerFeedbackTransitions;
|
|
13
|
+
const support_feedback_enum_1 = require("../enums/support-feedback.enum");
|
|
14
|
+
const support_ticket_status_enum_1 = require("../enums/support-ticket-status.enum");
|
|
15
|
+
/**
|
|
16
|
+
* Whether a ticket may move from one state to another.
|
|
17
|
+
*
|
|
18
|
+
* The single authority. Controllers, services, webhook handlers and the
|
|
19
|
+
* reconciliation job all ask this rather than each carrying their own idea of
|
|
20
|
+
* what is legal - which is what stops a provider webhook quietly doing
|
|
21
|
+
* something no Clarion user could do.
|
|
22
|
+
*
|
|
23
|
+
* A move to the SAME state is allowed and is a no-op, because a provider that
|
|
24
|
+
* re-sends its current status should not be an error.
|
|
25
|
+
*/
|
|
26
|
+
function canTransitionSupportTicket(from, to) {
|
|
27
|
+
if (from === to)
|
|
28
|
+
return true;
|
|
29
|
+
const allowed = support_ticket_status_enum_1.SUPPORT_TICKET_TRANSITIONS[from];
|
|
30
|
+
return Array.isArray(allowed) && allowed.includes(to);
|
|
31
|
+
}
|
|
32
|
+
/** The states a ticket may legally move to right now. Drives the admin's buttons. */
|
|
33
|
+
function allowedSupportTicketTransitions(from) {
|
|
34
|
+
var _a;
|
|
35
|
+
return (_a = support_ticket_status_enum_1.SUPPORT_TICKET_TRANSITIONS[from]) !== null && _a !== void 0 ? _a : [];
|
|
36
|
+
}
|
|
37
|
+
function isTerminalSupportTicketStatus(status) {
|
|
38
|
+
return support_ticket_status_enum_1.TERMINAL_SUPPORT_TICKET_STATUSES.includes(status);
|
|
39
|
+
}
|
|
40
|
+
function isActiveSupportTicketStatus(status) {
|
|
41
|
+
return support_ticket_status_enum_1.ACTIVE_SUPPORT_TICKET_STATUSES.includes(status);
|
|
42
|
+
}
|
|
43
|
+
/** True while an SLA clock should be stopped but may still resume. */
|
|
44
|
+
function isSlaPausedStatus(status) {
|
|
45
|
+
return support_ticket_status_enum_1.SLA_PAUSED_SUPPORT_TICKET_STATUSES.includes(status);
|
|
46
|
+
}
|
|
47
|
+
/** True once the clocks stop for good. */
|
|
48
|
+
function isSlaStoppedStatus(status) {
|
|
49
|
+
return support_ticket_status_enum_1.SLA_STOPPED_SUPPORT_TICKET_STATUSES.includes(status);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Whether a customer may reply on a ticket in this state.
|
|
53
|
+
*
|
|
54
|
+
* A CANCELLED ticket is closed to further conversation; everything else, CLOSED
|
|
55
|
+
* included, accepts a reply - and a reply to a closed ticket reopens it, which
|
|
56
|
+
* is what a customer expects and what stops them raising a duplicate.
|
|
57
|
+
*/
|
|
58
|
+
function customerMayReply(status) {
|
|
59
|
+
return status !== support_ticket_status_enum_1.SupportTicketStatus.CANCELLED;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The state a customer reply should move a ticket into, or null to leave it.
|
|
63
|
+
*
|
|
64
|
+
* CLOSED becomes REOPENED, which is counted. RESOLVED goes back to IN_PROGRESS,
|
|
65
|
+
* which is not - the ticket was never finished from the customer's point of
|
|
66
|
+
* view, and calling that a reopen would inflate the reopen rate with tickets
|
|
67
|
+
* that simply were not fixed yet. WAITING_ON_CUSTOMER becomes IN_PROGRESS,
|
|
68
|
+
* because the wait is over.
|
|
69
|
+
*/
|
|
70
|
+
function statusAfterCustomerReply(status) {
|
|
71
|
+
switch (status) {
|
|
72
|
+
case support_ticket_status_enum_1.SupportTicketStatus.CLOSED:
|
|
73
|
+
return support_ticket_status_enum_1.SupportTicketStatus.REOPENED;
|
|
74
|
+
case support_ticket_status_enum_1.SupportTicketStatus.RESOLVED:
|
|
75
|
+
case support_ticket_status_enum_1.SupportTicketStatus.WAITING_ON_CUSTOMER:
|
|
76
|
+
return support_ticket_status_enum_1.SupportTicketStatus.IN_PROGRESS;
|
|
77
|
+
default:
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/** Whether a piece of feedback may move from one state to another. */
|
|
82
|
+
function canTransitionCustomerFeedback(from, to) {
|
|
83
|
+
if (from === to)
|
|
84
|
+
return true;
|
|
85
|
+
const allowed = support_feedback_enum_1.CUSTOMER_FEEDBACK_TRANSITIONS[from];
|
|
86
|
+
return Array.isArray(allowed) && allowed.includes(to);
|
|
87
|
+
}
|
|
88
|
+
/** The states a piece of feedback may legally move to right now. */
|
|
89
|
+
function allowedCustomerFeedbackTransitions(from) {
|
|
90
|
+
var _a;
|
|
91
|
+
return (_a = support_feedback_enum_1.CUSTOMER_FEEDBACK_TRANSITIONS[from]) !== null && _a !== void 0 ? _a : [];
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=support-status.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support-status.util.js","sourceRoot":"","sources":["../../../../../src/modules/support/utils/support-status.util.ts"],"names":[],"mappings":";;AAwBA,gEAOC;AAGD,0EAIC;AAED,sEAEC;AAED,kEAEC;AAGD,8CAEC;AAGD,gDAEC;AASD,4CAEC;AAWD,4DAYC;AAGD,sEAOC;AAGD,gFAIC;AA3GD,0EAGwC;AACxC,oFAO6C;AAE7C;;;;;;;;;;GAUG;AACH,SAAgB,0BAA0B,CACtC,IAAyB,EACzB,EAAuB;IAEvB,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,uDAA0B,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,qFAAqF;AACrF,SAAgB,+BAA+B,CAC3C,IAAyB;;IAEzB,OAAO,MAAA,uDAA0B,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;AAClD,CAAC;AAED,SAAgB,6BAA6B,CAAC,MAA2B;IACrE,OAAO,6DAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,2BAA2B,CAAC,MAA2B;IACnE,OAAO,2DAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,sEAAsE;AACtE,SAAgB,iBAAiB,CAAC,MAA2B;IACzD,OAAO,+DAAkC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,0CAA0C;AAC1C,SAAgB,kBAAkB,CAAC,MAA2B;IAC1D,OAAO,gEAAmC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,MAA2B;IACxD,OAAO,MAAM,KAAK,gDAAmB,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CACpC,MAA2B;IAE3B,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,gDAAmB,CAAC,MAAM;YAC3B,OAAO,gDAAmB,CAAC,QAAQ,CAAC;QACxC,KAAK,gDAAmB,CAAC,QAAQ,CAAC;QAClC,KAAK,gDAAmB,CAAC,mBAAmB;YACxC,OAAO,gDAAmB,CAAC,WAAW,CAAC;QAC3C;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,SAAgB,6BAA6B,CACzC,IAA4B,EAC5B,EAA0B;IAE1B,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,qDAA6B,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,oEAAoE;AACpE,SAAgB,kCAAkC,CAC9C,IAA4B;;IAE5B,OAAO,MAAA,qDAA6B,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.classifySupportHttpStatus = classifySupportHttpStatus;
|
|
4
|
+
exports.isPermanentSupportSyncFailure = isPermanentSupportSyncFailure;
|
|
5
|
+
exports.computeSupportRetryDelaySeconds = computeSupportRetryDelaySeconds;
|
|
6
|
+
exports.computeSupportNextAttemptAt = computeSupportNextAttemptAt;
|
|
7
|
+
exports.fingerprintSupportPayload = fingerprintSupportPayload;
|
|
8
|
+
exports.isSupportCircuitOpen = isSupportCircuitOpen;
|
|
9
|
+
exports.nextSupportCircuitState = nextSupportCircuitState;
|
|
10
|
+
const support_defaults_const_1 = require("../constants/support-defaults.const");
|
|
11
|
+
const support_sync_enum_1 = require("../enums/support-sync.enum");
|
|
12
|
+
/**
|
|
13
|
+
* Translate a helpdesk HTTP status into the shared failure taxonomy.
|
|
14
|
+
*
|
|
15
|
+
* The single place the retry policy is decided, because "should we call the
|
|
16
|
+
* helpdesk again?" must not be answered differently by the Zammad adapter and
|
|
17
|
+
* the Freshdesk one. Anything unrecognised is TRANSIENT: a support message that
|
|
18
|
+
* arrives late is recoverable, one dropped because an unfamiliar status looked
|
|
19
|
+
* fatal is not.
|
|
20
|
+
*
|
|
21
|
+
* The one place that reasoning inverts is a 2xx nobody could parse. The
|
|
22
|
+
* provider accepted the request, so re-sending would create a second ticket or
|
|
23
|
+
* show the customer the same reply twice - see UNREADABLE_SUCCESS, which the
|
|
24
|
+
* adapter raises directly rather than through this function.
|
|
25
|
+
*/
|
|
26
|
+
function classifySupportHttpStatus(status) {
|
|
27
|
+
if (status === undefined)
|
|
28
|
+
return support_sync_enum_1.SupportSyncFailureReason.TIMEOUT;
|
|
29
|
+
if (status >= 200 && status < 300)
|
|
30
|
+
return support_sync_enum_1.SupportSyncFailureReason.UNREADABLE_SUCCESS;
|
|
31
|
+
if (status === 400 || status === 422)
|
|
32
|
+
return support_sync_enum_1.SupportSyncFailureReason.INVALID_PAYLOAD;
|
|
33
|
+
if (status === 401)
|
|
34
|
+
return support_sync_enum_1.SupportSyncFailureReason.AUTHENTICATION_FAILED;
|
|
35
|
+
if (status === 403)
|
|
36
|
+
return support_sync_enum_1.SupportSyncFailureReason.AUTHORIZATION_FAILED;
|
|
37
|
+
// 404 is TRANSIENT on purpose. A genuinely wrong path exhausts its attempts
|
|
38
|
+
// in a few minutes and costs nothing; a 404 from an ingress mid-deploy is
|
|
39
|
+
// common, and treating that as permanent would silently drop a reply the
|
|
40
|
+
// customer is waiting for.
|
|
41
|
+
if (status === 404)
|
|
42
|
+
return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_UNAVAILABLE;
|
|
43
|
+
if (status === 409)
|
|
44
|
+
return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_REJECTED;
|
|
45
|
+
if (status === 429)
|
|
46
|
+
return support_sync_enum_1.SupportSyncFailureReason.RATE_LIMITED;
|
|
47
|
+
if (status >= 500)
|
|
48
|
+
return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_UNAVAILABLE;
|
|
49
|
+
if (status >= 400)
|
|
50
|
+
return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_REJECTED;
|
|
51
|
+
return support_sync_enum_1.SupportSyncFailureReason.UNKNOWN;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Whether a failure can ever succeed on a retry.
|
|
55
|
+
*
|
|
56
|
+
* AUTHENTICATION_FAILED is deliberately NOT permanent: a rotated credential
|
|
57
|
+
* that has not propagated to every pod yet fails this way, and refusing to try
|
|
58
|
+
* again would strand every queued reply until somebody noticed. It is capped by
|
|
59
|
+
* `maxAttempts` like anything else.
|
|
60
|
+
*/
|
|
61
|
+
function isPermanentSupportSyncFailure(reason) {
|
|
62
|
+
return support_sync_enum_1.PERMANENT_SUPPORT_SYNC_FAILURE_REASONS.includes(reason);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* When to try again, with exponential backoff and jitter.
|
|
66
|
+
*
|
|
67
|
+
* The jitter matters more than it looks: when a helpdesk comes back after an
|
|
68
|
+
* outage, every queued row is due at once, and a synchronized stampede is how a
|
|
69
|
+
* recovering server is knocked over a second time.
|
|
70
|
+
*
|
|
71
|
+
* `randomFraction` is injected rather than read from Math.random so the
|
|
72
|
+
* function stays pure and its tests stay deterministic.
|
|
73
|
+
*/
|
|
74
|
+
function computeSupportRetryDelaySeconds(attempts, options = {}) {
|
|
75
|
+
var _a, _b, _c, _d;
|
|
76
|
+
const base = (_a = options.baseSeconds) !== null && _a !== void 0 ? _a : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.RETRY_BASE_SECONDS;
|
|
77
|
+
const max = (_b = options.maxSeconds) !== null && _b !== void 0 ? _b : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.RETRY_MAX_SECONDS;
|
|
78
|
+
const jitterRatio = (_c = options.jitterRatio) !== null && _c !== void 0 ? _c : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.RETRY_JITTER_RATIO;
|
|
79
|
+
const randomFraction = (_d = options.randomFraction) !== null && _d !== void 0 ? _d : 0;
|
|
80
|
+
const exponent = Math.max(0, attempts - 1);
|
|
81
|
+
const raw = base * Math.pow(2, Math.min(exponent, 16));
|
|
82
|
+
let delay = Math.min(max, raw);
|
|
83
|
+
// A provider that says when to come back is obeyed, so long as it is not
|
|
84
|
+
// asking for longer than the ceiling.
|
|
85
|
+
if (options.retryAfterSeconds != null && options.retryAfterSeconds > 0) {
|
|
86
|
+
delay = Math.min(max, Math.max(delay, options.retryAfterSeconds));
|
|
87
|
+
}
|
|
88
|
+
const jitter = delay * jitterRatio * randomFraction;
|
|
89
|
+
return Math.round(delay + jitter);
|
|
90
|
+
}
|
|
91
|
+
/** The instant of the next attempt. */
|
|
92
|
+
function computeSupportNextAttemptAt(now, attempts, options) {
|
|
93
|
+
return new Date(now.getTime() + computeSupportRetryDelaySeconds(attempts, options) * 1000);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* A stable fingerprint of an outbound payload.
|
|
97
|
+
*
|
|
98
|
+
* Deliberately not cryptographic. It exists to answer "is this the same request
|
|
99
|
+
* we already sent?" and to let a reconciliation job tell "never sent" from
|
|
100
|
+
* "sent and did not take" - neither of which is a security decision. Using a
|
|
101
|
+
* real digest here would pull a Node-only dependency into a package the
|
|
102
|
+
* frontend build also consumes.
|
|
103
|
+
*/
|
|
104
|
+
function fingerprintSupportPayload(payload) {
|
|
105
|
+
const serialized = stableStringify(payload);
|
|
106
|
+
let hash = 5381;
|
|
107
|
+
for (let index = 0; index < serialized.length; index += 1) {
|
|
108
|
+
hash = ((hash << 5) + hash + serialized.charCodeAt(index)) | 0;
|
|
109
|
+
}
|
|
110
|
+
return `${(hash >>> 0).toString(16)}-${serialized.length.toString(16)}`;
|
|
111
|
+
}
|
|
112
|
+
/** JSON with object keys in a fixed order, so two equal payloads fingerprint alike. */
|
|
113
|
+
function stableStringify(value) {
|
|
114
|
+
var _a;
|
|
115
|
+
if (value === null || typeof value !== 'object')
|
|
116
|
+
return (_a = JSON.stringify(value)) !== null && _a !== void 0 ? _a : 'null';
|
|
117
|
+
if (Array.isArray(value))
|
|
118
|
+
return `[${value.map(stableStringify).join(',')}]`;
|
|
119
|
+
const source = value;
|
|
120
|
+
const keys = Object.keys(source).sort();
|
|
121
|
+
return `{${keys.map((key) => `${JSON.stringify(key)}:${stableStringify(source[key])}`).join(',')}}`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Whether an outbound call may proceed.
|
|
125
|
+
*
|
|
126
|
+
* The breaker protects the helpdesk and this service's own worker from
|
|
127
|
+
* hammering a dead endpoint; it never causes data loss, because a call refused
|
|
128
|
+
* by an open breaker leaves its row PENDING with a CIRCUIT_OPEN reason and is
|
|
129
|
+
* retried when the breaker closes.
|
|
130
|
+
*/
|
|
131
|
+
function isSupportCircuitOpen(state, now) {
|
|
132
|
+
if (!(state === null || state === void 0 ? void 0 : state.openUntil))
|
|
133
|
+
return false;
|
|
134
|
+
return new Date(state.openUntil).getTime() > now.getTime();
|
|
135
|
+
}
|
|
136
|
+
/** The breaker state after one outcome. */
|
|
137
|
+
function nextSupportCircuitState(state, outcome, now, options = {}) {
|
|
138
|
+
var _a, _b, _c;
|
|
139
|
+
const threshold = (_a = options.failureThreshold) !== null && _a !== void 0 ? _a : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.CIRCUIT_FAILURE_THRESHOLD;
|
|
140
|
+
const openSeconds = (_b = options.openSeconds) !== null && _b !== void 0 ? _b : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.CIRCUIT_OPEN_SECONDS;
|
|
141
|
+
if (outcome === 'success')
|
|
142
|
+
return { consecutiveFailures: 0, openUntil: null };
|
|
143
|
+
const consecutiveFailures = ((_c = state === null || state === void 0 ? void 0 : state.consecutiveFailures) !== null && _c !== void 0 ? _c : 0) + 1;
|
|
144
|
+
if (consecutiveFailures < threshold)
|
|
145
|
+
return { consecutiveFailures, openUntil: null };
|
|
146
|
+
return {
|
|
147
|
+
consecutiveFailures,
|
|
148
|
+
openUntil: new Date(now.getTime() + openSeconds * 1000).toISOString(),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=support-sync.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support-sync.util.js","sourceRoot":"","sources":["../../../../../src/modules/support/utils/support-sync.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatSupportTicketNumber = formatSupportTicketNumber;
|
|
4
|
+
exports.parseSupportTicketNumber = parseSupportTicketNumber;
|
|
5
|
+
exports.looksLikeSupportTicketNumber = looksLikeSupportTicketNumber;
|
|
6
|
+
const support_defaults_const_1 = require("../constants/support-defaults.const");
|
|
7
|
+
/**
|
|
8
|
+
* Render a ticket number: SUP-KE-2026-000123.
|
|
9
|
+
*
|
|
10
|
+
* Human-readable and safe to read out over the phone, which is the whole point
|
|
11
|
+
* of it existing alongside the uuid primary key. It is never the primary key:
|
|
12
|
+
* it embeds a country and a year, and anything that embeds business meaning
|
|
13
|
+
* will eventually need changing.
|
|
14
|
+
*
|
|
15
|
+
* The sequence is allocated per (country, year) by the database, so this
|
|
16
|
+
* function only formats - it never decides what the next number is.
|
|
17
|
+
*/
|
|
18
|
+
function formatSupportTicketNumber(countryCode, year, sequence) {
|
|
19
|
+
const padded = String(Math.max(0, Math.trunc(sequence))).padStart(support_defaults_const_1.SUPPORT_TICKET_NUMBER_SEQUENCE_WIDTH, '0');
|
|
20
|
+
return `${support_defaults_const_1.SUPPORT_TICKET_NUMBER_PREFIX}-${countryCode}-${year}-${padded}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read a ticket number back, for search.
|
|
24
|
+
*
|
|
25
|
+
* Returns null rather than throwing on anything unrecognised: this runs on a
|
|
26
|
+
* search box, where the input is whatever somebody pasted, and a 500 from a bad
|
|
27
|
+
* paste is a worse answer than no results.
|
|
28
|
+
*
|
|
29
|
+
* A sequence longer than the configured width still parses - the width is a
|
|
30
|
+
* display minimum, and refusing to find ticket 1,000,000 because it has seven
|
|
31
|
+
* digits would be a bug that only appears once it is too late.
|
|
32
|
+
*/
|
|
33
|
+
function parseSupportTicketNumber(value) {
|
|
34
|
+
if (value == null)
|
|
35
|
+
return null;
|
|
36
|
+
const raw = String(value).trim().toUpperCase();
|
|
37
|
+
const match = /^([A-Z]{2,5})-([A-Z]{2})-(\d{4})-(\d{1,12})$/.exec(raw);
|
|
38
|
+
if (!match)
|
|
39
|
+
return null;
|
|
40
|
+
const [, prefix, country, year, sequence] = match;
|
|
41
|
+
if (prefix !== support_defaults_const_1.SUPPORT_TICKET_NUMBER_PREFIX)
|
|
42
|
+
return null;
|
|
43
|
+
return {
|
|
44
|
+
prefix,
|
|
45
|
+
countryCode: country,
|
|
46
|
+
year: Number(year),
|
|
47
|
+
sequence: Number(sequence),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Whether a search term looks like somebody typing a ticket number.
|
|
52
|
+
*
|
|
53
|
+
* Used to route a search straight at the ticket-number index instead of running
|
|
54
|
+
* a full-text scan for a string that can only ever match one row.
|
|
55
|
+
*/
|
|
56
|
+
function looksLikeSupportTicketNumber(value) {
|
|
57
|
+
if (value == null)
|
|
58
|
+
return false;
|
|
59
|
+
return /^SUP-/i.test(String(value).trim());
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=support-ticket-number.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support-ticket-number.util.js","sourceRoot":"","sources":["../../../../../src/modules/support/utils/support-ticket-number.util.ts"],"names":[],"mappings":";;AAyBA,8DAUC;AAaD,4DAeC;AAQD,oEAGC;AAzED,gFAG6C;AAU7C;;;;;;;;;;GAUG;AACH,SAAgB,yBAAyB,CACrC,WAAwB,EACxB,IAAY,EACZ,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC7D,6DAAoC,EACpC,GAAG,CACN,CAAC;IACF,OAAO,GAAG,qDAA4B,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,wBAAwB,CAAC,KAAgC;IACrE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IAClD,IAAI,MAAM,KAAK,qDAA4B;QAAE,OAAO,IAAI,CAAC;IAEzD,OAAO;QACH,MAAM;QACN,WAAW,EAAE,OAAsB;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;KAC7B,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B,CAAC,KAAgC;IACzE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export * from './modules/entitlement/index';
|
|
|
24
24
|
export * from './modules/alert-dispatch/index';
|
|
25
25
|
export * from './modules/system-user/index';
|
|
26
26
|
export * from './modules/partner/index';
|
|
27
|
+
export * from './modules/support/index';
|
|
27
28
|
// Interfaces
|
|
28
29
|
export * from './interfaces/server-message';
|
|
29
30
|
export * from './interfaces/i-request-with-user';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AAExC,YAAY;AACZ,cAAc,0BAA0B,CAAC;AAEzC,QAAQ;AACR,cAAc,eAAe,CAAC;AAE9B,YAAY;AACZ,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uDAAuD,CAAC;AAEtE,aAAa;AACb,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAExC,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AAExC,YAAY;AACZ,cAAc,0BAA0B,CAAC;AAEzC,QAAQ;AACR,cAAc,eAAe,CAAC;AAE9B,YAAY;AACZ,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uDAAuD,CAAC;AAEtE,aAAa;AACb,cAAc,oBAAoB,CAAC"}
|
package/dist/esm/kafka/topics.js
CHANGED
|
@@ -69,5 +69,31 @@ export const KAFKA_TOPICS = {
|
|
|
69
69
|
// Third-party partner dispatch (producer: clarion-partner-services) - versioned.
|
|
70
70
|
PARTNER_DISPATCH_CREATED: 'partner.dispatch.created.v1',
|
|
71
71
|
PARTNER_DISPATCH_STATUS_CHANGED: 'partner.dispatch.status-changed.v1',
|
|
72
|
+
// Support tickets and customer feedback (producer: clarion-support) - versioned.
|
|
73
|
+
// Every payload is secret-free: identifiers, states and timestamps only. A
|
|
74
|
+
// support message body never travels on a topic, because a topic is read by
|
|
75
|
+
// consumers nobody enumerated and a support message is exactly the kind of
|
|
76
|
+
// thing that turns out to contain a password somebody pasted in.
|
|
77
|
+
SUPPORT_TICKET_CREATED: 'support.ticket.created.v1',
|
|
78
|
+
SUPPORT_TICKET_UPDATED: 'support.ticket.updated.v1',
|
|
79
|
+
SUPPORT_TICKET_ASSIGNED: 'support.ticket.assigned.v1',
|
|
80
|
+
SUPPORT_TICKET_STATUS_CHANGED: 'support.ticket.status-changed.v1',
|
|
81
|
+
SUPPORT_TICKET_PRIORITY_CHANGED: 'support.ticket.priority-changed.v1',
|
|
82
|
+
SUPPORT_TICKET_MESSAGE_CREATED: 'support.ticket.message-created.v1',
|
|
83
|
+
SUPPORT_TICKET_CUSTOMER_REPLIED: 'support.ticket.customer-replied.v1',
|
|
84
|
+
SUPPORT_TICKET_AGENT_REPLIED: 'support.ticket.agent-replied.v1',
|
|
85
|
+
SUPPORT_TICKET_RESOLVED: 'support.ticket.resolved.v1',
|
|
86
|
+
SUPPORT_TICKET_CLOSED: 'support.ticket.closed.v1',
|
|
87
|
+
SUPPORT_TICKET_REOPENED: 'support.ticket.reopened.v1',
|
|
88
|
+
SUPPORT_TICKET_SLA_WARNING: 'support.ticket.sla-warning.v1',
|
|
89
|
+
SUPPORT_TICKET_SLA_BREACHED: 'support.ticket.sla-breached.v1',
|
|
90
|
+
SUPPORT_FEEDBACK_CREATED: 'support.feedback.created.v1',
|
|
91
|
+
SUPPORT_FEEDBACK_UPDATED: 'support.feedback.updated.v1',
|
|
92
|
+
SUPPORT_FEEDBACK_REVIEWED: 'support.feedback.reviewed.v1',
|
|
93
|
+
SUPPORT_FEEDBACK_RESPONDED: 'support.feedback.responded.v1',
|
|
94
|
+
SUPPORT_FEEDBACK_CONVERTED_TO_TICKET: 'support.feedback.converted-to-ticket.v1',
|
|
95
|
+
SUPPORT_FEEDBACK_RATING_SUBMITTED: 'support.feedback.rating-submitted.v1',
|
|
96
|
+
SUPPORT_PROVIDER_SYNC_FAILED: 'support.provider.sync-failed.v1',
|
|
97
|
+
SUPPORT_PROVIDER_SYNC_RECOVERED: 'support.provider.sync-recovered.v1',
|
|
72
98
|
};
|
|
73
99
|
//# sourceMappingURL=topics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,OAAO;IACP,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM;IACN,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,MAAM;IACN,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,yCAAyC,EAAE,2CAA2C;IACtF,OAAO;IACP,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,iEAAiE;IACjE,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wEAAwE;IACxE,+DAA+D;IAC/D,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,wCAAwC,EACpC,sDAAsD;IAC1D,gCAAgC,EAAE,8CAA8C;IAChF,iFAAiF;IACjF,wBAAwB,EAAE,6BAA6B;IACvD,+BAA+B,EAAE,oCAAoC;CACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,5 +15,6 @@ export const SERVICE_CONSTS = {
|
|
|
15
15
|
NEWSFEED_SERVICE: { name: 'newsfeed-service', port: 3015 },
|
|
16
16
|
RESPONSE_TRACKING_SERVICE: { name: 'response-tracking-service', port: 3016 },
|
|
17
17
|
PARTNER_SERVICE: { name: 'partner-service', port: 3017 },
|
|
18
|
+
SUPPORT_SERVICE: { name: 'support-service', port: 3018 },
|
|
18
19
|
};
|
|
19
20
|
//# sourceMappingURL=service.const.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.const.js","sourceRoot":"","sources":["../../../../../src/modules/common/constants/service.const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;IACtD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,yBAAyB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;CAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"service.const.js","sourceRoot":"","sources":["../../../../../src/modules/common/constants/service.const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;IACtD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,yBAAyB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;CAC3D,CAAC"}
|
|
@@ -26,6 +26,32 @@ export const PERMISSIONS_DATA = [
|
|
|
26
26
|
PermissionActions.MANAGE_PARTNER_MEMBERSHIP
|
|
27
27
|
]
|
|
28
28
|
},
|
|
29
|
+
{
|
|
30
|
+
module: PermissionsModule.SUPPORT,
|
|
31
|
+
actions: [
|
|
32
|
+
PermissionActions.CREATE_SUPPORT_TICKET,
|
|
33
|
+
PermissionActions.READ_SUPPORT_TICKET,
|
|
34
|
+
PermissionActions.UPDATE_SUPPORT_TICKET,
|
|
35
|
+
PermissionActions.ASSIGN_SUPPORT_TICKET,
|
|
36
|
+
PermissionActions.REPLY_SUPPORT_TICKET,
|
|
37
|
+
PermissionActions.NOTE_SUPPORT_TICKET,
|
|
38
|
+
PermissionActions.CHANGE_STATUS_SUPPORT_TICKET,
|
|
39
|
+
PermissionActions.CHANGE_PRIORITY_SUPPORT_TICKET,
|
|
40
|
+
PermissionActions.CLOSE_SUPPORT_TICKET,
|
|
41
|
+
PermissionActions.REOPEN_SUPPORT_TICKET,
|
|
42
|
+
PermissionActions.READ_SUPPORT_FEEDBACK,
|
|
43
|
+
PermissionActions.REVIEW_SUPPORT_FEEDBACK,
|
|
44
|
+
PermissionActions.RESPOND_SUPPORT_FEEDBACK,
|
|
45
|
+
PermissionActions.CONVERT_SUPPORT_FEEDBACK,
|
|
46
|
+
PermissionActions.MANAGE_SUPPORT_QUEUE,
|
|
47
|
+
PermissionActions.MANAGE_SUPPORT_TEAM,
|
|
48
|
+
PermissionActions.MANAGE_SUPPORT_SLA,
|
|
49
|
+
PermissionActions.MANAGE_SUPPORT_CONFIGURATION,
|
|
50
|
+
PermissionActions.READ_SUPPORT_REPORT,
|
|
51
|
+
PermissionActions.READ_SUPPORT_SYNC,
|
|
52
|
+
PermissionActions.MANAGE_SUPPORT_SYNC
|
|
53
|
+
]
|
|
54
|
+
},
|
|
29
55
|
{
|
|
30
56
|
module: PermissionsModule.CONTROL_CENTRE,
|
|
31
57
|
actions: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.data.js","sourceRoot":"","sources":["../../../../../src/modules/permission/data/permissions.data.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permissions.data.js","sourceRoot":"","sources":["../../../../../src/modules/permission/data/permissions.data.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,46 @@ export var PermissionActions;
|
|
|
32
32
|
// URL and a coverage rule.
|
|
33
33
|
PermissionActions["READ_PARTNER_MEMBERSHIP"] = "read:partner-membership";
|
|
34
34
|
PermissionActions["MANAGE_PARTNER_MEMBERSHIP"] = "manage:partner-membership";
|
|
35
|
+
// Support: working a ticket. Deliberately fine-grained, because the person
|
|
36
|
+
// allowed to reply to a customer is not always the person allowed to
|
|
37
|
+
// reassign their colleague's work or to close a ticket on their behalf.
|
|
38
|
+
//
|
|
39
|
+
// NOTE ON NAMING: the platform convention is verb:resource, so these read
|
|
40
|
+
// CREATE_SUPPORT_TICKET / 'create:support-ticket' rather than the
|
|
41
|
+
// SUPPORT_TICKET_CREATE form used in some external specifications. The
|
|
42
|
+
// existing convention wins - PermissionGuard matches on the string value,
|
|
43
|
+
// and one inconsistent family would be permanently confusing.
|
|
44
|
+
PermissionActions["CREATE_SUPPORT_TICKET"] = "create:support-ticket";
|
|
45
|
+
PermissionActions["READ_SUPPORT_TICKET"] = "read:support-ticket";
|
|
46
|
+
PermissionActions["UPDATE_SUPPORT_TICKET"] = "update:support-ticket";
|
|
47
|
+
PermissionActions["ASSIGN_SUPPORT_TICKET"] = "assign:support-ticket";
|
|
48
|
+
PermissionActions["REPLY_SUPPORT_TICKET"] = "reply:support-ticket";
|
|
49
|
+
// Writing an internal note is its own permission: notes are agent-to-agent
|
|
50
|
+
// and are never shown to a customer, so the ability to write one is the
|
|
51
|
+
// ability to write in a place the customer cannot see.
|
|
52
|
+
PermissionActions["NOTE_SUPPORT_TICKET"] = "note:support-ticket";
|
|
53
|
+
PermissionActions["CHANGE_STATUS_SUPPORT_TICKET"] = "change-status:support-ticket";
|
|
54
|
+
PermissionActions["CHANGE_PRIORITY_SUPPORT_TICKET"] = "change-priority:support-ticket";
|
|
55
|
+
PermissionActions["CLOSE_SUPPORT_TICKET"] = "close:support-ticket";
|
|
56
|
+
PermissionActions["REOPEN_SUPPORT_TICKET"] = "reopen:support-ticket";
|
|
57
|
+
// Support: customer feedback, which is a separate domain with separate
|
|
58
|
+
// permissions - reading what customers think of the service is a different
|
|
59
|
+
// grant from working their support tickets.
|
|
60
|
+
PermissionActions["READ_SUPPORT_FEEDBACK"] = "read:support-feedback";
|
|
61
|
+
PermissionActions["REVIEW_SUPPORT_FEEDBACK"] = "review:support-feedback";
|
|
62
|
+
PermissionActions["RESPOND_SUPPORT_FEEDBACK"] = "respond:support-feedback";
|
|
63
|
+
PermissionActions["CONVERT_SUPPORT_FEEDBACK"] = "convert:support-feedback";
|
|
64
|
+
// Support: configuration and operations.
|
|
65
|
+
PermissionActions["MANAGE_SUPPORT_QUEUE"] = "manage:support-queue";
|
|
66
|
+
PermissionActions["MANAGE_SUPPORT_TEAM"] = "manage:support-team";
|
|
67
|
+
PermissionActions["MANAGE_SUPPORT_SLA"] = "manage:support-sla";
|
|
68
|
+
PermissionActions["MANAGE_SUPPORT_CONFIGURATION"] = "manage:support-configuration";
|
|
69
|
+
PermissionActions["READ_SUPPORT_REPORT"] = "read:support-report";
|
|
70
|
+
PermissionActions["READ_SUPPORT_SYNC"] = "read:support-sync";
|
|
71
|
+
// Retrying or reconciling a synchronization row re-contacts the helpdesk and
|
|
72
|
+
// can re-send a customer-visible reply, so it is kept apart from reading the
|
|
73
|
+
// dashboard that shows the failures.
|
|
74
|
+
PermissionActions["MANAGE_SUPPORT_SYNC"] = "manage:support-sync";
|
|
35
75
|
// Module: ControlCentre
|
|
36
76
|
PermissionActions["CREATE_CONTROL_CENTRE"] = "create:control-centre";
|
|
37
77
|
PermissionActions["READ_CONTROL_CENTRE"] = "read:control-centre";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,6 @@ export var PermissionsModule;
|
|
|
9
9
|
PermissionsModule["RESPONSE_UNIT"] = "Response Unit";
|
|
10
10
|
PermissionsModule["BILLING"] = "Billing";
|
|
11
11
|
PermissionsModule["NEWSFEED"] = "Newsfeed";
|
|
12
|
+
PermissionsModule["SUPPORT"] = "Support";
|
|
12
13
|
})(PermissionsModule || (PermissionsModule = {}));
|
|
13
14
|
//# sourceMappingURL=permissions-module.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-module.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-module.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"permissions-module.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-module.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAWX;AAXD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;AACvB,CAAC,EAXW,iBAAiB,KAAjB,iBAAiB,QAW5B"}
|