UNPKG

innertuber-rn

Version:

A wrapper around YouTube's private API. Supports YouTube, YouTube Music, YouTube Kids and YouTube Studio (WIP).

1,206 lines (1,190 loc) 1.02 MB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; // node_modules/tslib/tslib.es6.mjs function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } __name(__rest, "__rest"); function __setFunctionName(f, name, prefix) { if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); } __name(__setFunctionName, "__setFunctionName"); function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { resolve(value); }); } __name(adopt, "adopt"); return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } __name(fulfilled, "fulfilled"); function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } __name(rejected, "rejected"); function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } __name(step, "step"); step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } __name(__awaiter, "__awaiter"); function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } __name(__values, "__values"); function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } __name(__await, "__await"); function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { return this; }, i; function verb(n) { if (g[n]) i[n] = function(v) { return new Promise(function(a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } __name(verb, "verb"); function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } __name(resume, "resume"); function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } __name(step, "step"); function fulfill(value) { resume("next", value); } __name(fulfill, "fulfill"); function reject(value) { resume("throw", value); } __name(reject, "reject"); function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } __name(settle, "settle"); } __name(__asyncGenerator, "__asyncGenerator"); function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { return this; }, i); function verb(n) { i[n] = o[n] && function(v) { return new Promise(function(resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } __name(verb, "verb"); function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } __name(settle, "settle"); } __name(__asyncValues, "__asyncValues"); function __classPrivateFieldGet(receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); } __name(__classPrivateFieldGet, "__classPrivateFieldGet"); function __classPrivateFieldSet(receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; } __name(__classPrivateFieldSet, "__classPrivateFieldSet"); // dist/src/utils/Utils.js var Utils_exports = {}; __export(Utils_exports, { ChannelError: () => ChannelError, InnertubeError: () => InnertubeError, MissingParamError: () => MissingParamError, OAuthError: () => OAuthError, ParsingError: () => ParsingError, Platform: () => Platform, PlayerError: () => PlayerError, SessionError: () => SessionError, base64ToU8: () => base64ToU8, concatMemos: () => concatMemos, debugFetch: () => debugFetch, deepCompare: () => deepCompare, escapeStringRegexp: () => escapeStringRegexp, generateRandomString: () => generateRandomString, generateSidAuth: () => generateSidAuth, getRandomUserAgent: () => getRandomUserAgent, getStringBetweenStrings: () => getStringBetweenStrings, hasKeys: () => hasKeys, isTextRun: () => isTextRun, streamToIterable: () => streamToIterable, throwIfMissing: () => throwIfMissing, timeToSeconds: () => timeToSeconds, u8ToBase64: () => u8ToBase64 }); // dist/src/parser/helpers.js var helpers_exports = {}; __export(helpers_exports, { Maybe: () => Maybe, Memo: () => Memo, SuperParsedResult: () => SuperParsedResult, YTNode: () => YTNode, observe: () => observe }); // dist/src/utils/Log.js var _a; var Log = class { static doLog(level, tag, args) { if (!this.log_map_[level] || !this.log_level_.includes(level)) return; const tags = [`[${this.YTJS_TAG}]`]; if (tag) tags.push(`[${tag}]`); this.log_map_[level](`${tags.join("")}:`, ...args || []); } static setLevel(...args) { this.log_level_ = args; } }; __name(Log, "Log"); _a = Log; Log.YTJS_TAG = "YOUTUBEJS"; Log.Level = { NONE: 0, ERROR: 1, WARNING: 2, INFO: 3, DEBUG: 4 }; Log.log_map_ = { [Log.Level.ERROR]: (...args) => console.error(...args), [Log.Level.WARNING]: (...args) => console.warn(...args), [Log.Level.INFO]: (...args) => console.info(...args), [Log.Level.DEBUG]: (...args) => console.debug(...args) }; Log.log_level_ = [Log.Level.WARNING]; Log.one_time_warnings_issued_ = /* @__PURE__ */ new Set(); Log.warnOnce = (id, ...args) => { if (_a.one_time_warnings_issued_.has(id)) return; _a.doLog(Log.Level.WARNING, id, args); _a.one_time_warnings_issued_.add(id); }; Log.warn = (tag, ...args) => _a.doLog(Log.Level.WARNING, tag, args); Log.error = (tag, ...args) => _a.doLog(Log.Level.ERROR, tag, args); Log.info = (tag, ...args) => _a.doLog(Log.Level.INFO, tag, args); Log.debug = (tag, ...args) => _a.doLog(Log.Level.DEBUG, tag, args); var Log_default = Log; // dist/src/parser/helpers.js var _YTNode_instances; var _YTNode_is; var _Maybe_instances; var _Maybe_TAG; var _Maybe_value; var _Maybe_checkPrimative; var _Maybe_assertPrimative; var _SuperParsedResult_result; var isObserved = Symbol("ObservedArray.isObserved"); var YTNode = class { constructor() { _YTNode_instances.add(this); this.type = this.constructor.type; } is(...types2) { return types2.some((type) => __classPrivateFieldGet(this, _YTNode_instances, "m", _YTNode_is).call(this, type)); } as(...types2) { if (!this.is(...types2)) { throw new ParsingError(`Cannot cast ${this.type} to one of ${types2.map((t) => t.type).join(", ")}`); } return this; } hasKey(key) { return Reflect.has(this, key); } key(key) { if (!this.hasKey(key)) { throw new ParsingError(`Missing key ${key}`); } return new Maybe(this[key]); } }; __name(YTNode, "YTNode"); _YTNode_instances = /* @__PURE__ */ new WeakSet(), _YTNode_is = /* @__PURE__ */ __name(function _YTNode_is2(type) { return this.type === type.type; }, "_YTNode_is"); YTNode.type = "YTNode"; var Maybe = class { constructor(value) { _Maybe_instances.add(this); _Maybe_TAG.set(this, "Maybe"); _Maybe_value.set(this, void 0); __classPrivateFieldSet(this, _Maybe_value, value, "f"); } get typeof() { return typeof __classPrivateFieldGet(this, _Maybe_value, "f"); } string() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "string"); } isString() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "string"); } number() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "number"); } isNumber() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "number"); } bigint() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "bigint"); } isBigint() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "bigint"); } boolean() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "boolean"); } isBoolean() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "boolean"); } symbol() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "symbol"); } isSymbol() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "symbol"); } undefined() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "undefined"); } isUndefined() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "undefined"); } null() { if (__classPrivateFieldGet(this, _Maybe_value, "f") !== null) throw new TypeError(`Expected null, got ${typeof __classPrivateFieldGet(this, _Maybe_value, "f")}`); return __classPrivateFieldGet(this, _Maybe_value, "f"); } isNull() { return __classPrivateFieldGet(this, _Maybe_value, "f") === null; } object() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "object"); } isObject() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "object"); } function() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_assertPrimative).call(this, "function"); } isFunction() { return __classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, "function"); } array() { if (!Array.isArray(__classPrivateFieldGet(this, _Maybe_value, "f"))) { throw new TypeError(`Expected array, got ${typeof __classPrivateFieldGet(this, _Maybe_value, "f")}`); } return __classPrivateFieldGet(this, _Maybe_value, "f"); } arrayOfMaybe() { const arrayProps = []; return new Proxy(this.array(), { get(target, prop) { if (Reflect.has(arrayProps, prop)) { return Reflect.get(target, prop); } return new Maybe(Reflect.get(target, prop)); } }); } isArray() { return Array.isArray(__classPrivateFieldGet(this, _Maybe_value, "f")); } node() { if (!(__classPrivateFieldGet(this, _Maybe_value, "f") instanceof YTNode)) { throw new TypeError(`Expected YTNode, got ${__classPrivateFieldGet(this, _Maybe_value, "f").constructor.name}`); } return __classPrivateFieldGet(this, _Maybe_value, "f"); } isNode() { return __classPrivateFieldGet(this, _Maybe_value, "f") instanceof YTNode; } nodeOfType(...types2) { return this.node().as(...types2); } isNodeOfType(...types2) { return this.isNode() && this.node().is(...types2); } observed() { if (!this.isObserved()) { throw new TypeError(`Expected ObservedArray, got ${typeof __classPrivateFieldGet(this, _Maybe_value, "f")}`); } return __classPrivateFieldGet(this, _Maybe_value, "f"); } isObserved() { var _a4; return (_a4 = __classPrivateFieldGet(this, _Maybe_value, "f")) === null || _a4 === void 0 ? void 0 : _a4[isObserved]; } parsed() { if (!(__classPrivateFieldGet(this, _Maybe_value, "f") instanceof SuperParsedResult)) { throw new TypeError(`Expected SuperParsedResult, got ${typeof __classPrivateFieldGet(this, _Maybe_value, "f")}`); } return __classPrivateFieldGet(this, _Maybe_value, "f"); } isParsed() { return __classPrivateFieldGet(this, _Maybe_value, "f") instanceof SuperParsedResult; } any() { Log_default.warn(__classPrivateFieldGet(this, _Maybe_TAG, "f"), "This call is not meant to be used outside of debugging. Please use the specific type getter instead."); return __classPrivateFieldGet(this, _Maybe_value, "f"); } instanceof(type) { if (!this.isInstanceof(type)) { throw new TypeError(`Expected instance of ${type.name}, got ${__classPrivateFieldGet(this, _Maybe_value, "f").constructor.name}`); } return __classPrivateFieldGet(this, _Maybe_value, "f"); } isInstanceof(type) { return __classPrivateFieldGet(this, _Maybe_value, "f") instanceof type; } }; __name(Maybe, "Maybe"); _Maybe_TAG = /* @__PURE__ */ new WeakMap(), _Maybe_value = /* @__PURE__ */ new WeakMap(), _Maybe_instances = /* @__PURE__ */ new WeakSet(), _Maybe_checkPrimative = /* @__PURE__ */ __name(function _Maybe_checkPrimative2(type) { if (typeof __classPrivateFieldGet(this, _Maybe_value, "f") !== type) { return false; } return true; }, "_Maybe_checkPrimative"), _Maybe_assertPrimative = /* @__PURE__ */ __name(function _Maybe_assertPrimative2(type) { if (!__classPrivateFieldGet(this, _Maybe_instances, "m", _Maybe_checkPrimative).call(this, type)) { throw new TypeError(`Expected ${type}, got ${this.typeof}`); } return __classPrivateFieldGet(this, _Maybe_value, "f"); }, "_Maybe_assertPrimative"); var SuperParsedResult = class { constructor(result) { _SuperParsedResult_result.set(this, void 0); __classPrivateFieldSet(this, _SuperParsedResult_result, result, "f"); } get is_null() { return __classPrivateFieldGet(this, _SuperParsedResult_result, "f") === null; } get is_array() { return !this.is_null && Array.isArray(__classPrivateFieldGet(this, _SuperParsedResult_result, "f")); } get is_node() { return !this.is_array; } array() { if (!this.is_array) { throw new TypeError("Expected an array, got a node"); } return __classPrivateFieldGet(this, _SuperParsedResult_result, "f"); } item() { if (!this.is_node) { throw new TypeError("Expected a node, got an array"); } return __classPrivateFieldGet(this, _SuperParsedResult_result, "f"); } }; __name(SuperParsedResult, "SuperParsedResult"); _SuperParsedResult_result = /* @__PURE__ */ new WeakMap(); function observe(obj) { return new Proxy(obj, { get(target, prop) { if (prop == "get") { return (rule, del_item) => target.find((obj2, index) => { const match = deepCompare(rule, obj2); if (match && del_item) { target.splice(index, 1); } return match; }); } if (prop == isObserved) { return true; } if (prop == "getAll") { return (rule, del_items) => target.filter((obj2, index) => { const match = deepCompare(rule, obj2); if (match && del_items) { target.splice(index, 1); } return match; }); } if (prop == "matchCondition") { return (condition) => target.find((obj2) => { return condition(obj2); }); } if (prop == "filterType") { return (...types2) => { return observe(target.filter((node) => { if (node.is(...types2)) return true; return false; })); }; } if (prop == "firstOfType") { return (...types2) => { return target.find((node) => { if (node.is(...types2)) return true; return false; }); }; } if (prop == "first") { return () => target[0]; } if (prop == "as") { return (...types2) => { return observe(target.map((node) => { if (node.is(...types2)) return node; throw new ParsingError(`Expected node of any type ${types2.map((type) => type.type).join(", ")}, got ${node.type}`); })); }; } if (prop == "remove") { return (index) => target.splice(index, 1); } return Reflect.get(target, prop); } }); } __name(observe, "observe"); var Memo = class extends Map { getType(...types2) { types2 = types2.flat(); return observe(types2.flatMap((type) => this.get(type.type) || [])); } }; __name(Memo, "Memo"); // dist/src/parser/misc.js var misc_exports = {}; __export(misc_exports, { Author: () => Author, ChildElement: () => ChildElement_default, EmojiRun: () => EmojiRun, Format: () => Format_default, Text: () => Text, TextRun: () => TextRun, Thumbnail: () => Thumbnail, VideoDetails: () => VideoDetails }); // dist/src/utils/Constants.js var Constants_exports = {}; __export(Constants_exports, { CLIENTS: () => CLIENTS, INNERTUBE_HEADERS_BASE: () => INNERTUBE_HEADERS_BASE, OAUTH: () => OAUTH, STREAM_HEADERS: () => STREAM_HEADERS, URLS: () => URLS }); var URLS = Object.freeze({ YT_BASE: "https://www.youtube.com", YT_MUSIC_BASE: "https://music.youtube.com", YT_SUGGESTIONS: "https://suggestqueries.google.com/complete/", YT_UPLOAD: "https://upload.youtube.com/", API: Object.freeze({ BASE: "https://youtubei.googleapis.com", PRODUCTION_1: "https://www.youtube.com/youtubei/", PRODUCTION_2: "https://youtubei.googleapis.com/youtubei/", STAGING: "https://green-youtubei.sandbox.googleapis.com/youtubei/", RELEASE: "https://release-youtubei.sandbox.googleapis.com/youtubei/", TEST: "https://test-youtubei.sandbox.googleapis.com/youtubei/", CAMI: "http://cami-youtubei.sandbox.googleapis.com/youtubei/", UYTFE: "https://uytfe.sandbox.google.com/youtubei/" }) }); var OAUTH = Object.freeze({ SCOPE: "http://gdata.youtube.com https://www.googleapis.com/auth/youtube-paid-content", GRANT_TYPE: "http://oauth.net/grant_type/device/1.0", MODEL_NAME: "ytlr::", HEADERS: Object.freeze({ "accept": "*/*", "origin": "https://www.youtube.com", "user-agent": "Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version", "content-type": "application/json", "referer": "https://www.youtube.com/tv", "accept-language": "en-US" }), REGEX: Object.freeze({ AUTH_SCRIPT: /<script id="base-js" src="(.*?)" nonce=".*?"><\/script>/, CLIENT_IDENTITY: /var .+?={clientId:"(?<client_id>.+?)",.+?:"(?<client_secret>.+?)".+?}/ }) }); var CLIENTS = Object.freeze({ iOS: { NAME: "iOS", VERSION: "18.06.35", USER_AGENT: "com.google.ios.youtube/18.06.35 (iPhone; CPU iPhone OS 14_4 like Mac OS X; en_US)", DEVICE_MODEL: "iPhone10,6" }, WEB: { NAME: "WEB", VERSION: "2.20240111.09.00", API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8", API_VERSION: "v1", STATIC_VISITOR_ID: "6zpwvWUNAco" }, WEB_KIDS: { NAME: "WEB_KIDS", VERSION: "2.20230111.00.00" }, YTMUSIC: { NAME: "WEB_REMIX", VERSION: "1.20211213.00.00" }, ANDROID: { NAME: "ANDROID", VERSION: "18.06.35", SDK_VERSION: "29", USER_AGENT: "com.google.android.youtube/18.06.35 (Linux; U; Android 10; US)" }, YTSTUDIO_ANDROID: { NAME: "ANDROID_CREATOR", VERSION: "22.43.101" }, YTMUSIC_ANDROID: { NAME: "ANDROID_MUSIC", VERSION: "5.34.51" }, TV_EMBEDDED: { NAME: "TVHTML5_SIMPLY_EMBEDDED_PLAYER", VERSION: "2.0" } }); var STREAM_HEADERS = Object.freeze({ "accept": "*/*", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "DNT": "?1" }); var INNERTUBE_HEADERS_BASE = Object.freeze({ "accept": "*/*", "accept-encoding": "gzip, deflate", "content-type": "application/json" }); // dist/src/parser/parser.js var parser_exports = {}; __export(parser_exports, { addRuntimeParser: () => addRuntimeParser, applyMutations: () => applyMutations, getDynamicParsers: () => getDynamicParsers, getParserByName: () => getParserByName, hasParser: () => hasParser, parse: () => parse, parseActions: () => parseActions, parseArray: () => parseArray, parseC: () => parseC, parseFormats: () => parseFormats, parseItem: () => parseItem, parseLC: () => parseLC, parseRR: () => parseRR, parseResponse: () => parseResponse, sanitizeClassName: () => sanitizeClassName, setParserErrorHandler: () => setParserErrorHandler, shouldIgnore: () => shouldIgnore }); // dist/src/parser/nodes.js var nodes_exports = {}; __export(nodes_exports, { AboutChannel: () => AboutChannel_default, AboutChannelView: () => AboutChannelView_default, AccountChannel: () => AccountChannel_default, AccountItemSection: () => AccountItemSection_default, AccountItemSectionHeader: () => AccountItemSectionHeader_default, AccountSectionList: () => AccountSectionList_default, AddBannerToLiveChatCommand: () => AddBannerToLiveChatCommand_default, AddChatItemAction: () => AddChatItemAction_default, AddLiveChatTickerItemAction: () => AddLiveChatTickerItemAction_default, Alert: () => Alert_default, AlertWithButton: () => AlertWithButton_default, AnalyticsMainAppKeyMetrics: () => AnalyticsMainAppKeyMetrics_default, AnalyticsRoot: () => AnalyticsRoot_default, AnalyticsShortsCarouselCard: () => AnalyticsShortsCarouselCard_default, AnalyticsVideo: () => AnalyticsVideo_default, AnalyticsVodCarouselCard: () => AnalyticsVodCarouselCard_default, AnchoredSection: () => AnchoredSection_default, AppendContinuationItemsAction: () => AppendContinuationItemsAction_default, AttributionView: () => AttributionView_default, AudioOnlyPlayability: () => AudioOnlyPlayability_default, AuthorCommentBadge: () => AuthorCommentBadge_default, AutomixPreviewVideo: () => AutomixPreviewVideo_default, AvatarView: () => AvatarView_default, BackstageImage: () => BackstageImage_default, BackstagePost: () => BackstagePost_default, BackstagePostThread: () => BackstagePostThread_default, BrowseFeedActions: () => BrowseFeedActions_default, BrowserMediaSession: () => BrowserMediaSession_default, Button: () => Button_default, ButtonView: () => ButtonView_default, C4TabbedHeader: () => C4TabbedHeader_default, CallToActionButton: () => CallToActionButton_default, Card: () => Card_default, CardCollection: () => CardCollection_default, CarouselHeader: () => CarouselHeader_default, CarouselItem: () => CarouselItem_default, CarouselLockup: () => CarouselLockup_default, Channel: () => Channel_default, ChannelAboutFullMetadata: () => ChannelAboutFullMetadata_default, ChannelAgeGate: () => ChannelAgeGate_default, ChannelExternalLinkView: () => ChannelExternalLinkView_default, ChannelFeaturedContent: () => ChannelFeaturedContent_default, ChannelHeaderLinks: () => ChannelHeaderLinks_default, ChannelHeaderLinksView: () => ChannelHeaderLinksView_default, ChannelMetadata: () => ChannelMetadata_default, ChannelMobileHeader: () => ChannelMobileHeader_default, ChannelOptions: () => ChannelOptions_default, ChannelOwnerEmptyState: () => ChannelOwnerEmptyState_default, ChannelSubMenu: () => ChannelSubMenu_default, ChannelTagline: () => ChannelTagline_default, ChannelThumbnailWithLink: () => ChannelThumbnailWithLink_default, ChannelVideoPlayer: () => ChannelVideoPlayer_default, Chapter: () => Chapter_default, ChildVideo: () => ChildVideo_default, ChipCloud: () => ChipCloud_default, ChipCloudChip: () => ChipCloudChip_default, ClipAdState: () => ClipAdState_default, ClipCreation: () => ClipCreation_default, ClipCreationScrubber: () => ClipCreationScrubber_default, ClipCreationTextInput: () => ClipCreationTextInput_default, ClipSection: () => ClipSection_default, CollaboratorInfoCardContent: () => CollaboratorInfoCardContent_default, CollageHeroImage: () => CollageHeroImage_default, Command: () => Command_default, Comment: () => Comment_default, CommentActionButtons: () => CommentActionButtons_default, CommentDialog: () => CommentDialog_default, CommentReplies: () => CommentReplies_default, CommentReplyDialog: () => CommentReplyDialog_default, CommentSimplebox: () => CommentSimplebox_default, CommentThread: () => CommentThread_default, CommentsEntryPointHeader: () => CommentsEntryPointHeader_default, CommentsEntryPointTeaser: () => CommentsEntryPointTeaser_default, CommentsHeader: () => CommentsHeader_default, CommentsSimplebox: () => CommentsSimplebox_default, CompactChannel: () => CompactChannel_default, CompactLink: () => CompactLink_default, CompactMix: () => CompactMix_default, CompactMovie: () => CompactMovie_default, CompactPlaylist: () => CompactPlaylist_default, CompactStation: () => CompactStation_default, CompactVideo: () => CompactVideo_default, ConfirmDialog: () => ConfirmDialog_default, ContentMetadataView: () => ContentMetadataView_default, ContentPreviewImageView: () => ContentPreviewImageView_default, ContinuationItem: () => ContinuationItem_default, ConversationBar: () => ConversationBar_default, CopyLink: () => CopyLink_default, CreatePlaylistDialog: () => CreatePlaylistDialog_default, CreatorHeart: () => CreatorHeart_default, CtaGoToCreatorStudio: () => CtaGoToCreatorStudio_default, DataModelSection: () => DataModelSection_default, DecoratedAvatarView: () => DecoratedAvatarView_default, DecoratedPlayerBar: () => DecoratedPlayerBar_default, DefaultPromoPanel: () => DefaultPromoPanel_default, DescriptionPreviewView: () => DescriptionPreviewView_default, DidYouMean: () => DidYouMean_default, DimChatItemAction: () => DimChatItemAction_default, DislikeButtonView: () => DislikeButtonView_default, DownloadButton: () => DownloadButton_default, Dropdown: () => Dropdown_default, DropdownItem: () => DropdownItem_default, DynamicTextView: () => DynamicTextView_default, Element: () => Element_default, EmergencyOnebox: () => EmergencyOnebox_default, EmojiPicker: () => EmojiPicker_default, EmojiPickerCategory: () => EmojiPickerCategory_default, EmojiPickerCategoryButton: () => EmojiPickerCategoryButton_default, EmojiPickerUpsellCategory: () => EmojiPickerUpsellCategory_default, EndScreenPlaylist: () => EndScreenPlaylist_default, EndScreenVideo: () => EndScreenVideo_default, Endscreen: () => Endscreen_default, EndscreenElement: () => EndscreenElement_default, EngagementPanelSectionList: () => EngagementPanelSectionList_default, EngagementPanelTitleHeader: () => EngagementPanelTitleHeader_default, ExpandableMetadata: () => ExpandableMetadata_default, ExpandableTab: () => ExpandableTab_default, ExpandableVideoDescriptionBody: () => ExpandableVideoDescriptionBody_default, ExpandedShelfContents: () => ExpandedShelfContents_default, Factoid: () => Factoid_default, FancyDismissibleDialog: () => FancyDismissibleDialog_default, FeedFilterChipBar: () => FeedFilterChipBar_default, FeedNudge: () => FeedNudge_default, FeedTabbedHeader: () => FeedTabbedHeader_default, FlexibleActionsView: () => FlexibleActionsView_default, GameCard: () => GameCard_default, GameDetails: () => GameDetails_default, Grid: () => Grid_default, GridChannel: () => GridChannel_default, GridHeader: () => GridHeader_default, GridMix: () => GridMix_default, GridMovie: () => GridMovie_default, GridPlaylist: () => GridPlaylist_default, GridShow: () => GridShow_default, GridVideo: () => GridVideo_default, GuideCollapsibleEntry: () => GuideCollapsibleEntry_default, GuideCollapsibleSectionEntry: () => GuideCollapsibleSectionEntry_default, GuideDownloadsEntry: () => GuideDownloadsEntry_default, GuideEntry: () => GuideEntry_default, GuideSection: () => GuideSection_default, GuideSubscriptionsSection: () => GuideSubscriptionsSection_default, HashtagHeader: () => HashtagHeader_default, HashtagTile: () => HashtagTile_default, HeatMarker: () => HeatMarker_default, Heatmap: () => Heatmap_default, HeroPlaylistThumbnail: () => HeroPlaylistThumbnail_default, HighlightsCarousel: () => HighlightsCarousel_default, HistorySuggestion: () => HistorySuggestion_default, HorizontalCardList: () => HorizontalCardList_default, HorizontalList: () => HorizontalList_default, HorizontalMovieList: () => HorizontalMovieList_default, IconLink: () => IconLink_default, ImageBannerView: () => ImageBannerView_default, IncludingResultsFor: () => IncludingResultsFor_default, InfoPanelContainer: () => InfoPanelContainer_default, InfoPanelContent: () => InfoPanelContent_default, InfoRow: () => InfoRow_default, InteractiveTabbedHeader: () => InteractiveTabbedHeader_default, ItemSection: () => ItemSection_default, ItemSectionHeader: () => ItemSectionHeader_default, ItemSectionTab: () => ItemSectionTab_default, ItemSectionTabbedHeader: () => ItemSectionTabbedHeader_default, KidsBlocklistPicker: () => KidsBlocklistPicker_default, KidsBlocklistPickerItem: () => KidsBlocklistPickerItem_default, KidsCategoriesHeader: () => KidsCategoriesHeader_default, KidsCategoryTab: () => KidsCategoryTab_default, KidsHomeScreen: () => KidsHomeScreen_default, LikeButton: () => LikeButton_default, LikeButtonView: () => LikeButtonView_default, LiveChat: () => LiveChat_default, LiveChatActionPanel: () => LiveChatActionPanel_default, LiveChatAuthorBadge: () => LiveChatAuthorBadge_default, LiveChatAutoModMessage: () => LiveChatAutoModMessage_default, LiveChatBanner: () => LiveChatBanner_default, LiveChatBannerHeader: () => LiveChatBannerHeader_default, LiveChatBannerPoll: () => LiveChatBannerPoll_default, LiveChatDialog: () => LiveChatDialog_default, LiveChatHeader: () => LiveChatHeader_default, LiveChatItemList: () => LiveChatItemList_default, LiveChatMembershipItem: () => LiveChatMembershipItem_default, LiveChatMessageInput: () => LiveChatMessageInput_default, LiveChatPaidMessage: () => LiveChatPaidMessage_default, LiveChatPaidSticker: () => LiveChatPaidSticker_default, LiveChatParticipant: () => LiveChatParticipant_default, LiveChatParticipantsList: () => LiveChatParticipantsList_default, LiveChatPlaceholderItem: () => LiveChatPlaceholderItem_default, LiveChatProductItem: () => LiveChatProductItem_default, LiveChatRestrictedParticipation: () => LiveChatRestrictedParticipation_default, LiveChatTextMessage: () => LiveChatTextMessage_default, LiveChatTickerPaidMessageItem: () => LiveChatTickerPaidMessageItem_default, LiveChatTickerPaidStickerItem: () => LiveChatTickerPaidStickerItem_default, LiveChatTickerSponsorItem: () => LiveChatTickerSponsorItem_default, LiveChatViewerEngagementMessage: () => LiveChatViewerEngagementMessage_default, MacroMarkersInfoItem: () => MacroMarkersInfoItem_default, MacroMarkersList: () => MacroMarkersList_default, MacroMarkersListItem: () => MacroMarkersListItem_default, MarkChatItemAsDeletedAction: () => MarkChatItemAsDeletedAction_default, MarkChatItemsByAuthorAsDeletedAction: () => MarkChatItemsByAuthorAsDeletedAction_default, Menu: () => Menu_default, MenuNavigationItem: () => MenuNavigationItem_default, MenuPopup: () => MenuPopup_default, MenuServiceItem: () => MenuServiceItem_default, MenuServiceItemDownload: () => MenuServiceItemDownload_default, MerchandiseItem: () => MerchandiseItem_default, MerchandiseShelf: () => MerchandiseShelf_default, Message: () => Message_default, MetadataBadge: () => MetadataBadge_default, MetadataRow: () => MetadataRow_default, MetadataRowContainer: () => MetadataRowContainer_default, MetadataRowHeader: () => MetadataRowHeader_default, MetadataScreen: () => MetadataScreen_default, MicroformatData: () => MicroformatData_default, Mix: () => Mix_default, ModalWithTitleAndButton: () => ModalWithTitleAndButton_default, Movie: () => Movie_default, MovingThumbnail: () => MovingThumbnail_default, MultiMarkersPlayerBar: () => MultiMarkersPlayerBar_default, MultiPageMenu: () => MultiPageMenu_default, MultiPageMenuNotificationSection: () => MultiPageMenuNotificationSection_default, MusicCardShelf: () => MusicCardShelf_default, MusicCardShelfHeaderBasic: () => MusicCardShelfHeaderBasic_default, MusicCarouselShelf: () => MusicCarouselShelf_default, MusicCarouselShelfBasicHeader: () => MusicCarouselShelfBasicHeader_default, MusicDescriptionShelf: () => MusicDescriptionShelf_default, MusicDetailHeader: () => MusicDetailHeader_default, MusicDownloadStateBadge: () => MusicDownloadStateBadge_default, MusicEditablePlaylistDetailHeader: () => MusicEditablePlaylistDetailHeader_default, MusicElementHeader: () => MusicElementHeader_default, MusicHeader: () => MusicHeader_default, MusicImmersiveHeader: () => MusicImmersiveHeader_default, MusicInlineBadge: () => MusicInlineBadge_default, MusicItemThumbnailOverlay: () => MusicItemThumbnailOverlay_default, MusicLargeCardItemCarousel: () => MusicLargeCardItemCarousel_default, MusicMenuItemDivider: () => MusicMenuItemDivider_default, MusicMultiRowListItem: () => MusicMultiRowListItem_default, MusicMultiSelectMenu: () => MusicMultiSelectMenu_default, MusicMultiSelectMenuItem: () => MusicMultiSelectMenuItem_default, MusicNavigationButton: () => MusicNavigationButton_default, MusicPlayButton: () => MusicPlayButton_default, MusicPlaylistShelf: () => MusicPlaylistShelf_default, MusicQueue: () => MusicQueue_default, MusicResponsiveListItem: () => MusicResponsiveListItem_default, MusicResponsiveListItemFixedColumn: () => MusicResponsiveListItemFixedColumn_default, MusicResponsiveListItemFlexColumn: () => MusicResponsiveListItemFlexColumn_default, MusicShelf: () => MusicShelf_default, MusicSideAlignedItem: () => MusicSideAlignedItem_default, MusicSortFilterButton: () => MusicSortFilterButton_default, MusicTastebuilderShelf: () => MusicTastebuilderShelf_default, MusicTastebuilderShelfThumbnail: () => MusicTastebuilderShelfThumbnail_default, MusicThumbnail: () => MusicThumbnail_default, MusicTwoRowItem: () => MusicTwoRowItem_default, MusicVisualHeader: () => MusicVisualHeader_default, NavigationEndpoint: () => NavigationEndpoint_default, Notification: () => Notification_default, OpenPopupAction: () => OpenPopupAction_default, PageHeader: () => PageHeader_default, PageHeaderView: () => PageHeaderView_default, PageIntroduction: () => PageIntroduction_default, PdgCommentChip: () => PdgCommentChip_default, PivotButton: () => PivotButton_default, PlayerAnnotationsExpanded: () => PlayerAnnotationsExpanded_default, PlayerCaptionsTracklist: () => PlayerCaptionsTracklist_default, PlayerControlsOverlay: () => PlayerControlsOverlay_default, PlayerErrorMessage: () => PlayerErrorMessage_default, PlayerLegacyDesktopYpcOffer: () => PlayerLegacyDesktopYpcOffer_default, PlayerLegacyDesktopYpcTrailer: () => PlayerLegacyDesktopYpcTrailer_default, PlayerLiveStoryboardSpec: () => PlayerLiveStoryboardSpec_default, PlayerMicroformat: () => PlayerMicroformat_default, PlayerOverflow: () => PlayerOverflow_default, PlayerOverlay: () => PlayerOverlay_default, PlayerOverlayAutoplay: () => PlayerOverlayAutoplay_default, PlayerStoryboardSpec: () => PlayerStoryboardSpec_default, Playlist: () => Playlist_default, PlaylistCustomThumbnail: () => PlaylistCustomThumbnail_default, PlaylistHeader: () => PlaylistHeader_default, PlaylistInfoCardContent: () => PlaylistInfoCardContent_default, PlaylistMetadata: () => PlaylistMetadata_default, PlaylistPanel: () => PlaylistPanel_default, PlaylistPanelVideo: () => PlaylistPanelVideo_default, PlaylistPanelVideoWrapper: () => PlaylistPanelVideoWrapper_default, PlaylistSidebar: () => PlaylistSidebar_default, PlaylistSidebarPrimaryInfo: () => PlaylistSidebarPrimaryInfo_default, PlaylistSidebarSecondaryInfo: () => PlaylistSidebarSecondaryInfo_default, PlaylistVideo: () => PlaylistVideo_default, PlaylistVideoList: () => PlaylistVideoList_default, PlaylistVideoThumbnail: () => PlaylistVideoThumbnail_default, Poll: () => Poll_default, PollHeader: () => PollHeader_default, Post: () => Post_default, PostMultiImage: () => PostMultiImage_default, ProductList: () => ProductList_default, ProductListHeader: () => ProductListHeader_default, ProductListItem: () => ProductListItem_default, ProfileColumn: () => ProfileColumn_default, ProfileColumnStats: () => ProfileColumnStats_default, ProfileColumnStatsEntry: () => ProfileColumnStatsEntry_default, ProfileColumnUserInfo: () => ProfileColumnUserInfo_default, Quiz: () => Quiz_default, RecognitionShelf: () => RecognitionShelf_default, ReelItem: () => ReelItem_default, ReelPlayerHeader: () => ReelPlayerHeader_default, ReelPlayerOverlay: () => ReelPlayerOverlay_default, ReelShelf: () => ReelShelf_default, RelatedChipCloud: () => RelatedChipCloud_default, RemoveBannerForLiveChatCommand: () => RemoveBannerForLiveChatCommand_default, RemoveChatItemAction: () => RemoveChatItemAction_default, RemoveChatItemByAuthorAction: () => RemoveChatItemByAuthorAction_default, ReplaceChatItemAction: () => ReplaceChatItemAction_default, ReplayChatItemAction: () => ReplayChatItemAction_default, RichGrid: () => RichGrid_default, RichItem: () => RichItem_default, RichListHeader: () => RichListHeader_default, RichMetadata: () => RichMetadata_default, RichMetadataRow: () => RichMetadataRow_default, RichSection: () => RichSection_default, RichShelf: () => RichShelf_default, SearchBox: () => SearchBox_default, SearchFilter: () => SearchFilter_default, SearchFilterGroup: () => SearchFilterGroup_default, SearchFilterOptionsDialog: () => SearchFilterOptionsDialog_default, SearchHeader: () => SearchHeader_default, SearchRefinementCard: () => SearchRefinementCard_default, SearchSubMenu: () => SearchSubMenu_default, SearchSuggestion: () => SearchSuggestion_default, SearchSuggestionsSection: () => SearchSuggestionsSection_default, SecondarySearchContainer: () => SecondarySearchContainer_default, SectionList: () => SectionList_default, SegmentedLikeDislikeButton: () => SegmentedLikeDislikeButton_default, SegmentedLikeDislikeButtonView: () => SegmentedLikeDislikeButtonView_default, SettingBoolean: () => SettingBoolean_default, SettingsCheckbox: () => SettingsCheckbox_default, SettingsOptions: () => SettingsOptions_default, SettingsSidebar: () => SettingsSidebar_default, SettingsSwitch: () => SettingsSwitch_default, SharedPost: () => SharedPost_default, Shelf: () => Shelf_default, ShowCustomThumbnail: () => ShowCustomThumbnail_default, ShowLiveChatActionPanelAction: () => ShowLiveChatActionPanelAction_default, ShowLiveChatDialogAction: () => ShowLiveChatDialogAction_default, ShowLiveChatTooltipCommand: () => ShowLiveChatTooltipCommand_default, ShowingResultsFor: () => ShowingResultsFor_default, SimpleCardContent: () => SimpleCardContent_default, SimpleCardTeaser: () => SimpleCardTeaser_default, SimpleMenuHeader: () => SimpleMenuHeader_default, SimpleTextSection: () => SimpleTextSection_default, SingleActionEmergencySupport: () => SingleActionEmergencySupport_default, SingleColumnBrowseResults: () => SingleColumnBrowseResults_default, SingleColumnMusicWatchNextResults: () => SingleColumnMusicWatchNextResults_default, SingleHeroImage: () => SingleHeroImage_default, SlimOwner: () => SlimOwner_default, SlimVideoMetadata: () => SlimVideoMetadata_default, SortFilterHeader: () => SortFilterHeader_default, SortFilterSubMenu: () => SortFilterSubMenu_default, SponsorCommentBadge: () => SponsorCommentBadge_default, StatRow: () => StatRow_default, StructuredDescriptionContent: () => StructuredDescriptionContent_default, StructuredDescriptionPlaylistLockup: () => StructuredDescriptionPlaylistLockup_default, SubFeedOption: () => SubFeedOption_default, SubFeedSelector: () => SubFeedSelector_default, SubscribeButton: () => SubscribeButton_default, SubscriptionNotificationToggleButton: () => SubscriptionNotificationToggleButton_default, Tab: () => Tab_default, Tabbed: () => Tabbed_default, TabbedSearchResults: () => TabbedSearchResults_default, TextHeader: () => TextHeader_default, ThumbnailLandscapePortrait: () => ThumbnailLandscapePortrait_default, ThumbnailOverlayBottomPanel: () => ThumbnailOverlayBottomPanel_default, ThumbnailOverlayEndorsement: () => ThumbnailOverlayEndorsement_default, ThumbnailOverlayHoverText: () => ThumbnailOverlayHoverText_default, ThumbnailOverlayInlineUnplayable: () => ThumbnailOverlayInlineUnplayable_default, ThumbnailOverlayLoadingPreview: () => ThumbnailOverlayLoadingPreview_default, ThumbnailOverlayNowPlaying: () => ThumbnailOverlayNowPlaying_default, ThumbnailOverlayPinking: () => ThumbnailOverlayPinking_default, ThumbnailOverlayPlaybackStatus: () => ThumbnailOverlayPlaybackStatus_default, ThumbnailOverlayResumePlayback: () => ThumbnailOverlayResumePlayback_default, ThumbnailOverlaySidePanel: () => ThumbnailOverlaySidePanel_default, ThumbnailOverlayTimeStatus: () => ThumbnailOverlayTimeStatus_default, ThumbnailOverlayToggleButton: () => ThumbnailOverlayToggleButton_default, TimedMarkerDecoration: () => TimedMarkerDecoration_default, TitleAndButtonListHeader: () => TitleAndButtonListHeader_default, ToggleButton: () => ToggleButton_default, ToggleButtonView: () => ToggleButtonView_default, ToggleMenuServiceItem: () => ToggleMenuServiceItem_default, Tooltip: () => Tooltip_default, TopicChannelDetails: () => TopicChannelDetails_default, Transcript: () => Transcript_default, TranscriptFooter: () => TranscriptFooter_default, TranscriptSearchBox: () => TranscriptSearchBox_default, TranscriptSearchPanel: () => TranscriptSearchPanel_default, TranscriptSectionHeader: () => TranscriptSectionHeader_default, TranscriptSegment: () => TranscriptSegment_default, TranscriptSegmentList: () => TranscriptSegmentList_default, TwoColumnBrowseResults: () => TwoColumnBrowseResults_default, TwoColumnSearchResults: () => TwoColumnSearchResults_default, TwoColumnWatchNextResults: () => TwoColumnWatchNextResults_default, UniversalWatchCard: () => UniversalWatchCard_default, UpdateDateTextAction: () => UpdateDateTextAction_default, UpdateDescriptionAction: () => UpdateDescriptionAction_default, UpdateEngagementPanelAction: () => UpdateEngagementPanelAction_default, UpdateLiveChatPollAction: () => UpdateLiveChatPollAction_default, UpdateTitleAction: () => UpdateTitleAction_default, UpdateToggleButtonTextAction: () => UpdateToggleButtonTextAction_default, UpdateViewershipAction: () => UpdateViewershipAction_default, UploadTimeFactoid: () => UploadTimeFactoid_default, UpsellDialog: () => UpsellDialog_default, VerticalList: () => VerticalList_default, VerticalWatchCardList: () => VerticalWatchCardList_default, Video: () => Video_default, VideoAttributeView: () => VideoAttributeView_default, VideoCard: () => VideoCard_default, VideoDescriptionCourseSection: () => VideoDescriptionCourseSection_default, VideoDescriptionHeader: () => VideoDescriptionHeader_default, VideoDescriptionInfocardsSection: () => VideoDescriptionInfocardsSection_default, VideoDescriptionMusicSection: () => VideoDescriptionMusicSection_default, VideoDescriptionTranscriptSection: () => VideoDescriptionTranscriptSection_default, VideoInfoCardContent: () => VideoInfoCardContent_default, VideoOwner: () => VideoOwner_default, VideoPrimaryInfo: () => VideoPrimaryInfo_default, VideoSecondaryInfo: () => VideoSecondaryInfo_default, ViewCountFactoid: () => ViewCountFactoid_default, WatchCardCompactVideo: () => WatchCardCompactVideo_default, WatchCardHeroVideo: () => WatchCardHeroVideo_default, WatchCardRichHeader: () => WatchCardRichHeader_default, WatchCardSectionSequence: () => WatchCardSectionSequence_default, WatchNextEndScreen: () => WatchNextEndScreen_default, WatchNextTabbedResults: () => WatchNextTabbedResults_default, YpcTrailer: () => YpcTrailer_default }); // dist/src/parser/classes/Button.js var Button = class extends YTNode { constructor(data2) { super(); if (Reflect.has(data2, "text")) this.text = new Text(data2.text).toString(); if (Reflect.has(data2, "accessibility") && Reflect.has(data2.accessibility, "label")) this.label = data2.accessibility.label; if (Reflect.has(data2, "tooltip")) this.tooltip = data2.tooltip; if (Reflect.has(data2, "icon") && Reflect.has(data2.icon, "iconType")) this.icon_type = data2.icon.iconType; if (Reflect.has(data2, "isDisabled")) this.is_disabled = data2.isDisabled; this.endpoint = new NavigationEndpoint_default(data2.navigationEndpoint || data2.serviceEndpoint || data2.command); } }; __name(Button, "Button"); Button.type = "Button"; var Button_default = Button; // dist/src/parser/classes/DropdownItem.js var DropdownItem = class extends YTNode { constructor(data2) { var _a4; super(); this.label = new Text(data2.label).toString(); this.selected = !!data2.isSelected; if (Reflect.has(data2, "int32Value")) { this.value = data2.int32Value; } else if (data2.stringValue) { this.value = data2.stringValue; } if (Reflect.has(data2, "onSelectCommand")) { this.endpoint = new NavigationEndpoint_default(data2.onSelectCommand); } if (Reflect.has(data2, "icon")) { this.icon_type = (_a4 = data2.icon) === null || _a4 === void 0 ? void 0 : _a4.iconType; } if (Reflect.has(data2, "descriptionText")) { this.description = new Text(data2.descriptionText); } } }; __name(DropdownItem, "DropdownItem"); DropdownItem.type = "DropdownItem"; var DropdownItem_default = DropdownItem; // dist/src/parser/classes/Dropdown.js var Dropdown = class extends YTNode { constructor(data2) { super(); this.label = data2.label || ""; this.entries = parser_exports.parseArray(data2.entries, DropdownItem_default); } }; __name(Dropdown, "Dropdown"); Dropdown.type = "Dropdown"; var Dropdown_default = Dropdown; // dist/src/parser/classes/CreatePlaylistDialog.js var CreatePlaylistDialog = class extends YTNode { constructor(data2) { super(); this.title = new Text(data2.dialogTitle).toString(); this.title_placeholder = data2.titlePlaceholder || ""; this.privacy_option = parser_exports.parseItem(data2.privacyOption, Dropdown_default); this.create_button = parser_exports.parseItem(data2.cancelButton, Button_default); this.cancel_button = parser_exports.parseItem(data2.cancelButton, Button_default); } }; __name(CreatePlaylistDialog, "CreatePlaylistDialog"); CreatePlaylistDialog.type = "CreatePlaylistDialog"; var CreatePlaylistDialog_default = CreatePlaylistDialog; // dist/src/parser/classes/actions/OpenPopupAction.js var OpenPopupAction = class extends YTNode { constructor(data2) { super(); this.popup = parser_exports.parseItem(data2.popup); this.popup_type = data2.popupType; } }; __name(OpenPopupAction, "OpenPopupAction"); OpenPopupAction.type = "OpenPopupAction"; var OpenPopupAction_default = OpenPopupAction; // dist/src/parser/classes/NavigationEndpoint.js var NavigationEndpoint = class extends YTNode { constructor(data2) { var _a4, _b, _c, _d, _e, _f, _g, _h; super(); if (Reflect.has(data2 || {}, "innertubeCommand")) data2 = data2.innertubeCommand; if (Reflect.has(data2 || {}, "openPopupAction")) this.open_popup = new OpenPopupAction_default(data2.openPopupAction); const name = Object.keys(data2 || {}).find((item) => item.endsWith("Endpoint") || item.endsWith("Command")); this.payload = name ? Reflect.get(data2, name) : {}; if (Reflect.has(this.payload, "dialog") || Reflect.has(this.payload, "content")) { this.dialog = parser_exports.parseItem(this.payload.dialog || this.payload.content); } if (Reflect.has(this.payload, "modal")) { this.modal = parser_exports.parseItem(this.payload.modal); } if (Reflect.has(this.payload, "nextEndpoint")) { this.next_endpoint = new NavigationEndpoint(this.payload.nextEndpoint); } if (data2 === null || data2 === void 0 ? void 0 : data2.serviceEndpoint) {