@ttt-productions/q-core 0.1.3 → 0.1.5

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 (67) hide show
  1. package/dist/constants/business.d.ts +40 -9
  2. package/dist/constants/business.d.ts.map +1 -1
  3. package/dist/constants/business.js +41 -20
  4. package/dist/constants/business.js.map +1 -1
  5. package/dist/constants/media.d.ts +2 -0
  6. package/dist/constants/media.d.ts.map +1 -1
  7. package/dist/constants/media.js +8 -0
  8. package/dist/constants/media.js.map +1 -1
  9. package/dist/constants/scheduled-jobs.d.ts +1 -1
  10. package/dist/constants/scheduled-jobs.d.ts.map +1 -1
  11. package/dist/constants/scheduled-jobs.js +7 -1
  12. package/dist/constants/scheduled-jobs.js.map +1 -1
  13. package/dist/doc-schemas/admin-notifications.d.ts +1 -1
  14. package/dist/doc-schemas/award-group-grant.d.ts +53 -0
  15. package/dist/doc-schemas/award-group-grant.d.ts.map +1 -0
  16. package/dist/doc-schemas/award-group-grant.js +63 -0
  17. package/dist/doc-schemas/award-group-grant.js.map +1 -0
  18. package/dist/doc-schemas/index.d.ts +1 -0
  19. package/dist/doc-schemas/index.d.ts.map +1 -1
  20. package/dist/doc-schemas/index.js +1 -0
  21. package/dist/doc-schemas/index.js.map +1 -1
  22. package/dist/doc-schemas/migration-console.d.ts +3 -3
  23. package/dist/doc-schemas/registry.d.ts +52 -12
  24. package/dist/doc-schemas/registry.d.ts.map +1 -1
  25. package/dist/doc-schemas/registry.js +5 -0
  26. package/dist/doc-schemas/registry.js.map +1 -1
  27. package/dist/doc-schemas/sport-league.d.ts +2 -0
  28. package/dist/doc-schemas/sport-league.d.ts.map +1 -1
  29. package/dist/doc-schemas/sport-league.js +9 -0
  30. package/dist/doc-schemas/sport-league.js.map +1 -1
  31. package/dist/doc-schemas/stats-operation.d.ts +18 -18
  32. package/dist/ids/award-grant-ids.d.ts +9 -0
  33. package/dist/ids/award-grant-ids.d.ts.map +1 -0
  34. package/dist/ids/award-grant-ids.js +17 -0
  35. package/dist/ids/award-grant-ids.js.map +1 -0
  36. package/dist/ids/index.d.ts +1 -0
  37. package/dist/ids/index.d.ts.map +1 -1
  38. package/dist/ids/index.js +1 -0
  39. package/dist/ids/index.js.map +1 -1
  40. package/dist/paths/collection-groups.d.ts +1 -0
  41. package/dist/paths/collection-groups.d.ts.map +1 -1
  42. package/dist/paths/collection-groups.js +3 -1
  43. package/dist/paths/collection-groups.js.map +1 -1
  44. package/dist/paths/collection-refs.d.ts +1 -0
  45. package/dist/paths/collection-refs.d.ts.map +1 -1
  46. package/dist/paths/collection-refs.js +1 -0
  47. package/dist/paths/collection-refs.js.map +1 -1
  48. package/dist/paths/collections.d.ts +5 -0
  49. package/dist/paths/collections.d.ts.map +1 -1
  50. package/dist/paths/collections.js +8 -0
  51. package/dist/paths/collections.js.map +1 -1
  52. package/dist/paths/path-builders.d.ts +3 -0
  53. package/dist/paths/path-builders.d.ts.map +1 -1
  54. package/dist/paths/path-builders.js +13 -1
  55. package/dist/paths/path-builders.js.map +1 -1
  56. package/dist/schemas/admin-notifications.d.ts +1 -1
  57. package/dist/schemas/awards.d.ts +94 -2
  58. package/dist/schemas/awards.d.ts.map +1 -1
  59. package/dist/schemas/awards.js +49 -9
  60. package/dist/schemas/awards.js.map +1 -1
  61. package/dist/schemas/leagues.d.ts +2 -2
  62. package/dist/schemas/migration-console.d.ts +7 -7
  63. package/dist/types/unions.d.ts +8 -0
  64. package/dist/types/unions.d.ts.map +1 -1
  65. package/dist/types/unions.js +12 -2
  66. package/dist/types/unions.js.map +1 -1
  67. package/package.json +1 -1
@@ -120,6 +120,8 @@ export declare const COLLECTION_SCHEMAS: {
120
120
  featuredPictureId: z.ZodOptional<z.ZodString>;
121
121
  updatedAt: z.ZodNumber;
122
122
  }, z.core.$strip>>;
123
+ teamRevision: z.ZodOptional<z.ZodNumber>;
124
+ gameRevision: z.ZodOptional<z.ZodNumber>;
123
125
  createdAt: z.ZodNumber;
124
126
  updatedAt: z.ZodNumber;
125
127
  }, z.core.$strip>;
@@ -1227,6 +1229,42 @@ export declare const COLLECTION_SCHEMAS: {
1227
1229
  createdAt: z.ZodNumber;
1228
1230
  updatedAt: z.ZodNumber;
1229
1231
  }, z.core.$strict>;
1232
+ readonly 'awardGroupGrants/{grantId}': z.ZodObject<{
1233
+ grantId: z.ZodString;
1234
+ action: z.ZodEnum<{
1235
+ grant: "grant";
1236
+ revoke: "revoke";
1237
+ }>;
1238
+ awardId: z.ZodString;
1239
+ groupType: z.ZodEnum<{
1240
+ team: "team";
1241
+ league: "league";
1242
+ }>;
1243
+ groupId: z.ZodString;
1244
+ targetKey: z.ZodString;
1245
+ decision: z.ZodNumber;
1246
+ actorUid: z.ZodString;
1247
+ status: z.ZodEnum<{
1248
+ pending: "pending";
1249
+ complete: "complete";
1250
+ }>;
1251
+ createdAt: z.ZodNumber;
1252
+ completedAt: z.ZodOptional<z.ZodNumber>;
1253
+ attemptCount: z.ZodNumber;
1254
+ nextAttemptAt: z.ZodNumber;
1255
+ lastError: z.ZodOptional<z.ZodString>;
1256
+ }, z.core.$strict>;
1257
+ readonly 'awardGroupGrants/{grantId}/awardGroupGrantPeople/{userId}': z.ZodObject<{
1258
+ userId: z.ZodString;
1259
+ heldBefore: z.ZodBoolean;
1260
+ recordedAt: z.ZodNumber;
1261
+ revoked: z.ZodBoolean;
1262
+ revokedAt: z.ZodOptional<z.ZodNumber>;
1263
+ revokeSkipped: z.ZodOptional<z.ZodEnum<{
1264
+ heldBefore: "heldBefore";
1265
+ heldByAnotherGrant: "heldByAnotherGrant";
1266
+ }>>;
1267
+ }, z.core.$strict>;
1230
1268
  readonly 'sportHallOfFame/{sportKey}': z.ZodObject<{
1231
1269
  playerStats: z.ZodRecord<z.ZodString, z.ZodUnion<(z.ZodObject<{
1232
1270
  fantasyPoints: z.ZodNumber;
@@ -1310,8 +1348,8 @@ export declare const COLLECTION_SCHEMAS: {
1310
1348
  startedAt: z.ZodNumber;
1311
1349
  updatedAt: z.ZodNumber;
1312
1350
  status: z.ZodEnum<{
1313
- running: "running";
1314
1351
  complete: "complete";
1352
+ running: "running";
1315
1353
  stopped: "stopped";
1316
1354
  }>;
1317
1355
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1331,8 +1369,8 @@ export declare const COLLECTION_SCHEMAS: {
1331
1369
  startedAt: z.ZodNumber;
1332
1370
  updatedAt: z.ZodNumber;
1333
1371
  status: z.ZodEnum<{
1334
- running: "running";
1335
1372
  complete: "complete";
1373
+ running: "running";
1336
1374
  stopped: "stopped";
1337
1375
  }>;
1338
1376
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1357,8 +1395,8 @@ export declare const COLLECTION_SCHEMAS: {
1357
1395
  startedAt: z.ZodNumber;
1358
1396
  updatedAt: z.ZodNumber;
1359
1397
  status: z.ZodEnum<{
1360
- running: "running";
1361
1398
  complete: "complete";
1399
+ running: "running";
1362
1400
  stopped: "stopped";
1363
1401
  }>;
1364
1402
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1381,8 +1419,8 @@ export declare const COLLECTION_SCHEMAS: {
1381
1419
  startedAt: z.ZodNumber;
1382
1420
  updatedAt: z.ZodNumber;
1383
1421
  status: z.ZodEnum<{
1384
- running: "running";
1385
1422
  complete: "complete";
1423
+ running: "running";
1386
1424
  stopped: "stopped";
1387
1425
  }>;
1388
1426
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1401,8 +1439,8 @@ export declare const COLLECTION_SCHEMAS: {
1401
1439
  startedAt: z.ZodNumber;
1402
1440
  updatedAt: z.ZodNumber;
1403
1441
  status: z.ZodEnum<{
1404
- running: "running";
1405
1442
  complete: "complete";
1443
+ running: "running";
1406
1444
  stopped: "stopped";
1407
1445
  }>;
1408
1446
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1421,8 +1459,8 @@ export declare const COLLECTION_SCHEMAS: {
1421
1459
  startedAt: z.ZodNumber;
1422
1460
  updatedAt: z.ZodNumber;
1423
1461
  status: z.ZodEnum<{
1424
- running: "running";
1425
1462
  complete: "complete";
1463
+ running: "running";
1426
1464
  stopped: "stopped";
1427
1465
  }>;
1428
1466
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1446,8 +1484,8 @@ export declare const COLLECTION_SCHEMAS: {
1446
1484
  startedAt: z.ZodNumber;
1447
1485
  updatedAt: z.ZodNumber;
1448
1486
  status: z.ZodEnum<{
1449
- running: "running";
1450
1487
  complete: "complete";
1488
+ running: "running";
1451
1489
  stopped: "stopped";
1452
1490
  }>;
1453
1491
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1495,8 +1533,8 @@ export declare const COLLECTION_SCHEMAS: {
1495
1533
  startedAt: z.ZodNumber;
1496
1534
  updatedAt: z.ZodNumber;
1497
1535
  status: z.ZodEnum<{
1498
- running: "running";
1499
1536
  complete: "complete";
1537
+ running: "running";
1500
1538
  stopped: "stopped";
1501
1539
  }>;
1502
1540
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -1514,8 +1552,8 @@ export declare const COLLECTION_SCHEMAS: {
1514
1552
  startedAt: z.ZodNumber;
1515
1553
  updatedAt: z.ZodNumber;
1516
1554
  status: z.ZodEnum<{
1517
- running: "running";
1518
1555
  complete: "complete";
1556
+ running: "running";
1519
1557
  stopped: "stopped";
1520
1558
  }>;
1521
1559
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -2720,8 +2758,8 @@ export declare const COLLECTION_SCHEMAS: {
2720
2758
  userId: z.ZodString;
2721
2759
  category: z.ZodLiteral<"admin">;
2722
2760
  state: z.ZodEnum<{
2723
- failed: "failed";
2724
2761
  complete: "complete";
2762
+ failed: "failed";
2725
2763
  "in-progress": "in-progress";
2726
2764
  incomplete: "incomplete";
2727
2765
  }>;
@@ -2971,8 +3009,8 @@ export declare const COLLECTION_SCHEMAS: {
2971
3009
  updatedAt: z.ZodNumber;
2972
3010
  completedAt: z.ZodOptional<z.ZodNumber>;
2973
3011
  status: z.ZodEnum<{
2974
- running: "running";
2975
3012
  complete: "complete";
3013
+ running: "running";
2976
3014
  stopped: "stopped";
2977
3015
  }>;
2978
3016
  pages: z.ZodNumber;
@@ -3006,8 +3044,8 @@ export declare const COLLECTION_SCHEMAS: {
3006
3044
  updatedAt: z.ZodNumber;
3007
3045
  completedAt: z.ZodOptional<z.ZodNumber>;
3008
3046
  status: z.ZodEnum<{
3009
- running: "running";
3010
3047
  complete: "complete";
3048
+ running: "running";
3011
3049
  stopped: "stopped";
3012
3050
  }>;
3013
3051
  pages: z.ZodNumber;
@@ -3071,6 +3109,8 @@ export declare const COLLECTION_DOC_ID_FIELDS: {
3071
3109
  readonly 'adminNotificationHistory/{historyId}': "archiveOccurrenceId";
3072
3110
  readonly 'notificationDeliveries/{deliveryId}': "deliveryId";
3073
3111
  readonly 'notificationArchiveAllJobs/{jobId}': "jobId";
3112
+ readonly 'awardGroupGrants/{grantId}': "grantId";
3113
+ readonly 'awardGroupGrants/{grantId}/awardGroupGrantPeople/{userId}': "userId";
3074
3114
  readonly 'migrationActionRuns/{actionId}': "actionId";
3075
3115
  };
3076
3116
  export declare const PENDING_COLLECTIONS: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4C7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDkB,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAIvE,eAAO,MAAM,wBAAwB;;;;;;;;;;;CAWiC,CAAC;AAGvE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAO,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6C7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDkB,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAIvE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;CAaiC,CAAC;AAGvE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAO,CAAC"}
@@ -8,6 +8,7 @@
8
8
  import { StatusReconcileQueueEntrySchema } from './status-reconcile-queue.js';
9
9
  import { ActiveAdminNotificationSchema, AdminNotificationHistorySchema, NotificationArchiveAllJobSchema, NotificationDeliverySchema, } from './admin-notifications.js';
10
10
  import { AwardDefinitionSchema } from './catalogs.js';
11
+ import { AwardGroupGrantPersonSchema, AwardGroupGrantSchema } from './award-group-grant.js';
11
12
  import { GameLocationSchema } from './game-location.js';
12
13
  import { GalleryPictureSchema } from './gallery.js';
13
14
  import { PendingMediaSchema } from './pending-media.js';
@@ -57,6 +58,8 @@ export const COLLECTION_SCHEMAS = {
57
58
  'signedWaivers/{signedWaiverId}': SignedWaiverSchema,
58
59
  'hardwareLoanContracts/{contractId}': HardwareLoanContractSchema,
59
60
  'awardDefinitions/{awardId}': AwardDefinitionSchema,
61
+ 'awardGroupGrants/{grantId}': AwardGroupGrantSchema,
62
+ 'awardGroupGrants/{grantId}/awardGroupGrantPeople/{userId}': AwardGroupGrantPersonSchema,
60
63
  'sportHallOfFame/{sportKey}': SportHallOfFameSchema,
61
64
  'statsValidationReports/{reportId}': StatsValidationReportSchema,
62
65
  'statsOperations/{operationId}': StatsOperationSchema,
@@ -88,6 +91,8 @@ export const COLLECTION_DOC_ID_FIELDS = {
88
91
  'adminNotificationHistory/{historyId}': 'archiveOccurrenceId',
89
92
  'notificationDeliveries/{deliveryId}': 'deliveryId',
90
93
  'notificationArchiveAllJobs/{jobId}': 'jobId',
94
+ 'awardGroupGrants/{grantId}': 'grantId',
95
+ 'awardGroupGrants/{grantId}/awardGroupGrantPeople/{userId}': 'userId',
91
96
  'migrationActionRuns/{actionId}': 'actionId',
92
97
  };
93
98
  // Collections declared in ../paths with no bound schema yet, each with the reason.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"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","sourcesContent":["// Collection → schema registry: every Firestore path template bound to the zod schema its\n// documents must satisfy. Every document a migration copy action writes is validated against the\n// schema bound here.\n//\n// A key is the literal path template — `{placeholder}` for an id, the literal segment for a fixed\n// document id. __tests__/doc-schemas-registry.test.ts fails when a collection constant has neither a\n// binding here nor an explicit PENDING_COLLECTIONS entry.\n\nimport type { z } from 'zod';\nimport { StatusReconcileQueueEntrySchema } from './status-reconcile-queue.js';\nimport {\n ActiveAdminNotificationSchema,\n AdminNotificationHistorySchema,\n NotificationArchiveAllJobSchema,\n NotificationDeliverySchema,\n} from './admin-notifications.js';\nimport { AwardDefinitionSchema } from './catalogs.js';\nimport { GameLocationSchema } from './game-location.js';\nimport { GalleryPictureSchema } from './gallery.js';\nimport { PendingMediaSchema } from './pending-media.js';\nimport { PictureRetirementSchema } from './picture-retirement.js';\nimport { GameRosterPlayerSchema, SportGameSchema } from './sport-game.js';\nimport { SportHallOfFameSchema } from './aggregate-stats.js';\nimport { GameStatHistoryPageSchema } from './game-stat-history.js';\nimport { GameStatEventSchema } from './game-stats.js';\nimport { StatsOperationSchema } from './stats-operation.js';\nimport { LeagueTeamContactSchema, LeagueTeamSchema } from './league-team.js';\nimport { MembershipRosterSyncSchema } from './membership-roster-sync.js';\nimport { MigrationActionRunSchema, MigrationConsoleSchema } from './migration-console.js';\nimport { AuditEventSchema } from './audit-event.js';\nimport { PublicUserSchema } from './publicUser.js';\nimport { RegistrationStartSchema } from './registration-start.js';\nimport { ReservedDisplayNameSchema } from './reserved-display-name.js';\nimport { SportLeagueSchema } from './sport-league.js';\nimport { SweepStateSchema } from './sweep-state.js';\nimport {\n AppConfigSchema,\n LandingPageConfigSchema,\n AdminListSchema,\n StatsBeaconSchema,\n StatsValidationReportSchema,\n} from './system.js';\nimport {\n LeagueFreeAgentSchema,\n TeamJoinRequestSchema,\n TeamInvitationSchema,\n TeamMembershipSchema,\n} from './team-membership.js';\nimport { HistoricalStatsSchema, UserPrivateDataSchema, UserProfileSchema } from './user-profile.js';\nimport { HardwareLoanContractSchema, SignedWaiverSchema } from './waivers-and-hardware.js';\nimport { WaiverTemplateSchema, WaiverTemplateVersionSchema } from './waiver-template.js';\n\nexport const COLLECTION_SCHEMAS = {\n 'userProfiles/{userId}': UserProfileSchema,\n 'userProfiles/{userId}/privateData/{privateDataId}': UserPrivateDataSchema,\n 'userProfiles/{userId}/historicalStats/{sportKey}': HistoricalStatsSchema,\n 'publicUsers/{userId}': PublicUserSchema,\n 'reservedDisplayNames/{reservedDisplayNameKey}': ReservedDisplayNameSchema,\n 'statusReconcileQueue/{userId}': StatusReconcileQueueEntrySchema,\n 'registrationStarts/{userId}': RegistrationStartSchema,\n\n 'sportLeagues/{leagueId}': SportLeagueSchema,\n 'leagueTeams/{teamId}': LeagueTeamSchema,\n 'leagueTeamContacts/{teamId}': LeagueTeamContactSchema,\n 'teamMemberships/{teamMembershipId}': TeamMembershipSchema,\n 'membershipRosterSyncs/{teamMembershipId}': MembershipRosterSyncSchema,\n 'teamInvitations/{inviteId}': TeamInvitationSchema,\n 'teamJoinRequests/{requestId}': TeamJoinRequestSchema,\n 'leagueFreeAgents/{leagueFreeAgentId}': LeagueFreeAgentSchema,\n\n 'sportGames/{gameId}': SportGameSchema,\n 'sportGames/{gameId}/gameRosterPlayers/{gameRosterPlayerId}': GameRosterPlayerSchema,\n 'sportGames/{gameId}/gameStatEvents/{eventId}': GameStatEventSchema,\n 'sportGames/{gameId}/gameStatHistory/{pageId}': GameStatHistoryPageSchema,\n 'gameLocations/{gameLocationId}': GameLocationSchema,\n\n 'waiverTemplates/{waiverTemplateId}': WaiverTemplateSchema,\n 'waiverTemplates/{waiverTemplateId}/waiverTemplateVersions/{versionId}': WaiverTemplateVersionSchema,\n 'signedWaivers/{signedWaiverId}': SignedWaiverSchema,\n 'hardwareLoanContracts/{contractId}': HardwareLoanContractSchema,\n\n 'awardDefinitions/{awardId}': AwardDefinitionSchema,\n 'sportHallOfFame/{sportKey}': SportHallOfFameSchema,\n 'statsValidationReports/{reportId}': StatsValidationReportSchema,\n 'statsOperations/{operationId}': StatsOperationSchema,\n\n 'galleryPictures/{pictureId}': GalleryPictureSchema,\n 'pendingMedia/{pendingMediaId}': PendingMediaSchema,\n 'pictureRetirements/{retirementId}': PictureRetirementSchema,\n\n 'auditEvents/{auditEventId}': AuditEventSchema,\n\n 'activeAdminNotifications/{notificationId}': ActiveAdminNotificationSchema,\n 'adminNotificationHistory/{historyId}': AdminNotificationHistorySchema,\n 'notificationDeliveries/{deliveryId}': NotificationDeliverySchema,\n 'notificationArchiveAllJobs/{jobId}': NotificationArchiveAllJobSchema,\n\n '_appConfig/landingPage': LandingPageConfigSchema,\n '_appConfig/app': AppConfigSchema,\n '_appConfig/statsBeacon': StatsBeaconSchema,\n '_systemData/adminList': AdminListSchema,\n '_serverData/migrationConsole': MigrationConsoleSchema,\n 'migrationActionRuns/{actionId}': MigrationActionRunSchema,\n 'sweepState/{sweepName}': SweepStateSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\nexport type RegisteredCollectionPath = keyof typeof COLLECTION_SCHEMAS;\n\n// The body field that equals the document id, where a schema declares one. A drift check injects\n// `doc.id` under this key before validating, so a doc-id field is never a false mismatch.\nexport const COLLECTION_DOC_ID_FIELDS = {\n 'publicUsers/{userId}': 'uid',\n 'registrationStarts/{userId}': 'userId',\n 'sportGames/{gameId}/gameStatEvents/{eventId}': 'eventId',\n 'statsValidationReports/{reportId}': 'reportId',\n 'auditEvents/{auditEventId}': 'id',\n 'pendingMedia/{pendingMediaId}': 'id',\n 'adminNotificationHistory/{historyId}': 'archiveOccurrenceId',\n 'notificationDeliveries/{deliveryId}': 'deliveryId',\n 'notificationArchiveAllJobs/{jobId}': 'jobId',\n 'migrationActionRuns/{actionId}': 'actionId',\n} as const satisfies Partial<Record<RegisteredCollectionPath, string>>;\n\n// Collections declared in ../paths with no bound schema yet, each with the reason.\nexport const PENDING_COLLECTIONS: readonly string[] = [];\n"]}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"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","sourcesContent":["// Collection → schema registry: every Firestore path template bound to the zod schema its\n// documents must satisfy. Every document a migration copy action writes is validated against the\n// schema bound here.\n//\n// A key is the literal path template — `{placeholder}` for an id, the literal segment for a fixed\n// document id. __tests__/doc-schemas-registry.test.ts fails when a collection constant has neither a\n// binding here nor an explicit PENDING_COLLECTIONS entry.\n\nimport type { z } from 'zod';\nimport { StatusReconcileQueueEntrySchema } from './status-reconcile-queue.js';\nimport {\n ActiveAdminNotificationSchema,\n AdminNotificationHistorySchema,\n NotificationArchiveAllJobSchema,\n NotificationDeliverySchema,\n} from './admin-notifications.js';\nimport { AwardDefinitionSchema } from './catalogs.js';\nimport { AwardGroupGrantPersonSchema, AwardGroupGrantSchema } from './award-group-grant.js';\nimport { GameLocationSchema } from './game-location.js';\nimport { GalleryPictureSchema } from './gallery.js';\nimport { PendingMediaSchema } from './pending-media.js';\nimport { PictureRetirementSchema } from './picture-retirement.js';\nimport { GameRosterPlayerSchema, SportGameSchema } from './sport-game.js';\nimport { SportHallOfFameSchema } from './aggregate-stats.js';\nimport { GameStatHistoryPageSchema } from './game-stat-history.js';\nimport { GameStatEventSchema } from './game-stats.js';\nimport { StatsOperationSchema } from './stats-operation.js';\nimport { LeagueTeamContactSchema, LeagueTeamSchema } from './league-team.js';\nimport { MembershipRosterSyncSchema } from './membership-roster-sync.js';\nimport { MigrationActionRunSchema, MigrationConsoleSchema } from './migration-console.js';\nimport { AuditEventSchema } from './audit-event.js';\nimport { PublicUserSchema } from './publicUser.js';\nimport { RegistrationStartSchema } from './registration-start.js';\nimport { ReservedDisplayNameSchema } from './reserved-display-name.js';\nimport { SportLeagueSchema } from './sport-league.js';\nimport { SweepStateSchema } from './sweep-state.js';\nimport {\n AppConfigSchema,\n LandingPageConfigSchema,\n AdminListSchema,\n StatsBeaconSchema,\n StatsValidationReportSchema,\n} from './system.js';\nimport {\n LeagueFreeAgentSchema,\n TeamJoinRequestSchema,\n TeamInvitationSchema,\n TeamMembershipSchema,\n} from './team-membership.js';\nimport { HistoricalStatsSchema, UserPrivateDataSchema, UserProfileSchema } from './user-profile.js';\nimport { HardwareLoanContractSchema, SignedWaiverSchema } from './waivers-and-hardware.js';\nimport { WaiverTemplateSchema, WaiverTemplateVersionSchema } from './waiver-template.js';\n\nexport const COLLECTION_SCHEMAS = {\n 'userProfiles/{userId}': UserProfileSchema,\n 'userProfiles/{userId}/privateData/{privateDataId}': UserPrivateDataSchema,\n 'userProfiles/{userId}/historicalStats/{sportKey}': HistoricalStatsSchema,\n 'publicUsers/{userId}': PublicUserSchema,\n 'reservedDisplayNames/{reservedDisplayNameKey}': ReservedDisplayNameSchema,\n 'statusReconcileQueue/{userId}': StatusReconcileQueueEntrySchema,\n 'registrationStarts/{userId}': RegistrationStartSchema,\n\n 'sportLeagues/{leagueId}': SportLeagueSchema,\n 'leagueTeams/{teamId}': LeagueTeamSchema,\n 'leagueTeamContacts/{teamId}': LeagueTeamContactSchema,\n 'teamMemberships/{teamMembershipId}': TeamMembershipSchema,\n 'membershipRosterSyncs/{teamMembershipId}': MembershipRosterSyncSchema,\n 'teamInvitations/{inviteId}': TeamInvitationSchema,\n 'teamJoinRequests/{requestId}': TeamJoinRequestSchema,\n 'leagueFreeAgents/{leagueFreeAgentId}': LeagueFreeAgentSchema,\n\n 'sportGames/{gameId}': SportGameSchema,\n 'sportGames/{gameId}/gameRosterPlayers/{gameRosterPlayerId}': GameRosterPlayerSchema,\n 'sportGames/{gameId}/gameStatEvents/{eventId}': GameStatEventSchema,\n 'sportGames/{gameId}/gameStatHistory/{pageId}': GameStatHistoryPageSchema,\n 'gameLocations/{gameLocationId}': GameLocationSchema,\n\n 'waiverTemplates/{waiverTemplateId}': WaiverTemplateSchema,\n 'waiverTemplates/{waiverTemplateId}/waiverTemplateVersions/{versionId}': WaiverTemplateVersionSchema,\n 'signedWaivers/{signedWaiverId}': SignedWaiverSchema,\n 'hardwareLoanContracts/{contractId}': HardwareLoanContractSchema,\n\n 'awardDefinitions/{awardId}': AwardDefinitionSchema,\n 'awardGroupGrants/{grantId}': AwardGroupGrantSchema,\n 'awardGroupGrants/{grantId}/awardGroupGrantPeople/{userId}': AwardGroupGrantPersonSchema,\n 'sportHallOfFame/{sportKey}': SportHallOfFameSchema,\n 'statsValidationReports/{reportId}': StatsValidationReportSchema,\n 'statsOperations/{operationId}': StatsOperationSchema,\n\n 'galleryPictures/{pictureId}': GalleryPictureSchema,\n 'pendingMedia/{pendingMediaId}': PendingMediaSchema,\n 'pictureRetirements/{retirementId}': PictureRetirementSchema,\n\n 'auditEvents/{auditEventId}': AuditEventSchema,\n\n 'activeAdminNotifications/{notificationId}': ActiveAdminNotificationSchema,\n 'adminNotificationHistory/{historyId}': AdminNotificationHistorySchema,\n 'notificationDeliveries/{deliveryId}': NotificationDeliverySchema,\n 'notificationArchiveAllJobs/{jobId}': NotificationArchiveAllJobSchema,\n\n '_appConfig/landingPage': LandingPageConfigSchema,\n '_appConfig/app': AppConfigSchema,\n '_appConfig/statsBeacon': StatsBeaconSchema,\n '_systemData/adminList': AdminListSchema,\n '_serverData/migrationConsole': MigrationConsoleSchema,\n 'migrationActionRuns/{actionId}': MigrationActionRunSchema,\n 'sweepState/{sweepName}': SweepStateSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\nexport type RegisteredCollectionPath = keyof typeof COLLECTION_SCHEMAS;\n\n// The body field that equals the document id, where a schema declares one. A drift check injects\n// `doc.id` under this key before validating, so a doc-id field is never a false mismatch.\nexport const COLLECTION_DOC_ID_FIELDS = {\n 'publicUsers/{userId}': 'uid',\n 'registrationStarts/{userId}': 'userId',\n 'sportGames/{gameId}/gameStatEvents/{eventId}': 'eventId',\n 'statsValidationReports/{reportId}': 'reportId',\n 'auditEvents/{auditEventId}': 'id',\n 'pendingMedia/{pendingMediaId}': 'id',\n 'adminNotificationHistory/{historyId}': 'archiveOccurrenceId',\n 'notificationDeliveries/{deliveryId}': 'deliveryId',\n 'notificationArchiveAllJobs/{jobId}': 'jobId',\n 'awardGroupGrants/{grantId}': 'grantId',\n 'awardGroupGrants/{grantId}/awardGroupGrantPeople/{userId}': 'userId',\n 'migrationActionRuns/{actionId}': 'actionId',\n} as const satisfies Partial<Record<RegisteredCollectionPath, string>>;\n\n// Collections declared in ../paths with no bound schema yet, each with the reason.\nexport const PENDING_COLLECTIONS: readonly string[] = [];\n"]}
@@ -51,6 +51,8 @@ export declare const SportLeagueSchema: z.ZodObject<{
51
51
  featuredPictureId: z.ZodOptional<z.ZodString>;
52
52
  updatedAt: z.ZodNumber;
53
53
  }, z.core.$strip>>;
54
+ teamRevision: z.ZodOptional<z.ZodNumber>;
55
+ gameRevision: z.ZodOptional<z.ZodNumber>;
54
56
  createdAt: z.ZodNumber;
55
57
  updatedAt: z.ZodNumber;
56
58
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"sport-league.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/sport-league.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,mCAAmC,2FAC0C,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,GAAG,OAAO,CAEV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,SAAS;IACR,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,EACD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAOhD;AAGD,eAAO,MAAM,wBAAwB,aAAc,CAAC;AAEpD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBM,CAAC;AACrC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"sport-league.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/sport-league.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,mCAAmC,2FAC0C,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,GAAG,OAAO,CAEV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,SAAS;IACR,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,EACD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAOhD;AAGD,eAAO,MAAM,wBAAwB,aAAc,CAAC;AAEpD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgCM,CAAC;AACrC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -50,6 +50,15 @@ export const SportLeagueSchema = z
50
50
  // The league's picture gallery summary — absent is an empty gallery. Only the picture core
51
51
  // writes it; the league callables and the copy action never do.
52
52
  pictures: GallerySummarySchema.optional(),
53
+ // Advanced by every team created in the league; absent until the first. Only its changing
54
+ // matters: team creation counts the league's teams in its transaction against
55
+ // MAX_TEAMS_PER_LEAGUE, and a query does not lock against an insert — so each creation writes this
56
+ // document, and two creations at the cap conflict instead of both passing (BACKEND-116).
57
+ teamRevision: countSchema.optional(),
58
+ // Advanced by every game created in the league, a schedule week's included; absent until the
59
+ // first. Only its changing matters, the same way: game creation counts the league's games in its
60
+ // transaction against MAX_GAMES_PER_LEAGUE.
61
+ gameRevision: countSchema.optional(),
53
62
  createdAt: epochMsSchema,
54
63
  updatedAt: epochMsSchema,
55
64
  })
@@ -1 +1 @@
1
- {"version":3,"file":"sport-league.js","sourceRoot":"","sources":["../../src/doc-schemas/sport-league.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,iGAAiG;AACjG,gGAAgG;AAChG,0BAA0B;AAE1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,iCAAiC,GAAG,yCAAyC,CAAC;AAC3F,MAAM,CAAC,MAAM,mCAAmC,GAC9C,wFAAwF,CAAC;AAE3F;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAG9C;IACC,OAAO,MAAM,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAOlC,MAAS,EAAE,GAA6B;IACxC,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAClD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,gBAAgB;IAC5B,eAAe,EAAE,kBAAkB;IACnC,aAAa,EAAE,kBAAkB;IACjC,MAAM,EAAE,kBAAkB;IAC1B,8FAA8F;IAC9F,gGAAgG;IAChG,qCAAqC;IACrC,aAAa,EAAE,wBAAwB;IACvC,iBAAiB,EAAE,wBAAwB;IAC3C,gBAAgB,EAAE,wBAAwB;IAC1C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACnD,2FAA2F;IAC3F,gEAAgE;IAChE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACzC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;CACzB,CAAC;KACD,WAAW,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["// `sportLeagues/{leagueId}` — one league: its sport, mode, dates, status, playoff cutoffs, and waiver\n// requirement. The admin league callables write its settings, status, and mode; the picture core\n// writes `pictures`. Teams, games, and player stats live in their own collections and are never\n// copied onto the league.\n\nimport { z } from 'zod';\nimport {\n calendarDateSchema,\n countSchema,\n epochMsSchema,\n leagueModeSchema,\n leagueStatusSchema,\n leagueTypeSchema,\n} from './atoms.js';\nimport { GallerySummarySchema } from './gallery.js';\nimport { waiverTemplateIdSchema } from './waiver-template.js';\n\nexport const LEAGUE_DATES_OUT_OF_ORDER_MESSAGE = 'The league cannot end before it starts.';\nexport const WAIVER_REQUIREMENT_MISMATCH_MESSAGE =\n 'Choose a waiver template when the league requires a waiver, and none when it does not.';\n\n/**\n * A league names a waiver template exactly when it requires a waiver, so no reader needs a\n * sentinel for \"no waiver\" and no stale template id survives turning the requirement off.\n */\nexport function hasConsistentWaiverRequirement(league: {\n requiresWaiver: boolean;\n waiverTemplateId?: string | undefined;\n}): boolean {\n return league.requiresWaiver === (league.waiverTemplateId !== undefined);\n}\n\n/**\n * The cross-field rules every league settings shape obeys — the stored document and both callable\n * inputs — so the rule a form shows, the callable enforces, and the copy action validates is one\n * rule.\n */\nexport function refineLeagueSettings<\n T extends {\n leagueStartDate: string;\n leagueEndDate: string;\n requiresWaiver: boolean;\n waiverTemplateId?: string | undefined;\n },\n>(league: T, ctx: z.core.$RefinementCtx<T>): void {\n if (league.leagueEndDate < league.leagueStartDate) {\n ctx.addIssue({ code: 'custom', path: ['leagueEndDate'], message: LEAGUE_DATES_OUT_OF_ORDER_MESSAGE });\n }\n if (!hasConsistentWaiverRequirement(league)) {\n ctx.addIssue({ code: 'custom', path: ['waiverTemplateId'], message: WAIVER_REQUIREMENT_MISMATCH_MESSAGE });\n }\n}\n\n// How many teams reach the playoffs is a count; the callable inputs bound it with `MAX_PLAYOFF_CUTOFF`.\nexport const playoffCutoffCountSchema = countSchema;\n\nexport const SportLeagueSchema = z\n .object({\n leagueTitle: z.string(),\n description: z.string(),\n leagueType: leagueTypeSchema,\n leagueMode: leagueModeSchema,\n leagueStartDate: calendarDateSchema,\n leagueEndDate: calendarDateSchema,\n status: leagueStatusSchema,\n // How many teams reach the playoffs: `playoffCutoff` in a Regular league, the Competitive and\n // Recreational pools' own cutoffs in a Competitive/Recreational one. All three are kept in both\n // modes so a mode switch loses none.\n playoffCutoff: playoffCutoffCountSchema,\n playoffCutoffComp: playoffCutoffCountSchema,\n playoffCutoffRec: playoffCutoffCountSchema,\n requiresWaiver: z.boolean(),\n waiverTemplateId: waiverTemplateIdSchema.optional(),\n // The league's picture gallery summary — absent is an empty gallery. Only the picture core\n // writes it; the league callables and the copy action never do.\n pictures: GallerySummarySchema.optional(),\n createdAt: epochMsSchema,\n updatedAt: epochMsSchema,\n })\n .superRefine(refineLeagueSettings);\nexport type SportLeague = z.infer<typeof SportLeagueSchema>;\n"]}
1
+ {"version":3,"file":"sport-league.js","sourceRoot":"","sources":["../../src/doc-schemas/sport-league.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,iGAAiG;AACjG,gGAAgG;AAChG,0BAA0B;AAE1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,iCAAiC,GAAG,yCAAyC,CAAC;AAC3F,MAAM,CAAC,MAAM,mCAAmC,GAC9C,wFAAwF,CAAC;AAE3F;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAG9C;IACC,OAAO,MAAM,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAOlC,MAAS,EAAE,GAA6B;IACxC,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAClD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,gBAAgB;IAC5B,eAAe,EAAE,kBAAkB;IACnC,aAAa,EAAE,kBAAkB;IACjC,MAAM,EAAE,kBAAkB;IAC1B,8FAA8F;IAC9F,gGAAgG;IAChG,qCAAqC;IACrC,aAAa,EAAE,wBAAwB;IACvC,iBAAiB,EAAE,wBAAwB;IAC3C,gBAAgB,EAAE,wBAAwB;IAC1C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACnD,2FAA2F;IAC3F,gEAAgE;IAChE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACzC,0FAA0F;IAC1F,8EAA8E;IAC9E,mGAAmG;IACnG,yFAAyF;IACzF,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;IACpC,6FAA6F;IAC7F,iGAAiG;IACjG,4CAA4C;IAC5C,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;CACzB,CAAC;KACD,WAAW,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["// `sportLeagues/{leagueId}` — one league: its sport, mode, dates, status, playoff cutoffs, and waiver\n// requirement. The admin league callables write its settings, status, and mode; the picture core\n// writes `pictures`. Teams, games, and player stats live in their own collections and are never\n// copied onto the league.\n\nimport { z } from 'zod';\nimport {\n calendarDateSchema,\n countSchema,\n epochMsSchema,\n leagueModeSchema,\n leagueStatusSchema,\n leagueTypeSchema,\n} from './atoms.js';\nimport { GallerySummarySchema } from './gallery.js';\nimport { waiverTemplateIdSchema } from './waiver-template.js';\n\nexport const LEAGUE_DATES_OUT_OF_ORDER_MESSAGE = 'The league cannot end before it starts.';\nexport const WAIVER_REQUIREMENT_MISMATCH_MESSAGE =\n 'Choose a waiver template when the league requires a waiver, and none when it does not.';\n\n/**\n * A league names a waiver template exactly when it requires a waiver, so no reader needs a\n * sentinel for \"no waiver\" and no stale template id survives turning the requirement off.\n */\nexport function hasConsistentWaiverRequirement(league: {\n requiresWaiver: boolean;\n waiverTemplateId?: string | undefined;\n}): boolean {\n return league.requiresWaiver === (league.waiverTemplateId !== undefined);\n}\n\n/**\n * The cross-field rules every league settings shape obeys — the stored document and both callable\n * inputs — so the rule a form shows, the callable enforces, and the copy action validates is one\n * rule.\n */\nexport function refineLeagueSettings<\n T extends {\n leagueStartDate: string;\n leagueEndDate: string;\n requiresWaiver: boolean;\n waiverTemplateId?: string | undefined;\n },\n>(league: T, ctx: z.core.$RefinementCtx<T>): void {\n if (league.leagueEndDate < league.leagueStartDate) {\n ctx.addIssue({ code: 'custom', path: ['leagueEndDate'], message: LEAGUE_DATES_OUT_OF_ORDER_MESSAGE });\n }\n if (!hasConsistentWaiverRequirement(league)) {\n ctx.addIssue({ code: 'custom', path: ['waiverTemplateId'], message: WAIVER_REQUIREMENT_MISMATCH_MESSAGE });\n }\n}\n\n// How many teams reach the playoffs is a count; the callable inputs bound it with `MAX_PLAYOFF_CUTOFF`.\nexport const playoffCutoffCountSchema = countSchema;\n\nexport const SportLeagueSchema = z\n .object({\n leagueTitle: z.string(),\n description: z.string(),\n leagueType: leagueTypeSchema,\n leagueMode: leagueModeSchema,\n leagueStartDate: calendarDateSchema,\n leagueEndDate: calendarDateSchema,\n status: leagueStatusSchema,\n // How many teams reach the playoffs: `playoffCutoff` in a Regular league, the Competitive and\n // Recreational pools' own cutoffs in a Competitive/Recreational one. All three are kept in both\n // modes so a mode switch loses none.\n playoffCutoff: playoffCutoffCountSchema,\n playoffCutoffComp: playoffCutoffCountSchema,\n playoffCutoffRec: playoffCutoffCountSchema,\n requiresWaiver: z.boolean(),\n waiverTemplateId: waiverTemplateIdSchema.optional(),\n // The league's picture gallery summary — absent is an empty gallery. Only the picture core\n // writes it; the league callables and the copy action never do.\n pictures: GallerySummarySchema.optional(),\n // Advanced by every team created in the league; absent until the first. Only its changing\n // matters: team creation counts the league's teams in its transaction against\n // MAX_TEAMS_PER_LEAGUE, and a query does not lock against an insert — so each creation writes this\n // document, and two creations at the cap conflict instead of both passing (BACKEND-116).\n teamRevision: countSchema.optional(),\n // Advanced by every game created in the league, a schedule week's included; absent until the\n // first. Only its changing matters, the same way: game creation counts the league's games in its\n // transaction against MAX_GAMES_PER_LEAGUE.\n gameRevision: countSchema.optional(),\n createdAt: epochMsSchema,\n updatedAt: epochMsSchema,\n })\n .superRefine(refineLeagueSettings);\nexport type SportLeague = z.infer<typeof SportLeagueSchema>;\n"]}
@@ -16,8 +16,8 @@ export declare const LeagueStatsRebuildOperationSchema: z.ZodObject<{
16
16
  startedAt: z.ZodNumber;
17
17
  updatedAt: z.ZodNumber;
18
18
  status: z.ZodEnum<{
19
- running: "running";
20
19
  complete: "complete";
20
+ running: "running";
21
21
  stopped: "stopped";
22
22
  }>;
23
23
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -38,8 +38,8 @@ export declare const LifetimeStatsRebuildOperationSchema: z.ZodObject<{
38
38
  startedAt: z.ZodNumber;
39
39
  updatedAt: z.ZodNumber;
40
40
  status: z.ZodEnum<{
41
- running: "running";
42
41
  complete: "complete";
42
+ running: "running";
43
43
  stopped: "stopped";
44
44
  }>;
45
45
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -65,8 +65,8 @@ export declare const HallOfFameRebuildOperationSchema: z.ZodObject<{
65
65
  startedAt: z.ZodNumber;
66
66
  updatedAt: z.ZodNumber;
67
67
  status: z.ZodEnum<{
68
- running: "running";
69
68
  complete: "complete";
69
+ running: "running";
70
70
  stopped: "stopped";
71
71
  }>;
72
72
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -90,8 +90,8 @@ export declare const StatsValidationOperationSchema: z.ZodObject<{
90
90
  startedAt: z.ZodNumber;
91
91
  updatedAt: z.ZodNumber;
92
92
  status: z.ZodEnum<{
93
- running: "running";
94
93
  complete: "complete";
94
+ running: "running";
95
95
  stopped: "stopped";
96
96
  }>;
97
97
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -111,8 +111,8 @@ export declare const GameStatsCorrectionOperationSchema: z.ZodObject<{
111
111
  startedAt: z.ZodNumber;
112
112
  updatedAt: z.ZodNumber;
113
113
  status: z.ZodEnum<{
114
- running: "running";
115
114
  complete: "complete";
115
+ running: "running";
116
116
  stopped: "stopped";
117
117
  }>;
118
118
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -132,8 +132,8 @@ export declare const GameStatsRecalculationOperationSchema: z.ZodObject<{
132
132
  startedAt: z.ZodNumber;
133
133
  updatedAt: z.ZodNumber;
134
134
  status: z.ZodEnum<{
135
- running: "running";
136
135
  complete: "complete";
136
+ running: "running";
137
137
  stopped: "stopped";
138
138
  }>;
139
139
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -158,8 +158,8 @@ export declare const HistoricalStatsUpdateOperationSchema: z.ZodObject<{
158
158
  startedAt: z.ZodNumber;
159
159
  updatedAt: z.ZodNumber;
160
160
  status: z.ZodEnum<{
161
- running: "running";
162
161
  complete: "complete";
162
+ running: "running";
163
163
  stopped: "stopped";
164
164
  }>;
165
165
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -227,8 +227,8 @@ export declare const GhostPlayerStatsOperationSchema: z.ZodObject<{
227
227
  startedAt: z.ZodNumber;
228
228
  updatedAt: z.ZodNumber;
229
229
  status: z.ZodEnum<{
230
- running: "running";
231
230
  complete: "complete";
231
+ running: "running";
232
232
  stopped: "stopped";
233
233
  }>;
234
234
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -248,8 +248,8 @@ export declare const GameDeletionOperationSchema: z.ZodObject<{
248
248
  startedAt: z.ZodNumber;
249
249
  updatedAt: z.ZodNumber;
250
250
  status: z.ZodEnum<{
251
- running: "running";
252
251
  complete: "complete";
252
+ running: "running";
253
253
  stopped: "stopped";
254
254
  }>;
255
255
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -270,8 +270,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
270
270
  startedAt: z.ZodNumber;
271
271
  updatedAt: z.ZodNumber;
272
272
  status: z.ZodEnum<{
273
- running: "running";
274
273
  complete: "complete";
274
+ running: "running";
275
275
  stopped: "stopped";
276
276
  }>;
277
277
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -291,8 +291,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
291
291
  startedAt: z.ZodNumber;
292
292
  updatedAt: z.ZodNumber;
293
293
  status: z.ZodEnum<{
294
- running: "running";
295
294
  complete: "complete";
295
+ running: "running";
296
296
  stopped: "stopped";
297
297
  }>;
298
298
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -317,8 +317,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
317
317
  startedAt: z.ZodNumber;
318
318
  updatedAt: z.ZodNumber;
319
319
  status: z.ZodEnum<{
320
- running: "running";
321
320
  complete: "complete";
321
+ running: "running";
322
322
  stopped: "stopped";
323
323
  }>;
324
324
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -341,8 +341,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
341
341
  startedAt: z.ZodNumber;
342
342
  updatedAt: z.ZodNumber;
343
343
  status: z.ZodEnum<{
344
- running: "running";
345
344
  complete: "complete";
345
+ running: "running";
346
346
  stopped: "stopped";
347
347
  }>;
348
348
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -361,8 +361,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
361
361
  startedAt: z.ZodNumber;
362
362
  updatedAt: z.ZodNumber;
363
363
  status: z.ZodEnum<{
364
- running: "running";
365
364
  complete: "complete";
365
+ running: "running";
366
366
  stopped: "stopped";
367
367
  }>;
368
368
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -381,8 +381,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
381
381
  startedAt: z.ZodNumber;
382
382
  updatedAt: z.ZodNumber;
383
383
  status: z.ZodEnum<{
384
- running: "running";
385
384
  complete: "complete";
385
+ running: "running";
386
386
  stopped: "stopped";
387
387
  }>;
388
388
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -406,8 +406,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
406
406
  startedAt: z.ZodNumber;
407
407
  updatedAt: z.ZodNumber;
408
408
  status: z.ZodEnum<{
409
- running: "running";
410
409
  complete: "complete";
410
+ running: "running";
411
411
  stopped: "stopped";
412
412
  }>;
413
413
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -455,8 +455,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
455
455
  startedAt: z.ZodNumber;
456
456
  updatedAt: z.ZodNumber;
457
457
  status: z.ZodEnum<{
458
- running: "running";
459
458
  complete: "complete";
459
+ running: "running";
460
460
  stopped: "stopped";
461
461
  }>;
462
462
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -474,8 +474,8 @@ export declare const StatsOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
474
474
  startedAt: z.ZodNumber;
475
475
  updatedAt: z.ZodNumber;
476
476
  status: z.ZodEnum<{
477
- running: "running";
478
477
  complete: "complete";
478
+ running: "running";
479
479
  stopped: "stopped";
480
480
  }>;
481
481
  resumeAfter: z.ZodOptional<z.ZodString>;
@@ -0,0 +1,9 @@
1
+ import type { AwardGroupType } from '../types/unions.js';
2
+ export interface AwardGroupGrantTarget {
3
+ readonly awardId: string;
4
+ readonly groupType: AwardGroupType;
5
+ readonly groupId: string;
6
+ }
7
+ export declare function buildAwardGroupGrantTargetKey(target: AwardGroupGrantTarget): string;
8
+ export declare function buildAwardGroupGrantId(targetKey: string, decision: number): string;
9
+ //# sourceMappingURL=award-grant-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"award-grant-ids.d.ts","sourceRoot":"","sources":["../../src/ids/award-grant-ids.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAQD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAEnF;AAID,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElF"}
@@ -0,0 +1,17 @@
1
+ // Award group grant ids. Every decision on one award for one group shares that pair's target key,
2
+ // and each decision's record id is the key plus its decision number — deterministic, so two
3
+ // decisions racing for the same number write the same document and conflict instead of both
4
+ // committing (BACKEND-304).
5
+ // A part prefixed by its length, so parts that contain any character still decode one way.
6
+ const lengthPrefixed = (part) => `${part.length}:${part}`;
7
+ const DECISION_SEPARATOR = '~';
8
+ // The key every decision on one award for one group shares.
9
+ export function buildAwardGroupGrantTargetKey(target) {
10
+ return [target.awardId, target.groupType, target.groupId].map(lengthPrefixed).join('');
11
+ }
12
+ // awardGroupGrants/{targetKey}~{decision}. The target key is length-prefixed throughout, so the
13
+ // decision after the last separator decodes one way.
14
+ export function buildAwardGroupGrantId(targetKey, decision) {
15
+ return `${targetKey}${DECISION_SEPARATOR}${decision}`;
16
+ }
17
+ //# sourceMappingURL=award-grant-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"award-grant-ids.js","sourceRoot":"","sources":["../../src/ids/award-grant-ids.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,4FAA4F;AAC5F,4FAA4F;AAC5F,4BAA4B;AAU5B,2FAA2F;AAC3F,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;AAE1E,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,4DAA4D;AAC5D,MAAM,UAAU,6BAA6B,CAAC,MAA6B;IACzE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,gGAAgG;AAChG,qDAAqD;AACrD,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,QAAgB;IACxE,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,QAAQ,EAAE,CAAC;AACxD,CAAC","sourcesContent":["// Award group grant ids. Every decision on one award for one group shares that pair's target key,\n// and each decision's record id is the key plus its decision number — deterministic, so two\n// decisions racing for the same number write the same document and conflict instead of both\n// committing (BACKEND-304).\n\nimport type { AwardGroupType } from '../types/unions.js';\n\nexport interface AwardGroupGrantTarget {\n readonly awardId: string;\n readonly groupType: AwardGroupType;\n readonly groupId: string;\n}\n\n// A part prefixed by its length, so parts that contain any character still decode one way.\nconst lengthPrefixed = (part: string): string => `${part.length}:${part}`;\n\nconst DECISION_SEPARATOR = '~';\n\n// The key every decision on one award for one group shares.\nexport function buildAwardGroupGrantTargetKey(target: AwardGroupGrantTarget): string {\n return [target.awardId, target.groupType, target.groupId].map(lengthPrefixed).join('');\n}\n\n// awardGroupGrants/{targetKey}~{decision}. The target key is length-prefixed throughout, so the\n// decision after the last separator decodes one way.\nexport function buildAwardGroupGrantId(targetKey: string, decision: number): string {\n return `${targetKey}${DECISION_SEPARATOR}${decision}`;\n}\n"]}
@@ -5,4 +5,5 @@ export * from './waiver-template-ids.js';
5
5
  export * from './picture-ids.js';
6
6
  export * from './notification-ids.js';
7
7
  export * from './stats-operation-ids.js';
8
+ export * from './award-grant-ids.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ids/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ids/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
package/dist/ids/index.js CHANGED
@@ -5,4 +5,5 @@ export * from './waiver-template-ids.js';
5
5
  export * from './picture-ids.js';
6
6
  export * from './notification-ids.js';
7
7
  export * from './stats-operation-ids.js';
8
+ export * from './award-grant-ids.js';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ids/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC","sourcesContent":["export * from './compound-ids.js';\nexport * from './minted-ids.js';\nexport * from './stat-event-ids.js';\nexport * from './waiver-template-ids.js';\nexport * from './picture-ids.js';\nexport * from './notification-ids.js';\nexport * from './stats-operation-ids.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ids/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC","sourcesContent":["export * from './compound-ids.js';\nexport * from './minted-ids.js';\nexport * from './stat-event-ids.js';\nexport * from './waiver-template-ids.js';\nexport * from './picture-ids.js';\nexport * from './notification-ids.js';\nexport * from './stats-operation-ids.js';\nexport * from './award-grant-ids.js';\n"]}
@@ -1,4 +1,5 @@
1
1
  export declare const COLLECTION_GROUPS: {
2
+ readonly AWARD_GROUP_GRANT_PEOPLE: "awardGroupGrantPeople";
2
3
  readonly GAME_ROSTER_PLAYERS: "gameRosterPlayers";
3
4
  readonly GAME_STAT_EVENTS: "gameStatEvents";
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collection-groups.d.ts","sourceRoot":"","sources":["../../src/paths/collection-groups.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC"}
1
+ {"version":3,"file":"collection-groups.d.ts","sourceRoot":"","sources":["../../src/paths/collection-groups.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB;;;;CAKpB,CAAC"}
@@ -2,8 +2,10 @@
2
2
  //
3
3
  // Frontend: collectionGroup(db, COLLECTION_GROUPS.GAME_ROSTER_PLAYERS)
4
4
  // Backend: db.collectionGroup(COLLECTION_GROUPS.GAME_ROSTER_PLAYERS)
5
- import { SPORT_GAME_SUBCOLLECTIONS } from './collections.js';
5
+ import { AWARD_GROUP_GRANT_SUBCOLLECTIONS, SPORT_GAME_SUBCOLLECTIONS } from './collections.js';
6
6
  export const COLLECTION_GROUPS = {
7
+ // Every grant's record of one person: a revoke asks whether another group's grant still holds them.
8
+ AWARD_GROUP_GRANT_PEOPLE: AWARD_GROUP_GRANT_SUBCOLLECTIONS.AWARD_GROUP_GRANT_PEOPLE,
7
9
  GAME_ROSTER_PLAYERS: SPORT_GAME_SUBCOLLECTIONS.GAME_ROSTER_PLAYERS,
8
10
  GAME_STAT_EVENTS: SPORT_GAME_SUBCOLLECTIONS.GAME_STAT_EVENTS,
9
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collection-groups.js","sourceRoot":"","sources":["../../src/paths/collection-groups.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,mBAAmB,EAAE,yBAAyB,CAAC,mBAAmB;IAClE,gBAAgB,EAAE,yBAAyB,CAAC,gBAAgB;CACpD,CAAC","sourcesContent":["// Collection group names — derived from the subcollection constants, never re-typed.\n//\n// Frontend: collectionGroup(db, COLLECTION_GROUPS.GAME_ROSTER_PLAYERS)\n// Backend: db.collectionGroup(COLLECTION_GROUPS.GAME_ROSTER_PLAYERS)\n\nimport { SPORT_GAME_SUBCOLLECTIONS } from './collections.js';\n\nexport const COLLECTION_GROUPS = {\n GAME_ROSTER_PLAYERS: SPORT_GAME_SUBCOLLECTIONS.GAME_ROSTER_PLAYERS,\n GAME_STAT_EVENTS: SPORT_GAME_SUBCOLLECTIONS.GAME_STAT_EVENTS,\n} as const;\n"]}
1
+ {"version":3,"file":"collection-groups.js","sourceRoot":"","sources":["../../src/paths/collection-groups.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AAEtE,OAAO,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,oGAAoG;IACpG,wBAAwB,EAAE,gCAAgC,CAAC,wBAAwB;IACnF,mBAAmB,EAAE,yBAAyB,CAAC,mBAAmB;IAClE,gBAAgB,EAAE,yBAAyB,CAAC,gBAAgB;CACpD,CAAC","sourcesContent":["// Collection group names — derived from the subcollection constants, never re-typed.\n//\n// Frontend: collectionGroup(db, COLLECTION_GROUPS.GAME_ROSTER_PLAYERS)\n// Backend: db.collectionGroup(COLLECTION_GROUPS.GAME_ROSTER_PLAYERS)\n\nimport { AWARD_GROUP_GRANT_SUBCOLLECTIONS, SPORT_GAME_SUBCOLLECTIONS } from './collections.js';\n\nexport const COLLECTION_GROUPS = {\n // Every grant's record of one person: a revoke asks whether another group's grant still holds them.\n AWARD_GROUP_GRANT_PEOPLE: AWARD_GROUP_GRANT_SUBCOLLECTIONS.AWARD_GROUP_GRANT_PEOPLE,\n GAME_ROSTER_PLAYERS: SPORT_GAME_SUBCOLLECTIONS.GAME_ROSTER_PLAYERS,\n GAME_STAT_EVENTS: SPORT_GAME_SUBCOLLECTIONS.GAME_STAT_EVENTS,\n} as const;\n"]}
@@ -18,6 +18,7 @@ export declare const COLLECTION_REFS: {
18
18
  readonly signedWaivers: () => [string];
19
19
  readonly hardwareLoanContracts: () => [string];
20
20
  readonly awardDefinitions: () => [string];
21
+ readonly awardGroupGrants: () => [string];
21
22
  readonly statsValidationReports: () => [string];
22
23
  readonly statsOperations: () => [string];
23
24
  readonly migrationActionRuns: () => [string];
@@ -1 +1 @@
1
- {"version":3,"file":"collection-refs.d.ts","sourceRoot":"","sources":["../../src/paths/collection-refs.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;iCACR,CAAC,MAAM,CAAC;gCACT,CAAC,MAAM,CAAC;yCACC,CAAC,MAAM,CAAC;uCACV,CAAC,MAAM,CAAC;yCACN,CAAC,MAAM,CAAC;iCAChB,CAAC,MAAM,CAAC;gCACT,CAAC,MAAM,CAAC;uCACD,CAAC,MAAM,CAAC;oCACX,CAAC,MAAM,CAAC;oCACR,CAAC,MAAM,CAAC;qCACP,CAAC,MAAM,CAAC;qCACR,CAAC,MAAM,CAAC;0CACH,CAAC,MAAM,CAAC;+BACnB,CAAC,MAAM,CAAC;kCACL,CAAC,MAAM,CAAC;oCACN,CAAC,MAAM,CAAC;kCACV,CAAC,MAAM,CAAC;0CACA,CAAC,MAAM,CAAC;qCACb,CAAC,MAAM,CAAC;2CACF,CAAC,MAAM,CAAC;oCACf,CAAC,MAAM,CAAC;wCACJ,CAAC,MAAM,CAAC;oCACZ,CAAC,MAAM,CAAC;iCACX,CAAC,MAAM,CAAC;uCACF,CAAC,MAAM,CAAC;gCACf,CAAC,MAAM,CAAC;6CACK,CAAC,MAAM,CAAC;6CACR,CAAC,MAAM,CAAC;2CACV,CAAC,MAAM,CAAC;+CACJ,CAAC,MAAM,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"collection-refs.d.ts","sourceRoot":"","sources":["../../src/paths/collection-refs.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;iCACR,CAAC,MAAM,CAAC;gCACT,CAAC,MAAM,CAAC;yCACC,CAAC,MAAM,CAAC;uCACV,CAAC,MAAM,CAAC;yCACN,CAAC,MAAM,CAAC;iCAChB,CAAC,MAAM,CAAC;gCACT,CAAC,MAAM,CAAC;uCACD,CAAC,MAAM,CAAC;oCACX,CAAC,MAAM,CAAC;oCACR,CAAC,MAAM,CAAC;qCACP,CAAC,MAAM,CAAC;qCACR,CAAC,MAAM,CAAC;0CACH,CAAC,MAAM,CAAC;+BACnB,CAAC,MAAM,CAAC;kCACL,CAAC,MAAM,CAAC;oCACN,CAAC,MAAM,CAAC;kCACV,CAAC,MAAM,CAAC;0CACA,CAAC,MAAM,CAAC;qCACb,CAAC,MAAM,CAAC;qCACR,CAAC,MAAM,CAAC;2CACF,CAAC,MAAM,CAAC;oCACf,CAAC,MAAM,CAAC;wCACJ,CAAC,MAAM,CAAC;oCACZ,CAAC,MAAM,CAAC;iCACX,CAAC,MAAM,CAAC;uCACF,CAAC,MAAM,CAAC;gCACf,CAAC,MAAM,CAAC;6CACK,CAAC,MAAM,CAAC;6CACR,CAAC,MAAM,CAAC;2CACV,CAAC,MAAM,CAAC;+CACJ,CAAC,MAAM,CAAC;CAChC,CAAC"}