diff --git a/lib/parser/contents/classes/Poll.js b/lib/parser/contents/classes/Poll.js index 15e81441..9bd1a55d 100644 --- a/lib/parser/contents/classes/Poll.js +++ b/lib/parser/contents/classes/Poll.js @@ -10,17 +10,23 @@ class Poll { constructor(data) { this.choices = data.choices.map((choice) => ({ text: new Text(choice.text).toString(), - select_endpoint: new NavigationEndpoint(choice.selectServiceEndpoint), - deselect_endpoint: new NavigationEndpoint(choice.deselectServiceEndpoint), - vote_ratio_if_selected: choice.voteRatioIfSelected, + select_endpoint: choice.selectServiceEndpoint ? new NavigationEndpoint(choice.selectServiceEndpoint) : null, + deselect_endpoint: choice.deselectServiceEndpoint ? new NavigationEndpoint(choice.deselectServiceEndpoint) : null, + vote_ratio_if_selected: choice?.voteRatioIfSelected || null, vote_percentage_if_selected: new Text(choice.votePercentageIfSelected), - vote_ratio_if_not_selected: choice.voteRatioIfSelected, + vote_ratio_if_not_selected: choice?.voteRatioIfSelected || null, vote_percentage_if_not_selected: new Text(choice.votePercentageIfSelected), - image: Thumbnail.fromResponse(choice.image) + image: choice.image ? Thumbnail.fromResponse(choice.image) : null })); - - this.total_votes = new Text(data.totalVotes); - this.poll_type = data.type; + + if (poll.type) + this.poll_type = data.type; + + if (data.totalVotes) + this.total_votes = new Text(data.totalVotes); + + if (data.liveChatPollId) + this.live_chat_poll_id = data.liveChatPollId; } } diff --git a/lib/parser/contents/classes/livechat/AddBannerToLiveChatCommand.js b/lib/parser/contents/classes/livechat/AddBannerToLiveChatCommand.js index a911474c..052d9244 100644 --- a/lib/parser/contents/classes/livechat/AddBannerToLiveChatCommand.js +++ b/lib/parser/contents/classes/livechat/AddBannerToLiveChatCommand.js @@ -4,7 +4,7 @@ const Parser = require('../..'); class AddBannerToLiveChatCommand { constructor(data) { - return Parser.parse(data.bannerRenderer, 'livechat/items'); + return Parser.parse(data.bannerRenderer); } } diff --git a/lib/parser/contents/classes/livechat/AddChatItemAction.js b/lib/parser/contents/classes/livechat/AddChatItemAction.js index f325bdf8..d7a9917f 100644 --- a/lib/parser/contents/classes/livechat/AddChatItemAction.js +++ b/lib/parser/contents/classes/livechat/AddChatItemAction.js @@ -6,7 +6,7 @@ class AddChatItemAction { type = 'AddChatItemAction'; constructor(data) { - this.item = Parser.parse(data.item, 'livechat/items'); + this.item = Parser.parse(data.item); this.client_id = data.clientId || null; } } diff --git a/lib/parser/contents/classes/livechat/AddLiveChatTickerItemAction.js b/lib/parser/contents/classes/livechat/AddLiveChatTickerItemAction.js index 58effaa3..ac5b7759 100644 --- a/lib/parser/contents/classes/livechat/AddLiveChatTickerItemAction.js +++ b/lib/parser/contents/classes/livechat/AddLiveChatTickerItemAction.js @@ -6,7 +6,7 @@ class AddLiveChatTickerItemAction { type = 'AddLiveChatTickerItemAction'; constructor(data) { - this.item = Parser.parse(data.item, 'livechat/items'); + this.item = Parser.parse(data.item); this.duration_sec = data.durationSec; } } diff --git a/lib/parser/contents/classes/livechat/LiveChatActionPanel.js b/lib/parser/contents/classes/livechat/LiveChatActionPanel.js index 0f8746cf..94819afe 100644 --- a/lib/parser/contents/classes/livechat/LiveChatActionPanel.js +++ b/lib/parser/contents/classes/livechat/LiveChatActionPanel.js @@ -7,7 +7,7 @@ class LiveChatActionPanel { constructor(data) { this.id = data.id; - this.contents = Parser.parse(data.contents, 'livechat/items'); + this.contents = Parser.parse(data.contents); this.target_id = data.targetId; } } diff --git a/lib/parser/contents/classes/livechat/ReplaceChatItemAction.js b/lib/parser/contents/classes/livechat/ReplaceChatItemAction.js index 9e6a4d0c..735eed87 100644 --- a/lib/parser/contents/classes/livechat/ReplaceChatItemAction.js +++ b/lib/parser/contents/classes/livechat/ReplaceChatItemAction.js @@ -5,7 +5,7 @@ const Parser = require('../..'); class ReplaceChatItemAction { constructor(data) { this.target_item_id = data.targetItemId; - this.replacement_item = Parser.parse(data.replacementItem, 'livechat/items'); + this.replacement_item = Parser.parse(data.replacementItem); } } diff --git a/lib/parser/contents/classes/livechat/ReplayChatItemAction.js b/lib/parser/contents/classes/livechat/ReplayChatItemAction.js index 6e324d6c..076153da 100644 --- a/lib/parser/contents/classes/livechat/ReplayChatItemAction.js +++ b/lib/parser/contents/classes/livechat/ReplayChatItemAction.js @@ -9,7 +9,7 @@ class ReplayChatItemAction { this.actions = Parser.parse(data.actions?.map((action) => { delete action.clickTrackingParams; return action; - }), 'livechat') || []; + })) || []; this.video_offset_time_msec = data.videoOffsetTimeMsec; } diff --git a/lib/parser/contents/classes/livechat/ShowLiveChatActionPanelAction.js b/lib/parser/contents/classes/livechat/ShowLiveChatActionPanelAction.js index 673c99d0..b5317c51 100644 --- a/lib/parser/contents/classes/livechat/ShowLiveChatActionPanelAction.js +++ b/lib/parser/contents/classes/livechat/ShowLiveChatActionPanelAction.js @@ -6,7 +6,7 @@ class ShowLiveChatActionPanelAction { type = 'ShowLiveChatActionPanelAction'; constructor(data) { - this.panel_to_show = Parser.parse(data.panelToShow, 'livechat'); + this.panel_to_show = Parser.parse(data.panelToShow); } } diff --git a/lib/parser/contents/classes/livechat/UpdateLiveChatPollAction.js b/lib/parser/contents/classes/livechat/UpdateLiveChatPollAction.js index 6e012472..9d7bf6bb 100644 --- a/lib/parser/contents/classes/livechat/UpdateLiveChatPollAction.js +++ b/lib/parser/contents/classes/livechat/UpdateLiveChatPollAction.js @@ -6,7 +6,7 @@ class UpdateLiveChatPollAction { type = 'UpdateLiveChatPollAction'; constructor(data) { - this.poll_to_update = Parser.parse(data.pollToUpdate, 'livechat/items'); + this.poll_to_update = Parser.parse(data.pollToUpdate); } } diff --git a/lib/parser/contents/classes/livechat/items/Poll.js b/lib/parser/contents/classes/livechat/items/Poll.js deleted file mode 100644 index 86523661..00000000 --- a/lib/parser/contents/classes/livechat/items/Poll.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const Parser = require('../../..'); -const Text = require('../../Text'); -const NavigationEndpoint = require('../../NavigationEndpoint'); - -class Poll { - type = 'Poll'; - - constructor(data) { - this.header = Parser.parse(data.header, 'livechat/items'); - - this.choices = data.choices.map((choice) => ({ - text: new Text(choice.text).toString(), - selected: choice.selected, - vote_ratio: choice.voteRatio, - vote_percentage: new Text(choice.votePercentage).toString(), - select_endpoint: new NavigationEndpoint(choice.selectServiceEndpoint) - })); - - this.live_chat_poll_id = data.liveChatPollId; - } -} - -module.exports = Poll; \ No newline at end of file diff --git a/lib/parser/contents/index.js b/lib/parser/contents/index.js index 02f1f69b..9878af5d 100644 --- a/lib/parser/contents/index.js +++ b/lib/parser/contents/index.js @@ -47,7 +47,7 @@ class LiveChatContinuation { this.actions = Parser.parse(data.actions?.map((action) => { delete action.clickTrackingParams; return action; - }), 'livechat') || []; + })) || []; this.action_panel = Parser.parse(data.actionPanel); this.item_list = Parser.parse(data.itemList); @@ -135,7 +135,7 @@ class Parser { continuation: data.continuation ? Parser.parseC(data.continuation) : null, /** @type {*} */ continuation_contents: data.continuationContents ? Parser.parseLC(data.continuationContents) : null, - actions: data.actions && Parser.parseLA(data.actions), + actions: data.actions && Parser.parseActions(data.actions), metadata: Parser.parse(data.metadata), header: Parser.parse(data.header), /** @type {import('./classes/PlayerMicroformat')} */ @@ -198,12 +198,12 @@ class Parser { }).filter((item) => item)); } - static parseLA(data) { + static parseActions(data) { if (Array.isArray(data)) { return Parser.parse(data.map((action) => { delete action.clickTrackingParams; return action; - }), 'livechat'); + })); } return Parser.parse(data) || null; @@ -217,10 +217,9 @@ class Parser { * Parses the `contents` property of the response. * * @param {object} data - contents to be parsed. - * @param {string} module - a folder for specific DA classes. * @returns {*} */ - static parse(data, module) { + static parse(data) { if (!data) return null; @@ -233,9 +232,7 @@ class Parser { if (!this.shouldIgnore(classname)) { try { - const path = module ? `${module}/` : ''; - - const TargetClass = requireParserClass(path + classname); + const TargetClass = requireParserClass(classname); const result = new TargetClass(item[keys[0]]); results.push(result); @@ -254,9 +251,7 @@ class Parser { if (!this.shouldIgnore(classname)) { try { - const path = module ? `${module}/` : ''; - - const TargetClass = requireParserClass(path + classname); + const TargetClass = requireParserClass(classname); const result = new TargetClass(data[keys[0]]); this.#addToMemo(classname, result); diff --git a/lib/parser/contents/map.js b/lib/parser/contents/map.js index 47161271..f88ffa89 100644 --- a/lib/parser/contents/map.js +++ b/lib/parser/contents/map.js @@ -3,7 +3,7 @@ /* eslint-disable */ -const map = {'AnalyticsMainAppKeyMetrics': () => require('./classes/AnalyticsMainAppKeyMetrics'),'AnalyticsVideo': () => require('./classes/AnalyticsVideo'),'AnalyticsVodCarouselCard': () => require('./classes/AnalyticsVodCarouselCard'),'Author': () => require('./classes/Author'),'BackstageImage': () => require('./classes/BackstageImage'),'BackstagePost': () => require('./classes/BackstagePost'),'BackstagePostThread': () => require('./classes/BackstagePostThread'),'BrowseFeedActions': () => require('./classes/BrowseFeedActions'),'Button': () => require('./classes/Button'),'C4TabbedHeader': () => require('./classes/C4TabbedHeader'),'CallToActionButton': () => require('./classes/CallToActionButton'),'Card': () => require('./classes/Card'),'CardCollection': () => require('./classes/CardCollection'),'Channel': () => require('./classes/Channel'),'ChannelAboutFullMetadata': () => require('./classes/ChannelAboutFullMetadata'),'ChannelFeaturedContent': () => require('./classes/ChannelFeaturedContent'),'ChannelHeaderLinks': () => require('./classes/ChannelHeaderLinks'),'ChannelMetadata': () => require('./classes/ChannelMetadata'),'ChannelMobileHeader': () => require('./classes/ChannelMobileHeader'),'ChannelThumbnailWithLink': () => require('./classes/ChannelThumbnailWithLink'),'ChannelVideoPlayer': () => require('./classes/ChannelVideoPlayer'),'ChildVideo': () => require('./classes/ChildVideo'),'ChipCloud': () => require('./classes/ChipCloud'),'ChipCloudChip': () => require('./classes/ChipCloudChip'),'CollageHeroImage': () => require('./classes/CollageHeroImage'),'Comment': () => require('./classes/Comment'),'CommentReplyDialog': () => require('./classes/CommentReplyDialog'),'comments/AuthorCommentBadge': () => require('./classes/comments/AuthorCommentBadge'),'comments/CommentActionButtons': () => require('./classes/comments/CommentActionButtons'),'comments/CommentReplies': () => require('./classes/comments/CommentReplies'),'comments/CommentSimplebox': () => require('./classes/comments/CommentSimplebox'),'CommentsEntryPointHeader': () => require('./classes/CommentsEntryPointHeader'),'CommentsHeader': () => require('./classes/CommentsHeader'),'CommentThread': () => require('./classes/CommentThread'),'CompactLink': () => require('./classes/CompactLink'),'CompactMix': () => require('./classes/CompactMix'),'CompactPlaylist': () => require('./classes/CompactPlaylist'),'CompactVideo': () => require('./classes/CompactVideo'),'ContinuationItem': () => require('./classes/ContinuationItem'),'CtaGoToCreatorStudio': () => require('./classes/CtaGoToCreatorStudio'),'DataModelSection': () => require('./classes/DataModelSection'),'DidYouMean': () => require('./classes/DidYouMean'),'DownloadButton': () => require('./classes/DownloadButton'),'Element': () => require('./classes/Element'),'EmergencyOnebox': () => require('./classes/EmergencyOnebox'),'EmojiRun': () => require('./classes/EmojiRun'),'Endscreen': () => require('./classes/Endscreen'),'EndscreenElement': () => require('./classes/EndscreenElement'),'EndScreenPlaylist': () => require('./classes/EndScreenPlaylist'),'EndScreenVideo': () => require('./classes/EndScreenVideo'),'ExpandableTab': () => require('./classes/ExpandableTab'),'ExpandedShelfContents': () => require('./classes/ExpandedShelfContents'),'FeedFilterChipBar': () => require('./classes/FeedFilterChipBar'),'FeedTabbedHeader': () => require('./classes/FeedTabbedHeader'),'Format': () => require('./classes/Format'),'Grid': () => require('./classes/Grid'),'GridChannel': () => require('./classes/GridChannel'),'GridPlaylist': () => require('./classes/GridPlaylist'),'GridVideo': () => require('./classes/GridVideo'),'HistorySuggestion': () => require('./classes/HistorySuggestion'),'HorizontalCardList': () => require('./classes/HorizontalCardList'),'HorizontalList': () => require('./classes/HorizontalList'),'ItemSection': () => require('./classes/ItemSection'),'ItemSectionHeader': () => require('./classes/ItemSectionHeader'),'LikeButton': () => require('./classes/LikeButton'),'LiveChat': () => require('./classes/LiveChat'),'livechat/AddBannerToLiveChatCommand': () => require('./classes/livechat/AddBannerToLiveChatCommand'),'livechat/AddChatItemAction': () => require('./classes/livechat/AddChatItemAction'),'livechat/AddLiveChatTickerItemAction': () => require('./classes/livechat/AddLiveChatTickerItemAction'),'livechat/items/LiveChatBanner': () => require('./classes/livechat/items/LiveChatBanner'),'livechat/items/LiveChatBannerHeader': () => require('./classes/livechat/items/LiveChatBannerHeader'),'livechat/items/LiveChatBannerPoll': () => require('./classes/livechat/items/LiveChatBannerPoll'),'livechat/items/LiveChatMembershipItem': () => require('./classes/livechat/items/LiveChatMembershipItem'),'livechat/items/LiveChatPaidMessage': () => require('./classes/livechat/items/LiveChatPaidMessage'),'livechat/items/LiveChatPaidSticker': () => require('./classes/livechat/items/LiveChatPaidSticker'),'livechat/items/LiveChatPlaceholderItem': () => require('./classes/livechat/items/LiveChatPlaceholderItem'),'livechat/items/LiveChatTextMessage': () => require('./classes/livechat/items/LiveChatTextMessage'),'livechat/items/LiveChatTickerPaidMessageItem': () => require('./classes/livechat/items/LiveChatTickerPaidMessageItem'),'livechat/items/LiveChatTickerSponsorItem': () => require('./classes/livechat/items/LiveChatTickerSponsorItem'),'livechat/items/LiveChatViewerEngagementMessage': () => require('./classes/livechat/items/LiveChatViewerEngagementMessage'),'livechat/items/Poll': () => require('./classes/livechat/items/Poll'),'livechat/items/PollHeader': () => require('./classes/livechat/items/PollHeader'),'livechat/LiveChatActionPanel': () => require('./classes/livechat/LiveChatActionPanel'),'livechat/MarkChatItemAsDeletedAction': () => require('./classes/livechat/MarkChatItemAsDeletedAction'),'livechat/MarkChatItemsByAuthorAsDeletedAction': () => require('./classes/livechat/MarkChatItemsByAuthorAsDeletedAction'),'livechat/RemoveBannerForLiveChatCommand': () => require('./classes/livechat/RemoveBannerForLiveChatCommand'),'livechat/ReplaceChatItemAction': () => require('./classes/livechat/ReplaceChatItemAction'),'livechat/ReplayChatItemAction': () => require('./classes/livechat/ReplayChatItemAction'),'livechat/ShowLiveChatActionPanelAction': () => require('./classes/livechat/ShowLiveChatActionPanelAction'),'livechat/ShowLiveChatTooltipCommand': () => require('./classes/livechat/ShowLiveChatTooltipCommand'),'livechat/UpdateDateTextAction': () => require('./classes/livechat/UpdateDateTextAction'),'livechat/UpdateDescriptionAction': () => require('./classes/livechat/UpdateDescriptionAction'),'livechat/UpdateLiveChatPollAction': () => require('./classes/livechat/UpdateLiveChatPollAction'),'livechat/UpdateTitleAction': () => require('./classes/livechat/UpdateTitleAction'),'livechat/UpdateToggleButtonTextAction': () => require('./classes/livechat/UpdateToggleButtonTextAction'),'livechat/UpdateViewershipAction': () => require('./classes/livechat/UpdateViewershipAction'),'LiveChatAuthorBadge': () => require('./classes/LiveChatAuthorBadge'),'LiveChatHeader': () => require('./classes/LiveChatHeader'),'LiveChatItemList': () => require('./classes/LiveChatItemList'),'LiveChatMessageInput': () => require('./classes/LiveChatMessageInput'),'LiveChatParticipant': () => require('./classes/LiveChatParticipant'),'LiveChatParticipantsList': () => require('./classes/LiveChatParticipantsList'),'Menu': () => require('./classes/Menu'),'MenuNavigationItem': () => require('./classes/MenuNavigationItem'),'MenuServiceItem': () => require('./classes/MenuServiceItem'),'MenuServiceItemDownload': () => require('./classes/MenuServiceItemDownload'),'MerchandiseItem': () => require('./classes/MerchandiseItem'),'MerchandiseShelf': () => require('./classes/MerchandiseShelf'),'Message': () => require('./classes/Message'),'MetadataBadge': () => require('./classes/MetadataBadge'),'MetadataRow': () => require('./classes/MetadataRow'),'MetadataRowContainer': () => require('./classes/MetadataRowContainer'),'MetadataRowHeader': () => require('./classes/MetadataRowHeader'),'MicroformatData': () => require('./classes/MicroformatData'),'Mix': () => require('./classes/Mix'),'Movie': () => require('./classes/Movie'),'MovingThumbnail': () => require('./classes/MovingThumbnail'),'MusicCarouselShelf': () => require('./classes/MusicCarouselShelf'),'MusicCarouselShelfBasicHeader': () => require('./classes/MusicCarouselShelfBasicHeader'),'MusicDescriptionShelf': () => require('./classes/MusicDescriptionShelf'),'MusicDetailHeader': () => require('./classes/MusicDetailHeader'),'MusicHeader': () => require('./classes/MusicHeader'),'MusicImmersiveHeader': () => require('./classes/MusicImmersiveHeader'),'MusicInlineBadge': () => require('./classes/MusicInlineBadge'),'MusicItemThumbnailOverlay': () => require('./classes/MusicItemThumbnailOverlay'),'MusicNavigationButton': () => require('./classes/MusicNavigationButton'),'MusicPlayButton': () => require('./classes/MusicPlayButton'),'MusicPlaylistShelf': () => require('./classes/MusicPlaylistShelf'),'MusicQueue': () => require('./classes/MusicQueue'),'MusicResponsiveListItem': () => require('./classes/MusicResponsiveListItem'),'MusicResponsiveListItemFixedColumn': () => require('./classes/MusicResponsiveListItemFixedColumn'),'MusicResponsiveListItemFlexColumn': () => require('./classes/MusicResponsiveListItemFlexColumn'),'MusicShelf': () => require('./classes/MusicShelf'),'MusicThumbnail': () => require('./classes/MusicThumbnail'),'MusicTwoRowItem': () => require('./classes/MusicTwoRowItem'),'NavigatableText': () => require('./classes/NavigatableText'),'NavigationEndpoint': () => require('./classes/NavigationEndpoint'),'PlayerAnnotationsExpanded': () => require('./classes/PlayerAnnotationsExpanded'),'PlayerCaptionsTracklist': () => require('./classes/PlayerCaptionsTracklist'),'PlayerErrorMessage': () => require('./classes/PlayerErrorMessage'),'PlayerLiveStoryboardSpec': () => require('./classes/PlayerLiveStoryboardSpec'),'PlayerMicroformat': () => require('./classes/PlayerMicroformat'),'PlayerOverlay': () => require('./classes/PlayerOverlay'),'PlayerOverlayAutoplay': () => require('./classes/PlayerOverlayAutoplay'),'PlayerStoryboardSpec': () => require('./classes/PlayerStoryboardSpec'),'Playlist': () => require('./classes/Playlist'),'PlaylistAuthor': () => require('./classes/PlaylistAuthor'),'PlaylistHeader': () => require('./classes/PlaylistHeader'),'PlaylistMetadata': () => require('./classes/PlaylistMetadata'),'PlaylistPanel': () => require('./classes/PlaylistPanel'),'PlaylistPanelVideo': () => require('./classes/PlaylistPanelVideo'),'PlaylistSidebar': () => require('./classes/PlaylistSidebar'),'PlaylistSidebarPrimaryInfo': () => require('./classes/PlaylistSidebarPrimaryInfo'),'PlaylistSidebarSecondaryInfo': () => require('./classes/PlaylistSidebarSecondaryInfo'),'PlaylistVideo': () => require('./classes/PlaylistVideo'),'PlaylistVideoList': () => require('./classes/PlaylistVideoList'),'PlaylistVideoThumbnail': () => require('./classes/PlaylistVideoThumbnail'),'Poll': () => require('./classes/Poll'),'Post': () => require('./classes/Post'),'ProfileColumn': () => require('./classes/ProfileColumn'),'ProfileColumnStats': () => require('./classes/ProfileColumnStats'),'ProfileColumnStatsEntry': () => require('./classes/ProfileColumnStatsEntry'),'ProfileColumnUserInfo': () => require('./classes/ProfileColumnUserInfo'),'ReelItem': () => require('./classes/ReelItem'),'ReelShelf': () => require('./classes/ReelShelf'),'RelatedChipCloud': () => require('./classes/RelatedChipCloud'),'RichGrid': () => require('./classes/RichGrid'),'RichItem': () => require('./classes/RichItem'),'RichListHeader': () => require('./classes/RichListHeader'),'RichSection': () => require('./classes/RichSection'),'RichShelf': () => require('./classes/RichShelf'),'SearchBox': () => require('./classes/SearchBox'),'SearchRefinementCard': () => require('./classes/SearchRefinementCard'),'SearchSuggestion': () => require('./classes/SearchSuggestion'),'SearchSuggestionsSection': () => require('./classes/SearchSuggestionsSection'),'SecondarySearchContainer': () => require('./classes/SecondarySearchContainer'),'SectionList': () => require('./classes/SectionList'),'Shelf': () => require('./classes/Shelf'),'ShowingResultsFor': () => require('./classes/ShowingResultsFor'),'SimpleCardTeaser': () => require('./classes/SimpleCardTeaser'),'SingleActionEmergencySupport': () => require('./classes/SingleActionEmergencySupport'),'SingleColumnBrowseResults': () => require('./classes/SingleColumnBrowseResults'),'SingleColumnMusicWatchNextResults': () => require('./classes/SingleColumnMusicWatchNextResults'),'SingleHeroImage': () => require('./classes/SingleHeroImage'),'SortFilterSubMenu': () => require('./classes/SortFilterSubMenu'),'SubFeedOption': () => require('./classes/SubFeedOption'),'SubFeedSelector': () => require('./classes/SubFeedSelector'),'SubscribeButton': () => require('./classes/SubscribeButton'),'SubscriptionNotificationToggleButton': () => require('./classes/SubscriptionNotificationToggleButton'),'Tab': () => require('./classes/Tab'),'Tabbed': () => require('./classes/Tabbed'),'TabbedSearchResults': () => require('./classes/TabbedSearchResults'),'Text': () => require('./classes/Text'),'TextHeader': () => require('./classes/TextHeader'),'TextRun': () => require('./classes/TextRun'),'Thumbnail': () => require('./classes/Thumbnail'),'ThumbnailOverlayBottomPanel': () => require('./classes/ThumbnailOverlayBottomPanel'),'ThumbnailOverlayEndorsement': () => require('./classes/ThumbnailOverlayEndorsement'),'ThumbnailOverlayHoverText': () => require('./classes/ThumbnailOverlayHoverText'),'ThumbnailOverlayInlineUnplayable': () => require('./classes/ThumbnailOverlayInlineUnplayable'),'ThumbnailOverlayLoadingPreview': () => require('./classes/ThumbnailOverlayLoadingPreview'),'ThumbnailOverlayNowPlaying': () => require('./classes/ThumbnailOverlayNowPlaying'),'ThumbnailOverlayPinking': () => require('./classes/ThumbnailOverlayPinking'),'ThumbnailOverlayPlaybackStatus': () => require('./classes/ThumbnailOverlayPlaybackStatus'),'ThumbnailOverlayResumePlayback': () => require('./classes/ThumbnailOverlayResumePlayback'),'ThumbnailOverlaySidePanel': () => require('./classes/ThumbnailOverlaySidePanel'),'ThumbnailOverlayTimeStatus': () => require('./classes/ThumbnailOverlayTimeStatus'),'ThumbnailOverlayToggleButton': () => require('./classes/ThumbnailOverlayToggleButton'),'ToggleButton': () => require('./classes/ToggleButton'),'ToggleMenuServiceItem': () => require('./classes/ToggleMenuServiceItem'),'Tooltip': () => require('./classes/Tooltip'),'TwoColumnBrowseResults': () => require('./classes/TwoColumnBrowseResults'),'TwoColumnSearchResults': () => require('./classes/TwoColumnSearchResults'),'TwoColumnWatchNextResults': () => require('./classes/TwoColumnWatchNextResults'),'UniversalWatchCard': () => require('./classes/UniversalWatchCard'),'VerticalList': () => require('./classes/VerticalList'),'VerticalWatchCardList': () => require('./classes/VerticalWatchCardList'),'Video': () => require('./classes/Video'),'VideoDetails': () => require('./classes/VideoDetails'),'VideoInfoCardContent': () => require('./classes/VideoInfoCardContent'),'VideoOwner': () => require('./classes/VideoOwner'),'VideoPrimaryInfo': () => require('./classes/VideoPrimaryInfo'),'VideoSecondaryInfo': () => require('./classes/VideoSecondaryInfo'),'WatchCardCompactVideo': () => require('./classes/WatchCardCompactVideo'),'WatchCardHeroVideo': () => require('./classes/WatchCardHeroVideo'),'WatchCardRichHeader': () => require('./classes/WatchCardRichHeader'),'WatchCardSectionSequence': () => require('./classes/WatchCardSectionSequence'),'WatchNextEndScreen': () => require('./classes/WatchNextEndScreen'),'WatchNextTabbedResults': () => require('./classes/WatchNextTabbedResults'),}; +const map = {'AnalyticsMainAppKeyMetrics': () => require('./classes/AnalyticsMainAppKeyMetrics'),'AnalyticsVideo': () => require('./classes/AnalyticsVideo'),'AnalyticsVodCarouselCard': () => require('./classes/AnalyticsVodCarouselCard'),'Author': () => require('./classes/Author'),'BackstageImage': () => require('./classes/BackstageImage'),'BackstagePost': () => require('./classes/BackstagePost'),'BackstagePostThread': () => require('./classes/BackstagePostThread'),'BrowseFeedActions': () => require('./classes/BrowseFeedActions'),'Button': () => require('./classes/Button'),'C4TabbedHeader': () => require('./classes/C4TabbedHeader'),'CallToActionButton': () => require('./classes/CallToActionButton'),'Card': () => require('./classes/Card'),'CardCollection': () => require('./classes/CardCollection'),'Channel': () => require('./classes/Channel'),'ChannelAboutFullMetadata': () => require('./classes/ChannelAboutFullMetadata'),'ChannelFeaturedContent': () => require('./classes/ChannelFeaturedContent'),'ChannelHeaderLinks': () => require('./classes/ChannelHeaderLinks'),'ChannelMetadata': () => require('./classes/ChannelMetadata'),'ChannelMobileHeader': () => require('./classes/ChannelMobileHeader'),'ChannelThumbnailWithLink': () => require('./classes/ChannelThumbnailWithLink'),'ChannelVideoPlayer': () => require('./classes/ChannelVideoPlayer'),'ChildVideo': () => require('./classes/ChildVideo'),'ChipCloud': () => require('./classes/ChipCloud'),'ChipCloudChip': () => require('./classes/ChipCloudChip'),'CollageHeroImage': () => require('./classes/CollageHeroImage'),'Comment': () => require('./classes/Comment'),'CommentReplyDialog': () => require('./classes/CommentReplyDialog'),'AuthorCommentBadge': () => require('./classes/comments/AuthorCommentBadge'),'CommentActionButtons': () => require('./classes/comments/CommentActionButtons'),'CommentReplies': () => require('./classes/comments/CommentReplies'),'CommentSimplebox': () => require('./classes/comments/CommentSimplebox'),'CommentsEntryPointHeader': () => require('./classes/CommentsEntryPointHeader'),'CommentsHeader': () => require('./classes/CommentsHeader'),'CommentThread': () => require('./classes/CommentThread'),'CompactLink': () => require('./classes/CompactLink'),'CompactMix': () => require('./classes/CompactMix'),'CompactPlaylist': () => require('./classes/CompactPlaylist'),'CompactVideo': () => require('./classes/CompactVideo'),'ContinuationItem': () => require('./classes/ContinuationItem'),'CtaGoToCreatorStudio': () => require('./classes/CtaGoToCreatorStudio'),'DataModelSection': () => require('./classes/DataModelSection'),'DidYouMean': () => require('./classes/DidYouMean'),'DownloadButton': () => require('./classes/DownloadButton'),'Element': () => require('./classes/Element'),'EmergencyOnebox': () => require('./classes/EmergencyOnebox'),'EmojiRun': () => require('./classes/EmojiRun'),'Endscreen': () => require('./classes/Endscreen'),'EndscreenElement': () => require('./classes/EndscreenElement'),'EndScreenPlaylist': () => require('./classes/EndScreenPlaylist'),'EndScreenVideo': () => require('./classes/EndScreenVideo'),'ExpandableTab': () => require('./classes/ExpandableTab'),'ExpandedShelfContents': () => require('./classes/ExpandedShelfContents'),'FeedFilterChipBar': () => require('./classes/FeedFilterChipBar'),'FeedTabbedHeader': () => require('./classes/FeedTabbedHeader'),'Format': () => require('./classes/Format'),'Grid': () => require('./classes/Grid'),'GridChannel': () => require('./classes/GridChannel'),'GridPlaylist': () => require('./classes/GridPlaylist'),'GridVideo': () => require('./classes/GridVideo'),'HistorySuggestion': () => require('./classes/HistorySuggestion'),'HorizontalCardList': () => require('./classes/HorizontalCardList'),'HorizontalList': () => require('./classes/HorizontalList'),'ItemSection': () => require('./classes/ItemSection'),'ItemSectionHeader': () => require('./classes/ItemSectionHeader'),'LikeButton': () => require('./classes/LikeButton'),'LiveChat': () => require('./classes/LiveChat'),'AddBannerToLiveChatCommand': () => require('./classes/livechat/AddBannerToLiveChatCommand'),'AddChatItemAction': () => require('./classes/livechat/AddChatItemAction'),'AddLiveChatTickerItemAction': () => require('./classes/livechat/AddLiveChatTickerItemAction'),'LiveChatBanner': () => require('./classes/livechat/items/LiveChatBanner'),'LiveChatBannerHeader': () => require('./classes/livechat/items/LiveChatBannerHeader'),'LiveChatBannerPoll': () => require('./classes/livechat/items/LiveChatBannerPoll'),'LiveChatMembershipItem': () => require('./classes/livechat/items/LiveChatMembershipItem'),'LiveChatPaidMessage': () => require('./classes/livechat/items/LiveChatPaidMessage'),'LiveChatPaidSticker': () => require('./classes/livechat/items/LiveChatPaidSticker'),'LiveChatPlaceholderItem': () => require('./classes/livechat/items/LiveChatPlaceholderItem'),'LiveChatTextMessage': () => require('./classes/livechat/items/LiveChatTextMessage'),'LiveChatTickerPaidMessageItem': () => require('./classes/livechat/items/LiveChatTickerPaidMessageItem'),'LiveChatTickerSponsorItem': () => require('./classes/livechat/items/LiveChatTickerSponsorItem'),'LiveChatViewerEngagementMessage': () => require('./classes/livechat/items/LiveChatViewerEngagementMessage'),'PollHeader': () => require('./classes/livechat/items/PollHeader'),'LiveChatActionPanel': () => require('./classes/livechat/LiveChatActionPanel'),'MarkChatItemAsDeletedAction': () => require('./classes/livechat/MarkChatItemAsDeletedAction'),'MarkChatItemsByAuthorAsDeletedAction': () => require('./classes/livechat/MarkChatItemsByAuthorAsDeletedAction'),'RemoveBannerForLiveChatCommand': () => require('./classes/livechat/RemoveBannerForLiveChatCommand'),'ReplaceChatItemAction': () => require('./classes/livechat/ReplaceChatItemAction'),'ReplayChatItemAction': () => require('./classes/livechat/ReplayChatItemAction'),'ShowLiveChatActionPanelAction': () => require('./classes/livechat/ShowLiveChatActionPanelAction'),'ShowLiveChatTooltipCommand': () => require('./classes/livechat/ShowLiveChatTooltipCommand'),'UpdateDateTextAction': () => require('./classes/livechat/UpdateDateTextAction'),'UpdateDescriptionAction': () => require('./classes/livechat/UpdateDescriptionAction'),'UpdateLiveChatPollAction': () => require('./classes/livechat/UpdateLiveChatPollAction'),'UpdateTitleAction': () => require('./classes/livechat/UpdateTitleAction'),'UpdateToggleButtonTextAction': () => require('./classes/livechat/UpdateToggleButtonTextAction'),'UpdateViewershipAction': () => require('./classes/livechat/UpdateViewershipAction'),'LiveChatAuthorBadge': () => require('./classes/LiveChatAuthorBadge'),'LiveChatHeader': () => require('./classes/LiveChatHeader'),'LiveChatItemList': () => require('./classes/LiveChatItemList'),'LiveChatMessageInput': () => require('./classes/LiveChatMessageInput'),'LiveChatParticipant': () => require('./classes/LiveChatParticipant'),'LiveChatParticipantsList': () => require('./classes/LiveChatParticipantsList'),'Menu': () => require('./classes/Menu'),'MenuNavigationItem': () => require('./classes/MenuNavigationItem'),'MenuServiceItem': () => require('./classes/MenuServiceItem'),'MenuServiceItemDownload': () => require('./classes/MenuServiceItemDownload'),'MerchandiseItem': () => require('./classes/MerchandiseItem'),'MerchandiseShelf': () => require('./classes/MerchandiseShelf'),'Message': () => require('./classes/Message'),'MetadataBadge': () => require('./classes/MetadataBadge'),'MetadataRow': () => require('./classes/MetadataRow'),'MetadataRowContainer': () => require('./classes/MetadataRowContainer'),'MetadataRowHeader': () => require('./classes/MetadataRowHeader'),'MicroformatData': () => require('./classes/MicroformatData'),'Mix': () => require('./classes/Mix'),'Movie': () => require('./classes/Movie'),'MovingThumbnail': () => require('./classes/MovingThumbnail'),'MusicCarouselShelf': () => require('./classes/MusicCarouselShelf'),'MusicCarouselShelfBasicHeader': () => require('./classes/MusicCarouselShelfBasicHeader'),'MusicDescriptionShelf': () => require('./classes/MusicDescriptionShelf'),'MusicDetailHeader': () => require('./classes/MusicDetailHeader'),'MusicHeader': () => require('./classes/MusicHeader'),'MusicImmersiveHeader': () => require('./classes/MusicImmersiveHeader'),'MusicInlineBadge': () => require('./classes/MusicInlineBadge'),'MusicItemThumbnailOverlay': () => require('./classes/MusicItemThumbnailOverlay'),'MusicNavigationButton': () => require('./classes/MusicNavigationButton'),'MusicPlayButton': () => require('./classes/MusicPlayButton'),'MusicPlaylistShelf': () => require('./classes/MusicPlaylistShelf'),'MusicQueue': () => require('./classes/MusicQueue'),'MusicResponsiveListItem': () => require('./classes/MusicResponsiveListItem'),'MusicResponsiveListItemFixedColumn': () => require('./classes/MusicResponsiveListItemFixedColumn'),'MusicResponsiveListItemFlexColumn': () => require('./classes/MusicResponsiveListItemFlexColumn'),'MusicShelf': () => require('./classes/MusicShelf'),'MusicThumbnail': () => require('./classes/MusicThumbnail'),'MusicTwoRowItem': () => require('./classes/MusicTwoRowItem'),'NavigatableText': () => require('./classes/NavigatableText'),'NavigationEndpoint': () => require('./classes/NavigationEndpoint'),'PlayerAnnotationsExpanded': () => require('./classes/PlayerAnnotationsExpanded'),'PlayerCaptionsTracklist': () => require('./classes/PlayerCaptionsTracklist'),'PlayerErrorMessage': () => require('./classes/PlayerErrorMessage'),'PlayerLiveStoryboardSpec': () => require('./classes/PlayerLiveStoryboardSpec'),'PlayerMicroformat': () => require('./classes/PlayerMicroformat'),'PlayerOverlay': () => require('./classes/PlayerOverlay'),'PlayerOverlayAutoplay': () => require('./classes/PlayerOverlayAutoplay'),'PlayerStoryboardSpec': () => require('./classes/PlayerStoryboardSpec'),'Playlist': () => require('./classes/Playlist'),'PlaylistAuthor': () => require('./classes/PlaylistAuthor'),'PlaylistHeader': () => require('./classes/PlaylistHeader'),'PlaylistMetadata': () => require('./classes/PlaylistMetadata'),'PlaylistPanel': () => require('./classes/PlaylistPanel'),'PlaylistPanelVideo': () => require('./classes/PlaylistPanelVideo'),'PlaylistSidebar': () => require('./classes/PlaylistSidebar'),'PlaylistSidebarPrimaryInfo': () => require('./classes/PlaylistSidebarPrimaryInfo'),'PlaylistSidebarSecondaryInfo': () => require('./classes/PlaylistSidebarSecondaryInfo'),'PlaylistVideo': () => require('./classes/PlaylistVideo'),'PlaylistVideoList': () => require('./classes/PlaylistVideoList'),'PlaylistVideoThumbnail': () => require('./classes/PlaylistVideoThumbnail'),'Poll': () => require('./classes/Poll'),'Post': () => require('./classes/Post'),'ProfileColumn': () => require('./classes/ProfileColumn'),'ProfileColumnStats': () => require('./classes/ProfileColumnStats'),'ProfileColumnStatsEntry': () => require('./classes/ProfileColumnStatsEntry'),'ProfileColumnUserInfo': () => require('./classes/ProfileColumnUserInfo'),'ReelItem': () => require('./classes/ReelItem'),'ReelShelf': () => require('./classes/ReelShelf'),'RelatedChipCloud': () => require('./classes/RelatedChipCloud'),'RichGrid': () => require('./classes/RichGrid'),'RichItem': () => require('./classes/RichItem'),'RichListHeader': () => require('./classes/RichListHeader'),'RichSection': () => require('./classes/RichSection'),'RichShelf': () => require('./classes/RichShelf'),'SearchBox': () => require('./classes/SearchBox'),'SearchRefinementCard': () => require('./classes/SearchRefinementCard'),'SearchSuggestion': () => require('./classes/SearchSuggestion'),'SearchSuggestionsSection': () => require('./classes/SearchSuggestionsSection'),'SecondarySearchContainer': () => require('./classes/SecondarySearchContainer'),'SectionList': () => require('./classes/SectionList'),'Shelf': () => require('./classes/Shelf'),'ShowingResultsFor': () => require('./classes/ShowingResultsFor'),'SimpleCardTeaser': () => require('./classes/SimpleCardTeaser'),'SingleActionEmergencySupport': () => require('./classes/SingleActionEmergencySupport'),'SingleColumnBrowseResults': () => require('./classes/SingleColumnBrowseResults'),'SingleColumnMusicWatchNextResults': () => require('./classes/SingleColumnMusicWatchNextResults'),'SingleHeroImage': () => require('./classes/SingleHeroImage'),'SortFilterSubMenu': () => require('./classes/SortFilterSubMenu'),'SubFeedOption': () => require('./classes/SubFeedOption'),'SubFeedSelector': () => require('./classes/SubFeedSelector'),'SubscribeButton': () => require('./classes/SubscribeButton'),'SubscriptionNotificationToggleButton': () => require('./classes/SubscriptionNotificationToggleButton'),'Tab': () => require('./classes/Tab'),'Tabbed': () => require('./classes/Tabbed'),'TabbedSearchResults': () => require('./classes/TabbedSearchResults'),'Text': () => require('./classes/Text'),'TextHeader': () => require('./classes/TextHeader'),'TextRun': () => require('./classes/TextRun'),'Thumbnail': () => require('./classes/Thumbnail'),'ThumbnailOverlayBottomPanel': () => require('./classes/ThumbnailOverlayBottomPanel'),'ThumbnailOverlayEndorsement': () => require('./classes/ThumbnailOverlayEndorsement'),'ThumbnailOverlayHoverText': () => require('./classes/ThumbnailOverlayHoverText'),'ThumbnailOverlayInlineUnplayable': () => require('./classes/ThumbnailOverlayInlineUnplayable'),'ThumbnailOverlayLoadingPreview': () => require('./classes/ThumbnailOverlayLoadingPreview'),'ThumbnailOverlayNowPlaying': () => require('./classes/ThumbnailOverlayNowPlaying'),'ThumbnailOverlayPinking': () => require('./classes/ThumbnailOverlayPinking'),'ThumbnailOverlayPlaybackStatus': () => require('./classes/ThumbnailOverlayPlaybackStatus'),'ThumbnailOverlayResumePlayback': () => require('./classes/ThumbnailOverlayResumePlayback'),'ThumbnailOverlaySidePanel': () => require('./classes/ThumbnailOverlaySidePanel'),'ThumbnailOverlayTimeStatus': () => require('./classes/ThumbnailOverlayTimeStatus'),'ThumbnailOverlayToggleButton': () => require('./classes/ThumbnailOverlayToggleButton'),'ToggleButton': () => require('./classes/ToggleButton'),'ToggleMenuServiceItem': () => require('./classes/ToggleMenuServiceItem'),'Tooltip': () => require('./classes/Tooltip'),'TwoColumnBrowseResults': () => require('./classes/TwoColumnBrowseResults'),'TwoColumnSearchResults': () => require('./classes/TwoColumnSearchResults'),'TwoColumnWatchNextResults': () => require('./classes/TwoColumnWatchNextResults'),'UniversalWatchCard': () => require('./classes/UniversalWatchCard'),'VerticalList': () => require('./classes/VerticalList'),'VerticalWatchCardList': () => require('./classes/VerticalWatchCardList'),'Video': () => require('./classes/Video'),'VideoDetails': () => require('./classes/VideoDetails'),'VideoInfoCardContent': () => require('./classes/VideoInfoCardContent'),'VideoOwner': () => require('./classes/VideoOwner'),'VideoPrimaryInfo': () => require('./classes/VideoPrimaryInfo'),'VideoSecondaryInfo': () => require('./classes/VideoSecondaryInfo'),'WatchCardCompactVideo': () => require('./classes/WatchCardCompactVideo'),'WatchCardHeroVideo': () => require('./classes/WatchCardHeroVideo'),'WatchCardRichHeader': () => require('./classes/WatchCardRichHeader'),'WatchCardSectionSequence': () => require('./classes/WatchCardSectionSequence'),'WatchNextEndScreen': () => require('./classes/WatchNextEndScreen'),'WatchNextTabbedResults': () => require('./classes/WatchNextTabbedResults'),}; module.exports = function req(name) { const func = map[name]; diff --git a/scripts/build-parser-json.js b/scripts/build-parser-json.js index 99321f85..772b70ed 100644 --- a/scripts/build-parser-json.js +++ b/scripts/build-parser-json.js @@ -9,7 +9,7 @@ glob.sync('../lib/parser/contents/classes/**/*.js', { cwd: __dirname }) .forEach((file) => { // Trim path file = file.replace('../lib/parser/contents/classes/', '').replace('.js', ''); - json.push(`'${file}': () => require('./classes/${file}'),`); + json.push(`'${file.split('/').pop()}': () => require('./classes/${file}'),`); }); json.push('}');