@oneuptime/common 10.3.0 → 10.4.1
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/Models/DatabaseModels/IncomingCallPolicyLabelRule.ts +522 -0
- package/Models/DatabaseModels/IncomingCallPolicyOwnerRule.ts +606 -0
- package/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.ts +508 -0
- package/Models/DatabaseModels/IncomingCallPolicyOwnerUser.ts +507 -0
- package/Models/DatabaseModels/Index.ts +24 -0
- package/Models/DatabaseModels/OnCallDutyPolicyLabelRule.ts +522 -0
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.ts +606 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.ts +522 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.ts +606 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.ts +508 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.ts +507 -0
- package/Server/API/TelemetryAPI.ts +69 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.ts +153 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.ts +823 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +197 -0
- package/Server/Services/IncomingCallPolicyLabelRuleService.ts +10 -0
- package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +220 -0
- package/Server/Services/IncomingCallPolicyOwnerRuleService.ts +10 -0
- package/Server/Services/IncomingCallPolicyOwnerTeamService.ts +9 -0
- package/Server/Services/IncomingCallPolicyOwnerUserService.ts +9 -0
- package/Server/Services/IncomingCallPolicyService.ts +35 -0
- package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +191 -0
- package/Server/Services/OnCallDutyPolicyLabelRuleService.ts +10 -0
- package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +214 -0
- package/Server/Services/OnCallDutyPolicyOwnerRuleService.ts +10 -0
- package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +200 -0
- package/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.ts +10 -0
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +223 -0
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.ts +10 -0
- package/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.ts +9 -0
- package/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.ts +9 -0
- package/Server/Services/OnCallDutyPolicyScheduleService.ts +32 -1
- package/Server/Services/OnCallDutyPolicyService.ts +21 -0
- package/Server/Services/ProfileAggregationService.ts +119 -0
- package/Server/Types/Database/Permissions/QueryPermission.ts +36 -0
- package/Types/Monitor/MonitorStep.ts +66 -0
- package/Types/Permission.ts +475 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +532 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +615 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js +524 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js +523 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +22 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +532 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +615 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +532 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +615 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js +524 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js +523 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js.map +1 -0
- package/build/dist/Server/API/TelemetryAPI.js +34 -0
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.js +58 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.js +292 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +158 -0
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleService.js +9 -0
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +181 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleService.js +9 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerUserService.js +9 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyService.js +38 -0
- package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +157 -0
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleService.js +9 -0
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +180 -0
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleService.js +9 -0
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +158 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.js +9 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +181 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.js +9 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.js +9 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +21 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +17 -3
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/ProfileAggregationService.js +80 -0
- package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/QueryPermission.js +25 -0
- package/build/dist/Server/Types/Database/Permissions/QueryPermission.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +42 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Permission.js +415 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import Label from "../../Models/DatabaseModels/Label";
|
|
11
|
+
import IncomingCallPolicy from "../../Models/DatabaseModels/IncomingCallPolicy";
|
|
12
|
+
import IncomingCallPolicyLabelRuleService from "./IncomingCallPolicyLabelRuleService";
|
|
13
|
+
import IncomingCallPolicyService from "./IncomingCallPolicyService";
|
|
14
|
+
import ObjectID from "../../Types/ObjectID";
|
|
15
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
|
+
import logger from "../Utils/Logger";
|
|
17
|
+
class IncomingCallPolicyLabelRuleEngineServiceClass {
|
|
18
|
+
async applyRulesToIncomingCallPolicy(policy) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
if (!policy.id || !policy.projectId) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const rules = await IncomingCallPolicyLabelRuleService.findBy({
|
|
25
|
+
query: {
|
|
26
|
+
projectId: policy.projectId,
|
|
27
|
+
isEnabled: true,
|
|
28
|
+
},
|
|
29
|
+
props: { isRoot: true },
|
|
30
|
+
select: {
|
|
31
|
+
_id: true,
|
|
32
|
+
name: true,
|
|
33
|
+
incomingCallPolicyLabels: { _id: true },
|
|
34
|
+
incomingCallPolicyNamePattern: true,
|
|
35
|
+
incomingCallPolicyDescriptionPattern: true,
|
|
36
|
+
labelsToAdd: { _id: true },
|
|
37
|
+
},
|
|
38
|
+
limit: 100,
|
|
39
|
+
skip: 0,
|
|
40
|
+
});
|
|
41
|
+
if (rules.length === 0) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const policyWithDetails = await IncomingCallPolicyService.findOneById({
|
|
45
|
+
id: policy.id,
|
|
46
|
+
select: {
|
|
47
|
+
name: true,
|
|
48
|
+
description: true,
|
|
49
|
+
labels: { _id: true },
|
|
50
|
+
},
|
|
51
|
+
props: { isRoot: true },
|
|
52
|
+
});
|
|
53
|
+
if (!policyWithDetails) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const labelIdsToAdd = new Set();
|
|
57
|
+
for (const rule of rules) {
|
|
58
|
+
const matches = this.doesPolicyMatchRule(policyWithDetails, rule);
|
|
59
|
+
if (!matches) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
for (const label of rule.labelsToAdd || []) {
|
|
63
|
+
if (label.id) {
|
|
64
|
+
labelIdsToAdd.add(label.id.toString());
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (labelIdsToAdd.size === 0) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const existingLabelIds = new Set((policyWithDetails.labels || [])
|
|
72
|
+
.map((l) => {
|
|
73
|
+
var _a;
|
|
74
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
75
|
+
})
|
|
76
|
+
.filter((id) => {
|
|
77
|
+
return id !== "";
|
|
78
|
+
}));
|
|
79
|
+
const newLabelIds = Array.from(labelIdsToAdd).filter((id) => {
|
|
80
|
+
return !existingLabelIds.has(id);
|
|
81
|
+
});
|
|
82
|
+
if (newLabelIds.length === 0) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
await IncomingCallPolicyService.getRepository()
|
|
86
|
+
.createQueryBuilder()
|
|
87
|
+
.relation(IncomingCallPolicy, "labels")
|
|
88
|
+
.of(policy.id.toString())
|
|
89
|
+
.add(newLabelIds);
|
|
90
|
+
const mergedLabelIds = new Set([
|
|
91
|
+
...existingLabelIds,
|
|
92
|
+
...newLabelIds,
|
|
93
|
+
]);
|
|
94
|
+
policy.labels = Array.from(mergedLabelIds).map((id) => {
|
|
95
|
+
const label = new Label();
|
|
96
|
+
label.id = new ObjectID(id);
|
|
97
|
+
return label;
|
|
98
|
+
});
|
|
99
|
+
logger.debug(`IncomingCallPolicyLabelRuleEngine attached ${newLabelIds.length} labels to policy ${policy.id}`, { projectId: policy.projectId.toString() });
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger.error(`Error applying incoming call policy label rules: ${error}`, {
|
|
103
|
+
projectId: (_a = policy.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
104
|
+
incomingCallPolicyId: (_b = policy.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
doesPolicyMatchRule(policy, rule) {
|
|
109
|
+
if (rule.incomingCallPolicyLabels &&
|
|
110
|
+
rule.incomingCallPolicyLabels.length > 0) {
|
|
111
|
+
if (!policy.labels || policy.labels.length === 0) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const ruleLabelIds = rule.incomingCallPolicyLabels.map((l) => {
|
|
115
|
+
var _a;
|
|
116
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
117
|
+
});
|
|
118
|
+
const labelIds = policy.labels.map((l) => {
|
|
119
|
+
var _a;
|
|
120
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
121
|
+
});
|
|
122
|
+
if (!ruleLabelIds.some((id) => {
|
|
123
|
+
return labelIds.includes(id);
|
|
124
|
+
})) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (rule.incomingCallPolicyNamePattern &&
|
|
129
|
+
(!policy.name ||
|
|
130
|
+
!this.testRegex(rule.incomingCallPolicyNamePattern, policy.name, rule))) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (rule.incomingCallPolicyDescriptionPattern &&
|
|
134
|
+
(!policy.description ||
|
|
135
|
+
!this.testRegex(rule.incomingCallPolicyDescriptionPattern, policy.description, rule))) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
testRegex(pattern, value, rule) {
|
|
141
|
+
try {
|
|
142
|
+
const regex = new RegExp(pattern, "i");
|
|
143
|
+
return regex.test(value);
|
|
144
|
+
}
|
|
145
|
+
catch (_a) {
|
|
146
|
+
logger.warn(`Invalid regex in incoming call policy label rule ${rule.id}: ${pattern}`);
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
__decorate([
|
|
152
|
+
CaptureSpan(),
|
|
153
|
+
__metadata("design:type", Function),
|
|
154
|
+
__metadata("design:paramtypes", [IncomingCallPolicy]),
|
|
155
|
+
__metadata("design:returntype", Promise)
|
|
156
|
+
], IncomingCallPolicyLabelRuleEngineServiceClass.prototype, "applyRulesToIncomingCallPolicy", null);
|
|
157
|
+
export default new IncomingCallPolicyLabelRuleEngineServiceClass();
|
|
158
|
+
//# sourceMappingURL=IncomingCallPolicyLabelRuleEngineService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyLabelRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyLabelRuleEngineService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,mCAAmC,CAAC;AACtD,OAAO,kBAAkB,MAAM,gDAAgD,CAAC;AAEhF,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;AAExD,MAAM,6CAA6C;IAEpC,AAAN,KAAK,CAAC,8BAA8B,CACzC,MAA0B;;QAE1B,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GACT,MAAM,kCAAkC,CAAC,MAAM,CAAC;gBAC9C,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,SAAS,EAAE,IAAI;iBAChB;gBACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACvB,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;oBACT,IAAI,EAAE,IAAI;oBACV,wBAAwB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;oBACvC,6BAA6B,EAAE,IAAI;oBACnC,oCAAoC,EAAE,IAAI;oBAC1C,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;iBAC3B;gBACD,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,CAAC;aACR,CAAC,CAAC;YAEL,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,MAAM,iBAAiB,GACrB,MAAM,yBAAyB,CAAC,WAAW,CAAC;gBAC1C,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,MAAM,EAAE;oBACN,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,IAAI;oBACjB,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;iBACtB;gBACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACxB,CAAC,CAAC;YAEL,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;YAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAY,IAAI,CAAC,mBAAmB,CAC/C,iBAAiB,EACjB,IAAI,CACL,CAAC;gBACF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;oBAC3C,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;wBACb,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,MAAM,gBAAgB,GAAgB,IAAI,GAAG,CAC3C,CAAC,iBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;iBAC7B,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE;;gBAChB,OAAO,CAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAC;YAChC,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,EAAU,EAAE,EAAE;gBACrB,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC,CAAC,CACL,CAAC;YAEF,MAAM,WAAW,GAAkB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CACjE,CAAC,EAAU,EAAE,EAAE;gBACb,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC,CACF,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,MAAM,yBAAyB,CAAC,aAAa,EAAE;iBAC5C,kBAAkB,EAAE;iBACpB,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC;iBACtC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;iBACxB,GAAG,CAAC,WAAW,CAAC,CAAC;YAEpB,MAAM,cAAc,GAAgB,IAAI,GAAG,CAAC;gBAC1C,GAAG,gBAAgB;gBACnB,GAAG,WAAW;aACf,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC5D,MAAM,KAAK,GAAU,IAAI,KAAK,EAAE,CAAC;gBACjC,KAAK,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC5B,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CACV,8CAA8C,WAAW,CAAC,MAAM,qBAAqB,MAAM,CAAC,EAAE,EAAE,EAChG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAmB,CAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,oDAAoD,KAAK,EAAE,EAC3D;gBACE,SAAS,EAAE,MAAA,MAAM,CAAC,SAAS,0CAAE,QAAQ,EAAE;gBACvC,oBAAoB,EAAE,MAAA,MAAM,CAAC,EAAE,0CAAE,QAAQ,EAAE;aAC3B,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,mBAAmB,CACzB,MAA0B,EAC1B,IAAiC;QAEjC,IACE,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EACxC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,YAAY,GAAkB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CACnE,CAAC,CAAQ,EAAE,EAAE;;gBACX,OAAO,CAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAC;YAChC,CAAC,CACF,CAAC;YACF,MAAM,QAAQ,GAAkB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE;;gBAC7D,OAAO,CAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,IACE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE;gBAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,EACF,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IACE,IAAI,CAAC,6BAA6B;YAClC,CAAC,CAAC,MAAM,CAAC,IAAI;gBACX,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EACzE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,IAAI,CAAC,oCAAoC;YACzC,CAAC,CAAC,MAAM,CAAC,WAAW;gBAClB,CAAC,IAAI,CAAC,SAAS,CACb,IAAI,CAAC,oCAAoC,EACzC,MAAM,CAAC,WAAW,EAClB,IAAI,CACL,CAAC,EACJ,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,SAAS,CACf,OAAe,EACf,KAAa,EACb,IAAiC;QAEjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAW,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,CAAC,IAAI,CACT,oDAAoD,IAAI,CAAC,EAAE,KAAK,OAAO,EAAE,CAC1E,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAvLc;IADZ,WAAW,EAAE;;qCAEJ,kBAAkB;;mGAkH3B;AAsEH,eAAe,IAAI,6CAA6C,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/IncomingCallPolicyLabelRule";
|
|
3
|
+
export class Service extends DatabaseService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(Model);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export default new Service();
|
|
9
|
+
//# sourceMappingURL=IncomingCallPolicyLabelRuleService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyLabelRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyLabelRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAE5E,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import IncomingCallPolicy from "../../Models/DatabaseModels/IncomingCallPolicy";
|
|
11
|
+
import IncomingCallPolicyOwnerUser from "../../Models/DatabaseModels/IncomingCallPolicyOwnerUser";
|
|
12
|
+
import IncomingCallPolicyOwnerTeam from "../../Models/DatabaseModels/IncomingCallPolicyOwnerTeam";
|
|
13
|
+
import IncomingCallPolicyOwnerRuleService from "./IncomingCallPolicyOwnerRuleService";
|
|
14
|
+
import IncomingCallPolicyOwnerUserService from "./IncomingCallPolicyOwnerUserService";
|
|
15
|
+
import IncomingCallPolicyOwnerTeamService from "./IncomingCallPolicyOwnerTeamService";
|
|
16
|
+
import IncomingCallPolicyService from "./IncomingCallPolicyService";
|
|
17
|
+
import ObjectID from "../../Types/ObjectID";
|
|
18
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
19
|
+
import logger from "../Utils/Logger";
|
|
20
|
+
class IncomingCallPolicyOwnerRuleEngineServiceClass {
|
|
21
|
+
async applyRulesToIncomingCallPolicy(policy) {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
if (!policy.id || !policy.projectId) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const rules = await IncomingCallPolicyOwnerRuleService.findBy({
|
|
28
|
+
query: {
|
|
29
|
+
projectId: policy.projectId,
|
|
30
|
+
isEnabled: true,
|
|
31
|
+
},
|
|
32
|
+
props: { isRoot: true },
|
|
33
|
+
select: {
|
|
34
|
+
_id: true,
|
|
35
|
+
name: true,
|
|
36
|
+
notifyOwners: true,
|
|
37
|
+
incomingCallPolicyLabels: { _id: true },
|
|
38
|
+
incomingCallPolicyNamePattern: true,
|
|
39
|
+
incomingCallPolicyDescriptionPattern: true,
|
|
40
|
+
ownerUsers: { _id: true },
|
|
41
|
+
ownerTeams: { _id: true },
|
|
42
|
+
},
|
|
43
|
+
limit: 100,
|
|
44
|
+
skip: 0,
|
|
45
|
+
});
|
|
46
|
+
if (rules.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const policyWithDetails = await IncomingCallPolicyService.findOneById({
|
|
50
|
+
id: policy.id,
|
|
51
|
+
select: {
|
|
52
|
+
name: true,
|
|
53
|
+
description: true,
|
|
54
|
+
labels: { _id: true },
|
|
55
|
+
},
|
|
56
|
+
props: { isRoot: true },
|
|
57
|
+
});
|
|
58
|
+
if (!policyWithDetails) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const usersByNotify = new Map([
|
|
62
|
+
[true, new Set()],
|
|
63
|
+
[false, new Set()],
|
|
64
|
+
]);
|
|
65
|
+
const teamsByNotify = new Map([
|
|
66
|
+
[true, new Set()],
|
|
67
|
+
[false, new Set()],
|
|
68
|
+
]);
|
|
69
|
+
const matchedRules = [];
|
|
70
|
+
for (const rule of rules) {
|
|
71
|
+
const matches = this.doesPolicyMatchRule(policyWithDetails, rule);
|
|
72
|
+
if (!matches) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
let ruleAddedAny = false;
|
|
76
|
+
const notify = rule.notifyOwners !== false;
|
|
77
|
+
for (const user of rule.ownerUsers || []) {
|
|
78
|
+
if (user.id) {
|
|
79
|
+
usersByNotify.get(notify).add(user.id.toString());
|
|
80
|
+
ruleAddedAny = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
for (const team of rule.ownerTeams || []) {
|
|
84
|
+
if (team.id) {
|
|
85
|
+
teamsByNotify.get(notify).add(team.id.toString());
|
|
86
|
+
ruleAddedAny = true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (ruleAddedAny) {
|
|
90
|
+
matchedRules.push(rule);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (matchedRules.length === 0) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
for (const notify of [true, false]) {
|
|
97
|
+
const userIds = usersByNotify.get(notify);
|
|
98
|
+
const teamIds = teamsByNotify.get(notify);
|
|
99
|
+
for (const userId of userIds) {
|
|
100
|
+
const owner = new IncomingCallPolicyOwnerUser();
|
|
101
|
+
owner.incomingCallPolicyId = policy.id;
|
|
102
|
+
owner.projectId = policy.projectId;
|
|
103
|
+
owner.userId = new ObjectID(userId);
|
|
104
|
+
owner.isOwnerNotified = !notify;
|
|
105
|
+
await IncomingCallPolicyOwnerUserService.create({
|
|
106
|
+
data: owner,
|
|
107
|
+
props: { isRoot: true },
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
for (const teamId of teamIds) {
|
|
111
|
+
const owner = new IncomingCallPolicyOwnerTeam();
|
|
112
|
+
owner.incomingCallPolicyId = policy.id;
|
|
113
|
+
owner.projectId = policy.projectId;
|
|
114
|
+
owner.teamId = new ObjectID(teamId);
|
|
115
|
+
owner.isOwnerNotified = !notify;
|
|
116
|
+
await IncomingCallPolicyOwnerTeamService.create({
|
|
117
|
+
data: owner,
|
|
118
|
+
props: { isRoot: true },
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
logger.debug(`IncomingCallPolicyOwnerRuleEngine added owners to policy ${policy.id}`, { projectId: policy.projectId.toString() });
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
logger.error(`Error applying incoming call policy owner rules: ${error}`, {
|
|
126
|
+
projectId: (_a = policy.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
127
|
+
incomingCallPolicyId: (_b = policy.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
doesPolicyMatchRule(policy, rule) {
|
|
132
|
+
if (rule.incomingCallPolicyLabels &&
|
|
133
|
+
rule.incomingCallPolicyLabels.length > 0) {
|
|
134
|
+
if (!policy.labels || policy.labels.length === 0) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
const ruleLabelIds = rule.incomingCallPolicyLabels.map((l) => {
|
|
138
|
+
var _a;
|
|
139
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
140
|
+
});
|
|
141
|
+
const labelIds = policy.labels.map((l) => {
|
|
142
|
+
var _a;
|
|
143
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
144
|
+
});
|
|
145
|
+
if (!ruleLabelIds.some((id) => {
|
|
146
|
+
return labelIds.includes(id);
|
|
147
|
+
})) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (rule.incomingCallPolicyNamePattern &&
|
|
152
|
+
(!policy.name ||
|
|
153
|
+
!this.testRegex(rule.incomingCallPolicyNamePattern, policy.name, rule))) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
if (rule.incomingCallPolicyDescriptionPattern &&
|
|
157
|
+
(!policy.description ||
|
|
158
|
+
!this.testRegex(rule.incomingCallPolicyDescriptionPattern, policy.description, rule))) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
testRegex(pattern, value, rule) {
|
|
164
|
+
try {
|
|
165
|
+
const regex = new RegExp(pattern, "i");
|
|
166
|
+
return regex.test(value);
|
|
167
|
+
}
|
|
168
|
+
catch (_a) {
|
|
169
|
+
logger.warn(`Invalid regex in incoming call policy owner rule ${rule.id}: ${pattern}`);
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
__decorate([
|
|
175
|
+
CaptureSpan(),
|
|
176
|
+
__metadata("design:type", Function),
|
|
177
|
+
__metadata("design:paramtypes", [IncomingCallPolicy]),
|
|
178
|
+
__metadata("design:returntype", Promise)
|
|
179
|
+
], IncomingCallPolicyOwnerRuleEngineServiceClass.prototype, "applyRulesToIncomingCallPolicy", null);
|
|
180
|
+
export default new IncomingCallPolicyOwnerRuleEngineServiceClass();
|
|
181
|
+
//# sourceMappingURL=IncomingCallPolicyOwnerRuleEngineService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyOwnerRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/IncomingCallPolicyOwnerRule";
|
|
3
|
+
export class Service extends DatabaseService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(Model);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export default new Service();
|
|
9
|
+
//# sourceMappingURL=IncomingCallPolicyOwnerRuleService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyOwnerRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyOwnerRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAE5E,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/IncomingCallPolicyOwnerTeam";
|
|
3
|
+
export class Service extends DatabaseService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(Model);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export default new Service();
|
|
9
|
+
//# sourceMappingURL=IncomingCallPolicyOwnerTeamService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyOwnerTeamService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyOwnerTeamService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAE5E,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AACD,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/IncomingCallPolicyOwnerUser";
|
|
3
|
+
export class Service extends DatabaseService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(Model);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export default new Service();
|
|
9
|
+
//# sourceMappingURL=IncomingCallPolicyOwnerUserService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyOwnerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyOwnerUserService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAE5E,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AACD,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -1,9 +1,47 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
1
10
|
import DatabaseService from "./DatabaseService";
|
|
2
11
|
import IncomingCallPolicy from "../../Models/DatabaseModels/IncomingCallPolicy";
|
|
12
|
+
import IncomingCallPolicyLabelRuleEngineService from "./IncomingCallPolicyLabelRuleEngineService";
|
|
13
|
+
import IncomingCallPolicyOwnerRuleEngineService from "./IncomingCallPolicyOwnerRuleEngineService";
|
|
14
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
15
|
+
import logger from "../Utils/Logger";
|
|
3
16
|
export class Service extends DatabaseService {
|
|
4
17
|
constructor() {
|
|
5
18
|
super(IncomingCallPolicy);
|
|
6
19
|
}
|
|
20
|
+
async onCreateSuccess(_onCreate, createdItem) {
|
|
21
|
+
if (createdItem.projectId && createdItem.id) {
|
|
22
|
+
Promise.resolve()
|
|
23
|
+
.then(async () => {
|
|
24
|
+
await IncomingCallPolicyLabelRuleEngineService.applyRulesToIncomingCallPolicy(createdItem);
|
|
25
|
+
})
|
|
26
|
+
.then(async () => {
|
|
27
|
+
await IncomingCallPolicyOwnerRuleEngineService.applyRulesToIncomingCallPolicy(createdItem);
|
|
28
|
+
})
|
|
29
|
+
.catch((error) => {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
logger.error(`Error applying incoming call policy rules in IncomingCallPolicyService.onCreateSuccess: ${error}`, {
|
|
32
|
+
projectId: (_a = createdItem.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
33
|
+
incomingCallPolicyId: (_b = createdItem.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return createdItem;
|
|
38
|
+
}
|
|
7
39
|
}
|
|
40
|
+
__decorate([
|
|
41
|
+
CaptureSpan(),
|
|
42
|
+
__metadata("design:type", Function),
|
|
43
|
+
__metadata("design:paramtypes", [Object, IncomingCallPolicy]),
|
|
44
|
+
__metadata("design:returntype", Promise)
|
|
45
|
+
], Service.prototype, "onCreateSuccess", null);
|
|
8
46
|
export default new Service();
|
|
9
47
|
//# sourceMappingURL=IncomingCallPolicyService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncomingCallPolicyService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,kBAAkB,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"IncomingCallPolicyService.js","sourceRoot":"","sources":["../../../../Server/Services/IncomingCallPolicyService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,kBAAkB,MAAM,gDAAgD,CAAC;AAChF,OAAO,wCAAwC,MAAM,4CAA4C,CAAC;AAClG,OAAO,wCAAwC,MAAM,4CAA4C,CAAC;AAElG,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;AAExD,MAAM,OAAO,OAAQ,SAAQ,eAAmC;IAC9D;QACE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;IAGwB,AAAN,KAAK,CAAC,eAAe,CACtC,SAAuC,EACvC,WAA+B;QAE/B,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,wCAAwC,CAAC,8BAA8B,CAC3E,WAAW,CACZ,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,wCAAwC,CAAC,8BAA8B,CAC3E,WAAW,CACZ,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;;gBACtB,MAAM,CAAC,KAAK,CACV,2FAA2F,KAAK,EAAE,EAClG;oBACE,SAAS,EAAE,MAAA,WAAW,CAAC,SAAS,0CAAE,QAAQ,EAAE;oBAC5C,oBAAoB,EAAE,MAAA,WAAW,CAAC,EAAE,0CAAE,QAAQ,EAAE;iBAChC,CACnB,CAAC;YACJ,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AA5B0B;IADxB,WAAW,EAAE;;6CAGC,kBAAkB;;8CAyBhC;AAGH,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import Label from "../../Models/DatabaseModels/Label";
|
|
11
|
+
import OnCallDutyPolicy from "../../Models/DatabaseModels/OnCallDutyPolicy";
|
|
12
|
+
import OnCallDutyPolicyLabelRuleService from "./OnCallDutyPolicyLabelRuleService";
|
|
13
|
+
import OnCallDutyPolicyService from "./OnCallDutyPolicyService";
|
|
14
|
+
import ObjectID from "../../Types/ObjectID";
|
|
15
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
|
+
import logger from "../Utils/Logger";
|
|
17
|
+
class OnCallDutyPolicyLabelRuleEngineServiceClass {
|
|
18
|
+
async applyRulesToOnCallDutyPolicy(onCallDutyPolicy) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
if (!onCallDutyPolicy.id || !onCallDutyPolicy.projectId) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const rules = await OnCallDutyPolicyLabelRuleService.findBy({
|
|
25
|
+
query: {
|
|
26
|
+
projectId: onCallDutyPolicy.projectId,
|
|
27
|
+
isEnabled: true,
|
|
28
|
+
},
|
|
29
|
+
props: { isRoot: true },
|
|
30
|
+
select: {
|
|
31
|
+
_id: true,
|
|
32
|
+
name: true,
|
|
33
|
+
onCallDutyPolicyLabels: { _id: true },
|
|
34
|
+
onCallDutyPolicyNamePattern: true,
|
|
35
|
+
onCallDutyPolicyDescriptionPattern: true,
|
|
36
|
+
labelsToAdd: { _id: true },
|
|
37
|
+
},
|
|
38
|
+
limit: 100,
|
|
39
|
+
skip: 0,
|
|
40
|
+
});
|
|
41
|
+
if (rules.length === 0) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const policyWithDetails = await OnCallDutyPolicyService.findOneById({
|
|
45
|
+
id: onCallDutyPolicy.id,
|
|
46
|
+
select: {
|
|
47
|
+
name: true,
|
|
48
|
+
description: true,
|
|
49
|
+
labels: { _id: true },
|
|
50
|
+
},
|
|
51
|
+
props: { isRoot: true },
|
|
52
|
+
});
|
|
53
|
+
if (!policyWithDetails) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const labelIdsToAdd = new Set();
|
|
57
|
+
for (const rule of rules) {
|
|
58
|
+
const matches = this.doesPolicyMatchRule(policyWithDetails, rule);
|
|
59
|
+
if (!matches) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
for (const label of rule.labelsToAdd || []) {
|
|
63
|
+
if (label.id) {
|
|
64
|
+
labelIdsToAdd.add(label.id.toString());
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (labelIdsToAdd.size === 0) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const existingLabelIds = new Set((policyWithDetails.labels || [])
|
|
72
|
+
.map((l) => {
|
|
73
|
+
var _a;
|
|
74
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
75
|
+
})
|
|
76
|
+
.filter((id) => {
|
|
77
|
+
return id !== "";
|
|
78
|
+
}));
|
|
79
|
+
const newLabelIds = Array.from(labelIdsToAdd).filter((id) => {
|
|
80
|
+
return !existingLabelIds.has(id);
|
|
81
|
+
});
|
|
82
|
+
if (newLabelIds.length === 0) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
await OnCallDutyPolicyService.getRepository()
|
|
86
|
+
.createQueryBuilder()
|
|
87
|
+
.relation(OnCallDutyPolicy, "labels")
|
|
88
|
+
.of(onCallDutyPolicy.id.toString())
|
|
89
|
+
.add(newLabelIds);
|
|
90
|
+
const mergedLabelIds = new Set([
|
|
91
|
+
...existingLabelIds,
|
|
92
|
+
...newLabelIds,
|
|
93
|
+
]);
|
|
94
|
+
onCallDutyPolicy.labels = Array.from(mergedLabelIds).map((id) => {
|
|
95
|
+
const label = new Label();
|
|
96
|
+
label.id = new ObjectID(id);
|
|
97
|
+
return label;
|
|
98
|
+
});
|
|
99
|
+
logger.debug(`OnCallDutyPolicyLabelRuleEngine attached ${newLabelIds.length} labels to policy ${onCallDutyPolicy.id}`, { projectId: onCallDutyPolicy.projectId.toString() });
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger.error(`Error applying on-call duty policy label rules: ${error}`, {
|
|
103
|
+
projectId: (_a = onCallDutyPolicy.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
104
|
+
onCallDutyPolicyId: (_b = onCallDutyPolicy.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
doesPolicyMatchRule(policy, rule) {
|
|
109
|
+
if (rule.onCallDutyPolicyLabels && rule.onCallDutyPolicyLabels.length > 0) {
|
|
110
|
+
if (!policy.labels || policy.labels.length === 0) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const ruleLabelIds = rule.onCallDutyPolicyLabels.map((l) => {
|
|
114
|
+
var _a;
|
|
115
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
116
|
+
});
|
|
117
|
+
const labelIds = policy.labels.map((l) => {
|
|
118
|
+
var _a;
|
|
119
|
+
return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
120
|
+
});
|
|
121
|
+
if (!ruleLabelIds.some((id) => {
|
|
122
|
+
return labelIds.includes(id);
|
|
123
|
+
})) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (rule.onCallDutyPolicyNamePattern &&
|
|
128
|
+
(!policy.name ||
|
|
129
|
+
!this.testRegex(rule.onCallDutyPolicyNamePattern, policy.name, rule))) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
if (rule.onCallDutyPolicyDescriptionPattern &&
|
|
133
|
+
(!policy.description ||
|
|
134
|
+
!this.testRegex(rule.onCallDutyPolicyDescriptionPattern, policy.description, rule))) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
testRegex(pattern, value, rule) {
|
|
140
|
+
try {
|
|
141
|
+
const regex = new RegExp(pattern, "i");
|
|
142
|
+
return regex.test(value);
|
|
143
|
+
}
|
|
144
|
+
catch (_a) {
|
|
145
|
+
logger.warn(`Invalid regex in on-call duty policy label rule ${rule.id}: ${pattern}`);
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
__decorate([
|
|
151
|
+
CaptureSpan(),
|
|
152
|
+
__metadata("design:type", Function),
|
|
153
|
+
__metadata("design:paramtypes", [OnCallDutyPolicy]),
|
|
154
|
+
__metadata("design:returntype", Promise)
|
|
155
|
+
], OnCallDutyPolicyLabelRuleEngineServiceClass.prototype, "applyRulesToOnCallDutyPolicy", null);
|
|
156
|
+
export default new OnCallDutyPolicyLabelRuleEngineServiceClass();
|
|
157
|
+
//# sourceMappingURL=OnCallDutyPolicyLabelRuleEngineService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnCallDutyPolicyLabelRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/OnCallDutyPolicyLabelRule";
|
|
3
|
+
export class Service extends DatabaseService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(Model);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export default new Service();
|
|
9
|
+
//# sourceMappingURL=OnCallDutyPolicyLabelRuleService.js.map
|