@heavstaltech/api 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -240,6 +240,35 @@ const bufferJP = await tools.tts("Konnichiwa", "ja");
240
240
  fs.writeFileSync("voice.mp3", buffer);
241
241
  ```
242
242
 
243
+
244
+ ### 5. Image Makers (Ephoto360 - Temporarily Unavailable)
245
+
246
+ Generate high-quality text effects like Glitch, Neon, and Gold.
247
+
248
+ **Supported Styles:** `glitchtext`, `writetext`, `advancedglow`, `typographytext`, `pixelglitch`, `neonglitch`, `flagtext`, `flag3dtext`, `deletingtext`, `blackpinkstyle`, `glowingtext`, `underwatertext`, `logomaker`, `cartoonstyle`, `papercutstyle`, `watercolortext`, `effectclouds`, `blackpinklogo`, `gradienttext`, `summerbeach`, `luxurygold`, `multicoloredneon`, `sandsummer`, `galaxywallpaper`, `1917style`, `makingneon`, `royaltext`, `freecreate`, `galaxystyle`, `lighteffects`
249
+
250
+ ```javascript
251
+ import { tools } from '@heavstaltech/api';
252
+
253
+ const imageUrl = await tools.ephoto("glitchtext", "Heavstal Tech");
254
+ console.log(imageUrl);
255
+ // Output: https://en.ephoto360.com/....jpg
256
+ ```
257
+
258
+
259
+ #### Lyrics Search
260
+ Fetch song lyrics and metadata. Uses a robust multi-source engine (LRCLIB + Genius).
261
+
262
+ ```javascript
263
+ import { search } from '@heavstaltech/api';
264
+
265
+ const song = await search.lyrics("Kendrick Lamar DNA");
266
+
267
+ console.log(`Title: ${song.title}`);
268
+ console.log(`Artist: ${song.artist}`);
269
+ console.log(`Lyrics:\n${song.lyrics}`);
270
+ ```
271
+
243
272
  ---
244
273
 
245
274
  ## 📝 License
package/dist/index.d.mts CHANGED
@@ -73,6 +73,15 @@ interface TwitterResult {
73
73
  video_hd?: string;
74
74
  audio?: string;
75
75
  }
76
+ interface LyricsResult {
77
+ author: Author;
78
+ status: boolean;
79
+ title: string;
80
+ artist: string;
81
+ image: string;
82
+ url: string;
83
+ lyrics: string;
84
+ }
76
85
 
77
86
  /**
78
87
  * Main TikTok Function
@@ -126,6 +135,8 @@ declare const morse: (input: string, mode?: "encode" | "decode") => Promise<stri
126
135
  declare const tts: (text: string, lang?: string) => Promise<Buffer>;
127
136
  declare const chords: (query: string) => Promise<any>;
128
137
 
138
+ declare const lyrics: (query: string) => Promise<LyricsResult>;
139
+
129
140
  declare const downloader: {
130
141
  tiktok: (input: string) => Promise<TikTokResult>;
131
142
  tiktokSlide: (url: string) => Promise<TikTokResult>;
@@ -141,6 +152,7 @@ declare const search: {
141
152
  youtube: (query: string) => Promise<YouTubeSearchResult[]>;
142
153
  wattpad: (query: string) => Promise<any[]>;
143
154
  chords: (query: string) => Promise<any>;
155
+ lyrics: (query: string) => Promise<LyricsResult>;
144
156
  };
145
157
  declare const tools: {
146
158
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
@@ -169,6 +181,7 @@ declare const _default: {
169
181
  youtube: (query: string) => Promise<YouTubeSearchResult[]>;
170
182
  wattpad: (query: string) => Promise<any[]>;
171
183
  chords: (query: string) => Promise<any>;
184
+ lyrics: (query: string) => Promise<LyricsResult>;
172
185
  };
173
186
  tools: {
174
187
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
@@ -183,4 +196,4 @@ declare const _default: {
183
196
  };
184
197
  };
185
198
 
186
- export { AUTHOR, type Author, type SocialResult, type TikTokResult, type TwitterResult, type UtilsResult, type YouTubeResult, type YouTubeSearchResult, chords, _default as default, downloader, fbdl, igdl, morse, play, remini, search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, wattpad, twitter as xdl, search$1 as ytSearch, ytmp3, ytmp4 };
199
+ export { AUTHOR, type Author, type LyricsResult, type SocialResult, type TikTokResult, type TwitterResult, type UtilsResult, type YouTubeResult, type YouTubeSearchResult, chords, _default as default, downloader, fbdl, igdl, lyrics, morse, play, remini, search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, wattpad, twitter as xdl, search$1 as ytSearch, ytmp3, ytmp4 };
package/dist/index.d.ts CHANGED
@@ -73,6 +73,15 @@ interface TwitterResult {
73
73
  video_hd?: string;
74
74
  audio?: string;
75
75
  }
76
+ interface LyricsResult {
77
+ author: Author;
78
+ status: boolean;
79
+ title: string;
80
+ artist: string;
81
+ image: string;
82
+ url: string;
83
+ lyrics: string;
84
+ }
76
85
 
77
86
  /**
78
87
  * Main TikTok Function
@@ -126,6 +135,8 @@ declare const morse: (input: string, mode?: "encode" | "decode") => Promise<stri
126
135
  declare const tts: (text: string, lang?: string) => Promise<Buffer>;
127
136
  declare const chords: (query: string) => Promise<any>;
128
137
 
138
+ declare const lyrics: (query: string) => Promise<LyricsResult>;
139
+
129
140
  declare const downloader: {
130
141
  tiktok: (input: string) => Promise<TikTokResult>;
131
142
  tiktokSlide: (url: string) => Promise<TikTokResult>;
@@ -141,6 +152,7 @@ declare const search: {
141
152
  youtube: (query: string) => Promise<YouTubeSearchResult[]>;
142
153
  wattpad: (query: string) => Promise<any[]>;
143
154
  chords: (query: string) => Promise<any>;
155
+ lyrics: (query: string) => Promise<LyricsResult>;
144
156
  };
145
157
  declare const tools: {
146
158
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
@@ -169,6 +181,7 @@ declare const _default: {
169
181
  youtube: (query: string) => Promise<YouTubeSearchResult[]>;
170
182
  wattpad: (query: string) => Promise<any[]>;
171
183
  chords: (query: string) => Promise<any>;
184
+ lyrics: (query: string) => Promise<LyricsResult>;
172
185
  };
173
186
  tools: {
174
187
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
@@ -183,4 +196,4 @@ declare const _default: {
183
196
  };
184
197
  };
185
198
 
186
- export { AUTHOR, type Author, type SocialResult, type TikTokResult, type TwitterResult, type UtilsResult, type YouTubeResult, type YouTubeSearchResult, chords, _default as default, downloader, fbdl, igdl, morse, play, remini, search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, wattpad, twitter as xdl, search$1 as ytSearch, ytmp3, ytmp4 };
199
+ export { AUTHOR, type Author, type LyricsResult, type SocialResult, type TikTokResult, type TwitterResult, type UtilsResult, type YouTubeResult, type YouTubeSearchResult, chords, _default as default, downloader, fbdl, igdl, lyrics, morse, play, remini, search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, wattpad, twitter as xdl, search$1 as ytSearch, ytmp3, ytmp4 };
package/dist/index.js CHANGED
@@ -728,6 +728,62 @@ var chords = async (query) => {
728
728
  throw new Error(`Chords Failed: ${error.message}`);
729
729
  }
730
730
  };
731
+ var USER_AGENTS4 = [
732
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
733
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
734
+ ];
735
+ var getRandomHeaders4 = () => ({
736
+ "User-Agent": USER_AGENTS4[Math.floor(Math.random() * USER_AGENTS4.length)]
737
+ });
738
+ var fetchLrcLib = async (query) => {
739
+ const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;
740
+ const { data } = await axios4__default.default.get(searchUrl, { headers: getRandomHeaders4() });
741
+ if (!Array.isArray(data) || data.length === 0) {
742
+ throw new Error("No lyrics found on LRCLIB.");
743
+ }
744
+ const track = data.find((t) => t.plainLyrics) || data[0];
745
+ if (!track.plainLyrics && !track.syncedLyrics) {
746
+ throw new Error("Track found but no lyrics content.");
747
+ }
748
+ return {
749
+ author: AUTHOR,
750
+ status: true,
751
+ title: track.trackName,
752
+ artist: track.artistName,
753
+ image: track.albumArt || "https://ibb.co/fVyg0TN6",
754
+ url: `https://lrclib.net/api/get/${track.id}`,
755
+ lyrics: track.plainLyrics || track.syncedLyrics
756
+ };
757
+ };
758
+ var fetchGenius = async (query) => {
759
+ const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;
760
+ const { data } = await axios4__default.default.get(searchUrl, {
761
+ headers: { ...getRandomHeaders4(), "Referer": "https://genius.com/" }
762
+ });
763
+ const hit = data.response?.sections?.find((s) => s.type === "song")?.hits?.[0]?.result;
764
+ if (!hit) throw new Error("No songs found on Genius.");
765
+ return {
766
+ author: AUTHOR,
767
+ status: true,
768
+ title: hit.title,
769
+ artist: hit.artist_names,
770
+ image: hit.song_art_image_thumbnail_url,
771
+ url: hit.url,
772
+ lyrics: `[Lyrics available at source]
773
+ ${hit.url}`
774
+ };
775
+ };
776
+ var lyrics = async (query) => {
777
+ try {
778
+ return await fetchLrcLib(query);
779
+ } catch (lrcError) {
780
+ try {
781
+ return await fetchGenius(query);
782
+ } catch (geniusError) {
783
+ throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);
784
+ }
785
+ }
786
+ };
731
787
 
732
788
  // src/index.ts
733
789
  var downloader = {
@@ -744,7 +800,8 @@ var downloader = {
744
800
  var search2 = {
745
801
  youtube: search,
746
802
  wattpad,
747
- chords
803
+ chords,
804
+ lyrics
748
805
  };
749
806
  var tools = {
750
807
  ssweb,
@@ -752,6 +809,7 @@ var tools = {
752
809
  styleText,
753
810
  morse,
754
811
  tts
812
+ // ephoto
755
813
  };
756
814
  var index_default = {
757
815
  downloader,
@@ -765,6 +823,7 @@ exports.default = index_default;
765
823
  exports.downloader = downloader;
766
824
  exports.fbdl = fbdl;
767
825
  exports.igdl = igdl;
826
+ exports.lyrics = lyrics;
768
827
  exports.morse = morse;
769
828
  exports.play = play;
770
829
  exports.remini = remini;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","yts","ytdl","https","FormData","cheerio4","search"],"mappings":"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","file":"index.js","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n\nexport * from './types';\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl,\n twitter,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb,\n tts,\n remini, \n styleText, \n wattpad, \n chords,\n morse\n};\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords\n};\nexport const tools = {\n ssweb,\n remini,\n styleText,\n morse,\n tts\n};\nexport default {\n downloader,\n search,\n tools\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/search/lyrics.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","yts","ytdl","https","FormData","cheerio4","search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,MAAA,GAAiB;AAAA,EAC5B,IAAA,EAAM,eAAA;AAAA,EACN,MAAA,EAAQ;AACV;;;ACJA,IAAM,WAAA,GAAc;AAAA,EAClB,iHAAA;AAAA,EACA,uHAAA;AAAA,EACA,iHAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,mBAAmB,OAAO;AAAA,EAC9B,YAAA,EAAc,YAAY,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,WAAA,CAAY,MAAM,CAAC,CAAA;AAAA,EACxE,cAAA,EAAgB,kDAAA;AAAA,EAChB,QAAA,EAAU;AACZ,CAAA,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,GAAA,KAAgB,GAAA,GAAM,IAAI,OAAA,CAAQ,iBAAA,EAAmB,KAAK,CAAA,CAAE,OAAA,CAAQ,eAAA,EAAiB,EAAE,CAAA,CAAE,MAAK,GAAI,EAAA;AACrH,IAAM,QAAA,GAAW,CAAC,GAAA,KAAgB,GAAA,GAAM,IAAI,OAAA,CAAQ,QAAA,EAAU,OAAO,CAAA,GAAI,EAAA;AAEzE,IAAM,eAAA,GAAkB,OAAO,GAAA,KAAuC;AACpE,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMA,uBAAA,CAAM,IAAA;AAAA,MAAK,qCAAA;AAAA,MAChC,IAAI,eAAA,CAAgB,EAAE,KAAA,EAAO,KAAK,CAAA;AAAA,MAClC,EAAE,OAAA,EAAS,gBAAA,EAAiB;AAAE,KAChC;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAE1D,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAAA,MAC1B,KAAA,EAAO,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,MAC1B,YAAA,EAAc,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,CAAA,IAAK,CAAC,CAAA,CAAE,CAAC,GAAG,CAAC,CAAA;AAAA;AAAA,MAClE,SAAA,EAAW,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,CAAA,EAAG,QAAA,CAAS,WAAW,CAAC,GAAG,CAAC,CAAA;AAAA,MAC9E,KAAA,EAAO,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,CAAA,EAAG,QAAA,CAAS,OAAO,CAAC,GAAG,CAAC,CAAA;AAAA,MACtE,WAAA,EAAa,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA;AAAA,MAClC,KAAA,EAAO;AAAA,KACT;AAAA,EAEF,SAAS,KAAA,EAAY;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EACrD;AACF,CAAA;AAMO,IAAM,MAAA,GAAS,OAAO,KAAA,KAAyC;AACpE,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AACxC,MAAA,IAAI,IAAA;AAEJ,MAAA,IAAI;AACF,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,MAAA,GAAS,CAAA,+BAAA,EAAkC,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AAC1E,UAAA,MAAM,QAAA,GAAW,MAAMA,uBAAA,CAAM,GAAA,CAAI,QAAQ,EAAE,OAAA,EAAS,gBAAA,EAAiB,EAAG,CAAA;AACxE,UAAA,IAAI,SAAS,IAAA,CAAK,IAAA,KAAS,GAAG,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAC5E,UAAA,IAAA,GAAO,SAAS,IAAA,CAAK,IAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,MAAM,MAAA,GAAS,CAAA,qCAAA,CAAA;AACf,UAAA,MAAM,QAAA,GAAW,MAAMA,uBAAA,CAAM,IAAA;AAAA,YAAK,MAAA;AAAA,YAChC,IAAI,eAAA,CAAgB;AAAA,cAClB,QAAA,EAAU,KAAA;AAAA,cACV,KAAA,EAAO,GAAA;AAAA,cACP,MAAA,EAAQ,GAAA;AAAA,cACR,EAAA,EAAI;AAAA,aACL,CAAA;AAAA,YACD,EAAE,SAAS,EAAE,GAAG,kBAAiB,EAAG,QAAA,EAAU,uBAAsB;AAAE,WACxE;AAEA,UAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,MAAA,IAAU,SAAS,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AACzE,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAK,CAAA,CAAE,CAAA;AAAA,UAClD;AACA,UAAA,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAAA,QACpC;AAEA,QAAA,MAAM,MAAA,GAAuB;AAAA,UAC3B,MAAA,EAAQ,MAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB,cAAc,IAAA,CAAK,IAAA;AAAA,UACnB,WAAW,IAAA,CAAK,MAAA;AAAA,UAChB,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,OAAO,IAAA,CAAK,UAAA;AAAA,UACZ,OAAO,IAAA,CAAK,UAAA;AAAA,UACZ,UAAU,IAAA,CAAK,aAAA;AAAA,UACf,QAAQ,IAAA,CAAK,WAAA;AAAA,UACb,WAAW,IAAA,CAAK;AAAA,SAClB;AACA,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MAEhB,SAAS,YAAA,EAAc;AACrB,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,OAAA,CAAQ,KAAK,qDAAqD,CAAA;AAClE,UAAA,MAAM,YAAA,GAAe,MAAM,eAAA,CAAgB,KAAK,CAAA;AAChD,UAAA,OAAA,CAAQ,YAAY,CAAA;AAAA,QACtB,CAAA,MAAO;AACL,UAAA,MAAM,YAAA;AAAA,QACR;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AAKO,IAAM,WAAA,GAAc,OAAO,GAAA,KAAuC;AACvE,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,MAAMA,uBAAA,CAAM,IAAA,CAAK,yBAAA,EAA2B;AAAA,MAC3D,EAAA,EAAI,GAAA;AAAA,MACJ,IAAA,EAAM,kCAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,MAAA,EAAQ,IAAA;AAAA,MACR,qBAAA,EAAuB,yCAAA;AAAA,MACvB,UAAA,EAAY;AAAA,KACd,EAAG;AAAA,MACD,SAAS,gBAAA;AAAiB,KAC3B,CAAA;AAED,IAAA,MAAM,CAAA,GAAYC,mBAAA,CAAA,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AACpC,IAAA,MAAM,QAAA,GAAW,EAAE,yDAAyD,CAAA;AAC5E,IAAA,IAAI,SAAS,MAAA,KAAW,CAAA,EAAG,MAAM,IAAI,MAAM,wCAAwC,CAAA;AACnF,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,+CAA+C,CAAA;AAC9E,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,IAAA;AAAA,MACR,UAAU,QAAA,CAAS,IAAA,CAAK,iBAAiB,CAAA,CAAE,KAAK,OAAO,CAAA;AAAA,MACvD,OAAO,QAAA,CAAS,IAAA,CAAK,kDAAkD,CAAA,CAAE,IAAA,GAAO,IAAA,EAAK;AAAA,MACrF,YAAA,EAAc,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA,CAAE,KAAA,EAAM,CAAE,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAAA,MAC/D,UAAA,EAAY,SAAS,IAAA,CAAK,GAAG,EAAE,KAAA,EAAM,CAAE,KAAK,MAAM,CAAA;AAAA,MAClD,QAAA,EAAU,QAAA,CAAS,IAAA,CAAK,iBAAiB,CAAA,CAAE,IAAA,EAAK,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AAAA,MAC3E,KAAA,EAAO,QAAA,CAAS,EAAA,CAAG,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAAA,MAC/C,QAAA,EAAU,QAAA,CAAS,EAAA,CAAG,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAAA,MAClD,MAAA,EAAQ,QAAA,CAAS,EAAA,CAAG,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAAA,MAChD,SAAA,EAAW,QAAA,CAAS,EAAA,CAAG,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAAA,MACnD,KAAA,EAAO,QAAA,CAAS,EAAA,CAAG,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA;AAAK,KACjD;AAAA,EACF,SAAS,KAAA,EAAY;AAClB,IAAA,OAAO;AAAA,MACJ,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,KAAA;AAAA,MACR,KAAA,EAAO,OAAA;AAAA,MACP,OAAO,KAAA,CAAM;AAAA,KAChB;AAAA,EACH;AACF;AC1JA,IAAMC,YAAAA,GAAc;AAAA,EAClB,iHAAA;AAAA,EACA,uHAAA;AAAA,EACA,iHAAA;AAAA,EACA;AACF,CAAA;AACA,IAAMC,oBAAmB,OAAO;AAAA,EAC9B,YAAA,EAAcD,aAAY,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAIA,YAAAA,CAAY,MAAM,CAAC,CAAA;AAAA,EACxE,QAAA,EAAU,uFAAA;AAAA,EACV,iBAAA,EAAmB,gBAAA;AAAA,EACnB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,YAAA,EAAc;AAChB,CAAA,CAAA;AAMO,IAAM,IAAA,GAAO,OAAO,GAAA,KAAyC;AAClE,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMF,uBAAAA,CAAM,IAAA;AAAA,QAAK,6BAAA;AAAA,QAChC,IAAI,eAAA,CAAgB;AAAA,UAClB,EAAA,EAAI,GAAA;AAAA,UACJ,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,QACD;AAAA,UACE,OAAA,EAAS;AAAA,YACP,GAAGG,iBAAAA,EAAiB;AAAA,YACpB,cAAA,EAAgB,kDAAA;AAAA,YAChB,QAAA,EAAU;AAAA;AAAA;AACZ;AACF,OACF;AAEA,MAAA,MAAM,CAAA,GAAYC,yBAAK,IAAI,CAAA;AAC3B,MAAA,MAAM,UAA0B,EAAC;AACjC,MAAA,MAAM,KAAA,GAAQ,EAAE,uBAAuB,CAAA,CAAE,GAAG,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAC3D,MAAA,MAAM,YAAY,CAAA,CAAE,iCAAiC,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,IAAK,EAAA;AACtE,MAAA,CAAA,CAAE,gBAAgB,CAAA,CAAE,IAAA,CAAK,CAAC,GAAG,EAAA,KAAO;AAClC,QAAA,MAAM,IAAA,GAAO,CAAA,CAAE,EAAE,CAAA,CAAE,KAAK,MAAM,CAAA;AAC9B,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,YACX,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,IAAA;AAAA,YACR,IAAA,EAAM,OAAA;AAAA,YACN,OAAO,KAAA,IAAS,gBAAA;AAAA,YAChB,SAAA;AAAA,YACA,GAAA,EAAK;AAAA,WACN,CAAA;AAAA,QACH;AAAA,MACF,CAAC,CAAA;AAED,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,QAAA,MAAM,UAAA,GAAa,CAAA,CAAE,GAAG,CAAA,CAAE,KAAK,MAAM,CAAA;AACrC,QAAA,IAAG,UAAA,IAAc,UAAA,CAAW,UAAA,CAAW,MAAM,CAAA,EAAG;AAC7C,UAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,YACZ,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,IAAA;AAAA,YACR,IAAA,EAAM,OAAA;AAAA,YACN,KAAA;AAAA,YACA,SAAA;AAAA,YACA,GAAA,EAAK;AAAA,WACL,CAAA;AAAA,QACJ,CAAA,MAAO;AACF,UAAA,MAAA,CAAO,IAAI,KAAA,CAAM,kDAAkD,CAAC,CAAA;AACpE,UAAA;AAAA,QACL;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,IAEjB,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AAMO,IAAM,IAAA,GAAO,OAAO,GAAA,KAAyC;AAClE,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,eAAA,GAAkB,MAAMJ,uBAAAA,CAAM,GAAA,CAAI,oBAAA,EAAsB;AAAA,QAC5D,SAASG,iBAAAA;AAAiB,OAC3B,CAAA;AAED,MAAA,MAAM,EAAA,GAAaC,mBAAA,CAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,CAAA;AAC5C,MAAA,MAAM,OAAA,GAAU,EAAA,CAAG,qBAAqB,CAAA,CAAE,GAAA,EAAI;AAC9C,MAAA,MAAM,MAAA,GAAS,EAAA,CAAG,oBAAoB,CAAA,CAAE,GAAA,EAAI;AAC5C,MAAA,MAAM,MAAA,GAAS,EAAA,CAAG,oBAAoB,CAAA,CAAE,GAAA,EAAI;AAC5C,MAAA,MAAM,UAAU,eAAA,CAAgB,OAAA,CAAQ,YAAY,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,IAAK,EAAA;AAEpE,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAC9D,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMJ,uBAAAA,CAAM,IAAA;AAAA,QAC3B,4BAAA;AAAA,QACA,IAAI,eAAA,CAAgB;AAAA,UAClB,IAAA,EAAM,GAAA;AAAA,UACN,OAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,QACD;AAAA,UACE,OAAA,EAAS;AAAA,YACP,GAAGG,iBAAAA,EAAiB;AAAA,YACpB,cAAA,EAAgB,mCAAA;AAAA,YAChB,QAAA,EAAU,OAAA;AAAA,YACV,QAAA,EAAU,mBAAA;AAAA,YACV,SAAA,EAAW;AAAA;AACb;AACF,OACF;AAEA,MAAA,MAAM,CAAA,GAAYC,yBAAK,IAAI,CAAA;AAC3B,MAAA,MAAM,SAAyB,EAAC;AAChC,MAAA,CAAA,CAAE,OAAO,CAAA,CAAE,IAAA,CAAK,WAAY;AAC1B,QAAA,MAAM,EAAA,GAAK,EAAE,IAAI,CAAA;AACjB,QAAA,MAAM,MAAM,EAAA,CAAG,IAAA,CAAK,QAAQ,CAAA,CAAE,KAAK,KAAK,CAAA;AACxC,QAAA,MAAM,MAAA,GAAS,EAAA,CAAG,IAAA,CAAK,QAAQ,CAAA;AAC/B,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,MAAA,CAAO,IAAA,CAAK;AAAA,YACV,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,IAAA;AAAA,YACR,IAAA,EAAM,OAAA;AAAA,YACN,SAAA,EAAW,MAAA;AAAA,YACX,GAAA,EAAK;AAAA,WACN,CAAA;AAAA,QACH;AAAA,MACF,CAAC,CAAA;AAED,MAAA,CAAA,CAAE,eAAe,CAAA,CAAE,IAAA,CAAK,WAAY;AAClC,QAAA,MAAM,EAAA,GAAK,EAAE,IAAI,CAAA;AACjB,QAAA,MAAM,GAAA,GAAM,EAAA,CAAG,IAAA,CAAK,KAAK,CAAA;AACzB,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,MAAA,CAAO,IAAA,CAAK;AAAA,YACV,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,IAAA;AAAA,YACR,IAAA,EAAM,OAAA;AAAA,YACN,SAAA,EAAW,GAAA;AAAA,YACX,GAAA,EAAK;AAAA,WACN,CAAA;AAAA,QACH;AAAA,MACF,CAAC,CAAA;AAED,MAAA,IAAG,MAAA,CAAO,WAAW,CAAA,EAAG;AACrB,QAAA,CAAA,CAAE,cAAc,CAAA,CAAE,IAAA,CAAK,CAAC,GAAG,EAAA,KAAO;AAC9B,UAAA,MAAM,IAAA,GAAO,CAAA,CAAE,EAAE,CAAA,CAAE,KAAK,MAAM,CAAA;AAC9B,UAAA,IAAG,IAAA,IAAQ,SAAS,GAAA,EAAK;AACrB,YAAA,MAAA,CAAO,IAAA,CAAK;AAAA,cACT,MAAA,EAAQ,MAAA;AAAA,cACR,MAAA,EAAQ,IAAA;AAAA,cACR,IAAA,EAAM,OAAA;AAAA,cACN,GAAA,EAAK;AAAA,aACP,CAAA;AAAA,UACL;AAAA,QACJ,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,QAAA,MAAM,WAAW,CAAA,CAAE,eAAe,CAAA,CAAE,IAAA,GAAO,IAAA,EAAK;AAChD,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,QAAA,IAAY,2CAA2C,CAAC,CAAA;AAAA,MAC3E,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MAChB;AAAA,IACF,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AClLA,IAAMF,YAAAA,GAAc;AAAA,EAClB,iHAAA;AAAA,EACA;AACF,CAAA;AACA,IAAMC,oBAAmB,OAAO;AAAA,EAC9B,YAAA,EAAcD,aAAY,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAIA,YAAAA,CAAY,MAAM,CAAC,CAAA;AAAA,EACxE,cAAA,EAAgB,mCAAA;AAAA,EAChB,QAAA,EAAU,oBAAA;AAAA,EACV,SAAA,EAAW;AACb,CAAA,CAAA;AAMO,IAAM,OAAA,GAAU,OAAO,GAAA,KAAwC;AACpE,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAMG,SAAAA,GAAW,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS,aAAa,CAAA;AACnD,MAAA,MAAM,SAAS,IAAI,eAAA,CAAgB,EAAE,GAAA,EAAKA,WAAU,CAAA;AACpD,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAML,uBAAAA,CAAM,IAAA,CAAK,mCAAmC,MAAA,EAAQ;AAAA,QAC3E,SAASG,iBAAAA;AAAiB,OAC3B,CAAA;AACD,MAAA,MAAM,CAAA,GAAYG,yBAAK,IAAI,CAAA;AAC3B,MAAA,MAAM,OAAO,CAAA,CAAE,yCAAyC,CAAA,CAAE,IAAA,GAAO,IAAA,EAAK;AACtE,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,wBAAwB,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAA,MAAM,QAAA,GAAW,CAAA,CAAE,+CAA+C,CAAA,CAAE,KAAK,MAAM,CAAA;AAC/E,MAAA,MAAM,QAAA,GAAW,CAAA,CAAE,uCAAuC,CAAA,CAAE,KAAK,MAAM,CAAA;AACvE,MAAA,IAAI,KAAA,GAAQ,CAAA,CAAE,gIAAgI,CAAA,CAAE,KAAK,MAAM,CAAA;AAC3J,MAAA,IAAI,SAAS,CAAC,KAAA,CAAM,WAAW,MAAM,CAAA,UAAW,qBAAA,GAAwB,KAAA;AACxE,MAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU;AAC1B,QAAA,MAAM,IAAI,MAAM,8DAA8D,CAAA;AAAA,MAChF;AACA,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,IAAA;AAAA,QACR,MAAM,IAAA,IAAQ,iBAAA;AAAA,QACd,WAAW,KAAA,IAAS,EAAA;AAAA,QACpB,QAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AC/CO,IAAM,MAAA,GAAS,OAAO,KAAA,KAAkD;AAC7E,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAMC,oBAAA,CAAI,KAAK,CAAA;AAC9B,MAAA,IAAI,CAAC,MAAA,CAAO,GAAA,IAAO,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA,EAAG;AAC1C,QAAA,OAAO,MAAA,CAAO,IAAI,KAAA,CAAM,8BAA8B,CAAC,CAAA;AAAA,MACzD;AACA,MAAA,MAAM,IAAA,GAA8B,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,CAAC,IAAA,KAAc;AAChE,QAAA,OAAO;AAAA,UACL,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,KAAK,IAAA,CAAK,GAAA;AAAA,UACV,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB,SAAU,IAAA,CAAa,OAAA;AAAA,UACvB,WAAY,IAAA,CAAa,SAAA;AAAA,UACzB,OAAQ,IAAA,CAAa,KAAA;AAAA,UACrB,KAAM,IAAA,CAAa,GAAA;AAAA,UACnB,MAAA,EAAS,KAAa,MAAA,GAAS;AAAA,YAC7B,IAAA,EAAO,KAAa,MAAA,CAAO,IAAA;AAAA,YAC3B,GAAA,EAAM,KAAa,MAAA,CAAO;AAAA,WAC5B,GAAI,KAAA;AAAA,SACN;AAAA,MACF,CAAC,CAAA;AACD,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AAKO,IAAM,KAAA,GAAQ,OAAO,GAAA,KAAwC;AAClE,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,IAAI,CAACC,qBAAA,CAAK,WAAA,CAAY,GAAG,CAAA,EAAG;AAC1B,QAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,MACvC;AACA,MAAA,MAAM,IAAA,GAAO,MAAMA,qBAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACnC,MAAA,MAAM,MAAA,GAASA,qBAAA,CAAK,YAAA,CAAa,IAAA,CAAK,OAAA,EAAS;AAAA,QAC7C,OAAA,EAAS,cAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACT,CAAA;AACD,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACpD,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,MAAA,EAAQ,MAAA;AAAA,QACR,KAAA,EAAO,KAAK,YAAA,CAAa,KAAA;AAAA,QACzB,SAAA,EAAW,KAAK,YAAA,CAAa,UAAA,CAAW,KAAK,YAAA,CAAa,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA,CAAE,GAAA;AAAA;AAAA,QACjF,OAAA,EAAS,KAAK,YAAA,CAAa,gBAAA;AAAA,QAC3B,SAAA,EAAW,KAAK,YAAA,CAAa,WAAA;AAAA,QAC7B,KAAA,EAAO,KAAK,YAAA,CAAa,SAAA;AAAA,QACzB,QAAA,EAAU,KAAK,YAAA,CAAa,aAAA;AAAA,QAC5B,KAAK,MAAA,CAAO;AAAA,OACd;AACA,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AAKO,IAAM,KAAA,GAAQ,OAAO,GAAA,KAAwC;AAClE,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,IAAI,CAACA,qBAAA,CAAK,WAAA,CAAY,GAAG,CAAA,EAAG;AAC1B,QAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,MACvC;AACA,MAAA,MAAM,IAAA,GAAO,MAAMA,qBAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACnC,MAAA,MAAM,MAAA,GAASA,qBAAA,CAAK,YAAA,CAAa,IAAA,CAAK,OAAA,EAAS;AAAA,QAC7C,OAAA,EAAS,SAAA;AAAA,QACT,MAAA,EAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,KAAa,QAAQ,CAAA,CAAE,QAAA,KAAa,IAAA,IAAQ,CAAA,CAAE,SAAA,KAAc;AAAA,OAC9E,CAAA;AACD,MAAA,MAAM,WAAA,GAAc,MAAA,IAAUA,qBAAA,CAAK,YAAA,CAAa,KAAK,OAAA,EAAS;AAAA,QAC5D,OAAA,EAAS,SAAA;AAAA,QACT,QAAQ,CAAC,CAAA,KAAM,EAAE,QAAA,KAAa,IAAA,IAAQ,EAAE,QAAA,KAAa;AAAA,OACtD,CAAA;AACD,MAAA,IAAI,CAAC,WAAA,EAAa,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACzD,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,MAAA,EAAQ,MAAA;AAAA,QACR,KAAA,EAAO,KAAK,YAAA,CAAa,KAAA;AAAA,QACzB,SAAA,EAAW,KAAK,YAAA,CAAa,UAAA,CAAW,KAAK,YAAA,CAAa,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA,CAAE,GAAA;AAAA,QACjF,OAAA,EAAS,KAAK,YAAA,CAAa,gBAAA;AAAA,QAC3B,SAAA,EAAW,KAAK,YAAA,CAAa,WAAA;AAAA,QAC7B,KAAA,EAAO,KAAK,YAAA,CAAa,SAAA;AAAA,QACzB,QAAA,EAAU,KAAK,YAAA,CAAa,aAAA;AAAA,QAC5B,KAAK,WAAA,CAAY;AAAA,OACnB;AACA,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AACH;AAMO,IAAM,IAAA,GAAO,OAAO,KAAA,EAAe,IAAA,GAAsB,KAAA,KAAkC;AAChG,EAAA,IAAI;AACF,IAAA,MAAM,aAAA,GAAgB,MAAMD,oBAAA,CAAI,KAAK,CAAA;AACrC,IAAA,MAAM,MAAA,GAAS,cAAc,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,KAAW,CAAA,CAAE,SAAS,OAAO,CAAA;AACtE,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,KAAK,CAAA,CAAE,CAAA;AAAA,IACxD;AACA,IAAA,MAAM,UAAA,GAAa,OAAO,CAAC,CAAA;AAC3B,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,OAAO,MAAM,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA;AAAA,IACnC,CAAA,MAAO;AACL,MAAA,OAAO,MAAM,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA;AAAA,IACnC;AAAA,EACF,SAAS,KAAA,EAAY;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EACjD;AACF;ACnIA,IAAM,OAAA,GAAU;AAAA,EACd,YAAA,EAAc,iHAAA;AAAA,EACd,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,SAAA,GAAY,IAAIE,sBAAA,CAAM,KAAA,CAAM;AAAA,EAChC,kBAAA,EAAoB,KAAA;AAAA,EACpB,UAAA,EAAY;AACd,CAAC,CAAA;AAED,IAAM,SAAA,GAAoC;AAAA,EACxC,GAAA,EAAK,IAAA;AAAA,EAAM,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,GAAA;AAAA,EAAK,GAAA,EAAK,MAAA;AAAA,EAChE,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,IAAA;AAAA,EAAM,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,MAAA;AAAA,EAClE,GAAA,EAAK,IAAA;AAAA,EAAM,GAAA,EAAK,IAAA;AAAA,EAAM,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,KAAA;AAAA,EACjE,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,GAAA;AAAA,EAAK,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,KAAA;AAAA,EAAO,GAAA,EAAK,MAAA;AAAA,EAChE,GAAA,EAAK,MAAA;AAAA,EAAQ,GAAA,EAAK,MAAA;AAAA,EAClB,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAC7D,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAC7D,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,QAAA;AAAA,EACjE,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,QAAA;AAAA,EAC9D,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,QAAA;AAAA,EAC/D,GAAA,EAAK,QAAA;AAAA,EAAU,GAAA,EAAK,SAAA;AAAA,EAAW,GAAA,EAAK,QAAA;AAAA,EACpC,GAAA,EAAK;AACP,CAAA;AACA,IAAM,gBAAgB,MAAA,CAAO,WAAA;AAAA,EAC3B,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,IAAI,CAAA,KAAM,CAAC,IAAA,EAAM,IAAI,CAAC;AAC9D,CAAA;AAEO,IAAM,KAAA,GAAQ,OAAO,GAAA,EAAa,MAAA,GAAyC,SAAA,KAA+B;AAC/G,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,mCAAA;AAChB,MAAA,MAAM,KAAA,GAAQ,EAAE,GAAA,EAAU,MAAA,EAAgB,YAAY,CAAA,EAAE;AACxD,MAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAI,MAAMT,uBAAAA,CAAM,IAAA;AAAA,QAAK,GAAG,OAAO,CAAA,YAAA,CAAA;AAAA,QACnD,IAAI,gBAAgB,KAAY,CAAA;AAAA,QAAG;AAAA,UACnC,SAAS,EAAE,cAAA,EAAgB,oDAAoD,YAAA,EAAc,OAAA,CAAQ,YAAY,CAAA;AAAE;AACrH,OAAC;AACD,MAAA,IAAI,KAAK,MAAA,KAAW,SAAA,EAAW,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAC7E,MAAA,MAAM,UAAU,OAAA,CAAQ,YAAY,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA,IAAK,EAAA;AACnD,MAAA,MAAM,aAAA,GAAgB,MAAMA,uBAAAA,CAAM,GAAA,CAAI,GAAG,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI;AAAA,QAC/D,SAAS,EAAE,QAAA,EAAU,SAAS,YAAA,EAAc,OAAA,CAAQ,YAAY,CAAA,EAAE;AAAA,QAClE,YAAA,EAAc;AAAA,OACf,CAAA;AACD,MAAA,OAAA,CAAQ,cAAc,IAAI,CAAA;AAAA,IAC5B,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,cAAA,EAAiB,KAAA,CAAM,OAAO,EAAE,CAAC,CAAA;AAAA,IACpD;AAAA,EACF,CAAC,CAAA;AACH;AAEO,IAAM,MAAA,GAAS,OAAO,QAAA,EAAkB,MAAA,GAA2C,SAAA,KAA+B;AACvH,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAAe,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AACpD,MAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,QAAA,CAAS,MAAM,IAAI,MAAA,GAAS,SAAA;AAChE,MAAA,MAAM,SAAA,GAAY,MAAMA,uBAAAA,CAAM,GAAA,CAAI,UAAU,EAAE,YAAA,EAAc,eAAe,CAAA;AAC3E,MAAA,MAAM,IAAA,GAAO,IAAIU,yBAAA,EAAS;AAC1B,MAAA,IAAA,CAAK,MAAA,CAAO,iBAAiB,CAAA,EAAG;AAAA,QAC9B,MAAA,EAAQ,EAAE,2BAAA,EAA6B,QAAA,EAAU,eAAe,oCAAA;AAAqC,OACtG,CAAA;AACD,MAAA,IAAA,CAAK,OAAO,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA,QAChD,QAAA,EAAU,wBAAA;AAAA,QACV,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,MAAM,GAAA,GAAM,mCAAmC,cAAc,CAAA,CAAA;AAC7D,MAAA,MAAM,QAAA,GAAW,MAAMV,uBAAAA,CAAM,IAAA,CAAK,KAAK,IAAA,EAAM;AAAA,QAC3C,OAAA,EAAS;AAAA,UACP,GAAG,KAAK,UAAA,EAAW;AAAA,UACnB,YAAA,EAAc,cAAA;AAAA,UACd,YAAA,EAAc,YAAA;AAAA,UACd,iBAAA,EAAmB;AAAA,SACrB;AAAA,QACA,YAAA,EAAc,aAAA;AAAA,QACd,UAAA,EAAY;AAAA,OACb,CAAA;AACD,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AAAA,IACvB,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,OAAO,EAAE,CAAC,CAAA;AAAA,IACrD;AAAA,EACF,CAAC,CAAA;AACH;AAEO,IAAM,SAAA,GAAY,OAAO,IAAA,KAA8E;AAC5G,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMA,uBAAAA,CAAM,IAAI,CAAA,kCAAA,EAAqC,kBAAA,CAAmB,IAAI,CAAC,CAAA,CAAE,CAAA;AAChG,MAAA,MAAM,CAAA,GAAYW,yBAAK,IAAI,CAAA;AAC3B,MAAA,MAAM,SAA6D,EAAC;AACpE,MAAA,CAAA,CAAE,oBAAoB,CAAA,CAAE,IAAA,CAAK,CAAC,GAAG,EAAA,KAAO;AACtC,QAAA,MAAM,IAAA,GAAO,CAAA,CAAE,EAAE,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,CAAE,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAClD,QAAA,MAAM,MAAA,GAAS,CAAA,CAAE,EAAE,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,CAAE,EAAA,CAAG,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AAClD,QAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,UAAA,MAAA,CAAO,KAAK,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAY,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAC5D;AAAA,MACF,CAAC,CAAA;AACD,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,KAAA,CAAM,OAAO,EAAE,CAAC,CAAA;AAAA,IACxD;AAAA,EACF,CAAC,CAAA;AACH;AAEO,IAAM,OAAA,GAAU,OAAO,KAAA,KAAkC;AAC9D,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMX,wBAAM,GAAA,CAAI,CAAA,+BAAA,EAAkC,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA,EAAI,EAAE,OAAA,EAAS,SAAS,CAAA;AACpH,IAAA,MAAM,CAAA,GAAYW,yBAAK,IAAI,CAAA;AAC3B,IAAA,MAAM,UAAiB,EAAC;AACxB,IAAA,CAAA,CAAE,aAAa,CAAA,CAAE,IAAA,CAAK,CAAC,GAAG,EAAA,KAAO;AAC9B,MAAA,MAAM,KAAA,GAAQ,EAAE,EAAE,CAAA,CAAE,KAAK,cAAc,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AACrD,MAAA,MAAM,KAAA,GAAQ,EAAE,EAAE,CAAA,CAAE,KAAK,YAAY,CAAA,CAAE,KAAK,KAAK,CAAA;AACjD,MAAA,MAAM,IAAA,GAAO,4BAA4B,CAAA,CAAE,EAAE,EAAE,IAAA,CAAK,mBAAmB,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AACpF,MAAA,MAAM,KAAA,GAAQ,EAAE,EAAE,CAAA,CAAE,KAAK,aAAa,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,EAAK;AACpD,MAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAQ,KAAA,EAAO,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,IACxE,CAAC,CAAA;AACD,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACtB,MAAA,CAAA,CAAE,WAAW,CAAA,CAAE,IAAA,CAAK,CAAC,GAAG,EAAA,KAAO;AAC1B,QAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAA,CAAE,EAAE,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,MAC1E,CAAC,CAAA;AAAA,IACL;AACA,IAAA,OAAO,OAAA;AAAA,EACT,SAAS,KAAA,EAAY;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EACpD;AACF;AAMO,IAAM,KAAA,GAAQ,OAAO,KAAA,EAAe,IAAA,GAA4B,QAAA,KAA8B;AACnG,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,MAAM,MAAA,GAAS,KAAA,CACZ,WAAA,EAAY,CACZ,MAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAAA,IAAA,KAAQ,UAAU,IAAI,CAAA,IAAK,IAAI,CAAA,CACnC,KAAK,GAAG,CAAA;AACX,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,GAAS,MACZ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAA,IAAA,KAAQ,aAAA,CAAc,IAAI,CAAA,KAAM,IAAA,KAAS,MAAM,GAAA,GAAM,IAAA,CAAK,EAC9D,IAAA,CAAK,EAAE,EACP,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CAAE,IAAA,EAAK;AAC7B,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH;AAEO,IAAM,GAAA,GAAM,OAAO,IAAA,EAAc,IAAA,GAAe,IAAA,KAA0B;AAC/E,EAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,cAAA,GAAiB,4CAAA;AAGvB,MAAA,IAAI,IAAA,CAAK,SAAS,GAAA,EAAK;AACrB,QAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,MAC7D;AAEA,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMX,uBAAAA,CAAM,IAAI,cAAA,EAAgB;AAAA,QAC/C,MAAA,EAAQ;AAAA,UACN,EAAA,EAAI,OAAA;AAAA,UACJ,CAAA,EAAG,IAAA;AAAA,UACH,EAAA,EAAI,IAAA;AAAA,UACJ,MAAA,EAAQ;AAAA;AAAA,SACV;AAAA,QACA,YAAA,EAAc,aAAA;AAAA;AAAA,QACd,OAAA,EAAS;AAAA,OACV,CAAA;AAED,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,SAAS,KAAA,EAAY;AACnB,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,KAAA,CAAM,OAAO,EAAE,CAAC,CAAA;AAAA,IAClD;AAAA,EACF,CAAC,CAAA;AACH;AAGO,IAAM,MAAA,GAAS,OAAO,KAAA,KAAgC;AAC3D,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,+BAA+B,kBAAA,CAAmB,KAAK,EAAE,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAC,CAAA,CAAA;AAC/F,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMA,uBAAAA,CAAM,IAAI,SAAA,EAAW,EAAE,OAAA,EAAS,OAAA,EAAS,CAAA;AAChE,IAAA,MAAM,CAAA,GAAYW,yBAAK,IAAI,CAAA;AAC3B,IAAA,MAAM,cAAA,GAAiB,EAAE,0BAA0B,CAAA,CAAE,GAAG,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA,CAAE,GAAG,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA,CAAE,GAAG,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA;AACvG,IAAA,IAAI,CAAC,cAAA,EAAgB,MAAM,IAAI,MAAM,iBAAiB,CAAA;AACtD,IAAA,MAAM,QAAA,GAAW,MAAMX,uBAAAA,CAAM,GAAA,CAAI,gBAAgB,EAAE,OAAA,EAAS,SAAS,CAAA;AACrE,IAAA,MAAM,KAAA,GAAgBW,mBAAA,CAAA,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AACxC,IAAA,MAAM,SAAA,GAAY,MAAM,cAAc,CAAA;AACtC,IAAA,MAAM,SAAS,SAAA,CAAU,IAAA,CAAK,yBAAyB,CAAA,CAAE,IAAA,GAAO,IAAA,EAAK;AACrE,IAAA,MAAM,QAAQ,SAAA,CAAU,IAAA,CAAK,UAAU,CAAA,CAAE,IAAA,GAAO,IAAA,EAAK;AACrD,IAAA,MAAM,UAAU,KAAA,CAAM,mBAAmB,CAAA,CAAE,IAAA,GAAO,IAAA,EAAK;AACvD,IAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ,KAAA,EAAO,QAAQ,GAAA,EAAK,cAAA,EAAgB,OAAO,OAAA,EAAQ;AAAA,EAC9E,SAAS,KAAA,EAAY;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EACnD;AACF;ACtMA,IAAMT,YAAAA,GAAc;AAAA,EAClB,iHAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAMC,oBAAmB,OAAO;AAAA,EAC9B,YAAA,EAAcD,aAAY,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAIA,YAAAA,CAAY,MAAM,CAAC;AAC1E,CAAA,CAAA;AAEA,IAAM,WAAA,GAAc,OAAO,KAAA,KAAyC;AAClE,EAAA,MAAM,SAAA,GAAY,CAAA,gCAAA,EAAmC,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMF,uBAAAA,CAAM,GAAA,CAAI,SAAA,EAAW,EAAE,OAAA,EAASG,iBAAAA,EAAiB,EAAG,CAAA;AAC3E,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AAC7C,IAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,CAAC,MAAW,CAAA,CAAE,WAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA;AAC5D,EAAA,IAAI,CAAC,KAAA,CAAM,WAAA,IAAe,CAAC,MAAM,YAAA,EAAc;AAC3C,IAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,EACxD;AACA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,OAAO,KAAA,CAAM,SAAA;AAAA,IACb,QAAQ,KAAA,CAAM,UAAA;AAAA,IACd,KAAA,EAAO,MAAM,QAAA,IAAY,yBAAA;AAAA,IACzB,GAAA,EAAK,CAAA,2BAAA,EAA8B,KAAA,CAAM,EAAE,CAAA,CAAA;AAAA,IAC3C,MAAA,EAAQ,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM;AAAA,GACrC;AACF,CAAA;AAEA,IAAM,WAAA,GAAc,OAAO,KAAA,KAAyC;AAClE,EAAA,MAAM,SAAA,GAAY,CAAA,iDAAA,EAAoD,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AAC/F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAMH,uBAAAA,CAAM,IAAI,SAAA,EAAW;AAAA,IACxC,SAAS,EAAE,GAAGG,iBAAAA,EAAiB,EAAG,WAAW,qBAAA;AAAsB,GACtE,CAAA;AAED,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,QAAA,EAAU,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,IAAA,KAAS,MAAM,CAAA,EAAG,IAAA,GAAO,CAAC,CAAA,EAAG,MAAA;AACrF,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,2BAA2B,CAAA;AACrD,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,QAAQ,GAAA,CAAI,YAAA;AAAA,IACZ,OAAO,GAAA,CAAI,4BAAA;AAAA,IACX,KAAK,GAAA,CAAI,GAAA;AAAA,IACT,MAAA,EAAQ,CAAA;AAAA,EAAiC,IAAI,GAAG,CAAA;AAAA,GAClD;AACF,CAAA;AAEO,IAAM,MAAA,GAAS,OAAO,KAAA,KAAyC;AACpE,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,YAAY,KAAK,CAAA;AAAA,EAChC,SAAS,QAAA,EAAU;AACjB,IAAA,IAAI;AACA,MAAA,OAAO,MAAM,YAAY,KAAK,CAAA;AAAA,IAClC,SAAS,WAAA,EAAkB;AACvB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,QAAQ,CAAA,UAAA,EAAa,WAAA,CAAY,OAAO,CAAA,CAAE,CAAA;AAAA,IAC/F;AAAA,EACF;AACF;;;AC/BO,IAAM,UAAA,GAAa;AAAA,EACxB,MAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA,EAAK,OAAA;AAAA,EACL,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF;AAEO,IAAMS,OAAAA,GAAS;AAAA,EACpB,OAAA,EAAS,MAAA;AAAA,EACT,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AAAA;AAEF;AAEA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA;AAAA,EACA,MAAA,EAAAA,OAAAA;AAAA,EACA;AACF","file":"index.js","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n\nexport interface LyricsResult {\n author: Author;\n status: boolean;\n title: string;\n artist: string;\n image: string;\n url: string;\n lyrics: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport { AUTHOR, LyricsResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n});\n\nconst fetchLrcLib = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { headers: getRandomHeaders() });\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"No lyrics found on LRCLIB.\");\n }\n \n const track = data.find((t: any) => t.plainLyrics) || data[0];\n if (!track.plainLyrics && !track.syncedLyrics) {\n throw new Error(\"Track found but no lyrics content.\");\n }\n return {\n author: AUTHOR,\n status: true,\n title: track.trackName,\n artist: track.artistName,\n image: track.albumArt || \"https://ibb.co/fVyg0TN6\",\n url: `https://lrclib.net/api/get/${track.id}`,\n lyrics: track.plainLyrics || track.syncedLyrics\n };\n};\n\nconst fetchGenius = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { \n headers: { ...getRandomHeaders(), 'Referer': 'https://genius.com/' } \n });\n\n const hit = data.response?.sections?.find((s: any) => s.type === 'song')?.hits?.[0]?.result;\n if (!hit) throw new Error(\"No songs found on Genius.\");\n return {\n author: AUTHOR,\n status: true,\n title: hit.title,\n artist: hit.artist_names,\n image: hit.song_art_image_thumbnail_url,\n url: hit.url,\n lyrics: `[Lyrics available at source]\\n${hit.url}`\n };\n};\n\nexport const lyrics = async (query: string): Promise<LyricsResult> => {\n try {\n return await fetchLrcLib(query);\n } catch (lrcError) {\n try {\n return await fetchGenius(query);\n } catch (geniusError: any) {\n throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);\n }\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n// import { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n twitter,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \n remini, \n styleText, \n wattpad, \n chords,\n morse,\n tts,\n // ephoto,\n lyrics\n};\n\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\n\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords,\n lyrics\n};\n\nexport const tools = {\n ssweb,\n remini,\n styleText,\n morse,\n tts,\n// ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
package/dist/index.mjs CHANGED
@@ -697,6 +697,62 @@ var chords = async (query) => {
697
697
  throw new Error(`Chords Failed: ${error.message}`);
698
698
  }
699
699
  };
700
+ var USER_AGENTS4 = [
701
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
702
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
703
+ ];
704
+ var getRandomHeaders4 = () => ({
705
+ "User-Agent": USER_AGENTS4[Math.floor(Math.random() * USER_AGENTS4.length)]
706
+ });
707
+ var fetchLrcLib = async (query) => {
708
+ const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;
709
+ const { data } = await axios4.get(searchUrl, { headers: getRandomHeaders4() });
710
+ if (!Array.isArray(data) || data.length === 0) {
711
+ throw new Error("No lyrics found on LRCLIB.");
712
+ }
713
+ const track = data.find((t) => t.plainLyrics) || data[0];
714
+ if (!track.plainLyrics && !track.syncedLyrics) {
715
+ throw new Error("Track found but no lyrics content.");
716
+ }
717
+ return {
718
+ author: AUTHOR,
719
+ status: true,
720
+ title: track.trackName,
721
+ artist: track.artistName,
722
+ image: track.albumArt || "https://ibb.co/fVyg0TN6",
723
+ url: `https://lrclib.net/api/get/${track.id}`,
724
+ lyrics: track.plainLyrics || track.syncedLyrics
725
+ };
726
+ };
727
+ var fetchGenius = async (query) => {
728
+ const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;
729
+ const { data } = await axios4.get(searchUrl, {
730
+ headers: { ...getRandomHeaders4(), "Referer": "https://genius.com/" }
731
+ });
732
+ const hit = data.response?.sections?.find((s) => s.type === "song")?.hits?.[0]?.result;
733
+ if (!hit) throw new Error("No songs found on Genius.");
734
+ return {
735
+ author: AUTHOR,
736
+ status: true,
737
+ title: hit.title,
738
+ artist: hit.artist_names,
739
+ image: hit.song_art_image_thumbnail_url,
740
+ url: hit.url,
741
+ lyrics: `[Lyrics available at source]
742
+ ${hit.url}`
743
+ };
744
+ };
745
+ var lyrics = async (query) => {
746
+ try {
747
+ return await fetchLrcLib(query);
748
+ } catch (lrcError) {
749
+ try {
750
+ return await fetchGenius(query);
751
+ } catch (geniusError) {
752
+ throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);
753
+ }
754
+ }
755
+ };
700
756
 
701
757
  // src/index.ts
702
758
  var downloader = {
@@ -713,7 +769,8 @@ var downloader = {
713
769
  var search2 = {
714
770
  youtube: search,
715
771
  wattpad,
716
- chords
772
+ chords,
773
+ lyrics
717
774
  };
718
775
  var tools = {
719
776
  ssweb,
@@ -721,6 +778,7 @@ var tools = {
721
778
  styleText,
722
779
  morse,
723
780
  tts
781
+ // ephoto
724
782
  };
725
783
  var index_default = {
726
784
  downloader,
@@ -728,6 +786,6 @@ var index_default = {
728
786
  tools
729
787
  };
730
788
 
731
- export { AUTHOR, chords, index_default as default, downloader, fbdl, igdl, morse, play, remini, search2 as search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, wattpad, twitter as xdl, search as ytSearch, ytmp3, ytmp4 };
789
+ export { AUTHOR, chords, index_default as default, downloader, fbdl, igdl, lyrics, morse, play, remini, search2 as search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, wattpad, twitter as xdl, search as ytSearch, ytmp3, ytmp4 };
732
790
  //# sourceMappingURL=index.mjs.map
733
791
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","search"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n\nexport * from './types';\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl,\n twitter,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb,\n tts,\n remini, \n styleText, \n wattpad, \n chords,\n morse\n};\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords\n};\nexport const tools = {\n ssweb,\n remini,\n styleText,\n morse,\n tts\n};\nexport default {\n downloader,\n search,\n tools\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/search/lyrics.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","search"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n\nexport interface LyricsResult {\n author: Author;\n status: boolean;\n title: string;\n artist: string;\n image: string;\n url: string;\n lyrics: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport { AUTHOR, LyricsResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n});\n\nconst fetchLrcLib = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { headers: getRandomHeaders() });\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"No lyrics found on LRCLIB.\");\n }\n \n const track = data.find((t: any) => t.plainLyrics) || data[0];\n if (!track.plainLyrics && !track.syncedLyrics) {\n throw new Error(\"Track found but no lyrics content.\");\n }\n return {\n author: AUTHOR,\n status: true,\n title: track.trackName,\n artist: track.artistName,\n image: track.albumArt || \"https://ibb.co/fVyg0TN6\",\n url: `https://lrclib.net/api/get/${track.id}`,\n lyrics: track.plainLyrics || track.syncedLyrics\n };\n};\n\nconst fetchGenius = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { \n headers: { ...getRandomHeaders(), 'Referer': 'https://genius.com/' } \n });\n\n const hit = data.response?.sections?.find((s: any) => s.type === 'song')?.hits?.[0]?.result;\n if (!hit) throw new Error(\"No songs found on Genius.\");\n return {\n author: AUTHOR,\n status: true,\n title: hit.title,\n artist: hit.artist_names,\n image: hit.song_art_image_thumbnail_url,\n url: hit.url,\n lyrics: `[Lyrics available at source]\\n${hit.url}`\n };\n};\n\nexport const lyrics = async (query: string): Promise<LyricsResult> => {\n try {\n return await fetchLrcLib(query);\n } catch (lrcError) {\n try {\n return await fetchGenius(query);\n } catch (geniusError: any) {\n throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);\n }\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n// import { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n twitter,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \n remini, \n styleText, \n wattpad, \n chords,\n morse,\n tts,\n // ephoto,\n lyrics\n};\n\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\n\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords,\n lyrics\n};\n\nexport const tools = {\n ssweb,\n remini,\n styleText,\n morse,\n tts,\n// ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@heavstaltech/api",
3
- "version": "1.0.4",
4
- "description": "A powerful multi-purpose scraper and API client for Social Media, Media processing, and Utilities. Supports ESM and CJS.",
3
+ "version": "1.0.5",
4
+ "description": "A powerful multi-purpose scraper and API client. Supports ESM and CJS. Supports JavaScript & Typescript",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
@@ -25,16 +25,14 @@
25
25
  "type": "git",
26
26
  "url": "https://github.com/HeavstalTech/heavstaltech-api"
27
27
  },
28
- "homepage": "https://github.com/HeavstalTech/heavstaltech-api",
28
+ "homepage": "https://heavstal-tech.vercel.app",
29
29
  "bugs": {
30
30
  "url": "https://github.com/HeavstalTech/heavstaltech-api/issues"
31
31
  },
32
32
  "keywords": [
33
33
  "scraper",
34
34
  "api",
35
- "tiktok-downloader",
36
- "instagram-downloader",
37
- "youtube-downloader",
35
+ "downloader",
38
36
  "heavstal-tech"
39
37
  ],
40
38
  "author": "HEAVSTAL TECH",