@ttt-productions/q-core 0.1.16 → 0.1.18

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 (275) hide show
  1. package/dist/constants/business.d.ts.map +1 -1
  2. package/dist/constants/business.js +25 -5
  3. package/dist/constants/business.js.map +1 -1
  4. package/dist/constants/sports.d.ts.map +1 -1
  5. package/dist/constants/sports.js +2 -2
  6. package/dist/constants/sports.js.map +1 -1
  7. package/dist/doc-schemas/admin-notifications.d.ts +1 -1
  8. package/dist/doc-schemas/admin-notifications.d.ts.map +1 -1
  9. package/dist/doc-schemas/admin-notifications.js +4 -1
  10. package/dist/doc-schemas/admin-notifications.js.map +1 -1
  11. package/dist/doc-schemas/aggregate-stats.d.ts.map +1 -1
  12. package/dist/doc-schemas/aggregate-stats.js +4 -1
  13. package/dist/doc-schemas/aggregate-stats.js.map +1 -1
  14. package/dist/doc-schemas/atoms.d.ts.map +1 -1
  15. package/dist/doc-schemas/atoms.js +2 -2
  16. package/dist/doc-schemas/atoms.js.map +1 -1
  17. package/dist/doc-schemas/audit-event.d.ts.map +1 -1
  18. package/dist/doc-schemas/audit-event.js +8 -4
  19. package/dist/doc-schemas/audit-event.js.map +1 -1
  20. package/dist/doc-schemas/award-group-grant.d.ts.map +1 -1
  21. package/dist/doc-schemas/award-group-grant.js +11 -3
  22. package/dist/doc-schemas/award-group-grant.js.map +1 -1
  23. package/dist/doc-schemas/catalogs.js +1 -1
  24. package/dist/doc-schemas/catalogs.js.map +1 -1
  25. package/dist/doc-schemas/gallery.js +1 -1
  26. package/dist/doc-schemas/gallery.js.map +1 -1
  27. package/dist/doc-schemas/game-stat-history.d.ts.map +1 -1
  28. package/dist/doc-schemas/game-stat-history.js.map +1 -1
  29. package/dist/doc-schemas/game-stats.d.ts.map +1 -1
  30. package/dist/doc-schemas/game-stats.js +10 -2
  31. package/dist/doc-schemas/game-stats.js.map +1 -1
  32. package/dist/doc-schemas/league-team.js +1 -1
  33. package/dist/doc-schemas/league-team.js.map +1 -1
  34. package/dist/doc-schemas/membership-roster-sync.d.ts.map +1 -1
  35. package/dist/doc-schemas/membership-roster-sync.js +2 -1
  36. package/dist/doc-schemas/membership-roster-sync.js.map +1 -1
  37. package/dist/doc-schemas/migration-console.js +1 -1
  38. package/dist/doc-schemas/migration-console.js.map +1 -1
  39. package/dist/doc-schemas/pending-media.d.ts.map +1 -1
  40. package/dist/doc-schemas/pending-media.js.map +1 -1
  41. package/dist/doc-schemas/picture-retirement.d.ts.map +1 -1
  42. package/dist/doc-schemas/picture-retirement.js +5 -1
  43. package/dist/doc-schemas/picture-retirement.js.map +1 -1
  44. package/dist/doc-schemas/registry.d.ts +1 -1
  45. package/dist/doc-schemas/registry.d.ts.map +1 -1
  46. package/dist/doc-schemas/registry.js +1 -1
  47. package/dist/doc-schemas/registry.js.map +1 -1
  48. package/dist/doc-schemas/sport-game.d.ts.map +1 -1
  49. package/dist/doc-schemas/sport-game.js.map +1 -1
  50. package/dist/doc-schemas/sport-league.d.ts.map +1 -1
  51. package/dist/doc-schemas/sport-league.js +10 -2
  52. package/dist/doc-schemas/sport-league.js.map +1 -1
  53. package/dist/doc-schemas/status-reconcile-queue.d.ts.map +1 -1
  54. package/dist/doc-schemas/status-reconcile-queue.js.map +1 -1
  55. package/dist/doc-schemas/sweep-state.d.ts.map +1 -1
  56. package/dist/doc-schemas/sweep-state.js +10 -2
  57. package/dist/doc-schemas/sweep-state.js.map +1 -1
  58. package/dist/doc-schemas/system.d.ts.map +1 -1
  59. package/dist/doc-schemas/system.js.map +1 -1
  60. package/dist/doc-schemas/user-profile.d.ts.map +1 -1
  61. package/dist/doc-schemas/user-profile.js +1 -1
  62. package/dist/doc-schemas/user-profile.js.map +1 -1
  63. package/dist/doc-schemas/waivers-and-hardware.d.ts.map +1 -1
  64. package/dist/doc-schemas/waivers-and-hardware.js +15 -3
  65. package/dist/doc-schemas/waivers-and-hardware.js.map +1 -1
  66. package/dist/domain-events/domain-events.d.ts.map +1 -1
  67. package/dist/domain-events/domain-events.js +88 -24
  68. package/dist/domain-events/domain-events.js.map +1 -1
  69. package/dist/ids/notification-ids.d.ts.map +1 -1
  70. package/dist/ids/notification-ids.js.map +1 -1
  71. package/dist/ids/picture-ids.d.ts.map +1 -1
  72. package/dist/ids/picture-ids.js.map +1 -1
  73. package/dist/ids/stat-event-ids.d.ts.map +1 -1
  74. package/dist/ids/stat-event-ids.js.map +1 -1
  75. package/dist/ids/waiver-template-ids.d.ts.map +1 -1
  76. package/dist/ids/waiver-template-ids.js.map +1 -1
  77. package/dist/index.d.ts +4 -9
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +6 -9
  80. package/dist/index.js.map +1 -1
  81. package/dist/input-formats/{index.d.ts → input-formats.d.ts} +1 -1
  82. package/dist/input-formats/input-formats.d.ts.map +1 -0
  83. package/dist/input-formats/{index.js → input-formats.js} +1 -1
  84. package/dist/input-formats/input-formats.js.map +1 -0
  85. package/dist/media/file-origins.d.ts.map +1 -1
  86. package/dist/media/file-origins.js +30 -6
  87. package/dist/media/file-origins.js.map +1 -1
  88. package/dist/migration-console/action-ids.d.ts.map +1 -1
  89. package/dist/migration-console/action-ids.js.map +1 -1
  90. package/dist/migration-console/manifest.d.ts.map +1 -1
  91. package/dist/migration-console/manifest.js +42 -7
  92. package/dist/migration-console/manifest.js.map +1 -1
  93. package/dist/migration-console/run-state.d.ts.map +1 -1
  94. package/dist/migration-console/run-state.js.map +1 -1
  95. package/dist/notifications/admin-notification-config.d.ts.map +1 -1
  96. package/dist/notifications/admin-notification-config.js +5 -3
  97. package/dist/notifications/admin-notification-config.js.map +1 -1
  98. package/dist/notifications/occurrences.d.ts.map +1 -1
  99. package/dist/notifications/occurrences.js.map +1 -1
  100. package/dist/paths/path-builders.d.ts.map +1 -1
  101. package/dist/paths/path-builders.js +60 -15
  102. package/dist/paths/path-builders.js.map +1 -1
  103. package/dist/paths/picture-owner-paths.d.ts.map +1 -1
  104. package/dist/paths/picture-owner-paths.js.map +1 -1
  105. package/dist/paths/storage-paths.d.ts.map +1 -1
  106. package/dist/paths/storage-paths.js.map +1 -1
  107. package/dist/schemas/admin-notifications.d.ts.map +1 -1
  108. package/dist/schemas/admin-notifications.js +8 -4
  109. package/dist/schemas/admin-notifications.js.map +1 -1
  110. package/dist/schemas/app-config.js +1 -1
  111. package/dist/schemas/app-config.js.map +1 -1
  112. package/dist/schemas/atoms.d.ts +0 -1
  113. package/dist/schemas/atoms.d.ts.map +1 -1
  114. package/dist/schemas/atoms.js +3 -5
  115. package/dist/schemas/atoms.js.map +1 -1
  116. package/dist/schemas/awards.d.ts.map +1 -1
  117. package/dist/schemas/awards.js +13 -5
  118. package/dist/schemas/awards.js.map +1 -1
  119. package/dist/schemas/dead-letters.d.ts.map +1 -1
  120. package/dist/schemas/dead-letters.js +6 -3
  121. package/dist/schemas/dead-letters.js.map +1 -1
  122. package/dist/schemas/game-locations.d.ts.map +1 -1
  123. package/dist/schemas/game-locations.js +1 -1
  124. package/dist/schemas/game-locations.js.map +1 -1
  125. package/dist/schemas/hardware-loan-contracts.d.ts.map +1 -1
  126. package/dist/schemas/hardware-loan-contracts.js +11 -4
  127. package/dist/schemas/hardware-loan-contracts.js.map +1 -1
  128. package/dist/schemas/leagues.d.ts +2 -2
  129. package/dist/schemas/leagues.d.ts.map +1 -1
  130. package/dist/schemas/leagues.js +12 -3
  131. package/dist/schemas/leagues.js.map +1 -1
  132. package/dist/schemas/migration-console.d.ts.map +1 -1
  133. package/dist/schemas/migration-console.js +3 -6
  134. package/dist/schemas/migration-console.js.map +1 -1
  135. package/dist/schemas/pictures.d.ts.map +1 -1
  136. package/dist/schemas/pictures.js +6 -2
  137. package/dist/schemas/pictures.js.map +1 -1
  138. package/dist/schemas/schedules.d.ts +8 -8
  139. package/dist/schemas/schedules.d.ts.map +1 -1
  140. package/dist/schemas/schedules.js +9 -3
  141. package/dist/schemas/schedules.js.map +1 -1
  142. package/dist/schemas/scoring.d.ts +12 -12
  143. package/dist/schemas/scoring.d.ts.map +1 -1
  144. package/dist/schemas/scoring.js +11 -4
  145. package/dist/schemas/scoring.js.map +1 -1
  146. package/dist/schemas/signed-waivers.d.ts.map +1 -1
  147. package/dist/schemas/signed-waivers.js +5 -3
  148. package/dist/schemas/signed-waivers.js.map +1 -1
  149. package/dist/schemas/stats.d.ts.map +1 -1
  150. package/dist/schemas/stats.js +27 -8
  151. package/dist/schemas/stats.js.map +1 -1
  152. package/dist/schemas/team-joining.d.ts.map +1 -1
  153. package/dist/schemas/team-joining.js +13 -5
  154. package/dist/schemas/team-joining.js.map +1 -1
  155. package/dist/schemas/teams.d.ts.map +1 -1
  156. package/dist/schemas/teams.js +19 -6
  157. package/dist/schemas/teams.js.map +1 -1
  158. package/dist/schemas/uploads.d.ts.map +1 -1
  159. package/dist/schemas/uploads.js +12 -5
  160. package/dist/schemas/uploads.js.map +1 -1
  161. package/dist/schemas/users.d.ts.map +1 -1
  162. package/dist/schemas/users.js +22 -8
  163. package/dist/schemas/users.js.map +1 -1
  164. package/dist/schemas/waiver-templates.js +1 -1
  165. package/dist/schemas/waiver-templates.js.map +1 -1
  166. package/dist/sports/basketball-scoring.d.ts.map +1 -1
  167. package/dist/sports/basketball-scoring.js +67 -16
  168. package/dist/sports/basketball-scoring.js.map +1 -1
  169. package/dist/sports/basketball.d.ts.map +1 -1
  170. package/dist/sports/basketball.js +34 -7
  171. package/dist/sports/basketball.js.map +1 -1
  172. package/dist/sports/column-catalog.d.ts.map +1 -1
  173. package/dist/sports/column-catalog.js +4 -1
  174. package/dist/sports/column-catalog.js.map +1 -1
  175. package/dist/sports/contribution.d.ts.map +1 -1
  176. package/dist/sports/contribution.js +10 -3
  177. package/dist/sports/contribution.js.map +1 -1
  178. package/dist/sports/curling-scoring.d.ts.map +1 -1
  179. package/dist/sports/curling-scoring.js +30 -8
  180. package/dist/sports/curling-scoring.js.map +1 -1
  181. package/dist/sports/curling.d.ts.map +1 -1
  182. package/dist/sports/curling.js +1 -1
  183. package/dist/sports/curling.js.map +1 -1
  184. package/dist/sports/finalized-record.d.ts.map +1 -1
  185. package/dist/sports/finalized-record.js.map +1 -1
  186. package/dist/sports/football-scoring.d.ts.map +1 -1
  187. package/dist/sports/football-scoring.js +28 -8
  188. package/dist/sports/football-scoring.js.map +1 -1
  189. package/dist/sports/football.d.ts.map +1 -1
  190. package/dist/sports/football.js +1 -1
  191. package/dist/sports/football.js.map +1 -1
  192. package/dist/sports/index.d.ts +2 -2
  193. package/dist/sports/index.d.ts.map +1 -1
  194. package/dist/sports/index.js +1 -1
  195. package/dist/sports/index.js.map +1 -1
  196. package/dist/sports/ledger-continuity.d.ts.map +1 -1
  197. package/dist/sports/ledger-continuity.js.map +1 -1
  198. package/dist/sports/rankings.d.ts.map +1 -1
  199. package/dist/sports/rankings.js +5 -1
  200. package/dist/sports/rankings.js.map +1 -1
  201. package/dist/sports/replay.d.ts.map +1 -1
  202. package/dist/sports/replay.js +4 -1
  203. package/dist/sports/replay.js.map +1 -1
  204. package/dist/sports/rollup-check.d.ts.map +1 -1
  205. package/dist/sports/rollup-check.js +15 -3
  206. package/dist/sports/rollup-check.js.map +1 -1
  207. package/dist/sports/score-mirror.d.ts.map +1 -1
  208. package/dist/sports/score-mirror.js.map +1 -1
  209. package/dist/sports/scoring-display.d.ts.map +1 -1
  210. package/dist/sports/scoring-display.js.map +1 -1
  211. package/dist/sports/scoring.d.ts.map +1 -1
  212. package/dist/sports/scoring.js.map +1 -1
  213. package/dist/sports/sport-adapter.d.ts.map +1 -1
  214. package/dist/sports/sport-adapter.js.map +1 -1
  215. package/dist/sports/store-driver.d.ts.map +1 -1
  216. package/dist/sports/store-driver.js +18 -7
  217. package/dist/sports/store-driver.js.map +1 -1
  218. package/dist/types/audit.d.ts.map +1 -1
  219. package/dist/types/audit.js +16 -3
  220. package/dist/types/audit.js.map +1 -1
  221. package/dist/types/index.d.ts +0 -1
  222. package/dist/types/index.d.ts.map +1 -1
  223. package/dist/types/index.js +0 -1
  224. package/dist/types/index.js.map +1 -1
  225. package/dist/types/notifications.d.ts.map +1 -1
  226. package/dist/types/notifications.js +9 -13
  227. package/dist/types/notifications.js.map +1 -1
  228. package/dist/types/schedules.d.ts.map +1 -1
  229. package/dist/types/schedules.js.map +1 -1
  230. package/dist/types/sports.d.ts.map +1 -1
  231. package/dist/types/sports.js +9 -2
  232. package/dist/types/sports.js.map +1 -1
  233. package/dist/types/stats.d.ts.map +1 -1
  234. package/dist/types/stats.js +45 -9
  235. package/dist/types/stats.js.map +1 -1
  236. package/dist/types/unions.d.ts.map +1 -1
  237. package/dist/types/unions.js +32 -6
  238. package/dist/types/unions.js.map +1 -1
  239. package/dist/upload-variables/picture-upload-variables.d.ts.map +1 -1
  240. package/dist/upload-variables/picture-upload-variables.js +4 -2
  241. package/dist/upload-variables/picture-upload-variables.js.map +1 -1
  242. package/dist/upload-variables/sign-hardware-contract-variables.d.ts.map +1 -1
  243. package/dist/upload-variables/sign-hardware-contract-variables.js +4 -2
  244. package/dist/upload-variables/sign-hardware-contract-variables.js.map +1 -1
  245. package/dist/upload-variables/sign-waiver-variables.d.ts.map +1 -1
  246. package/dist/upload-variables/sign-waiver-variables.js +5 -3
  247. package/dist/upload-variables/sign-waiver-variables.js.map +1 -1
  248. package/dist/utils/app-config.d.ts.map +1 -1
  249. package/dist/utils/app-config.js +5 -1
  250. package/dist/utils/app-config.js.map +1 -1
  251. package/dist/utils/app-routes.d.ts.map +1 -1
  252. package/dist/utils/app-routes.js +6 -1
  253. package/dist/utils/app-routes.js.map +1 -1
  254. package/dist/utils/league-calendar.d.ts.map +1 -1
  255. package/dist/utils/league-calendar.js +4 -1
  256. package/dist/utils/league-calendar.js.map +1 -1
  257. package/dist/utils/league-join-warning.d.ts.map +1 -1
  258. package/dist/utils/league-join-warning.js +15 -5
  259. package/dist/utils/league-join-warning.js.map +1 -1
  260. package/dist/utils/schedules.d.ts.map +1 -1
  261. package/dist/utils/schedules.js +6 -2
  262. package/dist/utils/schedules.js.map +1 -1
  263. package/dist/utils/team-member-actions.d.ts.map +1 -1
  264. package/dist/utils/team-member-actions.js.map +1 -1
  265. package/package.json +5 -17
  266. package/dist/input-formats/index.d.ts.map +0 -1
  267. package/dist/input-formats/index.js.map +0 -1
  268. package/dist/migration-console/index.d.ts +0 -4
  269. package/dist/migration-console/index.d.ts.map +0 -1
  270. package/dist/migration-console/index.js +0 -5
  271. package/dist/migration-console/index.js.map +0 -1
  272. package/dist/types/documents.d.ts +0 -24
  273. package/dist/types/documents.d.ts.map +0 -1
  274. package/dist/types/documents.js +0 -5
  275. package/dist/types/documents.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"file-origins.d.ts","sourceRoot":"","sources":["../../src/media/file-origins.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,mGAMtB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,qBAAqB,qDAAsD,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,gBAAgB,6IAA8D,CAAC;AAC5F,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;AAMzD,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAGhD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAIvC,eAAO,MAAM,0BAA0B,0BAA2B,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAI9E,eAAO,MAAM,uBAAuB,4BAA6B,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIxE,eAAO,MAAM,wBAAwB,wDAAyD,CAAC;AAE/F,eAAO,MAAM,cAAc,EAAE,WAG5B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,yFAAyF;IACzF,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC6B,CAAC;AAiDxD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,WAG9B,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAU5E,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAEzE"}
1
+ {"version":3,"file":"file-origins.d.ts","sourceRoot":"","sources":["../../src/media/file-origins.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,mGAMtB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,qBAAqB,qDAAsD,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,gBAAgB,6IAA8D,CAAC;AAC5F,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;AAMzD,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAGhD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAIvC,eAAO,MAAM,0BAA0B,0BAA2B,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAI9E,eAAO,MAAM,uBAAuB,4BAA6B,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIxE,eAAO,MAAM,wBAAwB,wDAAyD,CAAC;AAE/F,eAAO,MAAM,cAAc,EAAE,WAG5B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,yFAAyF;IACzF,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD6B,CAAC;AAqDxD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,WAG9B,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAU5E,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAEzE"}
@@ -43,32 +43,52 @@ export const PICTURE_KINDS = {
43
43
  aspect: 'landscape',
44
44
  format: 'jpeg',
45
45
  cropShape: 'rect',
46
- sizes: { sm: { width: 480, height: 270 }, md: { width: 960, height: 540 }, lg: { width: 1920, height: 1080 } },
46
+ sizes: {
47
+ sm: { width: 480, height: 270 },
48
+ md: { width: 960, height: 540 },
49
+ lg: { width: 1920, height: 1080 },
50
+ },
47
51
  },
48
52
  'team-picture': {
49
53
  aspect: 'classic',
50
54
  format: 'jpeg',
51
55
  cropShape: 'rect',
52
- sizes: { sm: { width: 480, height: 360 }, md: { width: 960, height: 720 }, lg: { width: 1600, height: 1200 } },
56
+ sizes: {
57
+ sm: { width: 480, height: 360 },
58
+ md: { width: 960, height: 720 },
59
+ lg: { width: 1600, height: 1200 },
60
+ },
53
61
  },
54
62
  'landing-picture': {
55
63
  aspect: 'banner',
56
64
  format: 'jpeg',
57
65
  cropShape: 'rect',
58
- sizes: { sm: { width: 720, height: 240 }, md: { width: 1440, height: 480 }, lg: { width: 2400, height: 800 } },
66
+ sizes: {
67
+ sm: { width: 720, height: 240 },
68
+ md: { width: 1440, height: 480 },
69
+ lg: { width: 2400, height: 800 },
70
+ },
59
71
  },
60
72
  'location-picture': {
61
73
  aspect: 'landscape',
62
74
  format: 'jpeg',
63
75
  cropShape: 'rect',
64
- sizes: { sm: { width: 480, height: 270 }, md: { width: 960, height: 540 }, lg: { width: 1280, height: 720 } },
76
+ sizes: {
77
+ sm: { width: 480, height: 270 },
78
+ md: { width: 960, height: 540 },
79
+ lg: { width: 1280, height: 720 },
80
+ },
65
81
  },
66
82
  // A badge is cropped in a round mask and kept square, at the sizes every award has always had.
67
83
  'award-badge': {
68
84
  aspect: 'square',
69
85
  format: 'png',
70
86
  cropShape: 'round',
71
- sizes: { sm: { width: 64, height: 64 }, md: { width: 256, height: 256 }, lg: { width: 512, height: 512 } },
87
+ sizes: {
88
+ sm: { width: 64, height: 64 },
89
+ md: { width: 256, height: 256 },
90
+ lg: { width: 512, height: 512 },
91
+ },
72
92
  },
73
93
  };
74
94
  function pictureOriginSpec(kind) {
@@ -76,7 +96,11 @@ function pictureOriginSpec(kind) {
76
96
  const { width, height } = PICTURE_ASPECT_RATIOS[kind.aspect];
77
97
  const variants = PICTURE_VARIANT_KEYS.map((key) => ({
78
98
  key,
79
- crop: { width: kind.sizes[key].width, height: kind.sizes[key].height, gravity: 'center' },
99
+ crop: {
100
+ width: kind.sizes[key].width,
101
+ height: kind.sizes[key].height,
102
+ gravity: 'center',
103
+ },
80
104
  format: kind.format,
81
105
  ...(kind.format === 'jpeg' ? { quality: PICTURE_JPEG_QUALITY } : {}),
82
106
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"file-origins.js","sourceRoot":"","sources":["../../src/media/file-origins.ts"],"names":[],"mappings":"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","sourcesContent":["// The upload origin registry (MEDIA-001, MEDIA-006). One origin value binds everything an\n// upload touches: the picker spec, the staging path and its `storage.rules` cap and content type,\n// the callable that accepts the upload, and — for a picture — the processing spec and the owner the\n// picture is published to. The generic packages treat an origin id as opaque; the policy is here.\n//\n// Picture origins are processed into their kind's declared sizes and keep no master. Signature\n// origins are kept byte-exact (`preserveOriginal`) by the callable that records them and are never\n// processed. Adding an origin is one change across this registry, `storage.rules`, the processor\n// routing, and their tests; `storage.rules` restates the caps and content types, and a guard pins it\n// to this file.\n\nimport type { MediaAccept, MediaOriginSpec } from '@ttt-productions/media-schemas';\nimport { PICTURE_VARIANT_KEYS } from '../types/unions.js';\nimport type { PictureVariantKey } from '../types/unions.js';\nimport { PICTURE_ASPECT_RATIOS, pictureAspectRatio } from './picture-aspects.js';\nimport type { PictureAspect } from './picture-aspects.js';\n\nexport const PICTURE_ORIGIN_KEYS = [\n 'league-picture',\n 'team-picture',\n 'landing-picture',\n 'location-picture',\n 'award-badge',\n] as const;\nexport type PictureOrigin = (typeof PICTURE_ORIGIN_KEYS)[number];\n\nexport const SIGNATURE_ORIGIN_KEYS = ['waiver-signature', 'hardware-signature'] as const;\nexport type SignatureOrigin = (typeof SIGNATURE_ORIGIN_KEYS)[number];\n\nexport const FILE_ORIGIN_KEYS = [...PICTURE_ORIGIN_KEYS, ...SIGNATURE_ORIGIN_KEYS] as const;\nexport type FileOrigin = PictureOrigin | SignatureOrigin;\n\nconst MB = 1024 * 1024;\n\n// The raw cap is an abuse bound: the browser uploads a picture already cropped and shrunk to its\n// kind's largest size, so a real upload is far below it.\nexport const PICTURE_UPLOAD_MAX_BYTES = 25 * MB;\n\n// A photo's browser crop and every stored size are JPEG at this quality.\nexport const PICTURE_JPEG_QUALITY = 85;\n\n// What a picture kind is stored as: a photo as JPEG, a badge as PNG, which keeps the transparent\n// corners of a badge drawn round.\nexport const PICTURE_STORED_FORMAT_KEYS = ['jpeg', 'png'] as const;\nexport type PictureStoredFormat = (typeof PICTURE_STORED_FORMAT_KEYS)[number];\n\n// The cropper's mask: a rectangle, or a circle for a badge — which is how a badge is drawn, though\n// the stored image is square.\nexport const PICTURE_CROP_SHAPE_KEYS = ['rect', 'round'] as const;\nexport type PictureCropShape = (typeof PICTURE_CROP_SHAPE_KEYS)[number];\n\n// Picture formats the server's byte inspection accepts. Scriptable or unproven formats (svg, heic,\n// avif) are not accepted.\nexport const PICTURE_ACCEPTED_FORMATS = ['jpeg', 'png', 'gif', 'webp', 'bmp', 'tiff'] as const;\n\nexport const PICTURE_ACCEPT: MediaAccept = {\n kinds: ['image'],\n formats: [...PICTURE_ACCEPTED_FORMATS],\n};\n\nexport interface PictureSize {\n readonly width: number;\n readonly height: number;\n}\n\nexport interface PictureKind {\n /** The shape the browser crops to, the server re-crops to, and every display frames. */\n readonly aspect: PictureAspect;\n /** Each stored size, at the kind's shape. `lg` is also the size the browser crops to. */\n readonly sizes: Readonly<Record<PictureVariantKey, PictureSize>>;\n /** The format of the browser's crop and of every stored size. */\n readonly format: PictureStoredFormat;\n readonly cropShape: PictureCropShape;\n}\n\nexport const PICTURE_KINDS = {\n 'league-picture': {\n aspect: 'landscape',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: { sm: { width: 480, height: 270 }, md: { width: 960, height: 540 }, lg: { width: 1920, height: 1080 } },\n },\n 'team-picture': {\n aspect: 'classic',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: { sm: { width: 480, height: 360 }, md: { width: 960, height: 720 }, lg: { width: 1600, height: 1200 } },\n },\n 'landing-picture': {\n aspect: 'banner',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: { sm: { width: 720, height: 240 }, md: { width: 1440, height: 480 }, lg: { width: 2400, height: 800 } },\n },\n 'location-picture': {\n aspect: 'landscape',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: { sm: { width: 480, height: 270 }, md: { width: 960, height: 540 }, lg: { width: 1280, height: 720 } },\n },\n // A badge is cropped in a round mask and kept square, at the sizes every award has always had.\n 'award-badge': {\n aspect: 'square',\n format: 'png',\n cropShape: 'round',\n sizes: { sm: { width: 64, height: 64 }, md: { width: 256, height: 256 }, lg: { width: 512, height: 512 } },\n },\n} as const satisfies Record<PictureOrigin, PictureKind>;\n\nfunction pictureOriginSpec(kind: PictureKind): MediaOriginSpec {\n const ratio = pictureAspectRatio(kind.aspect);\n const { width, height } = PICTURE_ASPECT_RATIOS[kind.aspect];\n const variants = PICTURE_VARIANT_KEYS.map((key) => ({\n key,\n crop: { width: kind.sizes[key].width, height: kind.sizes[key].height, gravity: 'center' as const },\n format: kind.format,\n ...(kind.format === 'jpeg' ? { quality: PICTURE_JPEG_QUALITY } : {}),\n }));\n return {\n kind: 'image',\n accept: PICTURE_ACCEPT,\n maxBytes: PICTURE_UPLOAD_MAX_BYTES,\n imageCrop: {\n aspectRatio: ratio,\n outputWidth: kind.sizes.lg.width,\n outputHeight: kind.sizes.lg.height,\n shape: kind.cropShape,\n format: kind.format,\n ...(kind.format === 'jpeg' ? { quality: PICTURE_JPEG_QUALITY } : {}),\n aspectRatioDisplay: `${width}:${height}`,\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n // The server trusts nothing the browser did: an upload that bypassed the app's cropper is\n // centre-cropped to the kind's shape (`requiredAspectRatio` with `allowAutoFormat`) before\n // every size is cut, and a source smaller than a size is never enlarged.\n image: {\n kind: 'image',\n accept: PICTURE_ACCEPT,\n maxBytes: PICTURE_UPLOAD_MAX_BYTES,\n requiredAspectRatio: ratio,\n allowAutoFormat: true,\n image: { variants, stripMetadata: true },\n },\n },\n };\n}\n\n// A signature is drawn on a canvas and exported as PNG, so exactly `image/png` is accepted — no\n// other image type, and never the neutral octet-stream lane. It is kept byte-exact by the callable\n// that records it, and nothing processes it.\nexport const SIGNATURE_UPLOAD_MAX_BYTES = 1 * MB;\nexport const SIGNATURE_CONTENT_TYPE = 'image/png';\n\nexport const SIGNATURE_ACCEPT: MediaAccept = {\n kinds: ['file'],\n mimes: [SIGNATURE_CONTENT_TYPE],\n};\n\nfunction signatureOriginSpec(): MediaOriginSpec {\n return {\n kind: 'generic',\n accept: SIGNATURE_ACCEPT,\n maxBytes: SIGNATURE_UPLOAD_MAX_BYTES,\n client: {\n allowPick: false,\n allowCapturePhoto: false,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n preserveOriginal: true,\n };\n}\n\nexport const MEDIA_ORIGIN_SPECS: Readonly<Record<FileOrigin, MediaOriginSpec>> = {\n 'league-picture': pictureOriginSpec(PICTURE_KINDS['league-picture']),\n 'team-picture': pictureOriginSpec(PICTURE_KINDS['team-picture']),\n 'landing-picture': pictureOriginSpec(PICTURE_KINDS['landing-picture']),\n 'location-picture': pictureOriginSpec(PICTURE_KINDS['location-picture']),\n 'award-badge': pictureOriginSpec(PICTURE_KINDS['award-badge']),\n // Promoted to its kept path by the waiver-signing callable.\n 'waiver-signature': signatureOriginSpec(),\n // Promoted to its kept path by the hardware contract's signing callable.\n 'hardware-signature': signatureOriginSpec(),\n};\n\nexport function isFileOrigin(value: string): value is FileOrigin {\n return (FILE_ORIGIN_KEYS as readonly string[]).includes(value);\n}\n\nexport function isPictureOrigin(value: string): value is PictureOrigin {\n return (PICTURE_ORIGIN_KEYS as readonly string[]).includes(value);\n}\n\nexport function isSignatureOrigin(value: string): value is SignatureOrigin {\n return (SIGNATURE_ORIGIN_KEYS as readonly string[]).includes(value);\n}\n"]}
1
+ {"version":3,"file":"file-origins.js","sourceRoot":"","sources":["../../src/media/file-origins.ts"],"names":[],"mappings":"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","sourcesContent":["// The upload origin registry (MEDIA-001, MEDIA-006). One origin value binds everything an\n// upload touches: the picker spec, the staging path and its `storage.rules` cap and content type,\n// the callable that accepts the upload, and — for a picture — the processing spec and the owner the\n// picture is published to. The generic packages treat an origin id as opaque; the policy is here.\n//\n// Picture origins are processed into their kind's declared sizes and keep no master. Signature\n// origins are kept byte-exact (`preserveOriginal`) by the callable that records them and are never\n// processed. Adding an origin is one change across this registry, `storage.rules`, the processor\n// routing, and their tests; `storage.rules` restates the caps and content types, and a guard pins it\n// to this file.\n\nimport type { MediaAccept, MediaOriginSpec } from '@ttt-productions/media-schemas';\nimport { PICTURE_VARIANT_KEYS } from '../types/unions.js';\nimport type { PictureVariantKey } from '../types/unions.js';\nimport { PICTURE_ASPECT_RATIOS, pictureAspectRatio } from './picture-aspects.js';\nimport type { PictureAspect } from './picture-aspects.js';\n\nexport const PICTURE_ORIGIN_KEYS = [\n 'league-picture',\n 'team-picture',\n 'landing-picture',\n 'location-picture',\n 'award-badge',\n] as const;\nexport type PictureOrigin = (typeof PICTURE_ORIGIN_KEYS)[number];\n\nexport const SIGNATURE_ORIGIN_KEYS = ['waiver-signature', 'hardware-signature'] as const;\nexport type SignatureOrigin = (typeof SIGNATURE_ORIGIN_KEYS)[number];\n\nexport const FILE_ORIGIN_KEYS = [...PICTURE_ORIGIN_KEYS, ...SIGNATURE_ORIGIN_KEYS] as const;\nexport type FileOrigin = PictureOrigin | SignatureOrigin;\n\nconst MB = 1024 * 1024;\n\n// The raw cap is an abuse bound: the browser uploads a picture already cropped and shrunk to its\n// kind's largest size, so a real upload is far below it.\nexport const PICTURE_UPLOAD_MAX_BYTES = 25 * MB;\n\n// A photo's browser crop and every stored size are JPEG at this quality.\nexport const PICTURE_JPEG_QUALITY = 85;\n\n// What a picture kind is stored as: a photo as JPEG, a badge as PNG, which keeps the transparent\n// corners of a badge drawn round.\nexport const PICTURE_STORED_FORMAT_KEYS = ['jpeg', 'png'] as const;\nexport type PictureStoredFormat = (typeof PICTURE_STORED_FORMAT_KEYS)[number];\n\n// The cropper's mask: a rectangle, or a circle for a badge — which is how a badge is drawn, though\n// the stored image is square.\nexport const PICTURE_CROP_SHAPE_KEYS = ['rect', 'round'] as const;\nexport type PictureCropShape = (typeof PICTURE_CROP_SHAPE_KEYS)[number];\n\n// Picture formats the server's byte inspection accepts. Scriptable or unproven formats (svg, heic,\n// avif) are not accepted.\nexport const PICTURE_ACCEPTED_FORMATS = ['jpeg', 'png', 'gif', 'webp', 'bmp', 'tiff'] as const;\n\nexport const PICTURE_ACCEPT: MediaAccept = {\n kinds: ['image'],\n formats: [...PICTURE_ACCEPTED_FORMATS],\n};\n\nexport interface PictureSize {\n readonly width: number;\n readonly height: number;\n}\n\nexport interface PictureKind {\n /** The shape the browser crops to, the server re-crops to, and every display frames. */\n readonly aspect: PictureAspect;\n /** Each stored size, at the kind's shape. `lg` is also the size the browser crops to. */\n readonly sizes: Readonly<Record<PictureVariantKey, PictureSize>>;\n /** The format of the browser's crop and of every stored size. */\n readonly format: PictureStoredFormat;\n readonly cropShape: PictureCropShape;\n}\n\nexport const PICTURE_KINDS = {\n 'league-picture': {\n aspect: 'landscape',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: {\n sm: { width: 480, height: 270 },\n md: { width: 960, height: 540 },\n lg: { width: 1920, height: 1080 },\n },\n },\n 'team-picture': {\n aspect: 'classic',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: {\n sm: { width: 480, height: 360 },\n md: { width: 960, height: 720 },\n lg: { width: 1600, height: 1200 },\n },\n },\n 'landing-picture': {\n aspect: 'banner',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: {\n sm: { width: 720, height: 240 },\n md: { width: 1440, height: 480 },\n lg: { width: 2400, height: 800 },\n },\n },\n 'location-picture': {\n aspect: 'landscape',\n format: 'jpeg',\n cropShape: 'rect',\n sizes: {\n sm: { width: 480, height: 270 },\n md: { width: 960, height: 540 },\n lg: { width: 1280, height: 720 },\n },\n },\n // A badge is cropped in a round mask and kept square, at the sizes every award has always had.\n 'award-badge': {\n aspect: 'square',\n format: 'png',\n cropShape: 'round',\n sizes: {\n sm: { width: 64, height: 64 },\n md: { width: 256, height: 256 },\n lg: { width: 512, height: 512 },\n },\n },\n} as const satisfies Record<PictureOrigin, PictureKind>;\n\nfunction pictureOriginSpec(kind: PictureKind): MediaOriginSpec {\n const ratio = pictureAspectRatio(kind.aspect);\n const { width, height } = PICTURE_ASPECT_RATIOS[kind.aspect];\n const variants = PICTURE_VARIANT_KEYS.map((key) => ({\n key,\n crop: {\n width: kind.sizes[key].width,\n height: kind.sizes[key].height,\n gravity: 'center' as const,\n },\n format: kind.format,\n ...(kind.format === 'jpeg' ? { quality: PICTURE_JPEG_QUALITY } : {}),\n }));\n return {\n kind: 'image',\n accept: PICTURE_ACCEPT,\n maxBytes: PICTURE_UPLOAD_MAX_BYTES,\n imageCrop: {\n aspectRatio: ratio,\n outputWidth: kind.sizes.lg.width,\n outputHeight: kind.sizes.lg.height,\n shape: kind.cropShape,\n format: kind.format,\n ...(kind.format === 'jpeg' ? { quality: PICTURE_JPEG_QUALITY } : {}),\n aspectRatioDisplay: `${width}:${height}`,\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n // The server trusts nothing the browser did: an upload that bypassed the app's cropper is\n // centre-cropped to the kind's shape (`requiredAspectRatio` with `allowAutoFormat`) before\n // every size is cut, and a source smaller than a size is never enlarged.\n image: {\n kind: 'image',\n accept: PICTURE_ACCEPT,\n maxBytes: PICTURE_UPLOAD_MAX_BYTES,\n requiredAspectRatio: ratio,\n allowAutoFormat: true,\n image: { variants, stripMetadata: true },\n },\n },\n };\n}\n\n// A signature is drawn on a canvas and exported as PNG, so exactly `image/png` is accepted — no\n// other image type, and never the neutral octet-stream lane. It is kept byte-exact by the callable\n// that records it, and nothing processes it.\nexport const SIGNATURE_UPLOAD_MAX_BYTES = 1 * MB;\nexport const SIGNATURE_CONTENT_TYPE = 'image/png';\n\nexport const SIGNATURE_ACCEPT: MediaAccept = {\n kinds: ['file'],\n mimes: [SIGNATURE_CONTENT_TYPE],\n};\n\nfunction signatureOriginSpec(): MediaOriginSpec {\n return {\n kind: 'generic',\n accept: SIGNATURE_ACCEPT,\n maxBytes: SIGNATURE_UPLOAD_MAX_BYTES,\n client: {\n allowPick: false,\n allowCapturePhoto: false,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n preserveOriginal: true,\n };\n}\n\nexport const MEDIA_ORIGIN_SPECS: Readonly<Record<FileOrigin, MediaOriginSpec>> = {\n 'league-picture': pictureOriginSpec(PICTURE_KINDS['league-picture']),\n 'team-picture': pictureOriginSpec(PICTURE_KINDS['team-picture']),\n 'landing-picture': pictureOriginSpec(PICTURE_KINDS['landing-picture']),\n 'location-picture': pictureOriginSpec(PICTURE_KINDS['location-picture']),\n 'award-badge': pictureOriginSpec(PICTURE_KINDS['award-badge']),\n // Promoted to its kept path by the waiver-signing callable.\n 'waiver-signature': signatureOriginSpec(),\n // Promoted to its kept path by the hardware contract's signing callable.\n 'hardware-signature': signatureOriginSpec(),\n};\n\nexport function isFileOrigin(value: string): value is FileOrigin {\n return (FILE_ORIGIN_KEYS as readonly string[]).includes(value);\n}\n\nexport function isPictureOrigin(value: string): value is PictureOrigin {\n return (PICTURE_ORIGIN_KEYS as readonly string[]).includes(value);\n}\n\nexport function isSignatureOrigin(value: string): value is SignatureOrigin {\n return (SIGNATURE_ORIGIN_KEYS as readonly string[]).includes(value);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"action-ids.d.ts","sourceRoot":"","sources":["../../src/migration-console/action-ids.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4IvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAEjG,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,EAA0C,CAAC,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"action-ids.d.ts","sourceRoot":"","sources":["../../src/migration-console/action-ids.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4IvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAEjG,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,EAA0C,CAC7E,iBAAiB,EACjB,GAAG,iBAAiB,EAAE,CACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"action-ids.js","sourceRoot":"","sources":["../../src/migration-console/action-ids.ts"],"names":[],"mappings":"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","sourcesContent":["// The one declaration of every cutover action id (ENG-002). The manifest, the console's callables\n// and screen, and every delete gate name an action by the id declared here — never by a string\n// literal at the call site, where a typo is a gate that silently never matches.\n//\n// An id is declared even before its action exists: a destructive core requires its verifications\n// by id, so it refuses to run until each one exists and has passed — failing closed, rather than\n// resting on a precondition written in prose that nothing enforces.\n\nexport const MIGRATION_ACTION_IDS = {\n // Accounts, identity, and global roles.\n copyUserProfiles: 'copy.userProfiles',\n copyHistoricalStats: 'copy.historicalStats',\n deriveReservedDisplayNames: 'derive.reservedDisplayNames',\n migratePublicUsers: 'migrate.publicUsers',\n copyAdminList: 'copy.adminList',\n verifyUserProfiles: 'verify.userProfiles',\n verifyHistoricalStats: 'verify.historicalStats',\n verifyReservedDisplayNames: 'verify.reservedDisplayNames',\n verifyPublicUsers: 'verify.publicUsers',\n verifyAdminList: 'verify.adminList',\n cleanupOrphanGhostPublicUsers: 'cleanup.orphanGhostPublicUsers',\n deleteV1Users: 'delete.v1Users',\n deleteV1AdminRoles: 'delete.v1AdminRoles',\n\n // Required by the ghost cleanup, whose probes read `teamMemberships` and `gameRosterPlayers`:\n // until those copies are verified complete, every ghost reads as unreferenced.\n verifyTeamMemberships: 'verify.teamMemberships',\n verifyGameRosterPlayers: 'verify.gameRosterPlayers',\n\n // Teams, memberships, and game rosters.\n copyLeagueTeams: 'copy.leagueTeams',\n verifyLeagueTeams: 'verify.leagueTeams',\n deleteV1Teams: 'delete.v1Teams',\n copyTeamMemberships: 'copy.teamMemberships',\n deleteV1TeamMembers: 'delete.v1TeamMembers',\n // The ways onto a team. Each copy reads the copied `teamMemberships` to close a pending invitation\n // or request its player already answered by joining, or to leave out a signup joining left behind,\n // so each runs after `copy.teamMemberships`.\n copyTeamInvitations: 'copy.teamInvitations',\n verifyTeamInvitations: 'verify.teamInvitations',\n deleteV1TeamInvites: 'delete.v1TeamInvites',\n copyTeamJoinRequests: 'copy.teamJoinRequests',\n verifyTeamJoinRequests: 'verify.teamJoinRequests',\n deleteV1JoinRequests: 'delete.v1JoinRequests',\n copyLeagueFreeAgents: 'copy.leagueFreeAgents',\n verifyLeagueFreeAgents: 'verify.leagueFreeAgents',\n deleteV1FreeAgentSignups: 'delete.v1FreeAgentSignups',\n copyGameRosterPlayers: 'copy.gameRosterPlayers',\n deleteV1GameRosters: 'delete.v1GameRosters',\n // The games open at the cutover, reconciled once against the copied memberships. It removes the\n // stale entries a copied roster holds, so it waits for the memberships and the game stats — which\n // pin an entry holding a recorded stat — to be copied and verified.\n reconcileOpenGameRosters: 'reconcile.openGameRosters',\n verifyGameStats: 'verify.gameStats',\n // Informational: each user whose V1 league total differs from the sum of their rebuilt per-membership\n // rows. It gates nothing; a summary is rebuilt by design.\n verifyLeaguePlayerStats: 'verify.leaguePlayerStats',\n\n // Games. `copy.sportGames` is the one reader of each V1 game, writing its schedule fields and its\n // stats documents together; the V1 game document goes last, after its roster.\n copySportGames: 'copy.sportGames',\n // A recorded stat line no roster entry or play places: the admin names its team, and the game's\n // copy runs again.\n resolveUnrosteredStatLine: 'resolve.unrosteredStatLine',\n verifySportGames: 'verify.sportGames',\n deleteV1LeagueGames: 'delete.v1LeagueGames',\n\n // Signed waivers: the records, and their signature files, which stay where V1 put them.\n copySignedWaivers: 'copy.signedWaivers',\n verifySignedWaivers: 'verify.signedWaivers',\n verifySignatureFilesResolvable: 'verify.signatureFilesResolvable',\n revokeV1SignatureDownloadTokens: 'revoke.v1SignatureDownloadTokens',\n deleteV1WaiverSignatures: 'delete.v1WaiverSignatures',\n\n // Hardware loan contracts: the records, and their signature files, which stay where V1 put them.\n // The two signature-file actions above walk the contracts after the waivers.\n copyHardwareLoanContracts: 'copy.hardwareLoanContracts',\n verifyHardwareLoanContracts: 'verify.hardwareLoanContracts',\n deleteV1HardwareContracts: 'delete.v1HardwareContracts',\n\n // Leagues.\n copySportLeagues: 'copy.sportLeagues',\n verifySportLeagues: 'verify.sportLeagues',\n deleteV1Leagues: 'delete.v1Leagues',\n // The parked chat documents under a V1 league, which keep the league alive until they go.\n deleteV1LeagueChats: 'delete.v1LeagueChats',\n\n // The V1 league, landing, venue, and award badge images, fed through the upload pipeline. The\n // verification is required by every V1 delete whose documents the carry reads images from.\n carryV1Pictures: 'carry.v1Pictures',\n verifyV1Pictures: 'verify.v1Pictures',\n\n // App configuration: `landing/base` splits into the three `_appConfig` documents.\n copyAppConfig: 'copy.appConfig',\n copyLandingPageConfig: 'copy.landingPageConfig',\n copyStatsBeacon: 'copy.statsBeacon',\n verifyAppConfig: 'verify.appConfig',\n verifyLandingPageConfig: 'verify.landingPageConfig',\n verifyStatsBeacon: 'verify.statsBeacon',\n deleteV1LandingBase: 'delete.v1LandingBase',\n\n // Waiver templates, each carried with its wording as version 1.\n copyWaiverTemplates: 'copy.waiverTemplates',\n verifyWaiverTemplates: 'verify.waiverTemplates',\n deleteV1Waivers: 'delete.v1Waivers',\n\n // The award catalog: the `landing/admin` awards array becomes one document per award, its badge\n // carried by `carry.v1Pictures`.\n copyAwardDefinitions: 'copy.awardDefinitions',\n verifyAwardDefinitions: 'verify.awardDefinitions',\n deleteV1AwardCatalog: 'delete.v1AwardCatalog',\n\n // Game locations: the `landing/admin` locations array becomes one document per venue.\n copyGameLocations: 'copy.gameLocations',\n verifyGameLocations: 'verify.gameLocations',\n deleteV1GameLocations: 'delete.v1GameLocations',\n\n // The admin dashboard counts are counted live, never stored; the V1 collection is deleted.\n deleteV1AdminStats: 'delete.v1AdminStats',\n\n // The store and team payments are deleted, not copied, once nothing in them is a completed\n // purchase.\n verifyV1CommerceDiscardable: 'verify.v1CommerceDiscardable',\n deleteV1Commerce: 'delete.v1Commerce',\n\n // The derived statistics, rebuilt from the copied games by the Fix stats actions, then validated.\n // The console records each run the operator makes from the Stats group; it never runs a second\n // calculator of its own.\n rebuildLeagueStats: 'rebuild.leagueStats',\n rebuildLifetimeStats: 'rebuild.lifetimeStats',\n rebuildSportHallOfFame: 'rebuild.sportHallOfFame',\n validateStats: 'validate.stats',\n // The V1 hall of fame is rebuilt, never copied: its delete waits for the rebuilt documents.\n verifySportHallOfFame: 'verify.sportHallOfFame',\n deleteV1HallOfFame: 'delete.v1HallOfFame',\n // V1 validation reports describe V1 aggregates at a past moment; nothing is copied.\n deleteV1ValidationReports: 'delete.v1ValidationReports',\n\n // The console's own marker: from here on the product owns every destination.\n recordCutoverLive: 'record.cutoverLive',\n\n // Operator checkpoints — external work the app cannot perform, recorded with its evidence.\n checkpointV1FirestoreExport: 'checkpoint.v1FirestoreExport',\n checkpointPaymentCredentialsRetired: 'checkpoint.paymentCredentialsRetired',\n checkpointServiceAccountKeyRevoked: 'checkpoint.serviceAccountKeyRevoked',\n checkpointUnattachedPicturesReuploaded: 'checkpoint.unattachedPicturesReuploaded',\n // The gate the abandoned-registration sweep reads: it deletes nothing until this is recorded.\n checkpointAbandonedRegistrationSweepEnabled: 'checkpoint.abandonedRegistrationSweepEnabled',\n} as const;\n\nexport type MigrationActionId = (typeof MIGRATION_ACTION_IDS)[keyof typeof MIGRATION_ACTION_IDS];\n\n/** Every action id, for the wire schemas that name one. */\nexport const MIGRATION_ACTION_ID_KEYS = Object.values(MIGRATION_ACTION_IDS) as [MigrationActionId, ...MigrationActionId[]];\n"]}
1
+ {"version":3,"file":"action-ids.js","sourceRoot":"","sources":["../../src/migration-console/action-ids.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,+FAA+F;AAC/F,gFAAgF;AAChF,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,oEAAoE;AAEpE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,wCAAwC;IACxC,gBAAgB,EAAE,mBAAmB;IACrC,mBAAmB,EAAE,sBAAsB;IAC3C,0BAA0B,EAAE,6BAA6B;IACzD,kBAAkB,EAAE,qBAAqB;IACzC,aAAa,EAAE,gBAAgB;IAC/B,kBAAkB,EAAE,qBAAqB;IACzC,qBAAqB,EAAE,wBAAwB;IAC/C,0BAA0B,EAAE,6BAA6B;IACzD,iBAAiB,EAAE,oBAAoB;IACvC,eAAe,EAAE,kBAAkB;IACnC,6BAA6B,EAAE,gCAAgC;IAC/D,aAAa,EAAE,gBAAgB;IAC/B,kBAAkB,EAAE,qBAAqB;IAEzC,8FAA8F;IAC9F,+EAA+E;IAC/E,qBAAqB,EAAE,wBAAwB;IAC/C,uBAAuB,EAAE,0BAA0B;IAEnD,wCAAwC;IACxC,eAAe,EAAE,kBAAkB;IACnC,iBAAiB,EAAE,oBAAoB;IACvC,aAAa,EAAE,gBAAgB;IAC/B,mBAAmB,EAAE,sBAAsB;IAC3C,mBAAmB,EAAE,sBAAsB;IAC3C,mGAAmG;IACnG,mGAAmG;IACnG,6CAA6C;IAC7C,mBAAmB,EAAE,sBAAsB;IAC3C,qBAAqB,EAAE,wBAAwB;IAC/C,mBAAmB,EAAE,sBAAsB;IAC3C,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,oBAAoB,EAAE,uBAAuB;IAC7C,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,wBAAwB,EAAE,2BAA2B;IACrD,qBAAqB,EAAE,wBAAwB;IAC/C,mBAAmB,EAAE,sBAAsB;IAC3C,gGAAgG;IAChG,kGAAkG;IAClG,oEAAoE;IACpE,wBAAwB,EAAE,2BAA2B;IACrD,eAAe,EAAE,kBAAkB;IACnC,sGAAsG;IACtG,0DAA0D;IAC1D,uBAAuB,EAAE,0BAA0B;IAEnD,kGAAkG;IAClG,8EAA8E;IAC9E,cAAc,EAAE,iBAAiB;IACjC,gGAAgG;IAChG,mBAAmB;IACnB,yBAAyB,EAAE,4BAA4B;IACvD,gBAAgB,EAAE,mBAAmB;IACrC,mBAAmB,EAAE,sBAAsB;IAE3C,wFAAwF;IACxF,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,sBAAsB;IAC3C,8BAA8B,EAAE,iCAAiC;IACjE,+BAA+B,EAAE,kCAAkC;IACnE,wBAAwB,EAAE,2BAA2B;IAErD,iGAAiG;IACjG,6EAA6E;IAC7E,yBAAyB,EAAE,4BAA4B;IACvD,2BAA2B,EAAE,8BAA8B;IAC3D,yBAAyB,EAAE,4BAA4B;IAEvD,WAAW;IACX,gBAAgB,EAAE,mBAAmB;IACrC,kBAAkB,EAAE,qBAAqB;IACzC,eAAe,EAAE,kBAAkB;IACnC,0FAA0F;IAC1F,mBAAmB,EAAE,sBAAsB;IAE3C,8FAA8F;IAC9F,2FAA2F;IAC3F,eAAe,EAAE,kBAAkB;IACnC,gBAAgB,EAAE,mBAAmB;IAErC,kFAAkF;IAClF,aAAa,EAAE,gBAAgB;IAC/B,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,uBAAuB,EAAE,0BAA0B;IACnD,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,sBAAsB;IAE3C,gEAAgE;IAChE,mBAAmB,EAAE,sBAAsB;IAC3C,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IAEnC,gGAAgG;IAChG,iCAAiC;IACjC,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,oBAAoB,EAAE,uBAAuB;IAE7C,sFAAsF;IACtF,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,sBAAsB;IAC3C,qBAAqB,EAAE,wBAAwB;IAE/C,2FAA2F;IAC3F,kBAAkB,EAAE,qBAAqB;IAEzC,2FAA2F;IAC3F,YAAY;IACZ,2BAA2B,EAAE,8BAA8B;IAC3D,gBAAgB,EAAE,mBAAmB;IAErC,kGAAkG;IAClG,+FAA+F;IAC/F,yBAAyB;IACzB,kBAAkB,EAAE,qBAAqB;IACzC,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,aAAa,EAAE,gBAAgB;IAC/B,4FAA4F;IAC5F,qBAAqB,EAAE,wBAAwB;IAC/C,kBAAkB,EAAE,qBAAqB;IACzC,oFAAoF;IACpF,yBAAyB,EAAE,4BAA4B;IAEvD,6EAA6E;IAC7E,iBAAiB,EAAE,oBAAoB;IAEvC,2FAA2F;IAC3F,2BAA2B,EAAE,8BAA8B;IAC3D,mCAAmC,EAAE,sCAAsC;IAC3E,kCAAkC,EAAE,qCAAqC;IACzE,sCAAsC,EAAE,yCAAyC;IACjF,8FAA8F;IAC9F,2CAA2C,EAAE,8CAA8C;CACnF,CAAC;AAIX,2DAA2D;AAC3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAGzE,CAAC","sourcesContent":["// The one declaration of every cutover action id (ENG-002). The manifest, the console's callables\n// and screen, and every delete gate name an action by the id declared here — never by a string\n// literal at the call site, where a typo is a gate that silently never matches.\n//\n// An id is declared even before its action exists: a destructive core requires its verifications\n// by id, so it refuses to run until each one exists and has passed — failing closed, rather than\n// resting on a precondition written in prose that nothing enforces.\n\nexport const MIGRATION_ACTION_IDS = {\n // Accounts, identity, and global roles.\n copyUserProfiles: 'copy.userProfiles',\n copyHistoricalStats: 'copy.historicalStats',\n deriveReservedDisplayNames: 'derive.reservedDisplayNames',\n migratePublicUsers: 'migrate.publicUsers',\n copyAdminList: 'copy.adminList',\n verifyUserProfiles: 'verify.userProfiles',\n verifyHistoricalStats: 'verify.historicalStats',\n verifyReservedDisplayNames: 'verify.reservedDisplayNames',\n verifyPublicUsers: 'verify.publicUsers',\n verifyAdminList: 'verify.adminList',\n cleanupOrphanGhostPublicUsers: 'cleanup.orphanGhostPublicUsers',\n deleteV1Users: 'delete.v1Users',\n deleteV1AdminRoles: 'delete.v1AdminRoles',\n\n // Required by the ghost cleanup, whose probes read `teamMemberships` and `gameRosterPlayers`:\n // until those copies are verified complete, every ghost reads as unreferenced.\n verifyTeamMemberships: 'verify.teamMemberships',\n verifyGameRosterPlayers: 'verify.gameRosterPlayers',\n\n // Teams, memberships, and game rosters.\n copyLeagueTeams: 'copy.leagueTeams',\n verifyLeagueTeams: 'verify.leagueTeams',\n deleteV1Teams: 'delete.v1Teams',\n copyTeamMemberships: 'copy.teamMemberships',\n deleteV1TeamMembers: 'delete.v1TeamMembers',\n // The ways onto a team. Each copy reads the copied `teamMemberships` to close a pending invitation\n // or request its player already answered by joining, or to leave out a signup joining left behind,\n // so each runs after `copy.teamMemberships`.\n copyTeamInvitations: 'copy.teamInvitations',\n verifyTeamInvitations: 'verify.teamInvitations',\n deleteV1TeamInvites: 'delete.v1TeamInvites',\n copyTeamJoinRequests: 'copy.teamJoinRequests',\n verifyTeamJoinRequests: 'verify.teamJoinRequests',\n deleteV1JoinRequests: 'delete.v1JoinRequests',\n copyLeagueFreeAgents: 'copy.leagueFreeAgents',\n verifyLeagueFreeAgents: 'verify.leagueFreeAgents',\n deleteV1FreeAgentSignups: 'delete.v1FreeAgentSignups',\n copyGameRosterPlayers: 'copy.gameRosterPlayers',\n deleteV1GameRosters: 'delete.v1GameRosters',\n // The games open at the cutover, reconciled once against the copied memberships. It removes the\n // stale entries a copied roster holds, so it waits for the memberships and the game stats — which\n // pin an entry holding a recorded stat — to be copied and verified.\n reconcileOpenGameRosters: 'reconcile.openGameRosters',\n verifyGameStats: 'verify.gameStats',\n // Informational: each user whose V1 league total differs from the sum of their rebuilt per-membership\n // rows. It gates nothing; a summary is rebuilt by design.\n verifyLeaguePlayerStats: 'verify.leaguePlayerStats',\n\n // Games. `copy.sportGames` is the one reader of each V1 game, writing its schedule fields and its\n // stats documents together; the V1 game document goes last, after its roster.\n copySportGames: 'copy.sportGames',\n // A recorded stat line no roster entry or play places: the admin names its team, and the game's\n // copy runs again.\n resolveUnrosteredStatLine: 'resolve.unrosteredStatLine',\n verifySportGames: 'verify.sportGames',\n deleteV1LeagueGames: 'delete.v1LeagueGames',\n\n // Signed waivers: the records, and their signature files, which stay where V1 put them.\n copySignedWaivers: 'copy.signedWaivers',\n verifySignedWaivers: 'verify.signedWaivers',\n verifySignatureFilesResolvable: 'verify.signatureFilesResolvable',\n revokeV1SignatureDownloadTokens: 'revoke.v1SignatureDownloadTokens',\n deleteV1WaiverSignatures: 'delete.v1WaiverSignatures',\n\n // Hardware loan contracts: the records, and their signature files, which stay where V1 put them.\n // The two signature-file actions above walk the contracts after the waivers.\n copyHardwareLoanContracts: 'copy.hardwareLoanContracts',\n verifyHardwareLoanContracts: 'verify.hardwareLoanContracts',\n deleteV1HardwareContracts: 'delete.v1HardwareContracts',\n\n // Leagues.\n copySportLeagues: 'copy.sportLeagues',\n verifySportLeagues: 'verify.sportLeagues',\n deleteV1Leagues: 'delete.v1Leagues',\n // The parked chat documents under a V1 league, which keep the league alive until they go.\n deleteV1LeagueChats: 'delete.v1LeagueChats',\n\n // The V1 league, landing, venue, and award badge images, fed through the upload pipeline. The\n // verification is required by every V1 delete whose documents the carry reads images from.\n carryV1Pictures: 'carry.v1Pictures',\n verifyV1Pictures: 'verify.v1Pictures',\n\n // App configuration: `landing/base` splits into the three `_appConfig` documents.\n copyAppConfig: 'copy.appConfig',\n copyLandingPageConfig: 'copy.landingPageConfig',\n copyStatsBeacon: 'copy.statsBeacon',\n verifyAppConfig: 'verify.appConfig',\n verifyLandingPageConfig: 'verify.landingPageConfig',\n verifyStatsBeacon: 'verify.statsBeacon',\n deleteV1LandingBase: 'delete.v1LandingBase',\n\n // Waiver templates, each carried with its wording as version 1.\n copyWaiverTemplates: 'copy.waiverTemplates',\n verifyWaiverTemplates: 'verify.waiverTemplates',\n deleteV1Waivers: 'delete.v1Waivers',\n\n // The award catalog: the `landing/admin` awards array becomes one document per award, its badge\n // carried by `carry.v1Pictures`.\n copyAwardDefinitions: 'copy.awardDefinitions',\n verifyAwardDefinitions: 'verify.awardDefinitions',\n deleteV1AwardCatalog: 'delete.v1AwardCatalog',\n\n // Game locations: the `landing/admin` locations array becomes one document per venue.\n copyGameLocations: 'copy.gameLocations',\n verifyGameLocations: 'verify.gameLocations',\n deleteV1GameLocations: 'delete.v1GameLocations',\n\n // The admin dashboard counts are counted live, never stored; the V1 collection is deleted.\n deleteV1AdminStats: 'delete.v1AdminStats',\n\n // The store and team payments are deleted, not copied, once nothing in them is a completed\n // purchase.\n verifyV1CommerceDiscardable: 'verify.v1CommerceDiscardable',\n deleteV1Commerce: 'delete.v1Commerce',\n\n // The derived statistics, rebuilt from the copied games by the Fix stats actions, then validated.\n // The console records each run the operator makes from the Stats group; it never runs a second\n // calculator of its own.\n rebuildLeagueStats: 'rebuild.leagueStats',\n rebuildLifetimeStats: 'rebuild.lifetimeStats',\n rebuildSportHallOfFame: 'rebuild.sportHallOfFame',\n validateStats: 'validate.stats',\n // The V1 hall of fame is rebuilt, never copied: its delete waits for the rebuilt documents.\n verifySportHallOfFame: 'verify.sportHallOfFame',\n deleteV1HallOfFame: 'delete.v1HallOfFame',\n // V1 validation reports describe V1 aggregates at a past moment; nothing is copied.\n deleteV1ValidationReports: 'delete.v1ValidationReports',\n\n // The console's own marker: from here on the product owns every destination.\n recordCutoverLive: 'record.cutoverLive',\n\n // Operator checkpoints — external work the app cannot perform, recorded with its evidence.\n checkpointV1FirestoreExport: 'checkpoint.v1FirestoreExport',\n checkpointPaymentCredentialsRetired: 'checkpoint.paymentCredentialsRetired',\n checkpointServiceAccountKeyRevoked: 'checkpoint.serviceAccountKeyRevoked',\n checkpointUnattachedPicturesReuploaded: 'checkpoint.unattachedPicturesReuploaded',\n // The gate the abandoned-registration sweep reads: it deletes nothing until this is recorded.\n checkpointAbandonedRegistrationSweepEnabled: 'checkpoint.abandonedRegistrationSweepEnabled',\n} as const;\n\nexport type MigrationActionId = (typeof MIGRATION_ACTION_IDS)[keyof typeof MIGRATION_ACTION_IDS];\n\n/** Every action id, for the wire schemas that name one. */\nexport const MIGRATION_ACTION_ID_KEYS = Object.values(MIGRATION_ACTION_IDS) as [\n MigrationActionId,\n ...MigrationActionId[],\n];\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/migration-console/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/migration-console/manifest.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,12 @@
19
19
  // its end (a verification's also passed), and a recorded step recorded — before the step runs.
20
20
  // `orderedAfter` is display order only: a sequence that is ordering, not a gate.
21
21
  import { MIGRATION_ACTION_IDS as A } from './action-ids.js';
22
- export const MIGRATION_STEP_KIND_KEYS = ['executable', 'productControl', 'operatorCheckpoint', 'cutoverMarker'];
22
+ export const MIGRATION_STEP_KIND_KEYS = [
23
+ 'executable',
24
+ 'productControl',
25
+ 'operatorCheckpoint',
26
+ 'cutoverMarker',
27
+ ];
23
28
  /** What an executable action's pages return: documents written, or records compared. */
24
29
  export const MIGRATION_RESULT_KIND_KEYS = ['write', 'verification'];
25
30
  /** Where a product control's completion is proven from. */
@@ -509,7 +514,12 @@ export const MIGRATION_CUTOVER_MANIFEST = [
509
514
  title: 'Carry the V1 pictures onto the pipeline',
510
515
  summary: 'Each league, landing, venue, and award image is staged and accepted through the upload pipeline, which processes and publishes it. A rehearsal reports every source unavailable.',
511
516
  owningStep: 'uploads-and-media',
512
- dependsOn: [A.copySportLeagues, A.copyLandingPageConfig, A.copyGameLocations, A.copyAwardDefinitions],
517
+ dependsOn: [
518
+ A.copySportLeagues,
519
+ A.copyLandingPageConfig,
520
+ A.copyGameLocations,
521
+ A.copyAwardDefinitions,
522
+ ],
513
523
  resumeKey: 'By owner kind, then owner id; the resume key is `{ownerKind}:{ownerId}`.',
514
524
  }),
515
525
  verifyStep(A.verifyV1Pictures, {
@@ -535,7 +545,12 @@ export const MIGRATION_CUTOVER_MANIFEST = [
535
545
  title: 'Remove the ghost names nothing references',
536
546
  summary: 'Each ghost `publicUsers` document no membership, roster entry, or unvoided stat event names, reported by disposition first. No signed waiver is touched.',
537
547
  owningStep: 'high-risk-callables',
538
- dependsOn: [A.verifyPublicUsers, A.verifyTeamMemberships, A.verifyGameRosterPlayers, A.verifyGameStats],
548
+ dependsOn: [
549
+ A.verifyPublicUsers,
550
+ A.verifyTeamMemberships,
551
+ A.verifyGameRosterPlayers,
552
+ A.verifyGameStats,
553
+ ],
539
554
  orderedAfter: [],
540
555
  },
541
556
  // ── The derived statistics ─────────────────────────────────────────────────────────────────────
@@ -628,7 +643,12 @@ export const MIGRATION_CUTOVER_MANIFEST = [
628
643
  title: 'Delete `landing/base`',
629
644
  summary: 'The V1 configuration document, once its three documents and its picture are verified.',
630
645
  owningStep: 'q-core',
631
- dependsOn: [A.verifyAppConfig, A.verifyLandingPageConfig, A.verifyStatsBeacon, A.verifyV1Pictures],
646
+ dependsOn: [
647
+ A.verifyAppConfig,
648
+ A.verifyLandingPageConfig,
649
+ A.verifyStatsBeacon,
650
+ A.verifyV1Pictures,
651
+ ],
632
652
  resumeKey: SINGLE_DOCUMENT,
633
653
  }),
634
654
  deleteStep(A.deleteV1Waivers, {
@@ -648,7 +668,12 @@ export const MIGRATION_CUTOVER_MANIFEST = [
648
668
  title: 'Remove the V1 award catalog',
649
669
  summary: 'The `awards` field on `landing/admin`; the document goes with its last carried row.',
650
670
  owningStep: 'uploads-and-media',
651
- dependsOn: [A.verifyAwardDefinitions, A.verifyUserProfiles, A.verifyPublicUsers, A.verifyV1Pictures],
671
+ dependsOn: [
672
+ A.verifyAwardDefinitions,
673
+ A.verifyUserProfiles,
674
+ A.verifyPublicUsers,
675
+ A.verifyV1Pictures,
676
+ ],
652
677
  resumeKey: SINGLE_DOCUMENT,
653
678
  }),
654
679
  deleteStep(A.deleteV1Users, {
@@ -702,7 +727,11 @@ export const MIGRATION_CUTOVER_MANIFEST = [
702
727
  title: 'Revoke the V1 signature download links',
703
728
  summary: 'Each kept signature file loses the download token V1’s stored links carry, so those links stop resolving.',
704
729
  owningStep: 'uploads-and-media',
705
- dependsOn: [A.verifySignedWaivers, A.verifyHardwareLoanContracts, A.verifySignatureFilesResolvable],
730
+ dependsOn: [
731
+ A.verifySignedWaivers,
732
+ A.verifyHardwareLoanContracts,
733
+ A.verifySignatureFilesResolvable,
734
+ ],
706
735
  orderedAfter: [],
707
736
  },
708
737
  deleteStep(A.deleteV1WaiverSignatures, {
@@ -730,7 +759,13 @@ export const MIGRATION_CUTOVER_MANIFEST = [
730
759
  title: 'Delete the V1 games',
731
760
  summary: 'The `leagueGames` documents; a game still holding its roster is reported and kept.',
732
761
  owningStep: 'stat-data-model',
733
- dependsOn: [A.verifySportGames, A.verifyGameStats, A.verifyGameRosterPlayers, A.validateStats, A.deleteV1GameRosters],
762
+ dependsOn: [
763
+ A.verifySportGames,
764
+ A.verifyGameStats,
765
+ A.verifyGameRosterPlayers,
766
+ A.validateStats,
767
+ A.deleteV1GameRosters,
768
+ ],
734
769
  }),
735
770
  deleteStep(A.deleteV1LeagueChats, {
736
771
  title: 'Delete the V1 league chats',