@sportsdataverse/sdvplot 0.0.0-stage → 0.2.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 (245) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +109 -0
  3. package/README.md +984 -2
  4. package/dist/_web-D7Aa5Rd8.d.ts +69 -0
  5. package/dist/aaf-GJ3SH34T.js +13 -0
  6. package/dist/aaf-HCYN5T6Y.js +37 -0
  7. package/dist/aaf-ZAE5KS2Y.js +13 -0
  8. package/dist/ahl-E66MDVCU.js +66 -0
  9. package/dist/ahl-NPQQWZEV.js +249 -0
  10. package/dist/ahl-QRDU73XX.js +309 -0
  11. package/dist/axis-CraWQRUJ.d.ts +49 -0
  12. package/dist/bins.d.ts +174 -0
  13. package/dist/bins.js +4 -0
  14. package/dist/bins.js.map +1 -0
  15. package/dist/cfb-F42SVS4X.js +5000 -0
  16. package/dist/cfb-P3SHEYRZ.js +692 -0
  17. package/dist/cfb-WXRZANLP.js +10226 -0
  18. package/dist/chartjs-surface.d.ts +42 -0
  19. package/dist/chartjs-surface.js +65 -0
  20. package/dist/chartjs-surface.js.map +1 -0
  21. package/dist/chartjs.d.ts +162 -0
  22. package/dist/chartjs.js +342 -0
  23. package/dist/chartjs.js.map +1 -0
  24. package/dist/chunk-4C3GX6QO.js +92 -0
  25. package/dist/chunk-4C3GX6QO.js.map +1 -0
  26. package/dist/chunk-57WFSI4Q.js +128 -0
  27. package/dist/chunk-57WFSI4Q.js.map +1 -0
  28. package/dist/chunk-7ULOCCFL.js +313 -0
  29. package/dist/chunk-7ULOCCFL.js.map +1 -0
  30. package/dist/chunk-AMXASQHT.js +120 -0
  31. package/dist/chunk-AMXASQHT.js.map +1 -0
  32. package/dist/chunk-B2MP37SR.js +175 -0
  33. package/dist/chunk-B2MP37SR.js.map +1 -0
  34. package/dist/chunk-C2CDY5OG.js +137 -0
  35. package/dist/chunk-C2CDY5OG.js.map +1 -0
  36. package/dist/chunk-DYMUVE6K.js +127 -0
  37. package/dist/chunk-DYMUVE6K.js.map +1 -0
  38. package/dist/chunk-E7G7VSLV.js +43 -0
  39. package/dist/chunk-E7G7VSLV.js.map +1 -0
  40. package/dist/chunk-H2C3FMMA.js +300 -0
  41. package/dist/chunk-H2C3FMMA.js.map +1 -0
  42. package/dist/chunk-J4P4HDBF.js +175 -0
  43. package/dist/chunk-J4P4HDBF.js.map +1 -0
  44. package/dist/chunk-J6R2LEJ7.js +58 -0
  45. package/dist/chunk-J6R2LEJ7.js.map +1 -0
  46. package/dist/chunk-M3XD2OSN.js +132 -0
  47. package/dist/chunk-M3XD2OSN.js.map +1 -0
  48. package/dist/chunk-OIILARXI.js +30 -0
  49. package/dist/chunk-OIILARXI.js.map +1 -0
  50. package/dist/chunk-RPVVJY74.js +170 -0
  51. package/dist/chunk-RPVVJY74.js.map +1 -0
  52. package/dist/chunk-UL5M6KDE.js +205 -0
  53. package/dist/chunk-UL5M6KDE.js.map +1 -0
  54. package/dist/chunk-WQT4IVLX.js +10 -0
  55. package/dist/chunk-WQT4IVLX.js.map +1 -0
  56. package/dist/chunk-ZAEQXFJM.js +556 -0
  57. package/dist/chunk-ZAEQXFJM.js.map +1 -0
  58. package/dist/cricket-KPCYG2HL.js +493 -0
  59. package/dist/cricket-NDXLE25B.js +116 -0
  60. package/dist/cricket-YUUF7P6M.js +160 -0
  61. package/dist/cytoscape.d.ts +188 -0
  62. package/dist/cytoscape.js +219 -0
  63. package/dist/cytoscape.js.map +1 -0
  64. package/dist/d3.d.ts +234 -0
  65. package/dist/d3.js +198 -0
  66. package/dist/d3.js.map +1 -0
  67. package/dist/deckgl.d.ts +232 -0
  68. package/dist/deckgl.js +197 -0
  69. package/dist/deckgl.js.map +1 -0
  70. package/dist/echarts.d.ts +121 -0
  71. package/dist/echarts.js +228 -0
  72. package/dist/echarts.js.map +1 -0
  73. package/dist/echl-3CR4RGFC.js +241 -0
  74. package/dist/echl-NPC32C23.js +107 -0
  75. package/dist/echl-PI33DGJC.js +64 -0
  76. package/dist/export.d.ts +130 -0
  77. package/dist/export.js +258 -0
  78. package/dist/export.js.map +1 -0
  79. package/dist/g2.d.ts +251 -0
  80. package/dist/g2.js +102 -0
  81. package/dist/g2.js.map +1 -0
  82. package/dist/headshots-B2J_LOO8.d.ts +40 -0
  83. package/dist/index.d.ts +183 -0
  84. package/dist/index.js +9 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/interact.d.ts +567 -0
  87. package/dist/interact.js +809 -0
  88. package/dist/interact.js.map +1 -0
  89. package/dist/lightweight-charts.d.ts +217 -0
  90. package/dist/lightweight-charts.js +155 -0
  91. package/dist/lightweight-charts.js.map +1 -0
  92. package/dist/maplibre.d.ts +271 -0
  93. package/dist/maplibre.js +175 -0
  94. package/dist/maplibre.js.map +1 -0
  95. package/dist/marks-DH-tQIP-.d.ts +75 -0
  96. package/dist/mbb-3TRLVW3H.js +3619 -0
  97. package/dist/mbb-DQUHCHZP.js +5111 -0
  98. package/dist/mbb-PRAIO2P5.js +371 -0
  99. package/dist/milb-6IQ6NCEW.js +291 -0
  100. package/dist/milb-EYY5MD4T.js +1752 -0
  101. package/dist/milb-EYZ4SZLI.js +797 -0
  102. package/dist/mlb-4PBUJSVQ.js +35 -0
  103. package/dist/mlb-FHPY3GQJ.js +701 -0
  104. package/dist/mlb-REVGL3N2.js +665 -0
  105. package/dist/mui.d.ts +338 -0
  106. package/dist/mui.js +184 -0
  107. package/dist/mui.js.map +1 -0
  108. package/dist/nba-ATT775GS.js +485 -0
  109. package/dist/nba-LKM4UHVU.js +482 -0
  110. package/dist/nba-YX7PXM3R.js +35 -0
  111. package/dist/nbagl-3WGZCZ4S.js +37 -0
  112. package/dist/nbagl-LP4XJRAL.js +229 -0
  113. package/dist/nbagl-VTTOU7LN.js +499 -0
  114. package/dist/ncaa_baseball-UV75LNVR.js +2670 -0
  115. package/dist/ncaa_baseball-VD5J5C72.js +419 -0
  116. package/dist/ncaa_baseball-YRBS32D6.js +4592 -0
  117. package/dist/ncaa_mhockey-IMYHS7QS.js +1033 -0
  118. package/dist/ncaa_mhockey-TXTKWHE3.js +115 -0
  119. package/dist/ncaa_mhockey-U3MFW5VT.js +663 -0
  120. package/dist/ncaa_softball-6WR6KS64.js +420 -0
  121. package/dist/ncaa_softball-RZCTIE56.js +2654 -0
  122. package/dist/ncaa_softball-VOD4PVGY.js +4599 -0
  123. package/dist/ncaa_whockey-6XXGUTBK.js +607 -0
  124. package/dist/ncaa_whockey-AKKYKY67.js +53 -0
  125. package/dist/ncaa_whockey-KBEKXFBB.js +293 -0
  126. package/dist/nfl-BDB2HYAR.js +625 -0
  127. package/dist/nfl-EHYHDLJD.js +37 -0
  128. package/dist/nfl-VF4NJCHY.js +514 -0
  129. package/dist/nfl_gsis-UY64JO37.js +4 -0
  130. package/dist/nhl-6WPHME7H.js +511 -0
  131. package/dist/nhl-EMIJFZHY.js +884 -0
  132. package/dist/nhl-ISFUKRFU.js +37 -0
  133. package/dist/nivo.d.ts +193 -0
  134. package/dist/nivo.js +8 -0
  135. package/dist/nivo.js.map +1 -0
  136. package/dist/ohl-2FEM554G.js +113 -0
  137. package/dist/ohl-C5Q4W6JB.js +32 -0
  138. package/dist/ohl-TQ4J46VC.js +66 -0
  139. package/dist/perspective.d.ts +198 -0
  140. package/dist/perspective.js +171 -0
  141. package/dist/perspective.js.map +1 -0
  142. package/dist/phf-H7POU2KW.js +32 -0
  143. package/dist/phf-K5IFMZUM.js +13 -0
  144. package/dist/phf-TWJI3BOW.js +20 -0
  145. package/dist/placement-UWkqUzpa.d.ts +32 -0
  146. package/dist/plot.d.ts +451 -0
  147. package/dist/plot.js +712 -0
  148. package/dist/plot.js.map +1 -0
  149. package/dist/plotly.d.ts +129 -0
  150. package/dist/plotly.js +360 -0
  151. package/dist/plotly.js.map +1 -0
  152. package/dist/pwhl-OX3BO4JI.js +53 -0
  153. package/dist/pwhl-W44OC3C6.js +17 -0
  154. package/dist/pwhl-ZJGG3H7W.js +23 -0
  155. package/dist/qmjhl-5HISEHLL.js +35 -0
  156. package/dist/qmjhl-DA3UHKE5.js +125 -0
  157. package/dist/qmjhl-YG4BOQPF.js +614 -0
  158. package/dist/react.d.ts +377 -0
  159. package/dist/react.js +522 -0
  160. package/dist/react.js.map +1 -0
  161. package/dist/recharts.d.ts +162 -0
  162. package/dist/recharts.js +8 -0
  163. package/dist/recharts.js.map +1 -0
  164. package/dist/resolve-CQW-jzvr.d.ts +28 -0
  165. package/dist/selection-D4T3PkRt.d.ts +140 -0
  166. package/dist/shadcn.d.ts +83 -0
  167. package/dist/shadcn.js +88 -0
  168. package/dist/shadcn.js.map +1 -0
  169. package/dist/shots.d.ts +364 -0
  170. package/dist/shots.js +86 -0
  171. package/dist/shots.js.map +1 -0
  172. package/dist/soccer-7BH3ZLVL.js +7898 -0
  173. package/dist/soccer-MRU25OGE.js +2636 -0
  174. package/dist/soccer-PF4IPPVA.js +12342 -0
  175. package/dist/surface-TR7YFJW3.js +4 -0
  176. package/dist/surface-TR7YFJW3.js.map +1 -0
  177. package/dist/surfaces-MIG7HOFU.js +6 -0
  178. package/dist/surfaces-MIG7HOFU.js.map +1 -0
  179. package/dist/surfaces-W-odWLpT.d.ts +47 -0
  180. package/dist/svelte/HeadshotMark.svelte +25 -0
  181. package/dist/svelte/HeadshotMark.svelte.d.ts +10 -0
  182. package/dist/svelte/HeadshotMark.svelte.d.ts.map +1 -0
  183. package/dist/svelte/LogoMark.svelte +25 -0
  184. package/dist/svelte/LogoMark.svelte.d.ts +10 -0
  185. package/dist/svelte/LogoMark.svelte.d.ts.map +1 -0
  186. package/dist/svelte/Marks.svelte +25 -0
  187. package/dist/svelte/Marks.svelte.d.ts +10 -0
  188. package/dist/svelte/Marks.svelte.d.ts.map +1 -0
  189. package/dist/svelte/Surface.svelte +29 -0
  190. package/dist/svelte/Surface.svelte.d.ts +9 -0
  191. package/dist/svelte/Surface.svelte.d.ts.map +1 -0
  192. package/dist/svelte/SurfaceBackdrop.svelte +26 -0
  193. package/dist/svelte/SurfaceBackdrop.svelte.d.ts +11 -0
  194. package/dist/svelte/SurfaceBackdrop.svelte.d.ts.map +1 -0
  195. package/dist/svelte/index.d.ts +13 -0
  196. package/dist/svelte/index.d.ts.map +1 -0
  197. package/dist/svelte/index.js +11 -0
  198. package/dist/svelte-core.d.ts +139 -0
  199. package/dist/svelte-core.js +123 -0
  200. package/dist/svelte-core.js.map +1 -0
  201. package/dist/tanstack.d.ts +240 -0
  202. package/dist/tanstack.js +110 -0
  203. package/dist/tanstack.js.map +1 -0
  204. package/dist/testing.d.ts +75 -0
  205. package/dist/testing.js +239 -0
  206. package/dist/testing.js.map +1 -0
  207. package/dist/three.d.ts +223 -0
  208. package/dist/three.js +50 -0
  209. package/dist/three.js.map +1 -0
  210. package/dist/tiers-BN4md-GB.d.ts +65 -0
  211. package/dist/types-C7n6gJF3.d.ts +62 -0
  212. package/dist/ufl-7VLZTLTT.js +143 -0
  213. package/dist/ufl-CCMBLPSW.js +100 -0
  214. package/dist/ufl-F2BJRXME.js +16 -0
  215. package/dist/unovis.d.ts +127 -0
  216. package/dist/unovis.js +108 -0
  217. package/dist/unovis.js.map +1 -0
  218. package/dist/uplot.d.ts +120 -0
  219. package/dist/uplot.js +110 -0
  220. package/dist/uplot.js.map +1 -0
  221. package/dist/usfl-4CR5RMZJ.js +32 -0
  222. package/dist/usfl-LD7HP2YK.js +14 -0
  223. package/dist/usfl-VU4YSJQD.js +19 -0
  224. package/dist/ushl-CPG2LB4L.js +73 -0
  225. package/dist/ushl-PQL6HJAD.js +88 -0
  226. package/dist/ushl-ZT2ATPHK.js +22 -0
  227. package/dist/vega.d.ts +85 -0
  228. package/dist/vega.js +362 -0
  229. package/dist/vega.js.map +1 -0
  230. package/dist/victory.d.ts +107 -0
  231. package/dist/victory.js +38 -0
  232. package/dist/victory.js.map +1 -0
  233. package/dist/wbb-3KHCDYTK.js +5087 -0
  234. package/dist/wbb-BMX53Q3Q.js +369 -0
  235. package/dist/wbb-QNRN2CJJ.js +3620 -0
  236. package/dist/whl-4ATYZWUB.js +97 -0
  237. package/dist/whl-RVFPL6MH.js +79 -0
  238. package/dist/whl-Y7ASKYMM.js +28 -0
  239. package/dist/wnba-FWX5SFVI.js +232 -0
  240. package/dist/wnba-GX6HZR4B.js +220 -0
  241. package/dist/wnba-NTMWIPP6.js +20 -0
  242. package/dist/xfl-43R2JMJK.js +30 -0
  243. package/dist/xfl-H3BXQPZZ.js +16 -0
  244. package/dist/xfl-XON7A7FI.js +69 -0
  245. package/package.json +366 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts","../src/data/index.ts","../src/index-data.ts","../src/normalize.ts","../src/headshots.ts","../src/resolve.ts","../src/colors.ts"],"names":[],"mappings":"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","file":"chunk-ZAEQXFJM.js","sourcesContent":["export type { League } from \"./data/index.js\";\n\ndeclare const brand: unique symbol;\n/** A canonical SDV team id. Only `resolve()` makes one; a raw abbreviation is a `string`, not a `TeamId`. */\nexport type TeamId = string & { readonly [brand]: \"TeamId\" };\nexport const asTeamId = (s: string): TeamId => s as TeamId;\n\nexport const PRIORITY = [\n \"team_id\",\n \"espn\",\n \"espn_abbr\",\n \"nhl\",\n \"nflverse\",\n \"mlbstats\",\n \"nba_api\",\n \"hockeytech\",\n \"ncaa\",\n \"pff\",\n \"cricinfo\",\n \"cfbd\",\n \"bref\",\n \"sportsipy\",\n \"fangraphs\",\n \"sdvplotr\",\n \"name\",\n] as const;\nexport const EXPLICIT_ONLY = [\"nhl_id\"] as const;\nexport type IdSystem = \"auto\" | (typeof PRIORITY)[number] | (typeof EXPLICIT_ONLY)[number];\nexport type MarkType = \"logo\" | \"wordmark\";\nexport type Which = \"primary\" | \"secondary\";\n/** \"default\" and \"dark\" always exist; other archive variant names are accepted and checked at runtime. */\nexport type Variant = \"default\" | \"dark\" | (string & {});\nexport type SeasonInput = number | string | null | undefined;\nexport type HeadshotIdSystem = \"espn\" | \"gsis\";\n","// generated by tools/build-index — do not edit\nexport const LEAGUES = [\"aaf\",\"ahl\",\"cfb\",\"cricket\",\"echl\",\"mbb\",\"milb\",\"mlb\",\"nba\",\"nbagl\",\"ncaa_baseball\",\"ncaa_mhockey\",\"ncaa_softball\",\"ncaa_whockey\",\"nfl\",\"nhl\",\"ohl\",\"phf\",\"pwhl\",\"qmjhl\",\"soccer\",\"ufl\",\"usfl\",\"ushl\",\"wbb\",\"whl\",\"wnba\",\"xfl\"] as const;\nexport type League = (typeof LEAGUES)[number];\nexport const INDEX_VERSION: string = \"1c025b69f8cf\";\nexport const MANIFEST_LAST_MODIFIED: string = \"2026-10-06\";\nexport const VARIANTS = [\"alternate\",\"cap_on_dark\",\"cap_on_light\",\"cricinfo\",\"crop_64px\",\"dark\",\"default\",\"grayscale\",\"large\",\"logo2\",\"medium\",\"on_dark\",\"on_light\",\"primary_logo_black\",\"primary_logo_on_black_color\",\"primary_logo_on_primary_color\",\"primary_logo_on_secondary_color\",\"primary_logo_on_white_color\",\"primary_logo_white\",\"primary_on_dark\",\"primary_on_light\",\"scoreboard\",\"scoreboard_dark\",\"secondary_logo_black\",\"secondary_logo_on_black_color\",\"secondary_logo_on_primary_color\",\"secondary_logo_on_secondary_color\",\"secondary_logo_on_white_color\",\"secondary_logo_white\",\"sport_pictogram\",\"squared\",\"team_strip\"] as const;\nexport const INDEX_FIRST_SEASON: number | null = 1871; export const INDEX_LAST_ALIAS_SEASON: number | null = 2027;\nexport const LEAGUE_META: Readonly<Record<League, { latestSeason: number | null; firstSeason: number | null }>> = {\"aaf\":{\"latestSeason\":null,\"firstSeason\":null},\"ahl\":{\"latestSeason\":null,\"firstSeason\":null},\"cfb\":{\"latestSeason\":null,\"firstSeason\":null},\"cricket\":{\"latestSeason\":null,\"firstSeason\":null},\"echl\":{\"latestSeason\":null,\"firstSeason\":null},\"mbb\":{\"latestSeason\":null,\"firstSeason\":null},\"milb\":{\"latestSeason\":null,\"firstSeason\":null},\"mlb\":{\"latestSeason\":2026,\"firstSeason\":1871},\"nba\":{\"latestSeason\":2027,\"firstSeason\":1947},\"nbagl\":{\"latestSeason\":null,\"firstSeason\":null},\"ncaa_baseball\":{\"latestSeason\":null,\"firstSeason\":null},\"ncaa_mhockey\":{\"latestSeason\":null,\"firstSeason\":null},\"ncaa_softball\":{\"latestSeason\":null,\"firstSeason\":null},\"ncaa_whockey\":{\"latestSeason\":null,\"firstSeason\":null},\"nfl\":{\"latestSeason\":2026,\"firstSeason\":1920},\"nhl\":{\"latestSeason\":1997,\"firstSeason\":null},\"ohl\":{\"latestSeason\":null,\"firstSeason\":null},\"phf\":{\"latestSeason\":null,\"firstSeason\":null},\"pwhl\":{\"latestSeason\":null,\"firstSeason\":null},\"qmjhl\":{\"latestSeason\":null,\"firstSeason\":null},\"soccer\":{\"latestSeason\":null,\"firstSeason\":null},\"ufl\":{\"latestSeason\":2026,\"firstSeason\":2024},\"usfl\":{\"latestSeason\":null,\"firstSeason\":null},\"ushl\":{\"latestSeason\":null,\"firstSeason\":null},\"wbb\":{\"latestSeason\":null,\"firstSeason\":null},\"whl\":{\"latestSeason\":null,\"firstSeason\":null},\"wnba\":{\"latestSeason\":2026,\"firstSeason\":1997},\"xfl\":{\"latestSeason\":2023,\"firstSeason\":2020}};\nexport interface Team { league: League; team_id: string; abbr: string | null; name: string | null; short_name: string | null; location: string | null; program: string | null; conference_id: string | null; conference: string | null; color_primary: string | null; color_secondary: string | null; color_source: string | null }\nexport interface Alias { id_system: string; value: string; team_id: string; valid_from: number | null; valid_to: number | null }\nexport interface MarkRow { team_id: string; mark_type: \"logo\" | \"wordmark\"; variant: string; valid_from: number | null; valid_to: number | null; source: string; source_rank: number; first_seen: string; sha256: string; ext: string; width: number | null; height: number | null; archive_url: string }\n/** Shard row: archive_url is derived by the loader (archiveUrl), never stored. */\nexport type StoredMark = Omit<MarkRow, \"archive_url\">;\nexport interface LeagueData { teams: readonly Team[]; aliases: readonly Alias[]; marks: readonly MarkRow[] }\nexport const ARCHIVE_BASE: string = \"https://sdv.nyc3.cdn.digitaloceanspaces.com/assets/public/sha256\";\n/** Content-addressed archive URL of a mark (<base>/<sha[:2]>/<sha>.<ext>, Python _images.mark_file). */\nexport function archiveUrl(sha256: string, ext: string): string { return `${ARCHIVE_BASE}/${sha256.slice(0, 2)}/${sha256}.${ext}`; }\nexport const loaders: Readonly<Record<League, () => Promise<LeagueData>>> = {\n \"aaf\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/aaf.js\"), import(\"./aliases/aaf.js\"), import(\"./marks/aaf.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ahl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ahl.js\"), import(\"./aliases/ahl.js\"), import(\"./marks/ahl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"cfb\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/cfb.js\"), import(\"./aliases/cfb.js\"), import(\"./marks/cfb.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"cricket\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/cricket.js\"), import(\"./aliases/cricket.js\"), import(\"./marks/cricket.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"echl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/echl.js\"), import(\"./aliases/echl.js\"), import(\"./marks/echl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"mbb\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/mbb.js\"), import(\"./aliases/mbb.js\"), import(\"./marks/mbb.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"milb\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/milb.js\"), import(\"./aliases/milb.js\"), import(\"./marks/milb.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"mlb\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/mlb.js\"), import(\"./aliases/mlb.js\"), import(\"./marks/mlb.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"nba\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/nba.js\"), import(\"./aliases/nba.js\"), import(\"./marks/nba.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"nbagl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/nbagl.js\"), import(\"./aliases/nbagl.js\"), import(\"./marks/nbagl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ncaa_baseball\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ncaa_baseball.js\"), import(\"./aliases/ncaa_baseball.js\"), import(\"./marks/ncaa_baseball.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ncaa_mhockey\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ncaa_mhockey.js\"), import(\"./aliases/ncaa_mhockey.js\"), import(\"./marks/ncaa_mhockey.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ncaa_softball\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ncaa_softball.js\"), import(\"./aliases/ncaa_softball.js\"), import(\"./marks/ncaa_softball.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ncaa_whockey\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ncaa_whockey.js\"), import(\"./aliases/ncaa_whockey.js\"), import(\"./marks/ncaa_whockey.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"nfl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/nfl.js\"), import(\"./aliases/nfl.js\"), import(\"./marks/nfl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"nhl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/nhl.js\"), import(\"./aliases/nhl.js\"), import(\"./marks/nhl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ohl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ohl.js\"), import(\"./aliases/ohl.js\"), import(\"./marks/ohl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"phf\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/phf.js\"), import(\"./aliases/phf.js\"), import(\"./marks/phf.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"pwhl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/pwhl.js\"), import(\"./aliases/pwhl.js\"), import(\"./marks/pwhl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"qmjhl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/qmjhl.js\"), import(\"./aliases/qmjhl.js\"), import(\"./marks/qmjhl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"soccer\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/soccer.js\"), import(\"./aliases/soccer.js\"), import(\"./marks/soccer.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ufl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ufl.js\"), import(\"./aliases/ufl.js\"), import(\"./marks/ufl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"usfl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/usfl.js\"), import(\"./aliases/usfl.js\"), import(\"./marks/usfl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"ushl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/ushl.js\"), import(\"./aliases/ushl.js\"), import(\"./marks/ushl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"wbb\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/wbb.js\"), import(\"./aliases/wbb.js\"), import(\"./marks/wbb.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"whl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/whl.js\"), import(\"./aliases/whl.js\"), import(\"./marks/whl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"wnba\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/wnba.js\"), import(\"./aliases/wnba.js\"), import(\"./marks/wnba.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n \"xfl\": async () => { const [t, a, m] = await Promise.all([import(\"./teams/xfl.js\"), import(\"./aliases/xfl.js\"), import(\"./marks/xfl.js\")]); return { teams: t.teams, aliases: a.aliases, marks: m.marks.map((r) => ({ ...r, archive_url: archiveUrl(r.sha256, r.ext) })) }; },\n};\n","import {\n INDEX_FIRST_SEASON,\n INDEX_LAST_ALIAS_SEASON,\n LEAGUES,\n LEAGUE_META,\n type League,\n type LeagueData,\n loaders,\n} from \"./data/index.js\";\nimport { InputError } from \"./errors.js\";\nimport { loadGsis } from \"./headshots.js\";\n\nconst loaded = new Map<League, LeagueData>();\nconst pending = new Map<League, Promise<LeagueData>>();\n\nexport function checkLeague(league: string): asserts league is League {\n if (!(LEAGUES as readonly string[]).includes(league))\n throw new InputError(`unknown league ${JSON.stringify(league)}; known leagues: ${LEAGUES.join(\", \")}`);\n}\n/**\n * Load a league's bundled teams, aliases and marks (one code-split chunk; nothing is downloaded). Every `*Sync`\n * function needs it first. Async throughout: an unknown league rejects (never throws synchronously); a failed chunk\n * load can be retried.\n *\n * @example\n * ```ts\n * import { loadLeague } from \"@sportsdataverse/sdvplot\";\n *\n * const nfl = await loadLeague(\"nfl\");\n * nfl.teams.find((t) => t.abbr === \"KC\");\n * ```\n */\nexport async function loadLeague(league: League): Promise<LeagueData> {\n checkLeague(league);\n const hit = loaded.get(league);\n if (hit) return hit;\n let p = pending.get(league);\n if (!p) {\n p = loaders[league]().then(\n (d) => {\n loaded.set(league, d);\n pending.delete(league);\n return d;\n },\n (e: unknown) => {\n pending.delete(league);\n throw e;\n },\n );\n pending.set(league, p);\n }\n return p;\n}\n/** Every league shard plus the gsis map, so every *Sync variant works afterwards. */\nexport async function preloadAll(): Promise<void> {\n await Promise.all([...LEAGUES.map(loadLeague), loadGsis()]);\n}\nexport function getLeagueSync(league: League): LeagueData {\n checkLeague(league);\n const d = loaded.get(league);\n if (!d)\n throw new InputError(\n `league ${league} is not loaded; await loadLeague(\"${league}\") or preloadAll() before calling the *Sync variant`,\n );\n return d;\n}\n/** Port of `_index.season_bounds`: [first, last]; last = max(latest alias season, next year). */\nexport function seasonBounds(league?: League): readonly [number, number] | null {\n if (INDEX_FIRST_SEASON === null || INDEX_LAST_ALIAS_SEASON === null) return null;\n const last = Math.max(INDEX_LAST_ALIAS_SEASON, new Date().getFullYear() + 1);\n const first = league ? (LEAGUE_META[league].firstSeason ?? INDEX_FIRST_SEASON) : INDEX_FIRST_SEASON;\n return [first, last];\n}\n/**\n * The latest season any dated alias of `league` names (the last relocation or rename the index records), or `null`\n * when no alias is dated. It is not the current season: the NHL's is 1997. A value resolved without a season is\n * matched at this season first.\n */\nexport const latestSeason = (league: League): number | null => LEAGUE_META[league].latestSeason;\n","import type { League } from \"./data/index.js\";\nimport { InputError } from \"./errors.js\";\nimport { seasonBounds } from \"./index-data.js\";\nimport type { SeasonInput } from \"./types.js\";\n\nconst FLOAT_ID = /^-?\\d+\\.0+$/;\nconst PUNCT: Record<string, string> = { \"‘\": \"'\", \"’\": \"'\", \"–\": \"-\", \"—\": \"-\" };\n\n/** Port of `_normalize.norm_value`: trimmed, accents + typographic punctuation folded, case-folded, integral numbers without \".0\". */\nexport function normValue(value: unknown): string | null {\n if (value === null || value === undefined) return null;\n if (typeof value === \"boolean\") return String(value);\n if (typeof value === \"bigint\") return value.toString();\n if (typeof value === \"number\") return Number.isNaN(value) ? null : String(value);\n let s = String(value).trim();\n // biome-ignore lint/suspicious/noControlCharactersInRegex: ASCII fast-path test\n if (!/^[\\x00-\\x7F]*$/.test(s))\n s = s\n .replace(/[‘’–—]/g, (c) => PUNCT[c] ?? c)\n .normalize(\"NFKD\")\n .replace(/\\p{M}/gu, \"\");\n s = s.toLowerCase().replace(/ß/g, \"ss\").replace(/ς/g, \"σ\"); // Python casefold ≈ toLowerCase for these inputs; the oracle (Task 7) confirms\n if (FLOAT_ID.test(s)) s = s.split(\".\")[0] as string;\n return s || null;\n}\n\nexport function checkSeason(year: number, league?: League): void {\n const b = seasonBounds(league);\n if (b && !(b[0] <= year && year <= b[1]))\n throw new InputError(\n `season ${year} is outside the seasons sdvplot knows${league ? ` for ${league}` : \"\"} (${b[0]} to ${b[1]}); pass a year such as 2020`,\n );\n}\n\nconst SPLIT = /^\\s*(\\d{4})\\s*[-/]\\s*(\\d{2}|\\d{4})\\s*$/;\nexport function normSeason(value: SeasonInput, league?: League): number | null {\n if (value === null || value === undefined) return null;\n let year: number | null = null;\n if (typeof value === \"number\") {\n if (Number.isNaN(value)) return null;\n if (Number.isInteger(value)) year = value;\n } else if (/^\\d+$/.test(value.trim())) year = Number.parseInt(value.trim(), 10);\n if (year === null) {\n const m = typeof value === \"string\" ? SPLIT.exec(value) : null;\n const hint = m\n ? `; for a split season pass its ending year (${Number(m[1]) + 1} for '${String(value).trim()}')`\n : \"\";\n throw new InputError(`season must be a year such as 2020, got ${JSON.stringify(value)}${hint}`);\n }\n checkSeason(year, league);\n return year;\n}\n","import { InputError } from \"./errors.js\";\nimport { normValue } from \"./normalize.js\";\nimport type { Value } from \"./resolve.js\";\nimport type { HeadshotIdSystem } from \"./types.js\";\n\n/** Port of `_headshots.ESPN_HEADSHOT_LEAGUES`. */\nexport const ESPN_HEADSHOT_LEAGUES = {\n nfl: \"nfl\",\n nba: \"nba\",\n wnba: \"wnba\",\n mlb: \"mlb\",\n nhl: \"nhl\",\n cfb: \"college-football\",\n mbb: \"mens-college-basketball\",\n wbb: \"womens-college-basketball\",\n} as const;\n/** Leagues with ESPN headshots (gsis ids are nfl-only, and nfl is one of these). */\nexport type EspnHeadshotLeague = keyof typeof ESPN_HEADSHOT_LEAGUES;\n\n/** Width / height of a headshot image box (the ESPN combiner crop). */\nexport const HEADSHOT_ASPECT: number = 600 / 436;\n\n// League-id CDN builders, ported from sdvplotR `league_headshot_url`.\nexport function nbaHeadshotUrl(id: string | number): string {\n return `https://cdn.nba.com/headshots/nba/latest/260x190/${id}.png`;\n}\nexport function wnbaHeadshotUrl(id: string | number): string {\n return `https://cdn.wnba.com/headshots/wnba/latest/260x190/${id}.png`;\n}\nexport function mlbHeadshotUrl(id: string | number): string {\n return `https://img.mlbstatic.com/mlb-photos/image/upload/d_people:generic:headshot:67:current.png/w_213,q_auto:best/v1/people/${id}/headshot/67/current.png`;\n}\nexport function nhlHeadshotUrl(id: string | number): string {\n return `https://assets.nhle.com/mugs/nhl/latest/${id}.png`;\n}\n\nfunction espn(id: string, league: string): string | undefined {\n if (!/^\\d+$/.test(id)) return undefined;\n return `https://a.espncdn.com/combiner/i?img=/i/headshots/${ESPN_HEADSHOT_LEAGUES[league as EspnHeadshotLeague]}/players/full/${id}.png`;\n}\n\ntype GsisRow = { espn_id: string | null; headshot: string | null };\nlet gsis: Readonly<Record<string, GsisRow>> | undefined;\nlet gsisPending: Promise<void> | undefined;\n/** Loads the bundled nflverse gsis map (its own ~3 MB chunk, imported only on demand); required before `headshotUrl(…, { idSystem: \"gsis\" })`. Nothing is downloaded. */\nexport async function loadGsis(): Promise<void> {\n if (gsis) return;\n gsisPending ??= import(\"./data/nfl_gsis.js\").then(\n (m) => {\n gsis = m.NFL_GSIS;\n },\n (e: unknown) => {\n gsisPending = undefined;\n throw e;\n },\n );\n return gsisPending;\n}\n\n/**\n * Sync port of `_headshots.headshot_url`. ESPN ids need no data; gsis ids need `await loadGsis()` (or `preloadAll()`)\n * first.\n *\n * @example\n * ```ts\n * import { headshotUrl } from \"@sportsdataverse/sdvplot\";\n *\n * headshotUrl(\"3139477\", \"nfl\"); // Patrick Mahomes, by ESPN athlete id\n * ```\n */\nexport function headshotUrl(\n playerId: Value,\n league: EspnHeadshotLeague,\n { idSystem = \"espn\" }: { idSystem?: HeadshotIdSystem } = {},\n): string | undefined {\n if (idSystem === \"espn\" && !Object.hasOwn(ESPN_HEADSHOT_LEAGUES, league))\n throw new InputError(\n `no ESPN headshots for league ${JSON.stringify(league)}; supported: ${Object.keys(ESPN_HEADSHOT_LEAGUES).sort().join(\", \")}`,\n );\n if (idSystem !== \"espn\" && !(idSystem === \"gsis\" && league === \"nfl\"))\n throw new InputError(\n `idSystem must be 'espn' (any league) or 'gsis' (nfl), got ${JSON.stringify(idSystem)} for ${JSON.stringify(league)}`,\n );\n if (idSystem === \"gsis\" && !gsis)\n throw new InputError(\n 'the gsis map is not loaded; await loadGsis() (or preloadAll()) before headshotUrl(…, { idSystem: \"gsis\" })',\n );\n const pid = normValue(playerId);\n if (pid === null) return undefined;\n if (idSystem === \"espn\") return espn(pid, league);\n const key = String(playerId).trim();\n const row = gsis && Object.hasOwn(gsis, key) ? gsis[key] : undefined;\n if (!row) return undefined;\n if (row.headshot) {\n const t = row.headshot.replace(\"/f_auto,q_auto/\", \"/t_headshot_desktop/f_auto/\");\n return t.endsWith(\".png\") ? t : `${t}.png`;\n }\n return row.espn_id ? espn(row.espn_id, \"nfl\") : undefined;\n}\n","import type { League, LeagueData } from \"./data/index.js\";\nimport { InputError, UnresolvedTeamError, warn } from \"./errors.js\";\nimport { getLeagueSync, latestSeason, loadLeague } from \"./index-data.js\";\nimport { checkSeason, normSeason, normValue } from \"./normalize.js\";\nimport { EXPLICIT_ONLY, type IdSystem, PRIORITY, type SeasonInput, type TeamId, asTeamId } from \"./types.js\";\n\nexport type Value = string | number | bigint | null | undefined;\nexport type Resolved<T> = T extends readonly Value[] ? (TeamId | undefined)[] : TeamId | undefined;\nexport interface ResolveOptions {\n season?: SeasonInput | readonly SeasonInput[];\n idSystem?: IdSystem;\n strict?: boolean;\n}\n\ntype Cand = readonly [teamId: string, from: number | null, to: number | null];\ntype Lookup = Map<string, Map<string, Cand[]>>; // id_system → normalized value → candidates\nconst lookups = new WeakMap<LeagueData, Lookup>();\nfunction lookup(d: LeagueData): Lookup {\n let l = lookups.get(d);\n if (!l) {\n l = new Map();\n for (const a of d.aliases) {\n const k = normValue(a.value);\n if (k === null) continue;\n let sys = l.get(a.id_system);\n if (!sys) {\n sys = new Map();\n l.set(a.id_system, sys);\n }\n let c = sys.get(k);\n if (!c) {\n c = [];\n sys.set(k, c);\n }\n c.push([a.team_id, a.valid_from, a.valid_to]);\n }\n lookups.set(d, l);\n }\n return l;\n}\nconst covers = (lo: number | null, hi: number | null, s: number): boolean =>\n (lo === null || s >= lo) && (hi === null || s <= hi);\n\nfunction systems(idSystem: IdSystem): readonly string[] {\n if (\n idSystem !== \"auto\" &&\n !(PRIORITY as readonly string[]).includes(idSystem) &&\n !(EXPLICIT_ONLY as readonly string[]).includes(idSystem)\n )\n throw new InputError(\n `unknown idSystem ${JSON.stringify(idSystem)}; use \"auto\" or one of ${[...PRIORITY, ...EXPLICIT_ONLY].join(\", \")}`,\n );\n return idSystem === \"auto\" ? PRIORITY : [idSystem];\n}\n\n/** Python `_match`: passes [season, latest, none] (deduped, nulls dropped) × systems in order; first system with a candidate decides. */\nfunction match(\n key: string,\n season: number | null,\n sys: readonly string[],\n table: Lookup,\n latest: number | null,\n): string | readonly string[] | null {\n const whens: (number | null)[] = [];\n for (const w of [season, latest]) if (w !== null && !whens.includes(w)) whens.push(w);\n whens.push(null);\n for (const when of whens)\n for (const s of sys) {\n let cands = table.get(s)?.get(key);\n if (!cands?.length) continue;\n if (when !== null) {\n cands = cands.filter((c) => covers(c[1], c[2], when));\n if (!cands.length) continue;\n }\n const ids = [...new Set(cands.map((c) => c[0]))];\n return ids.length === 1 ? (ids[0] as string) : ids.sort();\n }\n return null;\n}\n\nfunction seasons(season: ResolveOptions[\"season\"], n: number, league: League): (number | null)[] {\n if (!Array.isArray(season)) return Array<number | null>(n).fill(normSeason(season as SeasonInput, league));\n if (season.length !== n)\n throw new InputError(`season has ${season.length} values but there are ${n} teams`);\n return (season as readonly SeasonInput[]).map((s) => normSeason(s, league));\n}\n\nfunction resolveIds(\n items: readonly Value[],\n league: League,\n ss: (number | null)[],\n idSystem: IdSystem,\n d: LeagueData,\n): { out: (TeamId | undefined)[]; unresolved: Map<string, string> } {\n const sys = systems(idSystem);\n for (const y of new Set(ss)) if (y !== null) checkSeason(y, league);\n const table = lookup(d);\n const latest = latestSeason(league);\n let names: Map<string, string> | undefined; // only the ambiguous message reads it: build it on first use, not per call\n const nameOf = (t: string): string => {\n names ??= new Map(d.teams.map((x) => [x.team_id, x.name ?? \"\"]));\n return names.get(t) ?? \"\";\n };\n const out: (TeamId | undefined)[] = [];\n const unresolved = new Map<string, string>();\n const memo = new Map<string, ReturnType<typeof match>>();\n items.forEach((v, i) => {\n const key = normValue(v);\n if (key === null) {\n out.push(undefined);\n return;\n }\n const mk = `${key}\\u0000${ss[i]}`;\n if (!memo.has(mk)) memo.set(mk, match(key, ss[i] ?? null, sys, table, latest));\n const hit = memo.get(mk) as ReturnType<typeof match>;\n if (hit === null || Array.isArray(hit)) {\n unresolved.set(\n String(v),\n hit === null\n ? \"unknown\"\n : `ambiguous: ${(hit as readonly string[]).map((t) => `${t} ${nameOf(t)}`.trim()).join(\" or \")}`,\n );\n out.push(undefined);\n } else out.push(asTeamId(hit as string));\n });\n return { out, unresolved };\n}\n\nfunction report(unresolved: Map<string, string>, league: League, strict: boolean): void {\n const shown = [...unresolved].map(([v, why]) => `'${v}' (${why})`).join(\", \");\n let msg = `${unresolved.size} value(s) did not resolve to a ${league} team: ${shown}`;\n if ([...unresolved.values()].some((w) => w.startsWith(\"ambiguous\")))\n msg += \"; pass season for a code reused across eras, or idSystem for the id system of the values\";\n if (strict) throw new UnresolvedTeamError(msg);\n warn(\n `${league}:${[...unresolved.keys()].join(\",\")}`,\n `${msg}. Use suggest() for candidates, or strict: true to throw.`,\n );\n}\n\nexport function resolveSync<T extends Value | readonly Value[]>(\n values: T,\n league: League,\n opts: ResolveOptions = {},\n): Resolved<T> {\n const d = getLeagueSync(league);\n const arr = Array.isArray(values);\n const items = (arr ? values : [values]) as readonly Value[];\n const { out, unresolved } = resolveIds(\n items,\n league,\n seasons(opts.season, items.length, league),\n opts.idSystem ?? \"auto\",\n d,\n );\n if (unresolved.size) report(unresolved, league, opts.strict ?? false);\n return (arr ? out : out[0]) as Resolved<T>;\n}\n/**\n * Resolve team values (abbreviations, ids, names) to ESPN team ids, loading the league first. Unknown values give\n * `undefined` and one warning per call; `strict: true` throws `UnresolvedTeamError`.\n *\n * @example\n * ```ts\n * import { resolve } from \"@sportsdataverse/sdvplot\";\n *\n * await resolve([\"KC\", \"Kansas City Chiefs\", \"OAK\"], \"nfl\", { season: 2019 });\n * ```\n */\nexport async function resolve<T extends Value | readonly Value[]>(\n values: T,\n league: League,\n opts: ResolveOptions = {},\n): Promise<Resolved<T>> {\n await loadLeague(league);\n return resolveSync(values, league, opts);\n}\n\n/** Port of `suggest`: difflib.get_close_matches(cutoff 0.6): SequenceMatcher(a=candidate, b=query).ratio() ≥ 0.6, best first, ties by candidate key descending; never picks one. */\nexport async function suggest(\n value: Value,\n league: League,\n opts: { n?: number } = {},\n): Promise<Array<[TeamId, string]>> {\n const n = opts.n ?? 5;\n if (!Number.isInteger(n) || n < 1)\n throw new InputError(\n `n is the most candidates to return, an int of at least 1, got ${JSON.stringify(n)}`,\n );\n const d = await loadLeague(league);\n const key = normValue(value);\n if (key === null) return [];\n const merged = new Map<string, string[]>();\n for (const sys of lookup(d).values())\n for (const [k, cands] of sys) merged.set(k, [...(merged.get(k) ?? []), ...cands.map((c) => c[0])]);\n const names = new Map(d.teams.map((t) => [t.team_id, t.name ?? t.team_id]));\n const scored = [...merged.keys()]\n .map((k) => [k, ratio(k, key)] as const)\n .filter(([, r]) => r >= 0.6)\n .sort((a, b) => b[1] - a[1] || (a[0] < b[0] ? 1 : a[0] > b[0] ? -1 : 0))\n .slice(0, n * 3);\n const out: Array<[TeamId, string]> = [];\n for (const [k] of scored)\n for (const tid of merged.get(k) ?? [])\n if (!out.some(([t]) => t === tid)) out.push([asTeamId(tid), names.get(tid) ?? tid]);\n return out.slice(0, n);\n}\n/** difflib.SequenceMatcher.ratio(): 2*M/T with M = matched chars via longest-common-substring recursion. */\nexport function ratio(a: string, b: string): number {\n const matches = (x: string, y: string): number => {\n if (!x || !y) return 0;\n let bi = 0;\n let bj = 0;\n let best = 0;\n let prev: number[] = Array<number>(y.length + 1).fill(0);\n for (let i = 1; i <= x.length; i++) {\n const cur: number[] = Array<number>(y.length + 1).fill(0);\n for (let j = 1; j <= y.length; j++)\n if (x[i - 1] === y[j - 1]) {\n const v = (prev[j - 1] ?? 0) + 1;\n cur[j] = v;\n if (v > best) {\n best = v;\n bi = i;\n bj = j;\n }\n }\n prev = cur;\n }\n if (!best) return 0;\n return best + matches(x.slice(0, bi - best), y.slice(0, bj - best)) + matches(x.slice(bi), y.slice(bj));\n };\n return a.length + b.length === 0 ? 1 : (2 * matches(a, b)) / (a.length + b.length);\n}\n","import { InputError, warn } from \"./errors.js\";\nimport { checkLeague, getLeagueSync, loadLeague } from \"./index-data.js\";\nimport { type ResolveOptions, type Resolved, type Value, resolveSync } from \"./resolve.js\";\nimport type { League, Which } from \"./types.js\";\n\nexport interface ColorOptions extends ResolveOptions {\n which?: Which;\n}\nexport type ColorResult<T> = T extends readonly Value[] ? (string | undefined)[] : string | undefined;\n\nconst COLUMNS = { primary: \"color_primary\", secondary: \"color_secondary\" } as const;\nfunction column(which: string): \"color_primary\" | \"color_secondary\" {\n if (which !== \"primary\" && which !== \"secondary\")\n throw new InputError(`which must be one of primary, secondary, got ${JSON.stringify(which)}`);\n return COLUMNS[which];\n}\nfunction colorMap(league: League, col: \"color_primary\" | \"color_secondary\"): Map<string, string> {\n const m = new Map<string, string>();\n for (const t of getLeagueSync(league).teams) if (t[col]) m.set(t.team_id, t[col] as string);\n return m;\n}\n\n/**\n * `{team: \"#hex\"}` for a league. Without `teams`: keyed by abbr, or team_id where abbr is null/shared (one warning).\n * With `teams`: keyed by the caller's own values; first team wins on a reused value.\n *\n * @example\n * ```ts\n * import { palette } from \"@sportsdataverse/sdvplot\";\n *\n * await palette(\"nfl\", [\"KC\", \"BUF\", \"PHI\"]);\n * ```\n */\nexport async function palette(\n league: League,\n teams?: Value | readonly Value[],\n opts: ColorOptions = {},\n): Promise<Record<string, string>> {\n const col = column(opts.which ?? \"primary\");\n checkLeague(league);\n await loadLeague(league);\n const colors = colorMap(league, col);\n const out: Record<string, string> = Object.create(null);\n if (teams == null) {\n const rows = getLeagueSync(league).teams;\n const counts = new Map<string, number>();\n for (const t of rows) if (t.abbr) counts.set(t.abbr, (counts.get(t.abbr) ?? 0) + 1);\n const shared = [...counts].filter(([, n]) => n > 1).map(([a]) => a);\n if (shared.length)\n warn(\n `palette:shared:${league}`,\n `abbreviations shared by several ${league} teams are keyed by team_id: ${shared.sort().join(\", \")}`,\n );\n for (const t of rows) {\n const c = colors.get(t.team_id);\n if (c === undefined) continue;\n out[!t.abbr || shared.includes(t.abbr) ? t.team_id : t.abbr] = c;\n }\n return out;\n }\n const values = (Array.isArray(teams) ? teams : [teams]) as readonly Value[];\n const slot = values.find((v) => v === \"primary\" || v === \"secondary\");\n if (slot !== undefined)\n throw new InputError(\n `${JSON.stringify(slot)} is a color slot, not a team; pass it as an option: palette(league, teams, { which: \"${slot}\" })`,\n );\n const ss: unknown[] = Array.isArray(opts.season) ? opts.season : Array(values.length).fill(opts.season);\n if (ss.length !== values.length)\n throw new InputError(`season has ${ss.length} values but there are ${values.length} teams`);\n const seen = new Set<string>();\n const vs: Value[] = [];\n const ys: ResolveOptions[\"season\"][] = [];\n values.forEach((v, i) => {\n if (v === null || v === undefined) return;\n const k = `${typeof v}:${String(v)}\\u0000${String(ss[i])}`;\n if (seen.has(k)) return;\n seen.add(k);\n vs.push(v);\n ys.push(ss[i] as ResolveOptions[\"season\"]);\n });\n const ids = resolveSync(vs, league, { ...opts, season: ys as never });\n vs.forEach((v, i) => {\n const id = ids[i];\n const c = id === undefined ? undefined : colors.get(id);\n if (c !== undefined) out[String(v)] ??= c;\n });\n return out;\n}\n\n/** One `#hex` (or undefined) per team value, in the container the values came in. Call after the league is loaded. */\nexport function teamColorsSync<T extends Value | readonly Value[]>(\n league: League,\n teams: T,\n opts: ColorOptions = {},\n): ColorResult<T> {\n const col = column(opts.which ?? \"primary\");\n checkLeague(league);\n const colors = colorMap(league, col);\n const ids = resolveSync(teams, league, opts) as Resolved<T>;\n const pick = (id: string | undefined): string | undefined =>\n id === undefined ? undefined : colors.get(id);\n return (\n Array.isArray(ids) ? (ids as (string | undefined)[]).map(pick) : pick(ids as string | undefined)\n ) as ColorResult<T>;\n}\n\n/** Both colours for ONE team from a single resolve (one warning if unresolved). Internal: not in the barrel. */\nexport function teamColorPairSync(\n league: League,\n team: Value,\n opts: Omit<ColorOptions, \"which\"> = {},\n): { primary: string | undefined; secondary: string | undefined } {\n checkLeague(league);\n const id = resolveSync(team, league, opts) as string | undefined;\n const pick = (col: \"color_primary\" | \"color_secondary\") =>\n id === undefined ? undefined : colorMap(league, col).get(id);\n return { primary: pick(\"color_primary\"), secondary: pick(\"color_secondary\") };\n}\n\n/**\n * Team colour(s), loading the league first: one team gives one `#hex` (or `undefined`), an array gives one per team.\n * `which: \"secondary\"` picks the second colour; an unknown team gives `undefined` and one warning.\n *\n * @example\n * ```ts\n * import { teamColors } from \"@sportsdataverse/sdvplot\";\n *\n * await teamColors(\"nba\", [\"LAL\", \"BOS\"], { which: \"secondary\" });\n * ```\n */\nexport async function teamColors<T extends Value | readonly Value[]>(\n league: League,\n teams: T,\n opts: ColorOptions = {},\n): Promise<ColorResult<T>> {\n await loadLeague(league);\n return teamColorsSync(league, teams, opts);\n}\n"]}