tods-competition-factory 2.2.36 → 2.2.37

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.2.36';
6
+ return '2.2.37';
7
7
  }
8
8
 
9
9
  const SINGLES_MATCHUP = 'SINGLES';
@@ -32204,17 +32204,19 @@ function validateSetScore(set, matchUpFormat, isDecidingSet, allowIncomplete) {
32204
32204
  const isImplicitTiebreak = setTo && winnerScore === setTo + 1 && loserScore === setTo;
32205
32205
  const hasTiebreak = hasExplicitTiebreak || isImplicitTiebreak;
32206
32206
  if (hasTiebreak) {
32207
- if (setTo) {
32208
- if (winnerScore !== setTo + 1) {
32207
+ if (setTo && tiebreakAt) {
32208
+ const expectedWinnerScore = tiebreakAt === setTo ? setTo + 1 : setTo;
32209
+ const expectedLoserScore = tiebreakAt;
32210
+ if (winnerScore !== expectedWinnerScore) {
32209
32211
  return {
32210
32212
  isValid: false,
32211
- error: `Tiebreak set winner must have ${setTo + 1} games, got ${winnerScore}`,
32213
+ error: `Tiebreak set winner must have ${expectedWinnerScore} games, got ${winnerScore}`,
32212
32214
  };
32213
32215
  }
32214
- if (loserScore !== setTo) {
32216
+ if (loserScore !== expectedLoserScore) {
32215
32217
  return {
32216
32218
  isValid: false,
32217
- error: `Tiebreak set loser must have ${setTo} games when tied, got ${loserScore}`,
32219
+ error: `Tiebreak set loser must have ${expectedLoserScore} games, got ${loserScore}`,
32218
32220
  };
32219
32221
  }
32220
32222
  }
@@ -32273,23 +32275,25 @@ function validateSetScore(set, matchUpFormat, isDecidingSet, allowIncomplete) {
32273
32275
  error: `Set winner must reach ${setTo} games, got ${winnerScore}`,
32274
32276
  };
32275
32277
  }
32276
- if (scoreDiff < 2) {
32278
+ const isTiebreakWon = tiebreakAt && winnerScore === setTo && loserScore === tiebreakAt && scoreDiff === 1;
32279
+ if (scoreDiff < 2 && !isTiebreakWon) {
32277
32280
  return {
32278
32281
  isValid: false,
32279
32282
  error: `Set must be won by at least 2 games, got ${winnerScore}-${loserScore}`,
32280
32283
  };
32281
32284
  }
32282
32285
  if (tiebreakAt) {
32283
- if (loserScore >= tiebreakAt) {
32286
+ if (loserScore >= tiebreakAt && !isTiebreakWon) {
32284
32287
  return {
32285
32288
  isValid: false,
32286
32289
  error: `When tied at ${tiebreakAt}-${tiebreakAt}, must play tiebreak. Use format like ${tiebreakAt + 1}-${tiebreakAt}(5)`,
32287
32290
  };
32288
32291
  }
32289
- if (winnerScore > setTo + 1) {
32292
+ const maxWinnerScore = tiebreakAt === setTo ? setTo + 1 : setTo;
32293
+ if (winnerScore > maxWinnerScore) {
32290
32294
  return {
32291
32295
  isValid: false,
32292
- error: `With tiebreak format, set score cannot exceed ${setTo + 1}-${setTo - 1}. Got ${winnerScore}-${loserScore}`,
32296
+ error: `With tiebreak format, set score cannot exceed ${maxWinnerScore}-${tiebreakAt}. Got ${winnerScore}-${loserScore}`,
32293
32297
  };
32294
32298
  }
32295
32299
  }