@antoniojps/youtubei.js
Version:
A JavaScript client for YouTube's private API, known as InnerTube.
4 lines • 2.27 MB
Source Map (JSON)
{
"version": 3,
"sources": ["../src/platform/node.ts", "../src/utils/Utils.ts", "../node_modules/jintr/dist/nodes/index.js", "../node_modules/jintr/dist/nodes/BaseJSNode.js", "../node_modules/jintr/dist/nodes/ArrayExpression.js", "../node_modules/jintr/dist/utils/index.js", "../node_modules/jintr/dist/nodes/ArrowFunctionExpression.js", "../node_modules/jintr/dist/nodes/AssignmentExpression.js", "../node_modules/jintr/dist/nodes/BinaryExpression.js", "../node_modules/jintr/dist/nodes/BlockStatement.js", "../node_modules/jintr/dist/nodes/BreakStatement.js", "../node_modules/jintr/dist/nodes/CallExpression.js", "../node_modules/jintr/dist/nodes/ConditionalExpression.js", "../node_modules/jintr/dist/nodes/ContinueStatement.js", "../node_modules/jintr/dist/nodes/EmptyStatement.js", "../node_modules/jintr/dist/nodes/ExpressionStatement.js", "../node_modules/jintr/dist/nodes/ForOfStatement.js", "../node_modules/jintr/dist/nodes/ForStatement.js", "../node_modules/jintr/dist/nodes/FunctionDeclaration.js", "../node_modules/jintr/dist/nodes/FunctionExpression.js", "../node_modules/jintr/dist/nodes/Identifier.js", "../node_modules/jintr/dist/nodes/IfStatement.js", "../node_modules/jintr/dist/nodes/Literal.js", "../node_modules/jintr/dist/nodes/LogicalExpression.js", "../node_modules/jintr/dist/nodes/MemberExpression.js", "../node_modules/jintr/dist/nodes/NewExpression.js", "../node_modules/jintr/dist/nodes/ObjectExpression.js", "../node_modules/jintr/dist/nodes/Property.js", "../node_modules/jintr/dist/nodes/ReturnStatement.js", "../node_modules/jintr/dist/nodes/SequenceExpression.js", "../node_modules/jintr/dist/nodes/SwitchCase.js", "../node_modules/jintr/dist/nodes/SwitchStatement.js", "../node_modules/jintr/dist/nodes/TemplateLiteral.js", "../node_modules/jintr/dist/nodes/ThisExpression.js", "../node_modules/jintr/dist/nodes/ThrowStatement.js", "../node_modules/jintr/dist/nodes/TryStatement.js", "../node_modules/jintr/dist/nodes/UnaryExpression.js", "../node_modules/jintr/dist/nodes/UpdateExpression.js", "../node_modules/jintr/dist/nodes/VariableDeclaration.js", "../node_modules/jintr/dist/nodes/WhileStatement.js", "../node_modules/jintr/dist/visitor.js", "../node_modules/acorn/dist/acorn.mjs", "../node_modules/jintr/dist/main.js", "../src/parser/helpers.ts", "../src/utils/Log.ts", "../src/parser/misc.ts", "../src/parser/classes/misc/AccessibilityContext.ts", "../src/parser/classes/misc/AccessibilityData.ts", "../src/utils/Constants.ts", "../src/parser/parser.ts", "../src/parser/nodes.ts", "../src/utils/Cache.ts", "../src/utils/EventEmitterLike.ts", "../src/utils/FormatUtils.ts", "../src/utils/DashUtils.ts", "../src/parser/classes/PlayerStoryboardSpec.ts", "../src/utils/StreamingInfo.ts", "../src/utils/DashManifest.tsx", "../src/utils/HTTPClient.ts", "../src/utils/LZW.ts", "../src/utils/BinarySerializer.ts", "../src/utils/ProtoUtils.ts", "../node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js", "../node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js", "../protos/generated/misc/params.ts", "../src/parser/classes/actions/OpenPopupAction.ts", "../src/parser/classes/Button.ts", "../src/parser/classes/DropdownItem.ts", "../src/parser/classes/Dropdown.ts", "../src/parser/classes/CreatePlaylistDialog.ts", "../src/parser/classes/commands/CommandExecutorCommand.ts", "../src/parser/classes/NavigationEndpoint.ts", "../src/parser/classes/misc/Thumbnail.ts", "../src/parser/classes/misc/EmojiRun.ts", "../src/parser/classes/misc/TextRun.ts", "../src/parser/classes/misc/Text.ts", "../src/parser/classes/ChannelExternalLinkView.ts", "../src/parser/classes/AboutChannelView.ts", "../src/parser/classes/AboutChannel.ts", "../src/parser/classes/AccountChannel.ts", "../src/parser/classes/AccountItem.ts", "../src/parser/classes/AccountItemSectionHeader.ts", "../src/parser/classes/CompactLink.ts", "../src/parser/classes/AccountItemSection.ts", "../src/parser/classes/AccountSectionList.ts", "../src/parser/classes/actions/AppendContinuationItemsAction.ts", "../src/parser/classes/actions/ChangeEngagementPanelVisibilityAction.ts", "../src/parser/classes/menus/MultiPageMenu.ts", "../src/parser/classes/actions/GetMultiPageMenuAction.ts", "../src/parser/classes/actions/SendFeedbackAction.ts", "../src/parser/classes/actions/SignalAction.ts", "../src/parser/classes/ChannelSwitcherPage.ts", "../src/parser/classes/actions/UpdateChannelSwitcherPageAction.ts", "../src/parser/classes/SortFilterSubMenu.ts", "../src/parser/classes/TranscriptFooter.ts", "../src/parser/classes/TranscriptSearchBox.ts", "../src/parser/classes/TranscriptSectionHeader.ts", "../src/parser/classes/TranscriptSegment.ts", "../src/parser/classes/TranscriptSegmentList.ts", "../src/parser/classes/TranscriptSearchPanel.ts", "../src/parser/classes/Transcript.ts", "../src/parser/classes/actions/UpdateEngagementPanelAction.ts", "../src/parser/classes/actions/UpdateSubscribeButtonAction.ts", "../src/parser/classes/ActiveAccountHeader.ts", "../src/parser/classes/MenuTitle.ts", "../src/parser/classes/PlaylistAddToOption.ts", "../src/parser/classes/AddToPlaylist.ts", "../src/parser/classes/Alert.ts", "../src/parser/classes/AlertWithButton.ts", "../src/parser/classes/AnimatedThumbnailOverlayView.ts", "../src/parser/classes/AttributionView.ts", "../src/parser/classes/AudioOnlyPlayability.ts", "../src/parser/classes/AutomixPreviewVideo.ts", "../src/parser/classes/AvatarView.ts", "../src/parser/classes/misc/CommandContext.ts", "../src/parser/classes/misc/RendererContext.ts", "../src/parser/classes/AvatarStackView.ts", "../src/parser/classes/ButtonView.ts", "../src/parser/classes/BackgroundPromo.ts", "../src/parser/classes/BackstageImage.ts", "../src/parser/classes/ToggleButton.ts", "../src/parser/classes/comments/CreatorHeart.ts", "../src/parser/classes/comments/CommentActionButtons.ts", "../src/parser/classes/ToggleButtonView.ts", "../src/parser/classes/LikeButtonView.ts", "../src/parser/classes/DislikeButtonView.ts", "../src/parser/classes/SegmentedLikeDislikeButtonView.ts", "../src/parser/classes/menus/MenuServiceItem.ts", "../src/parser/classes/DownloadButton.ts", "../src/parser/classes/menus/MenuServiceItemDownload.ts", "../src/parser/classes/menus/MenuFlexibleItem.ts", "../src/parser/classes/LikeButton.ts", "../src/parser/classes/FlexibleActionsView.ts", "../src/parser/classes/menus/Menu.ts", "../src/parser/classes/BackstagePost.ts", "../src/parser/classes/BackstagePostThread.ts", "../src/parser/classes/BadgeView.ts", "../src/parser/classes/SubFeedOption.ts", "../src/parser/classes/SubFeedSelector.ts", "../src/parser/classes/EomSettingsDisclaimer.ts", "../src/parser/classes/SearchBox.ts", "../src/parser/classes/BrowseFeedActions.ts", "../src/parser/classes/BrowserMediaSession.ts", "../src/parser/classes/ButtonCardView.ts", "../src/parser/classes/ChannelHeaderLinks.ts", "../src/parser/classes/ChannelHeaderLinksView.ts", "../src/parser/classes/ClipCreationTextInput.ts", "../src/parser/classes/ClipCreationScrubber.ts", "../src/parser/classes/ClipAdState.ts", "../src/parser/classes/ClipCreation.ts", "../src/parser/classes/ClipSection.ts", "../src/parser/classes/ContinuationItem.ts", "../src/parser/classes/EngagementPanelTitleHeader.ts", "../src/parser/classes/MacroMarkersInfoItem.ts", "../src/parser/classes/MacroMarkersListItem.ts", "../src/parser/classes/MacroMarkersList.ts", "../src/parser/classes/ProductList.ts", "../src/parser/classes/SectionList.ts", "../src/parser/classes/ExpandableVideoDescriptionBody.ts", "../src/parser/classes/SearchRefinementCard.ts", "../src/parser/classes/GameCard.ts", "../src/parser/classes/HorizontalList.ts", "../src/parser/classes/ExpandableMetadata.ts", "../src/parser/classes/MetadataBadge.ts", "../src/parser/classes/ThumbnailOverlayTimeStatus.ts", "../src/parser/classes/Video.ts", "../src/parser/classes/VideoCard.ts", "../src/parser/classes/ContentPreviewImageView.ts", "../src/parser/classes/VideoAttributeView.ts", "../src/parser/classes/HorizontalCardList.ts", "../src/parser/classes/Factoid.ts", "../src/parser/classes/UploadTimeFactoid.ts", "../src/parser/classes/ViewCountFactoid.ts", "../src/parser/classes/HypePointsFactoid.ts", "../src/parser/classes/VideoDescriptionHeader.ts", "../src/parser/classes/VideoDescriptionInfocardsSection.ts", "../src/parser/classes/InfoRow.ts", "../src/parser/classes/CompactVideo.ts", "../src/parser/classes/CarouselLockup.ts", "../src/parser/classes/VideoDescriptionMusicSection.ts", "../src/parser/classes/VideoDescriptionTranscriptSection.ts", "../src/parser/classes/StructuredDescriptionPlaylistLockup.ts", "../src/parser/classes/VideoDescriptionCourseSection.ts", "../src/parser/classes/VideoAttributesSectionView.ts", "../src/parser/classes/HowThisWasMadeSectionView.ts", "../src/parser/classes/ReelShelf.ts", "../src/parser/classes/StructuredDescriptionContent.ts", "../src/parser/classes/EngagementPanelSectionList.ts", "../src/parser/classes/ChannelTagline.ts", "../src/parser/classes/SubscriptionNotificationToggleButton.ts", "../src/parser/classes/SubscribeButton.ts", "../src/parser/classes/C4TabbedHeader.ts", "../src/parser/classes/CallToActionButton.ts", "../src/parser/classes/Card.ts", "../src/parser/classes/CardCollection.ts", "../src/parser/classes/CarouselHeader.ts", "../src/parser/classes/CarouselItem.ts", "../src/parser/classes/TextCarouselItemView.ts", "../src/parser/classes/CarouselItemView.ts", "../src/parser/classes/CarouselTitleView.ts", "../src/parser/classes/Channel.ts", "../src/parser/classes/ChannelAboutFullMetadata.ts", "../src/parser/classes/ChannelAgeGate.ts", "../src/parser/classes/ChannelFeaturedContent.ts", "../src/parser/classes/ChannelMetadata.ts", "../src/parser/classes/ChannelMobileHeader.ts", "../src/parser/classes/ChannelOptions.ts", "../src/parser/classes/ChannelOwnerEmptyState.ts", "../src/parser/classes/ChannelSubMenu.ts", "../src/parser/classes/ChannelSwitcherHeader.ts", "../src/parser/classes/ChannelThumbnailWithLink.ts", "../src/parser/classes/ChannelVideoPlayer.ts", "../src/parser/classes/Chapter.ts", "../src/parser/classes/ChildVideo.ts", "../src/parser/classes/ChipView.ts", "../src/parser/classes/ChipBarView.ts", "../src/parser/classes/ChipCloudChip.ts", "../src/parser/classes/ChipCloud.ts", "../src/parser/classes/ClientSideToggleMenuItem.ts", "../src/parser/classes/CollaboratorInfoCardContent.ts", "../src/parser/classes/CollageHeroImage.ts", "../src/parser/classes/ThumbnailHoverOverlayView.ts", "../src/parser/classes/ThumbnailBadgeView.ts", "../src/parser/classes/ThumbnailOverlayBadgeView.ts", "../src/parser/classes/ThumbnailHoverOverlayToggleActionsView.ts", "../src/parser/classes/ThumbnailOverlayProgressBarView.ts", "../src/parser/classes/ThumbnailBottomOverlayView.ts", "../src/parser/classes/ThumbnailView.ts", "../src/parser/classes/CollectionThumbnailView.ts", "../src/parser/classes/commands/AddToPlaylistCommand.ts", "../src/parser/classes/commands/ContinuationCommand.ts", "../src/parser/classes/commands/GetKidsBlocklistPickerCommand.ts", "../src/parser/classes/commands/RunAttestationCommand.ts", "../src/parser/classes/commands/ShowDialogCommand.ts", "../src/parser/classes/commands/UpdateEngagementPanelContentCommand.ts", "../src/parser/classes/comments/AuthorCommentBadge.ts", "../src/parser/classes/comments/EmojiPicker.ts", "../src/parser/classes/comments/CommentDialog.ts", "../src/parser/classes/comments/CommentReplies.ts", "../src/parser/classes/comments/CommentReplyDialog.ts", "../src/parser/classes/comments/CommentsSimplebox.ts", "../src/parser/classes/comments/CommentsEntryPointTeaser.ts", "../src/parser/classes/comments/CommentsEntryPointHeader.ts", "../src/parser/classes/comments/CommentsHeader.ts", "../src/parser/classes/comments/CommentSimplebox.ts", "../src/parser/classes/comments/VoiceReplyContainerView.ts", "../src/parser/classes/comments/CommentView.ts", "../src/parser/classes/comments/CommentThread.ts", "../src/parser/classes/comments/PdgCommentChip.ts", "../src/parser/classes/comments/SponsorCommentBadge.ts", "../src/parser/classes/CompactChannel.ts", "../src/parser/classes/PlaylistCustomThumbnail.ts", "../src/parser/classes/PlaylistVideoThumbnail.ts", "../src/parser/classes/Playlist.ts", "../src/parser/classes/CompactMix.ts", "../src/parser/classes/CompactMovie.ts", "../src/parser/classes/CompactPlaylist.ts", "../src/parser/classes/CompactStation.ts", "../src/parser/classes/CompositeVideoPrimaryInfo.ts", "../src/parser/classes/ConfirmDialog.ts", "../src/parser/classes/ContentMetadataView.ts", "../src/parser/classes/Message.ts", "../src/parser/classes/ConversationBar.ts", "../src/parser/classes/CopyLink.ts", "../src/parser/classes/DropdownView.ts", "../src/parser/classes/TextFieldView.ts", "../src/parser/classes/CreatePlaylistDialogFormView.ts", "../src/parser/classes/DecoratedAvatarView.ts", "../src/parser/classes/HeatMarker.ts", "../src/parser/classes/TimedMarkerDecoration.ts", "../src/parser/classes/Heatmap.ts", "../src/parser/classes/MultiMarkersPlayerBar.ts", "../src/parser/classes/DecoratedPlayerBar.ts", "../src/parser/classes/DefaultPromoPanel.ts", "../src/parser/classes/DescriptionPreviewView.ts", "../src/parser/classes/DialogHeaderView.ts", "../src/parser/classes/PanelFooterView.ts", "../src/parser/classes/FormFooterView.ts", "../src/parser/classes/DialogView.ts", "../src/parser/classes/DidYouMean.ts", "../src/parser/classes/DismissableDialogContentSection.ts", "../src/parser/classes/DismissableDialog.ts", "../src/parser/classes/DynamicTextView.ts", "../src/parser/classes/misc/ChildElement.ts", "../src/parser/classes/Element.ts", "../src/parser/classes/EmergencyOnebox.ts", "../src/parser/classes/EmojiPickerCategory.ts", "../src/parser/classes/EmojiPickerCategoryButton.ts", "../src/parser/classes/EmojiPickerUpsellCategory.ts", "../src/parser/classes/endpoints/AddToPlaylistServiceEndpoint.ts", "../src/parser/classes/endpoints/AddToPlaylistEndpoint.ts", "../src/parser/classes/endpoints/BrowseEndpoint.ts", "../src/parser/classes/endpoints/CreateCommentEndpoint.ts", "../src/parser/classes/endpoints/CreatePlaylistServiceEndpoint.ts", "../src/parser/classes/endpoints/DeletePlaylistEndpoint.ts", "../src/parser/classes/endpoints/FeedbackEndpoint.ts", "../src/parser/classes/endpoints/GetAccountsListInnertubeEndpoint.ts", "../src/parser/classes/endpoints/HideEngagementPanelEndpoint.ts", "../src/parser/classes/endpoints/LikeEndpoint.ts", "../src/parser/classes/endpoints/LiveChatItemContextMenuEndpoint.ts", "../src/parser/classes/endpoints/ModifyChannelNotificationPreferenceEndpoint.ts", "../src/parser/classes/endpoints/PerformCommentActionEndpoint.ts", "../src/parser/classes/endpoints/PlaylistEditEndpoint.ts", "../src/parser/classes/endpoints/WatchEndpoint.ts", "../src/parser/classes/endpoints/PrefetchWatchCommand.ts", "../src/parser/classes/endpoints/ReelWatchEndpoint.ts", "../src/parser/classes/endpoints/SearchEndpoint.ts", "../src/parser/classes/endpoints/ShareEntityServiceEndpoint.ts", "../src/parser/classes/endpoints/ShareEndpoint.ts", "../src/parser/classes/endpoints/ShareEntityEndpoint.ts", "../src/parser/classes/endpoints/ShowEngagementPanelEndpoint.ts", "../src/parser/classes/endpoints/SignalServiceEndpoint.ts", "../src/parser/classes/endpoints/SubscribeEndpoint.ts", "../src/parser/classes/endpoints/UnsubscribeEndpoint.ts", "../src/parser/classes/endpoints/WatchNextEndpoint.ts", "../src/parser/classes/Endscreen.ts", "../src/parser/classes/EndscreenElement.ts", "../src/parser/classes/EndScreenPlaylist.ts", "../src/parser/classes/EndScreenVideo.ts", "../src/parser/classes/ExpandableTab.ts", "../src/parser/classes/ExpandedShelfContents.ts", "../src/parser/classes/FancyDismissibleDialog.ts", "../src/parser/classes/FeedFilterChipBar.ts", "../src/parser/classes/FeedNudge.ts", "../src/parser/classes/FeedTabbedHeader.ts", "../src/parser/classes/GameDetails.ts", "../src/parser/classes/Grid.ts", "../src/parser/classes/GridChannel.ts", "../src/parser/classes/GridHeader.ts", "../src/parser/classes/GridMix.ts", "../src/parser/classes/GridMovie.ts", "../src/parser/classes/GridPlaylist.ts", "../src/parser/classes/GridShelfView.ts", "../src/parser/classes/ShowCustomThumbnail.ts", "../src/parser/classes/ThumbnailOverlayBottomPanel.ts", "../src/parser/classes/GridShow.ts", "../src/parser/classes/GridVideo.ts", "../src/parser/classes/GuideEntry.ts", "../src/parser/classes/GuideCollapsibleEntry.ts", "../src/parser/classes/GuideCollapsibleSectionEntry.ts", "../src/parser/classes/GuideDownloadsEntry.ts", "../src/parser/classes/GuideSection.ts", "../src/parser/classes/GuideSubscriptionsSection.ts", "../src/parser/classes/HashtagHeader.ts", "../src/parser/classes/HashtagTile.ts", "../src/parser/classes/HeroPlaylistThumbnail.ts", "../src/parser/classes/HighlightsCarousel.ts", "../src/parser/classes/SearchSuggestion.ts", "../src/parser/classes/HistorySuggestion.ts", "../src/parser/classes/HorizontalMovieList.ts", "../src/parser/classes/IconLink.ts", "../src/parser/classes/ImageBannerView.ts", "../src/parser/classes/IncludingResultsFor.ts", "../src/parser/classes/InfoPanelContent.ts", "../src/parser/classes/InfoPanelContainer.ts", "../src/parser/classes/InteractiveTabbedHeader.ts", "../src/parser/classes/ItemSectionHeader.ts", "../src/parser/classes/ItemSectionTab.ts", "../src/parser/classes/ItemSectionTabbedHeader.ts", "../src/parser/classes/SortFilterHeader.ts", "../src/parser/classes/ItemSection.ts", "../src/parser/classes/LiveChat.ts", "../src/parser/classes/livechat/items/LiveChatBannerHeader.ts", "../src/parser/classes/livechat/items/LiveChatBanner.ts", "../src/parser/classes/livechat/AddBannerToLiveChatCommand.ts", "../src/parser/classes/livechat/AddChatItemAction.ts", "../src/parser/classes/livechat/AddLiveChatTickerItemAction.ts", "../src/parser/classes/livechat/DimChatItemAction.ts", "../src/parser/classes/livechat/items/BumperUserEduContentView.ts", "../src/parser/classes/livechat/items/CreatorHeartView.ts", "../src/parser/classes/livechat/items/LiveChatAutoModMessage.ts", "../src/parser/classes/livechat/items/LiveChatBannerChatSummary.ts", "../src/parser/classes/livechat/items/LiveChatBannerPoll.ts", "../src/parser/classes/livechat/items/LiveChatBannerRedirect.ts", "../src/parser/classes/livechat/items/LiveChatItemBumperView.ts", "../src/parser/classes/livechat/items/LiveChatMembershipItem.ts", "../src/parser/classes/livechat/items/LiveChatModeChangeMessage.ts", "../src/parser/classes/livechat/items/PdgReplyButtonView.ts", "../src/parser/classes/livechat/items/LiveChatPaidMessage.ts", "../src/parser/classes/livechat/items/LiveChatPaidSticker.ts", "../src/parser/classes/livechat/items/LiveChatPlaceholderItem.ts", "../src/parser/classes/livechat/items/LiveChatProductItem.ts", "../src/parser/classes/livechat/items/LiveChatRestrictedParticipation.ts", "../src/parser/classes/LiveChatAuthorBadge.ts", "../src/parser/classes/livechat/items/LiveChatSponsorshipsHeader.ts", "../src/parser/classes/livechat/items/LiveChatSponsorshipsGiftPurchaseAnnouncement.ts", "../src/parser/classes/livechat/items/LiveChatSponsorshipsGiftRedemptionAnnouncement.ts", "../src/parser/classes/livechat/items/LiveChatTextMessage.ts", "../src/parser/classes/livechat/items/LiveChatTickerPaidMessageItem.ts", "../src/parser/classes/livechat/items/LiveChatTickerPaidStickerItem.ts", "../src/parser/classes/livechat/items/LiveChatTickerSponsorItem.ts", "../src/parser/classes/livechat/items/LiveChatViewerEngagementMessage.ts", "../src/parser/classes/livechat/items/PollHeader.ts", "../src/parser/classes/livechat/LiveChatActionPanel.ts", "../src/parser/classes/livechat/MarkChatItemAsDeletedAction.ts", "../src/parser/classes/livechat/MarkChatItemsByAuthorAsDeletedAction.ts", "../src/parser/classes/livechat/RemoveBannerForLiveChatCommand.ts", "../src/parser/classes/livechat/RemoveChatItemAction.ts", "../src/parser/classes/livechat/RemoveChatItemByAuthorAction.ts", "../src/parser/classes/livechat/ReplaceChatItemAction.ts", "../src/parser/classes/livechat/ReplaceLiveChatAction.ts", "../src/parser/classes/livechat/ReplayChatItemAction.ts", "../src/parser/classes/livechat/ShowLiveChatActionPanelAction.ts", "../src/parser/classes/livechat/ShowLiveChatDialogAction.ts", "../src/parser/classes/livechat/ShowLiveChatTooltipCommand.ts", "../src/parser/classes/livechat/UpdateDateTextAction.ts", "../src/parser/classes/livechat/UpdateDescriptionAction.ts", "../src/parser/classes/livechat/UpdateLiveChatPollAction.ts", "../src/parser/classes/livechat/UpdateTitleAction.ts", "../src/parser/classes/livechat/UpdateToggleButtonTextAction.ts", "../src/parser/classes/livechat/UpdateViewershipAction.ts", "../src/parser/classes/LiveChatDialog.ts", "../src/parser/classes/LiveChatHeader.ts", "../src/parser/classes/LiveChatItemList.ts", "../src/parser/classes/LiveChatMessageInput.ts", "../src/parser/classes/LiveChatParticipant.ts", "../src/parser/classes/LiveChatParticipantsList.ts", "../src/parser/classes/LockupMetadataView.ts", "../src/parser/classes/LockupView.ts", "../src/parser/classes/MacroMarkersListEntity.ts", "../src/parser/classes/menus/MenuNavigationItem.ts", "../src/parser/classes/menus/MenuPopup.ts", "../src/parser/classes/Notification.ts", "../src/parser/classes/menus/MultiPageMenuNotificationSection.ts", "../src/parser/classes/menus/MusicMenuItemDivider.ts", "../src/parser/classes/menus/MusicMultiSelectMenuItem.ts", "../src/parser/classes/menus/MusicMultiSelectMenu.ts", "../src/parser/classes/menus/SimpleMenuHeader.ts", "../src/parser/classes/MerchandiseItem.ts", "../src/parser/classes/MerchandiseShelf.ts", "../src/parser/classes/MetadataRow.ts", "../src/parser/classes/MetadataRowContainer.ts", "../src/parser/classes/MetadataRowHeader.ts", "../src/parser/classes/MetadataScreen.ts", "../src/parser/classes/MicroformatData.ts", "../src/parser/classes/Mix.ts", "../src/parser/classes/ModalWithTitleAndButton.ts", "../src/parser/classes/Movie.ts", "../src/parser/classes/MovingThumbnail.ts", "../src/parser/classes/MusicCardShelfHeaderBasic.ts", "../src/parser/classes/MusicInlineBadge.ts", "../src/parser/classes/MusicPlayButton.ts", "../src/parser/classes/MusicItemThumbnailOverlay.ts", "../src/parser/classes/MusicThumbnail.ts", "../src/parser/classes/MusicCardShelf.ts", "../src/parser/classes/MusicCarouselShelfBasicHeader.ts", "../src/parser/classes/MusicMultiRowListItem.ts", "../src/parser/classes/MusicNavigationButton.ts", "../src/parser/classes/MusicResponsiveListItemFixedColumn.ts", "../src/parser/classes/MusicResponsiveListItemFlexColumn.ts", "../src/parser/classes/MusicResponsiveListItem.ts", "../src/parser/classes/MusicTwoRowItem.ts", "../src/parser/classes/MusicCarouselShelf.ts", "../src/parser/classes/MusicDescriptionShelf.ts", "../src/parser/classes/MusicDetailHeader.ts", "../src/parser/classes/MusicDownloadStateBadge.ts", "../src/parser/classes/MusicEditablePlaylistDetailHeader.ts", "../src/parser/classes/MusicElementHeader.ts", "../src/parser/classes/MusicHeader.ts", "../src/parser/classes/MusicImmersiveHeader.ts", "../src/parser/classes/MusicLargeCardItemCarousel.ts", "../src/parser/classes/MusicPlaylistEditHeader.ts", "../src/parser/classes/MusicPlaylistShelf.ts", "../src/parser/classes/PlaylistPanelVideo.ts", "../src/parser/classes/PlaylistPanelVideoWrapper.ts", "../src/parser/classes/PlaylistPanel.ts", "../src/parser/classes/MusicQueue.ts", "../src/parser/classes/MusicResponsiveHeader.ts", "../src/parser/classes/MusicShelf.ts", "../src/parser/classes/MusicSideAlignedItem.ts", "../src/parser/classes/MusicSortFilterButton.ts", "../src/parser/classes/MusicTastebuilderShelfThumbnail.ts", "../src/parser/classes/MusicTastebuilderShelf.ts", "../src/parser/classes/MusicVisualHeader.ts", "../src/parser/classes/mweb/MobileTopbar.ts", "../src/parser/classes/mweb/MultiPageMenuSection.ts", "../src/parser/classes/mweb/PivotBar.ts", "../src/parser/classes/mweb/PivotBarItem.ts", "../src/parser/classes/mweb/TopbarMenuButton.ts", "../src/parser/classes/NotificationAction.ts", "../src/parser/classes/OpenOnePickAddVideoModalCommand.ts", "../src/parser/classes/PageHeaderView.ts", "../src/parser/classes/PageHeader.ts", "../src/parser/classes/PageIntroduction.ts", "../src/parser/classes/PivotButton.ts", "../src/parser/classes/PlayerAnnotationsExpanded.ts", "../src/parser/classes/PlayerCaptionsTracklist.ts", "../src/parser/classes/PlayerOverflow.ts", "../src/parser/classes/PlayerControlsOverlay.ts", "../src/parser/classes/PlayerErrorMessage.ts", "../src/parser/classes/PlayerLegacyDesktopYpcOffer.ts", "../src/parser/classes/YpcTrailer.ts", "../src/parser/classes/PlayerLegacyDesktopYpcTrailer.ts", "../src/parser/classes/PlayerLiveStoryboardSpec.ts", "../src/parser/classes/PlayerMicroformat.ts", "../src/parser/classes/PlayerOverlayAutoplay.ts", "../src/parser/classes/PlayerOverlayVideoDetails.ts", "../src/parser/classes/WatchNextEndScreen.ts", "../src/parser/classes/PlayerOverlay.ts", "../src/parser/classes/PlaylistHeader.ts", "../src/parser/classes/PlaylistInfoCardContent.ts", "../src/parser/classes/PlaylistMetadata.ts", "../src/parser/classes/PlaylistSidebar.ts", "../src/parser/classes/PlaylistSidebarPrimaryInfo.ts", "../src/parser/classes/PlaylistSidebarSecondaryInfo.ts", "../src/parser/classes/PlaylistThumbnailOverlay.ts", "../src/parser/classes/PlaylistVideo.ts", "../src/parser/classes/PlaylistVideoList.ts", "../src/parser/classes/Poll.ts", "../src/parser/classes/Post.ts", "../src/parser/classes/PostMultiImage.ts", "../src/parser/classes/PremiereTrailerBadge.ts", "../src/parser/classes/ProductListHeader.ts", "../src/parser/classes/ProductListItem.ts", "../src/parser/classes/ProfileColumn.ts", "../src/parser/classes/ProfileColumnStats.ts", "../src/parser/classes/ProfileColumnStatsEntry.ts", "../src/parser/classes/ProfileColumnUserInfo.ts", "../src/parser/classes/Quiz.ts", "../src/parser/classes/RecognitionShelf.ts", "../src/parser/classes/ReelItem.ts", "../src/parser/classes/ReelPlayerHeader.ts", "../src/parser/classes/ReelPlayerOverlay.ts", "../src/parser/classes/RelatedChipCloud.ts", "../src/parser/classes/RichGrid.ts", "../src/parser/classes/RichItem.ts", "../src/parser/classes/RichListHeader.ts", "../src/parser/classes/RichMetadata.ts", "../src/parser/classes/RichMetadataRow.ts", "../src/parser/classes/RichSection.ts", "../src/parser/classes/RichShelf.ts", "../src/parser/classes/SearchFilter.ts", "../src/parser/classes/SearchFilterGroup.ts", "../src/parser/classes/SearchFilterOptionsDialog.ts", "../src/parser/classes/SearchHeader.ts", "../src/parser/classes/SearchSubMenu.ts", "../src/parser/classes/SearchSuggestionsSection.ts", "../src/parser/classes/UniversalWatchCard.ts", "../src/parser/classes/SecondarySearchContainer.ts", "../src/parser/classes/SectionHeaderView.ts", "../src/parser/classes/SegmentedLikeDislikeButton.ts", "../src/parser/classes/SettingBoolean.ts", "../src/parser/classes/SettingsCheckbox.ts", "../src/parser/classes/SettingsSwitch.ts", "../src/parser/classes/SettingsOptions.ts", "../src/parser/classes/SettingsSidebar.ts", "../src/parser/classes/SharedPost.ts", "../src/parser/classes/SharePanelHeader.ts", "../src/parser/classes/SharePanelTitleV15.ts", "../src/parser/classes/ShareTarget.ts", "../src/parser/classes/Shelf.ts", "../src/parser/classes/ShortsLockupView.ts", "../src/parser/classes/ShowingResultsFor.ts", "../src/parser/classes/SimpleCardContent.ts", "../src/parser/classes/SimpleCardTeaser.ts", "../src/parser/classes/SimpleTextSection.ts", "../src/parser/classes/SingleActionEmergencySupport.ts", "../src/parser/classes/Tab.ts", "../src/parser/classes/SingleColumnBrowseResults.ts", "../src/parser/classes/SingleColumnMusicWatchNextResults.ts", "../src/parser/classes/SingleHeroImage.ts", "../src/parser/classes/SlimOwner.ts", "../src/parser/classes/SlimVideoMetadata.ts", "../src/parser/classes/StartAt.ts", "../src/parser/classes/Tabbed.ts", "../src/parser/classes/TabbedSearchResults.ts", "../src/parser/classes/TextHeader.ts", "../src/parser/classes/ThirdPartyShareTargetSection.ts", "../src/parser/classes/ThumbnailLandscapePortrait.ts", "../src/parser/classes/ThumbnailOverlayEndorsement.ts", "../src/parser/classes/ThumbnailOverlayHoverText.ts", "../src/parser/classes/ThumbnailOverlayInlineUnplayable.ts", "../src/parser/classes/ThumbnailOverlayLoadingPreview.ts", "../src/parser/classes/ThumbnailOverlayNowPlaying.ts", "../src/parser/classes/ThumbnailOverlayPinking.ts", "../src/parser/classes/ThumbnailOverlayPlaybackStatus.ts", "../src/parser/classes/ThumbnailOverlayResumePlayback.ts", "../src/parser/classes/ThumbnailOverlaySidePanel.ts", "../src/parser/classes/ThumbnailOverlayToggleButton.ts", "../src/parser/classes/TitleAndButtonListHeader.ts", "../src/parser/classes/ToggleFormField.ts", "../src/parser/classes/ToggleMenuServiceItem.ts", "../src/parser/classes/Tooltip.ts", "../src/parser/classes/TopicChannelDetails.ts", "../src/parser/classes/TwoColumnBrowseResults.ts", "../src/parser/classes/TwoColumnSearchResults.ts", "../src/parser/classes/TwoColumnWatchNextResults.ts", "../src/parser/classes/UnifiedSharePanel.ts", "../src/parser/classes/UpsellDialog.ts", "../src/parser/classes/VerticalList.ts", "../src/parser/classes/VerticalWatchCardList.ts", "../src/parser/classes/VideoInfoCardContent.ts", "../src/parser/classes/VideoMetadataCarouselView.ts", "../src/parser/classes/misc/SubscriptionButton.ts", "../src/parser/classes/VideoOwner.ts", "../src/parser/classes/VideoViewCount.ts", "../src/parser/classes/VideoPrimaryInfo.ts", "../src/parser/classes/VideoSecondaryInfo.ts", "../src/parser/classes/WatchCardCompactVideo.ts", "../src/parser/classes/WatchCardHeroVideo.ts", "../src/parser/classes/WatchCardRichHeader.ts", "../src/parser/classes/WatchCardSectionSequence.ts", "../src/parser/classes/WatchNextTabbedResults.ts", "../src/parser/classes/ytkids/AnchoredSection.ts", "../src/parser/classes/ytkids/KidsBlocklistPickerItem.ts", "../src/parser/classes/ytkids/KidsBlocklistPicker.ts", "../src/parser/classes/ytkids/KidsCategoryTab.ts", "../src/parser/classes/ytkids/KidsCategoriesHeader.ts", "../src/parser/classes/ytkids/KidsHomeScreen.ts", "../src/parser/generator.ts", "../src/parser/continuations.ts", "../protos/generated/misc/common.ts", "../src/parser/classes/misc/Format.ts", "../src/parser/classes/misc/VideoDetails.ts", "../src/parser/youtube/index.ts", "../src/parser/youtube/AccountInfo.ts", "../src/core/mixins/Feed.ts", "../src/core/mixins/FilterableFeed.ts", "../src/core/mixins/index.ts", "../src/core/mixins/MediaInfo.ts", "../src/core/mixins/TabbedFeed.ts", "../src/parser/youtube/Channel.ts", "../src/parser/youtube/Comments.ts", "../src/parser/youtube/Guide.ts", "../src/parser/youtube/History.ts", "../src/parser/youtube/HomeFeed.ts", "../src/parser/youtube/HashtagFeed.ts", "../src/parser/youtube/ItemMenu.ts", "../src/parser/youtube/Playlist.ts", "../src/parser/youtube/Library.ts", "../src/parser/youtube/SmoothedQueue.ts", "../src/parser/youtube/LiveChat.ts", "../src/parser/youtube/NotificationsMenu.ts", "../src/parser/youtube/Search.ts", "../src/parser/youtube/Settings.ts", "../src/parser/youtube/VideoInfo.ts", "../src/parser/youtube/TranscriptInfo.ts", "../src/parser/ytmusic/index.ts", "../src/parser/ytmusic/Album.ts", "../src/parser/ytmusic/Artist.ts", "../src/parser/ytmusic/Explore.ts", "../src/parser/ytmusic/HomeFeed.ts", "../src/parser/ytmusic/Library.ts", "../src/parser/ytmusic/Playlist.ts", "../src/parser/ytmusic/Recap.ts", "../src/parser/ytmusic/Search.ts", "../src/parser/ytmusic/TrackInfo.ts", "../src/parser/ytkids/index.ts", "../src/parser/ytkids/Channel.ts", "../src/parser/ytkids/HomeFeed.ts", "../src/parser/ytkids/Search.ts", "../src/parser/ytkids/VideoInfo.ts", "../src/parser/ytshorts/index.ts", "../src/parser/ytshorts/ShortFormVideoInfo.ts", "../src/parser/types/index.ts", "../src/parser/classes/misc/Author.ts", "../src/utils/user-agents.ts", "../src/platform/polyfills/node-custom-event.ts", "../src/core/Actions.ts", "../src/core/OAuth2.ts", "../src/core/Player.ts", "../src/core/Session.ts", "../src/core/clients/index.ts", "../src/core/clients/Kids.ts", "../src/core/clients/Music.ts", "../protos/generated/youtube/api/pfiinnertube/capability_info.ts", "../protos/generated/youtube/api/pfiinnertube/client_info.ts", "../protos/generated/youtube/api/pfiinnertube/attestation_response_data.ts", "../protos/generated/youtube/api/pfiinnertube/request_info.ts", "../protos/generated/youtube/api/pfiinnertube/third_party_info.ts", "../protos/generated/youtube/api/pfiinnertube/user_info.ts", "../protos/generated/youtube/api/pfiinnertube/innertube_context.ts", "../protos/generated/youtube/api/pfiinnertube/metadata_update_request.ts", "../src/core/clients/Studio.ts", "../src/core/managers/index.ts", "../src/core/managers/AccountManager.ts", "../src/core/managers/PlaylistManager.ts", "../src/core/managers/InteractionManager.ts", "../src/Innertube.ts", "../src/types/index.ts", "../src/platform/lib.ts", "../src/platform/jsruntime/jinter.ts"],
"sourcesContent": ["// Node.js Platform Support\nimport { ReadableStream } from 'stream/web';\nimport {\n fetch as defaultFetch,\n Request,\n Response,\n Headers,\n FormData,\n File\n} from 'undici';\nimport type { ICache } from '../types/Cache.js';\nimport { Platform } from '../utils/Utils.js';\nimport crypto from 'crypto';\nimport type { FetchFunction } from '../types/PlatformShim.js';\nimport path from 'path';\nimport os from 'os';\nimport fs from 'fs/promises';\nimport CustomEvent from './polyfills/node-custom-event.js';\nimport { fileURLToPath } from 'url';\nimport evaluate from './jsruntime/jinter.js';\nimport { $INLINE_JSON } from 'ts-transformer-inline-file';\n\nconst meta_url = import.meta.url;\nconst is_cjs = !meta_url;\nconst __dirname__ = is_cjs ? __dirname : path.dirname(fileURLToPath(meta_url));\n\nconst { homepage, version, bugs } = $INLINE_JSON('../../package.json');\nconst repo_url = homepage?.split('#')[0];\n\nclass Cache implements ICache {\n #persistent_directory: string;\n #persistent: boolean;\n\n constructor(persistent = false, persistent_directory?: string) {\n this.#persistent_directory = persistent_directory || Cache.default_persistent_directory;\n this.#persistent = persistent;\n }\n\n static get temp_directory() {\n return `${os.tmpdir()}/youtubei.js`;\n }\n\n static get default_persistent_directory() {\n return path.resolve(__dirname__, '..', '..', '.cache', 'youtubei.js');\n }\n\n get cache_dir() {\n return this.#persistent ? this.#persistent_directory : Cache.temp_directory;\n }\n\n async #createCache() {\n const dir = this.cache_dir;\n try {\n const cwd = await fs.stat(dir);\n if (!cwd.isDirectory())\n throw new Error('An unexpected file was found in place of the cache directory');\n } catch (e: any) {\n if (e?.code === 'ENOENT')\n await fs.mkdir(dir, { recursive: true });\n else\n throw e;\n }\n }\n\n async get(key: string) {\n await this.#createCache();\n const file = path.resolve(this.cache_dir, key);\n try {\n const stat = await fs.stat(file);\n if (stat.isFile()) {\n const data: Buffer = await fs.readFile(file);\n return data.buffer;\n }\n throw new Error('An unexpected file was found in place of the cache key');\n\n } catch (e: any) {\n if (e?.code === 'ENOENT')\n return undefined;\n throw e;\n }\n }\n\n async set(key: string, value: ArrayBuffer) {\n await this.#createCache();\n const file = path.resolve(this.cache_dir, key);\n await fs.writeFile(file, new Uint8Array(value));\n }\n\n async remove(key: string) {\n await this.#createCache();\n const file = path.resolve(this.cache_dir, key);\n try {\n await fs.unlink(file);\n } catch (e: any) {\n if (e?.code === 'ENOENT') return;\n throw e;\n }\n }\n}\n\nPlatform.load({\n runtime: 'node',\n info: {\n version: version,\n bugs_url: bugs?.url || `${repo_url}/issues`,\n repo_url\n },\n server: true,\n Cache: Cache,\n sha1Hash: async (data: string) => {\n return crypto.createHash('sha1').update(data).digest('hex');\n },\n uuidv4() {\n return crypto.randomUUID();\n },\n eval: evaluate,\n fetch: defaultFetch as unknown as FetchFunction,\n Request: Request as unknown as typeof globalThis.Request,\n Response: Response as unknown as typeof globalThis.Response,\n Headers: Headers as unknown as typeof globalThis.Headers,\n FormData: FormData as unknown as typeof globalThis.FormData,\n File: File as unknown as typeof globalThis.File,\n ReadableStream: ReadableStream as unknown as typeof globalThis.ReadableStream,\n CustomEvent: CustomEvent as unknown as typeof globalThis.CustomEvent\n});\n\nexport * from './lib.js';\nimport Innertube from './lib.js';\nexport default Innertube;\n", "import type { Node } from 'estree';\nimport { Jinter } from 'jintr';\n\nimport type { EmojiRun, TextRun } from '../parser/misc.js';\nimport type { FetchFunction } from '../types/index.js';\nimport type PlatformShim from '../types/PlatformShim.js';\n\nimport { Memo } from '../parser/helpers.js';\nimport { Text } from '../parser/misc.js';\nimport * as Log from './Log.js';\nimport userAgents from './user-agents.js';\n\nconst TAG_ = 'Utils';\n\nlet shim: PlatformShim | undefined;\n\nexport class Platform {\n static load(platform: PlatformShim): void {\n shim = platform;\n }\n\n static get shim(): PlatformShim {\n if (!shim) {\n throw new Error('Platform is not loaded');\n }\n return shim;\n }\n}\n\nexport class InnertubeError extends Error {\n date: Date;\n version: string;\n info?: any;\n\n constructor(message: string, info?: any) {\n super(message);\n\n if (info) {\n this.info = info;\n }\n\n this.date = new Date();\n this.version = Platform.shim.info.version;\n }\n}\n\nexport class ParsingError extends InnertubeError {\n}\n\nexport class MissingParamError extends InnertubeError {\n}\n\nexport class OAuth2Error extends InnertubeError {\n}\n\nexport class PlayerError extends Error {\n}\n\nexport class SessionError extends Error {\n}\n\nexport class ChannelError extends Error {\n}\n\n/**\n * Compares given objects. May not work correctly for\n * objects with methods.\n */\nexport function deepCompare(obj1: any, obj2: any): boolean {\n const keys = Reflect.ownKeys(obj1);\n return keys.some((key) => {\n const is_text = obj2[key] instanceof Text;\n if (!is_text && typeof obj2[key] === 'object') {\n return JSON.stringify(obj1[key]) === JSON.stringify(obj2[key]);\n }\n return obj1[key] === (is_text ? obj2[key].toString() : obj2[key]);\n });\n}\n\n/**\n * Finds a string between two delimiters.\n * @param data - the data.\n * @param start_string - start string.\n * @param end_string - end string.\n */\nexport function getStringBetweenStrings(data: string, start_string: string, end_string: string): string | undefined {\n const regex = new RegExp(`${escapeStringRegexp(start_string)}(.*?)${escapeStringRegexp(end_string)}`, 's');\n const match = data.match(regex);\n return match ? match[1] : undefined;\n}\n\nexport function escapeStringRegexp(input: string): string {\n return input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\nexport type DeviceCategory = 'mobile' | 'desktop';\n\n/**\n * Returns a random user agent.\n * @param type - mobile | desktop\n */\nexport function getRandomUserAgent(type: DeviceCategory): string {\n const available_agents = userAgents[type];\n const random_index = Math.floor(Math.random() * available_agents.length);\n return available_agents[random_index];\n}\n\n/**\n * Generates an authentication token from a cookies' sid.\n * @param sid - Sid extracted from cookies\n */\nexport async function generateSidAuth(sid: string): Promise<string> {\n const youtube = 'https://www.youtube.com';\n\n const timestamp = Math.floor(new Date().getTime() / 1000);\n const input = [ timestamp, sid, youtube ].join(' ');\n const gen_hash = await Platform.shim.sha1Hash(input);\n\n return [ 'SAPISIDHASH', [ timestamp, gen_hash ].join('_') ].join(' ');\n}\n\n/**\n * Generates a random string with the given length.\n *\n */\nexport function generateRandomString(length: number): string {\n const result = [];\n\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n for (let i = 0; i < length; i++) {\n result.push(alphabet.charAt(Math.floor(Math.random() * alphabet.length)));\n }\n\n return result.join('');\n}\n\n/**\n * Converts time (h:m:s) to seconds.\n * @returns seconds\n */\nexport function timeToSeconds(time: string): number {\n const params = time.split(':').map((param) => parseInt(param.replace(/\\D/g, '')));\n switch (params.length) {\n case 1:\n return params[0];\n case 2:\n return params[0] * 60 + params[1];\n case 3:\n return params[0] * 3600 + params[1] * 60 + params[2];\n default:\n throw new Error('Invalid time string');\n }\n}\n\nexport function concatMemos(...iterables: Array<Memo | undefined>): Memo {\n const memo = new Memo();\n\n for (const iterable of iterables) {\n if (!iterable) continue;\n for (const item of iterable) {\n // Update existing items.\n const memo_item = memo.get(item[0]);\n if (memo_item) {\n memo.set(item[0], [ ...memo_item, ...item[1] ]);\n continue;\n }\n\n memo.set(...item);\n }\n }\n\n return memo;\n}\n\nexport function throwIfMissing(params: object): void {\n for (const [ key, value ] of Object.entries(params)) {\n if (!value)\n throw new MissingParamError(`${key} is missing`);\n }\n}\n\nexport function hasKeys<T extends object, R extends (keyof T)[]>(params: T, ...keys: R): params is Exclude<T, R[number]> & Required<Pick<T, R[number]>> {\n for (const key of keys) {\n if (!Reflect.has(params, key) || (params[key] === undefined))\n return false;\n }\n return true;\n}\n\nexport async function* streamToIterable(stream: ReadableStream<Uint8Array>) {\n const reader = stream.getReader();\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport const debugFetch: FetchFunction = (input, init) => {\n const url =\n typeof input === 'string' ?\n new URL(input) :\n input instanceof URL ?\n input : new URL(input.url);\n\n const headers =\n init?.headers ?\n new Headers(init.headers) :\n input instanceof Request ?\n input.headers :\n new Headers();\n\n const arr_headers = [ ...headers ];\n\n const body_contents =\n init?.body ?\n typeof init.body === 'string' ?\n headers.get('content-type') === 'application/json' ?\n JSON.stringify(JSON.parse(init.body), null, 2) : // Body is string and json\n init.body : // Body is string\n ' <binary>' : // Body is not string\n ' (none)'; // No body provided\n\n const headers_serialized =\n arr_headers.length > 0 ?\n `${arr_headers.map(([ key, value ]) => ` ${key}: ${value}`).join('\\n')}` :\n ' (none)';\n\n Log.warn(TAG_,\n 'Fetch:\\n' +\n ` url: ${url.toString()}\\n` +\n ` method: ${init?.method || 'GET'}\\n` +\n ` headers:\\n${headers_serialized}\\n' + \n ' body:\\n${body_contents}`\n );\n\n return Platform.shim.fetch(input, init);\n};\n\nexport function u8ToBase64(u8: Uint8Array): string {\n return btoa(String.fromCharCode.apply(null, Array.from(u8)));\n}\n\nexport function base64ToU8(base64: string): Uint8Array {\n const standard_base64 = base64.replace(/-/g, '+').replace(/_/g, '/');\n const padded_base64 = standard_base64.padEnd(standard_base64.length + (4 - standard_base64.length % 4) % 4, '=');\n return new Uint8Array(atob(padded_base64).split('').map((char) => char.charCodeAt(0)));\n}\n\nexport function isTextRun(run: TextRun | EmojiRun): run is TextRun {\n return !('emoji' in run);\n}\n\nexport function getCookie(cookies: string, name: string, matchWholeName = false): string | undefined {\n const regex = matchWholeName ? `(^|\\\\s?)\\\\b${name}\\\\b=([^;]+)` : `(^|s?)${name}=([^;]+)`;\n const match = cookies.match(new RegExp(regex));\n return match ? match[2] : undefined;\n}\n\nexport type ASTLookupArgs = {\n /**\n * The name of the function.\n */\n name?: string;\n\n /**\n * A string that must be included in the function's code for it to be considered.\n */\n includes?: string;\n\n /**\n * A regular expression that the function's code must match.\n */\n regexp?: RegExp;\n\n /**\n * The abstract syntax tree of the source code.\n */\n ast?: ReturnType<typeof Jinter.parseScript>;\n};\n\nexport type ASTLookupResult = {\n start: number;\n end: number;\n name: string;\n node: Record<string, any>;\n result: string;\n};\n\n/**\n * Searches for a function in the given code based on specified criteria.\n *\n * @example\n * ```ts\n * const source = '(function() {var foo, bar; foo = function() { console.log(\"foo\"); }; bar = function() { console.log(\"bar\"); }; })();';\n * const result = findFunction(source, { name: 'bar' });\n * console.log(result);\n * // Output: { start: 69, end: 110, name: 'bar', node: { ... }, result: 'bar = function() { console.log(\"bar\"); };' }\n * ```\n * \n * @returns An object containing the function's details if found, `undefined` otherwise.\n */\nexport function findFunction(source: string, args: ASTLookupArgs): ASTLookupResult | undefined {\n const { name, includes, regexp, ast } = args;\n\n const node = ast ? ast : Jinter.parseScript(source);\n const stack = [ node ] as (Node & { start: number; end: number })[];\n\n for (let i = 0; i < stack.length; i++) {\n const current = stack[i];\n\n if (\n current.type === 'ExpressionStatement' && (\n current.expression.type === 'AssignmentExpression' &&\n current.expression.left.type === 'Identifier' &&\n current.expression.right.type === 'FunctionExpression'\n )\n ) {\n const code = source.substring(current.start, current.end);\n\n if (\n (name && current.expression.left.name === name) ||\n (includes && code.includes(includes)) ||\n (regexp && regexp.test(code))\n ) {\n return {\n start: current.start,\n end: current.end,\n name: current.expression.left.name,\n node: current,\n result: code\n };\n }\n }\n\n for (const key in current) {\n const child = (current as Record<string, any>)[key];\n if (Array.isArray(child)) {\n stack.push(...child);\n } else if (typeof child === 'object' && child !== null) {\n stack.push(child);\n }\n }\n }\n}\n\n/**\n * Searches for a variable declaration in the given code based on specified criteria.\n *\n * @example\n * ```ts\n * // Find a variable by name\n * const code = 'const x = 5; let y = \"hello\";';\n * const a = findVariable(code, { name: 'y' });\n * console.log(a?.result);\n *\n * // Find a variable containing specific text\n * const b = findVariable(code, { includes: 'hello' });\n * console.log(b?.result);\n *\n * // Find a variable matching a pattern\n * const c = findVariable(code, { regexp: /y\\s*=\\s*\"hello\"/ });\n * console.log(c?.result);\n * ```\n * \n * @returns An object containing the variable's details if found, `undefined` otherwise.\n */\nexport function findVariable(code: string, options: ASTLookupArgs): ASTLookupResult | undefined {\n const ast = options.ast ? options.ast : Jinter.parseScript(code, { ecmaVersion: 'latest', ranges: true });\n\n let found: ASTLookupResult | undefined;\n\n function walk(node: Node): void {\n if (found) return;\n\n if (node.type === 'VariableDeclaration') {\n const [ start, end ] = node.range!;\n const node_source = code.slice(start, end);\n\n for (const declarator of node.declarations) {\n if (declarator.id.type === 'Identifier') {\n const var_name = declarator.id.name;\n if (options.name && var_name === options.name) {\n found = { start, end, name: var_name, node, result: node_source };\n return;\n }\n }\n }\n if (\n (options.includes && node_source.includes(options.includes)) ||\n (options.regexp && options.regexp.test(node_source))) {\n found = { start, end, name: (node.declarations?.[0]?.id as any)?.name, node, result: node_source };\n return;\n }\n }\n\n for (const key in node) {\n if (Object.prototype.hasOwnProperty.call(node, key)) {\n const child = node[key as keyof typeof node] as any;\n if (Array.isArray(child)) {\n for (const c of child) {\n if (c && typeof c.type === 'string') {\n walk(c);\n if (found) return;\n }\n }\n } else if (child && typeof child.type === 'string') {\n walk(child);\n if (found) return;\n }\n }\n }\n }\n\n walk(ast);\n return found;\n}", "// This file is generated automatically. Do not modify it.\nexport { default as ArrayExpression } from './ArrayExpression.js';\nexport { default as ArrowFunctionExpression } from './ArrowFunctionExpression.js';\nexport { default as AssignmentExpression } from './AssignmentExpression.js';\nexport { default as BinaryExpression } from './BinaryExpression.js';\nexport { default as BlockStatement } from './BlockStatement.js';\nexport { default as BreakStatement } from './BreakStatement.js';\nexport { default as CallExpression } from './CallExpression.js';\nexport { default as ConditionalExpression } from './ConditionalExpression.js';\nexport { default as ContinueStatement } from './ContinueStatement.js';\nexport { default as EmptyStatement } from './EmptyStatement.js';\nexport { default as Express