instasave-sdk 1.0.0

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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/dist/auth-fast.d.ts +32 -0
  4. package/dist/auth-fast.d.ts.map +1 -0
  5. package/dist/auth-fast.js +505 -0
  6. package/dist/auth-fast.js.map +1 -0
  7. package/dist/auth.d.ts +80 -0
  8. package/dist/auth.d.ts.map +1 -0
  9. package/dist/auth.js +370 -0
  10. package/dist/auth.js.map +1 -0
  11. package/dist/benchmark.d.ts +48 -0
  12. package/dist/benchmark.d.ts.map +1 -0
  13. package/dist/benchmark.js +125 -0
  14. package/dist/benchmark.js.map +1 -0
  15. package/dist/health.d.ts +28 -0
  16. package/dist/health.d.ts.map +1 -0
  17. package/dist/health.js +108 -0
  18. package/dist/health.js.map +1 -0
  19. package/dist/index.d.ts +101 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +492 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/logger.d.ts +22 -0
  24. package/dist/logger.d.ts.map +1 -0
  25. package/dist/logger.js +151 -0
  26. package/dist/logger.js.map +1 -0
  27. package/dist/memory.d.ts +56 -0
  28. package/dist/memory.d.ts.map +1 -0
  29. package/dist/memory.js +144 -0
  30. package/dist/memory.js.map +1 -0
  31. package/dist/metrics.d.ts +19 -0
  32. package/dist/metrics.d.ts.map +1 -0
  33. package/dist/metrics.js +79 -0
  34. package/dist/metrics.js.map +1 -0
  35. package/dist/parallel.d.ts +59 -0
  36. package/dist/parallel.d.ts.map +1 -0
  37. package/dist/parallel.js +202 -0
  38. package/dist/parallel.js.map +1 -0
  39. package/dist/platforms/index.d.ts +7 -0
  40. package/dist/platforms/index.d.ts.map +1 -0
  41. package/dist/platforms/index.js +13 -0
  42. package/dist/platforms/index.js.map +1 -0
  43. package/dist/platforms/instagram.d.ts +6 -0
  44. package/dist/platforms/instagram.d.ts.map +1 -0
  45. package/dist/platforms/instagram.js +189 -0
  46. package/dist/platforms/instagram.js.map +1 -0
  47. package/dist/plugins.d.ts +128 -0
  48. package/dist/plugins.d.ts.map +1 -0
  49. package/dist/plugins.js +107 -0
  50. package/dist/plugins.js.map +1 -0
  51. package/dist/test-integration.d.ts +2 -0
  52. package/dist/test-integration.d.ts.map +1 -0
  53. package/dist/test-integration.js +46 -0
  54. package/dist/test-integration.js.map +1 -0
  55. package/dist/types.d.ts +75 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +6 -0
  58. package/dist/types.js.map +1 -0
  59. package/dist/worker.d.ts +2 -0
  60. package/dist/worker.d.ts.map +1 -0
  61. package/dist/worker.js +23 -0
  62. package/dist/worker.js.map +1 -0
  63. package/package.json +56 -0
@@ -0,0 +1,505 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FastAuthManager = void 0;
4
+ const logger_1 = require("./logger");
5
+ class FastAuthManager {
6
+ constructor() {
7
+ this.authenticated = false;
8
+ this.username = null;
9
+ this.displayName = null;
10
+ this.sessionPath = './storage/instagram-session.json';
11
+ this.loadSession();
12
+ }
13
+ sleep(ms) {
14
+ return new Promise(resolve => setTimeout(resolve, ms));
15
+ }
16
+ async loadSession() {
17
+ try {
18
+ const fs = require('fs');
19
+ if (fs.existsSync(this.sessionPath)) {
20
+ const sessionData = JSON.parse(fs.readFileSync(this.sessionPath, 'utf8'));
21
+ this.authenticated = sessionData.authenticated || false;
22
+ this.username = sessionData.username || null;
23
+ this.displayName = sessionData.displayName || null;
24
+ logger_1.log.info('🔐 Loaded session:', { username: this.username, authenticated: this.authenticated });
25
+ }
26
+ }
27
+ catch (error) {
28
+ logger_1.log.info('🔐 No existing session found');
29
+ }
30
+ }
31
+ async saveSession(cookies) {
32
+ try {
33
+ const fs = require('fs');
34
+ const path = require('path');
35
+ // Ensure storage directory exists
36
+ const dir = path.dirname(this.sessionPath);
37
+ if (!fs.existsSync(dir)) {
38
+ fs.mkdirSync(dir, { recursive: true });
39
+ }
40
+ const sessionData = {
41
+ authenticated: this.authenticated,
42
+ username: this.username,
43
+ displayName: this.displayName,
44
+ cookies: cookies || [],
45
+ timestamp: Date.now()
46
+ };
47
+ fs.writeFileSync(this.sessionPath, JSON.stringify(sessionData, null, 2));
48
+ logger_1.log.info('🔐 Session saved with', cookies?.length || 0, 'cookies');
49
+ }
50
+ catch (error) {
51
+ logger_1.log.error('🔐 Failed to save session:', error);
52
+ }
53
+ }
54
+ async clearSession() {
55
+ try {
56
+ const fs = require('fs');
57
+ if (fs.existsSync(this.sessionPath)) {
58
+ fs.unlinkSync(this.sessionPath);
59
+ logger_1.log.info('🔐 Session cleared');
60
+ }
61
+ }
62
+ catch (error) {
63
+ logger_1.log.error('🔐 Failed to clear session:', error);
64
+ }
65
+ }
66
+ async saveSessionData(cookies) {
67
+ await this.saveSession(cookies);
68
+ }
69
+ async refreshSession(page) {
70
+ try {
71
+ logger_1.log.info('🔐 Refreshing session with fresh cookies...');
72
+ // First, load and apply existing cookies if available
73
+ const fs = require('fs');
74
+ if (fs.existsSync(this.sessionPath)) {
75
+ const existingSession = JSON.parse(fs.readFileSync(this.sessionPath, 'utf8'));
76
+ if (existingSession.cookies && Array.isArray(existingSession.cookies)) {
77
+ logger_1.log.info('🔐 Applying existing', existingSession.cookies.length, 'cookies first...');
78
+ await page.setCookie(...existingSession.cookies);
79
+ }
80
+ }
81
+ // Navigate to Instagram to refresh cookies
82
+ await page.goto('https://www.instagram.com/', { waitUntil: 'networkidle0' });
83
+ await page.waitForTimeout(3000);
84
+ // Get fresh cookies
85
+ const cookies = await page.cookies();
86
+ // Check if still logged in
87
+ const isLoggedIn = await page.evaluate(() => {
88
+ return !document.querySelector('input[name="username"]');
89
+ });
90
+ if (isLoggedIn && cookies.length > 0) {
91
+ await this.saveSession(cookies);
92
+ logger_1.log.info('✅ Session refreshed with', cookies.length, 'cookies');
93
+ return true;
94
+ }
95
+ logger_1.log.info('❌ Session refresh failed - not logged in');
96
+ return false;
97
+ }
98
+ catch (error) {
99
+ logger_1.log.error('❌ Session refresh error:', error.message);
100
+ return false;
101
+ }
102
+ }
103
+ isAuthenticated() {
104
+ return this.authenticated;
105
+ }
106
+ getUsername() {
107
+ return this.username;
108
+ }
109
+ getDisplayName() {
110
+ return this.displayName;
111
+ }
112
+ async logout() {
113
+ this.authenticated = false;
114
+ this.username = null;
115
+ this.displayName = null;
116
+ await this.clearSession();
117
+ }
118
+ async refreshUserInfo(page) {
119
+ try {
120
+ logger_1.log.info('🔐 Refreshing user info...');
121
+ // Navigate to profile page
122
+ await page.goto(`https://www.instagram.com/${this.username}/`, {
123
+ waitUntil: 'domcontentloaded',
124
+ timeout: 10000
125
+ });
126
+ await this.sleep(2000);
127
+ const profileInfo = await page.evaluate(() => {
128
+ // Debug: log current URL and page content
129
+ logger_1.log.info('Current URL:', window.location.href);
130
+ // Get first 1000 characters of page text for debugging
131
+ const pageText = document.body.innerText.substring(0, 1000);
132
+ logger_1.log.info('Page content preview:', pageText);
133
+ // Look for the profile bio section structure
134
+ // The display name should be right after the username in the profile header
135
+ // Method 1: Look for h2 element (usually contains display name)
136
+ const h2Elements = document.querySelectorAll('h2');
137
+ for (const h2 of h2Elements) {
138
+ const text = h2.textContent?.trim();
139
+ logger_1.log.info('Found H2:', text);
140
+ if (text && text.length > 0 && text.length < 50 &&
141
+ !text.includes('posts') && !text.includes('followers') &&
142
+ !text.includes('following') && !text.includes('@') &&
143
+ !text.includes('Instagram') && !text.includes('Edit profile')) {
144
+ logger_1.log.info('Selected H2 as display name:', text);
145
+ return text;
146
+ }
147
+ }
148
+ // Method 2: Look in the profile header section
149
+ const profileHeaders = document.querySelectorAll('header section');
150
+ for (const section of profileHeaders) {
151
+ const spans = section.querySelectorAll('span[dir="auto"]');
152
+ for (const span of spans) {
153
+ const text = span.textContent?.trim();
154
+ logger_1.log.info('Found span in header:', text);
155
+ if (text && text.length > 0 && text.length < 50 &&
156
+ !text.includes('posts') && !text.includes('followers') &&
157
+ !text.includes('following') && !text.includes('@') &&
158
+ !text.includes('Instagram') && !text.includes('Edit profile') &&
159
+ !text.includes('Share profile') && !text.includes('Message')) {
160
+ logger_1.log.info('Selected header span as display name:', text);
161
+ return text;
162
+ }
163
+ }
164
+ }
165
+ // Method 3: Look for display name in the specific bio structure
166
+ const allText = document.body.innerText;
167
+ const lines = allText.split('\n').map(line => line.trim()).filter(Boolean);
168
+ logger_1.log.info('First 10 lines of page:', lines.slice(0, 10));
169
+ // Find username line and get the next meaningful line
170
+ for (let i = 0; i < lines.length - 1; i++) {
171
+ const currentLine = lines[i];
172
+ const nextLine = lines[i + 1];
173
+ // If current line looks like username and next line is display name
174
+ if (currentLine.match(/^[a-zA-Z0-9._]+$/) &&
175
+ nextLine && nextLine.length > 0 && nextLine.length < 50 &&
176
+ !nextLine.includes('posts') && !nextLine.includes('followers') &&
177
+ !nextLine.includes('following') && !nextLine.includes('Instagram')) {
178
+ logger_1.log.info('Found username line:', currentLine, 'next line:', nextLine);
179
+ return nextLine;
180
+ }
181
+ }
182
+ logger_1.log.info('No display name found');
183
+ return null;
184
+ });
185
+ if (profileInfo) {
186
+ this.displayName = profileInfo;
187
+ logger_1.log.info('🔐 Updated display name:', this.displayName);
188
+ }
189
+ return {
190
+ username: this.username,
191
+ displayName: this.displayName
192
+ };
193
+ }
194
+ catch (error) {
195
+ logger_1.log.error('🔐 Failed to refresh user info:', error.message);
196
+ return {
197
+ username: this.username,
198
+ displayName: this.displayName
199
+ };
200
+ }
201
+ }
202
+ async applyCookies(page) {
203
+ try {
204
+ const fs = require('fs');
205
+ if (!fs.existsSync(this.sessionPath)) {
206
+ logger_1.log.info('🔐 No session file available');
207
+ return;
208
+ }
209
+ const sessionData = JSON.parse(fs.readFileSync(this.sessionPath, 'utf8'));
210
+ if (!sessionData.cookies || !Array.isArray(sessionData.cookies)) {
211
+ logger_1.log.info('🔐 No cookies in session data');
212
+ return;
213
+ }
214
+ // Clear only page cache, keep cookies
215
+ logger_1.log.info('🔐 Clearing page cache only...');
216
+ const client = await page.target().createCDPSession();
217
+ await client.send('Network.clearBrowserCache');
218
+ // Apply session cookies
219
+ logger_1.log.info('🔐 Applying session cookies...');
220
+ await page.setCookie(...sessionData.cookies);
221
+ logger_1.log.info('✅ Session applied with cleared cache');
222
+ }
223
+ catch (error) {
224
+ logger_1.log.info('❌ Failed to apply session:', error.message);
225
+ }
226
+ }
227
+ async login(page, credentials) {
228
+ try {
229
+ logger_1.log.info('🔐 Fast login starting...');
230
+ // Navigate quickly
231
+ await page.goto('https://www.instagram.com/accounts/login/', {
232
+ waitUntil: 'domcontentloaded',
233
+ timeout: 10000
234
+ });
235
+ // Accept cookies quickly
236
+ await page.evaluate(() => {
237
+ const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));
238
+ const cookieBtn = buttons.find(btn => btn.textContent?.toLowerCase().includes('allow') ||
239
+ btn.textContent?.toLowerCase().includes('accept'));
240
+ if (cookieBtn)
241
+ cookieBtn.click();
242
+ });
243
+ await this.sleep(500);
244
+ // Fill form quickly but more human-like
245
+ await page.waitForSelector('input[type="text"]', { timeout: 3000 });
246
+ await page.click('input[type="text"]');
247
+ // Clear field first, then type
248
+ await page.keyboard.down('Control');
249
+ await page.keyboard.press('a');
250
+ await page.keyboard.up('Control');
251
+ await page.type('input[type="text"]', credentials.username, { delay: 50 });
252
+ await page.waitForSelector('input[type="password"]', { timeout: 3000 });
253
+ await page.click('input[type="password"]');
254
+ // Clear field first, then type
255
+ await page.keyboard.down('Control');
256
+ await page.keyboard.press('a');
257
+ await page.keyboard.up('Control');
258
+ await page.type('input[type="password"]', credentials.password, { delay: 50 });
259
+ await this.sleep(500);
260
+ // Verify fields are filled
261
+ const fieldValues = await page.evaluate(() => {
262
+ const usernameField = document.querySelector('input[type="text"]');
263
+ const passwordField = document.querySelector('input[type="password"]');
264
+ return {
265
+ username: usernameField?.value || '',
266
+ password: passwordField?.value || '',
267
+ usernameLength: usernameField?.value?.length || 0,
268
+ passwordLength: passwordField?.value?.length || 0
269
+ };
270
+ });
271
+ logger_1.log.info('🔐 Field values:', {
272
+ usernameLength: fieldValues.usernameLength,
273
+ passwordLength: fieldValues.passwordLength,
274
+ usernameEmpty: fieldValues.usernameLength === 0,
275
+ passwordEmpty: fieldValues.passwordLength === 0
276
+ });
277
+ if (fieldValues.usernameLength === 0 || fieldValues.passwordLength === 0) {
278
+ throw new Error('Fields not filled properly');
279
+ }
280
+ // Submit by clicking the login button instead of Enter
281
+ logger_1.log.info('🔐 Submitting...');
282
+ // Find and click the actual login button
283
+ const loginClicked = await page.evaluate(() => {
284
+ // Look for the main "Log in" button (not Facebook)
285
+ const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));
286
+ const loginBtn = buttons.find(btn => {
287
+ const text = btn.textContent?.trim() || '';
288
+ return text === 'Log in' && !text.includes('Facebook');
289
+ });
290
+ if (loginBtn && loginBtn instanceof HTMLElement) {
291
+ loginBtn.click();
292
+ return true;
293
+ }
294
+ // Fallback: try submit button
295
+ const submitBtn = document.querySelector('button[type="submit"]');
296
+ if (submitBtn) {
297
+ submitBtn.click();
298
+ return true;
299
+ }
300
+ return false;
301
+ });
302
+ if (!loginClicked) {
303
+ throw new Error('Could not find login button to click');
304
+ }
305
+ logger_1.log.info('🔐 Login button clicked');
306
+ // Wait longer for Instagram to process
307
+ logger_1.log.info('🔐 Waiting for Instagram response...');
308
+ await this.sleep(5000); // Increased from 3s to 5s
309
+ let url = page.url();
310
+ logger_1.log.info('🔐 URL after 5s:', url);
311
+ // If still on login page, wait a bit more
312
+ if (url.includes('/accounts/login/')) {
313
+ logger_1.log.info('🔐 Still on login page, waiting more...');
314
+ await this.sleep(3000);
315
+ url = page.url();
316
+ logger_1.log.info('🔐 URL after 8s total:', url);
317
+ }
318
+ // Take screenshot for debugging
319
+ await page.screenshot({ path: './debug-fast-login.png', fullPage: true });
320
+ logger_1.log.info('🔐 Screenshot saved');
321
+ if (url.includes('facebook.com')) {
322
+ throw new Error('Redirected to Facebook');
323
+ }
324
+ // Check for successful redirect patterns
325
+ if (url.includes('/accounts/onetap/') ||
326
+ url.includes('/challenge/') ||
327
+ url.includes('instagram.com/') && !url.includes('/accounts/login/')) {
328
+ logger_1.log.info('🔐 Login successful - redirected to:', url);
329
+ // Handle "Save your login info?" dialog
330
+ if (url.includes('/accounts/onetap/')) {
331
+ logger_1.log.info('🔐 Handling "Save login info" dialog...');
332
+ try {
333
+ // Look for "Save Info" button and click it
334
+ const saveInfoClicked = await page.evaluate(() => {
335
+ const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));
336
+ const saveBtn = buttons.find(btn => {
337
+ const text = btn.textContent?.toLowerCase() || '';
338
+ return text.includes('save') || text.includes('save info');
339
+ });
340
+ if (saveBtn && saveBtn instanceof HTMLElement) {
341
+ saveBtn.click();
342
+ return true;
343
+ }
344
+ return false;
345
+ });
346
+ if (saveInfoClicked) {
347
+ logger_1.log.info('🔐 Clicked "Save Info" button');
348
+ await this.sleep(2000);
349
+ }
350
+ else {
351
+ logger_1.log.info('🔐 Save Info button not found, continuing...');
352
+ }
353
+ }
354
+ catch (e) {
355
+ logger_1.log.info('🔐 Error handling Save Info dialog:', e);
356
+ }
357
+ }
358
+ // Try to get user info from the page
359
+ try {
360
+ logger_1.log.info('🔐 Getting user info...');
361
+ // Skip homepage, go directly to profile
362
+ logger_1.log.info('🔐 Navigating directly to profile page...');
363
+ await page.goto(`https://www.instagram.com/${credentials.username}/`, {
364
+ waitUntil: 'domcontentloaded',
365
+ timeout: 10000
366
+ });
367
+ await this.sleep(3000);
368
+ const userInfo = await page.evaluate(() => {
369
+ // Look for the logged-in user info in various places
370
+ let username = null;
371
+ let displayName = null;
372
+ // Method 1: Look for profile link in navigation/header
373
+ const profileLinks = document.querySelectorAll('a[href*="/"]');
374
+ for (const link of profileLinks) {
375
+ const href = link.getAttribute('href');
376
+ if (href && href.match(/^\/[a-zA-Z0-9._]+\/$/) &&
377
+ !href.includes('explore') && !href.includes('reels') &&
378
+ !href.includes('direct') && !href.includes('accounts')) {
379
+ username = href.replace(/\//g, '');
380
+ break;
381
+ }
382
+ }
383
+ // Method 2: Look for display name near profile picture or username
384
+ if (username) {
385
+ // Find elements that might contain display name
386
+ const allSpans = document.querySelectorAll('span[dir="auto"]');
387
+ for (const span of allSpans) {
388
+ const text = span.textContent?.trim();
389
+ if (text && text.length > 0 && text.length < 50 &&
390
+ !text.includes('Instagram') && !text.includes('For you') &&
391
+ !text.includes('Following') && !text.includes('Explore') &&
392
+ !text.includes('Reels') && !text.includes('Messages') &&
393
+ text !== username) {
394
+ displayName = text;
395
+ break;
396
+ }
397
+ }
398
+ }
399
+ // Method 3: Try to get from profile page
400
+ if (username && !displayName) {
401
+ // Navigate to profile to get display name
402
+ const profileUrl = `/${username}/`;
403
+ const profileLink = document.querySelector(`a[href="${profileUrl}"]`);
404
+ if (profileLink) {
405
+ // Look for display name near the profile link
406
+ const parent = profileLink.closest('div');
407
+ if (parent) {
408
+ const nameSpan = parent.querySelector('span[dir="auto"]');
409
+ if (nameSpan && nameSpan.textContent !== username) {
410
+ displayName = nameSpan.textContent?.trim();
411
+ }
412
+ }
413
+ }
414
+ }
415
+ return { username, displayName };
416
+ });
417
+ // Store the credentials that were actually used for login
418
+ this.username = credentials.username;
419
+ if (userInfo.displayName && userInfo.displayName !== 'For you') {
420
+ this.displayName = userInfo.displayName;
421
+ logger_1.log.info('🔐 Display name from homepage:', this.displayName);
422
+ }
423
+ else {
424
+ // If we couldn't get display name from homepage, try profile page
425
+ try {
426
+ logger_1.log.info('🔐 Trying to get display name from profile page...');
427
+ await page.goto(`https://www.instagram.com/${credentials.username}/`, {
428
+ waitUntil: 'domcontentloaded',
429
+ timeout: 10000
430
+ });
431
+ await this.sleep(2000);
432
+ const profileInfo = await page.evaluate(() => {
433
+ // Look for display name using the specific class pattern you provided
434
+ const nameSpan = document.querySelector('span.x1lliihq.x1plvlek.xryxfnj.x1n2onr6[dir="auto"]');
435
+ if (nameSpan) {
436
+ return nameSpan.textContent?.trim();
437
+ }
438
+ // Fallback: look for any span with dir="auto" that contains meaningful text
439
+ const allSpans = document.querySelectorAll('span[dir="auto"]');
440
+ for (const span of allSpans) {
441
+ const text = span.textContent?.trim();
442
+ if (text && text.length > 0 && text.length < 50 &&
443
+ !text.includes('posts') && !text.includes('followers') &&
444
+ !text.includes('following') && !text.includes('Instagram') &&
445
+ !text.includes('Edit profile') && !text.includes('Share profile')) {
446
+ return text;
447
+ }
448
+ }
449
+ return null;
450
+ });
451
+ if (profileInfo) {
452
+ this.displayName = profileInfo;
453
+ logger_1.log.info('🔐 Display name from profile:', this.displayName);
454
+ }
455
+ else {
456
+ this.displayName = credentials.username;
457
+ }
458
+ }
459
+ catch (e) {
460
+ logger_1.log.info('🔐 Could not get display name from profile:', e);
461
+ this.displayName = credentials.username;
462
+ }
463
+ }
464
+ logger_1.log.info('🔐 Final user info - Username:', this.username, 'Display:', this.displayName);
465
+ }
466
+ catch (e) {
467
+ logger_1.log.info('🔐 Could not get user info:', e);
468
+ // Fallback to credentials
469
+ this.username = credentials.username;
470
+ this.displayName = credentials.username;
471
+ }
472
+ this.authenticated = true;
473
+ // Save session with cookies
474
+ const cookies = await page.cookies();
475
+ await this.saveSession(cookies);
476
+ return true;
477
+ }
478
+ if (!url.includes('/accounts/login/')) {
479
+ logger_1.log.info('🔐 Login successful!');
480
+ this.authenticated = true;
481
+ return true;
482
+ }
483
+ // Check for specific error messages
484
+ const pageContent = await page.evaluate(() => document.body.innerText);
485
+ logger_1.log.info('🔐 Page content sample:', pageContent.substring(0, 500));
486
+ if (pageContent.includes('incorrect') || pageContent.includes('wrong')) {
487
+ throw new Error('Invalid username or password');
488
+ }
489
+ if (pageContent.includes('suspicious') || pageContent.includes('verify')) {
490
+ throw new Error('Account verification required');
491
+ }
492
+ if (pageContent.includes('try again')) {
493
+ throw new Error('Instagram blocked the login attempt');
494
+ }
495
+ throw new Error('Login failed: Still on login page');
496
+ }
497
+ catch (error) {
498
+ logger_1.log.error('🔐 Fast login failed:', error.message);
499
+ this.authenticated = false;
500
+ return false;
501
+ }
502
+ }
503
+ }
504
+ exports.FastAuthManager = FastAuthManager;
505
+ //# sourceMappingURL=auth-fast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-fast.js","sourceRoot":"","sources":["../src/auth-fast.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts ADDED
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Authentication module for Instagram login and session management
3
+ */
4
+ import { Page } from 'puppeteer';
5
+ /**
6
+ * Login credentials
7
+ */
8
+ export interface LoginCredentials {
9
+ username: string;
10
+ password: string;
11
+ }
12
+ /**
13
+ * Cookie data structure
14
+ */
15
+ export interface Cookie {
16
+ name: string;
17
+ value: string;
18
+ domain: string;
19
+ path: string;
20
+ expires?: number;
21
+ httpOnly?: boolean;
22
+ secure?: boolean;
23
+ sameSite?: 'Strict' | 'Lax' | 'None';
24
+ }
25
+ /**
26
+ * Session data with cookies and metadata
27
+ */
28
+ export interface SessionData {
29
+ cookies: Cookie[];
30
+ expiresAt: number;
31
+ username: string;
32
+ createdAt: number;
33
+ }
34
+ /**
35
+ * Authentication manager for handling login and session persistence
36
+ */
37
+ export declare class AuthManager {
38
+ private session;
39
+ private defaultSessionPath;
40
+ /**
41
+ * Login to Instagram with username and password
42
+ * @param page - Puppeteer page instance
43
+ * @param credentials - Login credentials
44
+ * @returns Promise<boolean> - Success status
45
+ */
46
+ login(page: Page, credentials: LoginCredentials): Promise<boolean>;
47
+ /**
48
+ * Logout and clear session
49
+ */
50
+ logout(): Promise<void>;
51
+ /**
52
+ * Check if user is authenticated
53
+ */
54
+ isAuthenticated(): boolean;
55
+ /**
56
+ * Save session to file
57
+ * @param path - File path (default: ./storage/session.json)
58
+ */
59
+ saveSession(path?: string): Promise<void>;
60
+ /**
61
+ * Load session from file
62
+ * @param path - File path (default: ./storage/session.json)
63
+ * @returns Promise<boolean> - Success status
64
+ */
65
+ loadSession(path?: string): Promise<boolean>;
66
+ /**
67
+ * Apply cookies to page
68
+ * @param page - Puppeteer page instance
69
+ */
70
+ applyCookies(page: Page): Promise<void>;
71
+ /**
72
+ * Get current session data
73
+ */
74
+ getSession(): SessionData | null;
75
+ /**
76
+ * Sleep helper
77
+ */
78
+ private sleep;
79
+ }
80
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,kBAAkB,CAA4B;IAEtD;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0SxE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACH,eAAe,IAAI,OAAO;IAY1B;;;OAGG;IACG,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C;;;;OAIG;IACG,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BlD;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C;;OAEG;IACH,UAAU,IAAI,WAAW,GAAG,IAAI;IAIhC;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}