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.
- package/LICENSE +21 -0
- package/README.md +153 -0
- package/dist/auth-fast.d.ts +32 -0
- package/dist/auth-fast.d.ts.map +1 -0
- package/dist/auth-fast.js +505 -0
- package/dist/auth-fast.js.map +1 -0
- package/dist/auth.d.ts +80 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +370 -0
- package/dist/auth.js.map +1 -0
- package/dist/benchmark.d.ts +48 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +125 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/health.d.ts +28 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +108 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +492 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +22 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +151 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory.d.ts +56 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +144 -0
- package/dist/memory.js.map +1 -0
- package/dist/metrics.d.ts +19 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +79 -0
- package/dist/metrics.js.map +1 -0
- package/dist/parallel.d.ts +59 -0
- package/dist/parallel.d.ts.map +1 -0
- package/dist/parallel.js +202 -0
- package/dist/parallel.js.map +1 -0
- package/dist/platforms/index.d.ts +7 -0
- package/dist/platforms/index.d.ts.map +1 -0
- package/dist/platforms/index.js +13 -0
- package/dist/platforms/index.js.map +1 -0
- package/dist/platforms/instagram.d.ts +6 -0
- package/dist/platforms/instagram.d.ts.map +1 -0
- package/dist/platforms/instagram.js +189 -0
- package/dist/platforms/instagram.js.map +1 -0
- package/dist/plugins.d.ts +128 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +107 -0
- package/dist/plugins.js.map +1 -0
- package/dist/test-integration.d.ts +2 -0
- package/dist/test-integration.d.ts.map +1 -0
- package/dist/test-integration.js +46 -0
- package/dist/test-integration.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +23 -0
- package/dist/worker.js.map +1 -0
- package/package.json +56 -0
package/dist/health.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthChecker = void 0;
|
|
4
|
+
class HealthChecker {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.startTime = Date.now();
|
|
7
|
+
this.errors = [];
|
|
8
|
+
}
|
|
9
|
+
async checkHealth() {
|
|
10
|
+
const errors = [];
|
|
11
|
+
let status = 'healthy';
|
|
12
|
+
// Memory check
|
|
13
|
+
const memoryUsage = process.memoryUsage();
|
|
14
|
+
const memoryPercentage = (memoryUsage.heapUsed / memoryUsage.heapTotal) * 100;
|
|
15
|
+
if (memoryPercentage > 90) {
|
|
16
|
+
errors.push('High memory usage');
|
|
17
|
+
status = 'unhealthy';
|
|
18
|
+
}
|
|
19
|
+
else if (memoryPercentage > 70) {
|
|
20
|
+
errors.push('Elevated memory usage');
|
|
21
|
+
status = 'degraded';
|
|
22
|
+
}
|
|
23
|
+
// Browser check
|
|
24
|
+
let browserAvailable = false;
|
|
25
|
+
let browserVersion;
|
|
26
|
+
try {
|
|
27
|
+
const { execSync } = require('child_process');
|
|
28
|
+
// Try different browser detection methods
|
|
29
|
+
try {
|
|
30
|
+
// Try Chrome on macOS
|
|
31
|
+
browserVersion = execSync('/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --version', { encoding: 'utf8' }).trim();
|
|
32
|
+
browserAvailable = true;
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
try {
|
|
36
|
+
// Try Chromium
|
|
37
|
+
browserVersion = execSync('chromium --version', { encoding: 'utf8' }).trim();
|
|
38
|
+
browserAvailable = true;
|
|
39
|
+
}
|
|
40
|
+
catch (e2) {
|
|
41
|
+
try {
|
|
42
|
+
// Try system Chrome
|
|
43
|
+
browserVersion = execSync('google-chrome --version', { encoding: 'utf8' }).trim();
|
|
44
|
+
browserAvailable = true;
|
|
45
|
+
}
|
|
46
|
+
catch (e3) {
|
|
47
|
+
// Check if Puppeteer executable exists
|
|
48
|
+
if (process.env.PUPPETEER_EXECUTABLE_PATH) {
|
|
49
|
+
browserVersion = 'Puppeteer Browser';
|
|
50
|
+
browserAvailable = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
// Browser detection failed - but this is not critical for scraping
|
|
58
|
+
browserVersion = 'Detection failed (scraping may still work)';
|
|
59
|
+
browserAvailable = false;
|
|
60
|
+
}
|
|
61
|
+
// Only add browser error if it's critical
|
|
62
|
+
if (!browserAvailable && !process.env.PUPPETEER_EXECUTABLE_PATH) {
|
|
63
|
+
errors.push('No browser found - install Chrome or set PUPPETEER_EXECUTABLE_PATH');
|
|
64
|
+
status = status === 'healthy' ? 'degraded' : status;
|
|
65
|
+
}
|
|
66
|
+
let diskAvailable = 0;
|
|
67
|
+
let diskPercentage = 0;
|
|
68
|
+
try {
|
|
69
|
+
const fs = require('fs');
|
|
70
|
+
const stats = fs.statSync('.');
|
|
71
|
+
diskAvailable = stats.size || 0;
|
|
72
|
+
diskPercentage = 0; // Simplified for demo
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
errors.push('Disk check failed');
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
status,
|
|
79
|
+
timestamp: new Date().toISOString(),
|
|
80
|
+
uptime: Date.now() - this.startTime,
|
|
81
|
+
memory: {
|
|
82
|
+
used: memoryUsage.heapUsed,
|
|
83
|
+
total: memoryUsage.heapTotal,
|
|
84
|
+
percentage: memoryPercentage
|
|
85
|
+
},
|
|
86
|
+
browser: {
|
|
87
|
+
available: browserAvailable,
|
|
88
|
+
version: browserVersion
|
|
89
|
+
},
|
|
90
|
+
disk: {
|
|
91
|
+
available: diskAvailable,
|
|
92
|
+
percentage: diskPercentage
|
|
93
|
+
},
|
|
94
|
+
errors
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
isHealthy() {
|
|
98
|
+
return this.errors.length === 0;
|
|
99
|
+
}
|
|
100
|
+
addError(error) {
|
|
101
|
+
this.errors.push(error);
|
|
102
|
+
}
|
|
103
|
+
clearErrors() {
|
|
104
|
+
this.errors = [];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.HealthChecker = HealthChecker;
|
|
108
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Page } from 'puppeteer';
|
|
2
|
+
import { InstagramPostData, MediaData } from './types';
|
|
3
|
+
import { FastAuthManager, LoginCredentials } from './auth-fast';
|
|
4
|
+
import { PluginManager, Plugin, ScrapingOptions, WorkflowTask } from './plugins';
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './auth-fast';
|
|
7
|
+
export * from './plugins';
|
|
8
|
+
export * from './metrics';
|
|
9
|
+
export * from './health';
|
|
10
|
+
export * from './platforms';
|
|
11
|
+
/**
|
|
12
|
+
* Executes predefined workflows for platform interaction automation
|
|
13
|
+
* @class WorkflowExecutor
|
|
14
|
+
*/
|
|
15
|
+
export declare class WorkflowExecutor {
|
|
16
|
+
/**
|
|
17
|
+
* Pauses execution for specified milliseconds
|
|
18
|
+
*/
|
|
19
|
+
private sleep;
|
|
20
|
+
/**
|
|
21
|
+
* Executes a workflow from JSON file or array
|
|
22
|
+
*/
|
|
23
|
+
executeWorkflow(page: Page, workflowOrPath: string | WorkflowTask[]): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Main media scraper class with multi-platform support
|
|
27
|
+
* @class MediaScraper
|
|
28
|
+
*/
|
|
29
|
+
export declare class MediaScraper {
|
|
30
|
+
private workflowExecutor;
|
|
31
|
+
private metricsCollector;
|
|
32
|
+
private healthChecker;
|
|
33
|
+
private pluginManager;
|
|
34
|
+
private authManager;
|
|
35
|
+
private currentScrapeId;
|
|
36
|
+
private stepCallback;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new MediaScraper instance
|
|
39
|
+
*/
|
|
40
|
+
constructor();
|
|
41
|
+
/**
|
|
42
|
+
* Register a plugin (platform or utility)
|
|
43
|
+
*/
|
|
44
|
+
use(plugin: Plugin): void;
|
|
45
|
+
/**
|
|
46
|
+
* Login to Instagram
|
|
47
|
+
*/
|
|
48
|
+
login(credentials: LoginCredentials): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Logout and clear session
|
|
51
|
+
*/
|
|
52
|
+
logout(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Universal scrape method - automatically detects platform
|
|
55
|
+
*/
|
|
56
|
+
scrape(url: string, options?: ScrapingOptions): Promise<MediaData>;
|
|
57
|
+
/**
|
|
58
|
+
* Scrape Instagram post (backward compatible method)
|
|
59
|
+
* @deprecated Use scrape() instead for multi-platform support
|
|
60
|
+
*/
|
|
61
|
+
scrapePost(url: string, options?: ScrapingOptions): Promise<InstagramPostData>;
|
|
62
|
+
private saveToFile;
|
|
63
|
+
/**
|
|
64
|
+
* Set callback for step tracking
|
|
65
|
+
*/
|
|
66
|
+
setStepCallback(callback: (stepData: any) => void): void;
|
|
67
|
+
/**
|
|
68
|
+
* Gets current metrics
|
|
69
|
+
*/
|
|
70
|
+
getMetrics(): import("./metrics").ScrapingMetrics;
|
|
71
|
+
/**
|
|
72
|
+
* Gets health status
|
|
73
|
+
*/
|
|
74
|
+
getHealth(): Promise<import("./health").HealthStatus>;
|
|
75
|
+
/**
|
|
76
|
+
* Gets Prometheus-formatted metrics
|
|
77
|
+
*/
|
|
78
|
+
getPrometheusMetrics(): string;
|
|
79
|
+
/**
|
|
80
|
+
* Get plugin manager for advanced plugin operations
|
|
81
|
+
*/
|
|
82
|
+
getPluginManager(): PluginManager;
|
|
83
|
+
/**
|
|
84
|
+
* Get auth manager for advanced auth operations
|
|
85
|
+
*/
|
|
86
|
+
getAuthManager(): FastAuthManager;
|
|
87
|
+
refreshSession(): Promise<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
* Pauses execution for specified milliseconds
|
|
90
|
+
*/
|
|
91
|
+
private sleep;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Backward compatibility alias
|
|
95
|
+
* @deprecated Use MediaScraper instead
|
|
96
|
+
*/
|
|
97
|
+
export declare class InstaScraper extends MediaScraper {
|
|
98
|
+
constructor();
|
|
99
|
+
}
|
|
100
|
+
export { log } from './logger';
|
|
101
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAgB,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAkB,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASjG,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAE5B;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA+H1F;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAA0C;IAE9D;;OAEG;;IAYH;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB5D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IAmK5E;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAiB1E,UAAU;IAaxB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI;IAIjD;;OAEG;IACH,UAAU;IAIV;;OAEG;IACG,SAAS;IAIf;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,cAAc,IAAI,eAAe;IAI3B,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBxC;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,YAAY;;CAK7C;AAGD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
|