tods-competition-factory 2.0.54 → 2.0.55

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.
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  function factoryVersion() {
6
- return '2.0.54';
6
+ return '2.0.55';
7
7
  }
8
8
 
9
9
  function isFunction(obj) {
@@ -2098,7 +2098,7 @@ function getIsoDateString(schedule) {
2098
2098
  scheduledDate = extractDate(schedule.scheduledTime);
2099
2099
  if (!scheduledDate)
2100
2100
  return;
2101
- const extractedTime = extractTime(schedule.scheduledTime);
2101
+ const extractedTime = extractTime$1(schedule.scheduledTime);
2102
2102
  let isoDateString = extractDate(scheduledDate);
2103
2103
  if (isoDateString && extractedTime)
2104
2104
  isoDateString += `T${extractedTime}`;
@@ -2224,8 +2224,8 @@ function isTimeString(timeString) {
2224
2224
  const invalid = parts.length < 2 || !isNumeric || parseInt(parts[0]) > 23 || parseInt(parts[1]) > 60;
2225
2225
  return !invalid;
2226
2226
  }
2227
- function timeStringMinutes(timeString) {
2228
- const validTimeString = extractTime(timeString);
2227
+ function timeStringMinutes$1(timeString) {
2228
+ const validTimeString = extractTime$1(timeString);
2229
2229
  if (!validTimeString)
2230
2230
  return 0;
2231
2231
  const [hours, minutes] = validTimeString.split(':').map((value) => parseInt(value));
@@ -2241,7 +2241,7 @@ function dayMinutesToTimeString(totalMinutes) {
2241
2241
  function tidyTime(timeString) {
2242
2242
  return isTimeString(timeString) ? timeString.split(':').slice(0, 2).map(zeroPad).join(':') : undefined;
2243
2243
  }
2244
- function extractTime(dateString) {
2244
+ function extractTime$1(dateString) {
2245
2245
  return isISODateString(dateString) && dateString.indexOf('T') > 0
2246
2246
  ? tidyTime(dateString.split('T').reverse()[0])
2247
2247
  : tidyTime(dateString);
@@ -2302,7 +2302,7 @@ function regularTime(value) {
2302
2302
  }
2303
2303
  function convertTime(value, time24, keepDate) {
2304
2304
  const hasDate = extractDate(value);
2305
- const timeString = extractTime(value);
2305
+ const timeString = extractTime$1(value);
2306
2306
  const timeValue = hasDate ? timeString : value;
2307
2307
  return !value
2308
2308
  ? undefined
@@ -2354,11 +2354,11 @@ function minutesDifference(date1, date2, absolute = true) {
2354
2354
  return absolute ? Math.abs(Math.round(diff)) : Math.round(diff);
2355
2355
  }
2356
2356
  function addMinutesToTimeString(timeString, minutes) {
2357
- const validTimeString = extractTime(timeString);
2357
+ const validTimeString = extractTime$1(timeString);
2358
2358
  if (!validTimeString)
2359
2359
  return '00:00';
2360
2360
  const minutesToAdd = isNaN(minutes) ? 0 : minutes;
2361
- return extractTime(addMinutes(timeToDate(validTimeString), minutesToAdd).toISOString());
2361
+ return extractTime$1(addMinutes(timeToDate(validTimeString), minutesToAdd).toISOString());
2362
2362
  }
2363
2363
  function addMinutes(startDate, minutes) {
2364
2364
  const date = new Date(startDate);
@@ -2381,7 +2381,7 @@ const dateTime = {
2381
2381
  getUTCdateString,
2382
2382
  DateHHMM,
2383
2383
  extractDate,
2384
- extractTime,
2384
+ extractTime: extractTime$1,
2385
2385
  formatDate,
2386
2386
  getDateByWeek,
2387
2387
  isISODateString,
@@ -2390,7 +2390,7 @@ const dateTime = {
2390
2390
  offsetDate,
2391
2391
  offsetTime,
2392
2392
  sameDay,
2393
- timeStringMinutes,
2393
+ timeStringMinutes: timeStringMinutes$1,
2394
2394
  timeToDate,
2395
2395
  timeUTC,
2396
2396
  validTimeValue,
@@ -7268,12 +7268,12 @@ function getMatchUpScheduleDetails(params) {
7268
7268
  }));
7269
7269
  if (averageMinutes || recoveryMinutes) {
7270
7270
  timeAfterRecovery = endTime
7271
- ? addMinutesToTimeString(extractTime(endTime), recoveryMinutes)
7271
+ ? addMinutesToTimeString(extractTime$1(endTime), recoveryMinutes)
7272
7272
  : addMinutesToTimeString(scheduledTime, averageMinutes + recoveryMinutes);
7273
7273
  }
7274
7274
  if (typeChangeRecoveryMinutes) {
7275
7275
  typeChangeTimeAfterRecovery = endTime
7276
- ? addMinutesToTimeString(extractTime(endTime), typeChangeRecoveryMinutes)
7276
+ ? addMinutesToTimeString(extractTime$1(endTime), typeChangeRecoveryMinutes)
7277
7277
  : addMinutesToTimeString(scheduledTime, averageMinutes + typeChangeRecoveryMinutes);
7278
7278
  }
7279
7279
  }
@@ -9458,14 +9458,14 @@ function addUpcomingMatchUps({ drawDefinition, inContextDrawMatchUps }) {
9458
9458
  const timeAfterRecovery = inContextMatchUp.schedule?.timeAfterRecovery;
9459
9459
  if (timeAfterRecovery) {
9460
9460
  if (winnerTo?.schedule?.scheduledTime) {
9461
- const scheduleConflict = timeStringMinutes(winnerTo.schedule.scheduledTime) < timeStringMinutes(timeAfterRecovery);
9461
+ const scheduleConflict = timeStringMinutes$1(winnerTo.schedule.scheduledTime) < timeStringMinutes$1(timeAfterRecovery);
9462
9462
  if (scheduleConflict) {
9463
9463
  scheduleConflictMatchUpIds[winnerTo.matchUpId] = inContextMatchUp.matchUpId;
9464
9464
  winnerTo.schedule.scheduleConflict = inContextMatchUp.matchUpId;
9465
9465
  }
9466
9466
  }
9467
9467
  if (loserTo?.schedule?.scheduledTime) {
9468
- const scheduleConflict = timeStringMinutes(loserTo.schedule.scheduledTime) < timeStringMinutes(timeAfterRecovery);
9468
+ const scheduleConflict = timeStringMinutes$1(loserTo.schedule.scheduledTime) < timeStringMinutes$1(timeAfterRecovery);
9469
9469
  if (scheduleConflict) {
9470
9470
  scheduleConflictMatchUpIds[loserTo.matchUpId] = inContextMatchUp.matchUpId;
9471
9471
  loserTo.schedule.scheduleConflict = inContextMatchUp.matchUpId;
@@ -11517,7 +11517,7 @@ function addScheduleItem(params) {
11517
11517
  participantMap[participantId].scheduleItems.push({
11518
11518
  ...schedule,
11519
11519
  scheduledDate: extractDate(schedule?.scheduledDate),
11520
- scheduledTime: extractTime(schedule?.scheduledTime),
11520
+ scheduledTime: extractTime$1(schedule?.scheduledTime),
11521
11521
  checkScoreHasValue: checkScoreHasValue({ score }),
11522
11522
  matchUpStatus,
11523
11523
  roundPosition,
@@ -12314,7 +12314,7 @@ function getParticipantEntries(params) {
12314
12314
  for (const scheduleItem of scheduleItems) {
12315
12315
  const { typeChangeTimeAfterRecovery, timeAfterRecovery, scheduledDate, scheduledTime } = scheduleItem;
12316
12316
  const scheduleItemsToConsider = dateItems[scheduledDate];
12317
- const scheduledMinutes = timeStringMinutes(scheduledTime);
12317
+ const scheduledMinutes = timeStringMinutes$1(scheduledTime);
12318
12318
  for (const consideredItem of scheduleItemsToConsider) {
12319
12319
  const ignoreItem = consideredItem.matchUpId === scheduleItem.matchUpId ||
12320
12320
  ([WALKOVER$2, DEFAULTED].includes(consideredItem.matchUpStatus) && !consideredItem.checkScoreHasValue);
@@ -12324,12 +12324,12 @@ function getParticipantEntries(params) {
12324
12324
  const notBeforeTime = typeChange ? typeChangeTimeAfterRecovery || timeAfterRecovery : timeAfterRecovery;
12325
12325
  const sameDraw = scheduleItem.drawId === consideredItem.drawId;
12326
12326
  const bothPotential = potentialMatchUps[scheduleItem.matchUpId] && potentialMatchUps[consideredItem.matchUpId];
12327
- const consideredMinutes = timeStringMinutes(consideredItem.scheduledTime);
12327
+ const consideredMinutes = timeStringMinutes$1(consideredItem.scheduledTime);
12328
12328
  const minutesDifference = Math.abs(consideredMinutes - scheduledMinutes);
12329
12329
  const itemIsPrior = consideredMinutes >= scheduledMinutes;
12330
12330
  const timeOverlap = scheduledMinutesDifference && !isNaN(scheduledMinutesDifference)
12331
12331
  ? minutesDifference <= scheduledMinutesDifference
12332
- : itemIsPrior && timeStringMinutes(consideredItem.scheduledTime) < timeStringMinutes(notBeforeTime);
12332
+ : itemIsPrior && timeStringMinutes$1(consideredItem.scheduledTime) < timeStringMinutes$1(notBeforeTime);
12333
12333
  if (timeOverlap && !(bothPotential && sameDraw) && itemIsPrior) {
12334
12334
  const key = [scheduleItem.matchUpId, consideredItem.matchUpId].sort(stringSort).join('|');
12335
12335
  participantAggregator.scheduleConflicts[key] = {
@@ -13200,9 +13200,10 @@ function addEventEntries(params) {
13200
13200
  entries: event.entries || [],
13201
13201
  });
13202
13202
  }
13203
- const addedEntriesCount = addedParticipantIdEntries.length - removedEntries.length;
13203
+ const addedEntriesCount = addedParticipantIdEntries.length;
13204
+ const removedEntriesCount = removedEntries.length;
13204
13205
  return decorateResult({
13205
- result: { ...SUCCESS, addedEntriesCount },
13206
+ result: { ...SUCCESS, addedEntriesCount, removedEntriesCount },
13206
13207
  stack,
13207
13208
  info,
13208
13209
  });
@@ -34182,6 +34183,13 @@ function getDrawIsPublished({ publishStatus, drawId }) {
34182
34183
  return true;
34183
34184
  }
34184
34185
 
34186
+ const PUBLIC_DISPLAY = 'PUBLIC';
34187
+ const ADMIN_DISPLAY = 'ADMIN';
34188
+ const displayConstants = {
34189
+ PUBLIC_DISPLAY,
34190
+ ADMIN_DISPLAY,
34191
+ };
34192
+
34185
34193
  function getDrawData(params) {
34186
34194
  const { tournamentParticipants = [], includePositionAssignments, policyDefinitions, tournamentRecord, inContext = true, usePublishState, status = PUBLIC, pressureRating, refreshResults, drawDefinition, noDeepCopy, sortConfig, context, event, } = params;
34187
34195
  if (!drawDefinition)
@@ -34289,7 +34297,8 @@ function getDrawData(params) {
34289
34297
  stage,
34290
34298
  }))(structure)
34291
34299
  : {};
34292
- structureInfo.display = findExtension({ element: structure, name: DISPLAY }).extension?.value;
34300
+ const displaySettings = findExtension({ element: structure, name: DISPLAY }).extension?.value;
34301
+ structureInfo.display = displaySettings?.[PUBLIC_DISPLAY] ?? displaySettings;
34293
34302
  structureInfo.sourceStructureIds = sourceStructureIds[structureId];
34294
34303
  structureInfo.hasDrawFeedProfile = hasDrawFeedProfile[structureId];
34295
34304
  structureInfo.positionAssignments = positionAssignments;
@@ -35561,7 +35570,7 @@ function participantScheduledMatchUps({ scheduleAttributes = ['scheduledDate', '
35561
35570
  .reduce((dateMatchUps, matchUp) => {
35562
35571
  const { schedule } = matchUp;
35563
35572
  const date = extractDate(schedule?.scheduledDate);
35564
- const time = extractTime(schedule?.scheduledTime);
35573
+ const time = extractTime$1(schedule?.scheduledTime);
35565
35574
  if (date && time) {
35566
35575
  if (dateMatchUps[date]) {
35567
35576
  dateMatchUps[date].push(matchUp);
@@ -35574,7 +35583,7 @@ function participantScheduledMatchUps({ scheduleAttributes = ['scheduledDate', '
35574
35583
  }, {});
35575
35584
  const dates = Object.keys(scheduledMatchUps);
35576
35585
  dates.forEach((date) => {
35577
- scheduledMatchUps[date].sort((a, b) => timeSort(extractTime(a.schedule?.scheduledTime), extractTime(b.schedule?.scheduledTime)));
35586
+ scheduledMatchUps[date].sort((a, b) => timeSort(extractTime$1(a.schedule?.scheduledTime), extractTime$1(b.schedule?.scheduledTime)));
35578
35587
  });
35579
35588
  return { ...SUCCESS, scheduledMatchUps };
35580
35589
  }
@@ -35630,7 +35639,7 @@ function scheduledSortedMatchUps({ schedulingProfile, matchUps = [] }) {
35630
35639
  const timeGroups = { noScheduledTime: [] };
35631
35640
  for (const matchUp of dateGroup) {
35632
35641
  const schedule = matchUp.schedule || {};
35633
- const scheduledTime = (schedule.scheduledTime && extractTime(schedule.scheduledTime)) || 'noScheduledTime';
35642
+ const scheduledTime = (schedule.scheduledTime && extractTime$1(schedule.scheduledTime)) || 'noScheduledTime';
35634
35643
  if (!timeGroups[scheduledTime])
35635
35644
  timeGroups[scheduledTime] = [];
35636
35645
  timeGroups[scheduledTime].push(matchUp);
@@ -37983,11 +37992,11 @@ function addParticipants({ allowDuplicateParticipantIdPairs, returnParticipants,
37983
37992
  }
37984
37993
  }
37985
37994
 
37986
- function addEventEntryPairs({ allowDuplicateParticipantIdPairs, entryStage = MAIN, entryStatus = ALTERNATE, participantIdPairs = [], tournamentRecord, drawDefinition, event, uuids, }) {
37987
- if (!tournamentRecord)
37988
- return { error: MISSING_TOURNAMENT_RECORD };
37989
- if (!event)
37990
- return { error: MISSING_EVENT };
37995
+ function addEventEntryPairs(params) {
37996
+ const paramsCheck = checkRequiredParameters(params, [{ [TOURNAMENT_RECORD]: true, [EVENT]: true }]);
37997
+ if (paramsCheck.error)
37998
+ return paramsCheck;
37999
+ const { allowDuplicateParticipantIdPairs, entryStatus = ALTERNATE, participantIdPairs = [], entryStage = MAIN, tournamentRecord, drawDefinition, event, uuids, } = params;
37991
38000
  if (event.eventType !== DOUBLES)
37992
38001
  return { error: INVALID_EVENT_TYPE };
37993
38002
  const existingParticipantIdPairs = [];
@@ -38004,10 +38013,10 @@ function addEventEntryPairs({ allowDuplicateParticipantIdPairs, entryStage = MAI
38004
38013
  const invalidParticipantIdPairs = participantIdPairs.filter((pair) => {
38005
38014
  if (pair.length !== 2)
38006
38015
  return true;
38007
- if (!genderMap.has(pair[0]) || !genderMap.has(pair[1]))
38008
- return true;
38009
38016
  if (!event.gender || event.gender === ANY)
38010
38017
  return false;
38018
+ if (!genderMap.has(pair[0]) || !genderMap.has(pair[1]))
38019
+ return true;
38011
38020
  const participantGenders = pair.map((id) => genderMap.get(id));
38012
38021
  let invalidParticiapntGenders = (event.gender === MALE && (participantGenders[0] !== MALE || participantGenders[1] !== MALE)) ||
38013
38022
  (event.gender === FEMALE && (participantGenders[0] !== FEMALE || participantGenders[1] !== FEMALE));
@@ -40028,7 +40037,7 @@ function generateTimeSlots(params) {
40028
40037
  .sort((a, b) => tidyTime(a.startTime).localeCompare(tidyTime(b.startTime)))
40029
40038
  .forEach((booking) => {
40030
40039
  const timeSlot = {
40031
- startTime: extractTime(startTime.toISOString()),
40040
+ startTime: extractTime$1(startTime.toISOString()),
40032
40041
  endTime: booking.startTime,
40033
40042
  };
40034
40043
  if (timeToDate(booking.startTime) > startTime) {
@@ -40039,7 +40048,7 @@ function generateTimeSlots(params) {
40039
40048
  }
40040
40049
  });
40041
40050
  const timeSlot = {
40042
- startTime: extractTime(startTime.toISOString()),
40051
+ startTime: extractTime$1(startTime.toISOString()),
40043
40052
  endTime: courtDate.endTime,
40044
40053
  };
40045
40054
  if (timeToDate(courtDate.endTime) > startTime) {
@@ -40157,7 +40166,7 @@ function generateVirtualCourts(params) {
40157
40166
  },
40158
40167
  };
40159
40168
  });
40160
- unassignedBookings.sort((a, b) => timeStringMinutes(a.startTime) - timeStringMinutes(b.startTime));
40169
+ unassignedBookings.sort((a, b) => timeStringMinutes$1(a.startTime) - timeStringMinutes$1(b.startTime));
40161
40170
  const getCourtTimeSlots = () => inProcessCourts
40162
40171
  .map((court) => {
40163
40172
  const courtDate = court.dateAvailability;
@@ -40172,15 +40181,15 @@ function generateVirtualCourts(params) {
40172
40181
  const assignedBookings = [];
40173
40182
  for (const unassignedBooking of unassignedBookings) {
40174
40183
  const { startTime, endTime, averageMinutes, recoveryMinutes, matchUpId } = unassignedBooking;
40175
- const startMinutes = timeStringMinutes(startTime);
40176
- const endMinutes = timeStringMinutes(endTime);
40184
+ const startMinutes = timeStringMinutes$1(startTime);
40185
+ const endMinutes = timeStringMinutes$1(endTime);
40177
40186
  const courtTimeSlots = getCourtTimeSlots();
40178
40187
  const bestCourt = courtTimeSlots.reduce((best, { courtId, courtName, timeSlots }) => {
40179
40188
  let startDifference;
40180
40189
  const timeSlot = timeSlots.find(({ startTime, endTime }) => {
40181
- startDifference = timeStringMinutes(startTime) - startMinutes;
40182
- const startFits = startMinutes >= timeStringMinutes(startTime);
40183
- const endFits = endMinutes <= timeStringMinutes(endTime);
40190
+ startDifference = timeStringMinutes$1(startTime) - startMinutes;
40191
+ const startFits = startMinutes >= timeStringMinutes$1(startTime);
40192
+ const endFits = endMinutes <= timeStringMinutes$1(endTime);
40184
40193
  return (endFits &&
40185
40194
  best.startDifference !== 0 &&
40186
40195
  (((startDifference === 0 || startDifference + periodLength >= 0) &&
@@ -40235,8 +40244,8 @@ function getDateTimeBoundary({ scheduleDate, startTime, endTime, courts }) {
40235
40244
  const comparisonTime = accessor && (dateAvailability?.[accessor] || court[accessor]);
40236
40245
  return comparisonTime &&
40237
40246
  (!boundaryTime ||
40238
- (startTime && timeStringMinutes(comparisonTime) < timeStringMinutes(boundaryTime)) ||
40239
- (endTime && timeStringMinutes(comparisonTime) > timeStringMinutes(boundaryTime)))
40247
+ (startTime && timeStringMinutes$1(comparisonTime) < timeStringMinutes$1(boundaryTime)) ||
40248
+ (endTime && timeStringMinutes$1(comparisonTime) > timeStringMinutes$1(boundaryTime)))
40240
40249
  ? comparisonTime
40241
40250
  : boundaryTime;
40242
40251
  }, undefined);
@@ -40264,7 +40273,7 @@ function getFirstTimeSlotStartTime({ averageMinutes, startTime, endTime, courts,
40264
40273
  const timeSlotMinutes = minutesDifference(timeSlotStartTime, timeSlotEndTime);
40265
40274
  const available = timeSlotMinutes >= averageMinutes;
40266
40275
  if (available) {
40267
- const timeString = extractTime(timeSlotStartTime.toISOString());
40276
+ const timeString = extractTime$1(timeSlotStartTime.toISOString());
40268
40277
  if (!firstTimeSlotStartTime || timeString < firstTimeSlotStartTime) {
40269
40278
  firstTimeSlotStartTime = timeString;
40270
40279
  }
@@ -40284,8 +40293,8 @@ function getScheduleTimes(params) {
40284
40293
  const { calculateStartTimeFromCourts = true, remainingScheduleTimes, averageMatchUpMinutes, clearScheduleDates, courtsCount, bookings, } = params;
40285
40294
  periodLength = periodLength || calculatePeriodLength({ averageMatchUpMinutes });
40286
40295
  date = extractDate(date);
40287
- startTime = extractTime(startTime);
40288
- endTime = extractTime(endTime);
40296
+ startTime = extractTime$1(startTime);
40297
+ endTime = extractTime$1(endTime);
40289
40298
  let previousCalculation = 0;
40290
40299
  let previousAvailableCourts = 0;
40291
40300
  let cumulativeMatches = 0;
@@ -40312,8 +40321,8 @@ function getScheduleTimes(params) {
40312
40321
  if (calculateStartTimeFromCourts && firstTimeSlotStartTime) {
40313
40322
  startTime = firstTimeSlotStartTime ? firstTimeSlotStartTime : startTime;
40314
40323
  }
40315
- const dayStartMinutes = timeStringMinutes(startTime);
40316
- const dayEndMinutes = timeStringMinutes(endTime);
40324
+ const dayStartMinutes = timeStringMinutes$1(startTime);
40325
+ const dayEndMinutes = timeStringMinutes$1(endTime);
40317
40326
  const dayMinutes = dayEndMinutes - dayStartMinutes;
40318
40327
  const periodCount = Math.floor(dayMinutes / periodLength);
40319
40328
  const periods = generateRange(0, periodCount + 1);
@@ -43144,7 +43153,7 @@ function assignMatchUpCourt({ removePriorValues, tournamentRecords, tournamentRe
43144
43153
  }
43145
43154
 
43146
43155
  function timeDate(value, scheduledDate) {
43147
- const time = validTimeString.test(value) ? value : extractTime(value);
43156
+ const time = validTimeString.test(value) ? value : extractTime$1(value);
43148
43157
  const date = extractDate(value) || extractDate(scheduledDate) || formatDate(new Date());
43149
43158
  return new Date(`${date}T${time}`).getTime();
43150
43159
  }
@@ -45154,13 +45163,13 @@ function addParticipantPotentialRecovery({ individualParticipantProfiles, recove
45154
45163
  }
45155
45164
 
45156
45165
  function updateTimeAfterRecovery({ matchUpPotentialParticipantIds, individualParticipantProfiles, typeChangeRecoveryMinutes, averageMatchUpMinutes = 0, matchUpNotBeforeTimes, matchUpDependencies, recoveryMinutes = 0, scheduleTime, matchUp, }) {
45157
- const endTime = extractTime(matchUp?.schedule?.endTime);
45166
+ const endTime = extractTime$1(matchUp?.schedule?.endTime);
45158
45167
  const timeAfterRecovery = endTime
45159
45168
  ? addMinutesToTimeString(endTime, ensureInt(recoveryMinutes))
45160
45169
  : addMinutesToTimeString(scheduleTime, ensureInt(averageMatchUpMinutes) + ensureInt(recoveryMinutes));
45161
45170
  const typeChangeTimeAfterRecovery = typeChangeRecoveryMinutes &&
45162
45171
  (endTime
45163
- ? addMinutesToTimeString(extractTime(endTime), typeChangeRecoveryMinutes)
45172
+ ? addMinutesToTimeString(extractTime$1(endTime), typeChangeRecoveryMinutes)
45164
45173
  : addMinutesToTimeString(scheduleTime, ensureInt(averageMatchUpMinutes) + ensureInt(typeChangeRecoveryMinutes)));
45165
45174
  const participantIdDependencies = matchUpDependencies?.[matchUp.matchUpId]?.participantIds || [];
45166
45175
  const potentialIndividualParticipantIds = ((matchUp.roundPosition && matchUpPotentialParticipantIds[matchUp.matchUpId]) ||
@@ -45215,12 +45224,12 @@ function checkDependendantTiming({ matchUpScheduleTimes, matchUpDependencies, sc
45215
45224
  };
45216
45225
  if (candidateScheduleTime && !dependent.matchUpId)
45217
45226
  return candidateDependent;
45218
- return timeStringMinutes(candidateScheduleTime) < timeStringMinutes(dependent.scheduleTime)
45227
+ return timeStringMinutes$1(candidateScheduleTime) < timeStringMinutes$1(dependent.scheduleTime)
45219
45228
  ? candidateDependent
45220
45229
  : dependent;
45221
45230
  }, {});
45222
45231
  if (earliestDependent.scheduleTime &&
45223
- timeStringMinutes(dependentNotBeforeTime) > timeStringMinutes(earliestDependent.scheduleTime)) {
45232
+ timeStringMinutes$1(dependentNotBeforeTime) > timeStringMinutes$1(earliestDependent.scheduleTime)) {
45224
45233
  scheduledDependent = earliestDependent;
45225
45234
  }
45226
45235
  }
@@ -45256,8 +45265,8 @@ function checkRequestConflicts({ averageMatchUpMinutes = 90, requestConflicts =
45256
45265
  .filter((request) => request.requestType === DO_NOT_SCHEDULE && sameDay(scheduleDate, request.date));
45257
45266
  const conflicts = [];
45258
45267
  const matchUpId = matchUp?.matchUpId;
45259
- const scheduleStart = timeToDate(extractTime(scheduleTime), extractDate(scheduleDate));
45260
- const averageEnd = extractTime(addMinutes(scheduleStart, averageMatchUpMinutes).toISOString());
45268
+ const scheduleStart = timeToDate(extractTime$1(scheduleTime), extractDate(scheduleDate));
45269
+ const averageEnd = extractTime$1(addMinutes(scheduleStart, averageMatchUpMinutes).toISOString());
45261
45270
  for (const request of relevantPersonRequests) {
45262
45271
  const { requestId, startTime, endTime } = request;
45263
45272
  const conflict = (scheduleTime > startTime && scheduleTime < endTime) || (averageEnd > startTime && averageEnd < endTime);
@@ -45450,7 +45459,7 @@ function generateBookings({ defaultRecoveryMinutes = 0, averageMatchUpMinutes =
45450
45459
  eventType,
45451
45460
  });
45452
45461
  const { courtId, venueId } = schedule;
45453
- const startTime = extractTime(schedule.scheduledTime);
45462
+ const startTime = extractTime$1(schedule.scheduledTime);
45454
45463
  const endTime = addMinutesToTimeString(startTime, averageMinutes);
45455
45464
  return {
45456
45465
  recoveryMinutes,
@@ -45645,10 +45654,10 @@ function getVenueSchedulingDetails({ matchUpPotentialParticipantIds, individualP
45645
45654
  }
45646
45655
 
45647
45656
  function analyzeScheduleOverlap(a, b) {
45648
- const startA = timeStringMinutes(a.scheduleTime);
45649
- const endA = timeStringMinutes(a.timeAfterRecovery);
45650
- const startB = timeStringMinutes(b.scheduleTime);
45651
- const endB = timeStringMinutes(b.timeAfterRecovery);
45657
+ const startA = timeStringMinutes$1(a.scheduleTime);
45658
+ const endA = timeStringMinutes$1(a.timeAfterRecovery);
45659
+ const startB = timeStringMinutes$1(b.scheduleTime);
45660
+ const endB = timeStringMinutes$1(b.timeAfterRecovery);
45652
45661
  const startOrEndEquivalence = startA === startB || endA === endB;
45653
45662
  const startAisContained = startA > startB && startA < endB;
45654
45663
  const startBisContained = startB > startA && startB < endA;
@@ -45676,7 +45685,7 @@ function checkRecoveryTime({ individualParticipantProfiles, matchUpNotBeforeTime
45676
45685
  const profile = individualParticipantProfiles[participantId];
45677
45686
  if (!profile.timeAfterRecovery)
45678
45687
  return true;
45679
- const endTime = extractTime(matchUp?.schedule?.endTime);
45688
+ const endTime = extractTime$1(matchUp?.schedule?.endTime);
45680
45689
  const timeAfterRecovery = endTime
45681
45690
  ? addMinutesToTimeString(endTime, ensureInt(recoveryMinutes))
45682
45691
  : addMinutesToTimeString(scheduleTime, ensureInt(averageMatchUpMinutes) + ensureInt(recoveryMinutes));
@@ -46109,7 +46118,7 @@ function jinnScheduler({ schedulingProfileModifications, checkPotentialRequestCo
46109
46118
  }
46110
46119
  });
46111
46120
  noTimeMatchUpIds[scheduleDate] = venueScheduledRoundDetails[venueId].matchUpsToSchedule.map(getMatchUpId);
46112
- scheduleTimesRemaining[scheduleDate][venueId] = venueScheduledRoundDetails[venueId].scheduleTimes.sort((a, b) => timeStringMinutes(a.scheduleTime) - timeStringMinutes(b.scheduleTime));
46121
+ scheduleTimesRemaining[scheduleDate][venueId] = venueScheduledRoundDetails[venueId].scheduleTimes.sort((a, b) => timeStringMinutes$1(a.scheduleTime) - timeStringMinutes$1(b.scheduleTime));
46113
46122
  }
46114
46123
  if (!dryRun && allDateScheduledByeMatchUpDetails?.length) {
46115
46124
  bulkScheduleMatchUps({
@@ -46199,7 +46208,7 @@ function getEarliestCourtTime({ averageMinutes, startTime, endTime, court, date
46199
46208
  const timeSlotMinutes = minutesDifference(consideredStartTime, timeSlotEndTime);
46200
46209
  const available = timeSlotMinutes >= averageMinutes;
46201
46210
  if (available) {
46202
- const timeString = extractTime(consideredStartTime.toISOString());
46211
+ const timeString = extractTime$1(consideredStartTime.toISOString());
46203
46212
  if (!first || timeString < first)
46204
46213
  first = timeString;
46205
46214
  }
@@ -46352,7 +46361,7 @@ function v2Scheduler({ schedulingProfileModifications, checkPotentialRequestConf
46352
46361
  court,
46353
46362
  });
46354
46363
  if (courtTime.scheduleTime &&
46355
- timeStringMinutes(scheduleTime) >= timeStringMinutes(courtTime.scheduleTime)) {
46364
+ timeStringMinutes$1(scheduleTime) >= timeStringMinutes$1(courtTime.scheduleTime)) {
46356
46365
  return courtTime;
46357
46366
  }
46358
46367
  const { scheduledDependent } = checkDependendantTiming({
@@ -46407,7 +46416,7 @@ function v2Scheduler({ schedulingProfileModifications, checkPotentialRequestConf
46407
46416
  matchUp,
46408
46417
  });
46409
46418
  if (!courtTime.scheduleTime ||
46410
- timeStringMinutes(scheduleTime) < timeStringMinutes(courtTime.scheduleTime)) {
46419
+ timeStringMinutes$1(scheduleTime) < timeStringMinutes$1(courtTime.scheduleTime)) {
46411
46420
  courtTime.averageMatchUpMinutes = averageMatchUpMinutes;
46412
46421
  courtTime.recoveryMinutes = recoveryMinutes;
46413
46422
  courtTime.scheduleTime = scheduleTime;
@@ -49604,11 +49613,11 @@ function addCourt({ tournamentRecord, disableNotice, venueId, courtId, court })
49604
49613
  const dateAvailability = (court?.dateAvailability || []).map((availabilty) => ({
49605
49614
  ...availabilty,
49606
49615
  date: extractDate(availabilty.date),
49607
- startTime: extractTime(availabilty.startTime),
49608
- endTime: extractTime(availabilty.endTime),
49616
+ startTime: extractTime$1(availabilty.startTime),
49617
+ endTime: extractTime$1(availabilty.endTime),
49609
49618
  bookings: availabilty.bookings?.map(({ startTime, endTime, bookingType }) => ({
49610
- startTime: extractTime(startTime),
49611
- endTime: extractTime(endTime),
49619
+ startTime: extractTime$1(startTime),
49620
+ endTime: extractTime$1(endTime),
49612
49621
  bookingType,
49613
49622
  })),
49614
49623
  }));
@@ -50544,8 +50553,8 @@ function mergePersonRequests({ personRequests, personId, requests }) {
50544
50553
  let { date, startTime, endTime } = request;
50545
50554
  if (request.requestType === DO_NOT_SCHEDULE) {
50546
50555
  date = extractDate(date);
50547
- startTime = extractTime(startTime);
50548
- endTime = extractTime(endTime);
50556
+ startTime = extractTime$1(startTime);
50557
+ endTime = extractTime$1(endTime);
50549
50558
  if (date && startTime && endTime) {
50550
50559
  return { date, startTime, endTime, requestType: request.requestType };
50551
50560
  }
@@ -52528,7 +52537,7 @@ function getVenueReport(dates, venue, matchUps) {
52528
52537
  const timeSlots = courtDate && generateTimeSlots({ courtDate }).timeSlots;
52529
52538
  const courtAvailableMinutes = timeSlots?.reduce((minutes, timeSlot) => {
52530
52539
  const { startTime, endTime } = timeSlot;
52531
- const timeSlotMinutes = timeStringMinutes(endTime) - timeStringMinutes(startTime);
52540
+ const timeSlotMinutes = timeStringMinutes$1(endTime) - timeStringMinutes$1(startTime);
52532
52541
  return minutes + timeSlotMinutes;
52533
52542
  }, 0);
52534
52543
  if (courtAvailableMinutes)
@@ -52537,9 +52546,9 @@ function getVenueReport(dates, venue, matchUps) {
52537
52546
  }
52538
52547
  const venueMatchUps = matchUps.filter(({ schedule }) => schedule.venueId === venueId && sameDay(date, schedule.scheduledDate));
52539
52548
  venueMatchUps.forEach(({ schedule }) => {
52540
- const startTime = extractTime(schedule.scheduledTime);
52549
+ const startTime = extractTime$1(schedule.scheduledTime);
52541
52550
  const endTime = addMinutesToTimeString(startTime, schedule.averageMinutes);
52542
- const matchUpScheduledMinutes = timeStringMinutes(endTime) - timeStringMinutes(startTime);
52551
+ const matchUpScheduledMinutes = timeStringMinutes$1(endTime) - timeStringMinutes$1(startTime);
52543
52552
  scheduledMinutes += matchUpScheduledMinutes;
52544
52553
  });
52545
52554
  const percentUtilization = availableMinutes ? ((scheduledMinutes / availableMinutes) * 100).toFixed(2) : '100';
@@ -52586,7 +52595,7 @@ function calculateScheduleTimes({ calculateStartTimeFromCourts = true, defaultRe
52586
52595
  const dateAvailability = court.dateAvailability?.find((availability) => !availability.date || sameDay(scheduleDate, availability.date));
52587
52596
  const comparisonStartTime = dateAvailability?.startTime ?? court.startTime;
52588
52597
  return comparisonStartTime &&
52589
- (!minStartTime || timeStringMinutes(comparisonStartTime) < timeStringMinutes(minStartTime))
52598
+ (!minStartTime || timeStringMinutes$1(comparisonStartTime) < timeStringMinutes$1(minStartTime))
52590
52599
  ? comparisonStartTime
52591
52600
  : minStartTime;
52592
52601
  }, undefined);
@@ -52595,7 +52604,7 @@ function calculateScheduleTimes({ calculateStartTimeFromCourts = true, defaultRe
52595
52604
  endTime = courts?.reduce((maxEndTime, court) => {
52596
52605
  const dateAvailability = court.dateAvailability?.find((availability) => !availability.date || sameDay(scheduleDate, availability.date));
52597
52606
  const comparisonEndTime = dateAvailability?.endTime ?? court.endTime;
52598
- return comparisonEndTime && (!maxEndTime || timeStringMinutes(comparisonEndTime) > timeStringMinutes(maxEndTime))
52607
+ return comparisonEndTime && (!maxEndTime || timeStringMinutes$1(comparisonEndTime) > timeStringMinutes$1(maxEndTime))
52599
52608
  ? comparisonEndTime
52600
52609
  : maxEndTime;
52601
52610
  }, undefined);
@@ -52640,7 +52649,7 @@ function calculateScheduleTimes({ calculateStartTimeFromCourts = true, defaultRe
52640
52649
  timingDetails,
52641
52650
  });
52642
52651
  const { courtId, venueId } = schedule;
52643
- const startTime = extractTime(schedule.scheduledTime);
52652
+ const startTime = extractTime$1(schedule.scheduledTime);
52644
52653
  const endTime = addMinutesToTimeString(startTime, averageMinutes);
52645
52654
  return {
52646
52655
  recoveryMinutes,
@@ -52928,8 +52937,8 @@ function scheduleMatchUps(params) {
52928
52937
  const { venueId, scheduleTimes, dateScheduledMatchUpIds } = calculateScheduleTimes({
52929
52938
  tournamentRecords,
52930
52939
  remainingScheduleTimes,
52931
- startTime: extractTime(startTime),
52932
- endTime: extractTime(endTime),
52940
+ startTime: extractTime$1(startTime),
52941
+ endTime: extractTime$1(endTime),
52933
52942
  scheduleDate: extractDate(scheduleDate),
52934
52943
  averageMatchUpMinutes,
52935
52944
  clearScheduleDates,
@@ -53447,7 +53456,7 @@ function bulkReschedule({ tournamentRecord, scheduleChange, matchUpIds, dryRun }
53447
53456
  }
53448
53457
  if (minutesChange && scheduledTime) {
53449
53458
  const scheduledTimeDate = extractDate(scheduledTime);
53450
- const currentDayMinutes = timeStringMinutes(extractTime(scheduledTime));
53459
+ const currentDayMinutes = timeStringMinutes$1(extractTime$1(scheduledTime));
53451
53460
  const newTime = currentDayMinutes + minutesChange;
53452
53461
  doNotReschedule = newTime < 0 || newTime > dayTotalMinutes;
53453
53462
  if (!doNotReschedule) {
@@ -55647,11 +55656,11 @@ function updateCourtAvailability({ tournamentRecord }) {
55647
55656
  }
55648
55657
  for (const court of courts) {
55649
55658
  const { startTime, endTime } = (court.dateAvailability ?? []).reduce((extents, availability) => {
55650
- const startMinutes = timeStringMinutes(extents.startTime);
55651
- const endMinutes = timeStringMinutes(extents.endTime);
55652
- if (availability.startTime && timeStringMinutes(availability.startTime) < startMinutes)
55659
+ const startMinutes = timeStringMinutes$1(extents.startTime);
55660
+ const endMinutes = timeStringMinutes$1(extents.endTime);
55661
+ if (availability.startTime && timeStringMinutes$1(availability.startTime) < startMinutes)
55653
55662
  extents.startTime = availability.startTime;
55654
- if (availability.endTime && timeStringMinutes(availability.endTime) > endMinutes)
55663
+ if (availability.endTime && timeStringMinutes$1(availability.endTime) > endMinutes)
55655
55664
  extents.endTime = availability.endTime;
55656
55665
  return extents;
55657
55666
  }, { startTime: '08:00', endTime: '18:00' });
@@ -56593,7 +56602,7 @@ function visualizeScheduledMatchUps({ scheduledMatchUps, showGlobalLog }) {
56593
56602
  },
56594
56603
  }, true);
56595
56604
  roundMatchUps[roundNumber].forEach(({ matchUpId, schedule }) => {
56596
- const scheduledTime = extractTime(schedule.scheduledTime);
56605
+ const scheduledTime = extractTime$1(schedule.scheduledTime);
56597
56606
  pushGlobalLog({
56598
56607
  matchUpId,
56599
56608
  time: scheduledTime,
@@ -56613,6 +56622,31 @@ function visualizeScheduledMatchUps({ scheduledMatchUps, showGlobalLog }) {
56613
56622
  printGlobalLog();
56614
56623
  }
56615
56624
 
56625
+ const { extractTime, timeStringMinutes } = dateTime;
56626
+ function matchUpScheduleSort(a, b) {
56627
+ const scheduleA = a.schedule ?? {};
56628
+ const scheduleB = b.schedule ?? {};
56629
+ if (scheduleA.scheduledDate && !scheduleB.scheduledDate)
56630
+ return 1;
56631
+ if (scheduleB.scheduledDate && !scheduleA.scheduledDate)
56632
+ return -1;
56633
+ if (scheduleA.scheduledDate && scheduleB.scheduledDate) {
56634
+ if (scheduleA.scheduledDate === scheduleB.scheduledDate) {
56635
+ if (scheduleA.scheduledTime && !scheduleB.scheduledTime)
56636
+ return 1;
56637
+ if (scheduleB.scheduledTime && !scheduleA.scheduledTime)
56638
+ return -1;
56639
+ if (scheduleA.scheduledTime && scheduleB.scheduledTime) {
56640
+ const timeA = timeStringMinutes(extractTime(scheduleA.scheduledTime));
56641
+ const timeB = timeStringMinutes(extractTime(scheduleB.scheduledTime));
56642
+ return timeA - timeB;
56643
+ }
56644
+ }
56645
+ return new Date(scheduleA.scheduledDate).getTime() - new Date(scheduleB.scheduledDate).getTime();
56646
+ }
56647
+ return 0;
56648
+ }
56649
+
56616
56650
  function dehydrateMatchUps({ tournamentRecord }) {
56617
56651
  if (!tournamentRecord)
56618
56652
  return { error: MISSING_TOURNAMENT_RECORD };
@@ -56833,6 +56867,7 @@ var index$1 = {
56833
56867
  isOdd: isOdd,
56834
56868
  isPowerOf2: isPowerOf2,
56835
56869
  makeDeepCopy: makeDeepCopy,
56870
+ matchUpScheduleSort: matchUpScheduleSort,
56836
56871
  matchUpSort: matchUpSort,
56837
56872
  nearestPowerOf2: nearestPowerOf2,
56838
56873
  nextPowerOf2: nextPowerOf2,
@@ -58453,6 +58488,7 @@ var index = {
58453
58488
  auditConstants: auditConstants,
58454
58489
  completedMatchUpStatuses: completedMatchUpStatuses,
58455
58490
  directingMatchUpStatuses: directingMatchUpStatuses,
58491
+ displayConstants: displayConstants,
58456
58492
  drawDefinitionConstants: drawDefinitionConstants,
58457
58493
  entryStatusConstants: entryStatusConstants,
58458
58494
  errorConditionConstants: errorConditionConstants,
@@ -58498,6 +58534,7 @@ exports.competitionEngine = competitionEngine;
58498
58534
  exports.competitionGovernor = index$h;
58499
58535
  exports.completedMatchUpStatuses = completedMatchUpStatuses;
58500
58536
  exports.directingMatchUpStatuses = directingMatchUpStatuses;
58537
+ exports.displayConstants = displayConstants;
58501
58538
  exports.drawDefinitionConstants = drawDefinitionConstants;
58502
58539
  exports.drawsGovernor = index$e;
58503
58540
  exports.entriesGovernor = index$d;