@oneuptime/common 12.0.29 → 12.0.30

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 (189) hide show
  1. package/Models/DatabaseModels/Index.ts +11 -0
  2. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +43 -0
  3. package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +662 -0
  4. package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +584 -0
  5. package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +546 -0
  6. package/Models/DatabaseModels/UserOnCallShiftReminder.ts +231 -0
  7. package/Models/DatabaseModels/UserOnCallShiftReminderLog.ts +331 -0
  8. package/Server/API/OnCallCalendarAPI.ts +2194 -0
  9. package/Server/EnvironmentConfig.ts +138 -0
  10. package/Server/Infrastructure/OnCallCalendarFeedCache.ts +1050 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.ts +253 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  13. package/Server/Middleware/OnCallCalendarFeedRateLimit.ts +487 -0
  14. package/Server/Services/Index.ts +12 -0
  15. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +32 -0
  16. package/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts +260 -0
  17. package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +70 -3
  18. package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +138 -3
  19. package/Server/Services/OnCallDutyPolicyScheduleService.ts +1465 -134
  20. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +167 -31
  21. package/Server/Services/ProjectOnCallCalendarFeedService.ts +192 -0
  22. package/Server/Services/TeamMemberService.ts +489 -1
  23. package/Server/Services/TeamService.ts +50 -0
  24. package/Server/Services/UserNotificationSettingService.ts +44 -1
  25. package/Server/Services/UserOnCallCalendarFeedService.ts +159 -0
  26. package/Server/Services/UserOnCallShiftReminderLogService.ts +151 -0
  27. package/Server/Services/UserOnCallShiftReminderService.ts +112 -0
  28. package/Server/Utils/OnCall/CalendarFeedToken.ts +241 -0
  29. package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1488 -0
  30. package/Server/Utils/OnCall/OnCallCalendarFeedUrls.ts +230 -0
  31. package/Server/Utils/OnCall/OnCallShiftChangeListeners.ts +227 -0
  32. package/Server/Utils/OnCall/OnCallShiftMaterializer.ts +1127 -0
  33. package/Server/Utils/OnCall/OnCallShiftReminderListener.ts +174 -0
  34. package/Server/Utils/OnCall/OnCallShiftReminderRunner.ts +2584 -0
  35. package/Server/Utils/Response.ts +134 -0
  36. package/Server/Utils/StartServer.ts +10 -0
  37. package/Server/Utils/Telemetry/AppMetrics.ts +51 -0
  38. package/Tests/App/Dashboard/OnCallCalendarFeedLinks.test.tsx +229 -0
  39. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +489 -0
  40. package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +149 -0
  41. package/Tests/App/Dashboard/OnCallCalendarFeedUtil.test.ts +855 -0
  42. package/Tests/App/Dashboard/OnCallPersonalCalendarFeed.test.tsx +1209 -0
  43. package/Tests/App/Dashboard/OnCallSharedCalendarFeedCard.test.tsx +1019 -0
  44. package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +655 -0
  45. package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +73 -0
  46. package/Tests/Models/OnCallCalendarFeedModels.test.ts +642 -0
  47. package/Tests/Models/OnCallDutyPolicyScheduleCalendarFeed.test.ts +288 -0
  48. package/Tests/Models/OnCallDutyPolicyScheduleShiftConfigVersion.test.ts +88 -0
  49. package/Tests/Models/UserOnCallShiftReminderModels.test.ts +368 -0
  50. package/Tests/Server/API/Helpers.ts +8 -0
  51. package/Tests/Server/API/OnCallCalendarAPI.test.ts +4461 -0
  52. package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +357 -0
  53. package/Tests/Server/Infrastructure/OnCallCalendarFeedCache.test.ts +1589 -0
  54. package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +369 -0
  55. package/Tests/Server/Middleware/OnCallCalendarFeedRateLimit.test.ts +1365 -0
  56. package/Tests/Server/Services/FeedRetentionConsistency.test.ts +70 -0
  57. package/Tests/Server/Services/OnCallCalendarFeedServices.test.ts +1103 -0
  58. package/Tests/Server/Services/OnCallDutyPolicyScheduleResolver.test.ts +1037 -0
  59. package/Tests/Server/Services/OnCallShiftConfigPropagation.test.ts +1270 -0
  60. package/Tests/Server/Services/TeamDeleteMemberCleanup.test.ts +156 -0
  61. package/Tests/Server/Services/TeamMemberOnCallCleanup.test.ts +755 -0
  62. package/Tests/Server/Services/UserNotificationSettingShiftReminderDefaults.test.ts +267 -0
  63. package/Tests/Server/Services/UserOnCallShiftReminderServices.test.ts +583 -0
  64. package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +254 -0
  65. package/Tests/Server/Utils/OnCall/CalendarFeedToken.test.ts +467 -0
  66. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedRenderer.test.ts +2142 -0
  67. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedUrls.test.ts +278 -0
  68. package/Tests/Server/Utils/OnCall/OnCallResolverTestHarness.ts +440 -0
  69. package/Tests/Server/Utils/OnCall/OnCallShiftChangeListeners.test.ts +314 -0
  70. package/Tests/Server/Utils/OnCall/OnCallShiftMaterializer.test.ts +1502 -0
  71. package/Tests/Server/Utils/OnCall/OnCallShiftReminderListener.test.ts +491 -0
  72. package/Tests/Server/Utils/OnCall/OnCallShiftReminderRunner.test.ts +3088 -0
  73. package/Tests/Server/Utils/OnCall/OnCallShiftReminderTestHarness.ts +910 -0
  74. package/Tests/Server/Utils/ResponseSendCalendarResponse.test.ts +561 -0
  75. package/Tests/Server/Utils/StartServerEncryptionSecretWarning.test.ts +64 -0
  76. package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +29 -0
  77. package/Tests/Types/Calendar/ICalendar.test.ts +488 -0
  78. package/Tests/Types/NotificationSetting/NotificationSettingEventType.test.ts +53 -0
  79. package/Tests/Types/OnCallDutyPolicy/CalendarFeedTestFixtures.ts +310 -0
  80. package/Tests/Types/OnCallDutyPolicy/CalendarFeedWindow.test.ts +205 -0
  81. package/Tests/Types/OnCallDutyPolicy/LayerUtilLayerMetaAndIterationCap.test.ts +458 -0
  82. package/Tests/Types/OnCallDutyPolicy/MaterializedShift.test.ts +197 -0
  83. package/Tests/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.test.ts +1986 -0
  84. package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtilGroupKey.test.ts +678 -0
  85. package/Tests/Types/OnCallDutyPolicy/ShiftSeamUtil.test.ts +417 -0
  86. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
  87. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
  88. package/Types/Calendar/ICalendar.ts +442 -0
  89. package/Types/Email/EmailTemplateType.ts +2 -0
  90. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  91. package/Types/OnCallDutyPolicy/CalendarFeedWindow.ts +140 -0
  92. package/Types/OnCallDutyPolicy/Layer.ts +190 -35
  93. package/Types/OnCallDutyPolicy/MaterializedShift.ts +274 -0
  94. package/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts +1415 -0
  95. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +159 -4
  96. package/Types/OnCallDutyPolicy/ShiftSeamUtil.ts +106 -0
  97. package/build/dist/Models/DatabaseModels/Index.js +11 -0
  98. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  99. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +44 -0
  100. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  101. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +699 -0
  102. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -0
  103. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +620 -0
  104. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -0
  105. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +585 -0
  106. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -0
  107. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js +247 -0
  108. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js.map +1 -0
  109. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js +355 -0
  110. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js.map +1 -0
  111. package/build/dist/Server/API/OnCallCalendarAPI.js +1371 -0
  112. package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -0
  113. package/build/dist/Server/EnvironmentConfig.js +102 -0
  114. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  115. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js +663 -0
  116. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js.map +1 -0
  117. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js +103 -0
  118. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js.map +1 -0
  119. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  120. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  121. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js +342 -0
  122. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js.map +1 -0
  123. package/build/dist/Server/Services/Index.js +12 -0
  124. package/build/dist/Server/Services/Index.js.map +1 -1
  125. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +20 -0
  126. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  127. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js +219 -0
  128. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js.map +1 -0
  129. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +47 -3
  130. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
  131. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +112 -3
  132. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
  133. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +955 -9
  134. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  135. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +93 -6
  136. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  137. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js +157 -0
  138. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js.map +1 -0
  139. package/build/dist/Server/Services/TeamMemberService.js +396 -1
  140. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  141. package/build/dist/Server/Services/TeamService.js +43 -0
  142. package/build/dist/Server/Services/TeamService.js.map +1 -1
  143. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -1
  144. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  145. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js +140 -0
  146. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js.map +1 -0
  147. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js +116 -0
  148. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js.map +1 -0
  149. package/build/dist/Server/Services/UserOnCallShiftReminderService.js +92 -0
  150. package/build/dist/Server/Services/UserOnCallShiftReminderService.js.map +1 -0
  151. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js +161 -0
  152. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js.map +1 -0
  153. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js +983 -0
  154. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js.map +1 -0
  155. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js +155 -0
  156. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js.map +1 -0
  157. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js +145 -0
  158. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js.map +1 -0
  159. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js +752 -0
  160. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js.map +1 -0
  161. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js +92 -0
  162. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js.map +1 -0
  163. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js +1786 -0
  164. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js.map +1 -0
  165. package/build/dist/Server/Utils/Response.js +97 -0
  166. package/build/dist/Server/Utils/Response.js.map +1 -1
  167. package/build/dist/Server/Utils/StartServer.js +9 -1
  168. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  169. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +41 -0
  170. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  171. package/build/dist/Types/Calendar/ICalendar.js +290 -0
  172. package/build/dist/Types/Calendar/ICalendar.js.map +1 -0
  173. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  174. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  175. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  176. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  177. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js +97 -0
  178. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js.map +1 -0
  179. package/build/dist/Types/OnCallDutyPolicy/Layer.js +113 -19
  180. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  181. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js +134 -0
  182. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js.map +1 -0
  183. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js +800 -0
  184. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js.map +1 -0
  185. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +97 -3
  186. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  187. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js +77 -0
  188. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js.map +1 -0
  189. package/package.json +1 -1
@@ -0,0 +1,219 @@
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 DatabaseService from "./DatabaseService";
11
+ import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
12
+ import CalendarFeedToken from "../Utils/OnCall/CalendarFeedToken";
13
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
14
+ import Model from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed";
15
+ import LIMIT_MAX from "../../Types/Database/LimitMax";
16
+ import BadDataException from "../../Types/Exception/BadDataException";
17
+ import NotFoundException from "../../Types/Exception/NotFoundException";
18
+ import CalendarFeedWindow from "../../Types/OnCallDutyPolicy/CalendarFeedWindow";
19
+ /*
20
+ * Bounds for the coverage-gap threshold: a gap shorter than a minute is a
21
+ * seam artefact, and a threshold longer than a week would never emit.
22
+ */
23
+ export const MIN_MINIMUM_GAP_MINUTES = 1;
24
+ export const MAX_MINIMUM_GAP_MINUTES = 7 * 24 * 60;
25
+ /*
26
+ * The shared, project-owned calendar feed of one on-call schedule.
27
+ *
28
+ * WHAT THE HOOKS GUARANTEE
29
+ *
30
+ * - The schedule exists in the caller's project. The foreign key alone
31
+ * would accept a schedule from another project (the FK does not know
32
+ * about tenants), and a feed that renders another project's roster to
33
+ * whoever holds this project's link is exactly the leak the tenant column
34
+ * exists to prevent.
35
+ * - One feed per schedule. The unique index enforces it at the database;
36
+ * the hook turns the constraint violation into a message a person can
37
+ * act on.
38
+ * - The token is minted HERE, on every create, whatever the request
39
+ * carried. Publishing a feed is a normal, permission-checked create
40
+ * (the schedule's Edit list), and the plaintext is then read back by the
41
+ * calendar API's `/current` route through the encrypted `token` column.
42
+ * - pastDays / futureDays are clamped and minimumGapMinutes is bounded on
43
+ * every write.
44
+ *
45
+ * rotateTokenById and rotateFeedsForMemberLeave are root writes for the
46
+ * calendar API and the team-member cleanup respectively; cache purging stays
47
+ * with the caller.
48
+ */
49
+ export class Service extends DatabaseService {
50
+ constructor() {
51
+ super(Model);
52
+ }
53
+ async onBeforeCreate(createBy) {
54
+ const projectId = createBy.data.projectId || createBy.props.tenantId;
55
+ if (!projectId) {
56
+ throw new BadDataException("projectId is required");
57
+ }
58
+ const scheduleId = createBy.data.onCallDutyPolicyScheduleId;
59
+ if (!scheduleId) {
60
+ throw new BadDataException("onCallDutyPolicyScheduleId is required");
61
+ }
62
+ createBy.data.projectId = projectId;
63
+ const schedule = await OnCallDutyPolicyScheduleService.findOneBy({
64
+ query: {
65
+ _id: scheduleId,
66
+ projectId: projectId,
67
+ },
68
+ select: {
69
+ _id: true,
70
+ },
71
+ props: {
72
+ isRoot: true,
73
+ ignoreHooks: true,
74
+ },
75
+ });
76
+ if (!schedule) {
77
+ throw new BadDataException("On-call schedule not found in this project.");
78
+ }
79
+ const existing = await this.countBy({
80
+ query: {
81
+ onCallDutyPolicyScheduleId: scheduleId,
82
+ },
83
+ props: {
84
+ isRoot: true,
85
+ },
86
+ });
87
+ if (existing.toNumber() > 0) {
88
+ throw new BadDataException("This schedule already has a shared calendar feed. Regenerate or edit the existing one instead.");
89
+ }
90
+ /*
91
+ * A request body never chooses the secret. Root callers (the calendar
92
+ * API) may pass a token they minted so they can answer with the URL in
93
+ * the same response; everyone else gets a fresh mint.
94
+ */
95
+ CalendarFeedToken.applyTokenColumnsOnCreate(createBy.data, {
96
+ trustSuppliedToken: createBy.props.isRoot === true,
97
+ });
98
+ createBy.data.pastDays = CalendarFeedWindow.clampPastDays(createBy.data.pastDays);
99
+ createBy.data.futureDays = CalendarFeedWindow.clampFutureDays(createBy.data.futureDays);
100
+ if (createBy.data.minimumGapMinutes !== undefined) {
101
+ createBy.data.minimumGapMinutes = Service.validateMinimumGapMinutes(createBy.data.minimumGapMinutes);
102
+ }
103
+ return { createBy, carryForward: null };
104
+ }
105
+ async onBeforeUpdate(updateBy) {
106
+ if (updateBy.data.pastDays !== undefined) {
107
+ updateBy.data.pastDays = CalendarFeedWindow.clampPastDays(updateBy.data.pastDays);
108
+ }
109
+ if (updateBy.data.futureDays !== undefined) {
110
+ updateBy.data.futureDays = CalendarFeedWindow.clampFutureDays(updateBy.data.futureDays);
111
+ }
112
+ if (updateBy.data.minimumGapMinutes !== undefined) {
113
+ updateBy.data.minimumGapMinutes = Service.validateMinimumGapMinutes(updateBy.data.minimumGapMinutes);
114
+ }
115
+ return { updateBy, carryForward: null };
116
+ }
117
+ /*
118
+ * A whole number of minutes between MIN_MINIMUM_GAP_MINUTES and
119
+ * MAX_MINIMUM_GAP_MINUTES. Numeric strings are accepted because a root
120
+ * caller may hand over what a form posted; anything else is a 400.
121
+ */
122
+ static validateMinimumGapMinutes(value) {
123
+ const parsed = typeof value === "string" && value.trim() !== ""
124
+ ? Number(value)
125
+ : value;
126
+ if (typeof parsed !== "number" ||
127
+ !Number.isInteger(parsed) ||
128
+ parsed < MIN_MINIMUM_GAP_MINUTES ||
129
+ parsed > MAX_MINIMUM_GAP_MINUTES) {
130
+ throw new BadDataException(`Minimum gap must be a whole number of minutes between ${MIN_MINIMUM_GAP_MINUTES} and ${MAX_MINIMUM_GAP_MINUTES}.`);
131
+ }
132
+ return parsed;
133
+ }
134
+ /**
135
+ * Rotate the token of an existing feed: mint a new one, move the current
136
+ * hash into the 30-day grace slot, stamp rotatedAt. Returns the new
137
+ * plaintext token ONCE. Root write; the caller purges caches.
138
+ */
139
+ async rotateTokenById(data) {
140
+ const existing = await this.findOneBy({
141
+ query: { _id: data.id },
142
+ select: { _id: true, tokenHash: true },
143
+ props: { isRoot: true, ignoreHooks: true },
144
+ });
145
+ if (!existing) {
146
+ throw new NotFoundException("Calendar feed not found.");
147
+ }
148
+ const rotation = CalendarFeedToken.buildRotation({
149
+ currentTokenHash: existing.tokenHash,
150
+ });
151
+ await this.updateOneById({
152
+ id: data.id,
153
+ data: CalendarFeedToken.toRotationUpdateData(rotation),
154
+ props: { isRoot: true },
155
+ });
156
+ return rotation;
157
+ }
158
+ /**
159
+ * Rotate every ENABLED feed in the project that opted into
160
+ * rotateWhenMemberLeaves. Called by the team-member cleanup when a user's
161
+ * last team membership in the project goes away. Returns the ids rotated
162
+ * so the caller can purge their caches. A disabled feed is left alone: it
163
+ * already serves an empty calendar, and rotating it would only reset the
164
+ * grace clock on a link nobody should be refreshing anyway.
165
+ */
166
+ async rotateFeedsForMemberLeave(data) {
167
+ const feeds = await this.findBy({
168
+ query: {
169
+ projectId: data.projectId,
170
+ isEnabled: true,
171
+ rotateWhenMemberLeaves: true,
172
+ },
173
+ select: {
174
+ _id: true,
175
+ },
176
+ limit: LIMIT_MAX,
177
+ skip: 0,
178
+ props: {
179
+ isRoot: true,
180
+ ignoreHooks: true,
181
+ },
182
+ });
183
+ const rotated = [];
184
+ for (const feed of feeds) {
185
+ if (!feed.id) {
186
+ continue;
187
+ }
188
+ await this.rotateTokenById({ id: feed.id });
189
+ rotated.push(feed.id);
190
+ }
191
+ return rotated;
192
+ }
193
+ }
194
+ __decorate([
195
+ CaptureSpan(),
196
+ __metadata("design:type", Function),
197
+ __metadata("design:paramtypes", [Object]),
198
+ __metadata("design:returntype", Promise)
199
+ ], Service.prototype, "onBeforeCreate", null);
200
+ __decorate([
201
+ CaptureSpan(),
202
+ __metadata("design:type", Function),
203
+ __metadata("design:paramtypes", [Object]),
204
+ __metadata("design:returntype", Promise)
205
+ ], Service.prototype, "onBeforeUpdate", null);
206
+ __decorate([
207
+ CaptureSpan(),
208
+ __metadata("design:type", Function),
209
+ __metadata("design:paramtypes", [Object]),
210
+ __metadata("design:returntype", Promise)
211
+ ], Service.prototype, "rotateTokenById", null);
212
+ __decorate([
213
+ CaptureSpan(),
214
+ __metadata("design:type", Function),
215
+ __metadata("design:paramtypes", [Object]),
216
+ __metadata("design:returntype", Promise)
217
+ ], Service.prototype, "rotateFeedsForMemberLeave", null);
218
+ export default new Service();
219
+ //# sourceMappingURL=OnCallDutyPolicyScheduleCalendarFeedService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleCalendarFeedService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,48 @@ import OneUptimeDate from "../../Types/Date";
18
18
  import Model from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleLayer";
19
19
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
20
20
  import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
21
+ import { OnCallShiftChangeReason } from "../Utils/OnCall/OnCallShiftChangeListeners";
22
+ import logger from "../Utils/Logger";
21
23
  export class Service extends DatabaseService {
22
24
  constructor() {
23
25
  super(Model);
24
26
  }
27
+ /*
28
+ * A layer edit changes who is on call and when for the whole schedule:
29
+ * bump its shiftConfigVersion, drop the calendar-feed caches and let the
30
+ * shift-change listeners re-plan. Runs AFTER the roster refresh so a
31
+ * listener that re-materializes sees the new configuration. Best-effort by
32
+ * construction (propagateShiftConfigChange never throws).
33
+ */
34
+ async propagateLayerChange(scheduleId, projectId) {
35
+ if (!scheduleId) {
36
+ return;
37
+ }
38
+ await OnCallDutyPolicyScheduleService.propagateShiftConfigChange({
39
+ scheduleIds: [scheduleId],
40
+ projectId: projectId || null,
41
+ reason: OnCallShiftChangeReason.LayerChanged,
42
+ });
43
+ }
44
+ /**
45
+ * Re-resolve and persist the schedule's roster after a layer change.
46
+ * Best-effort: the row is already committed when the success hooks run, so
47
+ * a throwing refresh (a concurrently-deleted schedule, a transient
48
+ * persistence or notification failure) must not abort the hook before
49
+ * propagateLayerChange bumps the shiftConfigVersion and purges the feed
50
+ * caches — otherwise the caches would keep serving the pre-edit roster for
51
+ * up to their TTL and the reminder change pass would be skipped. Mirrors
52
+ * OnCallDutyPolicyEscalationRuleScheduleService.refreshScheduleRoster.
53
+ */
54
+ async refreshScheduleRosterBestEffort(scheduleId) {
55
+ try {
56
+ await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(scheduleId);
57
+ }
58
+ catch (err) {
59
+ logger.error("Error refreshing the schedule roster after a layer change (best-effort).");
60
+ logger.error(err);
61
+ }
62
+ }
25
63
  /*
26
64
  * A rotation interval count of 0 / NaN / negative breaks the handoff math
27
65
  * (division by zero, Invalid Date), so reject it at the persistence boundary.
@@ -114,6 +152,7 @@ export class Service extends DatabaseService {
114
152
  id: createdItem.id,
115
153
  select: {
116
154
  onCallDutyPolicyScheduleId: true,
155
+ projectId: true,
117
156
  },
118
157
  props: {
119
158
  isRoot: true,
@@ -122,7 +161,8 @@ export class Service extends DatabaseService {
122
161
  if (!resource || !resource.onCallDutyPolicyScheduleId) {
123
162
  return createdItem;
124
163
  }
125
- await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(resource.onCallDutyPolicyScheduleId);
164
+ await this.refreshScheduleRosterBestEffort(resource.onCallDutyPolicyScheduleId);
165
+ await this.propagateLayerChange(resource.onCallDutyPolicyScheduleId, resource.projectId);
126
166
  return createdItem;
127
167
  }
128
168
  async onBeforeUpdate(updateBy) {
@@ -139,6 +179,7 @@ export class Service extends DatabaseService {
139
179
  id: item,
140
180
  select: {
141
181
  onCallDutyPolicyScheduleId: true,
182
+ projectId: true,
142
183
  },
143
184
  props: {
144
185
  isRoot: true,
@@ -147,7 +188,8 @@ export class Service extends DatabaseService {
147
188
  if (!resource || !resource.onCallDutyPolicyScheduleId) {
148
189
  continue;
149
190
  }
150
- await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(resource.onCallDutyPolicyScheduleId);
191
+ await this.refreshScheduleRosterBestEffort(resource.onCallDutyPolicyScheduleId);
192
+ await this.propagateLayerChange(resource.onCallDutyPolicyScheduleId, resource.projectId);
151
193
  }
152
194
  return {
153
195
  updateBy: _onUpdate.updateBy,
@@ -179,6 +221,7 @@ export class Service extends DatabaseService {
179
221
  select: {
180
222
  order: true,
181
223
  onCallDutyPolicyScheduleId: true,
224
+ projectId: true,
182
225
  },
183
226
  });
184
227
  }
@@ -193,7 +236,8 @@ export class Service extends DatabaseService {
193
236
  if (!deleteBy.props.isRoot && resource) {
194
237
  if (resource && resource.order && resource.onCallDutyPolicyScheduleId) {
195
238
  await this.rearrangeOrder(resource.order, resource.onCallDutyPolicyScheduleId, false);
196
- await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(resource.onCallDutyPolicyScheduleId);
239
+ await this.refreshScheduleRosterBestEffort(resource.onCallDutyPolicyScheduleId);
240
+ await this.propagateLayerChange(resource.onCallDutyPolicyScheduleId, resource.projectId);
197
241
  }
198
242
  }
199
243
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"OnCallDutyPolicyScheduleLayerService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleLayerService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleLayerService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleLayerService.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,107 @@ import DatabaseService from "./DatabaseService";
12
12
  import SortOrder from "../../Types/BaseDatabase/SortOrder";
13
13
  import LIMIT_MAX from "../../Types/Database/LimitMax";
14
14
  import BadDataException from "../../Types/Exception/BadDataException";
15
+ import ObjectID from "../../Types/ObjectID";
15
16
  import Model from "../../Models/DatabaseModels/OnCallDutyPolicyScheduleLayerUser";
16
17
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
17
18
  import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
19
+ import { OnCallShiftChangeReason } from "../Utils/OnCall/OnCallShiftChangeListeners";
20
+ import logger from "../Utils/Logger";
18
21
  export class Service extends DatabaseService {
19
22
  constructor() {
20
23
  super(Model);
21
24
  }
25
+ /*
26
+ * Adding, removing or re-ordering a layer user rewrites the rotation of the
27
+ * whole schedule (the engine derives every position from the current user
28
+ * list), so the schedule's shiftConfigVersion is bumped, its feed caches
29
+ * dropped, and the listeners told — naming the user the row belongs to so
30
+ * their personal feed and reminders are refreshed even when they are no
31
+ * longer a member. Runs after the roster refresh; never throws.
32
+ */
33
+ async propagateLayerUserChange(scheduleId, projectId, userId) {
34
+ if (!scheduleId) {
35
+ return;
36
+ }
37
+ await OnCallDutyPolicyScheduleService.propagateShiftConfigChange({
38
+ scheduleIds: [scheduleId],
39
+ projectId: projectId || null,
40
+ userIds: userId ? [userId] : [],
41
+ reason: OnCallShiftChangeReason.LayerUserChanged,
42
+ });
43
+ }
44
+ /**
45
+ * Re-resolve and persist the schedule's roster after a layer-user change.
46
+ * Best-effort: the row is already committed when the success hooks run, so
47
+ * a throwing refresh (a concurrently-deleted schedule, a transient
48
+ * persistence or notification failure) must not abort the hook before
49
+ * propagateLayerUserChange bumps the shiftConfigVersion and purges the
50
+ * feed caches — otherwise the caches would keep serving the pre-edit
51
+ * roster for up to their TTL and the reminder change pass would be
52
+ * skipped. Mirrors
53
+ * OnCallDutyPolicyEscalationRuleScheduleService.refreshScheduleRoster.
54
+ */
55
+ async refreshScheduleRosterBestEffort(scheduleId) {
56
+ try {
57
+ await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(scheduleId);
58
+ }
59
+ catch (err) {
60
+ logger.error("Error refreshing the schedule roster after a layer-user change (best-effort).");
61
+ logger.error(err);
62
+ }
63
+ }
64
+ /**
65
+ * Renumber the users of a layer 1..n by their current order. Used by the
66
+ * team-member cleanup, which deletes layer-user rows as root (the per-row
67
+ * re-sequencing in onDeleteSuccess only runs for non-root deletes) and
68
+ * must restore the contiguous 1-based order the create-default (count + 1)
69
+ * and delete paths rely on. Idempotent.
70
+ */
71
+ async resequenceOrderInLayer(onCallDutyPolicyScheduleLayerId) {
72
+ const rows = await this.findBy({
73
+ query: {
74
+ onCallDutyPolicyScheduleLayerId: onCallDutyPolicyScheduleLayerId,
75
+ },
76
+ select: {
77
+ _id: true,
78
+ order: true,
79
+ },
80
+ sort: {
81
+ order: SortOrder.Ascending,
82
+ },
83
+ limit: LIMIT_MAX,
84
+ skip: 0,
85
+ props: {
86
+ isRoot: true,
87
+ },
88
+ });
89
+ let expectedOrder = 1;
90
+ for (const row of rows) {
91
+ if (row.order !== expectedOrder && row._id) {
92
+ /*
93
+ * ignoreHooks: renumbering is bookkeeping, not a roster change — the
94
+ * caller (the team-member cleanup) refreshes and propagates once per
95
+ * schedule itself. With hooks on, every renumbered row would run a
96
+ * full onUpdateSuccess (semaphore-locked roster refresh + version
97
+ * bump + cache purge + listener pass), i.e. N-1 redundant refreshes
98
+ * per layer, and any hook throw would abort the remaining renumbering.
99
+ */
100
+ await this.updateOneBy({
101
+ query: {
102
+ _id: row._id,
103
+ },
104
+ data: {
105
+ order: expectedOrder,
106
+ },
107
+ props: {
108
+ isRoot: true,
109
+ ignoreHooks: true,
110
+ },
111
+ });
112
+ }
113
+ expectedOrder++;
114
+ }
115
+ }
22
116
  async onBeforeCreate(createBy) {
23
117
  var _a;
24
118
  if (!createBy.data.onCallDutyPolicyScheduleLayerId) {
@@ -55,7 +149,8 @@ export class Service extends DatabaseService {
55
149
  resource.onCallDutyPolicyScheduleLayerId) {
56
150
  await this.rearrangeOrder(resource.order, resource.onCallDutyPolicyScheduleLayerId, false);
57
151
  if (resource.onCallDutyPolicyScheduleId) {
58
- await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(resource.onCallDutyPolicyScheduleId);
152
+ await this.refreshScheduleRosterBestEffort(resource.onCallDutyPolicyScheduleId);
153
+ await this.propagateLayerUserChange(resource.onCallDutyPolicyScheduleId, resource.projectId, resource.userId);
59
154
  }
60
155
  }
61
156
  }
@@ -79,6 +174,8 @@ export class Service extends DatabaseService {
79
174
  order: true,
80
175
  onCallDutyPolicyScheduleLayerId: true,
81
176
  onCallDutyPolicyScheduleId: true,
177
+ projectId: true,
178
+ userId: true,
82
179
  },
83
180
  });
84
181
  }
@@ -92,6 +189,8 @@ export class Service extends DatabaseService {
92
189
  id: createdItem.id,
93
190
  select: {
94
191
  onCallDutyPolicyScheduleId: true,
192
+ projectId: true,
193
+ userId: true,
95
194
  },
96
195
  props: {
97
196
  isRoot: true,
@@ -100,7 +199,8 @@ export class Service extends DatabaseService {
100
199
  if (!resource || !resource.onCallDutyPolicyScheduleId) {
101
200
  return createdItem;
102
201
  }
103
- await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(resource.onCallDutyPolicyScheduleId);
202
+ await this.refreshScheduleRosterBestEffort(resource.onCallDutyPolicyScheduleId);
203
+ await this.propagateLayerUserChange(resource.onCallDutyPolicyScheduleId, resource.projectId, resource.userId);
104
204
  return createdItem;
105
205
  }
106
206
  async onUpdateSuccess(_onUpdate, updatedItemIds) {
@@ -109,6 +209,8 @@ export class Service extends DatabaseService {
109
209
  id: item,
110
210
  select: {
111
211
  onCallDutyPolicyScheduleId: true,
212
+ projectId: true,
213
+ userId: true,
112
214
  },
113
215
  props: {
114
216
  isRoot: true,
@@ -117,7 +219,8 @@ export class Service extends DatabaseService {
117
219
  if (!resource || !resource.onCallDutyPolicyScheduleId) {
118
220
  continue;
119
221
  }
120
- await OnCallDutyPolicyScheduleService.refreshCurrentUserIdAndHandoffTimeInSchedule(resource.onCallDutyPolicyScheduleId);
222
+ await this.refreshScheduleRosterBestEffort(resource.onCallDutyPolicyScheduleId);
223
+ await this.propagateLayerUserChange(resource.onCallDutyPolicyScheduleId, resource.projectId, resource.userId);
121
224
  }
122
225
  return {
123
226
  updateBy: _onUpdate.updateBy,
@@ -248,6 +351,12 @@ export class Service extends DatabaseService {
248
351
  }
249
352
  }
250
353
  }
354
+ __decorate([
355
+ CaptureSpan(),
356
+ __metadata("design:type", Function),
357
+ __metadata("design:paramtypes", [ObjectID]),
358
+ __metadata("design:returntype", Promise)
359
+ ], Service.prototype, "resequenceOrderInLayer", null);
251
360
  __decorate([
252
361
  CaptureSpan(),
253
362
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"OnCallDutyPolicyScheduleLayerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OnCallDutyPolicyScheduleLayerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts"],"names":[],"mappings":"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"}