instasave-sdk 1.2.1 → 1.2.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/CHANGELOG.md +47 -0
- package/README.md +1 -1
- package/dist/{auth-fast.d.ts → auth/auth-manager.d.ts} +4 -12
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/{auth-fast.js → auth/auth-manager.js} +26 -68
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/session-manager.d.ts +8 -0
- package/dist/auth/session-manager.d.ts.map +1 -0
- package/dist/auth/session-manager.js +57 -0
- package/dist/auth/session-manager.js.map +1 -0
- package/dist/browser/browser-pool.d.ts.map +1 -0
- package/dist/{browser-pool.js → browser/browser-pool.js} +1 -1
- package/dist/browser/browser-pool.js.map +1 -0
- package/dist/browser/crawler-manager.d.ts.map +1 -0
- package/dist/{crawler-manager.js → browser/crawler-manager.js} +6 -6
- package/dist/browser/crawler-manager.js.map +1 -0
- package/dist/browser/index.d.ts +3 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +8 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/media-scraper.d.ts +107 -0
- package/dist/core/media-scraper.d.ts.map +1 -0
- package/dist/core/media-scraper.js +496 -0
- package/dist/core/media-scraper.js.map +1 -0
- package/dist/core/workflow-executor.d.ts +17 -0
- package/dist/core/workflow-executor.d.ts.map +1 -0
- package/dist/core/workflow-executor.js +146 -0
- package/dist/core/workflow-executor.js.map +1 -0
- package/dist/index.d.ts +13 -132
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -635
- package/dist/index.js.map +1 -1
- package/dist/platforms/instagram/constants.d.ts +25 -0
- package/dist/platforms/instagram/constants.d.ts.map +1 -0
- package/dist/platforms/instagram/constants.js +34 -0
- package/dist/platforms/instagram/constants.js.map +1 -0
- package/dist/platforms/instagram/extractors/carousel.d.ts +21 -0
- package/dist/platforms/instagram/extractors/carousel.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/carousel.js +64 -0
- package/dist/platforms/instagram/extractors/carousel.js.map +1 -0
- package/dist/platforms/instagram/extractors/common.d.ts +17 -0
- package/dist/platforms/instagram/extractors/common.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/common.js +67 -0
- package/dist/platforms/instagram/extractors/common.js.map +1 -0
- package/dist/platforms/instagram/extractors/metadata.d.ts +24 -0
- package/dist/platforms/instagram/extractors/metadata.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/metadata.js +129 -0
- package/dist/platforms/instagram/extractors/metadata.js.map +1 -0
- package/dist/platforms/instagram/extractors/profile.d.ts +16 -0
- package/dist/platforms/instagram/extractors/profile.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/profile.js +54 -0
- package/dist/platforms/instagram/extractors/profile.js.map +1 -0
- package/dist/platforms/{instagram.d.ts → instagram/index.d.ts} +2 -2
- package/dist/platforms/instagram/index.d.ts.map +1 -0
- package/dist/platforms/instagram/index.js +53 -0
- package/dist/platforms/instagram/index.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +21 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-manager.d.ts +50 -0
- package/dist/plugins/plugin-manager.d.ts.map +1 -0
- package/dist/{plugins.js → plugins/plugin-manager.js} +4 -4
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/types/auth.d.ts +15 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/browser.d.ts +28 -0
- package/dist/types/browser.d.ts.map +1 -0
- package/dist/types/browser.js +3 -0
- package/dist/types/browser.js.map +1 -0
- package/dist/{types.d.ts → types/common.d.ts} +15 -15
- package/dist/types/common.d.ts.map +1 -0
- package/dist/{types.js → types/common.js} +1 -1
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/platform.d.ts +3 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +20 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/plugins.d.ts +61 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +3 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/workflow.d.ts +17 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +3 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/config/config-parser.d.ts.map +1 -0
- package/dist/{config-parser.js → utils/config/config-parser.js} +5 -5
- package/dist/utils/config/config-parser.js.map +1 -0
- package/dist/utils/config/index.d.ts +2 -0
- package/dist/utils/config/index.d.ts.map +1 -0
- package/dist/utils/config/index.js +18 -0
- package/dist/utils/config/index.js.map +1 -0
- package/dist/{file-manager.d.ts → utils/file-manager.d.ts} +1 -1
- package/dist/utils/file-manager.d.ts.map +1 -0
- package/dist/utils/file-manager.js.map +1 -0
- package/dist/{health.d.ts → utils/health/health-checker.d.ts} +1 -1
- package/dist/utils/health/health-checker.d.ts.map +1 -0
- package/dist/{health.js → utils/health/health-checker.js} +1 -1
- package/dist/utils/health/health-checker.js.map +1 -0
- package/dist/utils/health/index.d.ts +2 -0
- package/dist/utils/health/index.d.ts.map +1 -0
- package/dist/utils/health/index.js +18 -0
- package/dist/utils/health/index.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger/index.d.ts +2 -0
- package/dist/utils/logger/index.d.ts.map +1 -0
- package/dist/utils/logger/index.js +18 -0
- package/dist/utils/logger/index.js.map +1 -0
- package/dist/utils/logger/logger.d.ts +44 -0
- package/dist/utils/logger/logger.d.ts.map +1 -0
- package/dist/utils/logger/logger.js +301 -0
- package/dist/utils/logger/logger.js.map +1 -0
- package/dist/utils/metrics/index.d.ts +2 -0
- package/dist/utils/metrics/index.d.ts.map +1 -0
- package/dist/utils/metrics/index.js +18 -0
- package/dist/utils/metrics/index.js.map +1 -0
- package/dist/{metrics.d.ts → utils/metrics/metrics-collector.d.ts} +1 -1
- package/dist/utils/metrics/metrics-collector.d.ts.map +1 -0
- package/dist/{metrics.js → utils/metrics/metrics-collector.js} +1 -1
- package/dist/utils/metrics/metrics-collector.js.map +1 -0
- package/dist/utils/progress-tracker.d.ts +11 -0
- package/dist/utils/progress-tracker.d.ts.map +1 -0
- package/dist/{progress-tracker.js → utils/progress-tracker.js} +0 -3
- package/dist/utils/progress-tracker.js.map +1 -0
- package/dist/utils/url-normalizer.d.ts.map +1 -0
- package/dist/utils/url-normalizer.js.map +1 -0
- package/package.json +1 -1
- package/dist/auth-fast.d.ts.map +0 -1
- package/dist/auth-fast.js.map +0 -1
- package/dist/auth.d.ts +0 -80
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -370
- package/dist/auth.js.map +0 -1
- package/dist/benchmark.d.ts +0 -48
- package/dist/benchmark.d.ts.map +0 -1
- package/dist/benchmark.js +0 -125
- package/dist/benchmark.js.map +0 -1
- package/dist/browser-pool.d.ts.map +0 -1
- package/dist/browser-pool.js.map +0 -1
- package/dist/config-parser.d.ts.map +0 -1
- package/dist/config-parser.js.map +0 -1
- package/dist/crawler-manager.d.ts.map +0 -1
- package/dist/crawler-manager.js.map +0 -1
- package/dist/file-manager.d.ts.map +0 -1
- package/dist/file-manager.js.map +0 -1
- package/dist/health.d.ts.map +0 -1
- package/dist/health.js.map +0 -1
- package/dist/logger.d.ts +0 -22
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -151
- package/dist/logger.js.map +0 -1
- package/dist/memory.d.ts +0 -56
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js +0 -144
- package/dist/memory.js.map +0 -1
- package/dist/metrics.d.ts.map +0 -1
- package/dist/metrics.js.map +0 -1
- package/dist/parallel.d.ts +0 -59
- package/dist/parallel.d.ts.map +0 -1
- package/dist/parallel.js +0 -202
- package/dist/parallel.js.map +0 -1
- package/dist/platforms/instagram.d.ts.map +0 -1
- package/dist/platforms/instagram.js +0 -263
- package/dist/platforms/instagram.js.map +0 -1
- package/dist/plugins.d.ts +0 -132
- package/dist/plugins.d.ts.map +0 -1
- package/dist/plugins.js.map +0 -1
- package/dist/progress-tracker.d.ts +0 -15
- package/dist/progress-tracker.d.ts.map +0 -1
- package/dist/progress-tracker.js.map +0 -1
- package/dist/smart-logger.d.ts +0 -64
- package/dist/smart-logger.d.ts.map +0 -1
- package/dist/smart-logger.js +0 -149
- package/dist/smart-logger.js.map +0 -1
- package/dist/test-integration.d.ts +0 -2
- package/dist/test-integration.d.ts.map +0 -1
- package/dist/test-integration.js +0 -46
- package/dist/test-integration.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/url-normalizer.d.ts.map +0 -1
- package/dist/url-normalizer.js.map +0 -1
- package/dist/worker.d.ts +0 -2
- package/dist/worker.d.ts.map +0 -1
- package/dist/worker.js +0 -23
- package/dist/worker.js.map +0 -1
- /package/dist/{browser-pool.d.ts → browser/browser-pool.d.ts} +0 -0
- /package/dist/{crawler-manager.d.ts → browser/crawler-manager.d.ts} +0 -0
- /package/dist/{config-parser.d.ts → utils/config/config-parser.d.ts} +0 -0
- /package/dist/{file-manager.js → utils/file-manager.js} +0 -0
- /package/dist/{url-normalizer.d.ts → utils/url-normalizer.d.ts} +0 -0
- /package/dist/{url-normalizer.js → utils/url-normalizer.js} +0 -0
package/dist/auth.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
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
|
package/dist/auth.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/auth.js
DELETED
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Authentication module for Instagram login and session management
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AuthManager = void 0;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
/**
|
|
9
|
-
* Authentication manager for handling login and session persistence
|
|
10
|
-
*/
|
|
11
|
-
class AuthManager {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.session = null;
|
|
14
|
-
this.defaultSessionPath = './storage/session.json';
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Login to Instagram with username and password
|
|
18
|
-
* @param page - Puppeteer page instance
|
|
19
|
-
* @param credentials - Login credentials
|
|
20
|
-
* @returns Promise<boolean> - Success status
|
|
21
|
-
*/
|
|
22
|
-
async login(page, credentials) {
|
|
23
|
-
try {
|
|
24
|
-
console.log('🔐 Starting login process...');
|
|
25
|
-
console.log('🔐 Page object:', !!page);
|
|
26
|
-
console.log('🔐 Credentials:', { username: credentials.username, hasPassword: !!credentials.password });
|
|
27
|
-
// Navigate to Instagram login page
|
|
28
|
-
console.log('🔐 Navigating to Instagram login page...');
|
|
29
|
-
try {
|
|
30
|
-
await page.goto('https://www.instagram.com/accounts/login/', {
|
|
31
|
-
waitUntil: 'domcontentloaded',
|
|
32
|
-
timeout: 30000
|
|
33
|
-
});
|
|
34
|
-
console.log('🔐 Login page loaded successfully');
|
|
35
|
-
// Take screenshot for debugging
|
|
36
|
-
await page.screenshot({ path: './debug-login-page.png', fullPage: true });
|
|
37
|
-
console.log('🔐 Screenshot saved to debug-login-page.png');
|
|
38
|
-
// Check what's actually on the page
|
|
39
|
-
const pageTitle = await page.title();
|
|
40
|
-
console.log('🔐 Page title:', pageTitle);
|
|
41
|
-
const pageUrl = page.url();
|
|
42
|
-
console.log('🔐 Current URL:', pageUrl);
|
|
43
|
-
// Check for common elements
|
|
44
|
-
const bodyText = await page.evaluate(() => document.body.innerText.substring(0, 500));
|
|
45
|
-
console.log('🔐 Page content preview:', bodyText);
|
|
46
|
-
}
|
|
47
|
-
catch (gotoError) {
|
|
48
|
-
console.error('🔐 Failed to navigate to login page:', gotoError.message);
|
|
49
|
-
throw gotoError;
|
|
50
|
-
}
|
|
51
|
-
// Handle cookie consent dialog first
|
|
52
|
-
try {
|
|
53
|
-
console.log('🔐 Checking for cookie consent dialog...');
|
|
54
|
-
// Look for cookie consent buttons by text content
|
|
55
|
-
const cookieButtonFound = await page.evaluate(() => {
|
|
56
|
-
const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));
|
|
57
|
-
const button = buttons.find(btn => {
|
|
58
|
-
const text = btn.textContent?.toLowerCase() || '';
|
|
59
|
-
return text.includes('allow') || text.includes('accept') || text.includes('ok') || text.includes('agree');
|
|
60
|
-
});
|
|
61
|
-
if (button && button instanceof HTMLElement) {
|
|
62
|
-
button.click();
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
});
|
|
67
|
-
if (cookieButtonFound) {
|
|
68
|
-
console.log('🔐 Found and clicked cookie consent button');
|
|
69
|
-
await this.sleep(2000);
|
|
70
|
-
console.log('🔐 Cookie consent accepted');
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
console.log('🔐 No cookie consent dialog found');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch (e) {
|
|
77
|
-
console.log('🔐 Cookie consent handling failed, continuing...');
|
|
78
|
-
}
|
|
79
|
-
await this.sleep(2000);
|
|
80
|
-
// Wait for login form - try multiple selectors
|
|
81
|
-
console.log('🔐 Waiting for username input...');
|
|
82
|
-
const possibleSelectors = [
|
|
83
|
-
'input[name="username"]',
|
|
84
|
-
'input[aria-label*="username"]',
|
|
85
|
-
'input[aria-label*="Username"]',
|
|
86
|
-
'input[placeholder*="username"]',
|
|
87
|
-
'input[placeholder*="Username"]',
|
|
88
|
-
'input[type="text"]'
|
|
89
|
-
];
|
|
90
|
-
let usernameInput = null;
|
|
91
|
-
for (const selector of possibleSelectors) {
|
|
92
|
-
try {
|
|
93
|
-
console.log(`🔐 Trying selector: ${selector}`);
|
|
94
|
-
await page.waitForSelector(selector, { timeout: 2000 });
|
|
95
|
-
usernameInput = selector;
|
|
96
|
-
console.log(`🔐 Found username input with selector: ${selector}`);
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
catch (e) {
|
|
100
|
-
console.log(`🔐 Selector ${selector} not found`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (!usernameInput) {
|
|
104
|
-
throw new Error('Could not find username input field');
|
|
105
|
-
}
|
|
106
|
-
// Fill in credentials
|
|
107
|
-
console.log('🔐 Filling username...');
|
|
108
|
-
await page.type(usernameInput, credentials.username, { delay: 100 });
|
|
109
|
-
console.log('🔐 Looking for password input...');
|
|
110
|
-
const possiblePasswordSelectors = [
|
|
111
|
-
'input[name="password"]',
|
|
112
|
-
'input[type="password"]',
|
|
113
|
-
'input[aria-label*="password"]',
|
|
114
|
-
'input[aria-label*="Password"]',
|
|
115
|
-
'input[placeholder*="password"]',
|
|
116
|
-
'input[placeholder*="Password"]'
|
|
117
|
-
];
|
|
118
|
-
let passwordInput = null;
|
|
119
|
-
for (const selector of possiblePasswordSelectors) {
|
|
120
|
-
try {
|
|
121
|
-
console.log(`🔐 Trying password selector: ${selector}`);
|
|
122
|
-
await page.waitForSelector(selector, { timeout: 2000 });
|
|
123
|
-
passwordInput = selector;
|
|
124
|
-
console.log(`🔐 Found password input with selector: ${selector}`);
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
catch (e) {
|
|
128
|
-
console.log(`🔐 Password selector ${selector} not found`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (!passwordInput) {
|
|
132
|
-
throw new Error('Could not find password input field');
|
|
133
|
-
}
|
|
134
|
-
console.log('🔐 Filling password...');
|
|
135
|
-
await page.type(passwordInput, credentials.password, { delay: 100 });
|
|
136
|
-
await this.sleep(500);
|
|
137
|
-
// Click login button - be very specific to avoid Facebook login
|
|
138
|
-
console.log('🔐 Clicking login button...');
|
|
139
|
-
// First, try to find the main login button by looking at the form structure
|
|
140
|
-
const mainLoginButton = await page.evaluate(() => {
|
|
141
|
-
// Look for the form that contains username and password inputs
|
|
142
|
-
const usernameInput = document.querySelector('input[type="text"]');
|
|
143
|
-
const passwordInput = document.querySelector('input[type="password"]');
|
|
144
|
-
if (usernameInput && passwordInput) {
|
|
145
|
-
// Find the closest form or container
|
|
146
|
-
let form = usernameInput.closest('form');
|
|
147
|
-
if (!form) {
|
|
148
|
-
form = usernameInput.closest('div');
|
|
149
|
-
}
|
|
150
|
-
if (form) {
|
|
151
|
-
// Look for submit button within this form/container
|
|
152
|
-
const submitBtn = form.querySelector('button[type="submit"]');
|
|
153
|
-
if (submitBtn) {
|
|
154
|
-
const text = submitBtn.textContent?.toLowerCase() || '';
|
|
155
|
-
// Make sure it's not Facebook login
|
|
156
|
-
if (!text.includes('facebook')) {
|
|
157
|
-
submitBtn.click();
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
// If no submit button, look for any button with "log in" text
|
|
162
|
-
const buttons = Array.from(form.querySelectorAll('button, [role="button"]'));
|
|
163
|
-
const loginBtn = buttons.find(btn => {
|
|
164
|
-
const text = btn.textContent?.toLowerCase() || '';
|
|
165
|
-
return text.includes('log in') && !text.includes('facebook');
|
|
166
|
-
});
|
|
167
|
-
if (loginBtn) {
|
|
168
|
-
loginBtn.click();
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return false;
|
|
174
|
-
});
|
|
175
|
-
if (mainLoginButton) {
|
|
176
|
-
console.log('🔐 Successfully clicked main login button');
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
throw new Error('Could not find main login button (avoiding Facebook login)');
|
|
180
|
-
}
|
|
181
|
-
// Wait a bit for any immediate response
|
|
182
|
-
await this.sleep(2000);
|
|
183
|
-
// Wait for navigation
|
|
184
|
-
console.log('🔐 Waiting for navigation...');
|
|
185
|
-
try {
|
|
186
|
-
await page.waitForNavigation({ waitUntil: 'domcontentloaded', timeout: 30000 });
|
|
187
|
-
console.log('🔐 Navigation completed');
|
|
188
|
-
}
|
|
189
|
-
catch (navError) {
|
|
190
|
-
console.log('🔐 Navigation timeout - checking current page...');
|
|
191
|
-
// Take another screenshot to see what happened
|
|
192
|
-
await page.screenshot({ path: './debug-after-login.png', fullPage: true });
|
|
193
|
-
console.log('🔐 After-login screenshot saved to debug-after-login.png');
|
|
194
|
-
const currentUrl = page.url();
|
|
195
|
-
console.log('🔐 Current URL after login attempt:', currentUrl);
|
|
196
|
-
// Check for error messages
|
|
197
|
-
const errorElements = await page.$$eval('[role="alert"], .error, [data-testid*="error"], div:has-text("Sorry"), div:has-text("incorrect"), div:has-text("try again")', elements => elements.map(el => el.textContent?.trim()).filter(Boolean)).catch(() => []);
|
|
198
|
-
// Also check for any red text or error styling
|
|
199
|
-
const redTextElements = await page.$$eval('[style*="color: rgb(237, 73, 86)"], [style*="color:#ed4956"], .error-text', elements => elements.map(el => el.textContent?.trim()).filter(Boolean)).catch(() => []);
|
|
200
|
-
// Get all visible text to analyze
|
|
201
|
-
const allText = await page.evaluate(() => {
|
|
202
|
-
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
|
|
203
|
-
const textNodes = [];
|
|
204
|
-
let node;
|
|
205
|
-
while (node = walker.nextNode()) {
|
|
206
|
-
if (node.textContent?.trim() && node.parentElement?.offsetParent !== null) {
|
|
207
|
-
textNodes.push(node.textContent.trim());
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
return textNodes.join(' ');
|
|
211
|
-
});
|
|
212
|
-
console.log('🔐 All visible text on page:', allText.substring(0, 1000));
|
|
213
|
-
if (errorElements.length > 0) {
|
|
214
|
-
console.log('🔐 Found error messages:', errorElements);
|
|
215
|
-
throw new Error(`Login failed: ${errorElements.join(', ')}`);
|
|
216
|
-
}
|
|
217
|
-
if (redTextElements.length > 0) {
|
|
218
|
-
console.log('🔐 Found red text (possible errors):', redTextElements);
|
|
219
|
-
}
|
|
220
|
-
// If we're still on login page, it might be a different issue
|
|
221
|
-
if (currentUrl.includes('/accounts/login/')) {
|
|
222
|
-
throw new Error('Login failed: Still on login page after submission');
|
|
223
|
-
}
|
|
224
|
-
// If we're somewhere else, continue (might be successful)
|
|
225
|
-
console.log('🔐 Navigation might have succeeded despite timeout');
|
|
226
|
-
}
|
|
227
|
-
await this.sleep(2000);
|
|
228
|
-
// Handle "Save Your Login Info?" modal
|
|
229
|
-
try {
|
|
230
|
-
const saveInfoButton = await page.$('button::-p-text(Not now)');
|
|
231
|
-
if (saveInfoButton) {
|
|
232
|
-
await saveInfoButton.click();
|
|
233
|
-
await this.sleep(1000);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
catch (e) {
|
|
237
|
-
console.log('⚠️ Save login info modal not found (might be skipped)');
|
|
238
|
-
}
|
|
239
|
-
// Handle "Turn on Notifications?" modal
|
|
240
|
-
try {
|
|
241
|
-
const notifButton = await page.$('button::-p-text(Not Now)');
|
|
242
|
-
if (notifButton) {
|
|
243
|
-
await notifButton.click();
|
|
244
|
-
await this.sleep(1000);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
catch (e) {
|
|
248
|
-
console.log('⚠️ Notifications modal not found (might be skipped)');
|
|
249
|
-
}
|
|
250
|
-
// Get cookies
|
|
251
|
-
const cookies = await page.cookies();
|
|
252
|
-
// Check if login was successful by looking for session cookie
|
|
253
|
-
const sessionCookie = cookies.find(c => c.name === 'sessionid');
|
|
254
|
-
if (!sessionCookie) {
|
|
255
|
-
console.error('❌ Login failed - no session cookie found');
|
|
256
|
-
return false;
|
|
257
|
-
}
|
|
258
|
-
// Store session
|
|
259
|
-
this.session = {
|
|
260
|
-
cookies: cookies,
|
|
261
|
-
expiresAt: Date.now() + (30 * 24 * 60 * 60 * 1000), // 30 days
|
|
262
|
-
username: credentials.username,
|
|
263
|
-
createdAt: Date.now()
|
|
264
|
-
};
|
|
265
|
-
console.log('✅ Login successful!');
|
|
266
|
-
return true;
|
|
267
|
-
}
|
|
268
|
-
catch (error) {
|
|
269
|
-
console.error('❌ Login failed:', error);
|
|
270
|
-
return false;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Logout and clear session
|
|
275
|
-
*/
|
|
276
|
-
async logout() {
|
|
277
|
-
this.session = null;
|
|
278
|
-
console.log('✅ Logged out successfully');
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Check if user is authenticated
|
|
282
|
-
*/
|
|
283
|
-
isAuthenticated() {
|
|
284
|
-
if (!this.session)
|
|
285
|
-
return false;
|
|
286
|
-
// Check if session is expired
|
|
287
|
-
if (Date.now() > this.session.expiresAt) {
|
|
288
|
-
this.session = null;
|
|
289
|
-
return false;
|
|
290
|
-
}
|
|
291
|
-
return true;
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Save session to file
|
|
295
|
-
* @param path - File path (default: ./storage/session.json)
|
|
296
|
-
*/
|
|
297
|
-
async saveSession(path) {
|
|
298
|
-
if (!this.session) {
|
|
299
|
-
throw new Error('No active session to save');
|
|
300
|
-
}
|
|
301
|
-
const filepath = path || this.defaultSessionPath;
|
|
302
|
-
try {
|
|
303
|
-
(0, fs_1.writeFileSync)(filepath, JSON.stringify(this.session, null, 2));
|
|
304
|
-
console.log(`✅ Session saved to ${filepath}`);
|
|
305
|
-
}
|
|
306
|
-
catch (error) {
|
|
307
|
-
console.error('❌ Failed to save session:', error);
|
|
308
|
-
throw new Error(`Failed to save session: ${error}`);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Load session from file
|
|
313
|
-
* @param path - File path (default: ./storage/session.json)
|
|
314
|
-
* @returns Promise<boolean> - Success status
|
|
315
|
-
*/
|
|
316
|
-
async loadSession(path) {
|
|
317
|
-
const filepath = path || this.defaultSessionPath;
|
|
318
|
-
if (!(0, fs_1.existsSync)(filepath)) {
|
|
319
|
-
console.log('⚠️ No saved session found');
|
|
320
|
-
return false;
|
|
321
|
-
}
|
|
322
|
-
try {
|
|
323
|
-
const data = (0, fs_1.readFileSync)(filepath, 'utf-8');
|
|
324
|
-
const session = JSON.parse(data);
|
|
325
|
-
// Check if session is expired
|
|
326
|
-
if (Date.now() > session.expiresAt) {
|
|
327
|
-
console.log('⚠️ Saved session is expired');
|
|
328
|
-
return false;
|
|
329
|
-
}
|
|
330
|
-
this.session = session;
|
|
331
|
-
console.log(`✅ Session loaded from ${filepath}`);
|
|
332
|
-
return true;
|
|
333
|
-
}
|
|
334
|
-
catch (error) {
|
|
335
|
-
console.error('❌ Failed to load session:', error);
|
|
336
|
-
return false;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Apply cookies to page
|
|
341
|
-
* @param page - Puppeteer page instance
|
|
342
|
-
*/
|
|
343
|
-
async applyCookies(page) {
|
|
344
|
-
if (!this.session) {
|
|
345
|
-
throw new Error('No active session');
|
|
346
|
-
}
|
|
347
|
-
try {
|
|
348
|
-
await page.setCookie(...this.session.cookies);
|
|
349
|
-
console.log('✅ Cookies applied to page');
|
|
350
|
-
}
|
|
351
|
-
catch (error) {
|
|
352
|
-
console.error('❌ Failed to apply cookies:', error);
|
|
353
|
-
throw new Error(`Failed to apply cookies: ${error}`);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Get current session data
|
|
358
|
-
*/
|
|
359
|
-
getSession() {
|
|
360
|
-
return this.session;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Sleep helper
|
|
364
|
-
*/
|
|
365
|
-
sleep(ms) {
|
|
366
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
exports.AuthManager = AuthManager;
|
|
370
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/benchmark.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
interface BenchmarkResult {
|
|
2
|
-
testName: string;
|
|
3
|
-
duration: number;
|
|
4
|
-
memoryUsed: number;
|
|
5
|
-
success: boolean;
|
|
6
|
-
imagesExtracted: number;
|
|
7
|
-
error?: string;
|
|
8
|
-
}
|
|
9
|
-
interface BenchmarkSuite {
|
|
10
|
-
totalTests: number;
|
|
11
|
-
passedTests: number;
|
|
12
|
-
failedTests: number;
|
|
13
|
-
averageDuration: number;
|
|
14
|
-
totalMemoryUsed: number;
|
|
15
|
-
results: BenchmarkResult[];
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Performance benchmark suite for InstaSave SDK
|
|
19
|
-
* @class BenchmarkRunner
|
|
20
|
-
*/
|
|
21
|
-
export declare class BenchmarkRunner {
|
|
22
|
-
private scraper;
|
|
23
|
-
private results;
|
|
24
|
-
constructor();
|
|
25
|
-
/**
|
|
26
|
-
* Runs a single benchmark test
|
|
27
|
-
* @param testName - Name of the test
|
|
28
|
-
* @param testFn - Test function to execute
|
|
29
|
-
* @returns Promise<BenchmarkResult>
|
|
30
|
-
*/
|
|
31
|
-
runBenchmark(testName: string, testFn: () => Promise<any>): Promise<BenchmarkResult>;
|
|
32
|
-
/**
|
|
33
|
-
* Runs complete benchmark suite
|
|
34
|
-
* @returns Promise<BenchmarkSuite>
|
|
35
|
-
*/
|
|
36
|
-
runSuite(): Promise<BenchmarkSuite>;
|
|
37
|
-
/**
|
|
38
|
-
* Generates benchmark report
|
|
39
|
-
* @returns BenchmarkSuite
|
|
40
|
-
*/
|
|
41
|
-
private generateReport;
|
|
42
|
-
/**
|
|
43
|
-
* Prints benchmark results to console
|
|
44
|
-
*/
|
|
45
|
-
printResults(): void;
|
|
46
|
-
}
|
|
47
|
-
export {};
|
|
48
|
-
//# sourceMappingURL=benchmark.d.ts.map
|
package/dist/benchmark.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAyB;;IAMxC;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAqC1F;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IA8BzC;;;OAGG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,YAAY,IAAI,IAAI;CAoBrB"}
|
package/dist/benchmark.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BenchmarkRunner = void 0;
|
|
4
|
-
const logger_1 = require("./logger");
|
|
5
|
-
const index_1 = require("./index");
|
|
6
|
-
const perf_hooks_1 = require("perf_hooks");
|
|
7
|
-
/**
|
|
8
|
-
* Performance benchmark suite for InstaSave SDK
|
|
9
|
-
* @class BenchmarkRunner
|
|
10
|
-
*/
|
|
11
|
-
class BenchmarkRunner {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.results = [];
|
|
14
|
-
this.scraper = new index_1.MediaScraper();
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Runs a single benchmark test
|
|
18
|
-
* @param testName - Name of the test
|
|
19
|
-
* @param testFn - Test function to execute
|
|
20
|
-
* @returns Promise<BenchmarkResult>
|
|
21
|
-
*/
|
|
22
|
-
async runBenchmark(testName, testFn) {
|
|
23
|
-
const startTime = perf_hooks_1.performance.now();
|
|
24
|
-
const startMemory = process.memoryUsage().heapUsed;
|
|
25
|
-
try {
|
|
26
|
-
const result = await testFn();
|
|
27
|
-
const endTime = perf_hooks_1.performance.now();
|
|
28
|
-
const endMemory = process.memoryUsage().heapUsed;
|
|
29
|
-
const benchmarkResult = {
|
|
30
|
-
testName,
|
|
31
|
-
duration: endTime - startTime,
|
|
32
|
-
memoryUsed: endMemory - startMemory,
|
|
33
|
-
success: true,
|
|
34
|
-
imagesExtracted: result?.media?.length || 0
|
|
35
|
-
};
|
|
36
|
-
this.results.push(benchmarkResult);
|
|
37
|
-
return benchmarkResult;
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
const endTime = perf_hooks_1.performance.now();
|
|
41
|
-
const endMemory = process.memoryUsage().heapUsed;
|
|
42
|
-
const benchmarkResult = {
|
|
43
|
-
testName,
|
|
44
|
-
duration: endTime - startTime,
|
|
45
|
-
memoryUsed: endMemory - startMemory,
|
|
46
|
-
success: false,
|
|
47
|
-
imagesExtracted: 0,
|
|
48
|
-
error: error instanceof Error ? error.message : String(error)
|
|
49
|
-
};
|
|
50
|
-
this.results.push(benchmarkResult);
|
|
51
|
-
return benchmarkResult;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Runs complete benchmark suite
|
|
56
|
-
* @returns Promise<BenchmarkSuite>
|
|
57
|
-
*/
|
|
58
|
-
async runSuite() {
|
|
59
|
-
logger_1.log.info('🚀 Starting InstaSave SDK Benchmark Suite...\n');
|
|
60
|
-
// Test 1: Single post scraping
|
|
61
|
-
await this.runBenchmark('Single Post Scraping', async () => {
|
|
62
|
-
return await this.scraper.scrape('https://www.instagram.com/p/test/');
|
|
63
|
-
});
|
|
64
|
-
// Test 2: Multiple posts (simulated)
|
|
65
|
-
await this.runBenchmark('Multiple Posts (3x)', async () => {
|
|
66
|
-
const promises = [
|
|
67
|
-
this.scraper.scrape('https://www.instagram.com/p/test1/'),
|
|
68
|
-
this.scraper.scrape('https://www.instagram.com/p/test2/'),
|
|
69
|
-
this.scraper.scrape('https://www.instagram.com/p/test3/')
|
|
70
|
-
];
|
|
71
|
-
return await Promise.all(promises);
|
|
72
|
-
});
|
|
73
|
-
// Test 3: Memory stress test
|
|
74
|
-
await this.runBenchmark('Memory Stress Test', async () => {
|
|
75
|
-
const results = [];
|
|
76
|
-
for (let i = 0; i < 10; i++) {
|
|
77
|
-
results.push(await this.scraper.scrape(`https://www.instagram.com/p/test${i}/`));
|
|
78
|
-
}
|
|
79
|
-
return results;
|
|
80
|
-
});
|
|
81
|
-
return this.generateReport();
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Generates benchmark report
|
|
85
|
-
* @returns BenchmarkSuite
|
|
86
|
-
*/
|
|
87
|
-
generateReport() {
|
|
88
|
-
const totalTests = this.results.length;
|
|
89
|
-
const passedTests = this.results.filter(r => r.success).length;
|
|
90
|
-
const failedTests = totalTests - passedTests;
|
|
91
|
-
const averageDuration = this.results.reduce((sum, r) => sum + r.duration, 0) / totalTests;
|
|
92
|
-
const totalMemoryUsed = this.results.reduce((sum, r) => sum + r.memoryUsed, 0);
|
|
93
|
-
return {
|
|
94
|
-
totalTests,
|
|
95
|
-
passedTests,
|
|
96
|
-
failedTests,
|
|
97
|
-
averageDuration,
|
|
98
|
-
totalMemoryUsed,
|
|
99
|
-
results: this.results
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Prints benchmark results to console
|
|
104
|
-
*/
|
|
105
|
-
printResults() {
|
|
106
|
-
const report = this.generateReport();
|
|
107
|
-
logger_1.log.info('📊 Benchmark Results:');
|
|
108
|
-
logger_1.log.info('='.repeat(50));
|
|
109
|
-
logger_1.log.info(`Total Tests: ${report.totalTests}`);
|
|
110
|
-
logger_1.log.info(`Passed: ${report.passedTests}`);
|
|
111
|
-
logger_1.log.info(`Failed: ${report.failedTests}`);
|
|
112
|
-
logger_1.log.info(`Average Duration: ${report.averageDuration.toFixed(2)}ms`);
|
|
113
|
-
logger_1.log.info(`Total Memory Used: ${(report.totalMemoryUsed / 1024 / 1024).toFixed(2)}MB`);
|
|
114
|
-
logger_1.log.info('='.repeat(50));
|
|
115
|
-
report.results.forEach(result => {
|
|
116
|
-
const status = result.success ? '✅' : '❌';
|
|
117
|
-
logger_1.log.info(`${status} ${result.testName}: ${result.duration.toFixed(2)}ms`);
|
|
118
|
-
if (result.error) {
|
|
119
|
-
logger_1.log.info(` Error: ${result.error}`);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.BenchmarkRunner = BenchmarkRunner;
|
|
125
|
-
//# sourceMappingURL=benchmark.js.map
|
package/dist/benchmark.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser-pool.d.ts","sourceRoot":"","sources":["../src/browser-pool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAG1C,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAE9B,OAAO,GAAE,kBAAuB;IAW5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA8B1C;;OAEG;IACH,cAAc,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAMlD;;OAEG;YACW,aAAa;IAU3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;YACW,gBAAgB;IAgB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;YACW,gBAAgB;IAmB9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAOhE"}
|