@heavstal/api 2.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/dist/index.mjs ADDED
@@ -0,0 +1,334 @@
1
+ // package.json
2
+ var version = "2.0.5";
3
+
4
+ // src/types.ts
5
+ var AUTHOR = {
6
+ name: "HEAVSTAL TECH",
7
+ source: "https://heavstal.com.ng"
8
+ };
9
+
10
+ // src/fetcher.ts
11
+ async function heavstalFetch(endpoint, body, config) {
12
+ const apiKey = config?.apiKey || process.env.HEAVSTAL_API_KEY;
13
+ if (!apiKey) {
14
+ throw new Error("Missing API Key. Please provide it in the function options or set 'HEAVSTAL_API_KEY' in your environment variables. Get your key at: https://heavstal.com.ng/credentials");
15
+ }
16
+ try {
17
+ const response = await fetch(`https://heavstal.com.ng/api/v1/${endpoint}`, {
18
+ method: "POST",
19
+ headers: {
20
+ "Content-Type": "application/json",
21
+ "x-api-key": apiKey
22
+ },
23
+ body: JSON.stringify(body)
24
+ });
25
+ let responseData;
26
+ try {
27
+ responseData = await response.json();
28
+ } catch {
29
+ throw new Error(`Server returned a non-JSON response with status: ${response.status}`);
30
+ }
31
+ if (!response.ok) {
32
+ const serverMsg = responseData?.error || "Unknown Error";
33
+ const serverDetails = responseData?.details || "";
34
+ if (response.status === 429) {
35
+ throw new Error(`Rate Limit Exceeded (${serverMsg}). Upgrade plan at https://heavstal.com.ng/pricing`);
36
+ }
37
+ if (response.status === 401 || response.status === 403) {
38
+ throw new Error(`Auth Failed (${serverMsg}). Check your API Key.`);
39
+ }
40
+ throw new Error(`Heavstal API Error: ${serverMsg} ${serverDetails ? `- ${serverDetails}` : ""}`);
41
+ }
42
+ return responseData.data;
43
+ } catch (error) {
44
+ if (error.message.includes("Heavstal") || error.message.includes("Auth") || error.message.includes("Rate Limit")) {
45
+ throw error;
46
+ }
47
+ throw new Error(`Network Error: Could not reach Heavstal servers. Details: ${error.message}`);
48
+ }
49
+ }
50
+
51
+ // src/dl/tiktok.ts
52
+ var tiktok = async (input, config) => {
53
+ const apiData = await heavstalFetch("tiktok", { url: input, query: input }, config);
54
+ return {
55
+ author: AUTHOR,
56
+ status: true,
57
+ title: apiData.title,
58
+ author_name: apiData.author,
59
+ cover: apiData.cover,
60
+ no_watermark: apiData.video_nowm,
61
+ music: apiData.audio,
62
+ views: apiData.stats?.views,
63
+ likes: apiData.stats?.likes,
64
+ shares: apiData.stats?.shares,
65
+ downloads: apiData.stats?.downloads
66
+ };
67
+ };
68
+ var tiktokSlide = async (url, config) => {
69
+ try {
70
+ const apiData = await heavstalFetch("tiktok-slide", { url }, config);
71
+ return {
72
+ author: AUTHOR,
73
+ status: true,
74
+ uniqueId: apiData.uniqueId,
75
+ title: apiData.title,
76
+ profileImage: apiData.profileImage,
77
+ profileUrl: apiData.profileUrl,
78
+ hashtags: apiData.hashtags,
79
+ likes: apiData.likes,
80
+ comments: apiData.comments,
81
+ shares: apiData.shares,
82
+ downloads: apiData.downloads,
83
+ views: apiData.views,
84
+ slideImages: apiData.images
85
+ };
86
+ } catch (error) {
87
+ if (error.message.includes("Heavstal") || error.message.includes("Auth") || error.message.includes("Rate Limit")) {
88
+ throw error;
89
+ }
90
+ return {
91
+ author: AUTHOR,
92
+ status: false,
93
+ title: "Error",
94
+ views: error.message
95
+ };
96
+ }
97
+ };
98
+
99
+ // src/dl/social.ts
100
+ var fbdl = async (url, config) => {
101
+ const apiData = await heavstalFetch("facebook", { url }, config);
102
+ return apiData.map((item) => ({
103
+ author: AUTHOR,
104
+ status: true,
105
+ type: item.type || "video",
106
+ title: item.title,
107
+ thumbnail: item.thumbnail,
108
+ url: item.url
109
+ }));
110
+ };
111
+ var igdl = async (url, config) => {
112
+ const apiData = await heavstalFetch("instagram", { url }, config);
113
+ return apiData.map((item) => ({
114
+ author: AUTHOR,
115
+ status: true,
116
+ type: item.type,
117
+ // 'video' or 'image'
118
+ thumbnail: item.thumbnail,
119
+ url: item.url
120
+ }));
121
+ };
122
+
123
+ // src/dl/twitter.ts
124
+ var twitter = async (url, config) => {
125
+ const apiData = await heavstalFetch("twitter", { url }, config);
126
+ return {
127
+ author: AUTHOR,
128
+ status: true,
129
+ desc: apiData.description,
130
+ thumbnail: apiData.thumbnail,
131
+ video_hd: apiData.video_hd,
132
+ video_sd: apiData.video_sd,
133
+ audio: apiData.audio
134
+ };
135
+ };
136
+
137
+ // src/dl/youtube.ts
138
+ var search = async (query, config) => {
139
+ const apiData = await heavstalFetch("youtube", { type: "search", query }, config);
140
+ return apiData.map((item) => ({
141
+ type: item.type,
142
+ url: item.url,
143
+ title: item.title,
144
+ description: item.description,
145
+ image: item.image,
146
+ thumbnail: item.thumbnail,
147
+ seconds: item.seconds,
148
+ timestamp: item.timestamp,
149
+ views: item.views,
150
+ ago: item.ago,
151
+ author: item.author
152
+ }));
153
+ };
154
+ var ytmp3 = async (url, config) => {
155
+ const apiData = await heavstalFetch("youtube", { type: "ytmp3", url }, config);
156
+ return {
157
+ author: AUTHOR,
158
+ title: apiData.title,
159
+ thumbnail: apiData.thumbnail,
160
+ channel: apiData.channel,
161
+ published: apiData.published,
162
+ views: apiData.views,
163
+ duration: apiData.duration,
164
+ url: apiData.url,
165
+ status: true
166
+ };
167
+ };
168
+ var ytmp4 = async (url, config) => {
169
+ const apiData = await heavstalFetch("youtube", { type: "ytmp4", url }, config);
170
+ return {
171
+ author: AUTHOR,
172
+ title: apiData.title,
173
+ thumbnail: apiData.thumbnail,
174
+ channel: apiData.channel,
175
+ published: apiData.published,
176
+ views: apiData.views,
177
+ duration: apiData.duration,
178
+ url: apiData.url,
179
+ status: true
180
+ };
181
+ };
182
+ var play = async (query, format = "mp3", config) => {
183
+ const apiData = await heavstalFetch("youtube", { type: "play", query, format }, config);
184
+ return {
185
+ author: AUTHOR,
186
+ title: apiData.title,
187
+ thumbnail: apiData.thumbnail,
188
+ channel: apiData.channel,
189
+ published: apiData.published,
190
+ views: apiData.views,
191
+ duration: apiData.duration,
192
+ url: apiData.url,
193
+ status: true
194
+ };
195
+ };
196
+
197
+ // src/utils/tools.ts
198
+ var ssweb = async (url, device = "desktop", config) => {
199
+ const apiData = await heavstalFetch("screenshot", { url, type: device }, config);
200
+ const imgResponse = await fetch(apiData.link);
201
+ const arrayBuffer = await imgResponse.arrayBuffer();
202
+ return Buffer.from(arrayBuffer);
203
+ };
204
+ var styleText = async (text, config) => {
205
+ const apiData = await heavstalFetch("style-text", { text }, config);
206
+ return apiData.map((item) => ({
207
+ author: AUTHOR,
208
+ name: item.name,
209
+ result: item.result
210
+ }));
211
+ };
212
+ var wattpad = async (query, config) => {
213
+ const apiData = await heavstalFetch("wattpad", { query }, config);
214
+ return apiData.map((item) => ({
215
+ author: AUTHOR,
216
+ ...item
217
+ }));
218
+ };
219
+ var morse = async (input, mode = "encode", config) => {
220
+ const apiData = await heavstalFetch("morse", { text: input, mode }, config);
221
+ return apiData.output;
222
+ };
223
+ var tts = async (text, lang = "en", config) => {
224
+ const apiData = await heavstalFetch("tts", { text, lang }, config);
225
+ const audioResponse = await fetch(apiData.url);
226
+ const arrayBuffer = await audioResponse.arrayBuffer();
227
+ return Buffer.from(arrayBuffer);
228
+ };
229
+ var chords = async (query, config) => {
230
+ const apiData = await heavstalFetch("chords", { query }, config);
231
+ return {
232
+ author: AUTHOR,
233
+ title: apiData.title,
234
+ artist: apiData.artist,
235
+ url: apiData.url,
236
+ chord: apiData.chord
237
+ };
238
+ };
239
+
240
+ // src/utils/maker.ts
241
+ var ephoto = async (style, text, config) => {
242
+ const apiData = await heavstalFetch("ephoto", { style, text }, config);
243
+ return apiData.url;
244
+ };
245
+
246
+ // src/search/lyrics.ts
247
+ var lyrics = async (query, config) => {
248
+ const apiData = await heavstalFetch("lyrics", { query }, config);
249
+ return {
250
+ author: AUTHOR,
251
+ status: true,
252
+ title: apiData.title,
253
+ artist: apiData.artist,
254
+ image: apiData.image || "https://ibb.co/fVyg0TN6",
255
+ url: apiData.url,
256
+ lyrics: apiData.lyrics
257
+ };
258
+ };
259
+
260
+ // src/utils/zipper.ts
261
+ var unzipToText = async (url, options = { includeBinary: false }, config) => {
262
+ const apiData = await heavstalFetch("unzip", { url, includeBinary: options.includeBinary }, config);
263
+ const textResponse = await fetch(apiData.result_file);
264
+ const arrayBuffer = await textResponse.arrayBuffer();
265
+ return {
266
+ author: AUTHOR,
267
+ buffer: Buffer.from(arrayBuffer),
268
+ filename: "extracted_codebase.txt"
269
+ };
270
+ };
271
+
272
+ // src/search/apk.ts
273
+ var apk = async (query, config) => {
274
+ const apiData = await heavstalFetch("apk", { query }, config);
275
+ return {
276
+ author: AUTHOR,
277
+ status: true,
278
+ name: apiData.name,
279
+ package_id: apiData.package,
280
+ version: apiData.version,
281
+ downloads: apiData.downloads,
282
+ size: apiData.size,
283
+ icon: apiData.icon,
284
+ dl_url: apiData.download_link,
285
+ last_updated: apiData.last_updated
286
+ };
287
+ };
288
+
289
+ // src/index.ts
290
+ var majorVersion = parseInt(version.split(".")[0], 10);
291
+ if (majorVersion < 2) {
292
+ console.error(`\x1B[33mnpm WARN deprecated\x1B[0m @heavstaltech/api@${version}`);
293
+ console.error(`\x1B[31m[FATAL ERROR]\x1B[0m This version of @heavstaltech/api is deprecated and no longer supported.`);
294
+ console.error(`Please update to V2.x or higher to continue using this package.`);
295
+ console.error(`Run: \x1B[36mnpm install @heavstaltech/api@latest\x1B[0m
296
+ `);
297
+ process.exit(1);
298
+ }
299
+ var downloader = {
300
+ tiktok,
301
+ tiktokSlide,
302
+ igdl,
303
+ fbdl,
304
+ twitter,
305
+ xdl: twitter,
306
+ ytmp3,
307
+ ytmp4,
308
+ play
309
+ };
310
+ var search2 = {
311
+ youtube: search,
312
+ wattpad,
313
+ chords,
314
+ lyrics,
315
+ apk
316
+ };
317
+ var tools = {
318
+ ssweb,
319
+ unzipToText,
320
+ unzip: unzipToText,
321
+ styleText,
322
+ morse,
323
+ tts,
324
+ ephoto
325
+ };
326
+ var index_default = {
327
+ downloader,
328
+ search: search2,
329
+ tools
330
+ };
331
+
332
+ export { AUTHOR, apk, chords, index_default as default, downloader, ephoto, fbdl, igdl, lyrics, morse, play, search2 as search, ssweb, styleText, tiktok, tiktokSlide, tools, tts, twitter, unzipToText, wattpad, twitter as xdl, search as ytSearch, ytmp3, ytmp4 };
333
+ //# sourceMappingURL=index.mjs.map
334
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../package.json","../src/types.ts","../src/fetcher.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/utils/maker.ts","../src/search/lyrics.ts","../src/utils/zipper.ts","../src/search/apk.ts","../src/index.ts"],"names":["search"],"mappings":"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","file":"index.mjs","sourcesContent":["{\n \"name\": \"@heavstal/api\",\n \"version\": \"2.0.5\",\n \"description\": \"A powerful, zero-dependency multi-purpose sdk client for interacting with Heavstal Tech Api Utilities. Supports ESM and CJS.\",\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\", \n \"require\": \"./dist/index.js\",\n \"import\": \"./dist/index.mjs\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"test\": \"node test/test.js\",\n \"prepublishOnly\": \"npm run build\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/HeavstalTech/heavstal-api\"\n },\n \"homepage\": \"https://docs.heavstal.com.ng/modules/api\",\n \"bugs\": {\n \"url\": \"https://github.com/HeavstalTech/heavstal-api/issues\"\n },\n \"keywords\": [\n \"api\",\n \"sdk\",\n \"heavstal-tech\"\n ],\n \"author\": \"HEAVSTAL TECH\",\n \"license\": \"MIT\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"@types/node\": \"^25.6.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.0.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal.com.ng\"\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\nexport interface ApkResult {\n author: Author;\n status: boolean;\n name: string;\n package_id: string;\n version: string;\n downloads: number;\n size: string; \n icon: string;\n dl_url: string;\n last_updated?: string;\n}\n\nexport interface HeavstalConfig {\n apiKey?: string;\n}\n","import { HeavstalConfig } from './types';\n\nexport async function heavstalFetch(endpoint: string, body: any, config?: HeavstalConfig) {\n const apiKey = config?.apiKey || process.env.HEAVSTAL_API_KEY;\n\n if (!apiKey) {\n throw new Error(\"Missing API Key. Please provide it in the function options or set 'HEAVSTAL_API_KEY' in your environment variables. Get your key at: https://heavstal.com.ng/credentials\");\n }\n\n try {\n const response = await fetch(`https://heavstal.com.ng/api/v1/${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey\n },\n body: JSON.stringify(body)\n });\n \n let responseData;\n try {\n responseData = await response.json();\n } catch {\n throw new Error(`Server returned a non-JSON response with status: ${response.status}`);\n }\n \n if (!response.ok) {\n const serverMsg = responseData?.error || \"Unknown Error\";\n const serverDetails = responseData?.details || \"\";\n \n if (response.status === 429) {\n throw new Error(`Rate Limit Exceeded (${serverMsg}). Upgrade plan at https://heavstal.com.ng/pricing`);\n }\n if (response.status === 401 || response.status === 403) {\n throw new Error(`Auth Failed (${serverMsg}). Check your API Key.`);\n }\n \n throw new Error(`Heavstal API Error: ${serverMsg} ${serverDetails ? `- ${serverDetails}` : ''}`);\n }\n\n // Return just the nested \"data\" object from backend response\n return responseData.data;\n\n } catch (error: any) {\n if (error.message.includes('Heavstal') || error.message.includes('Auth') || error.message.includes('Rate Limit')) {\n throw error;\n }\n throw new Error(`Network Error: Could not reach Heavstal servers. Details: ${error.message}`);\n }\n}\n","import { AUTHOR, TikTokResult, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const tiktok = async (input: string, config?: HeavstalConfig): Promise<TikTokResult> => {\n const apiData = await heavstalFetch('tiktok', { url: input, query: input }, config);\n \n return {\n author: AUTHOR,\n status: true,\n title: apiData.title,\n author_name: apiData.author,\n cover: apiData.cover,\n no_watermark: apiData.video_nowm,\n music: apiData.audio,\n views: apiData.stats?.views,\n likes: apiData.stats?.likes,\n shares: apiData.stats?.shares,\n downloads: apiData.stats?.downloads\n };\n};\n\nexport const tiktokSlide = async (url: string, config?: HeavstalConfig): Promise<TikTokResult> => {\n try {\n const apiData = await heavstalFetch('tiktok-slide', { url }, config);\n\n return {\n author: AUTHOR,\n status: true,\n uniqueId: apiData.uniqueId,\n title: apiData.title,\n profileImage: apiData.profileImage,\n profileUrl: apiData.profileUrl,\n hashtags: apiData.hashtags,\n likes: apiData.likes,\n comments: apiData.comments,\n shares: apiData.shares,\n downloads: apiData.downloads,\n views: apiData.views,\n slideImages: apiData.images \n };\n } catch (error: any) {\n if (error.message.includes('Heavstal') || error.message.includes('Auth') || error.message.includes('Rate Limit')) {\n throw error;\n }\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import { AUTHOR, SocialResult, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const fbdl = async (url: string, config?: HeavstalConfig): Promise<SocialResult[]> => {\n const apiData = await heavstalFetch('facebook', { url }, config);\n \n return apiData.map((item: any) => ({\n author: AUTHOR,\n status: true,\n type: item.type || 'video',\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n};\n\nexport const igdl = async (url: string, config?: HeavstalConfig): Promise<SocialResult[]> => {\n const apiData = await heavstalFetch('instagram', { url }, config);\n\n return apiData.map((item: any) => ({\n author: AUTHOR,\n status: true,\n type: item.type, // 'video' or 'image'\n thumbnail: item.thumbnail,\n url: item.url\n }));\n};\n","import { AUTHOR, TwitterResult, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const twitter = async (url: string, config?: HeavstalConfig): Promise<TwitterResult> => {\n const apiData = await heavstalFetch('twitter', { url }, config);\n \n return {\n author: AUTHOR,\n status: true,\n desc: apiData.description,\n thumbnail: apiData.thumbnail,\n video_hd: apiData.video_hd,\n video_sd: apiData.video_sd,\n audio: apiData.audio\n };\n};\n","import { AUTHOR, YouTubeResult, YouTubeSearchResult, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const search = async (query: string, config?: HeavstalConfig): Promise<YouTubeSearchResult[]> => {\n const apiData = await heavstalFetch('youtube', { type: 'search', query }, config);\n \n return apiData.map((item: any) => ({\n type: item.type,\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: item.seconds,\n timestamp: item.timestamp,\n views: item.views,\n ago: item.ago,\n author: item.author\n }));\n};\n\nexport const ytmp3 = async (url: string, config?: HeavstalConfig): Promise<YouTubeResult> => {\n const apiData = await heavstalFetch('youtube', { type: 'ytmp3', url }, config);\n \n return {\n author: AUTHOR,\n title: apiData.title,\n thumbnail: apiData.thumbnail,\n channel: apiData.channel,\n published: apiData.published,\n views: apiData.views,\n duration: apiData.duration,\n url: apiData.url,\n status: true\n };\n};\n\nexport const ytmp4 = async (url: string, config?: HeavstalConfig): Promise<YouTubeResult> => {\n const apiData = await heavstalFetch('youtube', { type: 'ytmp4', url }, config);\n \n return {\n author: AUTHOR,\n title: apiData.title,\n thumbnail: apiData.thumbnail,\n channel: apiData.channel,\n published: apiData.published,\n views: apiData.views,\n duration: apiData.duration,\n url: apiData.url,\n status: true\n };\n};\n\nexport const play = async (query: string, format: 'mp3' | 'mp4' = 'mp3', config?: HeavstalConfig): Promise<YouTubeResult> => {\n const apiData = await heavstalFetch('youtube', { type: 'play', query, format }, config);\n \n return {\n author: AUTHOR,\n title: apiData.title,\n thumbnail: apiData.thumbnail,\n channel: apiData.channel,\n published: apiData.published,\n views: apiData.views,\n duration: apiData.duration,\n url: apiData.url,\n status: true\n };\n};\n","import { AUTHOR, Author, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop', config?: HeavstalConfig): Promise<Buffer> => {\n const apiData = await heavstalFetch('screenshot', { url, type: device }, config);\n const imgResponse = await fetch(apiData.link);\n const arrayBuffer = await imgResponse.arrayBuffer();\n return Buffer.from(arrayBuffer);\n};\n\n\nexport const styleText = async (text: string, config?: HeavstalConfig): Promise<{ author: Author, name: string, result: string }[]> => {\n const apiData = await heavstalFetch('style-text', { text }, config);\n return apiData.map((item: any) => ({\n author: AUTHOR,\n name: item.name,\n result: item.result\n }));\n};\n\nexport const wattpad = async (query: string, config?: HeavstalConfig): Promise<any[]> => {\n const apiData = await heavstalFetch('wattpad', { query }, config);\n return apiData.map((item: any) => ({\n author: AUTHOR,\n ...item\n }));\n};\n\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode', config?: HeavstalConfig): Promise<string> => {\n const apiData = await heavstalFetch('morse', { text: input, mode }, config);\n return apiData.output;\n};\n\nexport const tts = async (text: string, lang: string = 'en', config?: HeavstalConfig): Promise<Buffer> => {\n const apiData = await heavstalFetch('tts', { text, lang }, config);\n const audioResponse = await fetch(apiData.url);\n const arrayBuffer = await audioResponse.arrayBuffer();\n return Buffer.from(arrayBuffer);\n};\n\nexport const chords = async (query: string, config?: HeavstalConfig): Promise<any> => {\n const apiData = await heavstalFetch('chords', { query }, config);\n return {\n author: AUTHOR,\n title: apiData.title,\n artist: apiData.artist,\n url: apiData.url,\n chord: apiData.chord\n };\n};\n","import { HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const ephoto = async (style: string, text: string, config?: HeavstalConfig): Promise<string> => {\n const apiData = await heavstalFetch('ephoto', { style, text }, config);\n return apiData.url\n}\n","import { AUTHOR, LyricsResult, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const lyrics = async (query: string, config?: HeavstalConfig): Promise<LyricsResult> => {\n const apiData = await heavstalFetch('lyrics', { query }, config);\n \n return {\n author: AUTHOR,\n status: true,\n title: apiData.title,\n artist: apiData.artist,\n image: apiData.image || \"https://ibb.co/fVyg0TN6\",\n url: apiData.url,\n lyrics: apiData.lyrics\n };\n};\n","import { AUTHOR, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport interface UnzipOptions {\n includeBinary?: boolean;\n}\n\nexport const unzipToText = async (url: string, options: UnzipOptions = { includeBinary: false }, config?: HeavstalConfig): Promise<{ author: typeof AUTHOR, buffer: Buffer, filename: string }> => {\n const apiData = await heavstalFetch('unzip', { url, includeBinary: options.includeBinary }, config);\n \n const textResponse = await fetch(apiData.result_file);\n const arrayBuffer = await textResponse.arrayBuffer();\n \n return {\n author: AUTHOR,\n buffer: Buffer.from(arrayBuffer),\n filename: 'extracted_codebase.txt'\n };\n}\n","import { AUTHOR, ApkResult, HeavstalConfig } from '../types';\nimport { heavstalFetch } from '../fetcher';\n\nexport const apk = async (query: string, config?: HeavstalConfig): Promise<ApkResult> => {\n const apiData = await heavstalFetch('apk', { query }, config);\n \n return {\n author: AUTHOR,\n status: true,\n name: apiData.name,\n package_id: apiData.package,\n version: apiData.version,\n downloads: apiData.downloads,\n size: apiData.size,\n icon: apiData.icon,\n dl_url: apiData.download_link,\n last_updated: apiData.last_updated\n };\n};\n","import { version } from '../package.json';\nconst majorVersion = parseInt(version.split('.')[0], 10);\nif (majorVersion < 2) {\n console.error(`\\x1b[33mnpm WARN deprecated\\x1b[0m @heavstaltech/api@${version}`);\n console.error(`\\x1b[31m[FATAL ERROR]\\x1b[0m This version of @heavstaltech/api is deprecated and no longer supported.`);\n console.error(`Please update to V2.x or higher to continue using this package.`);\n console.error(`Run: \\x1b[36mnpm install @heavstaltech/api@latest\\x1b[0m\\n`);\n process.exit(1);\n}\n\n/*\n// Migration Notice for Heavstal Api Sdk\nif (process.env.NODE_ENV !== 'production' || typeof window === 'undefined') {\n console.warn(\n \"\\x1b[33m%s\\x1b[0m\",\n \"\\n[HEAVSTAL TECH] DEPRECATION NOTICE:\",\n \"\\nThe package '@heavstaltech/api' has been moved to '@heavstal/api'.\",\n \"\\nThis version is no longer maintained and will not receive security updates.\",\n \"\\n\\nRun: npm install @heavstal/api\",\n \"\\nVisit: https://www.npmjs.com/package/@heavstal/api\\n\"\n );\n}\n*/\n\nimport { 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, styleText, wattpad, chords, morse, tts } from './utils/tools';\nimport { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\nimport { unzipToText } from './utils/zipper';\nimport { apk } from './search/apk'; \n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n apk,\n twitter,\n unzipToText,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \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 apk\n};\n\nexport const tools = {\n ssweb,\n unzipToText,\n unzip: unzipToText,\n styleText,\n morse,\n tts,\n ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@heavstal/api",
3
+ "version": "2.0.5",
4
+ "description": "A powerful, zero-dependency multi-purpose sdk client for interacting with Heavstal Tech Api Utilities. Supports ESM and CJS.",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "require": "./dist/index.js",
12
+ "import": "./dist/index.mjs"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsup",
20
+ "dev": "tsup --watch",
21
+ "test": "node test/test.js",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/HeavstalTech/heavstal-api"
27
+ },
28
+ "homepage": "https://docs.heavstal.com.ng/modules/api",
29
+ "bugs": {
30
+ "url": "https://github.com/HeavstalTech/heavstal-api/issues"
31
+ },
32
+ "keywords": [
33
+ "api",
34
+ "sdk",
35
+ "heavstal-tech"
36
+ ],
37
+ "author": "HEAVSTAL TECH",
38
+ "license": "MIT",
39
+ "dependencies": {},
40
+ "devDependencies": {
41
+ "@types/node": "^25.6.0",
42
+ "tsup": "^8.0.0",
43
+ "typescript": "^5.0.0"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ }
48
+ }