@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/LICENSE +21 -0
- package/README.md +224 -0
- package/dist/index.d.mts +221 -0
- package/dist/index.d.ts +221 -0
- package/dist/index.js +362 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +334 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +48 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// package.json
|
|
6
|
+
var version = "2.0.5";
|
|
7
|
+
|
|
8
|
+
// src/types.ts
|
|
9
|
+
var AUTHOR = {
|
|
10
|
+
name: "HEAVSTAL TECH",
|
|
11
|
+
source: "https://heavstal.com.ng"
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/fetcher.ts
|
|
15
|
+
async function heavstalFetch(endpoint, body, config) {
|
|
16
|
+
const apiKey = config?.apiKey || process.env.HEAVSTAL_API_KEY;
|
|
17
|
+
if (!apiKey) {
|
|
18
|
+
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");
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const response = await fetch(`https://heavstal.com.ng/api/v1/${endpoint}`, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
headers: {
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
"x-api-key": apiKey
|
|
26
|
+
},
|
|
27
|
+
body: JSON.stringify(body)
|
|
28
|
+
});
|
|
29
|
+
let responseData;
|
|
30
|
+
try {
|
|
31
|
+
responseData = await response.json();
|
|
32
|
+
} catch {
|
|
33
|
+
throw new Error(`Server returned a non-JSON response with status: ${response.status}`);
|
|
34
|
+
}
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
const serverMsg = responseData?.error || "Unknown Error";
|
|
37
|
+
const serverDetails = responseData?.details || "";
|
|
38
|
+
if (response.status === 429) {
|
|
39
|
+
throw new Error(`Rate Limit Exceeded (${serverMsg}). Upgrade plan at https://heavstal.com.ng/pricing`);
|
|
40
|
+
}
|
|
41
|
+
if (response.status === 401 || response.status === 403) {
|
|
42
|
+
throw new Error(`Auth Failed (${serverMsg}). Check your API Key.`);
|
|
43
|
+
}
|
|
44
|
+
throw new Error(`Heavstal API Error: ${serverMsg} ${serverDetails ? `- ${serverDetails}` : ""}`);
|
|
45
|
+
}
|
|
46
|
+
return responseData.data;
|
|
47
|
+
} catch (error) {
|
|
48
|
+
if (error.message.includes("Heavstal") || error.message.includes("Auth") || error.message.includes("Rate Limit")) {
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`Network Error: Could not reach Heavstal servers. Details: ${error.message}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// src/dl/tiktok.ts
|
|
56
|
+
var tiktok = async (input, config) => {
|
|
57
|
+
const apiData = await heavstalFetch("tiktok", { url: input, query: input }, config);
|
|
58
|
+
return {
|
|
59
|
+
author: AUTHOR,
|
|
60
|
+
status: true,
|
|
61
|
+
title: apiData.title,
|
|
62
|
+
author_name: apiData.author,
|
|
63
|
+
cover: apiData.cover,
|
|
64
|
+
no_watermark: apiData.video_nowm,
|
|
65
|
+
music: apiData.audio,
|
|
66
|
+
views: apiData.stats?.views,
|
|
67
|
+
likes: apiData.stats?.likes,
|
|
68
|
+
shares: apiData.stats?.shares,
|
|
69
|
+
downloads: apiData.stats?.downloads
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
var tiktokSlide = async (url, config) => {
|
|
73
|
+
try {
|
|
74
|
+
const apiData = await heavstalFetch("tiktok-slide", { url }, config);
|
|
75
|
+
return {
|
|
76
|
+
author: AUTHOR,
|
|
77
|
+
status: true,
|
|
78
|
+
uniqueId: apiData.uniqueId,
|
|
79
|
+
title: apiData.title,
|
|
80
|
+
profileImage: apiData.profileImage,
|
|
81
|
+
profileUrl: apiData.profileUrl,
|
|
82
|
+
hashtags: apiData.hashtags,
|
|
83
|
+
likes: apiData.likes,
|
|
84
|
+
comments: apiData.comments,
|
|
85
|
+
shares: apiData.shares,
|
|
86
|
+
downloads: apiData.downloads,
|
|
87
|
+
views: apiData.views,
|
|
88
|
+
slideImages: apiData.images
|
|
89
|
+
};
|
|
90
|
+
} catch (error) {
|
|
91
|
+
if (error.message.includes("Heavstal") || error.message.includes("Auth") || error.message.includes("Rate Limit")) {
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
author: AUTHOR,
|
|
96
|
+
status: false,
|
|
97
|
+
title: "Error",
|
|
98
|
+
views: error.message
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// src/dl/social.ts
|
|
104
|
+
var fbdl = async (url, config) => {
|
|
105
|
+
const apiData = await heavstalFetch("facebook", { url }, config);
|
|
106
|
+
return apiData.map((item) => ({
|
|
107
|
+
author: AUTHOR,
|
|
108
|
+
status: true,
|
|
109
|
+
type: item.type || "video",
|
|
110
|
+
title: item.title,
|
|
111
|
+
thumbnail: item.thumbnail,
|
|
112
|
+
url: item.url
|
|
113
|
+
}));
|
|
114
|
+
};
|
|
115
|
+
var igdl = async (url, config) => {
|
|
116
|
+
const apiData = await heavstalFetch("instagram", { url }, config);
|
|
117
|
+
return apiData.map((item) => ({
|
|
118
|
+
author: AUTHOR,
|
|
119
|
+
status: true,
|
|
120
|
+
type: item.type,
|
|
121
|
+
// 'video' or 'image'
|
|
122
|
+
thumbnail: item.thumbnail,
|
|
123
|
+
url: item.url
|
|
124
|
+
}));
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// src/dl/twitter.ts
|
|
128
|
+
var twitter = async (url, config) => {
|
|
129
|
+
const apiData = await heavstalFetch("twitter", { url }, config);
|
|
130
|
+
return {
|
|
131
|
+
author: AUTHOR,
|
|
132
|
+
status: true,
|
|
133
|
+
desc: apiData.description,
|
|
134
|
+
thumbnail: apiData.thumbnail,
|
|
135
|
+
video_hd: apiData.video_hd,
|
|
136
|
+
video_sd: apiData.video_sd,
|
|
137
|
+
audio: apiData.audio
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// src/dl/youtube.ts
|
|
142
|
+
var search = async (query, config) => {
|
|
143
|
+
const apiData = await heavstalFetch("youtube", { type: "search", query }, config);
|
|
144
|
+
return apiData.map((item) => ({
|
|
145
|
+
type: item.type,
|
|
146
|
+
url: item.url,
|
|
147
|
+
title: item.title,
|
|
148
|
+
description: item.description,
|
|
149
|
+
image: item.image,
|
|
150
|
+
thumbnail: item.thumbnail,
|
|
151
|
+
seconds: item.seconds,
|
|
152
|
+
timestamp: item.timestamp,
|
|
153
|
+
views: item.views,
|
|
154
|
+
ago: item.ago,
|
|
155
|
+
author: item.author
|
|
156
|
+
}));
|
|
157
|
+
};
|
|
158
|
+
var ytmp3 = async (url, config) => {
|
|
159
|
+
const apiData = await heavstalFetch("youtube", { type: "ytmp3", url }, config);
|
|
160
|
+
return {
|
|
161
|
+
author: AUTHOR,
|
|
162
|
+
title: apiData.title,
|
|
163
|
+
thumbnail: apiData.thumbnail,
|
|
164
|
+
channel: apiData.channel,
|
|
165
|
+
published: apiData.published,
|
|
166
|
+
views: apiData.views,
|
|
167
|
+
duration: apiData.duration,
|
|
168
|
+
url: apiData.url,
|
|
169
|
+
status: true
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
var ytmp4 = async (url, config) => {
|
|
173
|
+
const apiData = await heavstalFetch("youtube", { type: "ytmp4", url }, config);
|
|
174
|
+
return {
|
|
175
|
+
author: AUTHOR,
|
|
176
|
+
title: apiData.title,
|
|
177
|
+
thumbnail: apiData.thumbnail,
|
|
178
|
+
channel: apiData.channel,
|
|
179
|
+
published: apiData.published,
|
|
180
|
+
views: apiData.views,
|
|
181
|
+
duration: apiData.duration,
|
|
182
|
+
url: apiData.url,
|
|
183
|
+
status: true
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
var play = async (query, format = "mp3", config) => {
|
|
187
|
+
const apiData = await heavstalFetch("youtube", { type: "play", query, format }, config);
|
|
188
|
+
return {
|
|
189
|
+
author: AUTHOR,
|
|
190
|
+
title: apiData.title,
|
|
191
|
+
thumbnail: apiData.thumbnail,
|
|
192
|
+
channel: apiData.channel,
|
|
193
|
+
published: apiData.published,
|
|
194
|
+
views: apiData.views,
|
|
195
|
+
duration: apiData.duration,
|
|
196
|
+
url: apiData.url,
|
|
197
|
+
status: true
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// src/utils/tools.ts
|
|
202
|
+
var ssweb = async (url, device = "desktop", config) => {
|
|
203
|
+
const apiData = await heavstalFetch("screenshot", { url, type: device }, config);
|
|
204
|
+
const imgResponse = await fetch(apiData.link);
|
|
205
|
+
const arrayBuffer = await imgResponse.arrayBuffer();
|
|
206
|
+
return Buffer.from(arrayBuffer);
|
|
207
|
+
};
|
|
208
|
+
var styleText = async (text, config) => {
|
|
209
|
+
const apiData = await heavstalFetch("style-text", { text }, config);
|
|
210
|
+
return apiData.map((item) => ({
|
|
211
|
+
author: AUTHOR,
|
|
212
|
+
name: item.name,
|
|
213
|
+
result: item.result
|
|
214
|
+
}));
|
|
215
|
+
};
|
|
216
|
+
var wattpad = async (query, config) => {
|
|
217
|
+
const apiData = await heavstalFetch("wattpad", { query }, config);
|
|
218
|
+
return apiData.map((item) => ({
|
|
219
|
+
author: AUTHOR,
|
|
220
|
+
...item
|
|
221
|
+
}));
|
|
222
|
+
};
|
|
223
|
+
var morse = async (input, mode = "encode", config) => {
|
|
224
|
+
const apiData = await heavstalFetch("morse", { text: input, mode }, config);
|
|
225
|
+
return apiData.output;
|
|
226
|
+
};
|
|
227
|
+
var tts = async (text, lang = "en", config) => {
|
|
228
|
+
const apiData = await heavstalFetch("tts", { text, lang }, config);
|
|
229
|
+
const audioResponse = await fetch(apiData.url);
|
|
230
|
+
const arrayBuffer = await audioResponse.arrayBuffer();
|
|
231
|
+
return Buffer.from(arrayBuffer);
|
|
232
|
+
};
|
|
233
|
+
var chords = async (query, config) => {
|
|
234
|
+
const apiData = await heavstalFetch("chords", { query }, config);
|
|
235
|
+
return {
|
|
236
|
+
author: AUTHOR,
|
|
237
|
+
title: apiData.title,
|
|
238
|
+
artist: apiData.artist,
|
|
239
|
+
url: apiData.url,
|
|
240
|
+
chord: apiData.chord
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
// src/utils/maker.ts
|
|
245
|
+
var ephoto = async (style, text, config) => {
|
|
246
|
+
const apiData = await heavstalFetch("ephoto", { style, text }, config);
|
|
247
|
+
return apiData.url;
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
// src/search/lyrics.ts
|
|
251
|
+
var lyrics = async (query, config) => {
|
|
252
|
+
const apiData = await heavstalFetch("lyrics", { query }, config);
|
|
253
|
+
return {
|
|
254
|
+
author: AUTHOR,
|
|
255
|
+
status: true,
|
|
256
|
+
title: apiData.title,
|
|
257
|
+
artist: apiData.artist,
|
|
258
|
+
image: apiData.image || "https://ibb.co/fVyg0TN6",
|
|
259
|
+
url: apiData.url,
|
|
260
|
+
lyrics: apiData.lyrics
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
// src/utils/zipper.ts
|
|
265
|
+
var unzipToText = async (url, options = { includeBinary: false }, config) => {
|
|
266
|
+
const apiData = await heavstalFetch("unzip", { url, includeBinary: options.includeBinary }, config);
|
|
267
|
+
const textResponse = await fetch(apiData.result_file);
|
|
268
|
+
const arrayBuffer = await textResponse.arrayBuffer();
|
|
269
|
+
return {
|
|
270
|
+
author: AUTHOR,
|
|
271
|
+
buffer: Buffer.from(arrayBuffer),
|
|
272
|
+
filename: "extracted_codebase.txt"
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
// src/search/apk.ts
|
|
277
|
+
var apk = async (query, config) => {
|
|
278
|
+
const apiData = await heavstalFetch("apk", { query }, config);
|
|
279
|
+
return {
|
|
280
|
+
author: AUTHOR,
|
|
281
|
+
status: true,
|
|
282
|
+
name: apiData.name,
|
|
283
|
+
package_id: apiData.package,
|
|
284
|
+
version: apiData.version,
|
|
285
|
+
downloads: apiData.downloads,
|
|
286
|
+
size: apiData.size,
|
|
287
|
+
icon: apiData.icon,
|
|
288
|
+
dl_url: apiData.download_link,
|
|
289
|
+
last_updated: apiData.last_updated
|
|
290
|
+
};
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
// src/index.ts
|
|
294
|
+
var majorVersion = parseInt(version.split(".")[0], 10);
|
|
295
|
+
if (majorVersion < 2) {
|
|
296
|
+
console.error(`\x1B[33mnpm WARN deprecated\x1B[0m @heavstaltech/api@${version}`);
|
|
297
|
+
console.error(`\x1B[31m[FATAL ERROR]\x1B[0m This version of @heavstaltech/api is deprecated and no longer supported.`);
|
|
298
|
+
console.error(`Please update to V2.x or higher to continue using this package.`);
|
|
299
|
+
console.error(`Run: \x1B[36mnpm install @heavstaltech/api@latest\x1B[0m
|
|
300
|
+
`);
|
|
301
|
+
process.exit(1);
|
|
302
|
+
}
|
|
303
|
+
var downloader = {
|
|
304
|
+
tiktok,
|
|
305
|
+
tiktokSlide,
|
|
306
|
+
igdl,
|
|
307
|
+
fbdl,
|
|
308
|
+
twitter,
|
|
309
|
+
xdl: twitter,
|
|
310
|
+
ytmp3,
|
|
311
|
+
ytmp4,
|
|
312
|
+
play
|
|
313
|
+
};
|
|
314
|
+
var search2 = {
|
|
315
|
+
youtube: search,
|
|
316
|
+
wattpad,
|
|
317
|
+
chords,
|
|
318
|
+
lyrics,
|
|
319
|
+
apk
|
|
320
|
+
};
|
|
321
|
+
var tools = {
|
|
322
|
+
ssweb,
|
|
323
|
+
unzipToText,
|
|
324
|
+
unzip: unzipToText,
|
|
325
|
+
styleText,
|
|
326
|
+
morse,
|
|
327
|
+
tts,
|
|
328
|
+
ephoto
|
|
329
|
+
};
|
|
330
|
+
var index_default = {
|
|
331
|
+
downloader,
|
|
332
|
+
search: search2,
|
|
333
|
+
tools
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
exports.AUTHOR = AUTHOR;
|
|
337
|
+
exports.apk = apk;
|
|
338
|
+
exports.chords = chords;
|
|
339
|
+
exports.default = index_default;
|
|
340
|
+
exports.downloader = downloader;
|
|
341
|
+
exports.ephoto = ephoto;
|
|
342
|
+
exports.fbdl = fbdl;
|
|
343
|
+
exports.igdl = igdl;
|
|
344
|
+
exports.lyrics = lyrics;
|
|
345
|
+
exports.morse = morse;
|
|
346
|
+
exports.play = play;
|
|
347
|
+
exports.search = search2;
|
|
348
|
+
exports.ssweb = ssweb;
|
|
349
|
+
exports.styleText = styleText;
|
|
350
|
+
exports.tiktok = tiktok;
|
|
351
|
+
exports.tiktokSlide = tiktokSlide;
|
|
352
|
+
exports.tools = tools;
|
|
353
|
+
exports.tts = tts;
|
|
354
|
+
exports.twitter = twitter;
|
|
355
|
+
exports.unzipToText = unzipToText;
|
|
356
|
+
exports.wattpad = wattpad;
|
|
357
|
+
exports.xdl = twitter;
|
|
358
|
+
exports.ytSearch = search;
|
|
359
|
+
exports.ytmp3 = ytmp3;
|
|
360
|
+
exports.ytmp4 = ytmp4;
|
|
361
|
+
//# sourceMappingURL=index.js.map
|
|
362
|
+
//# sourceMappingURL=index.js.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.js","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"]}
|