@maestro_io/maestro-web-sdk 5.0.0 → 5.1.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.
- package/dist/1.maestro-web-sdk.esm.js +2 -0
- package/dist/1.maestro-web-sdk.esm.js.map +1 -0
- package/dist/10.maestro-web-sdk.esm.js +2 -0
- package/dist/10.maestro-web-sdk.esm.js.map +1 -0
- package/dist/11.maestro-web-sdk.esm.js +2 -0
- package/dist/11.maestro-web-sdk.esm.js.map +1 -0
- package/dist/12.maestro-web-sdk.esm.js +2 -0
- package/dist/12.maestro-web-sdk.esm.js.map +1 -0
- package/dist/13.maestro-web-sdk.esm.js +2 -0
- package/dist/13.maestro-web-sdk.esm.js.map +1 -0
- package/dist/14.maestro-web-sdk.esm.js +2 -0
- package/dist/14.maestro-web-sdk.esm.js.map +1 -0
- package/dist/15.maestro-web-sdk.esm.js +2 -0
- package/dist/15.maestro-web-sdk.esm.js.map +1 -0
- package/dist/16.maestro-web-sdk.esm.js +2 -0
- package/dist/16.maestro-web-sdk.esm.js.map +1 -0
- package/dist/17.maestro-web-sdk.esm.js +2 -0
- package/dist/17.maestro-web-sdk.esm.js.map +1 -0
- package/dist/18.maestro-web-sdk.esm.js +2 -0
- package/dist/18.maestro-web-sdk.esm.js.map +1 -0
- package/dist/19.maestro-web-sdk.esm.js +2 -0
- package/dist/19.maestro-web-sdk.esm.js.map +1 -0
- package/dist/2.maestro-web-sdk.esm.js +2 -0
- package/dist/2.maestro-web-sdk.esm.js.map +1 -0
- package/dist/20.maestro-web-sdk.esm.js +2 -0
- package/dist/20.maestro-web-sdk.esm.js.map +1 -0
- package/dist/21.maestro-web-sdk.esm.js +2 -0
- package/dist/21.maestro-web-sdk.esm.js.map +1 -0
- package/dist/22.maestro-web-sdk.esm.js +2 -0
- package/dist/22.maestro-web-sdk.esm.js.map +1 -0
- package/dist/23.maestro-web-sdk.esm.js +2 -0
- package/dist/23.maestro-web-sdk.esm.js.map +1 -0
- package/dist/24.maestro-web-sdk.esm.js +2 -0
- package/dist/24.maestro-web-sdk.esm.js.map +1 -0
- package/dist/25.maestro-web-sdk.esm.js +2 -0
- package/dist/25.maestro-web-sdk.esm.js.map +1 -0
- package/dist/26.maestro-web-sdk.esm.js +2 -0
- package/dist/26.maestro-web-sdk.esm.js.map +1 -0
- package/dist/27.maestro-web-sdk.esm.js +2 -0
- package/dist/27.maestro-web-sdk.esm.js.map +1 -0
- package/dist/28.maestro-web-sdk.esm.js +2 -0
- package/dist/28.maestro-web-sdk.esm.js.map +1 -0
- package/dist/29.maestro-web-sdk.esm.js +2 -0
- package/dist/29.maestro-web-sdk.esm.js.map +1 -0
- package/dist/3.maestro-web-sdk.esm.js +2 -0
- package/dist/3.maestro-web-sdk.esm.js.map +1 -0
- package/dist/30.maestro-web-sdk.esm.js +2 -0
- package/dist/30.maestro-web-sdk.esm.js.map +1 -0
- package/dist/31.maestro-web-sdk.esm.js +2 -0
- package/dist/31.maestro-web-sdk.esm.js.map +1 -0
- package/dist/32.maestro-web-sdk.esm.js +2 -0
- package/dist/32.maestro-web-sdk.esm.js.map +1 -0
- package/dist/33.maestro-web-sdk.esm.js +2 -0
- package/dist/33.maestro-web-sdk.esm.js.map +1 -0
- package/dist/34.maestro-web-sdk.esm.js +2 -0
- package/dist/34.maestro-web-sdk.esm.js.map +1 -0
- package/dist/35.maestro-web-sdk.esm.js +2 -0
- package/dist/35.maestro-web-sdk.esm.js.map +1 -0
- package/dist/36.maestro-web-sdk.esm.js +2 -0
- package/dist/36.maestro-web-sdk.esm.js.map +1 -0
- package/dist/37.maestro-web-sdk.esm.js +2 -0
- package/dist/37.maestro-web-sdk.esm.js.map +1 -0
- package/dist/38.maestro-web-sdk.esm.js +2 -0
- package/dist/38.maestro-web-sdk.esm.js.map +1 -0
- package/dist/4.maestro-web-sdk.esm.js +2 -0
- package/dist/4.maestro-web-sdk.esm.js.map +1 -0
- package/dist/5.maestro-web-sdk.esm.js +2 -0
- package/dist/5.maestro-web-sdk.esm.js.map +1 -0
- package/dist/6.maestro-web-sdk.esm.js +2 -0
- package/dist/6.maestro-web-sdk.esm.js.map +1 -0
- package/dist/7.maestro-web-sdk.esm.js +2 -0
- package/dist/7.maestro-web-sdk.esm.js.map +1 -0
- package/dist/8.maestro-web-sdk.esm.js +2 -0
- package/dist/8.maestro-web-sdk.esm.js.map +1 -0
- package/dist/9.maestro-web-sdk.esm.js +2 -0
- package/dist/9.maestro-web-sdk.esm.js.map +1 -0
- package/dist/index.d.ts +135 -1087
- package/dist/maestro-web-sdk.esm.js +3 -32
- package/dist/maestro-web-sdk.esm.js.map +1 -1
- package/dist/maestro-web-sdk.umd.js +3 -32
- package/dist/maestro-web-sdk.umd.js.map +1 -1
- package/dist/package.json +94 -0
- package/dist/src/components/atoms/BaseButton/BaseButton.d.ts +7 -0
- package/dist/src/components/atoms/BaseButton/BaseButton.js +11 -0
- package/dist/src/components/atoms/BaseButton/index.d.ts +2 -0
- package/dist/src/components/atoms/BaseButton/index.js +2 -0
- package/dist/src/components/atoms/Image/index.d.ts +13 -0
- package/dist/src/components/atoms/Image/index.js +34 -0
- package/dist/src/components/atoms/Rive/index.d.ts +221 -0
- package/dist/src/components/atoms/Rive/index.js +53 -0
- package/dist/src/components/atoms/SvgIcon/BetGeneralIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/BetGeneralIcon.js +9 -0
- package/dist/src/components/atoms/SvgIcon/BetsIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/BetsIcon.js +8 -0
- package/dist/src/components/atoms/SvgIcon/BetsWarningIcon.d.ts +7 -0
- package/dist/src/components/atoms/SvgIcon/BetsWarningIcon.js +11 -0
- package/dist/src/components/atoms/SvgIcon/BuilderIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/BuilderIcon.js +8 -0
- package/dist/src/components/atoms/SvgIcon/ChatIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/ChatIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/CheckmarkIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/CheckmarkIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/CollapseIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/CollapseIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/ExpandIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/ExpandIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/FantasyIcon.d.ts +7 -0
- package/dist/src/components/atoms/SvgIcon/FantasyIcon.js +15 -0
- package/dist/src/components/atoms/SvgIcon/FlameIcon.d.ts +7 -0
- package/dist/src/components/atoms/SvgIcon/FlameIcon.js +11 -0
- package/dist/src/components/atoms/SvgIcon/FoxKeyPlaysIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/FoxKeyPlaysIcon.js +7 -0
- package/dist/src/components/atoms/SvgIcon/FoxMultiViewIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/FoxMultiViewIcon.js +10 -0
- package/dist/src/components/atoms/SvgIcon/FoxStatsIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/FoxStatsIcon.js +7 -0
- package/dist/src/components/atoms/SvgIcon/HelloWorldIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/HelloWorldIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/Icon.d.ts +15 -0
- package/dist/src/components/atoms/SvgIcon/Icon.js +68 -0
- package/dist/src/components/atoms/SvgIcon/KeyPlaysIcon.d.ts +6 -0
- package/dist/src/components/atoms/SvgIcon/KeyPlaysIcon.js +10 -0
- package/dist/src/components/atoms/SvgIcon/MobilePhoneIcon.d.ts +7 -0
- package/dist/src/components/atoms/SvgIcon/MobilePhoneIcon.js +11 -0
- package/dist/src/components/atoms/SvgIcon/PlayIcon.d.ts +6 -0
- package/dist/src/components/atoms/SvgIcon/PlayIcon.js +8 -0
- package/dist/src/components/atoms/SvgIcon/ShopIcon.d.ts +5 -0
- package/dist/src/components/atoms/SvgIcon/ShopIcon.js +7 -0
- package/dist/src/components/atoms/SvgIcon/ShopifyIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/ShopifyIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/StatsIcon.d.ts +6 -0
- package/dist/src/components/atoms/SvgIcon/StatsIcon.js +12 -0
- package/dist/src/components/atoms/SvgIcon/TimesIcon.d.ts +3 -0
- package/dist/src/components/atoms/SvgIcon/TimesIcon.js +6 -0
- package/dist/src/components/atoms/SvgIcon/WarningIcon.d.ts +6 -0
- package/dist/src/components/atoms/SvgIcon/WarningIcon.js +8 -0
- package/dist/src/components/atoms/SvgIcon/index.d.ts +2 -0
- package/dist/src/components/atoms/SvgIcon/index.js +2 -0
- package/dist/src/components/core/App/App.d.ts +11 -0
- package/dist/src/components/core/App/App.js +35 -0
- package/dist/src/components/core/App/index.d.ts +2 -0
- package/dist/src/components/core/App/index.js +2 -0
- package/dist/src/components/core/PanelManager/PanelManager.d.ts +21 -0
- package/dist/src/components/core/PanelManager/PanelManager.js +102 -0
- package/dist/src/components/core/PanelManager/index.d.ts +2 -0
- package/dist/src/components/core/PanelManager/index.js +2 -0
- package/dist/src/components/core/ScrollableContainer/FocusableItem.d.ts +11 -0
- package/dist/src/components/core/ScrollableContainer/FocusableItem.js +24 -0
- package/dist/src/components/core/ScrollableContainer/ScrollableContainer.d.ts +54 -0
- package/dist/src/components/core/ScrollableContainer/ScrollableContainer.js +111 -0
- package/dist/src/components/core/ScrollableContainer/index.d.ts +6 -0
- package/dist/src/components/core/ScrollableContainer/index.js +5 -0
- package/dist/src/components/core/ScrollableContainer/useScrollableContainer.d.ts +14 -0
- package/dist/src/components/core/ScrollableContainer/useScrollableContainer.js +22 -0
- package/dist/src/components/molecules/ActionButton/ActionButton.d.ts +96 -0
- package/dist/src/components/molecules/ActionButton/ActionButton.js +15 -0
- package/dist/src/components/molecules/ActionButton/index.d.ts +2 -0
- package/dist/src/components/molecules/ActionButton/index.js +2 -0
- package/dist/src/components/molecules/HeadshotImage/HeadshotImage.d.ts +16 -0
- package/dist/src/components/molecules/HeadshotImage/HeadshotImage.js +50 -0
- package/dist/src/components/molecules/HeadshotImage/index.d.ts +2 -0
- package/dist/src/components/molecules/HeadshotImage/index.js +2 -0
- package/dist/src/components/molecules/PanelNavButton/PanelNavButton.d.ts +106 -0
- package/dist/src/components/molecules/PanelNavButton/PanelNavButton.js +27 -0
- package/dist/src/components/molecules/PanelNavButton/index.d.ts +2 -0
- package/dist/src/components/molecules/PanelNavButton/index.js +2 -0
- package/dist/src/components/molecules/SegmentButton/SegmentButton.d.ts +9 -0
- package/dist/src/components/molecules/SegmentButton/SegmentButton.js +10 -0
- package/dist/src/components/molecules/SegmentButton/index.d.ts +2 -0
- package/dist/src/components/molecules/SegmentButton/index.js +2 -0
- package/dist/src/components/molecules/TabLoadError/TabLoadError.d.ts +96 -0
- package/dist/src/components/molecules/TabLoadError/TabLoadError.js +14 -0
- package/dist/src/components/molecules/TabLoadError/index.d.ts +2 -0
- package/dist/src/components/molecules/TabLoadError/index.js +2 -0
- package/dist/src/components/molecules/WatchButton/WatchButton.d.ts +10 -0
- package/dist/src/components/molecules/WatchButton/WatchButton.js +15 -0
- package/dist/src/components/molecules/WatchButton/index.d.ts +2 -0
- package/dist/src/components/molecules/WatchButton/index.js +2 -0
- package/dist/src/components/organisms/PanelNavigation/PanelNavigation.d.ts +16 -0
- package/dist/src/components/organisms/PanelNavigation/PanelNavigation.js +60 -0
- package/dist/src/components/organisms/PanelNavigation/index.d.ts +2 -0
- package/dist/src/components/organisms/PanelNavigation/index.js +2 -0
- package/dist/src/components/organisms/SegmentController/SegmentController.d.ts +12 -0
- package/dist/src/components/organisms/SegmentController/SegmentController.js +35 -0
- package/dist/src/components/organisms/SegmentController/index.d.ts +3 -0
- package/dist/src/components/organisms/SegmentController/index.js +2 -0
- package/dist/src/development/MaestroEventDelegate.d.ts +27 -0
- package/dist/src/development/MaestroEventDelegate.js +109 -0
- package/dist/src/development/TimeSeek.d.ts +22 -0
- package/dist/src/development/TimeSeek.js +218 -0
- package/dist/src/development/development.d.ts +1 -0
- package/dist/src/development/development.js +39 -0
- package/dist/src/external/AxiosNetworkClient.d.ts +28 -0
- package/dist/src/external/AxiosNetworkClient.js +110 -0
- package/dist/src/external/LocalStorageCacheManager.d.ts +65 -0
- package/dist/src/external/LocalStorageCacheManager.js +213 -0
- package/dist/src/external/ReactRenderer.d.ts +17 -0
- package/dist/src/external/ReactRenderer.js +66 -0
- package/dist/src/external/mocks/MockExternalNetworkClient.d.ts +104 -0
- package/dist/src/external/mocks/MockExternalNetworkClient.js +187 -0
- package/dist/src/external/ports/cacheManager.d.ts +17 -0
- package/dist/src/external/ports/cacheManager.js +1 -0
- package/dist/src/external/ports/networkClient.d.ts +19 -0
- package/dist/src/external/ports/networkClient.js +1 -0
- package/dist/src/external/ports/renderer.d.ts +4 -0
- package/dist/src/external/ports/renderer.js +1 -0
- package/dist/src/external/spatial-navigation/__mocks__/withFocusable.d.ts +8 -0
- package/dist/src/external/spatial-navigation/__mocks__/withFocusable.js +7 -0
- package/dist/src/external/spatial-navigation/index.d.ts +4 -0
- package/dist/src/external/spatial-navigation/index.js +3 -0
- package/dist/src/external/spatial-navigation/measureLayout.d.ts +2 -0
- package/dist/src/external/spatial-navigation/measureLayout.js +30 -0
- package/dist/src/external/spatial-navigation/spatialNavigation.d.ts +160 -0
- package/dist/src/external/spatial-navigation/spatialNavigation.js +944 -0
- package/dist/src/external/spatial-navigation/utils.d.ts +22 -0
- package/dist/src/external/spatial-navigation/utils.js +6 -0
- package/dist/src/external/spatial-navigation/visualDebugger.d.ts +17 -0
- package/dist/src/external/spatial-navigation/visualDebugger.js +76 -0
- package/dist/src/external/spatial-navigation/withFocusable.d.ts +131 -0
- package/dist/src/external/spatial-navigation/withFocusable.js +254 -0
- package/dist/src/helpers/Observable.d.ts +12 -0
- package/dist/src/helpers/Observable.js +37 -0
- package/dist/src/helpers/strings.d.ts +2 -0
- package/dist/src/helpers/strings.js +14 -0
- package/dist/src/helpers/url.d.ts +1 -0
- package/dist/src/helpers/url.js +12 -0
- package/dist/src/hooks/useMaxHeightToBottom.d.ts +11 -0
- package/dist/src/hooks/useMaxHeightToBottom.js +48 -0
- package/dist/src/index.d.ts +53 -0
- package/dist/src/index.js +197 -0
- package/dist/src/interfaces/IMaestroEvent.d.ts +108 -0
- package/dist/src/interfaces/IMaestroEvent.js +1 -0
- package/dist/src/interfaces/IMaestroEventDelegate.d.ts +74 -0
- package/dist/src/interfaces/IMaestroEventDelegate.js +1 -0
- package/dist/src/interfaces/IMaestroManager.d.ts +81 -0
- package/dist/src/interfaces/IMaestroManager.js +1 -0
- package/dist/src/interfaces/IUserSettings.d.ts +44 -0
- package/dist/src/interfaces/IUserSettings.js +20 -0
- package/dist/src/models/IModel.d.ts +7 -0
- package/dist/src/models/IModel.js +1 -0
- package/dist/src/models/IPanel.d.ts +19 -0
- package/dist/src/models/IPanel.js +12 -0
- package/dist/src/models/ITheme.d.ts +77 -0
- package/dist/src/models/ITheme.js +20 -0
- package/dist/src/modules/espn/bets/interfaces/IBets.d.ts +192 -0
- package/dist/src/modules/espn/bets/interfaces/IBets.js +1 -0
- package/dist/src/modules/espn/bets/interfaces/IBetsViewModel.d.ts +5 -0
- package/dist/src/modules/espn/bets/interfaces/IBetsViewModel.js +1 -0
- package/dist/src/modules/espn/bets/mocks.d.ts +2 -0
- package/dist/src/modules/espn/bets/mocks.js +573 -0
- package/dist/src/modules/espn/bets/services/BetsService.d.ts +81 -0
- package/dist/src/modules/espn/bets/services/BetsService.js +123 -0
- package/dist/src/modules/espn/bets/types/BetsAnalyticsTypes.d.ts +8 -0
- package/dist/src/modules/espn/bets/types/BetsAnalyticsTypes.js +1 -0
- package/dist/src/modules/espn/bets/view/BetsView.d.ts +30 -0
- package/dist/src/modules/espn/bets/view/BetsView.js +169 -0
- package/dist/src/modules/espn/bets/view/HotProps/HotPropsView.d.ts +103 -0
- package/dist/src/modules/espn/bets/view/HotProps/HotPropsView.js +133 -0
- package/dist/src/modules/espn/bets/view/SixPack/SixPackView.d.ts +9 -0
- package/dist/src/modules/espn/bets/view/SixPack/SixPackView.js +77 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetResult/BetResult.d.ts +6 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetResult/BetResult.js +6 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetsCard/BetsCard.d.ts +104 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetsCard/BetsCard.js +140 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetsCard/BetsCardEvent.d.ts +16 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetsCard/BetsCardEvent.js +8 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetsCard/BetsCardFooter.d.ts +7 -0
- package/dist/src/modules/espn/bets/view/UserBets/BetsCard/BetsCardFooter.js +18 -0
- package/dist/src/modules/espn/bets/view/UserBets/Boost/Boost.d.ts +7 -0
- package/dist/src/modules/espn/bets/view/UserBets/Boost/Boost.js +6 -0
- package/dist/src/modules/espn/bets/view/UserBets/OutcomeBadge/OutcomeBadge.d.ts +6 -0
- package/dist/src/modules/espn/bets/view/UserBets/OutcomeBadge/OutcomeBadge.js +9 -0
- package/dist/src/modules/espn/bets/view/UserBets/Parlay/Parlay.d.ts +8 -0
- package/dist/src/modules/espn/bets/view/UserBets/Parlay/Parlay.js +13 -0
- package/dist/src/modules/espn/bets/view/UserBets/Straight/Straight.d.ts +7 -0
- package/dist/src/modules/espn/bets/view/UserBets/Straight/Straight.js +6 -0
- package/dist/src/modules/espn/bets/view/UserBets/Teaser/Teaser.d.ts +7 -0
- package/dist/src/modules/espn/bets/view/UserBets/Teaser/Teaser.js +13 -0
- package/dist/src/modules/espn/bets/view/UserBets/UserBetsView.d.ts +25 -0
- package/dist/src/modules/espn/bets/view/UserBets/UserBetsView.js +107 -0
- package/dist/src/modules/espn/bets/view/components/Bet/Bet.d.ts +10 -0
- package/dist/src/modules/espn/bets/view/components/Bet/Bet.js +41 -0
- package/dist/src/modules/espn/bets/view/components/BetPill/BetPill.d.ts +6 -0
- package/dist/src/modules/espn/bets/view/components/BetPill/BetPill.js +6 -0
- package/dist/src/modules/espn/bets/view/components/BetsCard/BetsCard.d.ts +10 -0
- package/dist/src/modules/espn/bets/view/components/BetsCard/BetsCard.js +24 -0
- package/dist/src/modules/espn/bets/view/components/BetsCard/BetsCardHeader.d.ts +16 -0
- package/dist/src/modules/espn/bets/view/components/BetsCard/BetsCardHeader.js +20 -0
- package/dist/src/modules/espn/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.d.ts +7 -0
- package/dist/src/modules/espn/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.js +31 -0
- package/dist/src/modules/espn/bets/view/components/GamblingDisclaimer/index.d.ts +1 -0
- package/dist/src/modules/espn/bets/view/components/GamblingDisclaimer/index.js +1 -0
- package/dist/src/modules/espn/bets/view/components/LocationWarning/LocationWarning.d.ts +10 -0
- package/dist/src/modules/espn/bets/view/components/LocationWarning/LocationWarning.js +16 -0
- package/dist/src/modules/espn/bets/view/components/PromoCodeBanner/PromoCodeBanner.d.ts +5 -0
- package/dist/src/modules/espn/bets/view/components/PromoCodeBanner/PromoCodeBanner.js +45 -0
- package/dist/src/modules/espn/bets/view/components/PromoCodeBanner/index.d.ts +1 -0
- package/dist/src/modules/espn/bets/view/components/PromoCodeBanner/index.js +1 -0
- package/dist/src/modules/espn/bets/view-model/BetsViewModel.d.ts +218 -0
- package/dist/src/modules/espn/bets/view-model/BetsViewModel.js +947 -0
- package/dist/src/modules/espn/fantasy/components/ExpandedAthleteList/ExpandedAthletesList.d.ts +28 -0
- package/dist/src/modules/espn/fantasy/components/ExpandedAthleteList/ExpandedAthletesList.js +107 -0
- package/dist/src/modules/espn/fantasy/components/ExpandedAthleteList/index.d.ts +1 -0
- package/dist/src/modules/espn/fantasy/components/ExpandedAthleteList/index.js +1 -0
- package/dist/src/modules/espn/fantasy/components/LeagueCard/LeagueCard.d.ts +104 -0
- package/dist/src/modules/espn/fantasy/components/LeagueCard/LeagueCard.js +20 -0
- package/dist/src/modules/espn/fantasy/components/LeagueCard/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/components/LeagueCard/index.js +2 -0
- package/dist/src/modules/espn/fantasy/components/TopPlayerCard/TopPlayerCard.d.ts +101 -0
- package/dist/src/modules/espn/fantasy/components/TopPlayerCard/TopPlayerCard.js +29 -0
- package/dist/src/modules/espn/fantasy/components/TopPlayerCard/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/components/TopPlayerCard/index.js +2 -0
- package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/TournamentOverflowQR.d.ts +103 -0
- package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/TournamentOverflowQR.js +94 -0
- package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/index.d.ts +1 -0
- package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/index.js +1 -0
- package/dist/src/modules/espn/fantasy/mocks.d.ts +7620 -0
- package/dist/src/modules/espn/fantasy/mocks.js +3682 -0
- package/dist/src/modules/espn/fantasy/services/FantasyService.d.ts +76 -0
- package/dist/src/modules/espn/fantasy/services/FantasyService.js +124 -0
- package/dist/src/modules/espn/fantasy/types.d.ts +294 -0
- package/dist/src/modules/espn/fantasy/types.js +9 -0
- package/dist/src/modules/espn/fantasy/view/ActiveAthletesMarquee/ActiveAthletesMarquee.d.ts +21 -0
- package/dist/src/modules/espn/fantasy/view/ActiveAthletesMarquee/ActiveAthletesMarquee.js +74 -0
- package/dist/src/modules/espn/fantasy/view/ActiveAthletesMarquee/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/ActiveAthletesMarquee/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/FantasyHeaderView.d.ts +8 -0
- package/dist/src/modules/espn/fantasy/view/FantasyHeaderView.js +8 -0
- package/dist/src/modules/espn/fantasy/view/FantasyItemView.d.ts +8 -0
- package/dist/src/modules/espn/fantasy/view/FantasyItemView.js +48 -0
- package/dist/src/modules/espn/fantasy/view/FantasyView.d.ts +34 -0
- package/dist/src/modules/espn/fantasy/view/FantasyView.js +212 -0
- package/dist/src/modules/espn/fantasy/view/InactiveLeague/DraftDateCountdown.d.ts +23 -0
- package/dist/src/modules/espn/fantasy/view/InactiveLeague/DraftDateCountdown.js +95 -0
- package/dist/src/modules/espn/fantasy/view/InactiveLeague/InactiveLeague.d.ts +100 -0
- package/dist/src/modules/espn/fantasy/view/InactiveLeague/InactiveLeague.js +13 -0
- package/dist/src/modules/espn/fantasy/view/InactiveLeague/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/InactiveLeague/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/LoginView/LoginView.d.ts +96 -0
- package/dist/src/modules/espn/fantasy/view/LoginView/LoginView.js +27 -0
- package/dist/src/modules/espn/fantasy/view/LoginView/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/LoginView/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/DoubleAthleteCard/DoubleAthleteCard.d.ts +97 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/DoubleAthleteCard/DoubleAthleteCard.js +25 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/DoubleAthleteCard/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/DoubleAthleteCard/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/ExpandedDoubleAthleteCards.d.ts +14 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/ExpandedDoubleAthleteCards.js +9 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/MatchupPair.d.ts +102 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/MatchupPair.js +118 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupPair/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/ExpandedSingleAthleteCards.d.ts +14 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/ExpandedSingleAthleteCards.js +9 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/MatchupSingle.d.ts +102 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/MatchupSingle.js +108 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/SingleAthleteCard/SingleAthleteCard.d.ts +97 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/SingleAthleteCard/SingleAthleteCard.js +18 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/SingleAthleteCard/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/SingleAthleteCard/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/MatchupSingle/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/PromoView/PromoView.d.ts +100 -0
- package/dist/src/modules/espn/fantasy/view/PromoView/PromoView.js +12 -0
- package/dist/src/modules/espn/fantasy/view/PromoView/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/PromoView/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/TournamentBracketCard/TournamentBracketCard.d.ts +101 -0
- package/dist/src/modules/espn/fantasy/view/TournamentBracketCard/TournamentBracketCard.js +37 -0
- package/dist/src/modules/espn/fantasy/view/TournamentBracketCard/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/TournamentBracketCard/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view/index.d.ts +2 -0
- package/dist/src/modules/espn/fantasy/view/index.js +2 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.FantasyPolling.d.ts +32 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.FantasyPolling.js +132 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.LeagueManagerPolling.d.ts +32 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.LeagueManagerPolling.js +141 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.TournamentPolling.d.ts +32 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.TournamentPolling.js +140 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.d.ts +167 -0
- package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.js +798 -0
- package/dist/src/modules/espn/key-plays/constants.d.ts +3 -0
- package/dist/src/modules/espn/key-plays/constants.js +292 -0
- package/dist/src/modules/espn/key-plays/interfaces/IKeyPlays.d.ts +32 -0
- package/dist/src/modules/espn/key-plays/interfaces/IKeyPlays.js +14 -0
- package/dist/src/modules/espn/key-plays/interfaces/IKeyPlaysResponse.d.ts +44 -0
- package/dist/src/modules/espn/key-plays/interfaces/IKeyPlaysResponse.js +1 -0
- package/dist/src/modules/espn/key-plays/interfaces/IKeyPlaysViewModel.d.ts +17 -0
- package/dist/src/modules/espn/key-plays/interfaces/IKeyPlaysViewModel.js +1 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlayCardScoreTagView.d.ts +9 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlayCardScoreTagView.js +16 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlayCardView.d.ts +27 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlayCardView.js +115 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlayErrorStateView.d.ts +13 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlayErrorStateView.js +65 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlaysView.d.ts +39 -0
- package/dist/src/modules/espn/key-plays/view/KeyPlaysView.js +179 -0
- package/dist/src/modules/espn/key-plays/view-model/KeyPlaysViewModel.d.ts +37 -0
- package/dist/src/modules/espn/key-plays/view-model/KeyPlaysViewModel.js +245 -0
- package/dist/src/modules/espn/shop/mocks.d.ts +22 -0
- package/dist/src/modules/espn/shop/mocks.js +391 -0
- package/dist/src/modules/espn/shop/services/ShopService.d.ts +23 -0
- package/dist/src/modules/espn/shop/services/ShopService.js +44 -0
- package/dist/src/modules/espn/shop/types.d.ts +164 -0
- package/dist/src/modules/espn/shop/types.js +7 -0
- package/dist/src/modules/espn/shop/view/ProductDetailView/ProductDetailView.d.ts +10 -0
- package/dist/src/modules/espn/shop/view/ProductDetailView/ProductDetailView.js +60 -0
- package/dist/src/modules/espn/shop/view/ProductDetailView/index.d.ts +2 -0
- package/dist/src/modules/espn/shop/view/ProductDetailView/index.js +2 -0
- package/dist/src/modules/espn/shop/view/ShopView.d.ts +38 -0
- package/dist/src/modules/espn/shop/view/ShopView.js +223 -0
- package/dist/src/modules/espn/shop/view/components/BrowseCard/BrowseCard.d.ts +103 -0
- package/dist/src/modules/espn/shop/view/components/BrowseCard/BrowseCard.js +23 -0
- package/dist/src/modules/espn/shop/view/components/BrowseCard/index.d.ts +2 -0
- package/dist/src/modules/espn/shop/view/components/BrowseCard/index.js +2 -0
- package/dist/src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.d.ts +104 -0
- package/dist/src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.js +26 -0
- package/dist/src/modules/espn/shop/view/components/ProductSummaryCard/index.d.ts +2 -0
- package/dist/src/modules/espn/shop/view/components/ProductSummaryCard/index.js +1 -0
- package/dist/src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.d.ts +8 -0
- package/dist/src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.js +19 -0
- package/dist/src/modules/espn/shop/view/components/ShopPromoView/index.d.ts +1 -0
- package/dist/src/modules/espn/shop/view/components/ShopPromoView/index.js +1 -0
- package/dist/src/modules/espn/shop/view/components/ShopSection/ShopSection.d.ts +12 -0
- package/dist/src/modules/espn/shop/view/components/ShopSection/ShopSection.js +34 -0
- package/dist/src/modules/espn/shop/view/components/ShopSection/index.d.ts +1 -0
- package/dist/src/modules/espn/shop/view/components/ShopSection/index.js +1 -0
- package/dist/src/modules/espn/shop/view/index.d.ts +2 -0
- package/dist/src/modules/espn/shop/view/index.js +2 -0
- package/dist/src/modules/espn/shop/view-model/ShopViewModel.ShopPolling.d.ts +31 -0
- package/dist/src/modules/espn/shop/view-model/ShopViewModel.ShopPolling.js +111 -0
- package/dist/src/modules/espn/shop/view-model/ShopViewModel.d.ts +73 -0
- package/dist/src/modules/espn/shop/view-model/ShopViewModel.js +323 -0
- package/dist/src/modules/espn/stats/components/TeamStatistic.d.ts +16 -0
- package/dist/src/modules/espn/stats/components/TeamStatistic.js +13 -0
- package/dist/src/modules/espn/stats/interfaces/IStats.d.ts +330 -0
- package/dist/src/modules/espn/stats/interfaces/IStats.js +46 -0
- package/dist/src/modules/espn/stats/interfaces/IStatsViewModel.d.ts +7 -0
- package/dist/src/modules/espn/stats/interfaces/IStatsViewModel.js +1 -0
- package/dist/src/modules/espn/stats/mocks.d.ts +2 -0
- package/dist/src/modules/espn/stats/mocks.js +746 -0
- package/dist/src/modules/espn/stats/services/StatsService.d.ts +54 -0
- package/dist/src/modules/espn/stats/services/StatsService.js +155 -0
- package/dist/src/modules/espn/stats/utils/driveSummaryUtils.d.ts +18 -0
- package/dist/src/modules/espn/stats/utils/driveSummaryUtils.js +48 -0
- package/dist/src/modules/espn/stats/utils/playerStatusUtils.d.ts +4 -0
- package/dist/src/modules/espn/stats/utils/playerStatusUtils.js +17 -0
- package/dist/src/modules/espn/stats/utils.d.ts +39 -0
- package/dist/src/modules/espn/stats/utils.js +62 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/ActiveAthletes.d.ts +22 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/ActiveAthletes.js +98 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/CollapsedAthletes/CollapsedAthletes.d.ts +4 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/CollapsedAthletes/CollapsedAthletes.js +27 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/ExpandedAthletes/ExpandedAthletes.d.ts +22 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/ExpandedAthletes/ExpandedAthletes.js +89 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/ActiveAthletes/index.js +2 -0
- package/dist/src/modules/espn/stats/view/CareerMatchup/CareerMatchup.d.ts +101 -0
- package/dist/src/modules/espn/stats/view/CareerMatchup/CareerMatchup.js +59 -0
- package/dist/src/modules/espn/stats/view/CareerMatchup/index.d.ts +1 -0
- package/dist/src/modules/espn/stats/view/CareerMatchup/index.js +1 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/DrivePlayCard.d.ts +105 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/DrivePlayCard.js +32 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/DriveSummary.d.ts +10 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/DriveSummary.js +40 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/ExpandedItems/DriveSummaryExpanded.d.ts +27 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/ExpandedItems/DriveSummaryExpanded.js +129 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/Header/DriveSummaryHeader.d.ts +12 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/Header/DriveSummaryHeader.js +26 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/MainStat/MainStat.d.ts +10 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/MainStat/MainStat.js +24 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/DriveSummary/index.js +2 -0
- package/dist/src/modules/espn/stats/view/GameLeaders/GameLeaders.d.ts +9 -0
- package/dist/src/modules/espn/stats/view/GameLeaders/GameLeaders.js +22 -0
- package/dist/src/modules/espn/stats/view/GameLeaders/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/GameLeaders/index.js +2 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/DonutChart/DonutChart.d.ts +17 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/DonutChart/DonutChart.js +55 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/DonutChart/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/DonutChart/index.js +1 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/MatchPredictorView.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/MatchPredictorView.js +60 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/index.d.ts +3 -0
- package/dist/src/modules/espn/stats/view/MatchPredictor/index.js +2 -0
- package/dist/src/modules/espn/stats/view/Penalties/Penalties.d.ts +9 -0
- package/dist/src/modules/espn/stats/view/Penalties/Penalties.js +6 -0
- package/dist/src/modules/espn/stats/view/Penalties/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/Penalties/index.js +2 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/ExpandedPlayerStats.d.ts +16 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/ExpandedPlayerStats.js +66 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/PlayerSeasonStatsCard.d.ts +99 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/PlayerSeasonStatsCard.js +26 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/PlayerSeasonStatsMinified.d.ts +6 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/PlayerSeasonStatsMinified.js +17 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/PlayerSeasonStatsView.d.ts +8 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/PlayerSeasonStatsView.js +165 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/index.d.ts +1 -0
- package/dist/src/modules/espn/stats/view/PlayerSeasonStats/index.js +1 -0
- package/dist/src/modules/espn/stats/view/RecentGames/RecentGames.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/RecentGames/RecentGames.js +23 -0
- package/dist/src/modules/espn/stats/view/RecentGames/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/RecentGames/index.js +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ExpandedScores/ExpandedScores.d.ts +30 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ExpandedScores/ExpandedScores.js +123 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ExpandedScores/ExpandedSummary.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ExpandedScores/ExpandedSummary.js +24 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ExpandedScores/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ExpandedScores/index.js +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoreItem/ScoreItem.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoreItem/ScoreItem.js +62 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoreItem/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoreItem/index.js +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoresSection/ScoresSection.d.ts +6 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoresSection/ScoresSection.js +23 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoresSection/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoresSection/index.js +2 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoringSummary.d.ts +12 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/ScoringSummary.js +167 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/index.d.ts +1 -0
- package/dist/src/modules/espn/stats/view/ScoringSummary/index.js +1 -0
- package/dist/src/modules/espn/stats/view/StatsItemView.d.ts +8 -0
- package/dist/src/modules/espn/stats/view/StatsItemView.js +66 -0
- package/dist/src/modules/espn/stats/view/StatsQRCode/StatsQRCodeView.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/StatsQRCode/StatsQRCodeView.js +36 -0
- package/dist/src/modules/espn/stats/view/StatsQRCode/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/StatsQRCode/index.js +1 -0
- package/dist/src/modules/espn/stats/view/StatsView.d.ts +29 -0
- package/dist/src/modules/espn/stats/view/StatsView.js +164 -0
- package/dist/src/modules/espn/stats/view/TeamStats/TeamStatsView.d.ts +101 -0
- package/dist/src/modules/espn/stats/view/TeamStats/TeamStatsView.js +77 -0
- package/dist/src/modules/espn/stats/view/TeamStats/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/TeamStats/index.js +1 -0
- package/dist/src/modules/espn/stats/view/Teams/StatsCarousel.d.ts +25 -0
- package/dist/src/modules/espn/stats/view/Teams/StatsCarousel.js +83 -0
- package/dist/src/modules/espn/stats/view/Teams/StatsProgressBar.d.ts +6 -0
- package/dist/src/modules/espn/stats/view/Teams/StatsProgressBar.js +19 -0
- package/dist/src/modules/espn/stats/view/Teams/Teams.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/Teams/Teams.js +39 -0
- package/dist/src/modules/espn/stats/view/Teams/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/Teams/index.js +2 -0
- package/dist/src/modules/espn/stats/view/WinProbability/WinProbability.d.ts +100 -0
- package/dist/src/modules/espn/stats/view/WinProbability/WinProbability.js +28 -0
- package/dist/src/modules/espn/stats/view/WinProbability/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/WinProbability/index.js +2 -0
- package/dist/src/modules/espn/stats/view/components/AthletesStatistics/AthletesStatistics.d.ts +115 -0
- package/dist/src/modules/espn/stats/view/components/AthletesStatistics/AthletesStatistics.js +89 -0
- package/dist/src/modules/espn/stats/view/components/AthletesStatistics/StatisticTable.d.ts +3 -0
- package/dist/src/modules/espn/stats/view/components/AthletesStatistics/StatisticTable.js +12 -0
- package/dist/src/modules/espn/stats/view/components/AthletesStatistics/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/components/AthletesStatistics/index.js +2 -0
- package/dist/src/modules/espn/stats/view/index.d.ts +2 -0
- package/dist/src/modules/espn/stats/view/index.js +2 -0
- package/dist/src/modules/espn/stats/view-model/StatsViewModel.d.ts +322 -0
- package/dist/src/modules/espn/stats/view-model/StatsViewModel.js +1416 -0
- package/dist/src/modules/fox/key-plays/view/FoxKeyPlays.d.ts +2 -0
- package/dist/src/modules/fox/key-plays/view/FoxKeyPlays.js +5 -0
- package/dist/src/modules/fox/multi-view/view/FoxMultiView.d.ts +2 -0
- package/dist/src/modules/fox/multi-view/view/FoxMultiView.js +5 -0
- package/dist/src/modules/fox/stats/view/FoxStatsView.d.ts +2 -0
- package/dist/src/modules/fox/stats/view/FoxStatsView.js +5 -0
- package/dist/src/modules/maestro/builder/components/BuilderSection/BuilderSection.d.ts +11 -0
- package/dist/src/modules/maestro/builder/components/BuilderSection/BuilderSection.js +52 -0
- package/dist/src/modules/maestro/builder/components/BuilderSection/index.d.ts +2 -0
- package/dist/src/modules/maestro/builder/components/BuilderSection/index.js +2 -0
- package/dist/src/modules/maestro/builder/components/ExpandableCard/ExpandableCard.d.ts +110 -0
- package/dist/src/modules/maestro/builder/components/ExpandableCard/ExpandableCard.js +37 -0
- package/dist/src/modules/maestro/builder/components/ExpandableCard/index.d.ts +2 -0
- package/dist/src/modules/maestro/builder/components/ExpandableCard/index.js +2 -0
- package/dist/src/modules/maestro/builder/components/SimpleCard/SimpleCard.d.ts +104 -0
- package/dist/src/modules/maestro/builder/components/SimpleCard/SimpleCard.js +12 -0
- package/dist/src/modules/maestro/builder/components/SimpleCard/index.d.ts +2 -0
- package/dist/src/modules/maestro/builder/components/SimpleCard/index.js +2 -0
- package/dist/src/modules/maestro/builder/index.d.ts +7 -0
- package/dist/src/modules/maestro/builder/index.js +7 -0
- package/dist/src/modules/maestro/builder/mocks/mockBuilderPanel.d.ts +149 -0
- package/dist/src/modules/maestro/builder/mocks/mockBuilderPanel.js +240 -0
- package/dist/src/modules/maestro/builder/types.d.ts +52 -0
- package/dist/src/modules/maestro/builder/types.js +1 -0
- package/dist/src/modules/maestro/builder/view/BuilderPanelView.d.ts +4 -0
- package/dist/src/modules/maestro/builder/view/BuilderPanelView.js +52 -0
- package/dist/src/modules/maestro/builder/view-model/BuilderPanelViewModel.d.ts +40 -0
- package/dist/src/modules/maestro/builder/view-model/BuilderPanelViewModel.js +229 -0
- package/dist/src/modules/maestro/builder/view-model/index.d.ts +1 -0
- package/dist/src/modules/maestro/builder/view-model/index.js +1 -0
- package/dist/src/modules/maestro/hello-world/HelloWorldImage.d.ts +2 -0
- package/dist/src/modules/maestro/hello-world/HelloWorldImage.js +32 -0
- package/dist/src/modules/maestro/hello-world/HelloWorldView.d.ts +11 -0
- package/dist/src/modules/maestro/hello-world/HelloWorldView.js +40 -0
- package/dist/src/modules/maestro/hello-world/index.d.ts +2 -0
- package/dist/src/modules/maestro/hello-world/index.js +2 -0
- package/dist/src/sentry.d.ts +3 -0
- package/dist/src/sentry.js +51 -0
- package/dist/src/services/AnalyticsService/AnalyticsService.d.ts +85 -0
- package/dist/src/services/AnalyticsService/AnalyticsService.js +406 -0
- package/dist/src/services/AnalyticsService/types.d.ts +65 -0
- package/dist/src/services/AnalyticsService/types.js +1 -0
- package/dist/src/services/InsightsService/InsightsPayloadBuilder.d.ts +279 -0
- package/dist/src/services/InsightsService/InsightsPayloadBuilder.js +385 -0
- package/dist/src/services/InsightsService/InsightsService.d.ts +11 -0
- package/dist/src/services/InsightsService/InsightsService.js +74 -0
- package/dist/src/services/NetworkManager/NetworkManager.d.ts +153 -0
- package/dist/src/services/NetworkManager/NetworkManager.js +434 -0
- package/dist/src/services/NetworkManager/errors.d.ts +17 -0
- package/dist/src/services/NetworkManager/errors.js +45 -0
- package/dist/src/services/NetworkManager/types.d.ts +7 -0
- package/dist/src/services/NetworkManager/types.js +1 -0
- package/dist/src/services/StaticService/StaticService.d.ts +20 -0
- package/dist/src/services/StaticService/StaticService.js +84 -0
- package/dist/src/services/StaticService/index.d.ts +2 -0
- package/dist/src/services/StaticService/index.js +2 -0
- package/dist/src/services/StaticService/mocks.d.ts +3 -0
- package/dist/src/services/StaticService/mocks.js +119 -0
- package/dist/src/services/StaticService/types.d.ts +78 -0
- package/dist/src/services/StaticService/types.js +1 -0
- package/dist/src/services/ThemeManager/constants.d.ts +2 -0
- package/dist/src/services/ThemeManager/constants.js +47 -0
- package/dist/src/services/UserSettingsManager.d.ts +63 -0
- package/dist/src/services/UserSettingsManager.js +158 -0
- package/dist/src/test-polyfills.d.ts +1 -0
- package/dist/src/test-polyfills.js +15 -0
- package/dist/src/view-models/MaestroEventViewModel.d.ts +94 -0
- package/dist/src/view-models/MaestroEventViewModel.js +370 -0
- package/dist/src/view-models/PanelManagerViewModel.d.ts +49 -0
- package/dist/src/view-models/PanelManagerViewModel.js +195 -0
- package/dist/src/view-models/ViewModel.d.ts +12 -0
- package/dist/src/view-models/ViewModel.js +32 -0
- package/package.json +7 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/helpers/strings.ts","webpack:///./src/modules/espn/fantasy/services/FantasyService.ts","webpack:///./src/modules/espn/fantasy/types.ts","webpack:///./src/modules/espn/fantasy/view-model/FantasyViewModel.FantasyPolling.ts","webpack:///./src/modules/espn/fantasy/view-model/FantasyViewModel.LeagueManagerPolling.ts","webpack:///./src/modules/espn/fantasy/view-model/FantasyViewModel.TournamentPolling.ts","webpack:///./src/modules/espn/fantasy/mocks.ts","webpack:///./src/modules/espn/fantasy/view-model/FantasyViewModel.ts"],"names":["slugify","str","toLowerCase","trim","replace","stringHashCode","hash","i","length","charCodeAt","FantasyService","constructor","_defineProperty","this","networkManager","NetworkManager","fantasyOverrideBaseUrl","leagueManagerOverrideBaseUrl","gambitOverrideBaseUrl","pollFantasy","eventId","jwt","swid","interval","onData","onError","pollExternalApiRequestWithHeaders","endpoint","fantasyBaseUrl","headers","params","displayHiddenPrefs","prefType","context","useCookieAuth","source","featureFlags","filterType","platform","pollLeagueManager","game","leagueId","seasonId","token","proGameId","teamId","leagueManagerBaseUrl","view","getPromo","externalApiRequest","useCache","pollTournamentChallenge","challengeId","competitionId","tournamentChallengeBaseUrl","isLeagueManagerRotoResponse","response","_matchups","_matchups$","undefined","matchups","teams","FantasyPolling","service","task","lastResponseHash","fantasyService","callback","stop","start","polling","removeLastResponseHash","updateInterval","processPolledData","data","error","handlePollingError","captureException","console","headerInterval","getResponseHeaderPollingIntervalValue","panelConfigInterval","getPanelConfigInterval","newInterval","log","refresh","parsedInterval","parseInt","isNaN","warn","_config$panels","_panel$renderer","_panel$renderer$block","config","SDK","getPageConfig","panel","panels","find","p","panel_type","fantasyPollingInterval","renderer","block_data","fan_polling_interval","responseHash","JSON","stringify","extra","substring","pollingInterval","LeagueManagerPolling","key","_this$polling$key","_this$polling$key2","_this$polling$key2$ta","_this$polling$key2$ta2","call","_this$polling$key3","_this$polling$key4","lm_polling_interval","stopAll","Object","keys","forEach","_this$polling$key5","TournamentPolling","tournamentPollingInterval","gambit_polling_interval","MOCK_FANTASY_RESPONSE","id","anon","profile","createDate","lastUpdateDate","hasNotificationPreferences","useSortGlobal","settings","videoAutoStart","value","hideSportsBetting","activeProducts","isInsider","isPremium","lastName","firstName","email","userName","lastAccessDate","bettingFeatures","name","preferences","metaData","entry","entryId","entryMetadata","teamName","teamAbbrev","leagueFormatTypeId","leagueSubTypeId","customizable","active","draftComplete","scoringTypeId","leagueTypeId","draftInProgress","scoringTypeName","leagueSubTypeName","firstScoringPeriodId","gameId","groups","groupId","groupSize","groupName","groupManager","draftDate","draftType","draftStatus","leagueStatus","fantasyCastHref","href","draftTypeName","logoType","logoUrl","restrictionType","entryURL","scoreboardFeedURL","abbrev","description","logoURL","signupURL","restrictionTypeName","inSeason","isLive","currentScoringPeriodId","contentSourceId","sortGlobal","isHidden","typeId","type","code","isDeletable","isDelegated","maxAllowed","bu","lineup","proGameToNumPlayersStarting","currentLineup","entryUuid","lastAvailableDate","logoURLs","logoSecondary","logoPrimary","darkLogoURL","lightLogoURL","gameUrl","entryName","challengeGroups","score","eliminated","overallScore","percentile","rank","record","losses","wins","scoreByGroup","scoringFormatId","isImplicit","affinity","groupSettings","fantasyData","totalFantasyLeagues","leaguesBySportLeague","NFL","MLB","NBA","NHL","WNBA","totalChallengeEntries","challengeInformation","gameType","challengeName","challengeAbbrev","scoringFormatIds","state","logoUrls","logo","logoDark","logo1x1","logo1x1Dark","mappings","userEntryCount","challengeScoreboardEnabled","leagueScoreboardEnabled","FantasyViewModel","delegate","analyticsService","options","Observable","Map","useMockData","fantasyPolling","leagueManagerPolling","tournamentPolling","trackPanelView","fetchData","userIsAuthenticated","append","fantasyItems","getUserSWID","getUserToken","fetchMockData","processFantasy","bind","onEngage","panelClick","metadata","card","onAskLogin","onPanelEvent","payload","onLoginSuccess","async","cleanup","leagueSortOrder","clear","itemToLeagueKey","_fantasyLeagues","_tournamentChallenges","_tcProcessingCount","isLoadingTc","panelView","_data$fantasyData","_data$fantasyData2","_data$fantasyData3","hidePickems","hide_pickems","hasChallenges","noData","_data$fantasyData4","_data$fantasyData4$ch","challenge","String","parseTournamentChallenge","rebuildFantasyItems","promo","getPromoData","_promoItem","background","fantasy","promotion","qrCode","title","_pref$metaData","_entry$groups","_entry$groups$","_entry$groups2","_entry$groups2$","pref","set","_entry$entryMetadata","_matchups2","_matchups2$","parseInactiveLeague","home","items","parseHeadToHead","item","parseRoto","hasEverSuccessfullyLoaded","errorState","preference","_data$matchups","leagueName","scoringType","matchup","_matchup$teams","team","sportLogo","sportColor","points","roster","matchupRoster","activeAthletes","r","_r$player$proTeam","player","abbrevName","headshot","proTeam","triCode","slot","push","athleteHeadshot","athleteAbbrevName","athletesSlot","teamTriCode","proGameStatusLines","currentlyWatching","toString","topPlayers","parseTopPlayers","league","color","subtitle","includes","leagueKey","existingItemIndex","findIndex","sort","a","b","_this$leagueSortOrder","_this$leagueSortOrder2","keyA","get","keyB","Number","MAX_SAFE_INTEGER","existingGroupIndex","g","header","group","_data$matchups2","away","homeRoster","awayRoster","_singleAwayRoster$pla","_matchup$away","_singleHomeRoster$pla","_matchup$home","_singleHomeRoster$pla2","singleAwayRoster","singleHomeRoster","stats","projectedPoints","awayTeam","winProbability","homeTeam","players","_p$proTeam","_p$playerStatus","_p$positions","rosteredBy","percentRostered","playerStatus","startsWith","position","positions","split","draftDateNum","parsedDate","Date","getTime","leagueColor","leagueLogo","_promoData","_data$entries","validEntries","entries","filter","totalEntries","entriesToShow","slice","_outcomePicked","_outcomePicked2","userPickName","propositions","picks","pick","propositionId","outcomeId","proposition","outcomes","outcome","o","Math","round","entryStatusIcon","finalPick","primaryLogo","outcomePicked","secondaryLogo","result","isComplete","tournamentId","tournamentAbbrev","tournamentLogo","promoData","qrCodeVariant","locked","promoVariant","overflowQR","isDataLoading","clearTabLoadFailure","setTimeout","setDataToPanel"],"mappings":"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","file":"12.maestro-web-sdk.esm.js","sourcesContent":["export const slugify = (str: string) =>\n str\n .toLowerCase()\n .trim()\n .replace(/[\\s\\W-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n\nexport function stringHashCode(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n","import NetworkManager from '../../../../services/NetworkManager/NetworkManager';\nimport {\n IFantasyResponse,\n ILeagueManagerResponse,\n IPromoResponse,\n TournamentChallenge,\n} from '@/modules/espn/fantasy/types';\n\nconst FANTASY_BASE_URL = 'https://fan.api.espn.com';\nconst LEAGUE_MANAGER_BASE_URL = 'https://lm-api-reads.fantasy.espn.com';\nconst TOURNAMENT_CHALLENGE_BASE_URL = 'https://gambit-api.fantasy.espn.com';\nconst PROMO_URL = 'https://client.espncdn.com/ictv/promo.json';\n\nexport type LeagueManagerPollingParams = {\n /**\n * NBA, NFL, etc.\n */\n game: string;\n /**\n * 2025\n */\n seasonId: number;\n /**\n * The league ID\n */\n leagueId: number;\n token: string;\n proGameId: string;\n teamId: number;\n};\n\nexport type FantasyPollingParams = {\n swid: string;\n jwt: string;\n eventId: string;\n};\n\nexport type TournamentChallengePollingParams = {\n challengeId: string;\n competitionId: string;\n token: string;\n};\n\n/**\n * Service for handling fantasy API calls\n */\nclass FantasyService {\n private networkManager: NetworkManager;\n leagueManagerOverrideBaseUrl = '';\n fantasyOverrideBaseUrl = '';\n gambitOverrideBaseUrl = '';\n\n constructor() {\n this.networkManager = new NetworkManager();\n }\n\n get fantasyBaseUrl() {\n return this.fantasyOverrideBaseUrl || FANTASY_BASE_URL;\n }\n\n get leagueManagerBaseUrl() {\n return this.leagueManagerOverrideBaseUrl || LEAGUE_MANAGER_BASE_URL;\n }\n\n get tournamentChallengeBaseUrl() {\n return this.gambitOverrideBaseUrl || TOURNAMENT_CHALLENGE_BASE_URL;\n }\n\n /**\n * Polls the fantasy API at regular intervals\n * @param swid - The SWID of the user\n * @param interval - Polling interval in milliseconds\n * @param onData - Callback invoked with the data on each successful poll\n * @param onError - Optional callback invoked on error\n */\n pollFantasy(\n { eventId, jwt, swid }: FantasyPollingParams,\n interval: number,\n onData: (data: {\n data: IFantasyResponse;\n headers: Record<string, string>;\n }) => void,\n onError?: (error: Error) => void\n ): { stop: () => void } {\n return this.networkManager.pollExternalApiRequestWithHeaders<\n IFantasyResponse\n >({\n endpoint: `${this.fantasyBaseUrl}/apis/v2/fans/${swid}`,\n interval,\n headers: {\n 'x-p13n-auth': jwt,\n },\n onData,\n onError,\n params: {\n displayHiddenPrefs: true,\n prefType: 'fantasy',\n context: 'fantasy',\n useCookieAuth: true,\n source: 'fantasyictv-bbd',\n featureFlags: 'challengeEntries',\n filterType: 'FANTASY_CTV',\n platform: 'fantasyictv_bbd',\n swid,\n eventId,\n },\n });\n }\n\n pollLeagueManager(\n {\n game,\n leagueId,\n seasonId,\n token,\n proGameId,\n teamId,\n }: LeagueManagerPollingParams,\n interval: number,\n onData: (data: {\n data: ILeagueManagerResponse;\n headers: Record<string, string>;\n }) => void,\n onError?: (error: Error) => void\n ): { stop: () => void } {\n return this.networkManager.pollExternalApiRequestWithHeaders<\n ILeagueManagerResponse\n >({\n endpoint: `${this.leagueManagerBaseUrl}/apis/v3/games/${game}/seasons/${seasonId}/segments/0/leagues/${leagueId}/scoreboard`,\n interval,\n onData,\n onError,\n headers: {\n 'x-p13n-auth': token,\n },\n params: {\n view: 'ictv_scoreboard',\n platform: 'fantasyictv_bbd',\n proGameId,\n teamId,\n },\n });\n }\n\n getPromo() {\n return this.networkManager.externalApiRequest<IPromoResponse>({\n endpoint: PROMO_URL,\n useCache: true,\n });\n }\n\n /**\n * Polls the tournament challenge API at regular intervals\n * @param challengeId - The challenge ID\n * @param interval - Polling interval in milliseconds\n * @param onData - Callback invoked with the data on each successful poll\n * @param onError - Optional callback invoked on error\n * @returns Object with a stop function to cancel polling\n */\n pollTournamentChallenge(\n { challengeId, competitionId, token }: TournamentChallengePollingParams,\n interval: number,\n onData: (data: {\n data: TournamentChallenge;\n headers: Record<string, string>;\n }) => void,\n onError?: (error: Error) => void\n ): { stop: () => void } {\n return this.networkManager.pollExternalApiRequestWithHeaders<\n TournamentChallenge\n >({\n endpoint: `${this.tournamentChallengeBaseUrl}/apis/v1/challenges/${challengeId}/scoreboard`,\n interval,\n onData,\n onError,\n headers: {\n 'x-p13n-auth': token,\n },\n params: {\n competitionId,\n view: 'ictv_challenges',\n platform: 'fantasyictv_bbd',\n },\n });\n }\n}\n\nexport default FantasyService;\n","export interface IPromoResponse {\n fantasy: {\n promotion: {\n title: string;\n description: string;\n background: string;\n logo: string;\n qrCode: string;\n fallbackUrl: string;\n };\n };\n 'tc-pre'?: {\n promotion: {\n title: string;\n description: string;\n background: string;\n logo: string;\n qrCode: string;\n fallbackUrl: string;\n };\n };\n 'tc-live'?: {\n promotion: {\n title: string;\n description: string;\n background: string;\n logo: string;\n qrCode: string;\n fallbackUrl: string;\n };\n };\n}\n\nexport interface IFantasyResponse {\n preferences?: Preference[];\n fantasyData?: FantasyData;\n}\n\nexport interface Preference {\n id?: string;\n createDate?: number;\n lastUpdateDate?: number;\n metaData?: {\n entry?: {\n entryId?: number;\n entryMetadata?: {\n teamName?: string;\n teamAbbrev?: string;\n leagueFormatTypeId?: number;\n leagueSubTypeId?: number;\n customizable?: boolean;\n active?: boolean;\n draftComplete?: boolean;\n scoringTypeId?: number;\n leagueTypeId?: number;\n draftInProgress?: boolean;\n };\n firstScoringPeriodId?: number;\n gameId?: number;\n groups?: {\n groupId?: number;\n groupSize?: number;\n groupName?: string;\n groupManager?: boolean;\n draftDate?: number | string | null;\n draftType?: number;\n draftStatus?: number;\n leagueStatus?: number;\n fantasyCastHref?: string;\n href?: string;\n }[];\n logoType?: string;\n logoUrl?: string;\n restrictionType?: number;\n seasonId?: number;\n entryURL?: string;\n scoreboardFeedURL?: string;\n abbrev?: string;\n name?: string;\n description?: string;\n logoURL?: string;\n signupURL?: string;\n href?: string;\n };\n inSeason?: boolean;\n isLive?: boolean;\n currentScoringPeriodId?: number;\n };\n contentSourceId?: number;\n sortGlobal?: number;\n isHidden?: boolean;\n typeId?: number;\n type?: {\n id?: number;\n name?: string;\n code?: string;\n isDeletable?: boolean;\n isDelegated?: boolean;\n maxAllowed?: number;\n };\n bu?: number;\n}\n\nexport interface ChallengeInformation {\n id: string | number;\n gameType: string;\n}\n\nexport interface FantasyData {\n totalFantasyLeagues?: number;\n leaguesBySportLeague?: Record<string, number>;\n totalChallengeEntries?: number;\n challengeInformation?: ChallengeInformation[];\n}\n\nexport interface ILeagueManagerResponse {\n gameId?: number;\n id?: number;\n leagueName?: string;\n livePlayers?: any[];\n matchups?: Matchup[];\n scoringPeriodId?: number;\n scoringType?: string;\n seasonId?: number;\n segmentId?: number;\n sportColor?: string;\n sportLogo?: string;\n topPlayers?: Player[];\n}\n\nexport interface Matchup {\n away?: Team;\n home?: Team;\n id?: number;\n name?: string;\n}\n\nexport interface Team {\n currentScoringPeriodPoints?: number;\n id?: number;\n logo?: string;\n name?: string;\n owners?: Owner[];\n points?: number;\n score?: string;\n record?: string;\n roster?: RosterItem[];\n winProbability?: number;\n projectedPoints?: string;\n}\n\nexport interface Owner {\n firstName?: string;\n id?: string;\n lastName?: string;\n}\n\nexport interface RosterItem {\n displayOrder?: number;\n player?: Player;\n slot?: string;\n}\n\nexport interface Player {\n abbrevName?: string;\n currentlyWatching?: boolean;\n firstName?: string;\n fullName?: string;\n headshot?: string;\n id?: number;\n injuryStatus?: string;\n lastName?: string;\n lastNewsDate?: number;\n percentRostered?: number;\n points?: number;\n projectedPoints?: number;\n positions?: string;\n statLine?: string;\n playerStatus?: string;\n proGameStatusLines?: string[];\n proTeam?: ProTeam;\n}\n\nexport interface ProTeam {\n alternateColor?: string;\n color?: string;\n darkLogo?: string;\n id?: number;\n live?: boolean;\n triCode?: string;\n}\n\nexport interface ILeagueManagerRotoResponse {\n gameId?: number;\n id?: number;\n leagueName?: string;\n name?: string;\n livePlayers?: any[]; // No structure provided\n matchups?: MatchupSingleEntry[];\n scoringPeriodId?: number;\n scoringType?: string;\n seasonId?: number;\n segmentId?: number;\n sportColor?: string;\n sportLogo?: string;\n topPlayers?: Player[];\n}\n\nexport interface MatchupSingleEntry {\n id?: number;\n teams?: Team[];\n}\n\nexport const isLeagueManagerRotoResponse = (\n response: ILeagueManagerResponse | ILeagueManagerRotoResponse\n): response is ILeagueManagerRotoResponse => {\n return (\n (response as ILeagueManagerRotoResponse).matchups?.[0]?.teams !== undefined\n );\n};\n\nexport const isLeagueManagerHeadToHeadResponse = (\n response: ILeagueManagerResponse | ILeagueManagerRotoResponse\n): response is ILeagueManagerResponse => {\n return (response as ILeagueManagerResponse).matchups?.[0]?.home !== undefined;\n};\n\nexport interface TournamentPick {\n propositionId?: string;\n outcomeId?: string;\n}\n\nexport interface TournamentPropositionOutcome {\n id?: string;\n name?: string;\n}\n\nexport interface TournamentProposition {\n id?: string;\n outcomes?: TournamentPropositionOutcome[];\n}\n\nexport interface TournamentChallengeEntry {\n id?: string;\n name?: string;\n rank?: number;\n score?: number;\n percentile?: number;\n isComplete?: boolean;\n entryStatusIcon?: string;\n finalPick?: TournamentPick & {\n primaryLogo?: string;\n secondaryLogo?: string;\n result?: string;\n };\n picks?: TournamentPick[];\n}\n\nexport interface TournamentChallenge {\n id?: string;\n key?: string;\n name?: string;\n abbrev?: string;\n logo?: string;\n logoDark?: string;\n state?: 'PRE' | 'LIVE' | 'POST';\n locked?: boolean;\n lockDate?: string | number;\n scoringPeriodLabel?: string;\n upcomingGames?: any[];\n entries?: TournamentChallengeEntry[];\n propositions?: TournamentProposition[];\n}\n\nexport const isTournamentChallenge = (\n data: any\n): data is TournamentChallenge => {\n return (data as TournamentChallenge).entries?.[0]?.id !== undefined;\n};\n\nexport type TournamentChallengeHeaderItem = {\n type: 'tournament-challenge-header';\n id: string;\n name: string;\n abbrev: string;\n logo: string;\n logoDark: string;\n state: 'PRE' | 'LIVE' | 'POST';\n scoringPeriodLabel: string;\n upcomingGames: any[];\n};\n\nexport type TournamentBracketCardItem = {\n type: 'tournament-bracket-card';\n id: string;\n name: string;\n rank: number;\n score: number;\n percentile: number;\n entryStatusIcon: string;\n finalPick: TournamentPick & {\n primaryLogo?: string;\n secondaryLogo?: string;\n result?: string;\n };\n picks?: TournamentPick[];\n isComplete: boolean;\n tournamentId: string;\n tournamentAbbrev: string;\n tournamentLogo: string;\n userPickName?: string;\n propositions?: TournamentProposition[];\n};\n\nexport type FantasyHeaderItem = {\n type: 'fantasy-header';\n id: string;\n title: string;\n};\n\nexport interface IFantasyViewModel {\n cleanup(): void;\n}\n\nexport type TournamentOverflowQRItem = {\n type: 'tournament-overflow-qr';\n id: string;\n background: string;\n logo: string;\n qrCode: string;\n title: string;\n description: string;\n tournamentId: string;\n};\n","import SDK from '@/index';\nimport { captureException } from '@/sentry';\nimport FantasyService, {\n FantasyPollingParams,\n} from '@/modules/espn/fantasy/services/FantasyService';\nimport { IFantasyResponse } from '../types';\nimport { stringHashCode } from '@/helpers/strings';\n\ntype Polling = {\n interval: number;\n task: { stop: () => void } | null;\n lastResponseHash: number | null;\n};\n\nconst DEFAULT_FANTASY_POLLING_INTERVAL = 60000;\n\nexport default class FantasyPolling {\n private polling: Polling = {\n interval: DEFAULT_FANTASY_POLLING_INTERVAL,\n task: null,\n lastResponseHash: null,\n };\n private fantasyService: FantasyService;\n\n constructor(service: FantasyService) {\n this.fantasyService = service;\n }\n\n /**\n * Refresh polling for fantasy data\n */\n async refresh(\n params: FantasyPollingParams,\n callback: (data: IFantasyResponse) => void\n ): Promise<void> {\n // First stop any existing polling\n this.stop();\n\n // Start the poll loop\n await this.start(params, callback);\n }\n\n /**\n * Stop polling for fantasy data\n */\n stop(): void {\n if (this.polling.task) {\n this.polling.task.stop();\n this.polling.task = null;\n }\n }\n\n removeLastResponseHash(): void {\n this.polling.lastResponseHash = null;\n }\n\n private async start(\n params: FantasyPollingParams,\n callback: (data: IFantasyResponse) => void\n ): Promise<void> {\n try {\n this.polling.task = this.fantasyService.pollFantasy(\n params,\n this.polling.interval,\n (response) => {\n this.updateInterval(params, response.headers, callback);\n this.processPolledData(response.data, callback);\n },\n (error) => this.handlePollingError(error, params.swid)\n );\n } catch (error) {\n captureException(error, {\n context: 'FantasyViewModel.pollFantasy',\n });\n console.error('[FANTASY] Error setting up fantasy polling:', error);\n }\n }\n\n /**\n * @description Update polling interval checking either response header or panel config.\n * Refresh polling if necessary.\n */\n private updateInterval(\n params: FantasyPollingParams,\n headers: Record<string, string>,\n callback: (data: IFantasyResponse) => void\n ): void {\n const headerInterval = this.getResponseHeaderPollingIntervalValue(headers);\n const panelConfigInterval = this.getPanelConfigInterval();\n\n const newInterval = headerInterval || panelConfigInterval; // order matters here\n\n // Only update if we have a valid new interval and it's different from current\n if (newInterval && newInterval !== this.polling.interval) {\n console.log(\n `[Fantasy] Updating fantasy polling interval from ${this.polling.interval}ms to ${newInterval}ms`\n );\n this.polling.interval = newInterval;\n // Restart polling with the new interval\n this.refresh(params, callback);\n }\n }\n\n private getResponseHeaderPollingIntervalValue(\n headers: Record<string, string>\n ): number | null {\n const newInterval = headers['polling-interval'];\n if (!newInterval) {\n return null;\n }\n\n const parsedInterval = parseInt(newInterval, 10);\n if (isNaN(parsedInterval) || parsedInterval <= 0) {\n console.warn(\n `[Fantasy] Invalid polling interval header received: ${newInterval}.`\n );\n return null;\n }\n\n return parsedInterval * 1000; // Convert seconds to milliseconds\n }\n\n private getPanelConfigInterval(): number | null {\n const config = SDK.getPageConfig();\n const panel = config?.panels?.find((p) => p.panel_type === 'espnFantasy');\n if (!panel) {\n return null;\n }\n\n const fantasyPollingInterval =\n panel.renderer?.block_data?.fan_polling_interval;\n if (!fantasyPollingInterval) {\n return null;\n }\n\n const parsedInterval = parseInt(fantasyPollingInterval, 10);\n if (isNaN(parsedInterval) || parsedInterval <= 0) {\n console.warn(\n `[FANTASY] Invalid fantasy polling interval from panel config: ${fantasyPollingInterval}.`\n );\n return null;\n }\n\n return parsedInterval * 1000; // Convert seconds to milliseconds\n }\n\n /**\n * Process data received from polling\n */\n private processPolledData(\n data: IFantasyResponse,\n callback: (data: IFantasyResponse) => void\n ): void {\n // Calculate hash for the response to check if it's different from the last one\n const responseHash = stringHashCode(JSON.stringify(data));\n\n // Check if this is the same as the last successful response\n if (this.polling.lastResponseHash === responseHash) {\n console.log(\n '[Fantasy] Fantasy Response hash is the same as last successful response - skipping update'\n );\n return;\n }\n\n this.polling.lastResponseHash = responseHash;\n callback(data);\n }\n\n /**\n * Handle errors that occur during fantasy polling\n */\n private handlePollingError(error: Error, swid: string): void {\n console.error('[FANTASY] Fantasy polling error:', error);\n\n captureException(error, {\n context: 'FantasyViewModel.pollFantasy',\n extra: {\n swid: swid ? `${swid.substring(0, 8)}...` : 'unknown',\n pollingInterval: this.polling.interval,\n },\n });\n }\n}\n","import SDK from '@/index';\nimport { captureException } from '@/sentry';\nimport FantasyService, {\n LeagueManagerPollingParams,\n} from '@/modules/espn/fantasy/services/FantasyService';\nimport { ILeagueManagerResponse, ILeagueManagerRotoResponse } from '../types';\nimport { stringHashCode } from '@/helpers/strings';\n\ntype Polling = {\n interval: number;\n task: { stop: () => void } | null;\n lastResponseHash: number | null;\n};\n\nconst DEFAULT_LEAGUE_MANAGER_POLLING_INTERVAL = 60000;\n\nexport default class LeagueManagerPolling {\n private polling: Record<string, Polling> = {};\n private fantasyService: FantasyService;\n\n constructor(service: FantasyService) {\n this.fantasyService = service;\n }\n\n /**\n * Refresh polling for league manager data\n */\n refresh(\n key: string,\n params: LeagueManagerPollingParams,\n callback: (\n data: ILeagueManagerResponse | ILeagueManagerRotoResponse\n ) => void\n ): void {\n // First stop any existing polling\n this.stop(key);\n\n // Initialize polling state if it doesn't exist\n if (!this.polling[key]) {\n this.polling[key] = {\n interval: DEFAULT_LEAGUE_MANAGER_POLLING_INTERVAL,\n lastResponseHash: null,\n task: null,\n };\n }\n\n // Start the poll loop\n this.start(key, params, callback);\n }\n\n /**\n * Stop polling for fantasy data\n */\n stop(key: string): void {\n if (this.polling[key]?.task) {\n this.polling[key]?.task?.stop?.();\n this.polling[key].task = null;\n }\n }\n\n private start(\n key: string,\n params: LeagueManagerPollingParams,\n callback: (\n data: ILeagueManagerResponse | ILeagueManagerRotoResponse\n ) => void\n ) {\n try {\n this.polling[key].task = this.fantasyService.pollLeagueManager(\n params,\n this.polling[key].interval,\n (response) => {\n this.updateInterval(key, params, callback, response.headers);\n this.processPolledData(key, response.data, callback);\n },\n (error) => this.handlePollingError(error, key, params)\n );\n } catch (error) {\n captureException(error, {\n context: 'FantasyViewModel.pollLeagueManager',\n });\n console.error(\n '[FANTASY] Error setting up league manager polling:',\n error\n );\n }\n }\n\n /**\n * Process data received from polling\n */\n private processPolledData(\n key: string,\n data: ILeagueManagerResponse | ILeagueManagerRotoResponse,\n callback: (\n data: ILeagueManagerResponse | ILeagueManagerRotoResponse\n ) => void\n ): void {\n // Calculate hash for the response to check if it's different from the last one\n const responseHash = stringHashCode(JSON.stringify(data));\n\n // Check if this is the same as the last successful response\n if (this.polling[key].lastResponseHash === responseHash) {\n console.log(\n '[Fantasy] League manager Response hash is the same as last successful response - skipping update'\n );\n return;\n }\n\n this.polling[key].lastResponseHash = responseHash;\n callback(data);\n }\n\n /**\n * @description Update polling interval checking either response header or panel config.\n * Refresh polling if necessary.\n */\n private updateInterval(\n key: string,\n params: LeagueManagerPollingParams,\n callback: (\n data: ILeagueManagerResponse | ILeagueManagerRotoResponse\n ) => void,\n headers: Record<string, string>\n ): void {\n const headerInterval = this.getResponseHeaderPollingIntervalValue(headers);\n const panelConfigInterval = this.getPanelConfigInterval();\n\n const newInterval = headerInterval || panelConfigInterval; // order matters here\n\n // Only update if we have a valid new interval and it's different from current\n if (newInterval && newInterval !== this.polling[key]?.interval) {\n console.log(\n `[Fantasy] Updating league manager polling interval from ${this.polling[key]?.interval}ms to ${newInterval}ms`\n );\n this.polling[key].interval = newInterval;\n // Restart polling with the new interval\n this.refresh(key, params, callback);\n }\n }\n\n private getResponseHeaderPollingIntervalValue(\n headers: Record<string, string>\n ): number | null {\n const newInterval = headers['polling-interval'];\n if (!newInterval) {\n return null;\n }\n\n const parsedInterval = parseInt(newInterval, 10);\n if (isNaN(parsedInterval) || parsedInterval <= 0) {\n console.warn(\n `[Fantasy] Invalid polling interval header received: ${newInterval}.`\n );\n return null;\n }\n\n return parsedInterval * 1000; // Convert seconds to milliseconds\n }\n\n private getPanelConfigInterval() {\n const config = SDK.getPageConfig();\n const panel = config?.panels?.find((p) => p.panel_type === 'espnFantasy');\n if (!panel) {\n return null;\n }\n\n const fantasyPollingInterval =\n panel.renderer?.block_data?.lm_polling_interval;\n if (!fantasyPollingInterval) {\n return null;\n }\n\n const parsedInterval = parseInt(fantasyPollingInterval, 10);\n if (isNaN(parsedInterval) || parsedInterval <= 0) {\n console.warn(\n `[FANTASY] Invalid league manager polling interval from panel config: ${fantasyPollingInterval}.`\n );\n return null;\n }\n\n return parsedInterval * 1000; // Convert seconds to milliseconds\n }\n\n stopAll() {\n Object.keys(this.polling).forEach((key) => {\n this.stop(key);\n });\n\n this.polling = {};\n }\n\n /**\n * Handle errors that occur during league manager polling\n */\n private handlePollingError(\n error: Error,\n key: string,\n params: LeagueManagerPollingParams\n ): void {\n console.error('[FANTASY] League manager polling error:', error);\n\n captureException(error, {\n context: 'FantasyViewModel.pollLeagueManager',\n extra: {\n key,\n leagueId: params?.leagueId,\n game: params?.game,\n pollingInterval: this.polling[key]?.interval,\n },\n });\n }\n}\n","import SDK from '@/index';\nimport { captureException } from '@/sentry';\nimport FantasyService, {\n TournamentChallengePollingParams,\n} from '@/modules/espn/fantasy/services/FantasyService';\nimport { TournamentChallenge } from '../types';\nimport { stringHashCode } from '@/helpers/strings';\n\ntype Polling = {\n interval: number;\n task: { stop: () => void } | null;\n lastResponseHash: number | null;\n};\n\nconst DEFAULT_TOURNAMENT_POLLING_INTERVAL = 60000;\n\nexport default class TournamentPolling {\n private polling: Record<string, Polling> = {};\n private fantasyService: FantasyService;\n\n constructor(service: FantasyService) {\n this.fantasyService = service;\n }\n\n /**\n * Refresh polling for tournament challenge data\n */\n refresh(\n key: string,\n params: TournamentChallengePollingParams,\n callback: (data: TournamentChallenge) => void\n ): void {\n // First stop any existing polling\n this.stop(key);\n\n // Initialize polling state if it doesn't exist\n if (!this.polling[key]) {\n this.polling[key] = {\n interval: DEFAULT_TOURNAMENT_POLLING_INTERVAL,\n lastResponseHash: null,\n task: null,\n };\n }\n\n // Start the poll loop\n this.start(key, params, callback);\n }\n\n /**\n * Stop polling for tournament challenge data\n */\n stop(key: string): void {\n if (this.polling[key]?.task) {\n this.polling[key]?.task?.stop?.();\n this.polling[key].task = null;\n }\n }\n\n private start(\n key: string,\n params: TournamentChallengePollingParams,\n callback: (data: TournamentChallenge) => void\n ): void {\n try {\n this.polling[key].task = this.fantasyService.pollTournamentChallenge(\n params,\n this.polling[key].interval,\n (response) => {\n this.updateInterval(key, params, callback, response.headers);\n this.processPolledData(key, response.data, callback);\n },\n (error) => this.handlePollingError(error, key, params)\n );\n } catch (error) {\n captureException(error, {\n context: 'FantasyViewModel.pollTournamentChallenge',\n });\n console.error('[TOURNAMENT] Error setting up tournament polling:', error);\n }\n }\n\n /**\n * @description Update polling interval checking either response header or panel config.\n * Refresh polling if necessary.\n */\n private updateInterval(\n key: string,\n params: TournamentChallengePollingParams,\n callback: (data: TournamentChallenge) => void,\n headers: Record<string, string>\n ): void {\n const headerInterval = this.getResponseHeaderPollingIntervalValue(headers);\n const panelConfigInterval = this.getPanelConfigInterval();\n\n const newInterval = headerInterval || panelConfigInterval; // order matters here\n\n // Only update if we have a valid new interval and it's different from current\n if (newInterval && newInterval !== this.polling[key]?.interval) {\n console.log(\n `[TOURNAMENT] Updating tournament polling interval from ${this.polling[key]?.interval}ms to ${newInterval}ms`\n );\n this.polling[key].interval = newInterval;\n // Restart polling with the new interval\n this.refresh(key, params, callback);\n }\n }\n\n private getResponseHeaderPollingIntervalValue(\n headers: Record<string, string>\n ): number | null {\n const newInterval = headers['polling-interval'];\n if (!newInterval) {\n return null;\n }\n\n const parsedInterval = parseInt(newInterval, 10);\n if (isNaN(parsedInterval) || parsedInterval <= 0) {\n console.warn(\n `[TOURNAMENT] Invalid polling interval header received: ${newInterval}.`\n );\n return null;\n }\n\n return parsedInterval * 1000; // Convert seconds to milliseconds\n }\n\n private getPanelConfigInterval(): number | null {\n const config = SDK.getPageConfig();\n const panel = config?.panels?.find((p) => p.panel_type === 'espnFantasy');\n if (!panel) {\n return null;\n }\n\n const tournamentPollingInterval =\n panel.renderer?.block_data?.gambit_polling_interval;\n if (!tournamentPollingInterval) {\n return null;\n }\n\n const parsedInterval = parseInt(tournamentPollingInterval, 10);\n if (isNaN(parsedInterval) || parsedInterval <= 0) {\n console.warn(\n `[TOURNAMENT] Invalid tournament polling interval from panel config: ${tournamentPollingInterval}.`\n );\n return null;\n }\n\n return parsedInterval * 1000; // Convert seconds to milliseconds\n }\n\n /**\n * Process data received from polling\n */\n private processPolledData(\n key: string,\n data: TournamentChallenge,\n callback: (data: TournamentChallenge) => void\n ): void {\n // Calculate hash for the response to check if it's different from the last one\n const responseHash = stringHashCode(JSON.stringify(data));\n\n // Check if this is the same as the last successful response\n if (this.polling[key].lastResponseHash === responseHash) {\n console.log(\n '[TOURNAMENT] Tournament Response hash is the same as last successful response - skipping update'\n );\n return;\n }\n\n this.polling[key].lastResponseHash = responseHash;\n callback(data);\n }\n\n stopAll() {\n Object.keys(this.polling).forEach((key) => {\n this.stop(key);\n });\n\n this.polling = {};\n }\n\n /**\n * Handle errors that occur during tournament polling\n */\n private handlePollingError(\n error: Error,\n key: string,\n params: TournamentChallengePollingParams\n ): void {\n console.error('[TOURNAMENT] Tournament polling error:', error);\n\n captureException(error, {\n context: 'FantasyViewModel.pollTournamentChallenge',\n extra: {\n key,\n challengeId: params?.challengeId,\n pollingInterval: this.polling[key]?.interval,\n },\n });\n }\n}\n","import { ILeagueManagerResponse, ILeagueManagerRotoResponse } from './types';\n\nexport const MOCK_LEAGUE_MANAGER_HEAD_TO_HEAD_RESPONSE: ILeagueManagerResponse = {\n gameId: 5,\n id: 771877961,\n leagueName: \"It's mintyball, but for women.\",\n livePlayers: [],\n matchups: [\n {\n away: {\n projectedPoints: '50.00',\n winProbability: 0.36,\n currentScoringPeriodPoints: 0.0,\n id: 3,\n logo:\n 'https://mystique-api.fantasy.espn.com/apis/v1/domains/lm/images/71ec59b0-3b51-11f0-aeec-89a937148099',\n name: 'Minty 500',\n owners: [\n {\n firstName: 'Minty 500',\n id: '{CE2A7679-28E5-4B90-9510-6B56B944231F}',\n lastName: 'Quinty',\n },\n ],\n points: 906.0,\n record: '4-5-0',\n roster: [\n {\n displayOrder: 1,\n player: {\n abbrevName: 'P. Bueckers',\n currentlyWatching: true,\n firstName: 'Paige',\n fullName: 'Paige Bueckers',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4433730.jpg',\n id: 4433730,\n lastName: 'Bueckers',\n lastNewsDate: 1758036180000,\n percentRostered: 99.59,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'c4d600',\n color: '002b5c',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/3.jpg',\n id: 3,\n live: false,\n triCode: 'Dal',\n },\n },\n slot: 'G',\n },\n {\n displayOrder: 1,\n player: {\n abbrevName: 'C. Clark',\n currentlyWatching: true,\n firstName: 'Caitlin',\n fullName: 'Caitlin Clark',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4433403.jpg',\n id: 4433403,\n injuryStatus: 'O',\n lastName: 'Clark',\n lastNewsDate: 1757032140000,\n percentRostered: 78.79,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'e03a3e',\n color: '002d62',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/5.jpg',\n id: 5,\n live: false,\n triCode: 'Ind',\n },\n },\n slot: 'G',\n },\n {\n displayOrder: 5,\n player: {\n abbrevName: 'D. Bonner',\n currentlyWatching: false,\n firstName: 'DeWanna',\n fullName: 'DeWanna Bonner',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/869.jpg',\n id: 869,\n lastName: 'Bonner',\n lastNewsDate: 1758174780000,\n percentRostered: 65.6,\n points: 0.0,\n positions: 'F',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'e56020',\n color: '3c286e',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/11.jpg',\n id: 11,\n live: false,\n triCode: 'Phx',\n },\n },\n slot: 'F/C',\n },\n {\n displayOrder: 5,\n player: {\n abbrevName: 'N. Collier',\n currentlyWatching: false,\n firstName: 'Napheesa',\n fullName: 'Napheesa Collier',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/3917450.jpg',\n id: 3917450,\n lastName: 'Collier',\n lastNewsDate: 1758171180000,\n percentRostered: 99.96,\n points: 0.0,\n positions: 'F',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '79bc43',\n color: '266092',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/8.jpg',\n id: 8,\n live: false,\n triCode: 'Min',\n },\n },\n slot: 'F/C',\n },\n {\n displayOrder: 5,\n player: {\n abbrevName: 'S. Sabally',\n currentlyWatching: false,\n firstName: 'Satou',\n fullName: 'Satou Sabally',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4281929.jpg',\n id: 4281929,\n lastName: 'Sabally',\n lastNewsDate: 1758338400000,\n percentRostered: 99.26,\n points: 0.0,\n positions: 'F',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'e56020',\n color: '3c286e',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/11.jpg',\n id: 11,\n live: false,\n triCode: 'Phx',\n },\n },\n slot: 'F/C',\n },\n {\n displayOrder: 6,\n player: {\n abbrevName: 'B. Jones',\n currentlyWatching: false,\n firstName: 'Brionna',\n fullName: 'Brionna Jones',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/3058895.jpg',\n id: 3058895,\n lastName: 'Jones',\n lastNewsDate: 1758295080000,\n percentRostered: 96.03,\n points: 0.0,\n positions: 'C',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '5091cc',\n color: 'e31837',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/20.jpg',\n id: 20,\n live: false,\n triCode: 'Atl',\n },\n },\n slot: 'UTIL',\n },\n ],\n },\n home: {\n currentScoringPeriodPoints: 0.0,\n id: 1,\n logo:\n 'https://mystique-api.fantasy.espn.com/apis/v1/domains/lm/images/ecd69140-3b51-11f0-af3b-457a6c0242e4',\n name: 'Quintan 9',\n owners: [\n {\n firstName: 'Quintan',\n id: '{94E5C32F-41BF-49C3-A863-3685A39D26AF}',\n lastName: 'p',\n },\n ],\n points: 801.0,\n record: '7-2-0',\n roster: [\n {\n displayOrder: 1,\n player: {\n abbrevName: 'S. Cunningham',\n currentlyWatching: true,\n firstName: 'Sophie',\n fullName: 'Sophie Cunningham',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/3907781.jpg',\n id: 3907781,\n injuryStatus: 'O',\n lastName: 'Cunningham',\n lastNewsDate: 1755628680000,\n percentRostered: 26.66,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'e03a3e',\n color: '002d62',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/5.jpg',\n id: 5,\n live: false,\n triCode: 'Ind',\n },\n },\n slot: 'G',\n },\n {\n displayOrder: 1,\n player: {\n abbrevName: 'S. Ionescu',\n currentlyWatching: true,\n firstName: 'Sabrina',\n fullName: 'Sabrina Ionescu',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4066533.jpg',\n id: 4066533,\n lastName: 'Ionescu',\n lastNewsDate: 1758338640000,\n percentRostered: 99.97,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '000000',\n color: '86cebc',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/9.jpg',\n id: 9,\n live: false,\n triCode: 'NY',\n },\n },\n slot: 'G',\n },\n {\n displayOrder: 5,\n player: {\n abbrevName: 'J. Jones',\n currentlyWatching: false,\n firstName: 'Jonquel',\n fullName: 'Jonquel Jones',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/2999101.jpg',\n id: 2999101,\n lastName: 'Jones',\n lastNewsDate: 1758175440000,\n percentRostered: 97.92,\n points: 0.0,\n positions: 'F',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '000000',\n color: '86cebc',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/9.jpg',\n id: 9,\n live: false,\n triCode: 'NY',\n },\n },\n slot: 'F/C',\n },\n {\n displayOrder: 5,\n player: {\n abbrevName: 'E. Magbegor',\n currentlyWatching: false,\n firstName: 'Ezi',\n fullName: 'Ezi Magbegor',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4420318.jpg',\n id: 4420318,\n lastName: 'Magbegor',\n lastNewsDate: 1758300600000,\n percentRostered: 87.63,\n points: 0.0,\n positions: 'C',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'fee11a',\n color: '2c5235',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/14.jpg',\n id: 14,\n live: false,\n triCode: 'Sea',\n },\n },\n slot: 'F/C',\n },\n {\n displayOrder: 5,\n player: {\n abbrevName: 'A. Reese',\n currentlyWatching: true,\n firstName: 'Angel',\n fullName: 'Angel Reese',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4433402.jpg',\n id: 4433402,\n injuryStatus: 'O',\n lastName: 'Reese',\n lastNewsDate: 1757629500000,\n percentRostered: 95.99,\n points: 0.0,\n positions: 'F',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: 'ffd520',\n color: '5091cd',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/19.jpg',\n id: 19,\n live: false,\n triCode: 'Chi',\n },\n },\n slot: 'F/C',\n },\n {\n displayOrder: 6,\n player: {\n abbrevName: 'R. Howard',\n currentlyWatching: false,\n firstName: 'Rhyne',\n fullName: 'Rhyne Howard',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4398674.jpg',\n id: 4398674,\n lastName: 'Howard',\n lastNewsDate: 1758295500000,\n percentRostered: 96.93,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '5091cc',\n color: 'e31837',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/20.jpg',\n id: 20,\n live: false,\n triCode: 'Atl',\n },\n },\n slot: 'UTIL',\n },\n ],\n },\n id: 26,\n name: 'Matchup 13',\n },\n ],\n scoringPeriodId: 120,\n scoringType: 'H2H_POINTS',\n seasonId: 2025,\n segmentId: 0,\n sportColor: '#EE5C01',\n sportLogo:\n 'https://a.espncdn.com/assets/ESPN_IconUpdates_Jul252025/Fantasy/PNG/Fantasy_WFBA%2C%20Type%3DIcon.png',\n topPlayers: [\n {\n abbrevName: 'S. Ionescu',\n currentlyWatching: true,\n firstName: 'Sabrina',\n fullName: 'Sabrina Ionescu',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4066533.jpg',\n id: 4066533,\n lastName: 'Ionescu',\n lastNewsDate: 1758338640000,\n percentRostered: 99.97,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '000000',\n color: '86cebc',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/9.jpg',\n id: 9,\n live: false,\n triCode: 'NY',\n },\n },\n {\n abbrevName: 'S. Ionescu',\n currentlyWatching: true,\n firstName: 'Sabrina',\n fullName: 'Sabrina Ionescu',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4066533.jpg',\n id: 4066533,\n lastName: 'Ionescu',\n lastNewsDate: 1758338640000,\n percentRostered: 99.97,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '000000',\n color: '86cebc',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/9.jpg',\n id: 9,\n live: false,\n triCode: 'NY',\n },\n },\n {\n abbrevName: 'S. Ionescu',\n currentlyWatching: true,\n firstName: 'Sabrina',\n fullName: 'Sabrina Ionescu',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4066533.jpg',\n id: 4066533,\n lastName: 'Ionescu',\n lastNewsDate: 1758338640000,\n percentRostered: 99.97,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '000000',\n color: '86cebc',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/9.jpg',\n id: 9,\n live: false,\n triCode: 'NY',\n },\n },\n {\n abbrevName: 'S. Ionescu',\n currentlyWatching: true,\n firstName: 'Sabrina',\n fullName: 'Sabrina Ionescu',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/athletes/4066533.jpg',\n id: 4066533,\n lastName: 'Ionescu',\n lastNewsDate: 1758338640000,\n percentRostered: 99.97,\n points: 0.0,\n positions: 'G',\n proGameStatusLines: [],\n proTeam: {\n alternateColor: '000000',\n color: '86cebc',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/basketball/leagues/wnba/teams/9.jpg',\n id: 9,\n live: false,\n triCode: 'NY',\n },\n },\n ],\n};\n\nexport const MOCK_LEAGUE_MANAGER_ROTO_RESPONSE: ILeagueManagerRotoResponse = {\n gameId: 2,\n id: 1478040277,\n leagueName: \"It's mintyball.\",\n livePlayers: [],\n matchups: [\n {\n id: 1,\n teams: [\n {\n id: 1,\n logo:\n 'https://mystique-api.fantasy.espn.com/apis/v1/domains/lm/images/c5cc4860-21fc-11f0-a31a-a7584cabf55c',\n name: 'Quintan 9',\n owners: [\n {\n firstName: 'Quintan',\n id: '{94E5C32F-41BF-49C3-A863-3685A39D26AF}',\n lastName: 'p',\n },\n ],\n points: 30.0,\n roster: [\n {\n displayOrder: 0,\n player: {\n abbrevName: 'W. Contreras',\n currentlyWatching: true,\n firstName: 'William',\n fullName: 'William Contreras',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/39895.jpg',\n id: 39895,\n lastName: 'Contreras',\n lastNewsDate: 1758580908000,\n percentRostered: 96.88,\n positions: 'C, DH',\n proGameStatusLines: ['@SD, Tue 9:40 PM'],\n proTeam: {\n alternateColor: 'ffc72c',\n color: '13294b',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/8.jpg',\n id: 8,\n live: false,\n triCode: 'Mil',\n },\n },\n slot: 'C',\n },\n {\n displayOrder: 1,\n player: {\n abbrevName: 'D. Villar',\n currentlyWatching: true,\n firstName: 'David',\n fullName: 'David Villar',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/43031.jpg',\n id: 43031,\n lastName: 'Villar',\n lastNewsDate: 1755199119000,\n percentRostered: 0.01,\n positions: '1B',\n proGameStatusLines: ['StL, Tue 9:45 PM'],\n proTeam: {\n alternateColor: 'fd5a1e',\n color: '000000',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/26.jpg',\n id: 26,\n live: false,\n triCode: 'SF',\n },\n },\n slot: '1B',\n },\n {\n displayOrder: 2,\n player: {\n abbrevName: 'O. Albies',\n currentlyWatching: true,\n firstName: 'Ozzie',\n fullName: 'Ozzie Albies',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/33783.jpg',\n id: 33783,\n injuryStatus: 'IL10',\n lastName: 'Albies',\n lastNewsDate: 1758640556000,\n percentRostered: 82.52,\n positions: '2B',\n proGameStatusLines: ['Wsh, 7:15 PM'],\n proTeam: {\n alternateColor: 'ba0c2f',\n color: '0c2340',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/15.jpg',\n id: 15,\n live: false,\n triCode: 'Atl',\n },\n },\n slot: '2B',\n },\n {\n displayOrder: 3,\n player: {\n abbrevName: 'A. Riley',\n currentlyWatching: true,\n firstName: 'Austin',\n fullName: 'Austin Riley',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/34982.jpg',\n id: 34982,\n injuryStatus: 'IL60',\n lastName: 'Riley',\n lastNewsDate: 1756750771000,\n percentRostered: 58.25,\n positions: '3B',\n proGameStatusLines: ['Wsh, 7:15 PM'],\n proTeam: {\n alternateColor: 'ba0c2f',\n color: '0c2340',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/15.jpg',\n id: 15,\n live: false,\n triCode: 'Atl',\n },\n },\n slot: '3B',\n },\n {\n displayOrder: 4,\n player: {\n abbrevName: 'M. Betts',\n currentlyWatching: true,\n firstName: 'Mookie',\n fullName: 'Mookie Betts',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/33039.jpg',\n id: 33039,\n lastName: 'Betts',\n lastNewsDate: 1758348477000,\n percentRostered: 99.58,\n positions: 'SS, RF',\n proGameStatusLines: ['@Ari, Tue 9:40 PM'],\n proTeam: {\n alternateColor: 'ffffff',\n color: '005a9c',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/19.jpg',\n id: 19,\n live: false,\n triCode: 'LAD',\n },\n },\n slot: 'SS',\n },\n {\n displayOrder: 11,\n player: {\n abbrevName: 'C. Bellinger',\n currentlyWatching: true,\n firstName: 'Cody',\n fullName: 'Cody Bellinger',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/33912.jpg',\n id: 33912,\n lastName: 'Bellinger',\n lastNewsDate: 1758166367000,\n percentRostered: 98.16,\n positions: 'RF, 1B, CF, DH, LF',\n proGameStatusLines: ['ChW, 7:05 PM'],\n proTeam: {\n alternateColor: 'c4ced4',\n color: '132448',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/10.jpg',\n id: 10,\n live: false,\n triCode: 'NYY',\n },\n },\n slot: 'OF',\n },\n {\n displayOrder: 11,\n player: {\n abbrevName: 'J. Soto',\n currentlyWatching: true,\n firstName: 'Juan',\n fullName: 'Juan Soto',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/36969.jpg',\n id: 36969,\n lastName: 'Soto',\n lastNewsDate: 1758337911000,\n percentRostered: 99.79,\n positions: 'RF',\n proGameStatusLines: ['@ChC, 7:40 PM'],\n proTeam: {\n alternateColor: 'ff5910',\n color: '002d72',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/21.jpg',\n id: 21,\n live: false,\n triCode: 'NYM',\n },\n },\n slot: 'OF',\n },\n {\n displayOrder: 11,\n player: {\n abbrevName: 'F. Tatis Jr.',\n currentlyWatching: true,\n firstName: 'Fernando',\n fullName: 'Fernando Tatis Jr.',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/35983.jpg',\n id: 35983,\n injuryStatus: 'DTD',\n lastName: 'Tatis Jr.',\n lastNewsDate: 1758633324000,\n percentRostered: 99.33,\n positions: 'RF',\n proGameStatusLines: ['Mil, Tue 9:40 PM'],\n proTeam: {\n alternateColor: 'ffc425',\n color: '2f241d',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/25.jpg',\n id: 25,\n live: false,\n triCode: 'SD',\n },\n },\n slot: 'OF',\n },\n {\n displayOrder: 13,\n player: {\n abbrevName: 'J. Duran',\n currentlyWatching: true,\n firstName: 'Jarren',\n fullName: 'Jarren Duran',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/41610.jpg',\n id: 41610,\n lastName: 'Duran',\n lastNewsDate: 1758468245000,\n percentRostered: 95.0,\n positions: 'CF, LF',\n proGameStatusLines: [\n '@Tor, 7:07 PM',\n '@Tor, 7:07 PM',\n '@Tor, 7:07 PM',\n ],\n proTeam: {\n alternateColor: 'bd3039',\n color: '0d2b56',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/2.jpg',\n id: 2,\n live: false,\n triCode: 'Bos',\n },\n },\n slot: 'UTIL',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'L. Gilbert',\n currentlyWatching: true,\n firstName: 'Logan',\n fullName: 'Logan Gilbert',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/41221.jpg',\n id: 41221,\n lastName: 'Gilbert',\n lastNewsDate: 1758508657000,\n percentRostered: 96.67,\n positions: 'SP',\n proGameStatusLines: ['Col, Tue 9:40 PM'],\n proTeam: {\n alternateColor: '0c2c56',\n color: '005c5c',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/12.jpg',\n id: 12,\n live: false,\n triCode: 'Sea',\n },\n },\n slot: 'P',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'B. Miller',\n currentlyWatching: true,\n firstName: 'Bryce',\n fullName: 'Bryce Miller',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/4654313.jpg',\n id: 4654313,\n lastName: 'Miller',\n lastNewsDate: 1758176573000,\n percentRostered: 58.46,\n positions: 'SP',\n proGameStatusLines: ['Col, Tue 9:40 PM'],\n proTeam: {\n alternateColor: '0c2c56',\n color: '005c5c',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/12.jpg',\n id: 12,\n live: false,\n triCode: 'Sea',\n },\n },\n slot: 'P',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'S. Ohtani',\n currentlyWatching: true,\n firstName: 'Shohei',\n fullName: 'Shohei Ohtani',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/39832.jpg',\n id: 39832,\n lastName: 'Ohtani',\n lastNewsDate: 1758645863000,\n percentRostered: 99.88,\n positions: 'DH, SP',\n proGameStatusLines: ['@Ari, Tue 9:40 PM'],\n proTeam: {\n alternateColor: 'ffffff',\n color: '005a9c',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/19.jpg',\n id: 19,\n live: false,\n triCode: 'LAD',\n },\n },\n slot: 'P',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'T. Rogers',\n currentlyWatching: true,\n firstName: 'Tyler',\n fullName: 'Tyler Rogers',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/34026.jpg',\n id: 34026,\n lastName: 'Rogers',\n lastNewsDate: 1753906608000,\n percentRostered: 9.36,\n positions: 'RP',\n proGameStatusLines: ['@ChC, 7:40 PM'],\n proTeam: {\n alternateColor: 'ff5910',\n color: '002d72',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/21.jpg',\n id: 21,\n live: false,\n triCode: 'NYM',\n },\n },\n slot: 'P',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'S. Schwellenbach',\n currentlyWatching: true,\n firstName: 'Spencer',\n fullName: 'Spencer Schwellenbach',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/4424862.jpg',\n id: 4424862,\n injuryStatus: 'IL60',\n lastName: 'Schwellenbach',\n lastNewsDate: 1758589973000,\n percentRostered: 49.68,\n positions: 'SP',\n proGameStatusLines: ['Wsh, 7:15 PM'],\n proTeam: {\n alternateColor: 'ba0c2f',\n color: '0c2340',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/15.jpg',\n id: 15,\n live: false,\n triCode: 'Atl',\n },\n },\n slot: 'P',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'R. Suarez',\n currentlyWatching: true,\n firstName: 'Robert',\n fullName: 'Robert Suarez',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/4148749.jpg',\n id: 4148749,\n lastName: 'Suarez',\n lastNewsDate: 1758499911000,\n percentRostered: 92.9,\n positions: 'RP',\n proGameStatusLines: ['Mil, Tue 9:40 PM'],\n proTeam: {\n alternateColor: 'ffc425',\n color: '2f241d',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/25.jpg',\n id: 25,\n live: false,\n triCode: 'SD',\n },\n },\n slot: 'P',\n },\n {\n displayOrder: 14,\n player: {\n abbrevName: 'L. Webb',\n currentlyWatching: true,\n firstName: 'Logan',\n fullName: 'Logan Webb',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/athletes/41216.jpg',\n id: 41216,\n lastName: 'Webb',\n lastNewsDate: 1758261430000,\n percentRostered: 98.24,\n positions: 'SP',\n proGameStatusLines: ['StL, Tue 9:45 PM'],\n proTeam: {\n alternateColor: 'fd5a1e',\n color: '000000',\n darkLogo:\n 'https://stitcher.espn.com/ctv/sports/baseball/leagues/mlb/teams/26.jpg',\n id: 26,\n live: false,\n triCode: 'SF',\n },\n },\n slot: 'P',\n },\n ],\n },\n ],\n },\n ],\n scoringPeriodId: 190,\n scoringType: 'ROTO',\n seasonId: 2025,\n segmentId: 0,\n sportColor: '#F51824',\n sportLogo:\n 'https://a.espncdn.com/assets/ESPN_IconUpdates_Jul252025/Fantasy/PNG/Fantasy_FLB%2C%20Type%3DIcon.png',\n};\n\nexport const MOCK_FANTASY_RESPONSE = {\n id: '{969DDFA7-B575-4017-966C-ED83EC3EDF37}',\n anon: false,\n profile: {\n createDate: 1533061925808,\n lastUpdateDate: 1762527083860,\n hasNotificationPreferences: false,\n useSortGlobal: true,\n settings: {\n videoAutoStart: {\n value: '1',\n createDate: 1533061925808,\n },\n hideSportsBetting: {\n value: 'false',\n createDate: 1757023536525,\n },\n activeProducts: {\n value: 'true',\n createDate: 1533379743011,\n },\n },\n isInsider: true,\n isPremium: true,\n lastName: 'Janssen',\n firstName: 'Megan',\n email: 'megan.m.janssen@espn.com',\n userName: 'meganjanssen25',\n },\n lastAccessDate: '2025-11-10T05:27:31Z',\n createDate: '2018-07-31T18:32:05Z',\n lastUpdateDate: '2025-11-07T14:51:23Z',\n bettingFeatures: [\n {\n name: 'bettingContentEnabled',\n value: true,\n },\n {\n name: 'bettingLinksEnabled',\n value: false,\n },\n ],\n preferences: [\n {\n id: '1:549555067:1:2025',\n createDate: 1742909253422,\n lastUpdateDate: 1757380930299,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: 'Mother of Minigames',\n teamAbbrev: 'MoM',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: false,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 549555067,\n groupSize: 16,\n groupName: 'Fantasy Eng - Guillotine',\n groupManager: true,\n draftDate: '1794416827000',\n draftType: 1,\n draftStatus: 1,\n leagueStatus: 1,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=549555067&teamId=1',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=549555067&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'CUSTOM_VALID',\n logoUrl:\n 'https://upload.wikimedia.org/wikipedia/en/0/0d/Daenerys_Targaryen_with_Dragon-Emilia_Clarke.jpg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=549555067&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/549555067?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 7,\n isHidden: true,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '4:1278583616:1:2025',\n createDate: 1742915003927,\n lastUpdateDate: 1756670657496,\n metaData: {\n entry: {\n entryId: 4,\n entryMetadata: {\n teamName: 'Megantron',\n teamAbbrev: 'MEGA',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 1278583616,\n groupSize: 18,\n groupName: 'Tarps OFF',\n groupManager: false,\n draftDate: 1755777600000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=1278583616&teamId=4',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=1278583616&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'CUSTOM_VALID',\n logoUrl: 'https://i.giphy.com/media/fZ91xzFtKWmoJSD4TK/giphy.gif',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=1278583616&teamId=4&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/1278583616?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B4%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772771': 1,\n '401772944': 1,\n '401772630': 1,\n '401772772': 1,\n '401772773': 1,\n '401772927': 1,\n '401772879': 1,\n '401772636': 1,\n '401772876': 1,\n },\n },\n currentLineup: {\n '-16026': 16,\n '16800': 23,\n '3043078': 2,\n '3052587': 0,\n '3121023': 6,\n '3123052': 17,\n '3139477': 20,\n '4241985': 2,\n '4242355': 20,\n '4362238': 20,\n '4372016': 4,\n '4426385': 20,\n '4429025': 20,\n '4612826': 4,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 9,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1027557112:1:2025',\n createDate: 1742911155496,\n lastUpdateDate: 1756920410999,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: 'Mother of Minigames',\n teamAbbrev: 'MoM',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 1027557112,\n groupSize: 8,\n groupName: 'Fantasy Platform Engineers',\n groupManager: true,\n draftDate: 1756918800000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=1027557112&teamId=1',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=1027557112&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/Solo/ESPN_Star_Wars_Qira-01.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=1027557112&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/1027557112?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772771': 1,\n '401772630': 1,\n '401772927': 1,\n '401772879': 1,\n '401772876': 2,\n '401772636': 4,\n },\n },\n currentLineup: {\n '-16009': 16,\n '3040151': 6,\n '3121023': 20,\n '3123052': 17,\n '3139477': 20,\n '3917792': 7,\n '4239993': 20,\n '4242335': 2,\n '4372016': 4,\n '4429615': 4,\n '4430807': 2,\n '4433970': 0,\n '4569987': 23,\n '4683062': 20,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 10,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:40059468:1:2025',\n createDate: 1742915689938,\n lastUpdateDate: 1756774193047,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: 'Lamb-da Functions',\n teamAbbrev: 'LAMB',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 40059468,\n groupSize: 8,\n groupName: 'The Bean Queens',\n groupManager: true,\n draftDate: 1756771200000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=40059468&teamId=1',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=40059468&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'CUSTOM_UPLOAD',\n logoUrl:\n 'https://mystique-api.fantasy.espn.com/apis/v1/domains/lm/images/bc9f0e30-8796-11f0-b6e4-9dd13c0fbbe2',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=40059468&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/40059468?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772771': 2,\n '401772772': 1,\n '401772773': 1,\n '401772927': 3,\n '401772876': 1,\n '401772636': 1,\n },\n },\n currentLineup: {\n '-16001': 16,\n '15818': 4,\n '3052587': 0,\n '3054850': 20,\n '3116365': 20,\n '3917792': 20,\n '4241389': 20,\n '4361307': 6,\n '4362081': 17,\n '4379399': 2,\n '4429025': 23,\n '4429160': 2,\n '4429615': 4,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 11,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '2:2124806394:1:2025',\n createDate: 1742912327647,\n lastUpdateDate: 1757029916228,\n metaData: {\n entry: {\n entryId: 2,\n entryMetadata: {\n teamName: 'Team Baron',\n teamAbbrev: 'BARO',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 2124806394,\n groupSize: 16,\n groupName: 'Live Scoring',\n groupManager: false,\n draftDate: 1,\n draftType: 2,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=2124806394&teamId=2',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=2124806394&seasonId=2025',\n draftTypeName: 'Autopick',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/ffl/images/default_logos/19.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=2124806394&teamId=2&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/2124806394?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B2%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772770': 1,\n '401772771': 3,\n '401772944': 1,\n '401772630': 1,\n '401772772': 1,\n '401772773': 2,\n '401772875': 2,\n '401772878': 1,\n '401772879': 2,\n '401772927': 11,\n '401772876': 1,\n },\n },\n currentLineup: {\n '-16012': 16,\n '-16003': 16,\n '-14012': 19,\n '-14002': 19,\n '15818': 4,\n '2473037': 17,\n '2971573': 17,\n '3045138': 23,\n '3059915': 2,\n '3126368': 18,\n '3139477': 0,\n '3915411': 2,\n '3918298': 20,\n '4012556': 2,\n '4034779': 23,\n '4037457': 2,\n '4038941': 0,\n '4240472': 6,\n '4241985': 2,\n '4242369': 23,\n '4242557': 23,\n '4242558': 6,\n '4360797': 23,\n '4361432': 23,\n '4361496': 18,\n '4362087': 21,\n '4362477': 4,\n '4362921': 4,\n '4372414': 23,\n '4421446': 2,\n '4428331': 4,\n '4429025': 4,\n '4430723': 6,\n '4430968': 2,\n '4431611': 20,\n '4595342': 6,\n '4596602': 2,\n '4597703': 23,\n '4612826': 4,\n '4686612': 4,\n '4689988': 4,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 12,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1678259:1:2025',\n createDate: 1742913134199,\n lastUpdateDate: 1755702318851,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Test Acct\",\n teamAbbrev: 'MEGA',\n leagueFormatTypeId: 0,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 1678259,\n groupSize: 4,\n groupName: 'BYE WEEK TEST!',\n groupManager: true,\n draftDate: null,\n draftType: 0,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=1678259&teamId=1',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=1678259&seasonId=2025',\n draftTypeName: 'Offline Draft',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/DIS_Avengers_EndGame/DIS_Avengers_EndGame_A_2.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=1678259&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/1678259?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772769': 1,\n '401772630': 2,\n '401772927': 2,\n '401772876': 1,\n },\n },\n currentLineup: {\n '2577417': 0,\n '3121023': 6,\n '4040715': 20,\n '4047646': 4,\n '4047650': 4,\n '4361579': 2,\n '4372019': 2,\n '4426354': 4,\n '4429615': 4,\n '4569987': 2,\n '4685016': 2,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 13,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '8:1130440938:2:2025',\n createDate: 1737632028020,\n lastUpdateDate: 1759462119590,\n metaData: {\n entry: {\n entryId: 8,\n entryMetadata: {\n teamName: 'Mother of Minigames',\n teamAbbrev: 'MINI',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 1130440938,\n groupSize: 8,\n groupName: 'Interactive Platform Legends!',\n groupManager: false,\n draftDate: 1743012000000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=1130440938&teamId=8',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=1130440938&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/Solo/ESPN_Star_Wars_Qira-01.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=1130440938&teamId=8&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/1130440938?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B8%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n currentLineup: {\n '32157': 13,\n '32367': 3,\n '32685': 13,\n '32767': 12,\n '34945': 5,\n '34967': 17,\n '34995': 5,\n '36020': 5,\n '36071': 13,\n '36488': 16,\n '39895': 0,\n '40080': 17,\n '41179': 2,\n '41355': 4,\n '42433': 13,\n '42449': 13,\n '42796': 17,\n '4109109': 1,\n '4208281': 16,\n '4692526': 13,\n '5132011': 16,\n '5150939': 13,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 13,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1335047630:2:2025',\n createDate: 1742230557423,\n lastUpdateDate: 1755632109653,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: 'UnDrafted',\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: false,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 1335047630,\n groupSize: 10,\n groupName: 'Undrafted; Not Set',\n groupManager: true,\n draftDate: null,\n draftType: 1,\n draftStatus: 1,\n leagueStatus: 1,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=1335047630&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=1335047630&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'CUSTOM_UPLOAD',\n logoUrl:\n 'https://mystique-api.fantasy.espn.com/apis/v1/domains/lm/images/5c82c630-212b-11f0-bf52-473646e3de99',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=1335047630&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/1335047630?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 17,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: 'cd9ccb60-2a84-11f0-a3e0-ffe8c80e5341',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: 'cd9ccb60-2a84-11f0-a3e0-ffe8c80e5341',\n lastAvailableDate: 1768193940000,\n challengeId: '263',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/1ab5b81f-0114-4ef0-aced-a096cfa487b1.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/149a15a7-10e7-421a-ae38-d7ff4df3f8de.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/1ab5b81f-0114-4ef0-aced-a096cfa487b1.png',\n },\n gameUrl: 'https://fantasy.espn.com/games/nfl-win-totals-2025',\n entryName: \"Megan_Janssen2's Picks 1\",\n challengeGroups: '',\n score: {\n eliminated: false,\n overallScore: 10,\n percentile: 0.73421348,\n rank: 43043,\n record: {\n losses: 2,\n wins: 1,\n },\n },\n scoreByGroup: '',\n scoringFormatId: 1,\n },\n },\n sortGlobal: 1382,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: '10:978432872:1:2025',\n createDate: 1750808942792,\n lastUpdateDate: 1753110440776,\n metaData: {\n entry: {\n entryId: 10,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 7,\n leagueSubTypeId: 3,\n customizable: false,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 1,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'DRAFT_LOBBY',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 978432872,\n groupSize: 10,\n groupName: 'San Francisco Gridiron Gauntlet League',\n groupManager: false,\n draftDate: 1750809180000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=978432872&teamId=10',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=978432872&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/ffl/images/default_logos/8.svg',\n restrictionType: 5,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=978432872&teamId=10&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/978432872?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B10%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772770': 1,\n '401772771': 1,\n '401772944': 1,\n '401772630': 1,\n '401772773': 2,\n '401772875': 2,\n },\n },\n currentLineup: {\n '-16022': 16,\n '3050478': 17,\n '3116385': 2,\n '3915416': 4,\n '3916148': 20,\n '4241389': 4,\n '4361307': 6,\n '4361370': 20,\n '4428209': 20,\n '4429160': 2,\n '4431299': 20,\n '4431611': 0,\n '4567750': 20,\n '4568490': 23,\n '4569173': 20,\n '4882093': 20,\n },\n restrictionTypeName: 'GAUNTLET',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 1398,\n isHidden: true,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '9:2118520298:1:2025',\n createDate: 1753457483090,\n lastUpdateDate: 1753459839424,\n metaData: {\n entry: {\n entryId: 9,\n entryMetadata: {\n teamName: \"Megan's Monstrous Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 3,\n customizable: false,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 1,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'DRAFT_LOBBY',\n },\n firstScoringPeriodId: 1,\n gameId: 1,\n groups: [\n {\n groupId: 2118520298,\n groupSize: 10,\n groupName: 'Detroit Beginner H2H Points PPR League',\n groupManager: false,\n draftDate: 1753457880000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/football/fantasycast?leagueId=2118520298&teamId=9',\n href:\n 'https://fantasy.espn.com/football/league?leagueId=2118520298&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/ffl/images/default_logos/4.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/football/team?leagueId=2118520298&teamId=9&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/ffl/seasons/2025/segments/0/leagues/2118520298?view=mScoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B9%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FFL',\n name: 'Fantasy Football 2025',\n description: 'Fantasy Football',\n logoURL:\n 'https://g.espncdn.com/s/ffllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/football/welcome',\n href: 'https://www.espn.com/fantasy/football/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401772771': 1,\n '401772769': 1,\n '401772772': 1,\n '401772773': 1,\n '401772875': 1,\n '401772927': 1,\n '401772879': 2,\n '401772876': 1,\n },\n },\n currentLineup: {\n '-16016': 16,\n '16800': 4,\n '2977187': 23,\n '3052587': 0,\n '3123076': 6,\n '3925357': 20,\n '4360516': 20,\n '4360569': 20,\n '4362081': 17,\n '4362249': 20,\n '4429013': 20,\n '4429160': 2,\n '4429615': 20,\n '4430737': 2,\n '4569618': 20,\n '4595348': 4,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 10,\n },\n contentSourceId: 10,\n sortGlobal: 1402,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1028491758:5:2025',\n createDate: 1747420135832,\n lastUpdateDate: 1757663182317,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: 'Megan Team 1',\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 5,\n groups: [\n {\n groupId: 1028491758,\n groupSize: 4,\n groupName: 'Multi Team Ownership',\n groupManager: true,\n draftDate: 1,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'https://fantasy.espn.com/womens-basketball/fantasycast?leagueId=1028491758&teamId=1',\n href:\n 'https://fantasy.espn.com/womens-basketball/league?leagueId=1028491758&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/StarWarsTheRiseOfSkywalker/rise-skywalker-r2d2.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/womens-basketball/team?leagueId=1028491758&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/wfba/seasons/2025/segments/0/leagues/1028491758?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'WFBA',\n name: 'Fantasy Womens Basketball 2025',\n description: 'Fantasy Womens Basketball',\n logoURL: 'https://g.espncdn.com/s/fbalm/15/images/shell/bgHead.png',\n signupURL: 'https://fantasy.espn.com/womens-basketball/welcome',\n href: 'https://www.espn.com/fantasy/womens-basketball/',\n currentLineup: {\n '869': 4,\n '2529140': 4,\n '2529205': 6,\n '2998938': 1,\n '3058895': 6,\n '3058901': 5,\n '3146151': 6,\n '4432831': 4,\n '4433403': 1,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 120,\n },\n contentSourceId: 10,\n sortGlobal: 1383,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '4:1028491758:5:2025',\n createDate: 1747420173876,\n lastUpdateDate: 1757663182341,\n metaData: {\n entry: {\n entryId: 4,\n entryMetadata: {\n teamName: 'Megan Team 4',\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 5,\n groups: [\n {\n groupId: 1028491758,\n groupSize: 4,\n groupName: 'Multi Team Ownership',\n groupManager: true,\n draftDate: 1,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'https://fantasy.espn.com/womens-basketball/fantasycast?leagueId=1028491758&teamId=4',\n href:\n 'https://fantasy.espn.com/womens-basketball/league?leagueId=1028491758&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/fba/Jerseys-ESPN/fba-jerseys-31.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/womens-basketball/team?leagueId=1028491758&teamId=4&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/wfba/seasons/2025/segments/0/leagues/1028491758?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B4%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'WFBA',\n name: 'Fantasy Womens Basketball 2025',\n description: 'Fantasy Womens Basketball',\n logoURL: 'https://g.espncdn.com/s/fbalm/15/images/shell/bgHead.png',\n signupURL: 'https://fantasy.espn.com/womens-basketball/welcome',\n href: 'https://www.espn.com/fantasy/womens-basketball/',\n currentLineup: {\n '2529130': 6,\n '2998928': 4,\n '3065570': 1,\n '3913881': 6,\n '4066533': 1,\n '4398674': 5,\n '4420318': 4,\n '4433402': 4,\n '4433630': 6,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 120,\n },\n contentSourceId: 10,\n sortGlobal: 1384,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '3:1028491758:5:2025',\n createDate: 1747420178168,\n lastUpdateDate: 1757663182333,\n metaData: {\n entry: {\n entryId: 3,\n entryMetadata: {\n teamName: 'Megan Team 3',\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 5,\n groups: [\n {\n groupId: 1028491758,\n groupSize: 4,\n groupName: 'Multi Team Ownership',\n groupManager: true,\n draftDate: 1,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'https://fantasy.espn.com/womens-basketball/fantasycast?leagueId=1028491758&teamId=3',\n href:\n 'https://fantasy.espn.com/womens-basketball/league?leagueId=1028491758&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/DIS_Avengers_EndGame/DIS_Avengers_EndGame_Rocket.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/womens-basketball/team?leagueId=1028491758&teamId=3&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/wfba/seasons/2025/segments/0/leagues/1028491758?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B3%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'WFBA',\n name: 'Fantasy Womens Basketball 2025',\n description: 'Fantasy Womens Basketball',\n logoURL: 'https://g.espncdn.com/s/fbalm/15/images/shell/bgHead.png',\n signupURL: 'https://fantasy.espn.com/womens-basketball/welcome',\n href: 'https://www.espn.com/fantasy/womens-basketball/',\n currentLineup: {\n '1068': 4,\n '2529137': 6,\n '2987869': 1,\n '2987891': 6,\n '3904577': 1,\n '3913903': 6,\n '3917450': 4,\n '4281929': 4,\n '4433730': 5,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 120,\n },\n contentSourceId: 10,\n sortGlobal: 1385,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '2:1028491758:5:2025',\n createDate: 1747420181784,\n lastUpdateDate: 1757663182325,\n metaData: {\n entry: {\n entryId: 2,\n entryMetadata: {\n teamName: 'Megan Team 2',\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 5,\n groups: [\n {\n groupId: 1028491758,\n groupSize: 4,\n groupName: 'Multi Team Ownership',\n groupManager: true,\n draftDate: 1,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'https://fantasy.espn.com/womens-basketball/fantasycast?leagueId=1028491758&teamId=2',\n href:\n 'https://fantasy.espn.com/womens-basketball/league?leagueId=1028491758&seasonId=2025',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/StarsAndFlames/stars_flames-4.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'https://fantasy.espn.com/womens-basketball/team?leagueId=1028491758&teamId=2&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/wfba/seasons/2025/segments/0/leagues/1028491758?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B2%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'WFBA',\n name: 'Fantasy Womens Basketball 2025',\n description: 'Fantasy Womens Basketball',\n logoURL: 'https://g.espncdn.com/s/fbalm/15/images/shell/bgHead.png',\n signupURL: 'https://fantasy.espn.com/womens-basketball/welcome',\n href: 'https://www.espn.com/fantasy/womens-basketball/',\n currentLineup: {\n '2490553': 6,\n '2491205': 1,\n '2566106': 4,\n '2988756': 6,\n '2999101': 4,\n '3142191': 5,\n '3149391': 4,\n '3904576': 6,\n '4065870': 1,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 120,\n },\n contentSourceId: 10,\n sortGlobal: 1386,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: 'c71ef020-3681-11f0-9846-8ffc028f9549',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: 'c71ef020-3681-11f0-9846-8ffc028f9549',\n lastAvailableDate: 1768193940000,\n challengeId: '264',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/4beecd18-7bb5-441b-913c-a1ac5f12b893.png',\n },\n gameUrl:\n 'https://fantasy.espn.com/games/nfl-eliminator-challenge-2025',\n entryName: \"Megan_Janssen2's Picks 3\",\n challengeGroups: [\n {\n groupSettings: {\n name: 'Disney Only',\n },\n },\n {\n groupSettings: {\n name: 'FIRE Core Team',\n },\n },\n ],\n score: {\n eliminated: true,\n overallScore: 3,\n percentile: 0.63478545,\n rank: 399442,\n record: {\n losses: 1,\n wins: 3,\n },\n },\n scoreByGroup: {\n '4ff5631f-66c8-42a5-8ad9-1c3fc2eadd53': {\n eliminated: true,\n overallScore: 3,\n percentile: 0.63478545,\n rank: 2,\n record: {\n losses: 1,\n wins: 3,\n },\n },\n '7d4a3167-0f7f-3aa5-a193-10f5a79f89e0': {\n eliminated: true,\n overallScore: 3,\n percentile: 0.63478545,\n rank: 19,\n record: {\n losses: 1,\n wins: 3,\n },\n },\n },\n scoringFormatId: 4,\n },\n },\n sortGlobal: 1387,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: 'c349a530-3681-11f0-bebc-3118dc9a49b7',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: 'c349a530-3681-11f0-bebc-3118dc9a49b7',\n lastAvailableDate: 1768193940000,\n challengeId: '264',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/4beecd18-7bb5-441b-913c-a1ac5f12b893.png',\n },\n gameUrl:\n 'https://fantasy.espn.com/games/nfl-eliminator-challenge-2025',\n entryName: \"Megan_Janssen2's Picks 2\",\n challengeGroups: '',\n score: {\n eliminated: true,\n overallScore: 0,\n percentile: 0.0,\n rank: 897095,\n record: {\n losses: 1,\n wins: 0,\n },\n },\n scoreByGroup: '',\n scoringFormatId: 4,\n },\n },\n sortGlobal: 1387,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: '90930280-3681-11f0-b2f3-0fd5099dfb7c',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: '90930280-3681-11f0-b2f3-0fd5099dfb7c',\n lastAvailableDate: 1768193940000,\n challengeId: '265',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/213d8b5f-6117-480c-b160-4a3993a3c88e.png',\n },\n gameUrl: 'https://fantasy.espn.com/games/nfl-pigskin-pickem-2025',\n entryName: 'MegaLed Confidence',\n challengeGroups: [\n {\n groupSettings: {\n name: 'TMG - Season 6',\n },\n },\n {\n groupSettings: {\n name: 'Disney Only (Confidence)',\n },\n },\n {\n groupSettings: {\n name: 'Card Club - Pigskin',\n },\n },\n ],\n score: {\n eliminated: false,\n overallScore: 783,\n percentile: 0.75568775,\n rank: 27846,\n record: {\n losses: 56,\n wins: 90,\n },\n },\n scoreByGroup: {\n '05b8d8ef-7176-3845-bade-4f8c2479afe7': {\n eliminated: false,\n overallScore: 748,\n percentile: 0.75568775,\n rank: 12,\n record: {\n losses: 48,\n wins: 84,\n },\n },\n '836c455b-5a75-3531-929f-fdcd7f714c9c': {\n eliminated: false,\n overallScore: 748,\n percentile: 0.75568775,\n rank: 8,\n record: {\n losses: 48,\n wins: 84,\n },\n },\n '54a6fab7-58b3-3495-91a4-3c11bb601a1c': {\n eliminated: false,\n overallScore: 783,\n percentile: 0.75568775,\n rank: 78,\n record: {\n losses: 56,\n wins: 90,\n },\n },\n },\n scoringFormatId: 2,\n },\n },\n sortGlobal: 1387,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: 'a33424f0-3681-11f0-b2f3-0fd5099dfb7c',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: 'a33424f0-3681-11f0-b2f3-0fd5099dfb7c',\n lastAvailableDate: 1768193940000,\n challengeId: '265',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/213d8b5f-6117-480c-b160-4a3993a3c88e.png',\n },\n gameUrl: 'https://fantasy.espn.com/games/nfl-pigskin-pickem-2025',\n entryName: 'MegaLed Spread',\n challengeGroups: [\n {\n groupSettings: {\n name: 'Disney Only (Spread)',\n },\n },\n ],\n score: {\n eliminated: false,\n overallScore: 670,\n percentile: 0.64634846,\n rank: 81970,\n record: {\n losses: 71,\n wins: 67,\n },\n },\n scoreByGroup: {\n 'f33eee68-29ff-3c16-bd20-31b9952753dd': {\n eliminated: false,\n overallScore: 670,\n percentile: 0.64634846,\n rank: 118,\n record: {\n losses: 71,\n wins: 67,\n },\n },\n },\n scoringFormatId: 3,\n },\n },\n sortGlobal: 1387,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: 'bdae4040-3681-11f0-9b45-3fc452c57dcd',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: 'bdae4040-3681-11f0-9b45-3fc452c57dcd',\n lastAvailableDate: 1768193940000,\n challengeId: '264',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/4beecd18-7bb5-441b-913c-a1ac5f12b893.png',\n },\n gameUrl:\n 'https://fantasy.espn.com/games/nfl-eliminator-challenge-2025',\n entryName: \"Megan_Janssen2's Picks 1\",\n challengeGroups: [\n {\n groupSettings: {\n name: 'Locks Only Survivor Pool- SZN 4',\n },\n },\n ],\n score: {\n eliminated: true,\n overallScore: 2,\n percentile: 0.50711336,\n rank: 539079,\n record: {\n losses: 1,\n wins: 2,\n },\n },\n scoreByGroup: {\n 'a00db401-c3ce-4729-8c0c-38c6aabae4a7': {\n eliminated: true,\n overallScore: 2,\n percentile: 0.50711336,\n rank: 15,\n record: {\n losses: 1,\n wins: 2,\n },\n },\n },\n scoringFormatId: 4,\n },\n },\n sortGlobal: 1387,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: '36343e50-365c-11f0-a8c2-3b962bf01277',\n createDate: 1762778889707,\n metaData: {\n entry: {\n entryUuid: '36343e50-365c-11f0-a8c2-3b962bf01277',\n lastAvailableDate: 1768193940000,\n challengeId: '265',\n logoURLs: {\n logoSecondary: '',\n logoPrimary:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n darkLogoURL:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n lightLogoURL:\n 'https://chui-assets-cdn.espn.com/213d8b5f-6117-480c-b160-4a3993a3c88e.png',\n },\n gameUrl: 'https://fantasy.espn.com/games/nfl-pigskin-pickem-2025',\n entryName: 'MegaLed Straight Up',\n challengeGroups: [\n {\n groupSettings: {\n name: 'Disney Only (Standard)',\n },\n },\n {\n groupSettings: {\n name: 'DEE Product and Technology Group',\n },\n },\n {\n groupSettings: {\n name: 'ESPN Fantasy Group',\n },\n },\n {\n groupSettings: {\n name: 'Product & Tech Group',\n },\n },\n ],\n score: {\n eliminated: false,\n overallScore: 810,\n percentile: 0.67573397,\n rank: 452404,\n record: {\n losses: 56,\n wins: 81,\n },\n },\n scoreByGroup: {\n 'd0731075-2901-4564-8aa8-02dd38c9c26b': {\n eliminated: false,\n overallScore: 810,\n percentile: 0.67573397,\n rank: 8,\n record: {\n losses: 56,\n wins: 81,\n },\n },\n '7bf7b02f-b9b1-40b6-8270-9d4a3b0ff222': {\n eliminated: false,\n overallScore: 810,\n percentile: 0.67573397,\n rank: 207,\n record: {\n losses: 56,\n wins: 81,\n },\n },\n 'dad5e750-a47f-4527-90cb-1aca05a2bbe3': {\n eliminated: false,\n overallScore: 810,\n percentile: 0.67573397,\n rank: 3,\n record: {\n losses: 56,\n wins: 81,\n },\n },\n '96f8471c-d4e7-3ca8-b86e-2b012f127f39': {\n eliminated: false,\n overallScore: 810,\n percentile: 0.67573397,\n rank: 379,\n record: {\n losses: 56,\n wins: 81,\n },\n },\n },\n scoringFormatId: 1,\n },\n },\n sortGlobal: 1387,\n isImplicit: false,\n isHidden: false,\n typeId: 14,\n affinity: 0,\n type: {\n id: 14,\n name: 'Challenge Entry',\n code: 'challengeEntry',\n isDeletable: true,\n isDelegated: true,\n maxAllowed: 200,\n },\n },\n {\n id: '7:735183173:3:2026',\n createDate: 1749773645351,\n lastUpdateDate: 1749828448313,\n metaData: {\n entry: {\n entryId: 7,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 3,\n customizable: false,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 1,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'DRAFT_LOBBY',\n },\n firstScoringPeriodId: 1,\n gameId: 3,\n groups: [\n {\n groupId: 735183173,\n groupSize: 10,\n groupName: 'Philadelphia Pro H2H Points League',\n groupManager: false,\n draftDate: 1749827580000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/basketball/fantasycast?leagueId=735183173&teamId=7',\n href:\n 'https://fantasy.espn.com/basketball/league?leagueId=735183173&seasonId=2026',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/fba/images/default_logos/14.svg',\n restrictionType: 0,\n seasonId: 2026,\n entryURL:\n 'https://fantasy.espn.com/basketball/team?leagueId=735183173&teamId=7&seasonId=2026',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/fba/seasons/2026/segments/0/leagues/735183173?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B7%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FBA',\n name: 'Fantasy Basketball 2026',\n description: 'Fantasy Basketball',\n logoURL: 'https://g.espncdn.com/s/fbalm/15/images/shell/bgHead.png',\n signupURL: 'https://fantasy.espn.com/basketball/welcome',\n href: 'https://www.espn.com/fantasy/basketball/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401810053': 2,\n '401810058': 1,\n '401810057': 1,\n '401810061': 1,\n },\n },\n currentLineup: {\n '3202': 3,\n '3448': 12,\n '4251': 11,\n '6583': 4,\n '3136195': 11,\n '3908845': 6,\n '3934719': 12,\n '4279888': 0,\n '4395630': 1,\n '4432816': 5,\n '4433247': 12,\n '4433255': 11,\n '4433287': 2,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 21,\n },\n contentSourceId: 10,\n sortGlobal: 1390,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '2:424310183:3:2026',\n createDate: 1749773698015,\n lastUpdateDate: 1749829617368,\n metaData: {\n entry: {\n entryId: 2,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 3,\n customizable: false,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 1,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'DRAFT_LOBBY',\n },\n firstScoringPeriodId: 1,\n gameId: 3,\n groups: [\n {\n groupId: 424310183,\n groupSize: 10,\n groupName: 'Memphis Pro H2H Points League',\n groupManager: false,\n draftDate: 1749828480000,\n draftType: 1,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/basketball/fantasycast?leagueId=424310183&teamId=2',\n href:\n 'https://fantasy.espn.com/basketball/league?leagueId=424310183&seasonId=2026',\n draftTypeName: 'Snake',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/fba/images/default_logos/1.svg',\n restrictionType: 0,\n seasonId: 2026,\n entryURL:\n 'https://fantasy.espn.com/basketball/team?leagueId=424310183&teamId=2&seasonId=2026',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/fba/seasons/2026/segments/0/leagues/424310183?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B2%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FBA',\n name: 'Fantasy Basketball 2026',\n description: 'Fantasy Basketball',\n logoURL: 'https://g.espncdn.com/s/fbalm/15/images/shell/bgHead.png',\n signupURL: 'https://fantasy.espn.com/basketball/welcome',\n href: 'https://www.espn.com/fantasy/basketball/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401810055': 1,\n '401810054': 1,\n '401810053': 1,\n '401810059': 2,\n '401810058': 2,\n },\n },\n currentLineup: {\n '3468': 0,\n '6580': 12,\n '6583': 4,\n '3032977': 3,\n '3062679': 2,\n '3134908': 11,\n '3907497': 5,\n '3907822': 12,\n '4066383': 11,\n '4277956': 1,\n '4433621': 11,\n '4566434': 6,\n '4594327': 12,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 21,\n },\n contentSourceId: 10,\n sortGlobal: 1391,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1315471242:2:2025',\n createDate: 1753897316090,\n lastUpdateDate: 1759136303110,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 1315471242,\n groupSize: 10,\n groupName: 'Maestro H2H Points',\n groupManager: true,\n draftDate: 1,\n draftType: 0,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=1315471242&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=1315471242&seasonId=2025',\n draftTypeName: 'Offline Draft',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/flb/images/default_logos/8.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=1315471242&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/1315471242?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n currentLineup: {\n '29155': 13,\n '30193': 1,\n '32129': 4,\n '32685': 13,\n '33148': 13,\n '33783': 2,\n '33837': 13,\n '33859': 3,\n '33950': 13,\n '35983': 5,\n '36581': 13,\n '39825': 16,\n '41405': 13,\n '42179': 5,\n '42598': 0,\n '4433874': 16,\n '4719337': 5,\n '4917694': 12,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 1403,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1689844356:2:2025',\n createDate: 1753897335814,\n lastUpdateDate: 1759136303136,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 1,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 0,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'ROTO',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 1689844356,\n groupSize: 10,\n groupName: 'Maestro Roto',\n groupManager: true,\n draftDate: 1,\n draftType: 0,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=1689844356&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=1689844356&seasonId=2025',\n draftTypeName: 'Offline Draft',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/flb/images/default_logos/8.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=1689844356&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/1689844356?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n currentLineup: {\n '30193': 1,\n '32129': 4,\n '32685': 13,\n '32796': 13,\n '33192': 5,\n '33837': 13,\n '33859': 3,\n '35002': 12,\n '36581': 13,\n '38309': 0,\n '39825': 13,\n '39832': 16,\n '40939': 13,\n '41610': 5,\n '41773': 2,\n '42403': 16,\n '42404': 5,\n '4109109': 16,\n '4719507': 13,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 1404,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:531018984:2:2025',\n createDate: 1753897355273,\n lastUpdateDate: 1759136303102,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 3,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 2,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_CATEGORY',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 531018984,\n groupSize: 10,\n groupName: 'Maestro H2H Each Category',\n groupManager: true,\n draftDate: 1,\n draftType: 0,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=531018984&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=531018984&seasonId=2025',\n draftTypeName: 'Offline Draft',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/flb/images/default_logos/8.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=531018984&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/531018984?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n currentLineup: {\n '30193': 1,\n '30951': 16,\n '31127': 16,\n '32129': 4,\n '32685': 13,\n '32796': 13,\n '33837': 13,\n '33859': 3,\n '35394': 13,\n '35983': 5,\n '36581': 13,\n '36969': 5,\n '39825': 13,\n '39895': 16,\n '41610': 5,\n '41773': 2,\n '4717803': 13,\n '4917694': 12,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 1405,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:1229401832:2:2025',\n createDate: 1753897386460,\n lastUpdateDate: 1759136303122,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 4,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 3,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_MOST_CATEGORIES',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 1229401832,\n groupSize: 10,\n groupName: 'Maestro H2H Most Categories',\n groupManager: true,\n draftDate: null,\n draftType: 0,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=1229401832&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=1229401832&seasonId=2025',\n draftTypeName: 'Offline Draft',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/flb/images/default_logos/8.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=1229401832&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/1229401832?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n currentLineup: {\n '30193': 1,\n '30951': 16,\n '31662': 2,\n '32129': 4,\n '32685': 13,\n '33837': 13,\n '33859': 3,\n '35983': 5,\n '36020': 5,\n '36581': 13,\n '39825': 13,\n '39832': 13,\n '39895': 0,\n '40939': 13,\n '4148749': 16,\n '4297835': 16,\n '4719337': 5,\n '4719507': 13,\n '4917694': 12,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 1406,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:420732386:2:2025',\n createDate: 1753897407707,\n lastUpdateDate: 1759136303134,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 5,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 4,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'TOTAL_SEASON_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 420732386,\n groupSize: 10,\n groupName: 'Maestro Season Points',\n groupManager: true,\n draftDate: 1,\n draftType: 0,\n draftStatus: 2,\n leagueStatus: 5,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=420732386&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=420732386&seasonId=2025',\n draftTypeName: 'Offline Draft',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/flb/images/default_logos/8.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=420732386&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/420732386?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n currentLineup: {\n '30193': 1,\n '31097': 3,\n '31267': 13,\n '32129': 4,\n '32512': 2,\n '32685': 13,\n '32796': 13,\n '33192': 5,\n '33837': 13,\n '36020': 5,\n '36581': 13,\n '38309': 0,\n '39825': 13,\n '39832': 13,\n '40939': 16,\n '42404': 5,\n '4719507': 16,\n '4917694': 12,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 1407,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '1:2046593148:2:2025',\n createDate: 1755632123412,\n lastUpdateDate: 1755831600704,\n metaData: {\n entry: {\n entryId: 1,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 2,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: false,\n scoringTypeId: 1,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'H2H_POINTS',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 2,\n groups: [\n {\n groupId: 2046593148,\n groupSize: 4,\n groupName: 'Undrafted; Scheduled',\n groupManager: true,\n draftDate: null,\n draftType: 4,\n draftStatus: 1,\n leagueStatus: 1,\n fantasyCastHref:\n 'http://fantasy.espn.com/baseball/fantasycast?leagueId=2046593148&teamId=1',\n href:\n 'http://fantasy.espn.com/baseball/league?leagueId=2046593148&seasonId=2025',\n draftTypeName: 'Salary Cap',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/logo-packs/core/StadiumFoods-ESPN/stadium-foods_soft-pretzel.svg',\n restrictionType: 0,\n seasonId: 2025,\n entryURL:\n 'http://fantasy.espn.com/baseball/team?leagueId=2046593148&teamId=1&seasonId=2025',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/flb/seasons/2025/segments/0/leagues/2046593148?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B1%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FLB',\n name: 'Fantasy Baseball 2025',\n description: 'Fantasy Baseball',\n logoURL: 'https://g.espncdn.com/s/frontpage09/images/flb09_index.png',\n signupURL: 'http://fantasy.espn.com/baseball/welcome',\n href: 'https://www.espn.com/fantasy/baseball/',\n restrictionTypeName: 'NONE',\n },\n inSeason: false,\n isLive: false,\n currentScoringPeriodId: 196,\n },\n contentSourceId: 10,\n sortGlobal: 1410,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n {\n id: '2:283659657:4:2026',\n createDate: 1759161335134,\n lastUpdateDate: 1759415709010,\n metaData: {\n entry: {\n entryId: 2,\n entryMetadata: {\n teamName: \"Megan's Magnificent Team\",\n teamAbbrev: 'MMT',\n leagueFormatTypeId: 1,\n leagueSubTypeId: 0,\n customizable: true,\n active: true,\n draftComplete: true,\n scoringTypeId: 0,\n leagueTypeId: 0,\n draftInProgress: false,\n scoringTypeName: 'ROTO',\n leagueSubTypeName: 'NONE',\n },\n firstScoringPeriodId: 1,\n gameId: 4,\n groups: [\n {\n groupId: 283659657,\n groupSize: 6,\n groupName: 'Roto Test League',\n groupManager: false,\n draftDate: 1,\n draftType: 2,\n draftStatus: 2,\n leagueStatus: 3,\n fantasyCastHref:\n 'https://fantasy.espn.com/hockey/fantasycast?leagueId=283659657&teamId=2',\n href:\n 'https://fantasy.espn.com/hockey/league?leagueId=283659657&seasonId=2026',\n draftTypeName: 'Autopick',\n },\n ],\n logoType: 'VECTOR',\n logoUrl:\n 'https://g.espncdn.com/lm-static/fhl/images/default_logos/6.svg',\n restrictionType: 0,\n seasonId: 2026,\n entryURL:\n 'https://fantasy.espn.com/hockey/team?leagueId=283659657&teamId=2&seasonId=2026',\n scoreboardFeedURL:\n 'https://lm-api-reads.fantasy.espn.com/apis/v3/games/fhl/seasons/2026/segments/0/leagues/283659657?view=scoreboard&filter=%7B%22schedule%22%3A%7B%22filterTeamIds%22%3A%7B%22value%22%3A%5B2%5D%7D%2C%22filterCurrentMatchupPeriod%22%3A%7B%22value%22%3Atrue%7D%7D%7D&peek=true',\n abbrev: 'FHL',\n name: 'Fantasy Hockey 2026',\n description: 'Fantasy Hockey',\n logoURL:\n 'https://g.espncdn.com/s/fhllm/14/images/shell/bgHead_leaguemanager.png',\n signupURL: 'https://fantasy.espn.com/hockey/welcome',\n href: 'https://www.espn.com/fantasy/hockey/',\n lineup: {\n proGameToNumPlayersStarting: {\n '401802606': 1,\n '401802605': 1,\n '401802604': 2,\n },\n },\n currentLineup: {\n '3101': 3,\n '5037': 3,\n '5349': 3,\n '2590852': 3,\n '2967072': 7,\n '3020225': 5,\n '3069341': 4,\n '3527554': 7,\n '3899937': 3,\n '3899972': 4,\n '3904177': 7,\n '3988803': 4,\n '4196914': 5,\n '4233594': 3,\n '4233875': 3,\n '4697386': 4,\n '4697397': 3,\n '4697449': 4,\n '4874740': 7,\n '5080145': 7,\n '5149170': 6,\n '5206628': 3,\n },\n restrictionTypeName: 'NONE',\n },\n inSeason: true,\n isLive: false,\n currentScoringPeriodId: 35,\n },\n contentSourceId: 10,\n sortGlobal: 1411,\n isHidden: false,\n typeId: 9,\n type: {\n id: 9,\n name: 'Fantasy League Manager',\n code: 'fantasy',\n isDeletable: false,\n isDelegated: false,\n maxAllowed: 500,\n },\n bu: 0,\n },\n ],\n fantasyData: {\n totalFantasyLeagues: 23,\n leaguesBySportLeague: {\n NFL: 8,\n MLB: 8,\n NBA: 2,\n NHL: 1,\n WNBA: 4,\n },\n totalChallengeEntries: 7,\n challengeInformation: [\n {\n id: 263,\n gameType: 'PICKEM',\n challengeName: 'Pigskin Win Totals',\n challengeAbbrev: 'Pigskin Win Totals',\n scoringFormatIds: [1],\n state: 'LIVE',\n logoUrls: {\n logo:\n 'https://chui-assets-cdn.espn.com/149a15a7-10e7-421a-ae38-d7ff4df3f8de.png',\n logoDark:\n 'https://chui-assets-cdn.espn.com/1ab5b81f-0114-4ef0-aced-a096cfa487b1.png',\n logo1x1:\n 'https://chui-assets-cdn.espn.com/10dfa661-6adc-41c2-b391-9ae64baf1b50.png',\n logo1x1Dark:\n 'https://chui-assets-cdn.espn.com/10dfa661-6adc-41c2-b391-9ae64baf1b50.png',\n },\n mappings: [\n {\n type: 'SPORT',\n value: 'football',\n },\n {\n type: 'LEAGUE',\n value: 'nfl',\n },\n ],\n userEntryCount: 1,\n },\n {\n id: 264,\n gameType: 'CONTESTANT_POOL',\n challengeName: 'Eliminator Challenge 2025',\n challengeAbbrev: 'Eliminator Challenge',\n scoringFormatIds: [4],\n state: 'LIVE',\n logoUrls: {\n logo:\n 'https://chui-assets-cdn.espn.com/4ae2d3e1-ce2d-4ff0-b3f2-57e966c3e9c8.png',\n logoDark:\n 'https://chui-assets-cdn.espn.com/4beecd18-7bb5-441b-913c-a1ac5f12b893.png',\n logo1x1:\n 'https://chui-assets-cdn.espn.com/28fdbb06-fff0-45f4-a1fe-d09c1393302a.png',\n logo1x1Dark:\n 'https://chui-assets-cdn.espn.com/28fdbb06-fff0-45f4-a1fe-d09c1393302a.png',\n },\n mappings: [\n {\n type: 'SPORT',\n value: 'football',\n },\n {\n type: 'LEAGUE',\n value: 'nfl',\n },\n ],\n userEntryCount: 3,\n },\n {\n id: 265,\n gameType: 'PICKEM',\n challengeName: \"Pigskin Pick'em 2025\",\n challengeAbbrev: \"Pigskin Pick'em\",\n scoringFormatIds: [1, 3, 2],\n state: 'LIVE',\n logoUrls: {\n logo:\n 'https://chui-assets-cdn.espn.com/08166f17-1808-4634-b21a-66629878274c.png',\n logoDark:\n 'https://chui-assets-cdn.espn.com/213d8b5f-6117-480c-b160-4a3993a3c88e.png',\n logo1x1:\n 'https://chui-assets-cdn.espn.com/e06aca34-f148-4f1e-87e0-4c1d7492cc42.png',\n logo1x1Dark:\n 'https://chui-assets-cdn.espn.com/e06aca34-f148-4f1e-87e0-4c1d7492cc42.png',\n },\n mappings: [\n {\n type: 'SPORT',\n value: 'football',\n },\n {\n type: 'LEAGUE',\n value: 'nfl',\n },\n ],\n userEntryCount: 3,\n },\n {\n id: 266,\n gameType: 'PICKEM',\n challengeName: \"College Pick'em 2025\",\n challengeAbbrev: \"College Pick'em\",\n scoringFormatIds: [1, 3, 2],\n state: 'LIVE',\n logoUrls: {\n logo:\n 'https://chui-assets-cdn.espn.com/056a9567-dae4-4185-b4d6-a723df87f988.png',\n logoDark:\n 'https://chui-assets-cdn.espn.com/780faa3b-eda2-4b06-a276-b218c586901c.png',\n logo1x1:\n 'https://chui-assets-cdn.espn.com/c7f88874-19f6-4352-a54b-60f7d94bed2f.png',\n logo1x1Dark:\n 'https://chui-assets-cdn.espn.com/c7f88874-19f6-4352-a54b-60f7d94bed2f.png',\n },\n mappings: [\n {\n type: 'SPORT',\n value: 'football',\n },\n {\n type: 'LEAGUE',\n value: 'college-football',\n },\n ],\n userEntryCount: 0,\n },\n {\n id: 269,\n gameType: 'BRACKET',\n challengeName: 'CFP Bracket Challenge',\n challengeAbbrev: 'CFP Bracket Challenge',\n scoringFormatIds: [5],\n state: 'LANDER',\n logoUrls: {\n logo:\n 'https://chui-assets-cdn.espn.com/2fb0bf85-e01c-40a9-88b1-3421d30fe3b2.png',\n logoDark:\n 'https://chui-assets-cdn.espn.com/09fec69d-94e1-4c8f-9bb4-0610009999dd.png',\n logo1x1:\n 'https://chui-assets-cdn.espn.com/40159d72-8861-450f-926a-a493947b47b1.png',\n logo1x1Dark:\n 'https://chui-assets-cdn.espn.com/40159d72-8861-450f-926a-a493947b47b1.png',\n },\n mappings: [\n {\n type: 'SPORT',\n value: 'football',\n },\n {\n type: 'LEAGUE',\n value: 'college-football',\n },\n ],\n userEntryCount: 0,\n },\n {\n id: 270,\n gameType: 'PICKEM',\n challengeName: 'Capital One Bowl Mania 2025',\n challengeAbbrev: 'Capital One Bowl Mania',\n scoringFormatIds: [1, 3, 2],\n state: 'LANDER',\n logoUrls: {\n logo:\n 'https://chui-assets-cdn.espn.com/3862fdaa-aad9-417b-a471-7041697a1c7d.png',\n logoDark:\n 'https://chui-assets-cdn.espn.com/3862fdaa-aad9-417b-a471-7041697a1c7d.png',\n logo1x1:\n 'https://chui-assets-cdn.espn.com/a7cd3fde-d093-4375-917a-f983291d2481.jpeg',\n logo1x1Dark:\n 'https://chui-assets-cdn.espn.com/a7cd3fde-d093-4375-917a-f983291d2481.jpeg',\n },\n mappings: [\n {\n type: 'SPORT',\n value: 'football',\n },\n {\n type: 'LEAGUE',\n value: 'college-football',\n },\n ],\n userEntryCount: 0,\n },\n ],\n challengeScoreboardEnabled: true,\n leagueScoreboardEnabled: {\n '1': true,\n '2': true,\n '3': true,\n '4': true,\n '5': true,\n },\n },\n};\n","import { Observable } from '@/helpers/Observable';\nimport AnalyticsService from '@/services/AnalyticsService/AnalyticsService';\nimport IMaestroEventDelegate from '@/interfaces/IMaestroEventDelegate';\nimport { captureException } from '@/sentry';\nimport SDK from '@/index';\nimport FantasyService from '@/modules/espn/fantasy/services/FantasyService';\nimport {\n IFantasyResponse,\n ILeagueManagerResponse,\n ILeagueManagerRotoResponse,\n IPromoResponse,\n isLeagueManagerHeadToHeadResponse,\n isLeagueManagerRotoResponse,\n Player,\n Preference,\n TournamentBracketCardItem,\n FantasyHeaderItem,\n TournamentChallenge,\n TournamentOverflowQRItem,\n} from '../types';\n\nimport FantasyPolling from './FantasyViewModel.FantasyPolling';\nimport LeagueManagerPolling from './FantasyViewModel.LeagueManagerPolling';\nimport TournamentPolling from './FantasyViewModel.TournamentPolling';\nimport { slugify, stringHashCode } from '@/helpers/strings';\nimport { MOCK_FANTASY_RESPONSE } from '../mocks';\n\ntype NotLoggedInFantasyItem = {\n id: string;\n type: 'notLoggedIn';\n};\n\nexport type PromoFantasyItem = {\n id: string;\n type: 'promo';\n background: string;\n logo: string;\n qrCode: string;\n title: string;\n description: string;\n};\n\nexport type InactiveLeague = {\n id: string;\n type: 'inactiveLeague';\n leagueName: string;\n draftDate?: number;\n leagueLogo: string;\n leagueColor: string;\n};\n\ntype MatchupSingleTeam = {\n points: number;\n logo: string;\n scoringType: string;\n};\n\nexport type MatchupSingleRoster = {\n athleteHeadshot: string;\n athleteAbbrevName: string;\n athletesSlot: string;\n teamTriCode: string;\n proGameStatusLines: string[];\n};\n\nexport type MatchupActiveAthlete = {\n abbrevName: string;\n points: string;\n};\n\nexport type MatchupSingleItem = {\n id: string;\n type: 'matchup-single';\n league: {\n title: string;\n subtitle: string | undefined;\n color: string;\n logo: string;\n };\n team: MatchupSingleTeam;\n roster: MatchupSingleRoster[];\n activeAthletes: MatchupActiveAthlete[];\n topPlayers: TopPlayer[];\n};\n\nexport type TopPlayer = {\n abbrevName: string;\n headshot: string;\n position: string;\n teamTriCode: string;\n points: number;\n rosteredBy: string;\n};\n\ntype MatchupPairTeam = {\n name: string | undefined;\n record: string | undefined;\n points: string | undefined;\n projectedPoints: string | undefined;\n logo: string | undefined;\n winProbability: number | undefined;\n};\n\ntype MatchupPairRosterData = {\n headshot: string;\n abbrevName: string;\n slot: string;\n triCode: string;\n points?: number;\n projectedPoints?: number;\n stats: string[];\n};\n\nexport type MatchupPairRoster = {\n away: MatchupPairRosterData;\n home: MatchupPairRosterData;\n};\n\nexport type MatchupPairItem = {\n id: string;\n type: 'matchup-pair';\n league: {\n title: string | undefined;\n subtitle: string | undefined;\n color: string;\n logo: string;\n };\n awayTeam: MatchupPairTeam;\n homeTeam: MatchupPairTeam;\n roster: MatchupPairRoster[];\n activeAthletes: MatchupActiveAthlete[];\n topPlayers: TopPlayer[];\n};\n\nexport type FantasyItem =\n | NotLoggedInFantasyItem\n | PromoFantasyItem\n | MatchupPairItem\n | MatchupSingleItem\n | InactiveLeague\n | TournamentBracketCardItem\n | FantasyHeaderItem\n | FantasyGroupItem\n | TournamentOverflowQRItem;\n\nexport type FantasyGroupItem = {\n type: 'fantasy-group';\n id: string;\n header: FantasyHeaderItem;\n items: FantasyItem[];\n};\n\nconst FANTASY_ERROR_STATE = {\n NONE: 'none',\n TAB_LOAD_FAILURE: 'tabLoadFailure',\n} as const;\nexport type FantasyErrorState = typeof FANTASY_ERROR_STATE[keyof typeof FANTASY_ERROR_STATE];\n\nexport class FantasyViewModel {\n // Observable properties\n public fantasyItems = new Observable<FantasyItem[]>([]);\n public isDataLoading = new Observable<boolean>(false);\n public hasEverSuccessfullyLoaded = new Observable<boolean>(false);\n public isLoadingTc = new Observable<boolean>(false);\n\n // Properties\n private eventId: string;\n private delegate: IMaestroEventDelegate;\n private analyticsService: AnalyticsService;\n private fantasyService: FantasyService;\n private fantasyPolling: FantasyPolling;\n private leagueManagerPolling: LeagueManagerPolling;\n private tournamentPolling: TournamentPolling;\n public errorState = new Observable<FantasyErrorState>('none');\n private leagueSortOrder: Map<string, number> = new Map();\n private itemToLeagueKey: Map<string, string> = new Map();\n private useMockData: boolean = false;\n private _promoData: IPromoResponse | null = null;\n\n private _fantasyLeagues: (\n | MatchupPairItem\n | MatchupSingleItem\n | InactiveLeague\n )[] = [];\n\n private _tournamentChallenges: FantasyGroupItem[] = [];\n private _promoItem: PromoFantasyItem | null = null;\n private _tcProcessingCount: number = 0;\n\n constructor(\n eventId: string,\n delegate: IMaestroEventDelegate,\n analyticsService: AnalyticsService,\n options: {\n useMockData?: boolean;\n } = {}\n ) {\n this.useMockData = options.useMockData || false;\n this.eventId = eventId;\n this.delegate = delegate;\n this.analyticsService = analyticsService;\n this.fantasyService = new FantasyService();\n this.fantasyPolling = new FantasyPolling(this.fantasyService);\n this.leagueManagerPolling = new LeagueManagerPolling(this.fantasyService);\n this.tournamentPolling = new TournamentPolling(this.fantasyService);\n }\n\n /**\n * Initialize the ViewModel and start data fetching\n */\n async init(): Promise<void> {\n // Track panel view on initialization\n this.trackPanelView();\n await this.fetchData();\n }\n\n private async fetchData() {\n const isAuthenticated = await this.delegate.userIsAuthenticated();\n if (!isAuthenticated) {\n this.append({\n id: 'not-logged-in',\n type: 'notLoggedIn',\n });\n return;\n } else if (this.fantasyItems.value.find((i) => i.type === 'notLoggedIn')) {\n this.fantasyItems.value = [];\n }\n\n const swid = (await this.delegate.getUserSWID()) || '';\n const jwt = (await this.delegate.getUserToken()) || '';\n\n if (this.useMockData) {\n await this.fetchMockData();\n return;\n } else {\n await this.fantasyPolling.refresh(\n {\n eventId: this.eventId,\n swid,\n jwt,\n },\n this.processFantasy.bind(this)\n );\n }\n }\n\n onEngage(type: FantasyItem['type']) {\n this.analyticsService.panelClick({\n type: 'espnFantasy',\n name: 'fantasy_item_clicked',\n metadata: {\n card: type,\n },\n });\n }\n\n onAskLogin() {\n this.fantasyItems.value = [];\n this.delegate.onPanelEvent({\n type: 'fantasy:request:login',\n payload: {\n onLoginSuccess: async () => {\n await this.fetchData();\n },\n },\n });\n }\n\n /**\n * Clean up resources when the ViewModel is no longer needed\n */\n cleanup(): void {\n this.fantasyPolling.stop();\n this.fantasyPolling.removeLastResponseHash();\n this.leagueManagerPolling.stopAll();\n this.tournamentPolling.stopAll();\n this.leagueSortOrder.clear();\n this.itemToLeagueKey.clear();\n this._fantasyLeagues = [];\n this._tournamentChallenges = [];\n this._tcProcessingCount = 0;\n this.isLoadingTc.value = false;\n }\n\n /**\n * Track panel view event\n */\n private async trackPanelView(): Promise<void> {\n try {\n await this.analyticsService.panelView('espnFantasy');\n } catch (error) {\n captureException(error, {\n context: 'FantasyViewModel.trackPanelView',\n });\n console.error('[FANTASY] Error tracking panel view:', error);\n }\n }\n\n private async processFantasy(data: IFantasyResponse) {\n try {\n const token = (await this.delegate.getUserToken()) || '';\n this.leagueManagerPolling.stopAll();\n this.tournamentPolling.stopAll();\n\n // Check hide_pickems flag from panel config\n const config = SDK.getPageConfig();\n const panel = config?.panels?.find((p) => p.panel_type === 'espnFantasy');\n const hidePickems = panel?.renderer?.block_data?.hide_pickems || false;\n\n const hasChallenges =\n (data.fantasyData?.challengeInformation || []).length > 0;\n\n const noData =\n (data.fantasyData?.totalChallengeEntries || 0) +\n (data.fantasyData?.totalFantasyLeagues || 0) ===\n 0;\n\n // Clear and rebuild the sort order map based on preferences array order\n this.leagueSortOrder.clear();\n this.itemToLeagueKey.clear();\n // Clear internal lists on full refresh\n this._fantasyLeagues = [];\n this._tournamentChallenges = [];\n\n if (!hidePickems && hasChallenges) {\n this.isLoadingTc.value = true;\n data.fantasyData?.challengeInformation?.forEach((challenge) => {\n if (challenge.gameType === 'BRACKET') {\n this._tcProcessingCount++;\n const key = `tc-${challenge.id}-${token}`;\n this.tournamentPolling.refresh(\n key,\n {\n challengeId: String(challenge.id),\n competitionId: this.eventId,\n token,\n },\n (data) => {\n this.parseTournamentChallenge(data);\n this._tcProcessingCount--;\n if (this._tcProcessingCount === 0) {\n this.isLoadingTc.value = false;\n this.rebuildFantasyItems();\n }\n }\n );\n }\n });\n // If no BRACKET challenges were found, set isLoadingTc back to false\n if (this._tcProcessingCount === 0) {\n this.isLoadingTc.value = false;\n }\n } else {\n this.isLoadingTc.value = false;\n }\n if (noData || (data.preferences || []).length === 0) {\n const promo = await this.getPromoData();\n if (promo) {\n this._promoItem = {\n id: 'promo',\n type: 'promo',\n background: promo.fantasy.promotion.background,\n description: promo.fantasy.promotion.description,\n logo: promo.fantasy.promotion.logo,\n qrCode: promo.fantasy.promotion.qrCode,\n title: promo.fantasy.promotion.title,\n };\n }\n }\n\n for (let i = 0; i < (data.preferences || []).length; i++) {\n const pref = data.preferences![i];\n const entry = pref.metaData?.entry || {};\n const game = entry.abbrev;\n const seasonId = entry.seasonId;\n const leagueId = entry.groups?.[0]?.groupId;\n const draftDate = entry.groups?.[0]?.draftDate;\n\n if (!game || !seasonId || !leagueId || !entry.entryId) {\n continue;\n }\n\n const key = `${game}-${leagueId}-${seasonId}-${token}`;\n\n // Store the array index as the sort order for this league\n this.leagueSortOrder.set(key, i);\n\n this.leagueManagerPolling.refresh(\n key,\n {\n game,\n leagueId,\n seasonId,\n token,\n proGameId: this.eventId,\n teamId: entry.entryId,\n },\n (data) => {\n if (entry.entryMetadata?.draftComplete === false) {\n this.append(this.parseInactiveLeague(data, draftDate), key);\n } else if (isLeagueManagerHeadToHeadResponse(data)) {\n const items = this.parseHeadToHead(data, pref);\n\n if (items) {\n for (const item of items) {\n this.append(item, key);\n }\n }\n } else if (isLeagueManagerRotoResponse(data)) {\n const items = this.parseRoto(data, pref);\n if (items) {\n for (const item of items) {\n this.append(item, key);\n }\n }\n }\n }\n );\n }\n\n // Mark successful load\n this.hasEverSuccessfullyLoaded.value = true;\n this.errorState.value = 'none';\n\n // Initial rebuild even if empty, to ensure state is clean\n this.rebuildFantasyItems();\n } catch (error) {\n captureException(error, {\n context: 'FantasyViewModel.processFantasy',\n });\n console.error('[FANTASY] Error processing fantasy data:', error);\n\n if (!this.hasEverSuccessfullyLoaded.value) {\n this.errorState.value = 'tabLoadFailure';\n }\n }\n }\n\n private parseRoto(\n data: ILeagueManagerRotoResponse,\n preference: Preference\n ): FantasyItem[] | null {\n if (\n !data.matchups?.length ||\n !data.leagueName ||\n !data.scoringType ||\n !data.gameId\n ) {\n return null;\n }\n\n const items: MatchupSingleItem[] = [];\n for (const matchup of data.matchups) {\n if (!matchup.teams?.length) {\n continue;\n }\n\n const team = matchup.teams[0];\n\n if (\n !team.logo ||\n !data.sportLogo ||\n !data.sportColor ||\n team.points === undefined\n ) {\n continue;\n }\n\n const roster = team.roster || [];\n const matchupRoster: MatchupSingleRoster[] = [];\n const activeAthletes: MatchupActiveAthlete[] = [];\n\n for (const r of roster) {\n if (!r.player) {\n continue;\n }\n\n if (\n !r.player.abbrevName ||\n !r.player.headshot ||\n !r.player.proTeam?.triCode ||\n !r.slot\n ) {\n continue;\n }\n\n matchupRoster.push({\n athleteHeadshot: r.player.headshot,\n athleteAbbrevName: r.player.abbrevName,\n athletesSlot: r.slot,\n teamTriCode: r.player.proTeam.triCode,\n proGameStatusLines: r.player.proGameStatusLines || [],\n });\n\n if (r.player.currentlyWatching && r.player.points !== undefined) {\n activeAthletes.push({\n abbrevName: r.player.abbrevName,\n points: `${r.player.points} FPTS`,\n });\n }\n }\n\n items.push({\n id: stringHashCode(JSON.stringify(preference)).toString(),\n type: 'matchup-single',\n topPlayers: this.parseTopPlayers(data.topPlayers || []),\n league: {\n color: data.sportColor,\n logo: data.sportLogo,\n subtitle: data.name,\n title: data.leagueName,\n },\n team: {\n logo: team.logo,\n scoringType: data.scoringType.includes('SEASON')\n ? 'SEASON'\n : data.scoringType,\n points: team.points,\n },\n roster: matchupRoster,\n activeAthletes,\n });\n }\n return items;\n }\n\n append(item: FantasyItem | null, leagueKey?: string) {\n if (!item) {\n return;\n }\n\n if (item.type === 'notLoggedIn') {\n this.fantasyItems.value = [item];\n return;\n }\n\n if (item.type === 'promo') {\n this._promoItem = item;\n }\n\n // Store the league key for this item if provided\n if (leagueKey) {\n this.itemToLeagueKey.set(item.id, leagueKey);\n }\n\n if (\n item.type === 'matchup-pair' ||\n item.type === 'matchup-single' ||\n item.type === 'inactiveLeague'\n ) {\n const existingItemIndex = this._fantasyLeagues.findIndex(\n (i) => i.id === item.id\n );\n if (existingItemIndex !== -1) {\n this._fantasyLeagues[existingItemIndex] = item;\n } else {\n this._fantasyLeagues.push(item);\n }\n\n // Sort items inside the group\n this._fantasyLeagues.sort((a, b) => {\n const keyA = this.itemToLeagueKey.get(a.id);\n const keyB = this.itemToLeagueKey.get(b.id);\n const orderA =\n keyA !== undefined\n ? this.leagueSortOrder.get(keyA) ?? Number.MAX_SAFE_INTEGER\n : Number.MAX_SAFE_INTEGER;\n const orderB =\n keyB !== undefined\n ? this.leagueSortOrder.get(keyB) ?? Number.MAX_SAFE_INTEGER\n : Number.MAX_SAFE_INTEGER;\n return orderA - orderB;\n });\n }\n\n const existingGroupIndex = this._tournamentChallenges.findIndex(\n (g) => g.id === leagueKey\n );\n\n if (item.type === 'fantasy-header') {\n if (existingGroupIndex !== -1) {\n this._tournamentChallenges[existingGroupIndex].header = item;\n } else if (leagueKey) {\n this._tournamentChallenges.push({\n type: 'fantasy-group',\n id: leagueKey,\n header: item,\n items: [],\n });\n }\n } else if (\n item.type === 'tournament-bracket-card' ||\n item.type === 'tournament-overflow-qr'\n ) {\n if (existingGroupIndex !== -1) {\n const group = this._tournamentChallenges[existingGroupIndex];\n const existingItemIndex = group.items.findIndex(\n (i) => i.id === item.id\n );\n if (existingItemIndex !== -1) {\n group.items[existingItemIndex] = item;\n } else {\n group.items.push(item);\n }\n } else if (leagueKey) {\n this._tournamentChallenges.push({\n type: 'fantasy-group',\n id: leagueKey,\n header: {\n type: 'fantasy-header',\n id: `${leagueKey}-header`,\n title: '',\n }, // Placeholder\n items: [item],\n });\n }\n }\n\n this.rebuildFantasyItems();\n }\n\n private rebuildFantasyItems() {\n const items: FantasyItem[] = [];\n\n if (this._tournamentChallenges.length > 0) {\n items.push(...this._tournamentChallenges);\n }\n\n if (this._fantasyLeagues.length > 0) {\n items.push({\n type: 'fantasy-group',\n id: 'header-fantasy-leagues-group',\n header: {\n type: 'fantasy-header',\n id: 'header-fantasy-leagues',\n title: 'Fantasy Leagues',\n },\n items: this._fantasyLeagues,\n });\n }\n\n if (\n this._promoItem &&\n this._tournamentChallenges.length === 0 &&\n this._fantasyLeagues.length === 0 &&\n items.length === 0 &&\n !this.isLoadingTc.value\n ) {\n items.push(this._promoItem);\n }\n\n this.fantasyItems.value = items;\n }\n\n private parseHeadToHead(\n data: ILeagueManagerResponse,\n preference: Preference\n ): FantasyItem[] | null {\n if (\n !data.matchups?.length ||\n !data.leagueName ||\n !data.sportColor ||\n !data.sportLogo ||\n !data.gameId\n ) {\n return null;\n }\n\n const items: MatchupPairItem[] = [];\n for (const matchup of data.matchups) {\n if (!matchup.home || !matchup.away) {\n continue;\n }\n\n const roster: MatchupPairRoster[] = [];\n const activeAthletes: MatchupActiveAthlete[] = [];\n const homeRoster = matchup.home.roster || [];\n const awayRoster = matchup.away.roster || [];\n\n for (let i = 0; i < awayRoster.length; i++) {\n const singleAwayRoster = awayRoster[i];\n const singleHomeRoster = homeRoster[i];\n\n if (!singleAwayRoster.player || !singleHomeRoster.player) continue;\n if (\n !singleAwayRoster.player.abbrevName ||\n !singleAwayRoster.player.headshot ||\n !singleAwayRoster.slot ||\n !singleAwayRoster.player.proTeam?.triCode ||\n !matchup.away?.record\n ) {\n continue;\n }\n\n if (\n !singleHomeRoster.player.abbrevName ||\n !singleHomeRoster.player.headshot ||\n !singleHomeRoster.slot ||\n !singleHomeRoster.player.proTeam?.triCode ||\n !matchup.home?.record\n ) {\n continue;\n }\n\n roster.push({\n away: {\n abbrevName: singleAwayRoster.player.abbrevName,\n headshot: singleAwayRoster.player.headshot,\n points: singleAwayRoster.player.points,\n slot: singleAwayRoster.slot,\n stats: singleAwayRoster.player.proGameStatusLines || [],\n triCode: singleAwayRoster.player.proTeam.triCode,\n projectedPoints: singleAwayRoster.player.projectedPoints,\n },\n home: {\n abbrevName: singleHomeRoster.player.abbrevName,\n headshot: singleHomeRoster.player.headshot,\n points: singleHomeRoster.player.points,\n slot: singleHomeRoster.slot,\n stats: singleHomeRoster.player.proGameStatusLines || [],\n triCode: singleHomeRoster.player.proTeam?.triCode,\n projectedPoints: singleHomeRoster.player.projectedPoints,\n },\n });\n\n if (\n singleHomeRoster.player.currentlyWatching &&\n singleHomeRoster.player.points !== undefined\n ) {\n activeAthletes.push({\n abbrevName: singleHomeRoster.player.abbrevName,\n points: `${singleHomeRoster.player.points} FPTS`,\n });\n }\n }\n\n items.push({\n id: stringHashCode(JSON.stringify(preference)).toString(),\n type: 'matchup-pair',\n awayTeam: {\n logo: matchup.away.logo,\n name: matchup.away.name,\n points:\n data.scoringType === 'H2H_POINTS'\n ? String(matchup.away.points)\n : matchup.away.score,\n projectedPoints: matchup.away.projectedPoints,\n record: matchup.away.record,\n winProbability: matchup.away.winProbability,\n },\n homeTeam: {\n logo: matchup.home.logo,\n name: matchup.home.name,\n points:\n data.scoringType === 'H2H_POINTS'\n ? String(matchup.home.points)\n : matchup.home.score,\n projectedPoints: matchup.home.projectedPoints,\n record: matchup.home.record,\n winProbability: matchup.home.winProbability,\n },\n league: {\n color: data.sportColor,\n logo: data.sportLogo,\n subtitle: matchup.name,\n title: data.leagueName,\n },\n roster,\n activeAthletes,\n topPlayers: this.parseTopPlayers(data.topPlayers || []),\n });\n }\n\n return items;\n }\n\n private parseTopPlayers(players: Player[]): TopPlayer[] {\n const topPlayers: TopPlayer[] = [];\n\n for (const p of players) {\n if (\n !p.abbrevName ||\n !p.headshot ||\n !p.proTeam?.triCode ||\n p.points === undefined\n ) {\n continue;\n }\n\n let rosteredBy = '';\n if (\n p.percentRostered !== undefined &&\n p.percentRostered > 0 &&\n p.playerStatus?.startsWith('Rostered')\n ) {\n rosteredBy = p.playerStatus;\n }\n\n topPlayers.push({\n abbrevName: p.abbrevName,\n headshot: p.headshot,\n position: p.positions?.split(',')[0] || '',\n teamTriCode: p.proTeam.triCode,\n points: p.points,\n rosteredBy,\n });\n }\n\n return topPlayers;\n }\n\n private parseInactiveLeague(\n data: ILeagueManagerResponse | ILeagueManagerRotoResponse,\n draftDate?: number | string | null\n ): InactiveLeague | null {\n if (!data.sportColor || !data.sportLogo || !data.leagueName) {\n return null;\n }\n\n let draftDateNum: number | undefined = undefined;\n if (draftDate) {\n const parsedDate = new Date(Number(draftDate));\n if (!isNaN(parsedDate.getTime())) {\n draftDateNum = parsedDate.getTime();\n }\n }\n\n return {\n id: slugify(`${data.gameId}-inactive-${data.leagueName}`),\n leagueColor: data.sportColor,\n leagueLogo: data.sportLogo,\n leagueName: data.leagueName,\n type: 'inactiveLeague',\n draftDate: draftDateNum,\n };\n }\n\n private async getPromoData(): Promise<IPromoResponse | null> {\n if (this._promoData) {\n return this._promoData;\n }\n\n try {\n this._promoData = await this.fantasyService.getPromo();\n return this._promoData;\n } catch (error) {\n captureException(error, {\n context: 'FantasyViewModel.getPromoData',\n });\n return null;\n }\n }\n\n private async parseTournamentChallenge(data: TournamentChallenge) {\n if (!data.id) {\n return;\n }\n\n let validEntries = data.entries?.filter((entry) => entry.id) || [];\n\n if (validEntries.length === 0) {\n return;\n }\n\n const header: FantasyHeaderItem = {\n type: 'fantasy-header',\n id: `${data.id}-header`,\n title: data.name || 'Tournament Challenge',\n };\n this.append(header, data.id);\n\n const existingGroupIndex = this._tournamentChallenges.findIndex(\n (g) => g.id === data.id\n );\n if (existingGroupIndex !== -1) {\n this._tournamentChallenges[existingGroupIndex].items = [];\n }\n\n const totalEntries = validEntries.length;\n const entriesToShow = validEntries.slice(0, 5);\n\n for (const entry of entriesToShow) {\n let userPickName: string | undefined;\n\n if (data.propositions && entry.picks) {\n for (const pick of entry.picks) {\n if (!pick.propositionId || !pick.outcomeId) continue;\n\n const proposition = data.propositions.find(\n (p) => p.id === pick.propositionId\n );\n\n if (proposition && proposition.outcomes) {\n const outcome = proposition.outcomes.find(\n (o) => o.id === pick.outcomeId\n );\n\n if (outcome && outcome.name) {\n userPickName = outcome.name;\n break;\n }\n }\n }\n }\n\n const card: TournamentBracketCardItem = {\n type: 'tournament-bracket-card',\n id: entry.id!,\n name: entry.name || '',\n rank: entry.rank || 0,\n score: entry.score || 0,\n percentile: Math.round((entry.percentile || 0) * 100),\n entryStatusIcon: entry.entryStatusIcon || '',\n finalPick: entry.finalPick\n ? {\n propositionId: entry.finalPick.propositionId,\n outcomeId: entry.finalPick.outcomeId,\n primaryLogo: (entry.finalPick as any).outcomePicked?.primaryLogo,\n secondaryLogo: (entry.finalPick as any).outcomePicked\n ?.secondaryLogo,\n result: entry.finalPick.result,\n }\n : { propositionId: '', outcomeId: '' },\n isComplete: entry.isComplete || false,\n picks: entry.picks,\n tournamentId: data.id,\n tournamentAbbrev: data.abbrev || '',\n tournamentLogo: data.logo || '',\n propositions: data.propositions,\n userPickName,\n };\n this.append(card, data.id);\n }\n\n if (totalEntries > 5 && data.state === 'LIVE') {\n const promoData = await this.getPromoData();\n const isLocked = data.locked === true;\n const qrCodeVariant = isLocked ? 'tc-live' : 'tc-pre';\n const promoVariant = promoData?.[qrCodeVariant];\n\n if (promoVariant) {\n const overflowQR: TournamentOverflowQRItem = {\n type: 'tournament-overflow-qr',\n id: `${data.id}-overflow`,\n background: promoVariant.promotion.background,\n logo: promoVariant.promotion.logo,\n qrCode: promoVariant.promotion.qrCode,\n title: promoVariant.promotion.title,\n description: promoVariant.promotion.description,\n tournamentId: data.id,\n };\n this.append(overflowQR, data.id);\n }\n }\n }\n\n /**\n * Fetch mock data for testing\n */\n private async fetchMockData(): Promise<void> {\n this.hasEverSuccessfullyLoaded.value = true;\n await this.processFantasy(MOCK_FANTASY_RESPONSE);\n this.errorState.value = 'none';\n this.isDataLoading.value = false;\n }\n\n clearTabLoadFailure() {\n this.errorState.value = 'none';\n // Small delay to allow UI to update before refetching\n setTimeout(() => {\n this.fetchData();\n }, 100);\n }\n\n setDataToPanel(data: Record<string, any>) {\n if (data.leagueManagerOverrideBaseUrl) {\n this.fantasyService.leagueManagerOverrideBaseUrl =\n data.leagueManagerOverrideBaseUrl;\n }\n\n if (data.fantasyOverrideBaseUrl) {\n this.fantasyService.fantasyOverrideBaseUrl = data.fantasyOverrideBaseUrl;\n }\n\n if (data.gambitOverrideBaseUrl) {\n this.fantasyService.gambitOverrideBaseUrl = data.gambitOverrideBaseUrl;\n }\n }\n}\n\nexport default FantasyViewModel;\n"],"sourceRoot":""}
|