@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.
Files changed (115) hide show
  1. package/Models/DatabaseModels/IncomingCallPolicyLabelRule.ts +522 -0
  2. package/Models/DatabaseModels/IncomingCallPolicyOwnerRule.ts +606 -0
  3. package/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.ts +508 -0
  4. package/Models/DatabaseModels/IncomingCallPolicyOwnerUser.ts +507 -0
  5. package/Models/DatabaseModels/Index.ts +24 -0
  6. package/Models/DatabaseModels/OnCallDutyPolicyLabelRule.ts +522 -0
  7. package/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.ts +606 -0
  8. package/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.ts +522 -0
  9. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.ts +606 -0
  10. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.ts +508 -0
  11. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.ts +507 -0
  12. package/Server/API/TelemetryAPI.ts +69 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.ts +153 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.ts +823 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  16. package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +197 -0
  17. package/Server/Services/IncomingCallPolicyLabelRuleService.ts +10 -0
  18. package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +220 -0
  19. package/Server/Services/IncomingCallPolicyOwnerRuleService.ts +10 -0
  20. package/Server/Services/IncomingCallPolicyOwnerTeamService.ts +9 -0
  21. package/Server/Services/IncomingCallPolicyOwnerUserService.ts +9 -0
  22. package/Server/Services/IncomingCallPolicyService.ts +35 -0
  23. package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +191 -0
  24. package/Server/Services/OnCallDutyPolicyLabelRuleService.ts +10 -0
  25. package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +214 -0
  26. package/Server/Services/OnCallDutyPolicyOwnerRuleService.ts +10 -0
  27. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +200 -0
  28. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.ts +10 -0
  29. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +223 -0
  30. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.ts +10 -0
  31. package/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.ts +9 -0
  32. package/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.ts +9 -0
  33. package/Server/Services/OnCallDutyPolicyScheduleService.ts +32 -1
  34. package/Server/Services/OnCallDutyPolicyService.ts +21 -0
  35. package/Server/Services/ProfileAggregationService.ts +119 -0
  36. package/Server/Types/Database/Permissions/QueryPermission.ts +36 -0
  37. package/Types/Monitor/MonitorStep.ts +66 -0
  38. package/Types/Permission.ts +475 -0
  39. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +532 -0
  40. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -0
  41. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +615 -0
  42. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -0
  43. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js +524 -0
  44. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js.map +1 -0
  45. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js +523 -0
  46. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js.map +1 -0
  47. package/build/dist/Models/DatabaseModels/Index.js +22 -0
  48. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  49. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +532 -0
  50. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -0
  51. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +615 -0
  52. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -0
  53. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +532 -0
  54. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -0
  55. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +615 -0
  56. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -0
  57. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js +524 -0
  58. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js.map +1 -0
  59. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js +523 -0
  60. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js.map +1 -0
  61. package/build/dist/Server/API/TelemetryAPI.js +34 -0
  62. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.js +58 -0
  64. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.js.map +1 -0
  65. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.js +292 -0
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.js.map +1 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  69. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +158 -0
  70. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -0
  71. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleService.js +9 -0
  72. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleService.js.map +1 -0
  73. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +181 -0
  74. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -0
  75. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleService.js +9 -0
  76. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleService.js.map +1 -0
  77. package/build/dist/Server/Services/IncomingCallPolicyOwnerTeamService.js +9 -0
  78. package/build/dist/Server/Services/IncomingCallPolicyOwnerTeamService.js.map +1 -0
  79. package/build/dist/Server/Services/IncomingCallPolicyOwnerUserService.js +9 -0
  80. package/build/dist/Server/Services/IncomingCallPolicyOwnerUserService.js.map +1 -0
  81. package/build/dist/Server/Services/IncomingCallPolicyService.js +38 -0
  82. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
  83. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +157 -0
  84. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -0
  85. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleService.js +9 -0
  86. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleService.js.map +1 -0
  87. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +180 -0
  88. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -0
  89. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleService.js +9 -0
  90. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleService.js.map +1 -0
  91. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +158 -0
  92. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -0
  93. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.js +9 -0
  94. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.js.map +1 -0
  95. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +181 -0
  96. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -0
  97. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.js +9 -0
  98. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.js.map +1 -0
  99. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.js +9 -0
  100. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.js.map +1 -0
  101. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.js +9 -0
  102. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.js.map +1 -0
  103. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +21 -0
  104. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  105. package/build/dist/Server/Services/OnCallDutyPolicyService.js +17 -3
  106. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  107. package/build/dist/Server/Services/ProfileAggregationService.js +80 -0
  108. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
  109. package/build/dist/Server/Types/Database/Permissions/QueryPermission.js +25 -0
  110. package/build/dist/Server/Types/Database/Permissions/QueryPermission.js.map +1 -1
  111. package/build/dist/Types/Monitor/MonitorStep.js +42 -0
  112. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  113. package/build/dist/Types/Permission.js +415 -0
  114. package/build/dist/Types/Permission.js.map +1 -1
  115. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyLabelRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyLabelRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAE1E,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,180 @@
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 OnCallDutyPolicy from "../../Models/DatabaseModels/OnCallDutyPolicy";
11
+ import OnCallDutyPolicyOwnerUser from "../../Models/DatabaseModels/OnCallDutyPolicyOwnerUser";
12
+ import OnCallDutyPolicyOwnerTeam from "../../Models/DatabaseModels/OnCallDutyPolicyOwnerTeam";
13
+ import OnCallDutyPolicyOwnerRuleService from "./OnCallDutyPolicyOwnerRuleService";
14
+ import OnCallDutyPolicyOwnerUserService from "./OnCallDutyPolicyOwnerUserService";
15
+ import OnCallDutyPolicyOwnerTeamService from "./OnCallDutyPolicyOwnerTeamService";
16
+ import OnCallDutyPolicyService from "./OnCallDutyPolicyService";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
19
+ import logger from "../Utils/Logger";
20
+ class OnCallDutyPolicyOwnerRuleEngineServiceClass {
21
+ async applyRulesToOnCallDutyPolicy(onCallDutyPolicy) {
22
+ var _a, _b;
23
+ if (!onCallDutyPolicy.id || !onCallDutyPolicy.projectId) {
24
+ return;
25
+ }
26
+ try {
27
+ const rules = await OnCallDutyPolicyOwnerRuleService.findBy({
28
+ query: {
29
+ projectId: onCallDutyPolicy.projectId,
30
+ isEnabled: true,
31
+ },
32
+ props: { isRoot: true },
33
+ select: {
34
+ _id: true,
35
+ name: true,
36
+ notifyOwners: true,
37
+ onCallDutyPolicyLabels: { _id: true },
38
+ onCallDutyPolicyNamePattern: true,
39
+ onCallDutyPolicyDescriptionPattern: 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 OnCallDutyPolicyService.findOneById({
50
+ id: onCallDutyPolicy.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 OnCallDutyPolicyOwnerUser();
101
+ owner.onCallDutyPolicyId = onCallDutyPolicy.id;
102
+ owner.projectId = onCallDutyPolicy.projectId;
103
+ owner.userId = new ObjectID(userId);
104
+ owner.isOwnerNotified = !notify;
105
+ await OnCallDutyPolicyOwnerUserService.create({
106
+ data: owner,
107
+ props: { isRoot: true },
108
+ });
109
+ }
110
+ for (const teamId of teamIds) {
111
+ const owner = new OnCallDutyPolicyOwnerTeam();
112
+ owner.onCallDutyPolicyId = onCallDutyPolicy.id;
113
+ owner.projectId = onCallDutyPolicy.projectId;
114
+ owner.teamId = new ObjectID(teamId);
115
+ owner.isOwnerNotified = !notify;
116
+ await OnCallDutyPolicyOwnerTeamService.create({
117
+ data: owner,
118
+ props: { isRoot: true },
119
+ });
120
+ }
121
+ }
122
+ logger.debug(`OnCallDutyPolicyOwnerRuleEngine added owners to policy ${onCallDutyPolicy.id}`, { projectId: onCallDutyPolicy.projectId.toString() });
123
+ }
124
+ catch (error) {
125
+ logger.error(`Error applying on-call duty policy owner rules: ${error}`, {
126
+ projectId: (_a = onCallDutyPolicy.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
127
+ onCallDutyPolicyId: (_b = onCallDutyPolicy.id) === null || _b === void 0 ? void 0 : _b.toString(),
128
+ });
129
+ }
130
+ }
131
+ doesPolicyMatchRule(policy, rule) {
132
+ if (rule.onCallDutyPolicyLabels && rule.onCallDutyPolicyLabels.length > 0) {
133
+ if (!policy.labels || policy.labels.length === 0) {
134
+ return false;
135
+ }
136
+ const ruleLabelIds = rule.onCallDutyPolicyLabels.map((l) => {
137
+ var _a;
138
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
139
+ });
140
+ const labelIds = policy.labels.map((l) => {
141
+ var _a;
142
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
143
+ });
144
+ if (!ruleLabelIds.some((id) => {
145
+ return labelIds.includes(id);
146
+ })) {
147
+ return false;
148
+ }
149
+ }
150
+ if (rule.onCallDutyPolicyNamePattern &&
151
+ (!policy.name ||
152
+ !this.testRegex(rule.onCallDutyPolicyNamePattern, policy.name, rule))) {
153
+ return false;
154
+ }
155
+ if (rule.onCallDutyPolicyDescriptionPattern &&
156
+ (!policy.description ||
157
+ !this.testRegex(rule.onCallDutyPolicyDescriptionPattern, policy.description, rule))) {
158
+ return false;
159
+ }
160
+ return true;
161
+ }
162
+ testRegex(pattern, value, rule) {
163
+ try {
164
+ const regex = new RegExp(pattern, "i");
165
+ return regex.test(value);
166
+ }
167
+ catch (_a) {
168
+ logger.warn(`Invalid regex in on-call duty policy owner rule ${rule.id}: ${pattern}`);
169
+ return false;
170
+ }
171
+ }
172
+ }
173
+ __decorate([
174
+ CaptureSpan(),
175
+ __metadata("design:type", Function),
176
+ __metadata("design:paramtypes", [OnCallDutyPolicy]),
177
+ __metadata("design:returntype", Promise)
178
+ ], OnCallDutyPolicyOwnerRuleEngineServiceClass.prototype, "applyRulesToOnCallDutyPolicy", null);
179
+ export default new OnCallDutyPolicyOwnerRuleEngineServiceClass();
180
+ //# sourceMappingURL=OnCallDutyPolicyOwnerRuleEngineService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyOwnerRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/OnCallDutyPolicyOwnerRule";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=OnCallDutyPolicyOwnerRuleService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyOwnerRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyOwnerRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAE1E,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -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 OnCallDutyPolicySchedule from "../../Models/DatabaseModels/OnCallDutyPolicySchedule";
12
+ import OnCallDutyPolicyScheduleLabelRuleService from "./OnCallDutyPolicyScheduleLabelRuleService";
13
+ import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
14
+ import ObjectID from "../../Types/ObjectID";
15
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
16
+ import logger from "../Utils/Logger";
17
+ class OnCallDutyPolicyScheduleLabelRuleEngineServiceClass {
18
+ async applyRulesToSchedule(schedule) {
19
+ var _a, _b;
20
+ if (!schedule.id || !schedule.projectId) {
21
+ return;
22
+ }
23
+ try {
24
+ const rules = await OnCallDutyPolicyScheduleLabelRuleService.findBy({
25
+ query: {
26
+ projectId: schedule.projectId,
27
+ isEnabled: true,
28
+ },
29
+ props: { isRoot: true },
30
+ select: {
31
+ _id: true,
32
+ name: true,
33
+ onCallDutyPolicyScheduleLabels: { _id: true },
34
+ onCallDutyPolicyScheduleNamePattern: true,
35
+ onCallDutyPolicyScheduleDescriptionPattern: true,
36
+ labelsToAdd: { _id: true },
37
+ },
38
+ limit: 100,
39
+ skip: 0,
40
+ });
41
+ if (rules.length === 0) {
42
+ return;
43
+ }
44
+ const scheduleWithDetails = await OnCallDutyPolicyScheduleService.findOneById({
45
+ id: schedule.id,
46
+ select: {
47
+ name: true,
48
+ description: true,
49
+ labels: { _id: true },
50
+ },
51
+ props: { isRoot: true },
52
+ });
53
+ if (!scheduleWithDetails) {
54
+ return;
55
+ }
56
+ const labelIdsToAdd = new Set();
57
+ for (const rule of rules) {
58
+ const matches = this.doesScheduleMatchRule(scheduleWithDetails, 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((scheduleWithDetails.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 OnCallDutyPolicyScheduleService.getRepository()
86
+ .createQueryBuilder()
87
+ .relation(OnCallDutyPolicySchedule, "labels")
88
+ .of(schedule.id.toString())
89
+ .add(newLabelIds);
90
+ const mergedLabelIds = new Set([
91
+ ...existingLabelIds,
92
+ ...newLabelIds,
93
+ ]);
94
+ schedule.labels = Array.from(mergedLabelIds).map((id) => {
95
+ const label = new Label();
96
+ label.id = new ObjectID(id);
97
+ return label;
98
+ });
99
+ logger.debug(`OnCallDutyPolicyScheduleLabelRuleEngine attached ${newLabelIds.length} labels to schedule ${schedule.id}`, { projectId: schedule.projectId.toString() });
100
+ }
101
+ catch (error) {
102
+ logger.error(`Error applying on-call duty schedule label rules: ${error}`, {
103
+ projectId: (_a = schedule.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
104
+ onCallDutyPolicyScheduleId: (_b = schedule.id) === null || _b === void 0 ? void 0 : _b.toString(),
105
+ });
106
+ }
107
+ }
108
+ doesScheduleMatchRule(schedule, rule) {
109
+ if (rule.onCallDutyPolicyScheduleLabels &&
110
+ rule.onCallDutyPolicyScheduleLabels.length > 0) {
111
+ if (!schedule.labels || schedule.labels.length === 0) {
112
+ return false;
113
+ }
114
+ const ruleLabelIds = rule.onCallDutyPolicyScheduleLabels.map((l) => {
115
+ var _a;
116
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
117
+ });
118
+ const labelIds = schedule.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.onCallDutyPolicyScheduleNamePattern &&
129
+ (!schedule.name ||
130
+ !this.testRegex(rule.onCallDutyPolicyScheduleNamePattern, schedule.name, rule))) {
131
+ return false;
132
+ }
133
+ if (rule.onCallDutyPolicyScheduleDescriptionPattern &&
134
+ (!schedule.description ||
135
+ !this.testRegex(rule.onCallDutyPolicyScheduleDescriptionPattern, schedule.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 on-call duty schedule label rule ${rule.id}: ${pattern}`);
147
+ return false;
148
+ }
149
+ }
150
+ }
151
+ __decorate([
152
+ CaptureSpan(),
153
+ __metadata("design:type", Function),
154
+ __metadata("design:paramtypes", [OnCallDutyPolicySchedule]),
155
+ __metadata("design:returntype", Promise)
156
+ ], OnCallDutyPolicyScheduleLabelRuleEngineServiceClass.prototype, "applyRulesToSchedule", null);
157
+ export default new OnCallDutyPolicyScheduleLabelRuleEngineServiceClass();
158
+ //# sourceMappingURL=OnCallDutyPolicyScheduleLabelRuleEngineService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleLabelRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=OnCallDutyPolicyScheduleLabelRuleService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleLabelRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleLabelRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,+DAA+D,CAAC;AAElF,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 OnCallDutyPolicySchedule from "../../Models/DatabaseModels/OnCallDutyPolicySchedule";
11
+ import OnCallDutyPolicyScheduleOwnerUser from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser";
12
+ import OnCallDutyPolicyScheduleOwnerTeam from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam";
13
+ import OnCallDutyPolicyScheduleOwnerRuleService from "./OnCallDutyPolicyScheduleOwnerRuleService";
14
+ import OnCallDutyPolicyScheduleOwnerUserService from "./OnCallDutyPolicyScheduleOwnerUserService";
15
+ import OnCallDutyPolicyScheduleOwnerTeamService from "./OnCallDutyPolicyScheduleOwnerTeamService";
16
+ import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
19
+ import logger from "../Utils/Logger";
20
+ class OnCallDutyPolicyScheduleOwnerRuleEngineServiceClass {
21
+ async applyRulesToSchedule(schedule) {
22
+ var _a, _b;
23
+ if (!schedule.id || !schedule.projectId) {
24
+ return;
25
+ }
26
+ try {
27
+ const rules = await OnCallDutyPolicyScheduleOwnerRuleService.findBy({
28
+ query: {
29
+ projectId: schedule.projectId,
30
+ isEnabled: true,
31
+ },
32
+ props: { isRoot: true },
33
+ select: {
34
+ _id: true,
35
+ name: true,
36
+ notifyOwners: true,
37
+ onCallDutyPolicyScheduleLabels: { _id: true },
38
+ onCallDutyPolicyScheduleNamePattern: true,
39
+ onCallDutyPolicyScheduleDescriptionPattern: 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 scheduleWithDetails = await OnCallDutyPolicyScheduleService.findOneById({
50
+ id: schedule.id,
51
+ select: {
52
+ name: true,
53
+ description: true,
54
+ labels: { _id: true },
55
+ },
56
+ props: { isRoot: true },
57
+ });
58
+ if (!scheduleWithDetails) {
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.doesScheduleMatchRule(scheduleWithDetails, 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 OnCallDutyPolicyScheduleOwnerUser();
101
+ owner.onCallDutyPolicyScheduleId = schedule.id;
102
+ owner.projectId = schedule.projectId;
103
+ owner.userId = new ObjectID(userId);
104
+ owner.isOwnerNotified = !notify;
105
+ await OnCallDutyPolicyScheduleOwnerUserService.create({
106
+ data: owner,
107
+ props: { isRoot: true },
108
+ });
109
+ }
110
+ for (const teamId of teamIds) {
111
+ const owner = new OnCallDutyPolicyScheduleOwnerTeam();
112
+ owner.onCallDutyPolicyScheduleId = schedule.id;
113
+ owner.projectId = schedule.projectId;
114
+ owner.teamId = new ObjectID(teamId);
115
+ owner.isOwnerNotified = !notify;
116
+ await OnCallDutyPolicyScheduleOwnerTeamService.create({
117
+ data: owner,
118
+ props: { isRoot: true },
119
+ });
120
+ }
121
+ }
122
+ logger.debug(`OnCallDutyPolicyScheduleOwnerRuleEngine added owners to schedule ${schedule.id}`, { projectId: schedule.projectId.toString() });
123
+ }
124
+ catch (error) {
125
+ logger.error(`Error applying on-call duty schedule owner rules: ${error}`, {
126
+ projectId: (_a = schedule.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
127
+ onCallDutyPolicyScheduleId: (_b = schedule.id) === null || _b === void 0 ? void 0 : _b.toString(),
128
+ });
129
+ }
130
+ }
131
+ doesScheduleMatchRule(schedule, rule) {
132
+ if (rule.onCallDutyPolicyScheduleLabels &&
133
+ rule.onCallDutyPolicyScheduleLabels.length > 0) {
134
+ if (!schedule.labels || schedule.labels.length === 0) {
135
+ return false;
136
+ }
137
+ const ruleLabelIds = rule.onCallDutyPolicyScheduleLabels.map((l) => {
138
+ var _a;
139
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
140
+ });
141
+ const labelIds = schedule.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.onCallDutyPolicyScheduleNamePattern &&
152
+ (!schedule.name ||
153
+ !this.testRegex(rule.onCallDutyPolicyScheduleNamePattern, schedule.name, rule))) {
154
+ return false;
155
+ }
156
+ if (rule.onCallDutyPolicyScheduleDescriptionPattern &&
157
+ (!schedule.description ||
158
+ !this.testRegex(rule.onCallDutyPolicyScheduleDescriptionPattern, schedule.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 on-call duty schedule owner rule ${rule.id}: ${pattern}`);
170
+ return false;
171
+ }
172
+ }
173
+ }
174
+ __decorate([
175
+ CaptureSpan(),
176
+ __metadata("design:type", Function),
177
+ __metadata("design:paramtypes", [OnCallDutyPolicySchedule]),
178
+ __metadata("design:returntype", Promise)
179
+ ], OnCallDutyPolicyScheduleOwnerRuleEngineServiceClass.prototype, "applyRulesToSchedule", null);
180
+ export default new OnCallDutyPolicyScheduleOwnerRuleEngineServiceClass();
181
+ //# sourceMappingURL=OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleOwnerRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=OnCallDutyPolicyScheduleOwnerRuleService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleOwnerRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,+DAA+D,CAAC;AAElF,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/OnCallDutyPolicyScheduleOwnerTeam";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=OnCallDutyPolicyScheduleOwnerTeamService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleOwnerTeamService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,+DAA+D,CAAC;AAElF,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/OnCallDutyPolicyScheduleOwnerUser";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=OnCallDutyPolicyScheduleOwnerUserService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleOwnerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleOwnerUserService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,+DAA+D,CAAC;AAElF,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AACD,eAAe,IAAI,OAAO,EAAE,CAAC"}