cfb-stats-mcp 0.1.0 → 1.0.0

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 (435) hide show
  1. package/dist/exports.d.ts.map +1 -1
  2. package/dist/exports.js +90 -0
  3. package/dist/exports.js.map +1 -1
  4. package/dist/formatters/adjusted-player-formatter.d.ts +8 -0
  5. package/dist/formatters/adjusted-player-formatter.d.ts.map +1 -0
  6. package/dist/formatters/adjusted-player-formatter.js +53 -0
  7. package/dist/formatters/adjusted-player-formatter.js.map +1 -0
  8. package/dist/formatters/adjusted-team-stats-formatter.d.ts +7 -0
  9. package/dist/formatters/adjusted-team-stats-formatter.d.ts.map +1 -0
  10. package/dist/formatters/adjusted-team-stats-formatter.js +82 -0
  11. package/dist/formatters/adjusted-team-stats-formatter.js.map +1 -0
  12. package/dist/formatters/betting-lines-formatter.d.ts +3 -0
  13. package/dist/formatters/betting-lines-formatter.d.ts.map +1 -0
  14. package/dist/formatters/betting-lines-formatter.js +34 -0
  15. package/dist/formatters/betting-lines-formatter.js.map +1 -0
  16. package/dist/formatters/calendar-formatter.d.ts +3 -0
  17. package/dist/formatters/calendar-formatter.d.ts.map +1 -0
  18. package/dist/formatters/calendar-formatter.js +21 -0
  19. package/dist/formatters/calendar-formatter.js.map +1 -0
  20. package/dist/formatters/coaches-formatter.d.ts +3 -0
  21. package/dist/formatters/coaches-formatter.d.ts.map +1 -0
  22. package/dist/formatters/coaches-formatter.js +57 -0
  23. package/dist/formatters/coaches-formatter.js.map +1 -0
  24. package/dist/formatters/conferences-formatter.d.ts +3 -0
  25. package/dist/formatters/conferences-formatter.d.ts.map +1 -0
  26. package/dist/formatters/conferences-formatter.js +41 -0
  27. package/dist/formatters/conferences-formatter.js.map +1 -0
  28. package/dist/formatters/draft-picks-formatter.d.ts +3 -0
  29. package/dist/formatters/draft-picks-formatter.d.ts.map +1 -0
  30. package/dist/formatters/draft-picks-formatter.js +27 -0
  31. package/dist/formatters/draft-picks-formatter.js.map +1 -0
  32. package/dist/formatters/drives-formatter.d.ts +3 -0
  33. package/dist/formatters/drives-formatter.d.ts.map +1 -0
  34. package/dist/formatters/drives-formatter.js +31 -0
  35. package/dist/formatters/drives-formatter.js.map +1 -0
  36. package/dist/formatters/elo-formatter.d.ts +3 -0
  37. package/dist/formatters/elo-formatter.d.ts.map +1 -0
  38. package/dist/formatters/elo-formatter.js +34 -0
  39. package/dist/formatters/elo-formatter.js.map +1 -0
  40. package/dist/formatters/fg-expected-points-formatter.d.ts +3 -0
  41. package/dist/formatters/fg-expected-points-formatter.d.ts.map +1 -0
  42. package/dist/formatters/fg-expected-points-formatter.js +28 -0
  43. package/dist/formatters/fg-expected-points-formatter.js.map +1 -0
  44. package/dist/formatters/fpi-formatter.d.ts +3 -0
  45. package/dist/formatters/fpi-formatter.d.ts.map +1 -0
  46. package/dist/formatters/fpi-formatter.js +73 -0
  47. package/dist/formatters/fpi-formatter.js.map +1 -0
  48. package/dist/formatters/game-havoc-formatter.d.ts +8 -0
  49. package/dist/formatters/game-havoc-formatter.d.ts.map +1 -0
  50. package/dist/formatters/game-havoc-formatter.js +64 -0
  51. package/dist/formatters/game-havoc-formatter.js.map +1 -0
  52. package/dist/formatters/game-media-formatter.d.ts +9 -0
  53. package/dist/formatters/game-media-formatter.d.ts.map +1 -0
  54. package/dist/formatters/game-media-formatter.js +43 -0
  55. package/dist/formatters/game-media-formatter.js.map +1 -0
  56. package/dist/formatters/game-player-stats-formatter.d.ts +3 -0
  57. package/dist/formatters/game-player-stats-formatter.d.ts.map +1 -0
  58. package/dist/formatters/game-player-stats-formatter.js +24 -0
  59. package/dist/formatters/game-player-stats-formatter.js.map +1 -0
  60. package/dist/formatters/game-ppa-formatter.d.ts +3 -0
  61. package/dist/formatters/game-ppa-formatter.d.ts.map +1 -0
  62. package/dist/formatters/game-ppa-formatter.js +26 -0
  63. package/dist/formatters/game-ppa-formatter.js.map +1 -0
  64. package/dist/formatters/game-weather-formatter.d.ts +3 -0
  65. package/dist/formatters/game-weather-formatter.d.ts.map +1 -0
  66. package/dist/formatters/game-weather-formatter.js +36 -0
  67. package/dist/formatters/game-weather-formatter.js.map +1 -0
  68. package/dist/formatters/kicker-paar-formatter.d.ts +7 -0
  69. package/dist/formatters/kicker-paar-formatter.d.ts.map +1 -0
  70. package/dist/formatters/kicker-paar-formatter.js +48 -0
  71. package/dist/formatters/kicker-paar-formatter.js.map +1 -0
  72. package/dist/formatters/live-plays-formatter.d.ts +3 -0
  73. package/dist/formatters/live-plays-formatter.d.ts.map +1 -0
  74. package/dist/formatters/live-plays-formatter.js +62 -0
  75. package/dist/formatters/live-plays-formatter.js.map +1 -0
  76. package/dist/formatters/play-stats-formatter.d.ts +3 -0
  77. package/dist/formatters/play-stats-formatter.d.ts.map +1 -0
  78. package/dist/formatters/play-stats-formatter.js +45 -0
  79. package/dist/formatters/play-stats-formatter.js.map +1 -0
  80. package/dist/formatters/play-types-formatter.d.ts +3 -0
  81. package/dist/formatters/play-types-formatter.d.ts.map +1 -0
  82. package/dist/formatters/play-types-formatter.js +28 -0
  83. package/dist/formatters/play-types-formatter.js.map +1 -0
  84. package/dist/formatters/player-ppa-game-formatter.d.ts +3 -0
  85. package/dist/formatters/player-ppa-game-formatter.d.ts.map +1 -0
  86. package/dist/formatters/player-ppa-game-formatter.js +54 -0
  87. package/dist/formatters/player-ppa-game-formatter.js.map +1 -0
  88. package/dist/formatters/player-ppa-season-formatter.d.ts +3 -0
  89. package/dist/formatters/player-ppa-season-formatter.d.ts.map +1 -0
  90. package/dist/formatters/player-ppa-season-formatter.js +28 -0
  91. package/dist/formatters/player-ppa-season-formatter.js.map +1 -0
  92. package/dist/formatters/player-search-formatter.d.ts +3 -0
  93. package/dist/formatters/player-search-formatter.d.ts.map +1 -0
  94. package/dist/formatters/player-search-formatter.js +33 -0
  95. package/dist/formatters/player-search-formatter.js.map +1 -0
  96. package/dist/formatters/player-season-stats-formatter.d.ts +9 -0
  97. package/dist/formatters/player-season-stats-formatter.d.ts.map +1 -0
  98. package/dist/formatters/player-season-stats-formatter.js +67 -0
  99. package/dist/formatters/player-season-stats-formatter.js.map +1 -0
  100. package/dist/formatters/player-usage-formatter.d.ts +3 -0
  101. package/dist/formatters/player-usage-formatter.d.ts.map +1 -0
  102. package/dist/formatters/player-usage-formatter.js +27 -0
  103. package/dist/formatters/player-usage-formatter.js.map +1 -0
  104. package/dist/formatters/plays-formatter.d.ts +3 -0
  105. package/dist/formatters/plays-formatter.d.ts.map +1 -0
  106. package/dist/formatters/plays-formatter.js +37 -0
  107. package/dist/formatters/plays-formatter.js.map +1 -0
  108. package/dist/formatters/predicted-points-formatter.d.ts +3 -0
  109. package/dist/formatters/predicted-points-formatter.d.ts.map +1 -0
  110. package/dist/formatters/predicted-points-formatter.js +26 -0
  111. package/dist/formatters/predicted-points-formatter.js.map +1 -0
  112. package/dist/formatters/pregame-win-prob-formatter.d.ts +3 -0
  113. package/dist/formatters/pregame-win-prob-formatter.d.ts.map +1 -0
  114. package/dist/formatters/pregame-win-prob-formatter.js +40 -0
  115. package/dist/formatters/pregame-win-prob-formatter.js.map +1 -0
  116. package/dist/formatters/rankings-formatter.d.ts +3 -0
  117. package/dist/formatters/rankings-formatter.d.ts.map +1 -0
  118. package/dist/formatters/rankings-formatter.js +67 -0
  119. package/dist/formatters/rankings-formatter.js.map +1 -0
  120. package/dist/formatters/recruiting-groups-formatter.d.ts +3 -0
  121. package/dist/formatters/recruiting-groups-formatter.d.ts.map +1 -0
  122. package/dist/formatters/recruiting-groups-formatter.js +29 -0
  123. package/dist/formatters/recruiting-groups-formatter.js.map +1 -0
  124. package/dist/formatters/recruits-formatter.d.ts +3 -0
  125. package/dist/formatters/recruits-formatter.d.ts.map +1 -0
  126. package/dist/formatters/recruits-formatter.js +20 -0
  127. package/dist/formatters/recruits-formatter.js.map +1 -0
  128. package/dist/formatters/returning-production-formatter.d.ts +3 -0
  129. package/dist/formatters/returning-production-formatter.d.ts.map +1 -0
  130. package/dist/formatters/returning-production-formatter.js +63 -0
  131. package/dist/formatters/returning-production-formatter.js.map +1 -0
  132. package/dist/formatters/roster-formatter.d.ts +3 -0
  133. package/dist/formatters/roster-formatter.d.ts.map +1 -0
  134. package/dist/formatters/roster-formatter.js +65 -0
  135. package/dist/formatters/roster-formatter.js.map +1 -0
  136. package/dist/formatters/scoreboard-formatter.d.ts +3 -0
  137. package/dist/formatters/scoreboard-formatter.d.ts.map +1 -0
  138. package/dist/formatters/scoreboard-formatter.js +81 -0
  139. package/dist/formatters/scoreboard-formatter.js.map +1 -0
  140. package/dist/formatters/season-advanced-formatter.d.ts +5 -0
  141. package/dist/formatters/season-advanced-formatter.d.ts.map +1 -1
  142. package/dist/formatters/season-advanced-formatter.js +91 -0
  143. package/dist/formatters/season-advanced-formatter.js.map +1 -1
  144. package/dist/formatters/season-stats-formatter.d.ts +8 -1
  145. package/dist/formatters/season-stats-formatter.d.ts.map +1 -1
  146. package/dist/formatters/season-stats-formatter.js +87 -4
  147. package/dist/formatters/season-stats-formatter.js.map +1 -1
  148. package/dist/formatters/season-stats-formatter.test.js +95 -12
  149. package/dist/formatters/season-stats-formatter.test.js.map +1 -1
  150. package/dist/formatters/srs-formatter.d.ts +3 -0
  151. package/dist/formatters/srs-formatter.d.ts.map +1 -0
  152. package/dist/formatters/srs-formatter.js +39 -0
  153. package/dist/formatters/srs-formatter.js.map +1 -0
  154. package/dist/formatters/stat-categories-formatter.d.ts +2 -0
  155. package/dist/formatters/stat-categories-formatter.d.ts.map +1 -0
  156. package/dist/formatters/stat-categories-formatter.js +13 -0
  157. package/dist/formatters/stat-categories-formatter.js.map +1 -0
  158. package/dist/formatters/team-ppa-formatter.d.ts +3 -0
  159. package/dist/formatters/team-ppa-formatter.d.ts.map +1 -0
  160. package/dist/formatters/team-ppa-formatter.js +82 -0
  161. package/dist/formatters/team-ppa-formatter.js.map +1 -0
  162. package/dist/formatters/team-recruiting-rankings-formatter.d.ts +3 -0
  163. package/dist/formatters/team-recruiting-rankings-formatter.d.ts.map +1 -0
  164. package/dist/formatters/team-recruiting-rankings-formatter.js +28 -0
  165. package/dist/formatters/team-recruiting-rankings-formatter.js.map +1 -0
  166. package/dist/formatters/team-talent-formatter.d.ts +3 -0
  167. package/dist/formatters/team-talent-formatter.d.ts.map +1 -0
  168. package/dist/formatters/team-talent-formatter.js +31 -0
  169. package/dist/formatters/team-talent-formatter.js.map +1 -0
  170. package/dist/formatters/teams-ats-formatter.d.ts +3 -0
  171. package/dist/formatters/teams-ats-formatter.d.ts.map +1 -0
  172. package/dist/formatters/teams-ats-formatter.js +60 -0
  173. package/dist/formatters/teams-ats-formatter.js.map +1 -0
  174. package/dist/formatters/teams-formatter.d.ts +3 -0
  175. package/dist/formatters/teams-formatter.d.ts.map +1 -0
  176. package/dist/formatters/teams-formatter.js +42 -0
  177. package/dist/formatters/teams-formatter.js.map +1 -0
  178. package/dist/formatters/transfer-portal-formatter.d.ts +3 -0
  179. package/dist/formatters/transfer-portal-formatter.d.ts.map +1 -0
  180. package/dist/formatters/transfer-portal-formatter.js +56 -0
  181. package/dist/formatters/transfer-portal-formatter.js.map +1 -0
  182. package/dist/formatters/venues-formatter.d.ts +3 -0
  183. package/dist/formatters/venues-formatter.d.ts.map +1 -0
  184. package/dist/formatters/venues-formatter.js +31 -0
  185. package/dist/formatters/venues-formatter.js.map +1 -0
  186. package/dist/formatters/win-probability-formatter.d.ts +3 -0
  187. package/dist/formatters/win-probability-formatter.d.ts.map +1 -0
  188. package/dist/formatters/win-probability-formatter.js +32 -0
  189. package/dist/formatters/win-probability-formatter.js.map +1 -0
  190. package/dist/tools/adjusted-passing.d.ts +3 -0
  191. package/dist/tools/adjusted-passing.d.ts.map +1 -0
  192. package/dist/tools/adjusted-passing.js +79 -0
  193. package/dist/tools/adjusted-passing.js.map +1 -0
  194. package/dist/tools/adjusted-rushing.d.ts +3 -0
  195. package/dist/tools/adjusted-rushing.d.ts.map +1 -0
  196. package/dist/tools/adjusted-rushing.js +79 -0
  197. package/dist/tools/adjusted-rushing.js.map +1 -0
  198. package/dist/tools/adjusted-team-stats.d.ts +3 -0
  199. package/dist/tools/adjusted-team-stats.d.ts.map +1 -0
  200. package/dist/tools/adjusted-team-stats.js +70 -0
  201. package/dist/tools/adjusted-team-stats.js.map +1 -0
  202. package/dist/tools/betting-lines.d.ts +3 -0
  203. package/dist/tools/betting-lines.d.ts.map +1 -0
  204. package/dist/tools/betting-lines.js +88 -0
  205. package/dist/tools/betting-lines.js.map +1 -0
  206. package/dist/tools/box-score.d.ts.map +1 -1
  207. package/dist/tools/box-score.js +8 -3
  208. package/dist/tools/box-score.js.map +1 -1
  209. package/dist/tools/calendar.d.ts +3 -0
  210. package/dist/tools/calendar.d.ts.map +1 -0
  211. package/dist/tools/calendar.js +42 -0
  212. package/dist/tools/calendar.js.map +1 -0
  213. package/dist/tools/coaches.d.ts +3 -0
  214. package/dist/tools/coaches.d.ts.map +1 -0
  215. package/dist/tools/coaches.js +68 -0
  216. package/dist/tools/coaches.js.map +1 -0
  217. package/dist/tools/conferences.d.ts +3 -0
  218. package/dist/tools/conferences.d.ts.map +1 -0
  219. package/dist/tools/conferences.js +32 -0
  220. package/dist/tools/conferences.js.map +1 -0
  221. package/dist/tools/draft-picks.d.ts +3 -0
  222. package/dist/tools/draft-picks.d.ts.map +1 -0
  223. package/dist/tools/draft-picks.js +73 -0
  224. package/dist/tools/draft-picks.js.map +1 -0
  225. package/dist/tools/drives.d.ts +3 -0
  226. package/dist/tools/drives.d.ts.map +1 -0
  227. package/dist/tools/drives.js +85 -0
  228. package/dist/tools/drives.js.map +1 -0
  229. package/dist/tools/elo.d.ts +3 -0
  230. package/dist/tools/elo.d.ts.map +1 -0
  231. package/dist/tools/elo.js +77 -0
  232. package/dist/tools/elo.js.map +1 -0
  233. package/dist/tools/fg-expected-points.d.ts +3 -0
  234. package/dist/tools/fg-expected-points.d.ts.map +1 -0
  235. package/dist/tools/fg-expected-points.js +36 -0
  236. package/dist/tools/fg-expected-points.js.map +1 -0
  237. package/dist/tools/fpi.d.ts +3 -0
  238. package/dist/tools/fpi.d.ts.map +1 -0
  239. package/dist/tools/fpi.js +65 -0
  240. package/dist/tools/fpi.js.map +1 -0
  241. package/dist/tools/game-havoc.d.ts +3 -0
  242. package/dist/tools/game-havoc.d.ts.map +1 -0
  243. package/dist/tools/game-havoc.js +76 -0
  244. package/dist/tools/game-havoc.js.map +1 -0
  245. package/dist/tools/game-media.d.ts +3 -0
  246. package/dist/tools/game-media.d.ts.map +1 -0
  247. package/dist/tools/game-media.js +66 -0
  248. package/dist/tools/game-media.js.map +1 -0
  249. package/dist/tools/game-player-stats.d.ts +3 -0
  250. package/dist/tools/game-player-stats.d.ts.map +1 -0
  251. package/dist/tools/game-player-stats.js +97 -0
  252. package/dist/tools/game-player-stats.js.map +1 -0
  253. package/dist/tools/game-ppa.d.ts +3 -0
  254. package/dist/tools/game-ppa.d.ts.map +1 -0
  255. package/dist/tools/game-ppa.js +68 -0
  256. package/dist/tools/game-ppa.js.map +1 -0
  257. package/dist/tools/game-weather.d.ts +3 -0
  258. package/dist/tools/game-weather.d.ts.map +1 -0
  259. package/dist/tools/game-weather.js +70 -0
  260. package/dist/tools/game-weather.js.map +1 -0
  261. package/dist/tools/kicker-paar.d.ts +3 -0
  262. package/dist/tools/kicker-paar.d.ts.map +1 -0
  263. package/dist/tools/kicker-paar.js +70 -0
  264. package/dist/tools/kicker-paar.js.map +1 -0
  265. package/dist/tools/live-plays.d.ts +3 -0
  266. package/dist/tools/live-plays.d.ts.map +1 -0
  267. package/dist/tools/live-plays.js +41 -0
  268. package/dist/tools/live-plays.js.map +1 -0
  269. package/dist/tools/play-stats.d.ts +3 -0
  270. package/dist/tools/play-stats.d.ts.map +1 -0
  271. package/dist/tools/play-stats.js +82 -0
  272. package/dist/tools/play-stats.js.map +1 -0
  273. package/dist/tools/play-types.d.ts +3 -0
  274. package/dist/tools/play-types.d.ts.map +1 -0
  275. package/dist/tools/play-types.js +32 -0
  276. package/dist/tools/play-types.js.map +1 -0
  277. package/dist/tools/player-ppa-game.d.ts +3 -0
  278. package/dist/tools/player-ppa-game.d.ts.map +1 -0
  279. package/dist/tools/player-ppa-game.js +100 -0
  280. package/dist/tools/player-ppa-game.js.map +1 -0
  281. package/dist/tools/player-ppa-season.d.ts +3 -0
  282. package/dist/tools/player-ppa-season.d.ts.map +1 -0
  283. package/dist/tools/player-ppa-season.js +94 -0
  284. package/dist/tools/player-ppa-season.js.map +1 -0
  285. package/dist/tools/player-search.d.ts +3 -0
  286. package/dist/tools/player-search.d.ts.map +1 -0
  287. package/dist/tools/player-search.js +74 -0
  288. package/dist/tools/player-search.js.map +1 -0
  289. package/dist/tools/player-season-stats.d.ts +3 -0
  290. package/dist/tools/player-season-stats.d.ts.map +1 -0
  291. package/dist/tools/player-season-stats.js +97 -0
  292. package/dist/tools/player-season-stats.js.map +1 -0
  293. package/dist/tools/player-usage.d.ts +3 -0
  294. package/dist/tools/player-usage.d.ts.map +1 -0
  295. package/dist/tools/player-usage.js +87 -0
  296. package/dist/tools/player-usage.js.map +1 -0
  297. package/dist/tools/plays.d.ts +3 -0
  298. package/dist/tools/plays.d.ts.map +1 -0
  299. package/dist/tools/plays.js +87 -0
  300. package/dist/tools/plays.js.map +1 -0
  301. package/dist/tools/predicted-points.d.ts +3 -0
  302. package/dist/tools/predicted-points.d.ts.map +1 -0
  303. package/dist/tools/predicted-points.js +50 -0
  304. package/dist/tools/predicted-points.js.map +1 -0
  305. package/dist/tools/pregame-win-prob.d.ts +3 -0
  306. package/dist/tools/pregame-win-prob.d.ts.map +1 -0
  307. package/dist/tools/pregame-win-prob.js +65 -0
  308. package/dist/tools/pregame-win-prob.js.map +1 -0
  309. package/dist/tools/rankings.d.ts +3 -0
  310. package/dist/tools/rankings.d.ts.map +1 -0
  311. package/dist/tools/rankings.js +62 -0
  312. package/dist/tools/rankings.js.map +1 -0
  313. package/dist/tools/recruiting-groups.d.ts +3 -0
  314. package/dist/tools/recruiting-groups.d.ts.map +1 -0
  315. package/dist/tools/recruiting-groups.js +77 -0
  316. package/dist/tools/recruiting-groups.js.map +1 -0
  317. package/dist/tools/recruits.d.ts +3 -0
  318. package/dist/tools/recruits.d.ts.map +1 -0
  319. package/dist/tools/recruits.js +72 -0
  320. package/dist/tools/recruits.js.map +1 -0
  321. package/dist/tools/returning-production.d.ts +3 -0
  322. package/dist/tools/returning-production.d.ts.map +1 -0
  323. package/dist/tools/returning-production.js +68 -0
  324. package/dist/tools/returning-production.js.map +1 -0
  325. package/dist/tools/roster.d.ts +3 -0
  326. package/dist/tools/roster.d.ts.map +1 -0
  327. package/dist/tools/roster.js +59 -0
  328. package/dist/tools/roster.js.map +1 -0
  329. package/dist/tools/scoreboard.d.ts +3 -0
  330. package/dist/tools/scoreboard.d.ts.map +1 -0
  331. package/dist/tools/scoreboard.js +53 -0
  332. package/dist/tools/scoreboard.js.map +1 -0
  333. package/dist/tools/season-advanced.d.ts.map +1 -1
  334. package/dist/tools/season-advanced.js +60 -17
  335. package/dist/tools/season-advanced.js.map +1 -1
  336. package/dist/tools/season-stats.d.ts.map +1 -1
  337. package/dist/tools/season-stats.js +32 -7
  338. package/dist/tools/season-stats.js.map +1 -1
  339. package/dist/tools/srs.d.ts +3 -0
  340. package/dist/tools/srs.d.ts.map +1 -0
  341. package/dist/tools/srs.js +65 -0
  342. package/dist/tools/srs.js.map +1 -0
  343. package/dist/tools/stat-categories.d.ts +3 -0
  344. package/dist/tools/stat-categories.d.ts.map +1 -0
  345. package/dist/tools/stat-categories.js +32 -0
  346. package/dist/tools/stat-categories.js.map +1 -0
  347. package/dist/tools/team-ppa.d.ts +3 -0
  348. package/dist/tools/team-ppa.d.ts.map +1 -0
  349. package/dist/tools/team-ppa.js +66 -0
  350. package/dist/tools/team-ppa.js.map +1 -0
  351. package/dist/tools/team-recruiting-rankings.d.ts +3 -0
  352. package/dist/tools/team-recruiting-rankings.d.ts.map +1 -0
  353. package/dist/tools/team-recruiting-rankings.js +53 -0
  354. package/dist/tools/team-recruiting-rankings.js.map +1 -0
  355. package/dist/tools/team-talent.d.ts +3 -0
  356. package/dist/tools/team-talent.d.ts.map +1 -0
  357. package/dist/tools/team-talent.js +42 -0
  358. package/dist/tools/team-talent.js.map +1 -0
  359. package/dist/tools/teams-ats.d.ts +3 -0
  360. package/dist/tools/teams-ats.d.ts.map +1 -0
  361. package/dist/tools/teams-ats.js +56 -0
  362. package/dist/tools/teams-ats.js.map +1 -0
  363. package/dist/tools/teams.d.ts +3 -0
  364. package/dist/tools/teams.d.ts.map +1 -0
  365. package/dist/tools/teams.js +66 -0
  366. package/dist/tools/teams.js.map +1 -0
  367. package/dist/tools/transfer-portal.d.ts +3 -0
  368. package/dist/tools/transfer-portal.d.ts.map +1 -0
  369. package/dist/tools/transfer-portal.js +42 -0
  370. package/dist/tools/transfer-portal.js.map +1 -0
  371. package/dist/tools/venues.d.ts +3 -0
  372. package/dist/tools/venues.d.ts.map +1 -0
  373. package/dist/tools/venues.js +32 -0
  374. package/dist/tools/venues.js.map +1 -0
  375. package/dist/tools/win-probability.d.ts +3 -0
  376. package/dist/tools/win-probability.d.ts.map +1 -0
  377. package/dist/tools/win-probability.js +44 -0
  378. package/dist/tools/win-probability.js.map +1 -0
  379. package/package.json +1 -1
  380. package/dist/prompts.d.ts +0 -3
  381. package/dist/prompts.d.ts.map +0 -1
  382. package/dist/prompts.js +0 -242
  383. package/dist/prompts.js.map +0 -1
  384. package/dist/tools/export-subtitles.d.ts +0 -23
  385. package/dist/tools/export-subtitles.d.ts.map +0 -1
  386. package/dist/tools/export-subtitles.js +0 -102
  387. package/dist/tools/export-subtitles.js.map +0 -1
  388. package/dist/tools/export-subtitles.test.d.ts +0 -2
  389. package/dist/tools/export-subtitles.test.d.ts.map +0 -1
  390. package/dist/tools/export-subtitles.test.js +0 -152
  391. package/dist/tools/export-subtitles.test.js.map +0 -1
  392. package/dist/tools/read-transcript.d.ts +0 -9
  393. package/dist/tools/read-transcript.d.ts.map +0 -1
  394. package/dist/tools/read-transcript.js +0 -72
  395. package/dist/tools/read-transcript.js.map +0 -1
  396. package/dist/tools/read-transcript.test.d.ts +0 -2
  397. package/dist/tools/read-transcript.test.d.ts.map +0 -1
  398. package/dist/tools/read-transcript.test.js +0 -94
  399. package/dist/tools/read-transcript.test.js.map +0 -1
  400. package/dist/tools/transcript-types.d.ts +0 -36
  401. package/dist/tools/transcript-types.d.ts.map +0 -1
  402. package/dist/tools/transcript-types.js +0 -2
  403. package/dist/tools/transcript-types.js.map +0 -1
  404. package/dist/tools/write-chapters.d.ts +0 -40
  405. package/dist/tools/write-chapters.d.ts.map +0 -1
  406. package/dist/tools/write-chapters.js +0 -143
  407. package/dist/tools/write-chapters.js.map +0 -1
  408. package/dist/tools/write-chapters.test.d.ts +0 -2
  409. package/dist/tools/write-chapters.test.d.ts.map +0 -1
  410. package/dist/tools/write-chapters.test.js +0 -167
  411. package/dist/tools/write-chapters.test.js.map +0 -1
  412. package/dist/tools/write-clip-candidates.d.ts +0 -30
  413. package/dist/tools/write-clip-candidates.d.ts.map +0 -1
  414. package/dist/tools/write-clip-candidates.js +0 -130
  415. package/dist/tools/write-clip-candidates.js.map +0 -1
  416. package/dist/tools/write-clip-candidates.test.d.ts +0 -2
  417. package/dist/tools/write-clip-candidates.test.d.ts.map +0 -1
  418. package/dist/tools/write-clip-candidates.test.js +0 -213
  419. package/dist/tools/write-clip-candidates.test.js.map +0 -1
  420. package/dist/tools/write-description.d.ts +0 -11
  421. package/dist/tools/write-description.d.ts.map +0 -1
  422. package/dist/tools/write-description.js +0 -71
  423. package/dist/tools/write-description.js.map +0 -1
  424. package/dist/tools/write-description.test.d.ts +0 -2
  425. package/dist/tools/write-description.test.d.ts.map +0 -1
  426. package/dist/tools/write-description.test.js +0 -42
  427. package/dist/tools/write-description.test.js.map +0 -1
  428. package/dist/tools/write-transcript.d.ts +0 -20
  429. package/dist/tools/write-transcript.d.ts.map +0 -1
  430. package/dist/tools/write-transcript.js +0 -133
  431. package/dist/tools/write-transcript.js.map +0 -1
  432. package/dist/tools/write-transcript.test.d.ts +0 -2
  433. package/dist/tools/write-transcript.test.d.ts.map +0 -1
  434. package/dist/tools/write-transcript.test.js +0 -133
  435. package/dist/tools/write-transcript.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAcnD"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4DzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2DnD"}
package/dist/exports.js CHANGED
@@ -1,16 +1,61 @@
1
1
  import { initCfbdClient } from "./cfbd-client.js";
2
+ import { registerAdjustedPassingTool } from "./tools/adjusted-passing.js";
3
+ import { registerAdjustedRushingTool } from "./tools/adjusted-rushing.js";
4
+ import { registerAdjustedTeamStatsTool } from "./tools/adjusted-team-stats.js";
2
5
  import { registerAdvancedStatsTool } from "./tools/advanced-stats.js";
3
6
  import { registerBoxScoreTool } from "./tools/box-score.js";
4
7
  import { registerBuildGlossaryTool } from "./tools/build-glossary.js";
8
+ import { registerCalendarTool } from "./tools/calendar.js";
9
+ import { registerCoachesTool } from "./tools/coaches.js";
5
10
  import { registerConferenceRatingsTool } from "./tools/conference-ratings.js";
11
+ import { registerConferencesTool } from "./tools/conferences.js";
12
+ import { registerDraftPicksTool } from "./tools/draft-picks.js";
13
+ import { registerDrivesTool } from "./tools/drives.js";
14
+ import { registerEloTool } from "./tools/elo.js";
15
+ import { registerFgExpectedPointsTool } from "./tools/fg-expected-points.js";
16
+ import { registerFpiTool } from "./tools/fpi.js";
17
+ import { registerGameHavocTool } from "./tools/game-havoc.js";
18
+ import { registerGameMediaTool } from "./tools/game-media.js";
19
+ import { registerGamePlayerStatsTool } from "./tools/game-player-stats.js";
20
+ import { registerGamePpaTool } from "./tools/game-ppa.js";
21
+ import { registerGameWeatherTool } from "./tools/game-weather.js";
6
22
  import { registerGamesTool } from "./tools/games.js";
7
23
  import { registerHeadToHeadTool } from "./tools/head-to-head.js";
24
+ import { registerKickerPaarTool } from "./tools/kicker-paar.js";
25
+ import { registerLinesTool } from "./tools/betting-lines.js";
26
+ import { registerLivePlaysTool } from "./tools/live-plays.js";
27
+ import { registerPlayerPpaGameTool } from "./tools/player-ppa-game.js";
28
+ import { registerPlayerPpaSeasonTool } from "./tools/player-ppa-season.js";
29
+ import { registerPlayerSearchTool } from "./tools/player-search.js";
30
+ import { registerPlayerSeasonStatsTool } from "./tools/player-season-stats.js";
31
+ import { registerPlayerUsageTool } from "./tools/player-usage.js";
32
+ import { registerPlayStatsTool } from "./tools/play-stats.js";
33
+ import { registerPlaysTool } from "./tools/plays.js";
34
+ import { registerPlayTypesTool } from "./tools/play-types.js";
35
+ import { registerPredictedPointsTool } from "./tools/predicted-points.js";
36
+ import { registerPregameWinProbTool } from "./tools/pregame-win-prob.js";
37
+ import { registerRankingsTool } from "./tools/rankings.js";
8
38
  import { registerRatingsTool } from "./tools/ratings.js";
39
+ import { registerRecruitingGroupsTool } from "./tools/recruiting-groups.js";
40
+ import { registerRecruitsTool } from "./tools/recruits.js";
9
41
  import { registerResources } from "./resources.js";
42
+ import { registerReturningProductionTool } from "./tools/returning-production.js";
43
+ import { registerRosterTool } from "./tools/roster.js";
10
44
  import { registerSeasonAdvancedTool } from "./tools/season-advanced.js";
11
45
  import { registerSeasonRecordsTool } from "./tools/season-records.js";
12
46
  import { registerSeasonStatsTool } from "./tools/season-stats.js";
47
+ import { registerScoreboardTool } from "./tools/scoreboard.js";
48
+ import { registerSrsTool } from "./tools/srs.js";
49
+ import { registerStatCategoriesTool } from "./tools/stat-categories.js";
13
50
  import { registerStatusTool } from "./tools/status.js";
51
+ import { registerTeamRecruitingRankingsTool } from "./tools/team-recruiting-rankings.js";
52
+ import { registerTeamTalentTool } from "./tools/team-talent.js";
53
+ import { registerTeamPpaTool } from "./tools/team-ppa.js";
54
+ import { registerTeamsAtsTool } from "./tools/teams-ats.js";
55
+ import { registerTeamsTool } from "./tools/teams.js";
56
+ import { registerTransferPortalTool } from "./tools/transfer-portal.js";
57
+ import { registerVenuesTool } from "./tools/venues.js";
58
+ import { registerWinProbabilityTool } from "./tools/win-probability.js";
14
59
  /**
15
60
  * Register all cfb-stats-mcp tools and resources on the given server.
16
61
  * Calls initCfbdClient() first (non-fatal if CFBD_API_KEY is absent).
@@ -19,14 +64,59 @@ export function registerAll(server) {
19
64
  initCfbdClient();
20
65
  registerStatusTool(server);
21
66
  registerGamesTool(server);
67
+ registerGamePlayerStatsTool(server);
22
68
  registerBoxScoreTool(server);
69
+ registerCalendarTool(server);
23
70
  registerAdvancedStatsTool(server);
71
+ registerAdjustedPassingTool(server);
72
+ registerAdjustedRushingTool(server);
73
+ registerAdjustedTeamStatsTool(server);
74
+ registerKickerPaarTool(server);
75
+ registerGameHavocTool(server);
24
76
  registerSeasonRecordsTool(server);
25
77
  registerRatingsTool(server);
78
+ registerRankingsTool(server);
79
+ registerSrsTool(server);
80
+ registerEloTool(server);
81
+ registerFpiTool(server);
82
+ registerLinesTool(server);
83
+ registerPregameWinProbTool(server);
84
+ registerTeamsAtsTool(server);
85
+ registerDraftPicksTool(server);
26
86
  registerConferenceRatingsTool(server);
87
+ registerGameMediaTool(server);
88
+ registerGameWeatherTool(server);
27
89
  registerHeadToHeadTool(server);
90
+ registerDrivesTool(server);
91
+ registerPlaysTool(server);
92
+ registerPlayStatsTool(server);
93
+ registerCoachesTool(server);
94
+ registerPlayerPpaGameTool(server);
95
+ registerPlayerPpaSeasonTool(server);
96
+ registerPlayerSeasonStatsTool(server);
97
+ registerPlayerUsageTool(server);
28
98
  registerSeasonStatsTool(server);
29
99
  registerSeasonAdvancedTool(server);
100
+ registerPlayerSearchTool(server);
101
+ registerRosterTool(server);
102
+ registerReturningProductionTool(server);
103
+ registerRecruitsTool(server);
104
+ registerTeamRecruitingRankingsTool(server);
105
+ registerRecruitingGroupsTool(server);
106
+ registerWinProbabilityTool(server);
107
+ registerPredictedPointsTool(server);
108
+ registerTeamPpaTool(server);
109
+ registerGamePpaTool(server);
110
+ registerFgExpectedPointsTool(server);
111
+ registerScoreboardTool(server);
112
+ registerLivePlaysTool(server);
113
+ registerTeamsTool(server);
114
+ registerConferencesTool(server);
115
+ registerVenuesTool(server);
116
+ registerStatCategoriesTool(server);
117
+ registerPlayTypesTool(server);
118
+ registerTransferPortalTool(server);
119
+ registerTeamTalentTool(server);
30
120
  registerBuildGlossaryTool(server);
31
121
  registerResources(server);
32
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,cAAc,EAAE,CAAC;IACjB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PlayerWeightedEPA } from "cfbd";
2
+ export declare function formatAdjustedPlayerStats(stats: PlayerWeightedEPA[], label: string, filters: {
3
+ year?: number;
4
+ team?: string;
5
+ conference?: string;
6
+ position?: string;
7
+ }): string;
8
+ //# sourceMappingURL=adjusted-player-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjusted-player-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/adjusted-player-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAgD9C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,MAAM,CAoBR"}
@@ -0,0 +1,53 @@
1
+ const RANK_COL = 6;
2
+ const NAME_COL = 24;
3
+ const POS_COL = 6;
4
+ const TEAM_COL = 16;
5
+ const CONF_COL = 10;
6
+ const WEPA_COL = 10;
7
+ const PLAYS_COL = 8;
8
+ function header() {
9
+ return ("Rank".padEnd(RANK_COL) +
10
+ "Player".padEnd(NAME_COL) +
11
+ "Pos".padEnd(POS_COL) +
12
+ "Team".padEnd(TEAM_COL) +
13
+ "Conf".padEnd(CONF_COL) +
14
+ "WEPA".padStart(WEPA_COL) +
15
+ "Plays".padStart(PLAYS_COL));
16
+ }
17
+ function playerRow(p, rank) {
18
+ return (String(rank).padEnd(RANK_COL) +
19
+ (p.athleteName ?? "Unknown").padEnd(NAME_COL) +
20
+ (p.position ?? "--").padEnd(POS_COL) +
21
+ (p.team ?? "--").padEnd(TEAM_COL) +
22
+ (p.conference ?? "--").padEnd(CONF_COL) +
23
+ (p.wepa != null ? p.wepa.toFixed(3) : "--").padStart(WEPA_COL) +
24
+ (p.plays != null ? String(p.plays) : "--").padStart(PLAYS_COL));
25
+ }
26
+ function filterAnnotation(filters) {
27
+ const parts = [];
28
+ if (filters.year != null)
29
+ parts.push(String(filters.year));
30
+ if (filters.team != null)
31
+ parts.push(filters.team);
32
+ if (filters.conference != null)
33
+ parts.push(filters.conference);
34
+ if (filters.position != null)
35
+ parts.push(filters.position);
36
+ return parts.length > 0 ? ` (${parts.join(", ")})` : "";
37
+ }
38
+ export function formatAdjustedPlayerStats(stats, label, filters) {
39
+ if (stats.length === 0) {
40
+ return `No adjusted ${label.toLowerCase()} stats found for the given filters.`;
41
+ }
42
+ const sorted = [...stats].sort((a, b) => (b.wepa ?? 0) - (a.wepa ?? 0));
43
+ const title = `Adjusted ${label} Stats (WEPA)` + filterAnnotation(filters);
44
+ const separator = "\u2500".repeat(80);
45
+ return [
46
+ title,
47
+ separator,
48
+ header(),
49
+ separator,
50
+ ...sorted.map((p, i) => playerRow(p, i + 1)),
51
+ ].join("\n");
52
+ }
53
+ //# sourceMappingURL=adjusted-player-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjusted-player-formatter.js","sourceRoot":"","sources":["../../src/formatters/adjusted-player-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AdjustedTeamMetrics } from "cfbd";
2
+ export declare function formatAdjustedTeamStats(stats: AdjustedTeamMetrics[], filters: {
3
+ year?: number;
4
+ team?: string;
5
+ conference?: string;
6
+ }): string;
7
+ //# sourceMappingURL=adjusted-team-stats-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjusted-team-stats-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/adjusted-team-stats-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AA6FhD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,MAAM,CAeR"}
@@ -0,0 +1,82 @@
1
+ const LABEL_COL_WIDTH = 24;
2
+ const VALUE_COL_WIDTH = 10;
3
+ function val(v, decimals = 2) {
4
+ return v != null ? v.toFixed(decimals) : "\u2014";
5
+ }
6
+ function pct(v) {
7
+ return v != null ? (v * 100).toFixed(1) + "%" : "\u2014";
8
+ }
9
+ function row(label, value) {
10
+ return label.padEnd(LABEL_COL_WIDTH) + value.padStart(VALUE_COL_WIDTH);
11
+ }
12
+ const SEP = "\u2500".repeat(40);
13
+ function formatSingleTeam(stat) {
14
+ const header = `${stat.team} \u2014 ${stat.year} Opponent-Adjusted Stats`;
15
+ const sections = [header];
16
+ // EPA section
17
+ sections.push([
18
+ "EPA (Opponent-Adjusted)",
19
+ SEP,
20
+ " Offense",
21
+ " " + row("Total", val(stat.epa.total)),
22
+ " " + row("Passing", val(stat.epa.passing)),
23
+ " " + row("Rushing", val(stat.epa.rushing)),
24
+ " Defense",
25
+ " " + row("Total", val(stat.epaAllowed.total)),
26
+ " " + row("Passing", val(stat.epaAllowed.passing)),
27
+ " " + row("Rushing", val(stat.epaAllowed.rushing)),
28
+ ].join("\n"));
29
+ // Adjusted Success Rate
30
+ sections.push([
31
+ "Adjusted Success Rate",
32
+ SEP,
33
+ " Offense",
34
+ " " + row("Total", pct(stat.successRate.total)),
35
+ " " + row("Standard Downs", pct(stat.successRate.standardDowns)),
36
+ " " + row("Passing Downs", pct(stat.successRate.passingDowns)),
37
+ " Defense",
38
+ " " + row("Total", pct(stat.successRateAllowed.total)),
39
+ " " +
40
+ row("Standard Downs", pct(stat.successRateAllowed.standardDowns)),
41
+ " " +
42
+ row("Passing Downs", pct(stat.successRateAllowed.passingDowns)),
43
+ ].join("\n"));
44
+ // Adjusted Explosiveness
45
+ sections.push([
46
+ "Adjusted Explosiveness",
47
+ SEP,
48
+ row("Offense", val(stat.explosiveness)),
49
+ row("Defense", val(stat.explosivenessAllowed)),
50
+ ].join("\n"));
51
+ return sections.join("\n\n");
52
+ }
53
+ function formatMultiTeam(stats) {
54
+ const sorted = [...stats].sort((a, b) => (b.epa.total ?? 0) - (a.epa.total ?? 0));
55
+ const header = "Rank Team Conf Off EPA Def EPA Off Succ% Def Succ% Expl";
56
+ const sep = "\u2500".repeat(header.length);
57
+ const rows = sorted.map((s, i) => {
58
+ const rank = String(i + 1).padEnd(6);
59
+ const team = (s.team ?? "").padEnd(21);
60
+ const conf = (s.conference ?? "").padEnd(9);
61
+ const offEpa = val(s.epa.total).padStart(7);
62
+ const defEpa = val(s.epaAllowed.total).padStart(8);
63
+ const offSucc = pct(s.successRate.total).padStart(10);
64
+ const defSucc = pct(s.successRateAllowed.total).padStart(10);
65
+ const expl = val(s.explosiveness).padStart(6);
66
+ return `${rank}${team}${conf}${offEpa}${defEpa}${offSucc}${defSucc}${expl}`;
67
+ });
68
+ return [header, sep, ...rows].join("\n");
69
+ }
70
+ export function formatAdjustedTeamStats(stats, filters) {
71
+ if (stats.length === 0) {
72
+ return "No adjusted team stats found for the given filters.";
73
+ }
74
+ if (stats.length === 1 || filters.team) {
75
+ const stat = filters.team
76
+ ? stats.find((s) => s.team?.toLowerCase() === filters.team.toLowerCase()) ?? stats[0]
77
+ : stats[0];
78
+ return formatSingleTeam(stat);
79
+ }
80
+ return formatMultiTeam(stats);
81
+ }
82
+ //# sourceMappingURL=adjusted-team-stats-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjusted-team-stats-formatter.js","sourceRoot":"","sources":["../../src/formatters/adjusted-team-stats-formatter.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,SAAS,GAAG,CAAC,CAA4B,EAAE,QAAQ,GAAG,CAAC;IACrD,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,SAAS,GAAG,CAAC,CAA4B;IACvC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEhC,SAAS,gBAAgB,CAAC,IAAyB;IACjD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,0BAA0B,CAAC;IAC1E,MAAM,QAAQ,GAAa,CAAC,MAAM,CAAC,CAAC;IAEpC,cAAc;IACd,QAAQ,CAAC,IAAI,CACX;QACE,yBAAyB;QACzB,GAAG;QACH,WAAW;QACX,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,WAAW;QACX,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,wBAAwB;IACxB,QAAQ,CAAC,IAAI,CACX;QACE,uBAAuB;QACvB,GAAG;QACH,WAAW;QACX,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC/D,WAAW;QACX,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI;YACF,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI;YACF,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CACX;QACE,wBAAwB;QACxB,GAAG;QACH,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,KAA4B;IACnD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAClD,CAAC;IAEF,MAAM,MAAM,GACV,kFAAkF,CAAC;IACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAA4B,EAC5B,OAA8D;IAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;YACvB,CAAC,CAAC,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,IAAK,CAAC,WAAW,EAAE,CAC7D,IAAI,KAAK,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BettingGame } from "cfbd";
2
+ export declare function formatBettingLines(games: BettingGame[]): string;
3
+ //# sourceMappingURL=betting-lines-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"betting-lines-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/betting-lines-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,MAAM,CAAC;AAyClD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAM/D"}
@@ -0,0 +1,34 @@
1
+ function formatLine(line) {
2
+ const spread = line.formattedSpread || "\u2014";
3
+ const ou = line.overUnder != null ? String(line.overUnder) : "\u2014";
4
+ const homeMl = line.homeMoneyline != null ? String(line.homeMoneyline) : "\u2014";
5
+ const awayMl = line.awayMoneyline != null ? String(line.awayMoneyline) : "\u2014";
6
+ let spreadStr = spread;
7
+ if (line.spreadOpen != null &&
8
+ line.spread != null &&
9
+ line.spreadOpen !== line.spread) {
10
+ spreadStr = `${spread} (opened ${line.spreadOpen})`;
11
+ }
12
+ let ouStr = `O/U ${ou}`;
13
+ if (line.overUnderOpen != null &&
14
+ line.overUnder != null &&
15
+ line.overUnderOpen !== line.overUnder) {
16
+ ouStr = `O/U ${ou} (opened ${line.overUnderOpen})`;
17
+ }
18
+ return ` ${line.provider}: ${spreadStr} | ${ouStr} | ML: Home ${homeMl} / Away ${awayMl}`;
19
+ }
20
+ function formatGame(game) {
21
+ let header = `${game.awayTeam} at ${game.homeTeam} \u2014 Week ${game.week}, ${game.season}`;
22
+ if (game.awayScore != null && game.homeScore != null) {
23
+ header += ` (Final: ${game.awayScore}-${game.homeScore})`;
24
+ }
25
+ const lines = (game.lines ?? []).map(formatLine);
26
+ return [header, ...lines].join("\n");
27
+ }
28
+ export function formatBettingLines(games) {
29
+ if (games.length === 0) {
30
+ return "No betting lines found for the specified filters.";
31
+ }
32
+ return games.map(formatGame).join("\n\n");
33
+ }
34
+ //# sourceMappingURL=betting-lines-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"betting-lines-formatter.js","sourceRoot":"","sources":["../../src/formatters/betting-lines-formatter.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC;IAChD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtE,MAAM,MAAM,GACV,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,MAAM,MAAM,GACV,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAErE,IAAI,SAAS,GAAG,MAAM,CAAC;IACvB,IACE,IAAI,CAAC,UAAU,IAAI,IAAI;QACvB,IAAI,CAAC,MAAM,IAAI,IAAI;QACnB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAC/B,CAAC;QACD,SAAS,GAAG,GAAG,MAAM,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IACtD,CAAC;IAED,IAAI,KAAK,GAAG,OAAO,EAAE,EAAE,CAAC;IACxB,IACE,IAAI,CAAC,aAAa,IAAI,IAAI;QAC1B,IAAI,CAAC,SAAS,IAAI,IAAI;QACtB,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,SAAS,EACrC,CAAC;QACD,KAAK,GAAG,OAAO,EAAE,YAAY,IAAI,CAAC,aAAa,GAAG,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,MAAM,KAAK,eAAe,MAAM,WAAW,MAAM,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB;IACnC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,QAAQ,gBAAgB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7F,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QACrD,MAAM,IAAI,YAAY,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CalendarWeek } from "cfbd";
2
+ export declare function formatCalendar(weeks: CalendarWeek[], year: number): string;
3
+ //# sourceMappingURL=calendar-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/calendar-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AASzC,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAiBR"}
@@ -0,0 +1,21 @@
1
+ function formatMMDD(dateStr) {
2
+ const d = new Date(dateStr);
3
+ const month = d.getMonth() + 1;
4
+ const day = d.getDate();
5
+ return `${month}/${day}`;
6
+ }
7
+ export function formatCalendar(weeks, year) {
8
+ if (weeks.length === 0) {
9
+ return `No calendar data found for ${year}`;
10
+ }
11
+ const lines = [];
12
+ lines.push(`${year} Season Calendar`);
13
+ lines.push("\u2500".repeat(40));
14
+ for (const week of weeks) {
15
+ const start = formatMMDD(week.startDate);
16
+ const end = formatMMDD(week.endDate);
17
+ lines.push(`Week ${week.week} (${week.seasonType}): ${start} - ${end}`);
18
+ }
19
+ return lines.join("\n");
20
+ }
21
+ //# sourceMappingURL=calendar-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-formatter.js","sourceRoot":"","sources":["../../src/formatters/calendar-formatter.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACxB,OAAO,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAqB,EACrB,IAAY;IAEZ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,8BAA8B,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Coach } from "cfbd";
2
+ export declare function formatCoaches(coaches: Coach[]): string;
3
+ //# sourceMappingURL=coaches-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coaches-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/coaches-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,MAAM,CAAC;AAE/C,wBAAgB,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAkCtD"}
@@ -0,0 +1,57 @@
1
+ export function formatCoaches(coaches) {
2
+ if (coaches.length === 0) {
3
+ return "No coaching records found for the given filters.";
4
+ }
5
+ const blocks = [];
6
+ for (const coach of coaches) {
7
+ const lines = [];
8
+ const nameHeader = coach.hireDate
9
+ ? `${coach.firstName} ${coach.lastName} (hired ${coach.hireDate})`
10
+ : `${coach.firstName} ${coach.lastName}`;
11
+ lines.push(nameHeader);
12
+ lines.push("\u2500".repeat(40));
13
+ const career = careerTotals(coach.seasons);
14
+ const winPct = career.games > 0 ? (career.wins / career.games).toFixed(3) : ".000";
15
+ const tiesSuffix = career.ties > 0 ? `-${career.ties}` : "";
16
+ lines.push(`Career: ${career.wins}-${career.losses}${tiesSuffix} (${winPct})`);
17
+ lines.push("");
18
+ const sorted = [...coach.seasons].sort((a, b) => a.year - b.year);
19
+ for (const s of sorted) {
20
+ lines.push(formatSeason(s));
21
+ }
22
+ blocks.push(lines.join("\n"));
23
+ }
24
+ return blocks.join("\n\n" + "\u2501".repeat(40) + "\n\n");
25
+ }
26
+ function careerTotals(seasons) {
27
+ let games = 0;
28
+ let wins = 0;
29
+ let losses = 0;
30
+ let ties = 0;
31
+ for (const s of seasons) {
32
+ games += s.games;
33
+ wins += s.wins;
34
+ losses += s.losses;
35
+ ties += s.ties;
36
+ }
37
+ return { games, wins, losses, ties };
38
+ }
39
+ function formatSeason(s) {
40
+ const tiesSuffix = s.ties > 0 ? `-${s.ties}` : "";
41
+ let line = `${s.year} ${s.school}: ${s.wins}-${s.losses}${tiesSuffix} (G: ${s.games})`;
42
+ const rankParts = [];
43
+ if (s.preseasonRank != null)
44
+ rankParts.push(`Pre: #${s.preseasonRank}`);
45
+ if (s.postseasonRank != null)
46
+ rankParts.push(`Post: #${s.postseasonRank}`);
47
+ if (rankParts.length > 0) {
48
+ line += ` ${rankParts.join(" ")}`;
49
+ }
50
+ if (s.spOverall != null) {
51
+ const off = s.spOffense != null ? s.spOffense.toFixed(1) : "?";
52
+ const def = s.spDefense != null ? s.spDefense.toFixed(1) : "?";
53
+ line += ` SP+: ${s.spOverall.toFixed(1)} (O: ${off} D: ${def})`;
54
+ }
55
+ return line;
56
+ }
57
+ //# sourceMappingURL=coaches-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coaches-formatter.js","sourceRoot":"","sources":["../../src/formatters/coaches-formatter.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,kDAAkD,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ;YAC/B,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,WAAW,KAAK,CAAC,QAAQ,GAAG;YAClE,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GACV,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CACR,WAAW,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,KAAK,MAAM,GAAG,CACnE,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,OAAsB;IAM1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;QACjB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;QACf,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;QACnB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,CAAc;IAClC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,UAAU,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC;IAEvF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI;QAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI;QAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,IAAI,IAAI,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,GAAG,GAAG,CAAC;IAClE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Conference } from "cfbd";
2
+ export declare function formatConferences(conferences: Conference[]): string;
3
+ //# sourceMappingURL=conferences-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conferences-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/conferences-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvC,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CA0CnE"}
@@ -0,0 +1,41 @@
1
+ const CLASSIFICATION_ORDER = ["fbs", "fcs"];
2
+ export function formatConferences(conferences) {
3
+ if (conferences.length === 0) {
4
+ return "No conference data available.";
5
+ }
6
+ // Group by classification
7
+ const grouped = new Map();
8
+ for (const conf of conferences) {
9
+ const cls = conf.classification ?? "unknown";
10
+ if (!grouped.has(cls))
11
+ grouped.set(cls, []);
12
+ grouped.get(cls).push(conf);
13
+ }
14
+ // Sort groups: FBS first, FCS second, then others alphabetically
15
+ const sortedKeys = [...grouped.keys()].sort((a, b) => {
16
+ const aIdx = CLASSIFICATION_ORDER.indexOf(a.toLowerCase());
17
+ const bIdx = CLASSIFICATION_ORDER.indexOf(b.toLowerCase());
18
+ if (aIdx !== -1 && bIdx !== -1)
19
+ return aIdx - bIdx;
20
+ if (aIdx !== -1)
21
+ return -1;
22
+ if (bIdx !== -1)
23
+ return 1;
24
+ return a.localeCompare(b);
25
+ });
26
+ const lines = ["Conferences", "\u2500".repeat(50)];
27
+ for (const cls of sortedKeys) {
28
+ const confs = grouped.get(cls);
29
+ confs.sort((a, b) => a.name.localeCompare(b.name));
30
+ lines.push("");
31
+ lines.push(`## ${cls.toUpperCase()}`);
32
+ for (const conf of confs) {
33
+ const abbr = conf.abbreviation ?? "-";
34
+ lines.push(`${conf.name} (${abbr}) -- ${cls}`);
35
+ }
36
+ }
37
+ lines.push("");
38
+ lines.push(`${conferences.length} conferences`);
39
+ return lines.join("\n");
40
+ }
41
+ //# sourceMappingURL=conferences-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conferences-formatter.js","sourceRoot":"","sources":["../../src/formatters/conferences-formatter.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE5C,MAAM,UAAU,iBAAiB,CAAC,WAAyB;IACzD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,+BAA+B,CAAC;IACzC,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,GAAG,IAAI,CAAC;QACnD,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DraftPick } from "cfbd";
2
+ export declare function formatDraftPicks(picks: DraftPick[], school?: string, year?: number): string;
3
+ //# sourceMappingURL=draft-picks-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-picks-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/draft-picks-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEtC,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAgCR"}
@@ -0,0 +1,27 @@
1
+ export function formatDraftPicks(picks, school, year) {
2
+ if (picks.length === 0) {
3
+ return "No draft picks found for the specified filters.";
4
+ }
5
+ const sorted = [...picks].sort((a, b) => a.overall - b.overall);
6
+ const parts = [];
7
+ if (school) {
8
+ parts.push(`${school} NFL Draft Picks${year ? ` -- ${year}` : ""}`);
9
+ }
10
+ else if (year) {
11
+ parts.push(`${year} NFL Draft`);
12
+ }
13
+ else {
14
+ parts.push("NFL Draft Picks");
15
+ }
16
+ parts.push("─".repeat(60));
17
+ for (const p of sorted) {
18
+ const rdPk = `Rd ${p.round}, Pick ${p.pick}`;
19
+ const overall = `#${p.overall}`;
20
+ const ranking = p.preDraftRanking != null ? ` (#${p.preDraftRanking})` : "";
21
+ const grade = p.preDraftGrade != null ? p.preDraftGrade.toFixed(1) : "—";
22
+ const college = school ? "" : ` ${p.collegeTeam}`;
23
+ parts.push(`${rdPk} ${overall} ${p.name}${ranking} ${p.position}${college} → ${p.nflTeam} Grade: ${grade}`);
24
+ }
25
+ return parts.join("\n");
26
+ }
27
+ //# sourceMappingURL=draft-picks-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-picks-formatter.js","sourceRoot":"","sources":["../../src/formatters/draft-picks-formatter.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC9B,KAAkB,EAClB,MAAe,EACf,IAAa;IAEb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAmB,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,IAAI,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,OAAO,GACX,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GACT,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnD,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,QAAQ,GAAG,OAAO,OAAO,CAAC,CAAC,OAAO,YAAY,KAAK,EAAE,CACpG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Drive } from "cfbd";
2
+ export declare function formatDrives(drives: Drive[]): string;
3
+ //# sourceMappingURL=drives-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drives-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/drives-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAYlC,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAgCpD"}
@@ -0,0 +1,31 @@
1
+ function formatTime(time) {
2
+ const min = time.minutes != null ? String(time.minutes) : "?";
3
+ const sec = time.seconds != null ? String(time.seconds).padStart(2, "0") : "??";
4
+ return `${min}:${sec}`;
5
+ }
6
+ export function formatDrives(drives) {
7
+ if (drives.length === 0) {
8
+ return "No drive data found for the given filters";
9
+ }
10
+ const byGame = new Map();
11
+ for (const drive of drives) {
12
+ const group = byGame.get(drive.gameId) ?? [];
13
+ group.push(drive);
14
+ byGame.set(drive.gameId, group);
15
+ }
16
+ const sections = [];
17
+ for (const [, gameDrives] of byGame) {
18
+ const first = gameDrives[0];
19
+ const lines = [];
20
+ lines.push(`${first.offense} vs ${first.defense}`);
21
+ for (const d of gameDrives) {
22
+ const num = d.driveNumber != null ? `#${d.driveNumber}` : "#?";
23
+ const time = formatTime(d.startTime);
24
+ const scoringMarker = d.scoring ? " *" : "";
25
+ lines.push(`${num} ${d.offense} Q${d.startPeriod} ${time} | ${d.startYardsToGoal}yd line | ${d.plays} plays, ${d.yards} yds | ${d.driveResult}${scoringMarker}`);
26
+ }
27
+ sections.push(lines.join("\n"));
28
+ }
29
+ return sections.join("\n\n");
30
+ }
31
+ //# sourceMappingURL=drives-formatter.js.map