@ttt-productions/q-core 0.1.29 → 0.1.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 (84) hide show
  1. package/dist/constants/sports.d.ts +1 -0
  2. package/dist/constants/sports.d.ts.map +1 -1
  3. package/dist/constants/sports.js +2 -0
  4. package/dist/constants/sports.js.map +1 -1
  5. package/dist/doc-schemas/admin-notifications.d.ts +1 -1
  6. package/dist/doc-schemas/audit-event.d.ts +2 -0
  7. package/dist/doc-schemas/audit-event.d.ts.map +1 -1
  8. package/dist/doc-schemas/award-group-grant.d.ts +2 -2
  9. package/dist/doc-schemas/gallery.d.ts.map +1 -1
  10. package/dist/doc-schemas/gallery.js +9 -3
  11. package/dist/doc-schemas/gallery.js.map +1 -1
  12. package/dist/doc-schemas/game-stat-history.js +2 -2
  13. package/dist/doc-schemas/game-stat-history.js.map +1 -1
  14. package/dist/doc-schemas/migration-console.d.ts +21 -5
  15. package/dist/doc-schemas/migration-console.d.ts.map +1 -1
  16. package/dist/doc-schemas/pending-media.d.ts.map +1 -1
  17. package/dist/doc-schemas/pending-media.js +8 -3
  18. package/dist/doc-schemas/pending-media.js.map +1 -1
  19. package/dist/doc-schemas/picture-retirement.d.ts.map +1 -1
  20. package/dist/doc-schemas/picture-retirement.js +8 -3
  21. package/dist/doc-schemas/picture-retirement.js.map +1 -1
  22. package/dist/doc-schemas/registry.d.ts +25 -14
  23. package/dist/doc-schemas/registry.d.ts.map +1 -1
  24. package/dist/doc-schemas/stats-operation.d.ts +22 -18
  25. package/dist/doc-schemas/stats-operation.d.ts.map +1 -1
  26. package/dist/doc-schemas/stats-operation.js +5 -0
  27. package/dist/doc-schemas/stats-operation.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/migration-console/action-ids.d.ts +4 -0
  33. package/dist/migration-console/action-ids.d.ts.map +1 -1
  34. package/dist/migration-console/action-ids.js +6 -0
  35. package/dist/migration-console/action-ids.js.map +1 -1
  36. package/dist/migration-console/console-lock.d.ts +10 -0
  37. package/dist/migration-console/console-lock.d.ts.map +1 -0
  38. package/dist/migration-console/console-lock.js +14 -0
  39. package/dist/migration-console/console-lock.js.map +1 -0
  40. package/dist/migration-console/consumed-source.d.ts +4 -0
  41. package/dist/migration-console/consumed-source.d.ts.map +1 -0
  42. package/dist/migration-console/consumed-source.js +10 -0
  43. package/dist/migration-console/consumed-source.js.map +1 -0
  44. package/dist/migration-console/manifest.d.ts +2 -0
  45. package/dist/migration-console/manifest.d.ts.map +1 -1
  46. package/dist/migration-console/manifest.js +173 -5
  47. package/dist/migration-console/manifest.js.map +1 -1
  48. package/dist/migration-console/run-state.d.ts +2 -0
  49. package/dist/migration-console/run-state.d.ts.map +1 -1
  50. package/dist/migration-console/run-state.js +3 -0
  51. package/dist/migration-console/run-state.js.map +1 -1
  52. package/dist/paths/picture-owner-paths.d.ts.map +1 -1
  53. package/dist/paths/picture-owner-paths.js +2 -1
  54. package/dist/paths/picture-owner-paths.js.map +1 -1
  55. package/dist/schemas/awards.d.ts +3 -3
  56. package/dist/schemas/migration-console.d.ts +58 -8
  57. package/dist/schemas/migration-console.d.ts.map +1 -1
  58. package/dist/schemas/migration-console.js +4 -0
  59. package/dist/schemas/migration-console.js.map +1 -1
  60. package/dist/schemas/scoring.d.ts +20 -20
  61. package/dist/schemas/stats.d.ts +12 -0
  62. package/dist/schemas/stats.d.ts.map +1 -1
  63. package/dist/schemas/stats.js +21 -1
  64. package/dist/schemas/stats.js.map +1 -1
  65. package/dist/sports/finalized-record.d.ts +2 -2
  66. package/dist/sports/finalized-record.d.ts.map +1 -1
  67. package/dist/sports/finalized-record.js +21 -2
  68. package/dist/sports/finalized-record.js.map +1 -1
  69. package/dist/types/audit.d.ts +1 -1
  70. package/dist/types/audit.d.ts.map +1 -1
  71. package/dist/types/audit.js +1 -0
  72. package/dist/types/audit.js.map +1 -1
  73. package/dist/utils/index.d.ts +1 -0
  74. package/dist/utils/index.d.ts.map +1 -1
  75. package/dist/utils/index.js +1 -0
  76. package/dist/utils/index.js.map +1 -1
  77. package/dist/utils/league-calendar.d.ts.map +1 -1
  78. package/dist/utils/league-calendar.js +6 -1
  79. package/dist/utils/league-calendar.js.map +1 -1
  80. package/dist/utils/stats-operation-request.d.ts +20 -0
  81. package/dist/utils/stats-operation-request.d.ts.map +1 -0
  82. package/dist/utils/stats-operation-request.js +10 -0
  83. package/dist/utils/stats-operation-request.js.map +1 -0
  84. package/package.json +2 -1
@@ -19,6 +19,7 @@ export declare const MAX_GAME_STATS_CORRECTION_TARGETS = 200;
19
19
  export declare const MAX_STATS_REPAIR_LISTED_CHANGES = 500;
20
20
  export declare const MAX_STATS_VALIDATION_DISCREPANCIES = 500;
21
21
  export declare const STAT_HISTORY_PAGE_SIZE = 1000;
22
+ export declare const MAX_STAT_HISTORY_PAGES: number;
22
23
  export declare const FOOTBALL_POINTS_BY_EVENT_TYPE: {
23
24
  readonly FOOTBALL_6PT: 6;
24
25
  readonly FOOTBALL_2PT: 2;
@@ -1 +1 @@
1
- {"version":3,"file":"sports.d.ts","sourceRoot":"","sources":["../../src/constants/sports.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,+BAA+B;;;;;;;;CAQgB,CAAC;AAI7D,eAAO,MAAM,gCAAgC;;;;CAIe,CAAC;AAE7D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAI1C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,eAAO,MAAM,6BAA6B;;;;;CAKgB,CAAC;AAE3D,eAAO,MAAM,wBAAwB,2CAA2C,CAAC;AAEjF,eAAO,MAAM,0BAA0B,8CAA8C,CAAC;AAEtF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;CAmBqB,CAAC;AAE1D,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,iCAAiC,mHACoE,CAAC;AAEnH,eAAO,MAAM,wBAAwB;;;;;;;;;CAciB,CAAC;AAEvD,eAAO,MAAM,4BAA4B;;;;CAOiB,CAAC;AAE3D,eAAO,MAAM,2BAA2B;;CAEuB,CAAC;AAEhE,eAAO,MAAM,kCAAkC,wBAAyB,CAAC;AACzE,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"sports.d.ts","sourceRoot":"","sources":["../../src/constants/sports.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,+BAA+B;;;;;;;;CAQgB,CAAC;AAI7D,eAAO,MAAM,gCAAgC;;;;CAIe,CAAC;AAE7D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAI1C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAA+D,CAAC;AAEnG,eAAO,MAAM,6BAA6B;;;;;CAKgB,CAAC;AAE3D,eAAO,MAAM,wBAAwB,2CAA2C,CAAC;AAEjF,eAAO,MAAM,0BAA0B,8CAA8C,CAAC;AAEtF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;CAmBqB,CAAC;AAE1D,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,iCAAiC,mHACoE,CAAC;AAEnH,eAAO,MAAM,wBAAwB;;;;;;;;;CAciB,CAAC;AAEvD,eAAO,MAAM,4BAA4B;;;;CAOiB,CAAC;AAE3D,eAAO,MAAM,2BAA2B;;CAEuB,CAAC;AAEhE,eAAO,MAAM,kCAAkC,wBAAyB,CAAC;AACzE,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { BASKETBALL_ASSIST_EVENT_TYPE, BASKETBALL_BULK_EDIT_EVENT_TYPE, BASKETBALL_ONE_POINT_EVENT_TYPE, BASKETBALL_REBOUND_EVENT_TYPE, BASKETBALL_THREE_POINT_EVENT_TYPE, BASKETBALL_TIMEOUT_EVENT_TYPE, BASKETBALL_TWO_POINT_EVENT_TYPE, FOOTBALL_BULK_EDIT_EVENT_TYPE, FOOTBALL_ONE_POINT_EVENT_TYPE, FOOTBALL_SIX_POINT_EVENT_TYPE, FOOTBALL_TWO_POINT_EVENT_TYPE, } from '../types/sports.js';
2
+ import { MAX_STAT_EVENTS_PER_GAME } from './business.js';
2
3
  export const BASKETBALL_POINTS_BY_EVENT_TYPE = {
3
4
  [BASKETBALL_ONE_POINT_EVENT_TYPE]: 1,
4
5
  [BASKETBALL_TWO_POINT_EVENT_TYPE]: 2,
@@ -24,6 +25,7 @@ export const MAX_GAME_STATS_CORRECTION_TARGETS = 200;
24
25
  export const MAX_STATS_REPAIR_LISTED_CHANGES = 500;
25
26
  export const MAX_STATS_VALIDATION_DISCREPANCIES = 500;
26
27
  export const STAT_HISTORY_PAGE_SIZE = 1000;
28
+ export const MAX_STAT_HISTORY_PAGES = Math.ceil(MAX_STAT_EVENTS_PER_GAME / STAT_HISTORY_PAGE_SIZE);
27
29
  export const FOOTBALL_POINTS_BY_EVENT_TYPE = {
28
30
  [FOOTBALL_SIX_POINT_EVENT_TYPE]: 6,
29
31
  [FOOTBALL_TWO_POINT_EVENT_TYPE]: 2,
@@ -1 +1 @@
1
- {"version":3,"file":"sports.js","sourceRoot":"","sources":["../../src/constants/sports.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BASKETBALL_ASSIST_EVENT_TYPE,\n BASKETBALL_BULK_EDIT_EVENT_TYPE,\n BASKETBALL_ONE_POINT_EVENT_TYPE,\n BASKETBALL_REBOUND_EVENT_TYPE,\n BASKETBALL_THREE_POINT_EVENT_TYPE,\n BASKETBALL_TIMEOUT_EVENT_TYPE,\n BASKETBALL_TWO_POINT_EVENT_TYPE,\n FOOTBALL_BULK_EDIT_EVENT_TYPE,\n FOOTBALL_ONE_POINT_EVENT_TYPE,\n FOOTBALL_SIX_POINT_EVENT_TYPE,\n FOOTBALL_TWO_POINT_EVENT_TYPE,\n} from '../types/sports.js';\nimport type {\n BasketballPlayerStatKey,\n BasketballStatEventType,\n FootballStatEventType,\n} from '../types/sports.js';\nimport type {\n FinalizationNotReadyReason,\n GameRepairRefusal,\n StatEventRefusalCode,\n StatsIntegrityRefusal,\n} from '../types/stats.js';\n\nexport const BASKETBALL_POINTS_BY_EVENT_TYPE = {\n [BASKETBALL_ONE_POINT_EVENT_TYPE]: 1,\n [BASKETBALL_TWO_POINT_EVENT_TYPE]: 2,\n [BASKETBALL_THREE_POINT_EVENT_TYPE]: 3,\n [BASKETBALL_REBOUND_EVENT_TYPE]: 0,\n [BASKETBALL_ASSIST_EVENT_TYPE]: 0,\n [BASKETBALL_TIMEOUT_EVENT_TYPE]: 0,\n [BASKETBALL_BULK_EDIT_EVENT_TYPE]: 0,\n} as const satisfies Record<BasketballStatEventType, number>;\n\n// Every weight is a multiple of one half, so FP summed across games equals FP of the summed\n// counters exactly.\nexport const BASKETBALL_FANTASY_POINT_WEIGHTS = {\n points: 1,\n rebounds: 1.5,\n assists: 2,\n} as const satisfies Record<BasketballPlayerStatKey, number>;\n\nexport const CURLING_ROUND_COUNT = 14;\n\nexport const MAX_CURLING_ROUND_POINTS = 4;\n\n// The most events one scoring write may carry: each event is a document created in the write's one\n// transaction, and a Firestore transaction commits at most 500 writes.\nexport const MAX_STAT_EVENTS_PER_WRITE = 200;\n\nexport const MAX_GAME_STATS_CORRECTION_TARGETS = 200;\n\nexport const MAX_STATS_REPAIR_LISTED_CHANGES = 500;\n\nexport const MAX_STATS_VALIDATION_DISCREPANCIES = 500;\n\nexport const STAT_HISTORY_PAGE_SIZE = 1000;\n\nexport const FOOTBALL_POINTS_BY_EVENT_TYPE = {\n [FOOTBALL_SIX_POINT_EVENT_TYPE]: 6,\n [FOOTBALL_TWO_POINT_EVENT_TYPE]: 2,\n [FOOTBALL_ONE_POINT_EVENT_TYPE]: 1,\n [FOOTBALL_BULK_EDIT_EVENT_TYPE]: 0,\n} as const satisfies Record<FootballStatEventType, number>;\n\nexport const TEAM_NOT_IN_GAME_MESSAGE = 'That team is not playing in this game.';\n\nexport const NOT_ON_GAME_ROSTER_MESSAGE = \"That player is not on this game's roster.\";\n\nexport const STAT_EVENT_REFUSAL_COPY = {\n eventTypeNotInSport: \"That stat does not belong to this game's sport.\",\n teamNotInGame: TEAM_NOT_IN_GAME_MESSAGE,\n playerNotRostered: \"That player is not on this game's roster for that team.\",\n assisterNotRostered: \"The assisting player is not on this game's roster for that team.\",\n assistNotAllowed:\n 'Only a 2- or 3-point basket can be assisted, and never by the player who scored it.',\n playerNotAllowed: \"That stat is the team's; it cannot name a player.\",\n roundNotNext: 'That round is not the next one to record.',\n roundsComplete: 'Every round is already recorded.',\n bulkValueInvalid:\n 'That entry is not a real result: stats are whole numbers and never go below zero.',\n bulkStale: 'The numbers changed while you were editing. Check the flagged values and save again.',\n eventIdConflict:\n 'A different stat was already saved under this one. Discard it and enter it again.',\n voidTargetNotSportEvent: 'There is no recorded stat there to undo.',\n correctionNotAccepted: 'Corrections are made from Fix stats, not from the scoring screen.',\n undoBelowZero:\n 'Undoing that play would leave a stat below zero, because a later entry already lowered it.',\n} as const satisfies Record<StatEventRefusalCode, string>;\n\nexport const STATS_MIGRATION_OPERATION_ID = 'migration';\nexport const STATS_MIGRATION_CORRECTION_REASON =\n 'The recorded result differs from what its recorded plays add up to; this correction keeps the recorded result.';\n\nexport const GAME_REPAIR_REFUSAL_COPY = {\n eventUnreadable:\n \"One of this game's recorded stats can no longer be read. Fix the event in the console, then repair the game.\",\n eventSequenceGap:\n \"This game's recorded stats are numbered with a gap or a repeat. Fix the event documents in the console, then restore the game.\",\n sourcesDisagree:\n \"This game's record, its stored numbers, and its recorded stats all disagree, so nothing says what was applied. Fix the game in the console first.\",\n scoreAmbiguous:\n \"The team's score was edited in two places to different values. Enter the score you want as a correction instead.\",\n fieldNotCorrectable:\n 'That number cannot be corrected for this sport. Restore the game from its recorded stats, or reopen it and score it again.',\n lineNotRostered: \"That player is not on this game's roster.\",\n teamNotInGame: 'That team is not playing in this game.',\n gameTooLarge: 'This repair is too large to save at once.',\n} as const satisfies Record<GameRepairRefusal, string>;\n\nexport const STATS_INTEGRITY_REFUSAL_COPY = {\n statsOutOfBand:\n \"This game's stored numbers no longer match the stats recorded for it. An admin must reconcile the game in Fix stats first.\",\n finalRecordMissing:\n \"This finalized game's record of its stats is missing. An admin must repair the game in Fix stats first.\",\n aggregateBelowZero:\n 'A league, career, or hall-of-fame total holds less than this game added to it. An admin must rebuild the totals in Fix stats first.',\n} as const satisfies Record<StatsIntegrityRefusal, string>;\n\nexport const FINALIZATION_NOT_READY_COPY = {\n roundsIncomplete: 'Every round must be recorded before the game can be finalized.',\n} as const satisfies Record<FinalizationNotReadyReason, string>;\n\nexport const HALL_OF_FAME_MINIMUM_GAMES_CHOICES = [25, 50, 100] as const;\nexport type HallOfFameMinimumGames = (typeof HALL_OF_FAME_MINIMUM_GAMES_CHOICES)[number];\n"]}
1
+ {"version":3,"file":"sports.js","sourceRoot":"","sources":["../../src/constants/sports.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BASKETBALL_ASSIST_EVENT_TYPE,\n BASKETBALL_BULK_EDIT_EVENT_TYPE,\n BASKETBALL_ONE_POINT_EVENT_TYPE,\n BASKETBALL_REBOUND_EVENT_TYPE,\n BASKETBALL_THREE_POINT_EVENT_TYPE,\n BASKETBALL_TIMEOUT_EVENT_TYPE,\n BASKETBALL_TWO_POINT_EVENT_TYPE,\n FOOTBALL_BULK_EDIT_EVENT_TYPE,\n FOOTBALL_ONE_POINT_EVENT_TYPE,\n FOOTBALL_SIX_POINT_EVENT_TYPE,\n FOOTBALL_TWO_POINT_EVENT_TYPE,\n} from '../types/sports.js';\nimport { MAX_STAT_EVENTS_PER_GAME } from './business.js';\nimport type {\n BasketballPlayerStatKey,\n BasketballStatEventType,\n FootballStatEventType,\n} from '../types/sports.js';\nimport type {\n FinalizationNotReadyReason,\n GameRepairRefusal,\n StatEventRefusalCode,\n StatsIntegrityRefusal,\n} from '../types/stats.js';\n\nexport const BASKETBALL_POINTS_BY_EVENT_TYPE = {\n [BASKETBALL_ONE_POINT_EVENT_TYPE]: 1,\n [BASKETBALL_TWO_POINT_EVENT_TYPE]: 2,\n [BASKETBALL_THREE_POINT_EVENT_TYPE]: 3,\n [BASKETBALL_REBOUND_EVENT_TYPE]: 0,\n [BASKETBALL_ASSIST_EVENT_TYPE]: 0,\n [BASKETBALL_TIMEOUT_EVENT_TYPE]: 0,\n [BASKETBALL_BULK_EDIT_EVENT_TYPE]: 0,\n} as const satisfies Record<BasketballStatEventType, number>;\n\n// Every weight is a multiple of one half, so FP summed across games equals FP of the summed\n// counters exactly.\nexport const BASKETBALL_FANTASY_POINT_WEIGHTS = {\n points: 1,\n rebounds: 1.5,\n assists: 2,\n} as const satisfies Record<BasketballPlayerStatKey, number>;\n\nexport const CURLING_ROUND_COUNT = 14;\n\nexport const MAX_CURLING_ROUND_POINTS = 4;\n\n// The most events one scoring write may carry: each event is a document created in the write's one\n// transaction, and a Firestore transaction commits at most 500 writes.\nexport const MAX_STAT_EVENTS_PER_WRITE = 200;\n\nexport const MAX_GAME_STATS_CORRECTION_TARGETS = 200;\n\nexport const MAX_STATS_REPAIR_LISTED_CHANGES = 500;\n\nexport const MAX_STATS_VALIDATION_DISCREPANCIES = 500;\n\nexport const STAT_HISTORY_PAGE_SIZE = 1000;\n\nexport const MAX_STAT_HISTORY_PAGES = Math.ceil(MAX_STAT_EVENTS_PER_GAME / STAT_HISTORY_PAGE_SIZE);\n\nexport const FOOTBALL_POINTS_BY_EVENT_TYPE = {\n [FOOTBALL_SIX_POINT_EVENT_TYPE]: 6,\n [FOOTBALL_TWO_POINT_EVENT_TYPE]: 2,\n [FOOTBALL_ONE_POINT_EVENT_TYPE]: 1,\n [FOOTBALL_BULK_EDIT_EVENT_TYPE]: 0,\n} as const satisfies Record<FootballStatEventType, number>;\n\nexport const TEAM_NOT_IN_GAME_MESSAGE = 'That team is not playing in this game.';\n\nexport const NOT_ON_GAME_ROSTER_MESSAGE = \"That player is not on this game's roster.\";\n\nexport const STAT_EVENT_REFUSAL_COPY = {\n eventTypeNotInSport: \"That stat does not belong to this game's sport.\",\n teamNotInGame: TEAM_NOT_IN_GAME_MESSAGE,\n playerNotRostered: \"That player is not on this game's roster for that team.\",\n assisterNotRostered: \"The assisting player is not on this game's roster for that team.\",\n assistNotAllowed:\n 'Only a 2- or 3-point basket can be assisted, and never by the player who scored it.',\n playerNotAllowed: \"That stat is the team's; it cannot name a player.\",\n roundNotNext: 'That round is not the next one to record.',\n roundsComplete: 'Every round is already recorded.',\n bulkValueInvalid:\n 'That entry is not a real result: stats are whole numbers and never go below zero.',\n bulkStale: 'The numbers changed while you were editing. Check the flagged values and save again.',\n eventIdConflict:\n 'A different stat was already saved under this one. Discard it and enter it again.',\n voidTargetNotSportEvent: 'There is no recorded stat there to undo.',\n correctionNotAccepted: 'Corrections are made from Fix stats, not from the scoring screen.',\n undoBelowZero:\n 'Undoing that play would leave a stat below zero, because a later entry already lowered it.',\n} as const satisfies Record<StatEventRefusalCode, string>;\n\nexport const STATS_MIGRATION_OPERATION_ID = 'migration';\nexport const STATS_MIGRATION_CORRECTION_REASON =\n 'The recorded result differs from what its recorded plays add up to; this correction keeps the recorded result.';\n\nexport const GAME_REPAIR_REFUSAL_COPY = {\n eventUnreadable:\n \"One of this game's recorded stats can no longer be read. Fix the event in the console, then repair the game.\",\n eventSequenceGap:\n \"This game's recorded stats are numbered with a gap or a repeat. Fix the event documents in the console, then restore the game.\",\n sourcesDisagree:\n \"This game's record, its stored numbers, and its recorded stats all disagree, so nothing says what was applied. Fix the game in the console first.\",\n scoreAmbiguous:\n \"The team's score was edited in two places to different values. Enter the score you want as a correction instead.\",\n fieldNotCorrectable:\n 'That number cannot be corrected for this sport. Restore the game from its recorded stats, or reopen it and score it again.',\n lineNotRostered: \"That player is not on this game's roster.\",\n teamNotInGame: 'That team is not playing in this game.',\n gameTooLarge: 'This repair is too large to save at once.',\n} as const satisfies Record<GameRepairRefusal, string>;\n\nexport const STATS_INTEGRITY_REFUSAL_COPY = {\n statsOutOfBand:\n \"This game's stored numbers no longer match the stats recorded for it. An admin must reconcile the game in Fix stats first.\",\n finalRecordMissing:\n \"This finalized game's record of its stats is missing. An admin must repair the game in Fix stats first.\",\n aggregateBelowZero:\n 'A league, career, or hall-of-fame total holds less than this game added to it. An admin must rebuild the totals in Fix stats first.',\n} as const satisfies Record<StatsIntegrityRefusal, string>;\n\nexport const FINALIZATION_NOT_READY_COPY = {\n roundsIncomplete: 'Every round must be recorded before the game can be finalized.',\n} as const satisfies Record<FinalizationNotReadyReason, string>;\n\nexport const HALL_OF_FAME_MINIMUM_GAMES_CHOICES = [25, 50, 100] as const;\nexport type HallOfFameMinimumGames = (typeof HALL_OF_FAME_MINIMUM_GAMES_CHOICES)[number];\n"]}
@@ -91,9 +91,9 @@ export type NotificationDeliveryPayload = z.infer<typeof NotificationDeliveryPay
91
91
  export declare const NotificationDeliverySchema: z.ZodObject<{
92
92
  deliveryId: z.ZodString;
93
93
  state: z.ZodEnum<{
94
+ skipped: "skipped";
94
95
  queued: "queued";
95
96
  materialized: "materialized";
96
- skipped: "skipped";
97
97
  deadLetter: "deadLetter";
98
98
  }>;
99
99
  notificationType: z.ZodEnum<{
@@ -49,6 +49,7 @@ export declare const auditEventTypeSchema: z.ZodEnum<{
49
49
  "award.deleted": "award.deleted";
50
50
  "award.granted": "award.granted";
51
51
  "award.revoked": "award.revoked";
52
+ "award.groupDecisionOpened": "award.groupDecisionOpened";
52
53
  "hardwareLoanContract.created": "hardwareLoanContract.created";
53
54
  "hardwareLoanContract.signed": "hardwareLoanContract.signed";
54
55
  "hardwareLoanContract.returned": "hardwareLoanContract.returned";
@@ -165,6 +166,7 @@ export declare const AuditEventSchema: z.ZodObject<{
165
166
  "award.deleted": "award.deleted";
166
167
  "award.granted": "award.granted";
167
168
  "award.revoked": "award.revoked";
169
+ "award.groupDecisionOpened": "award.groupDecisionOpened";
168
170
  "hardwareLoanContract.created": "hardwareLoanContract.created";
169
171
  "hardwareLoanContract.signed": "hardwareLoanContract.signed";
170
172
  "hardwareLoanContract.returned": "hardwareLoanContract.returned";
@@ -1 +1 @@
1
- {"version":3,"file":"audit-event.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/audit-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iCAgB3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"audit-event.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/audit-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iCAgB3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -8,8 +8,8 @@ export declare const awardGroupGrantActionSchema: z.ZodEnum<{
8
8
  revoke: "revoke";
9
9
  }>;
10
10
  export declare const awardGroupGrantStatusSchema: z.ZodEnum<{
11
- pending: "pending";
12
11
  complete: "complete";
12
+ pending: "pending";
13
13
  }>;
14
14
  export declare const awardGroupGrantDecisionSchema: z.ZodNumber;
15
15
  export declare const AwardGroupGrantSchema: z.ZodObject<{
@@ -28,8 +28,8 @@ export declare const AwardGroupGrantSchema: z.ZodObject<{
28
28
  decision: z.ZodNumber;
29
29
  actorUid: z.ZodString;
30
30
  status: z.ZodEnum<{
31
- pending: "pending";
32
31
  complete: "complete";
32
+ pending: "pending";
33
33
  }>;
34
34
  createdAt: z.ZodNumber;
35
35
  completedAt: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sBAAsB;;;;;;EAAkC,CAAC;AACtE,eAAO,MAAM,sBAAsB;;;;EAAkC,CAAC;AAEtE,eAAO,MAAM,eAAe,aAAkB,CAAC;AAE/C,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAM/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,oBAAoB;;;;iBAS7B,CAAC;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,sBAAsB;;;;;;EAAkC,CAAC;AACtE,eAAO,MAAM,sBAAsB;;;;EAAkC,CAAC;AAEtE,eAAO,MAAM,eAAe,aAAkB,CAAC;AAE/C,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAW7B,CAAC;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,oBAAoB;;;;iBAS7B,CAAC;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1,15 +1,21 @@
1
1
  import { z } from 'zod';
2
2
  import { GALLERY_OWNER_KIND_KEYS, PICTURE_OWNER_KIND_KEYS } from '../types/picture-owners.js';
3
- import { countSchema, epochMsSchema, stagingIdSchema } from './atoms.js';
3
+ import { isPictureOwnerId } from '../paths/picture-owner-paths.js';
4
+ import { countSchema, documentIdSegmentSchema, epochMsSchema, stagingIdSchema } from './atoms.js';
4
5
  export const pictureOwnerKindSchema = z.enum(PICTURE_OWNER_KIND_KEYS);
5
6
  export const galleryOwnerKindSchema = z.enum(GALLERY_OWNER_KIND_KEYS);
6
7
  export const pictureIdSchema = stagingIdSchema;
7
- export const GalleryPictureSchema = z.object({
8
+ export const GalleryPictureSchema = z
9
+ .object({
8
10
  ownerKind: galleryOwnerKindSchema,
9
- ownerId: z.string().min(1),
11
+ ownerId: documentIdSegmentSchema,
10
12
  position: z.string().min(1),
11
13
  sourceIndex: countSchema.optional(),
12
14
  createdAt: epochMsSchema,
15
+ })
16
+ .refine((picture) => isPictureOwnerId(picture.ownerKind, picture.ownerId), {
17
+ message: 'Not an owner of that kind.',
18
+ path: ['ownerId'],
13
19
  });
14
20
  export const GallerySummarySchema = z
15
21
  .object({
@@ -1 +1 @@
1
- {"version":3,"file":"gallery.js","sourceRoot":"","sources":["../../src/doc-schemas/gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,sBAAsB;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,aAAa;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,WAAW;IAClB,iBAAiB,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,aAAa;CACzB,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,EAAE;IACpF,OAAO,EAAE,uEAAuE;IAChF,IAAI,EAAE,CAAC,mBAAmB,CAAC;CAC5B,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { GALLERY_OWNER_KIND_KEYS, PICTURE_OWNER_KIND_KEYS } from '../types/picture-owners.js';\nimport { countSchema, epochMsSchema, stagingIdSchema } from './atoms.js';\n\nexport const pictureOwnerKindSchema = z.enum(PICTURE_OWNER_KIND_KEYS);\nexport const galleryOwnerKindSchema = z.enum(GALLERY_OWNER_KIND_KEYS);\n\nexport const pictureIdSchema = stagingIdSchema;\n\nexport const GalleryPictureSchema = z.object({\n ownerKind: galleryOwnerKindSchema,\n ownerId: z.string().min(1),\n position: z.string().min(1),\n sourceIndex: countSchema.optional(),\n createdAt: epochMsSchema,\n});\nexport type GalleryPicture = z.infer<typeof GalleryPictureSchema>;\n\nexport const GallerySummarySchema = z\n .object({\n count: countSchema,\n featuredPictureId: pictureIdSchema.optional(),\n updatedAt: epochMsSchema,\n })\n .refine((summary) => summary.count > 0 === (summary.featuredPictureId !== undefined), {\n message: 'featuredPictureId is present exactly when the gallery holds a picture',\n path: ['featuredPictureId'],\n });\nexport type GallerySummary = z.infer<typeof GallerySummarySchema>;\n"]}
1
+ {"version":3,"file":"gallery.js","sourceRoot":"","sources":["../../src/doc-schemas/gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,SAAS,EAAE,sBAAsB;IACjC,OAAO,EAAE,uBAAuB;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,aAAa;CACzB,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;IACzE,OAAO,EAAE,4BAA4B;IACrC,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,WAAW;IAClB,iBAAiB,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,aAAa;CACzB,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,EAAE;IACpF,OAAO,EAAE,uEAAuE;IAChF,IAAI,EAAE,CAAC,mBAAmB,CAAC;CAC5B,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { GALLERY_OWNER_KIND_KEYS, PICTURE_OWNER_KIND_KEYS } from '../types/picture-owners.js';\nimport { isPictureOwnerId } from '../paths/picture-owner-paths.js';\nimport { countSchema, documentIdSegmentSchema, epochMsSchema, stagingIdSchema } from './atoms.js';\n\nexport const pictureOwnerKindSchema = z.enum(PICTURE_OWNER_KIND_KEYS);\nexport const galleryOwnerKindSchema = z.enum(GALLERY_OWNER_KIND_KEYS);\n\nexport const pictureIdSchema = stagingIdSchema;\n\nexport const GalleryPictureSchema = z\n .object({\n ownerKind: galleryOwnerKindSchema,\n ownerId: documentIdSegmentSchema,\n position: z.string().min(1),\n sourceIndex: countSchema.optional(),\n createdAt: epochMsSchema,\n })\n .refine((picture) => isPictureOwnerId(picture.ownerKind, picture.ownerId), {\n message: 'Not an owner of that kind.',\n path: ['ownerId'],\n });\nexport type GalleryPicture = z.infer<typeof GalleryPictureSchema>;\n\nexport const GallerySummarySchema = z\n .object({\n count: countSchema,\n featuredPictureId: pictureIdSchema.optional(),\n updatedAt: epochMsSchema,\n })\n .refine((summary) => summary.count > 0 === (summary.featuredPictureId !== undefined), {\n message: 'featuredPictureId is present exactly when the gallery holds a picture',\n path: ['featuredPictureId'],\n });\nexport type GallerySummary = z.infer<typeof GallerySummarySchema>;\n"]}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { STAT_HISTORY_PAGE_SIZE } from '../constants/sports.js';
2
+ import { MAX_STAT_HISTORY_PAGES, STAT_HISTORY_PAGE_SIZE } from '../constants/sports.js';
3
3
  import { gameRosterPlayerIdSchema, leagueTypeSchema, teamIdSchema } from './atoms.js';
4
4
  import { GameStatEventSchema } from './game-stats.js';
5
5
  const pageEventsSchema = z
@@ -8,7 +8,7 @@ const pageEventsSchema = z
8
8
  .refine((events) => events.every((event, index) => index === 0 || events[index - 1].sequence < event.sequence), 'A page holds its events in sequence order.');
9
9
  export const GameStatHistoryFirstPageSchema = z.strictObject({
10
10
  events: pageEventsSchema,
11
- pageCount: z.number().int().positive(),
11
+ pageCount: z.number().int().positive().max(MAX_STAT_HISTORY_PAGES),
12
12
  leagueType: leagueTypeSchema,
13
13
  teamIds: z.array(teamIdSchema).min(1).max(2),
14
14
  rosterPlayerIds: z.array(gameRosterPlayerIdSchema),
@@ -1 +1 @@
1
- {"version":3,"file":"game-stat-history.js","sourceRoot":"","sources":["../../src/doc-schemas/game-stat-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,gBAAgB,GAAG,CAAC;KACvB,KAAK,CAAC,mBAAmB,CAAC;KAC1B,GAAG,CAAC,sBAAsB,CAAC;KAC3B,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,EAC5F,4CAA4C,CAC7C,CAAC;AAEJ,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3D,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAClD,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACxD,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;CAC7D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,YAAY,CAAC;IAClE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAC7B,mCAAmC,CACpC;CACF,CAAC,CAAC;AAGH,mGAAmG;AACnG,+BAA+B;AAC/B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/C,8BAA8B;IAC9B,qCAAqC;CACtC,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { STAT_HISTORY_PAGE_SIZE } from '../constants/sports.js';\nimport { gameRosterPlayerIdSchema, leagueTypeSchema, teamIdSchema } from './atoms.js';\nimport { GameStatEventSchema } from './game-stats.js';\n\nconst pageEventsSchema = z\n .array(GameStatEventSchema)\n .max(STAT_HISTORY_PAGE_SIZE)\n .refine(\n (events) =>\n events.every((event, index) => index === 0 || events[index - 1].sequence < event.sequence),\n 'A page holds its events in sequence order.',\n );\n\nexport const GameStatHistoryFirstPageSchema = z.strictObject({\n events: pageEventsSchema,\n pageCount: z.number().int().positive(),\n leagueType: leagueTypeSchema,\n teamIds: z.array(teamIdSchema).min(1).max(2),\n rosterPlayerIds: z.array(gameRosterPlayerIdSchema),\n absentRosterPlayerIds: z.array(gameRosterPlayerIdSchema),\n nonScoringRosterPlayerIds: z.array(gameRosterPlayerIdSchema),\n});\nexport type GameStatHistoryFirstPage = z.infer<typeof GameStatHistoryFirstPageSchema>;\n\nexport const GameStatHistoryContinuationPageSchema = z.strictObject({\n events: pageEventsSchema.refine(\n (events) => events.length > 0,\n 'A continuation page holds events.',\n ),\n});\nexport type GameStatHistoryContinuationPage = z.infer<typeof GameStatHistoryContinuationPageSchema>;\n\n// Both page shapes are strict, so a first page missing part of its snapshot is refused rather than\n// read as a continuation page.\nexport const GameStatHistoryPageSchema = z.union([\n GameStatHistoryFirstPageSchema,\n GameStatHistoryContinuationPageSchema,\n]);\nexport type GameStatHistoryPage = z.infer<typeof GameStatHistoryPageSchema>;\n"]}
1
+ {"version":3,"file":"game-stat-history.js","sourceRoot":"","sources":["../../src/doc-schemas/game-stat-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,gBAAgB,GAAG,CAAC;KACvB,KAAK,CAAC,mBAAmB,CAAC;KAC1B,GAAG,CAAC,sBAAsB,CAAC;KAC3B,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,EAC5F,4CAA4C,CAC7C,CAAC;AAEJ,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3D,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAClE,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAClD,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACxD,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;CAC7D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,YAAY,CAAC;IAClE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAC7B,mCAAmC,CACpC;CACF,CAAC,CAAC;AAGH,mGAAmG;AACnG,+BAA+B;AAC/B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/C,8BAA8B;IAC9B,qCAAqC;CACtC,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { MAX_STAT_HISTORY_PAGES, STAT_HISTORY_PAGE_SIZE } from '../constants/sports.js';\nimport { gameRosterPlayerIdSchema, leagueTypeSchema, teamIdSchema } from './atoms.js';\nimport { GameStatEventSchema } from './game-stats.js';\n\nconst pageEventsSchema = z\n .array(GameStatEventSchema)\n .max(STAT_HISTORY_PAGE_SIZE)\n .refine(\n (events) =>\n events.every((event, index) => index === 0 || events[index - 1].sequence < event.sequence),\n 'A page holds its events in sequence order.',\n );\n\nexport const GameStatHistoryFirstPageSchema = z.strictObject({\n events: pageEventsSchema,\n pageCount: z.number().int().positive().max(MAX_STAT_HISTORY_PAGES),\n leagueType: leagueTypeSchema,\n teamIds: z.array(teamIdSchema).min(1).max(2),\n rosterPlayerIds: z.array(gameRosterPlayerIdSchema),\n absentRosterPlayerIds: z.array(gameRosterPlayerIdSchema),\n nonScoringRosterPlayerIds: z.array(gameRosterPlayerIdSchema),\n});\nexport type GameStatHistoryFirstPage = z.infer<typeof GameStatHistoryFirstPageSchema>;\n\nexport const GameStatHistoryContinuationPageSchema = z.strictObject({\n events: pageEventsSchema.refine(\n (events) => events.length > 0,\n 'A continuation page holds events.',\n ),\n});\nexport type GameStatHistoryContinuationPage = z.infer<typeof GameStatHistoryContinuationPageSchema>;\n\n// Both page shapes are strict, so a first page missing part of its snapshot is refused rather than\n// read as a continuation page.\nexport const GameStatHistoryPageSchema = z.union([\n GameStatHistoryFirstPageSchema,\n GameStatHistoryContinuationPageSchema,\n]);\nexport type GameStatHistoryPage = z.infer<typeof GameStatHistoryPageSchema>;\n"]}
@@ -70,6 +70,10 @@ export declare const migrationActionIdSchema: z.ZodEnum<{
70
70
  "delete.v1GameLocations": "delete.v1GameLocations";
71
71
  "delete.v1AdminStats": "delete.v1AdminStats";
72
72
  "verify.v1CommerceDiscardable": "verify.v1CommerceDiscardable";
73
+ "verify.v1DisplayNamesUnique": "verify.v1DisplayNamesUnique";
74
+ "verify.v1TextFitsLimits": "verify.v1TextFitsLimits";
75
+ "verify.v1LeagueCapacity": "verify.v1LeagueCapacity";
76
+ "verify.v1HardwareContractIdsUnique": "verify.v1HardwareContractIdsUnique";
73
77
  "delete.v1Commerce": "delete.v1Commerce";
74
78
  "rebuild.leagueStats": "rebuild.leagueStats";
75
79
  "rebuild.lifetimeStats": "rebuild.lifetimeStats";
@@ -86,8 +90,8 @@ export declare const migrationActionIdSchema: z.ZodEnum<{
86
90
  "checkpoint.abandonedRegistrationSweepEnabled": "checkpoint.abandonedRegistrationSweepEnabled";
87
91
  }>;
88
92
  export declare const migrationDestinationStateSchema: z.ZodEnum<{
89
- live: "live";
90
93
  preCutover: "preCutover";
94
+ live: "live";
91
95
  }>;
92
96
  export declare const migrationOperationIdSchema: z.ZodString;
93
97
  export declare const migrationEvidenceSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
@@ -116,8 +120,8 @@ export declare const MigrationRunRecordSchema: z.ZodObject<{
116
120
  updatedAt: z.ZodNumber;
117
121
  completedAt: z.ZodOptional<z.ZodNumber>;
118
122
  status: z.ZodEnum<{
119
- complete: "complete";
120
123
  running: "running";
124
+ complete: "complete";
121
125
  stopped: "stopped";
122
126
  }>;
123
127
  pages: z.ZodNumber;
@@ -222,6 +226,10 @@ export declare const MigrationActionRunSchema: z.ZodObject<{
222
226
  "delete.v1GameLocations": "delete.v1GameLocations";
223
227
  "delete.v1AdminStats": "delete.v1AdminStats";
224
228
  "verify.v1CommerceDiscardable": "verify.v1CommerceDiscardable";
229
+ "verify.v1DisplayNamesUnique": "verify.v1DisplayNamesUnique";
230
+ "verify.v1TextFitsLimits": "verify.v1TextFitsLimits";
231
+ "verify.v1LeagueCapacity": "verify.v1LeagueCapacity";
232
+ "verify.v1HardwareContractIdsUnique": "verify.v1HardwareContractIdsUnique";
225
233
  "delete.v1Commerce": "delete.v1Commerce";
226
234
  "rebuild.leagueStats": "rebuild.leagueStats";
227
235
  "rebuild.lifetimeStats": "rebuild.lifetimeStats";
@@ -246,8 +254,8 @@ export declare const MigrationActionRunSchema: z.ZodObject<{
246
254
  updatedAt: z.ZodNumber;
247
255
  completedAt: z.ZodOptional<z.ZodNumber>;
248
256
  status: z.ZodEnum<{
249
- complete: "complete";
250
257
  running: "running";
258
+ complete: "complete";
251
259
  stopped: "stopped";
252
260
  }>;
253
261
  pages: z.ZodNumber;
@@ -281,8 +289,8 @@ export declare const MigrationActionRunSchema: z.ZodObject<{
281
289
  updatedAt: z.ZodNumber;
282
290
  completedAt: z.ZodOptional<z.ZodNumber>;
283
291
  status: z.ZodEnum<{
284
- complete: "complete";
285
292
  running: "running";
293
+ complete: "complete";
286
294
  stopped: "stopped";
287
295
  }>;
288
296
  pages: z.ZodNumber;
@@ -387,6 +395,10 @@ export declare const MigrationConsoleLockSchema: z.ZodObject<{
387
395
  "delete.v1GameLocations": "delete.v1GameLocations";
388
396
  "delete.v1AdminStats": "delete.v1AdminStats";
389
397
  "verify.v1CommerceDiscardable": "verify.v1CommerceDiscardable";
398
+ "verify.v1DisplayNamesUnique": "verify.v1DisplayNamesUnique";
399
+ "verify.v1TextFitsLimits": "verify.v1TextFitsLimits";
400
+ "verify.v1LeagueCapacity": "verify.v1LeagueCapacity";
401
+ "verify.v1HardwareContractIdsUnique": "verify.v1HardwareContractIdsUnique";
390
402
  "delete.v1Commerce": "delete.v1Commerce";
391
403
  "rebuild.leagueStats": "rebuild.leagueStats";
392
404
  "rebuild.lifetimeStats": "rebuild.lifetimeStats";
@@ -410,8 +422,8 @@ export declare const MigrationConsoleLockSchema: z.ZodObject<{
410
422
  export type MigrationConsoleLock = z.infer<typeof MigrationConsoleLockSchema>;
411
423
  export declare const MigrationConsoleSchema: z.ZodObject<{
412
424
  destinationState: z.ZodEnum<{
413
- live: "live";
414
425
  preCutover: "preCutover";
426
+ live: "live";
415
427
  }>;
416
428
  cutoverRecordedAt: z.ZodOptional<z.ZodNumber>;
417
429
  cutoverRecordedByUserId: z.ZodOptional<z.ZodString>;
@@ -487,6 +499,10 @@ export declare const MigrationConsoleSchema: z.ZodObject<{
487
499
  "delete.v1GameLocations": "delete.v1GameLocations";
488
500
  "delete.v1AdminStats": "delete.v1AdminStats";
489
501
  "verify.v1CommerceDiscardable": "verify.v1CommerceDiscardable";
502
+ "verify.v1DisplayNamesUnique": "verify.v1DisplayNamesUnique";
503
+ "verify.v1TextFitsLimits": "verify.v1TextFitsLimits";
504
+ "verify.v1LeagueCapacity": "verify.v1LeagueCapacity";
505
+ "verify.v1HardwareContractIdsUnique": "verify.v1HardwareContractIdsUnique";
490
506
  "delete.v1Commerce": "delete.v1Commerce";
491
507
  "rebuild.leagueStats": "rebuild.leagueStats";
492
508
  "rebuild.lifetimeStats": "rebuild.lifetimeStats";
@@ -1 +1 @@
1
- {"version":3,"file":"migration-console.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/migration-console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmC,CAAC;AACxE,eAAO,MAAM,+BAA+B;;;EAA2C,CAAC;AACxF,eAAO,MAAM,0BAA0B,aAA0B,CAAC;AAClE,eAAO,MAAM,uBAAuB,wDAAmD,CAAC;AAIxF,eAAO,MAAM,sBAAsB;;;;;kBAKjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;kBAOnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,yBAAyB;;;;;kBAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"migration-console.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/migration-console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmC,CAAC;AACxE,eAAO,MAAM,+BAA+B;;;EAA2C,CAAC;AACxF,eAAO,MAAM,0BAA0B,aAA0B,CAAC;AAClE,eAAO,MAAM,uBAAuB,wDAAmD,CAAC;AAIxF,eAAO,MAAM,sBAAsB;;;;;kBAKjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;kBAOnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,yBAAyB;;;;;kBAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/pending-media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/pending-media.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { createPendingMediaSchemas } from '@ttt-productions/media-schemas';
3
3
  import { DomainEventSchema } from '../domain-events/domain-events.js';
4
4
  import { FILE_ORIGIN_KEYS, PICTURE_ORIGIN_KEYS } from '../media/file-origins.js';
5
5
  import { AWARD_DEFINITION_OWNER_KIND } from '../types/picture-owners.js';
6
- import { countSchema } from './atoms.js';
6
+ import { isPictureOwnerId } from '../paths/picture-owner-paths.js';
7
+ import { countSchema, documentIdSegmentSchema } from './atoms.js';
7
8
  import { awardNameSchema } from './catalogs.js';
8
9
  import { pictureOwnerKindSchema } from './gallery.js';
9
10
  export const fileOriginSchema = z.enum(FILE_ORIGIN_KEYS);
@@ -12,8 +13,12 @@ export const StorageObjectRefSchema = z
12
13
  .object({ bucket: z.string().min(1), path: z.string().min(1) })
13
14
  .strict();
14
15
  export const PictureOwnerRefSchema = z
15
- .object({ kind: pictureOwnerKindSchema, id: z.string().min(1) })
16
- .strict();
16
+ .object({ kind: pictureOwnerKindSchema, id: documentIdSegmentSchema })
17
+ .strict()
18
+ .refine((owner) => isPictureOwnerId(owner.kind, owner.id), {
19
+ message: 'Not an owner of that kind.',
20
+ path: ['id'],
21
+ });
17
22
  export const PendingMediaTargetSchema = z
18
23
  .object({
19
24
  owner: PictureOwnerRefSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"pending-media.js","sourceRoot":"","sources":["../../src/doc-schemas/pending-media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC9C,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,eAAe,CAAC,QAAQ,EAAE;CACzC,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,2BAA2B,EACxF;IACE,OAAO,EAAE,uCAAuC;IAChD,IAAI,EAAE,CAAC,cAAc,CAAC;CACvB,CACF;KACA,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;IACxF,OAAO,EAAE,+CAA+C;IACxD,IAAI,EAAE,CAAC,aAAa,CAAC;CACtB,CAAC,CAAC;AAGL,MAAM,OAAO,GAAG,yBAAyB,CAAC;IACxC,gBAAgB;IAChB,iBAAiB,EAAE,iBAAiB;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,OAAO,CAAC,+BAA+B,CAAC;AACvF,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAC;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;AACzE,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC","sourcesContent":["import { z } from 'zod';\nimport { createPendingMediaSchemas } from '@ttt-productions/media-schemas';\nimport { DomainEventSchema } from '../domain-events/domain-events.js';\nimport { FILE_ORIGIN_KEYS, PICTURE_ORIGIN_KEYS } from '../media/file-origins.js';\nimport { AWARD_DEFINITION_OWNER_KIND } from '../types/picture-owners.js';\nimport { countSchema } from './atoms.js';\nimport { awardNameSchema } from './catalogs.js';\nimport { pictureOwnerKindSchema } from './gallery.js';\n\nexport const fileOriginSchema = z.enum(FILE_ORIGIN_KEYS);\nexport const pictureOriginSchema = z.enum(PICTURE_ORIGIN_KEYS);\n\nexport const StorageObjectRefSchema = z\n .object({ bucket: z.string().min(1), path: z.string().min(1) })\n .strict();\nexport type StorageObjectRef = z.infer<typeof StorageObjectRefSchema>;\n\nexport const PictureOwnerRefSchema = z\n .object({ kind: pictureOwnerKindSchema, id: z.string().min(1) })\n .strict();\nexport type PictureOwnerRef = z.infer<typeof PictureOwnerRefSchema>;\n\nexport const PendingMediaTargetSchema = z\n .object({\n owner: PictureOwnerRefSchema,\n carriedFrom: StorageObjectRefSchema.optional(),\n sourceIndex: countSchema.optional(),\n newAwardName: awardNameSchema.optional(),\n })\n .strict()\n .refine(\n (target) =>\n target.newAwardName === undefined || target.owner.kind === AWARD_DEFINITION_OWNER_KIND,\n {\n message: 'Only a badge upload creates an award.',\n path: ['newAwardName'],\n },\n )\n .refine((target) => target.sourceIndex === undefined || target.carriedFrom !== undefined, {\n message: 'Only a carried picture has a source position.',\n path: ['sourceIndex'],\n });\nexport type PendingMediaTarget = z.infer<typeof PendingMediaTargetSchema>;\n\nconst schemas = createPendingMediaSchemas({\n fileOriginSchema,\n domainEventSchema: DomainEventSchema,\n});\n\nexport const PendingMediaErrorCategorySchema = schemas.PendingMediaErrorCategorySchema;\nexport const PendingMediaResultSchema = schemas.PendingMediaResultSchema;\nexport const PendingMediaPendingSchema = schemas.PendingMediaPendingSchema;\nexport const PendingMediaProcessingSchema = schemas.PendingMediaProcessingSchema;\nexport const PendingMediaCompletedSchema = schemas.PendingMediaCompletedSchema;\nexport const PendingMediaFailedSchema = schemas.PendingMediaFailedSchema;\nexport const PendingMediaRejectedSchema = schemas.PendingMediaRejectedSchema;\nexport const PendingMediaSchema = schemas.PendingMediaSchema;\n\nexport type PendingMediaErrorCategory = z.infer<typeof PendingMediaErrorCategorySchema>;\nexport type PendingMediaResult = z.infer<typeof PendingMediaResultSchema>;\nexport type PendingMediaPending = z.infer<typeof PendingMediaPendingSchema>;\nexport type PendingMediaProcessing = z.infer<typeof PendingMediaProcessingSchema>;\nexport type PendingMediaCompleted = z.infer<typeof PendingMediaCompletedSchema>;\nexport type PendingMediaFailed = z.infer<typeof PendingMediaFailedSchema>;\nexport type PendingMediaRejected = z.infer<typeof PendingMediaRejectedSchema>;\nexport type PendingMedia = z.infer<typeof PendingMediaSchema>;\n"]}
1
+ {"version":3,"file":"pending-media.js","sourceRoot":"","sources":["../../src/doc-schemas/pending-media.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { createPendingMediaSchemas } from '@ttt-productions/media-schemas';\nimport { DomainEventSchema } from '../domain-events/domain-events.js';\nimport { FILE_ORIGIN_KEYS, PICTURE_ORIGIN_KEYS } from '../media/file-origins.js';\nimport { AWARD_DEFINITION_OWNER_KIND } from '../types/picture-owners.js';\nimport { isPictureOwnerId } from '../paths/picture-owner-paths.js';\nimport { countSchema, documentIdSegmentSchema } from './atoms.js';\nimport { awardNameSchema } from './catalogs.js';\nimport { pictureOwnerKindSchema } from './gallery.js';\n\nexport const fileOriginSchema = z.enum(FILE_ORIGIN_KEYS);\nexport const pictureOriginSchema = z.enum(PICTURE_ORIGIN_KEYS);\n\nexport const StorageObjectRefSchema = z\n .object({ bucket: z.string().min(1), path: z.string().min(1) })\n .strict();\nexport type StorageObjectRef = z.infer<typeof StorageObjectRefSchema>;\n\nexport const PictureOwnerRefSchema = z\n .object({ kind: pictureOwnerKindSchema, id: documentIdSegmentSchema })\n .strict()\n .refine((owner) => isPictureOwnerId(owner.kind, owner.id), {\n message: 'Not an owner of that kind.',\n path: ['id'],\n });\nexport type PictureOwnerRef = z.infer<typeof PictureOwnerRefSchema>;\n\nexport const PendingMediaTargetSchema = z\n .object({\n owner: PictureOwnerRefSchema,\n carriedFrom: StorageObjectRefSchema.optional(),\n sourceIndex: countSchema.optional(),\n newAwardName: awardNameSchema.optional(),\n })\n .strict()\n .refine(\n (target) =>\n target.newAwardName === undefined || target.owner.kind === AWARD_DEFINITION_OWNER_KIND,\n {\n message: 'Only a badge upload creates an award.',\n path: ['newAwardName'],\n },\n )\n .refine((target) => target.sourceIndex === undefined || target.carriedFrom !== undefined, {\n message: 'Only a carried picture has a source position.',\n path: ['sourceIndex'],\n });\nexport type PendingMediaTarget = z.infer<typeof PendingMediaTargetSchema>;\n\nconst schemas = createPendingMediaSchemas({\n fileOriginSchema,\n domainEventSchema: DomainEventSchema,\n});\n\nexport const PendingMediaErrorCategorySchema = schemas.PendingMediaErrorCategorySchema;\nexport const PendingMediaResultSchema = schemas.PendingMediaResultSchema;\nexport const PendingMediaPendingSchema = schemas.PendingMediaPendingSchema;\nexport const PendingMediaProcessingSchema = schemas.PendingMediaProcessingSchema;\nexport const PendingMediaCompletedSchema = schemas.PendingMediaCompletedSchema;\nexport const PendingMediaFailedSchema = schemas.PendingMediaFailedSchema;\nexport const PendingMediaRejectedSchema = schemas.PendingMediaRejectedSchema;\nexport const PendingMediaSchema = schemas.PendingMediaSchema;\n\nexport type PendingMediaErrorCategory = z.infer<typeof PendingMediaErrorCategorySchema>;\nexport type PendingMediaResult = z.infer<typeof PendingMediaResultSchema>;\nexport type PendingMediaPending = z.infer<typeof PendingMediaPendingSchema>;\nexport type PendingMediaProcessing = z.infer<typeof PendingMediaProcessingSchema>;\nexport type PendingMediaCompleted = z.infer<typeof PendingMediaCompletedSchema>;\nexport type PendingMediaFailed = z.infer<typeof PendingMediaFailedSchema>;\nexport type PendingMediaRejected = z.infer<typeof PendingMediaRejectedSchema>;\nexport type PendingMedia = z.infer<typeof PendingMediaSchema>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"picture-retirement.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/picture-retirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,6BAA6B;;;;;;EAAyC,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;4BASxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;iBAIlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"picture-retirement.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/picture-retirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,6BAA6B;;;;;;EAAyC,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;4BAaxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;iBAIlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { PICTURE_RETIREMENT_REASON_KEYS } from '../types/uploads.js';
3
- import { epochMsSchema } from './atoms.js';
3
+ import { isPictureOwnerId } from '../paths/picture-owner-paths.js';
4
+ import { documentIdSegmentSchema, epochMsSchema } from './atoms.js';
4
5
  import { galleryOwnerKindSchema, pictureIdSchema } from './gallery.js';
5
6
  export const pictureRetirementReasonSchema = z.enum(PICTURE_RETIREMENT_REASON_KEYS);
6
7
  export const PictureRetirementTargetSchema = z.discriminatedUnion('kind', [
@@ -9,9 +10,13 @@ export const PictureRetirementTargetSchema = z.discriminatedUnion('kind', [
9
10
  .object({
10
11
  kind: z.literal('gallery'),
11
12
  ownerKind: galleryOwnerKindSchema,
12
- ownerId: z.string().min(1),
13
+ ownerId: documentIdSegmentSchema,
13
14
  })
14
- .strict(),
15
+ .strict()
16
+ .refine((target) => isPictureOwnerId(target.ownerKind, target.ownerId), {
17
+ message: 'Not an owner of that kind.',
18
+ path: ['ownerId'],
19
+ }),
15
20
  ]);
16
21
  export const PictureRetirementSchema = z.object({
17
22
  target: PictureRetirementTargetSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"picture-retirement.js","sourceRoot":"","sources":["../../src/doc-schemas/picture-retirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7E,CAAC;SACE,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,SAAS,EAAE,sBAAsB;QACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B,CAAC;SACD,MAAM,EAAE;CACZ,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,6BAA6B;IACrC,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,6BAA6B;CACtC,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { PICTURE_RETIREMENT_REASON_KEYS } from '../types/uploads.js';\nimport { epochMsSchema } from './atoms.js';\nimport { galleryOwnerKindSchema, pictureIdSchema } from './gallery.js';\n\nexport const pictureRetirementReasonSchema = z.enum(PICTURE_RETIREMENT_REASON_KEYS);\n\nexport const PictureRetirementTargetSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('picture'), pictureId: pictureIdSchema }).strict(),\n z\n .object({\n kind: z.literal('gallery'),\n ownerKind: galleryOwnerKindSchema,\n ownerId: z.string().min(1),\n })\n .strict(),\n]);\nexport type PictureRetirementTarget = z.infer<typeof PictureRetirementTargetSchema>;\n\nexport const PictureRetirementSchema = z.object({\n target: PictureRetirementTargetSchema,\n requestedAt: epochMsSchema,\n reason: pictureRetirementReasonSchema,\n});\nexport type PictureRetirement = z.infer<typeof PictureRetirementSchema>;\n"]}
1
+ {"version":3,"file":"picture-retirement.js","sourceRoot":"","sources":["../../src/doc-schemas/picture-retirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7E,CAAC;SACE,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,SAAS,EAAE,sBAAsB;QACjC,OAAO,EAAE,uBAAuB;KACjC,CAAC;SACD,MAAM,EAAE;SACR,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;QACtE,OAAO,EAAE,4BAA4B;QACrC,IAAI,EAAE,CAAC,SAAS,CAAC;KAClB,CAAC;CACL,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,6BAA6B;IACrC,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,6BAA6B;CACtC,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { PICTURE_RETIREMENT_REASON_KEYS } from '../types/uploads.js';\nimport { isPictureOwnerId } from '../paths/picture-owner-paths.js';\nimport { documentIdSegmentSchema, epochMsSchema } from './atoms.js';\nimport { galleryOwnerKindSchema, pictureIdSchema } from './gallery.js';\n\nexport const pictureRetirementReasonSchema = z.enum(PICTURE_RETIREMENT_REASON_KEYS);\n\nexport const PictureRetirementTargetSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('picture'), pictureId: pictureIdSchema }).strict(),\n z\n .object({\n kind: z.literal('gallery'),\n ownerKind: galleryOwnerKindSchema,\n ownerId: documentIdSegmentSchema,\n })\n .strict()\n .refine((target) => isPictureOwnerId(target.ownerKind, target.ownerId), {\n message: 'Not an owner of that kind.',\n path: ['ownerId'],\n }),\n]);\nexport type PictureRetirementTarget = z.infer<typeof PictureRetirementTargetSchema>;\n\nexport const PictureRetirementSchema = z.object({\n target: PictureRetirementTargetSchema,\n requestedAt: epochMsSchema,\n reason: pictureRetirementReasonSchema,\n});\nexport type PictureRetirement = z.infer<typeof PictureRetirementSchema>;\n"]}
@@ -1245,8 +1245,8 @@ export declare const COLLECTION_SCHEMAS: {
1245
1245
  decision: z.ZodNumber;
1246
1246
  actorUid: z.ZodString;
1247
1247
  status: z.ZodEnum<{
1248
- pending: "pending";
1249
1248
  complete: "complete";
1249
+ pending: "pending";
1250
1250
  }>;
1251
1251
  createdAt: z.ZodNumber;
1252
1252
  completedAt: z.ZodOptional<z.ZodNumber>;
@@ -1348,8 +1348,8 @@ export declare const COLLECTION_SCHEMAS: {
1348
1348
  startedAt: z.ZodNumber;
1349
1349
  updatedAt: z.ZodNumber;
1350
1350
  status: z.ZodEnum<{
1351
- complete: "complete";
1352
1351
  running: "running";
1352
+ complete: "complete";
1353
1353
  stopped: "stopped";
1354
1354
  }>;
1355
1355
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1369,8 +1369,8 @@ export declare const COLLECTION_SCHEMAS: {
1369
1369
  startedAt: z.ZodNumber;
1370
1370
  updatedAt: z.ZodNumber;
1371
1371
  status: z.ZodEnum<{
1372
- complete: "complete";
1373
1372
  running: "running";
1373
+ complete: "complete";
1374
1374
  stopped: "stopped";
1375
1375
  }>;
1376
1376
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1395,8 +1395,8 @@ export declare const COLLECTION_SCHEMAS: {
1395
1395
  startedAt: z.ZodNumber;
1396
1396
  updatedAt: z.ZodNumber;
1397
1397
  status: z.ZodEnum<{
1398
- complete: "complete";
1399
1398
  running: "running";
1399
+ complete: "complete";
1400
1400
  stopped: "stopped";
1401
1401
  }>;
1402
1402
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1419,8 +1419,8 @@ export declare const COLLECTION_SCHEMAS: {
1419
1419
  startedAt: z.ZodNumber;
1420
1420
  updatedAt: z.ZodNumber;
1421
1421
  status: z.ZodEnum<{
1422
- complete: "complete";
1423
1422
  running: "running";
1423
+ complete: "complete";
1424
1424
  stopped: "stopped";
1425
1425
  }>;
1426
1426
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1435,12 +1435,13 @@ export declare const COLLECTION_SCHEMAS: {
1435
1435
  gameId: z.ZodString;
1436
1436
  }, z.core.$strict>;
1437
1437
  reason: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
1438
+ requestHash: z.ZodOptional<z.ZodString>;
1438
1439
  startedByUserId: z.ZodString;
1439
1440
  startedAt: z.ZodNumber;
1440
1441
  updatedAt: z.ZodNumber;
1441
1442
  status: z.ZodEnum<{
1442
- complete: "complete";
1443
1443
  running: "running";
1444
+ complete: "complete";
1444
1445
  stopped: "stopped";
1445
1446
  }>;
1446
1447
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1459,8 +1460,8 @@ export declare const COLLECTION_SCHEMAS: {
1459
1460
  startedAt: z.ZodNumber;
1460
1461
  updatedAt: z.ZodNumber;
1461
1462
  status: z.ZodEnum<{
1462
- complete: "complete";
1463
1463
  running: "running";
1464
+ complete: "complete";
1464
1465
  stopped: "stopped";
1465
1466
  }>;
1466
1467
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1480,12 +1481,13 @@ export declare const COLLECTION_SCHEMAS: {
1480
1481
  }>;
1481
1482
  }, z.core.$strict>;
1482
1483
  reason: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
1484
+ requestHash: z.ZodOptional<z.ZodString>;
1483
1485
  startedByUserId: z.ZodString;
1484
1486
  startedAt: z.ZodNumber;
1485
1487
  updatedAt: z.ZodNumber;
1486
1488
  status: z.ZodEnum<{
1487
- complete: "complete";
1488
1489
  running: "running";
1490
+ complete: "complete";
1489
1491
  stopped: "stopped";
1490
1492
  }>;
1491
1493
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1533,8 +1535,8 @@ export declare const COLLECTION_SCHEMAS: {
1533
1535
  startedAt: z.ZodNumber;
1534
1536
  updatedAt: z.ZodNumber;
1535
1537
  status: z.ZodEnum<{
1536
- complete: "complete";
1537
1538
  running: "running";
1539
+ complete: "complete";
1538
1540
  stopped: "stopped";
1539
1541
  }>;
1540
1542
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1552,8 +1554,8 @@ export declare const COLLECTION_SCHEMAS: {
1552
1554
  startedAt: z.ZodNumber;
1553
1555
  updatedAt: z.ZodNumber;
1554
1556
  status: z.ZodEnum<{
1555
- complete: "complete";
1556
1557
  running: "running";
1558
+ complete: "complete";
1557
1559
  stopped: "stopped";
1558
1560
  }>;
1559
1561
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -2577,6 +2579,7 @@ export declare const COLLECTION_SCHEMAS: {
2577
2579
  "award.deleted": "award.deleted";
2578
2580
  "award.granted": "award.granted";
2579
2581
  "award.revoked": "award.revoked";
2582
+ "award.groupDecisionOpened": "award.groupDecisionOpened";
2580
2583
  "hardwareLoanContract.created": "hardwareLoanContract.created";
2581
2584
  "hardwareLoanContract.signed": "hardwareLoanContract.signed";
2582
2585
  "hardwareLoanContract.returned": "hardwareLoanContract.returned";
@@ -2709,9 +2712,9 @@ export declare const COLLECTION_SCHEMAS: {
2709
2712
  readonly 'notificationDeliveries/{deliveryId}': z.ZodObject<{
2710
2713
  deliveryId: z.ZodString;
2711
2714
  state: z.ZodEnum<{
2715
+ skipped: "skipped";
2712
2716
  queued: "queued";
2713
2717
  materialized: "materialized";
2714
- skipped: "skipped";
2715
2718
  deadLetter: "deadLetter";
2716
2719
  }>;
2717
2720
  notificationType: z.ZodEnum<{
@@ -2806,8 +2809,8 @@ export declare const COLLECTION_SCHEMAS: {
2806
2809
  }, z.core.$strip>;
2807
2810
  readonly '_serverData/migrationConsole': z.ZodObject<{
2808
2811
  destinationState: z.ZodEnum<{
2809
- live: "live";
2810
2812
  preCutover: "preCutover";
2813
+ live: "live";
2811
2814
  }>;
2812
2815
  cutoverRecordedAt: z.ZodOptional<z.ZodNumber>;
2813
2816
  cutoverRecordedByUserId: z.ZodOptional<z.ZodString>;
@@ -2883,6 +2886,10 @@ export declare const COLLECTION_SCHEMAS: {
2883
2886
  "delete.v1GameLocations": "delete.v1GameLocations";
2884
2887
  "delete.v1AdminStats": "delete.v1AdminStats";
2885
2888
  "verify.v1CommerceDiscardable": "verify.v1CommerceDiscardable";
2889
+ "verify.v1DisplayNamesUnique": "verify.v1DisplayNamesUnique";
2890
+ "verify.v1TextFitsLimits": "verify.v1TextFitsLimits";
2891
+ "verify.v1LeagueCapacity": "verify.v1LeagueCapacity";
2892
+ "verify.v1HardwareContractIdsUnique": "verify.v1HardwareContractIdsUnique";
2886
2893
  "delete.v1Commerce": "delete.v1Commerce";
2887
2894
  "rebuild.leagueStats": "rebuild.leagueStats";
2888
2895
  "rebuild.lifetimeStats": "rebuild.lifetimeStats";
@@ -2983,6 +2990,10 @@ export declare const COLLECTION_SCHEMAS: {
2983
2990
  "delete.v1GameLocations": "delete.v1GameLocations";
2984
2991
  "delete.v1AdminStats": "delete.v1AdminStats";
2985
2992
  "verify.v1CommerceDiscardable": "verify.v1CommerceDiscardable";
2993
+ "verify.v1DisplayNamesUnique": "verify.v1DisplayNamesUnique";
2994
+ "verify.v1TextFitsLimits": "verify.v1TextFitsLimits";
2995
+ "verify.v1LeagueCapacity": "verify.v1LeagueCapacity";
2996
+ "verify.v1HardwareContractIdsUnique": "verify.v1HardwareContractIdsUnique";
2986
2997
  "delete.v1Commerce": "delete.v1Commerce";
2987
2998
  "rebuild.leagueStats": "rebuild.leagueStats";
2988
2999
  "rebuild.lifetimeStats": "rebuild.lifetimeStats";
@@ -3007,8 +3018,8 @@ export declare const COLLECTION_SCHEMAS: {
3007
3018
  updatedAt: z.ZodNumber;
3008
3019
  completedAt: z.ZodOptional<z.ZodNumber>;
3009
3020
  status: z.ZodEnum<{
3010
- complete: "complete";
3011
3021
  running: "running";
3022
+ complete: "complete";
3012
3023
  stopped: "stopped";
3013
3024
  }>;
3014
3025
  pages: z.ZodNumber;
@@ -3042,8 +3053,8 @@ export declare const COLLECTION_SCHEMAS: {
3042
3053
  updatedAt: z.ZodNumber;
3043
3054
  completedAt: z.ZodOptional<z.ZodNumber>;
3044
3055
  status: z.ZodEnum<{
3045
- complete: "complete";
3046
3056
  running: "running";
3057
+ complete: "complete";
3047
3058
  stopped: "stopped";
3048
3059
  }>;
3049
3060
  pages: z.ZodNumber;