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
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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"}
@@ -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"}