@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.
- package/Models/DatabaseModels/Index.ts +11 -0
- package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +43 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +662 -0
- package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +584 -0
- package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +546 -0
- package/Models/DatabaseModels/UserOnCallShiftReminder.ts +231 -0
- package/Models/DatabaseModels/UserOnCallShiftReminderLog.ts +331 -0
- package/Server/API/OnCallCalendarAPI.ts +2194 -0
- package/Server/EnvironmentConfig.ts +138 -0
- package/Server/Infrastructure/OnCallCalendarFeedCache.ts +1050 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.ts +253 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Middleware/OnCallCalendarFeedRateLimit.ts +487 -0
- package/Server/Services/Index.ts +12 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +32 -0
- package/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts +260 -0
- package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +70 -3
- package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +138 -3
- package/Server/Services/OnCallDutyPolicyScheduleService.ts +1465 -134
- package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +167 -31
- package/Server/Services/ProjectOnCallCalendarFeedService.ts +192 -0
- package/Server/Services/TeamMemberService.ts +489 -1
- package/Server/Services/TeamService.ts +50 -0
- package/Server/Services/UserNotificationSettingService.ts +44 -1
- package/Server/Services/UserOnCallCalendarFeedService.ts +159 -0
- package/Server/Services/UserOnCallShiftReminderLogService.ts +151 -0
- package/Server/Services/UserOnCallShiftReminderService.ts +112 -0
- package/Server/Utils/OnCall/CalendarFeedToken.ts +241 -0
- package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1488 -0
- package/Server/Utils/OnCall/OnCallCalendarFeedUrls.ts +230 -0
- package/Server/Utils/OnCall/OnCallShiftChangeListeners.ts +227 -0
- package/Server/Utils/OnCall/OnCallShiftMaterializer.ts +1127 -0
- package/Server/Utils/OnCall/OnCallShiftReminderListener.ts +174 -0
- package/Server/Utils/OnCall/OnCallShiftReminderRunner.ts +2584 -0
- package/Server/Utils/Response.ts +134 -0
- package/Server/Utils/StartServer.ts +10 -0
- package/Server/Utils/Telemetry/AppMetrics.ts +51 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedLinks.test.tsx +229 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +489 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +149 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedUtil.test.ts +855 -0
- package/Tests/App/Dashboard/OnCallPersonalCalendarFeed.test.tsx +1209 -0
- package/Tests/App/Dashboard/OnCallSharedCalendarFeedCard.test.tsx +1019 -0
- package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +655 -0
- package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +73 -0
- package/Tests/Models/OnCallCalendarFeedModels.test.ts +642 -0
- package/Tests/Models/OnCallDutyPolicyScheduleCalendarFeed.test.ts +288 -0
- package/Tests/Models/OnCallDutyPolicyScheduleShiftConfigVersion.test.ts +88 -0
- package/Tests/Models/UserOnCallShiftReminderModels.test.ts +368 -0
- package/Tests/Server/API/Helpers.ts +8 -0
- package/Tests/Server/API/OnCallCalendarAPI.test.ts +4461 -0
- package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +357 -0
- package/Tests/Server/Infrastructure/OnCallCalendarFeedCache.test.ts +1589 -0
- package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +369 -0
- package/Tests/Server/Middleware/OnCallCalendarFeedRateLimit.test.ts +1365 -0
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +70 -0
- package/Tests/Server/Services/OnCallCalendarFeedServices.test.ts +1103 -0
- package/Tests/Server/Services/OnCallDutyPolicyScheduleResolver.test.ts +1037 -0
- package/Tests/Server/Services/OnCallShiftConfigPropagation.test.ts +1270 -0
- package/Tests/Server/Services/TeamDeleteMemberCleanup.test.ts +156 -0
- package/Tests/Server/Services/TeamMemberOnCallCleanup.test.ts +755 -0
- package/Tests/Server/Services/UserNotificationSettingShiftReminderDefaults.test.ts +267 -0
- package/Tests/Server/Services/UserOnCallShiftReminderServices.test.ts +583 -0
- package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +254 -0
- package/Tests/Server/Utils/OnCall/CalendarFeedToken.test.ts +467 -0
- package/Tests/Server/Utils/OnCall/OnCallCalendarFeedRenderer.test.ts +2142 -0
- package/Tests/Server/Utils/OnCall/OnCallCalendarFeedUrls.test.ts +278 -0
- package/Tests/Server/Utils/OnCall/OnCallResolverTestHarness.ts +440 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftChangeListeners.test.ts +314 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftMaterializer.test.ts +1502 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftReminderListener.test.ts +491 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftReminderRunner.test.ts +3088 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftReminderTestHarness.ts +910 -0
- package/Tests/Server/Utils/ResponseSendCalendarResponse.test.ts +561 -0
- package/Tests/Server/Utils/StartServerEncryptionSecretWarning.test.ts +64 -0
- package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +29 -0
- package/Tests/Types/Calendar/ICalendar.test.ts +488 -0
- package/Tests/Types/NotificationSetting/NotificationSettingEventType.test.ts +53 -0
- package/Tests/Types/OnCallDutyPolicy/CalendarFeedTestFixtures.ts +310 -0
- package/Tests/Types/OnCallDutyPolicy/CalendarFeedWindow.test.ts +205 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilLayerMetaAndIterationCap.test.ts +458 -0
- package/Tests/Types/OnCallDutyPolicy/MaterializedShift.test.ts +197 -0
- package/Tests/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.test.ts +1986 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtilGroupKey.test.ts +678 -0
- package/Tests/Types/OnCallDutyPolicy/ShiftSeamUtil.test.ts +417 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
- package/Types/Calendar/ICalendar.ts +442 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
- package/Types/OnCallDutyPolicy/CalendarFeedWindow.ts +140 -0
- package/Types/OnCallDutyPolicy/Layer.ts +190 -35
- package/Types/OnCallDutyPolicy/MaterializedShift.ts +274 -0
- package/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts +1415 -0
- package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +159 -4
- package/Types/OnCallDutyPolicy/ShiftSeamUtil.ts +106 -0
- package/build/dist/Models/DatabaseModels/Index.js +11 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +44 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +699 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +620 -0
- package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +585 -0
- package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js +247 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js +355 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js.map +1 -0
- package/build/dist/Server/API/OnCallCalendarAPI.js +1371 -0
- package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -0
- package/build/dist/Server/EnvironmentConfig.js +102 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js +663 -0
- package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js +103 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js +342 -0
- package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js.map +1 -0
- package/build/dist/Server/Services/Index.js +12 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +20 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js +219 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +47 -3
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +112 -3
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +955 -9
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +93 -6
- package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
- package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js +157 -0
- package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js.map +1 -0
- package/build/dist/Server/Services/TeamMemberService.js +396 -1
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TeamService.js +43 -0
- package/build/dist/Server/Services/TeamService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +26 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallCalendarFeedService.js +140 -0
- package/build/dist/Server/Services/UserOnCallCalendarFeedService.js.map +1 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js +116 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js.map +1 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderService.js +92 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderService.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js +161 -0
- package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js +983 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js +155 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js +145 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js +752 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js +92 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js +1786 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js.map +1 -0
- package/build/dist/Server/Utils/Response.js +97 -0
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +9 -1
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/AppMetrics.js +41 -0
- package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
- package/build/dist/Types/Calendar/ICalendar.js +290 -0
- package/build/dist/Types/Calendar/ICalendar.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +2 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js +97 -0
- package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/Layer.js +113 -19
- package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js +134 -0
- package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js +800 -0
- package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +97 -3
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js +77 -0
- package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnCallCalendarFeedUtil.js","sourceRoot":"","sources":["../../../../Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import OneUptimeDate from "../Date";
|
|
2
|
+
import { ROTATION_PERIOD_START_KEY } from "./Layer";
|
|
3
|
+
import UserOverrideUtil from "./UserOverrideUtil";
|
|
2
4
|
/*
|
|
3
5
|
* Why a schedule currently has (or does not have) somebody on call. The four
|
|
4
6
|
* states are mutually exclusive and ordered by how early the misconfiguration
|
|
@@ -51,10 +53,12 @@ export default class ScheduleShiftUtil {
|
|
|
51
53
|
* window as context.
|
|
52
54
|
*/
|
|
53
55
|
static groupEventsIntoShifts(events, options) {
|
|
56
|
+
var _a;
|
|
54
57
|
if (!events || events.length === 0) {
|
|
55
58
|
return [];
|
|
56
59
|
}
|
|
57
60
|
const mergeAcrossGaps = Boolean(options === null || options === void 0 ? void 0 : options.mergeAcrossGaps);
|
|
61
|
+
const groupKey = (_a = options === null || options === void 0 ? void 0 : options.groupKey) !== null && _a !== void 0 ? _a : ScheduleShiftUtil.defaultGroupKey;
|
|
58
62
|
// Work on a copy sorted by start time; never mutate the caller's array.
|
|
59
63
|
const sorted = [...events]
|
|
60
64
|
.filter((event) => {
|
|
@@ -70,11 +74,13 @@ export default class ScheduleShiftUtil {
|
|
|
70
74
|
return 0;
|
|
71
75
|
});
|
|
72
76
|
const shifts = [];
|
|
77
|
+
let lastKey = null;
|
|
73
78
|
for (const event of sorted) {
|
|
74
79
|
const userId = event.title;
|
|
80
|
+
const key = groupKey(event);
|
|
75
81
|
const eventSeconds = OneUptimeDate.getDifferenceInSeconds(event.end, event.start);
|
|
76
82
|
const last = shifts[shifts.length - 1];
|
|
77
|
-
const sameUser = Boolean(last) &&
|
|
83
|
+
const sameUser = Boolean(last) && lastKey === key;
|
|
78
84
|
const isContiguous = Boolean(last) &&
|
|
79
85
|
OneUptimeDate.getDifferenceInSeconds(last.end, event.start) <=
|
|
80
86
|
CONTIGUITY_TOLERANCE_SECONDS &&
|
|
@@ -94,15 +100,103 @@ export default class ScheduleShiftUtil {
|
|
|
94
100
|
last.coverageSeconds += eventSeconds;
|
|
95
101
|
continue;
|
|
96
102
|
}
|
|
97
|
-
|
|
103
|
+
const shift = {
|
|
98
104
|
userId,
|
|
99
105
|
start: event.start,
|
|
100
106
|
end: event.end,
|
|
101
107
|
coverageSeconds: eventSeconds,
|
|
102
|
-
}
|
|
108
|
+
};
|
|
109
|
+
/*
|
|
110
|
+
* Only add the metadata keys when the segment carries them, so callers
|
|
111
|
+
* that never stamp them (every dashboard summary) get the exact shift
|
|
112
|
+
* objects they always did.
|
|
113
|
+
*/
|
|
114
|
+
const override = UserOverrideUtil.getOverrideMeta(event);
|
|
115
|
+
if (override) {
|
|
116
|
+
shift.override = override;
|
|
117
|
+
}
|
|
118
|
+
const layerId = ScheduleShiftUtil.getEventLayerId(event);
|
|
119
|
+
if (layerId !== undefined) {
|
|
120
|
+
shift.layerId = layerId;
|
|
121
|
+
}
|
|
122
|
+
const layerName = ScheduleShiftUtil.getEventLayerName(event);
|
|
123
|
+
if (layerName !== undefined) {
|
|
124
|
+
shift.layerName = layerName;
|
|
125
|
+
}
|
|
126
|
+
shifts.push(shift);
|
|
127
|
+
lastKey = key;
|
|
103
128
|
}
|
|
104
129
|
return shifts;
|
|
105
130
|
}
|
|
131
|
+
// The default grouping: one shift per run of the same on-call user.
|
|
132
|
+
static defaultGroupKey(event) {
|
|
133
|
+
return event.title;
|
|
134
|
+
}
|
|
135
|
+
/*
|
|
136
|
+
* Grouping that keeps a shift inside ONE layer, ONE override window and ONE
|
|
137
|
+
* rotation period: the user id, plus the override identity (original user +
|
|
138
|
+
* window) when the segment was produced by an override, plus the layer id
|
|
139
|
+
* when known, plus the rotation period the engine stamped on the event. This
|
|
140
|
+
* is the key the on-call calendar feed groups with, so an override split
|
|
141
|
+
* yields A / B / A as three events and a layer handover is visible as a
|
|
142
|
+
* boundary instead of being folded into a single shift.
|
|
143
|
+
*
|
|
144
|
+
* The rotation period matters because two consecutive turns held by the SAME
|
|
145
|
+
* user (a single-user layer, or [A, A, B]) are contiguous across the engine's
|
|
146
|
+
* 1 s seam and would otherwise fold into one block whose start and end are
|
|
147
|
+
* decided by how far the expansion window reached — the block would slide
|
|
148
|
+
* forward every time the feed window did, changing the event's UID and
|
|
149
|
+
* DTSTART for every subscriber. Override segments deliberately ignore the
|
|
150
|
+
* period: an override that spans a rotation boundary is ONE stretch of cover
|
|
151
|
+
* and stays one event.
|
|
152
|
+
*/
|
|
153
|
+
static groupKeyByUserOverrideAndLayer(event) {
|
|
154
|
+
var _a;
|
|
155
|
+
const override = UserOverrideUtil.getOverrideMeta(event);
|
|
156
|
+
const overridePart = override
|
|
157
|
+
? `${override.originalUserId}@${override.overrideStartsAt.getTime()}-${override.overrideEndsAt.getTime()}`
|
|
158
|
+
: "";
|
|
159
|
+
const periodStart = override
|
|
160
|
+
? undefined
|
|
161
|
+
: ScheduleShiftUtil.getEventRotationPeriodStart(event);
|
|
162
|
+
const periodPart = periodStart === undefined ? "" : periodStart.toString();
|
|
163
|
+
return `${event.title}|${overridePart}|${(_a = ScheduleShiftUtil.getEventLayerId(event)) !== null && _a !== void 0 ? _a : ""}|${periodPart}`;
|
|
164
|
+
}
|
|
165
|
+
/*
|
|
166
|
+
* LayerUtil stamps layerId/layerName onto merged events (see
|
|
167
|
+
* PriorityCalendarEvents). CalendarEvent is a JSONObject, so the keys are
|
|
168
|
+
* read through the index signature and type-checked here.
|
|
169
|
+
*/
|
|
170
|
+
static getEventLayerId(event) {
|
|
171
|
+
const value = event["layerId"];
|
|
172
|
+
return typeof value === "string" ? value : undefined;
|
|
173
|
+
}
|
|
174
|
+
static getEventLayerName(event) {
|
|
175
|
+
const value = event["layerName"];
|
|
176
|
+
return typeof value === "string" ? value : undefined;
|
|
177
|
+
}
|
|
178
|
+
/*
|
|
179
|
+
* Epoch milliseconds of the rotation period an engine event belongs to (see
|
|
180
|
+
* ROTATION_PERIOD_START_KEY in Layer.ts). Undefined for hand-built events and
|
|
181
|
+
* for anything that did not come out of LayerUtil — those simply group as
|
|
182
|
+
* they always did. Dates and ISO strings are accepted so a JSON round trip
|
|
183
|
+
* does not silently drop the period.
|
|
184
|
+
*/
|
|
185
|
+
static getEventRotationPeriodStart(event) {
|
|
186
|
+
const value = event[ROTATION_PERIOD_START_KEY];
|
|
187
|
+
if (typeof value === "number") {
|
|
188
|
+
return Number.isFinite(value) ? value : undefined;
|
|
189
|
+
}
|
|
190
|
+
if (value instanceof Date) {
|
|
191
|
+
const time = value.getTime();
|
|
192
|
+
return Number.isNaN(time) ? undefined : time;
|
|
193
|
+
}
|
|
194
|
+
if (typeof value === "string") {
|
|
195
|
+
const parsed = Date.parse(value);
|
|
196
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
197
|
+
}
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
106
200
|
/*
|
|
107
201
|
* The shift that contains `now` (the person on call right now) and the first
|
|
108
202
|
* shift that starts after `now` (up next). Either can be null: `current` is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleShiftUtil.js","sourceRoot":"","sources":["../../../../Types/OnCallDutyPolicy/ScheduleShiftUtil.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ScheduleShiftUtil.js","sourceRoot":"","sources":["../../../../Types/OnCallDutyPolicy/ScheduleShiftUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Seam normalisation for resolved on-call segments.
|
|
3
|
+
*
|
|
4
|
+
* The rotation engine and its post-processors leave one-second artefacts at
|
|
5
|
+
* every boundary: LayerUtil resumes each segment one second after the
|
|
6
|
+
* previous one ends (Layer.ts advances with addRemoveSeconds(end, 1)), the
|
|
7
|
+
* multi-layer priority merge trims to `start - 1s` / `end + 1s`, and the
|
|
8
|
+
* override splitter cuts at the exact instant. Fed straight into a calendar
|
|
9
|
+
* that renders as 09:00:01 -> 16:59:59, with adjacent shifts that neither
|
|
10
|
+
* touch nor overlap — which Google's week view draws side by side.
|
|
11
|
+
*
|
|
12
|
+
* Handoff and restriction times are minute-granular by construction, so the
|
|
13
|
+
* artefacts are unambiguous: a start on second 1 means the minute, an end on
|
|
14
|
+
* second 59 means the next minute, and two segments a second apart are
|
|
15
|
+
* meant to touch. Everything else is left alone.
|
|
16
|
+
*/
|
|
17
|
+
// Segments this close together (in ms) are made to touch exactly.
|
|
18
|
+
export const SEAM_TOLERANCE_MILLISECONDS = 1000;
|
|
19
|
+
const MILLISECONDS_PER_MINUTE = 60 * 1000;
|
|
20
|
+
export default class ShiftSeamUtil {
|
|
21
|
+
/*
|
|
22
|
+
* Returns a NEW array (sorted by start, then end) of NEW segment objects
|
|
23
|
+
* with the seams normalised; neither the input array nor its segments are
|
|
24
|
+
* mutated. Any extra properties on the segments are preserved, so this can
|
|
25
|
+
* run on OnCallShift / MaterializedShift objects directly.
|
|
26
|
+
*
|
|
27
|
+
* Rules, in order:
|
|
28
|
+
* 1. a start whose seconds == 1 snaps DOWN to the minute;
|
|
29
|
+
* 2. an end whose seconds == 59 snaps UP to the next minute;
|
|
30
|
+
* 3. walking in start order, when the next segment starts 0..1 s after
|
|
31
|
+
* this one ends, this one's end becomes exactly the next one's start.
|
|
32
|
+
* Snapping only ever widens a segment, so it cannot create an empty or
|
|
33
|
+
* inverted one; a segment that is already empty or inverted is left alone.
|
|
34
|
+
*/
|
|
35
|
+
static normalizeSeams(segments) {
|
|
36
|
+
const normalized = segments.map((segment) => {
|
|
37
|
+
const snappedStart = ShiftSeamUtil.snapStart(segment.start);
|
|
38
|
+
const snappedEnd = ShiftSeamUtil.snapEnd(segment.end);
|
|
39
|
+
const keepSnaps = segment.end.getTime() > segment.start.getTime() &&
|
|
40
|
+
snappedEnd.getTime() > snappedStart.getTime();
|
|
41
|
+
return Object.assign(Object.assign({}, segment), { start: keepSnaps ? snappedStart : new Date(segment.start.getTime()), end: keepSnaps ? snappedEnd : new Date(segment.end.getTime()) });
|
|
42
|
+
});
|
|
43
|
+
normalized.sort((a, b) => {
|
|
44
|
+
const byStart = a.start.getTime() - b.start.getTime();
|
|
45
|
+
if (byStart !== 0) {
|
|
46
|
+
return byStart;
|
|
47
|
+
}
|
|
48
|
+
return a.end.getTime() - b.end.getTime();
|
|
49
|
+
});
|
|
50
|
+
for (let i = 0; i < normalized.length - 1; i++) {
|
|
51
|
+
const segment = normalized[i];
|
|
52
|
+
const next = normalized[i + 1];
|
|
53
|
+
const delta = next.start.getTime() - segment.end.getTime();
|
|
54
|
+
if (delta >= 0 && delta <= SEAM_TOLERANCE_MILLISECONDS) {
|
|
55
|
+
segment.end = new Date(next.start.getTime());
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return normalized;
|
|
59
|
+
}
|
|
60
|
+
// 10:00:01(.xxx) -> 10:00:00.000; anything else is returned as a copy.
|
|
61
|
+
static snapStart(date) {
|
|
62
|
+
if (date.getUTCSeconds() === 1) {
|
|
63
|
+
return new Date(Math.floor(date.getTime() / MILLISECONDS_PER_MINUTE) *
|
|
64
|
+
MILLISECONDS_PER_MINUTE);
|
|
65
|
+
}
|
|
66
|
+
return new Date(date.getTime());
|
|
67
|
+
}
|
|
68
|
+
// 16:59:59(.xxx) -> 17:00:00.000; anything else is returned as a copy.
|
|
69
|
+
static snapEnd(date) {
|
|
70
|
+
if (date.getUTCSeconds() === 59) {
|
|
71
|
+
return new Date((Math.floor(date.getTime() / MILLISECONDS_PER_MINUTE) + 1) *
|
|
72
|
+
MILLISECONDS_PER_MINUTE);
|
|
73
|
+
}
|
|
74
|
+
return new Date(date.getTime());
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=ShiftSeamUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShiftSeamUtil.js","sourceRoot":"","sources":["../../../../Types/OnCallDutyPolicy/ShiftSeamUtil.ts"],"names":[],"mappings":"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"}
|