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.
Files changed (210) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +1 -1
  3. package/dist/{auth-fast.d.ts → auth/auth-manager.d.ts} +4 -12
  4. package/dist/auth/auth-manager.d.ts.map +1 -0
  5. package/dist/{auth-fast.js → auth/auth-manager.js} +26 -68
  6. package/dist/auth/auth-manager.js.map +1 -0
  7. package/dist/auth/index.d.ts +4 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +8 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/session-manager.d.ts +8 -0
  12. package/dist/auth/session-manager.d.ts.map +1 -0
  13. package/dist/auth/session-manager.js +57 -0
  14. package/dist/auth/session-manager.js.map +1 -0
  15. package/dist/browser/browser-pool.d.ts.map +1 -0
  16. package/dist/{browser-pool.js → browser/browser-pool.js} +1 -1
  17. package/dist/browser/browser-pool.js.map +1 -0
  18. package/dist/browser/crawler-manager.d.ts.map +1 -0
  19. package/dist/{crawler-manager.js → browser/crawler-manager.js} +6 -6
  20. package/dist/browser/crawler-manager.js.map +1 -0
  21. package/dist/browser/index.d.ts +3 -0
  22. package/dist/browser/index.d.ts.map +1 -0
  23. package/dist/browser/index.js +8 -0
  24. package/dist/browser/index.js.map +1 -0
  25. package/dist/core/index.d.ts +3 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/core/index.js +8 -0
  28. package/dist/core/index.js.map +1 -0
  29. package/dist/core/media-scraper.d.ts +107 -0
  30. package/dist/core/media-scraper.d.ts.map +1 -0
  31. package/dist/core/media-scraper.js +496 -0
  32. package/dist/core/media-scraper.js.map +1 -0
  33. package/dist/core/workflow-executor.d.ts +17 -0
  34. package/dist/core/workflow-executor.d.ts.map +1 -0
  35. package/dist/core/workflow-executor.js +146 -0
  36. package/dist/core/workflow-executor.js.map +1 -0
  37. package/dist/index.d.ts +13 -132
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +31 -635
  40. package/dist/index.js.map +1 -1
  41. package/dist/platforms/instagram/constants.d.ts +25 -0
  42. package/dist/platforms/instagram/constants.d.ts.map +1 -0
  43. package/dist/platforms/instagram/constants.js +34 -0
  44. package/dist/platforms/instagram/constants.js.map +1 -0
  45. package/dist/platforms/instagram/extractors/carousel.d.ts +21 -0
  46. package/dist/platforms/instagram/extractors/carousel.d.ts.map +1 -0
  47. package/dist/platforms/instagram/extractors/carousel.js +64 -0
  48. package/dist/platforms/instagram/extractors/carousel.js.map +1 -0
  49. package/dist/platforms/instagram/extractors/common.d.ts +17 -0
  50. package/dist/platforms/instagram/extractors/common.d.ts.map +1 -0
  51. package/dist/platforms/instagram/extractors/common.js +67 -0
  52. package/dist/platforms/instagram/extractors/common.js.map +1 -0
  53. package/dist/platforms/instagram/extractors/metadata.d.ts +24 -0
  54. package/dist/platforms/instagram/extractors/metadata.d.ts.map +1 -0
  55. package/dist/platforms/instagram/extractors/metadata.js +129 -0
  56. package/dist/platforms/instagram/extractors/metadata.js.map +1 -0
  57. package/dist/platforms/instagram/extractors/profile.d.ts +16 -0
  58. package/dist/platforms/instagram/extractors/profile.d.ts.map +1 -0
  59. package/dist/platforms/instagram/extractors/profile.js +54 -0
  60. package/dist/platforms/instagram/extractors/profile.js.map +1 -0
  61. package/dist/platforms/{instagram.d.ts → instagram/index.d.ts} +2 -2
  62. package/dist/platforms/instagram/index.d.ts.map +1 -0
  63. package/dist/platforms/instagram/index.js +53 -0
  64. package/dist/platforms/instagram/index.js.map +1 -0
  65. package/dist/plugins/index.d.ts +4 -0
  66. package/dist/plugins/index.d.ts.map +1 -0
  67. package/dist/plugins/index.js +21 -0
  68. package/dist/plugins/index.js.map +1 -0
  69. package/dist/plugins/plugin-manager.d.ts +50 -0
  70. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  71. package/dist/{plugins.js → plugins/plugin-manager.js} +4 -4
  72. package/dist/plugins/plugin-manager.js.map +1 -0
  73. package/dist/types/auth.d.ts +15 -0
  74. package/dist/types/auth.d.ts.map +1 -0
  75. package/dist/types/auth.js +3 -0
  76. package/dist/types/auth.js.map +1 -0
  77. package/dist/types/browser.d.ts +28 -0
  78. package/dist/types/browser.d.ts.map +1 -0
  79. package/dist/types/browser.js +3 -0
  80. package/dist/types/browser.js.map +1 -0
  81. package/dist/{types.d.ts → types/common.d.ts} +15 -15
  82. package/dist/types/common.d.ts.map +1 -0
  83. package/dist/{types.js → types/common.js} +1 -1
  84. package/dist/types/common.js.map +1 -0
  85. package/dist/types/index.d.ts +7 -0
  86. package/dist/types/index.d.ts.map +1 -0
  87. package/dist/types/index.js +24 -0
  88. package/dist/types/index.js.map +1 -0
  89. package/dist/types/platform.d.ts +3 -0
  90. package/dist/types/platform.d.ts.map +1 -0
  91. package/dist/types/platform.js +20 -0
  92. package/dist/types/platform.js.map +1 -0
  93. package/dist/types/plugins.d.ts +61 -0
  94. package/dist/types/plugins.d.ts.map +1 -0
  95. package/dist/types/plugins.js +3 -0
  96. package/dist/types/plugins.js.map +1 -0
  97. package/dist/types/workflow.d.ts +17 -0
  98. package/dist/types/workflow.d.ts.map +1 -0
  99. package/dist/types/workflow.js +3 -0
  100. package/dist/types/workflow.js.map +1 -0
  101. package/dist/utils/config/config-parser.d.ts.map +1 -0
  102. package/dist/{config-parser.js → utils/config/config-parser.js} +5 -5
  103. package/dist/utils/config/config-parser.js.map +1 -0
  104. package/dist/utils/config/index.d.ts +2 -0
  105. package/dist/utils/config/index.d.ts.map +1 -0
  106. package/dist/utils/config/index.js +18 -0
  107. package/dist/utils/config/index.js.map +1 -0
  108. package/dist/{file-manager.d.ts → utils/file-manager.d.ts} +1 -1
  109. package/dist/utils/file-manager.d.ts.map +1 -0
  110. package/dist/utils/file-manager.js.map +1 -0
  111. package/dist/{health.d.ts → utils/health/health-checker.d.ts} +1 -1
  112. package/dist/utils/health/health-checker.d.ts.map +1 -0
  113. package/dist/{health.js → utils/health/health-checker.js} +1 -1
  114. package/dist/utils/health/health-checker.js.map +1 -0
  115. package/dist/utils/health/index.d.ts +2 -0
  116. package/dist/utils/health/index.d.ts.map +1 -0
  117. package/dist/utils/health/index.js +18 -0
  118. package/dist/utils/health/index.js.map +1 -0
  119. package/dist/utils/index.d.ts +8 -0
  120. package/dist/utils/index.d.ts.map +1 -0
  121. package/dist/utils/index.js +25 -0
  122. package/dist/utils/index.js.map +1 -0
  123. package/dist/utils/logger/index.d.ts +2 -0
  124. package/dist/utils/logger/index.d.ts.map +1 -0
  125. package/dist/utils/logger/index.js +18 -0
  126. package/dist/utils/logger/index.js.map +1 -0
  127. package/dist/utils/logger/logger.d.ts +44 -0
  128. package/dist/utils/logger/logger.d.ts.map +1 -0
  129. package/dist/utils/logger/logger.js +301 -0
  130. package/dist/utils/logger/logger.js.map +1 -0
  131. package/dist/utils/metrics/index.d.ts +2 -0
  132. package/dist/utils/metrics/index.d.ts.map +1 -0
  133. package/dist/utils/metrics/index.js +18 -0
  134. package/dist/utils/metrics/index.js.map +1 -0
  135. package/dist/{metrics.d.ts → utils/metrics/metrics-collector.d.ts} +1 -1
  136. package/dist/utils/metrics/metrics-collector.d.ts.map +1 -0
  137. package/dist/{metrics.js → utils/metrics/metrics-collector.js} +1 -1
  138. package/dist/utils/metrics/metrics-collector.js.map +1 -0
  139. package/dist/utils/progress-tracker.d.ts +11 -0
  140. package/dist/utils/progress-tracker.d.ts.map +1 -0
  141. package/dist/{progress-tracker.js → utils/progress-tracker.js} +0 -3
  142. package/dist/utils/progress-tracker.js.map +1 -0
  143. package/dist/utils/url-normalizer.d.ts.map +1 -0
  144. package/dist/utils/url-normalizer.js.map +1 -0
  145. package/package.json +1 -1
  146. package/dist/auth-fast.d.ts.map +0 -1
  147. package/dist/auth-fast.js.map +0 -1
  148. package/dist/auth.d.ts +0 -80
  149. package/dist/auth.d.ts.map +0 -1
  150. package/dist/auth.js +0 -370
  151. package/dist/auth.js.map +0 -1
  152. package/dist/benchmark.d.ts +0 -48
  153. package/dist/benchmark.d.ts.map +0 -1
  154. package/dist/benchmark.js +0 -125
  155. package/dist/benchmark.js.map +0 -1
  156. package/dist/browser-pool.d.ts.map +0 -1
  157. package/dist/browser-pool.js.map +0 -1
  158. package/dist/config-parser.d.ts.map +0 -1
  159. package/dist/config-parser.js.map +0 -1
  160. package/dist/crawler-manager.d.ts.map +0 -1
  161. package/dist/crawler-manager.js.map +0 -1
  162. package/dist/file-manager.d.ts.map +0 -1
  163. package/dist/file-manager.js.map +0 -1
  164. package/dist/health.d.ts.map +0 -1
  165. package/dist/health.js.map +0 -1
  166. package/dist/logger.d.ts +0 -22
  167. package/dist/logger.d.ts.map +0 -1
  168. package/dist/logger.js +0 -151
  169. package/dist/logger.js.map +0 -1
  170. package/dist/memory.d.ts +0 -56
  171. package/dist/memory.d.ts.map +0 -1
  172. package/dist/memory.js +0 -144
  173. package/dist/memory.js.map +0 -1
  174. package/dist/metrics.d.ts.map +0 -1
  175. package/dist/metrics.js.map +0 -1
  176. package/dist/parallel.d.ts +0 -59
  177. package/dist/parallel.d.ts.map +0 -1
  178. package/dist/parallel.js +0 -202
  179. package/dist/parallel.js.map +0 -1
  180. package/dist/platforms/instagram.d.ts.map +0 -1
  181. package/dist/platforms/instagram.js +0 -263
  182. package/dist/platforms/instagram.js.map +0 -1
  183. package/dist/plugins.d.ts +0 -132
  184. package/dist/plugins.d.ts.map +0 -1
  185. package/dist/plugins.js.map +0 -1
  186. package/dist/progress-tracker.d.ts +0 -15
  187. package/dist/progress-tracker.d.ts.map +0 -1
  188. package/dist/progress-tracker.js.map +0 -1
  189. package/dist/smart-logger.d.ts +0 -64
  190. package/dist/smart-logger.d.ts.map +0 -1
  191. package/dist/smart-logger.js +0 -149
  192. package/dist/smart-logger.js.map +0 -1
  193. package/dist/test-integration.d.ts +0 -2
  194. package/dist/test-integration.d.ts.map +0 -1
  195. package/dist/test-integration.js +0 -46
  196. package/dist/test-integration.js.map +0 -1
  197. package/dist/types.d.ts.map +0 -1
  198. package/dist/types.js.map +0 -1
  199. package/dist/url-normalizer.d.ts.map +0 -1
  200. package/dist/url-normalizer.js.map +0 -1
  201. package/dist/worker.d.ts +0 -2
  202. package/dist/worker.d.ts.map +0 -1
  203. package/dist/worker.js +0 -23
  204. package/dist/worker.js.map +0 -1
  205. /package/dist/{browser-pool.d.ts → browser/browser-pool.d.ts} +0 -0
  206. /package/dist/{crawler-manager.d.ts → browser/crawler-manager.d.ts} +0 -0
  207. /package/dist/{config-parser.d.ts → utils/config/config-parser.d.ts} +0 -0
  208. /package/dist/{file-manager.js → utils/file-manager.js} +0 -0
  209. /package/dist/{url-normalizer.d.ts → utils/url-normalizer.d.ts} +0 -0
  210. /package/dist/{url-normalizer.js → utils/url-normalizer.js} +0 -0
package/dist/parallel.js DELETED
@@ -1,202 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ParallelProcessor = void 0;
4
- const logger_1 = require("./logger");
5
- const worker_threads_1 = require("worker_threads");
6
- const path_1 = require("path");
7
- /**
8
- * Parallel processing manager for Instagram scraping
9
- * @class ParallelProcessor
10
- */
11
- class ParallelProcessor {
12
- /**
13
- * Creates a new ParallelProcessor
14
- * @param maxWorkers - Maximum number of worker threads (default: 4)
15
- */
16
- constructor(maxWorkers = 4) {
17
- this.tasks = new Map();
18
- this.maxWorkers = maxWorkers;
19
- this.workerPool = {
20
- workers: [],
21
- availableWorkers: [],
22
- busyWorkers: new Set()
23
- };
24
- this.initializeWorkerPool();
25
- }
26
- /**
27
- * Initializes the worker thread pool
28
- */
29
- initializeWorkerPool() {
30
- for (let i = 0; i < this.maxWorkers; i++) {
31
- const worker = new worker_threads_1.Worker((0, path_1.join)(__dirname, 'worker.js'));
32
- this.workerPool.workers.push(worker);
33
- this.workerPool.availableWorkers.push(i);
34
- worker.on('message', (message) => {
35
- this.handleWorkerMessage(i, message);
36
- });
37
- worker.on('error', (error) => {
38
- logger_1.log.error(`Worker ${i} error:`, error);
39
- this.handleWorkerError(i, error);
40
- });
41
- }
42
- }
43
- /**
44
- * Handles messages from worker threads
45
- */
46
- handleWorkerMessage(workerId, message) {
47
- const { taskId, type, data, error } = message;
48
- const task = this.tasks.get(taskId);
49
- if (!task)
50
- return;
51
- switch (type) {
52
- case 'success':
53
- task.status = 'completed';
54
- task.result = data;
55
- task.endTime = Date.now();
56
- break;
57
- case 'error':
58
- task.status = 'failed';
59
- task.error = error;
60
- task.endTime = Date.now();
61
- break;
62
- }
63
- // Mark worker as available
64
- this.workerPool.busyWorkers.delete(workerId);
65
- this.workerPool.availableWorkers.push(workerId);
66
- }
67
- /**
68
- * Handles worker errors
69
- */
70
- handleWorkerError(workerId, error) {
71
- logger_1.log.error(`Worker ${workerId} encountered an error:`, error);
72
- // Find tasks assigned to this worker and mark them as failed
73
- for (const [taskId, task] of this.tasks.entries()) {
74
- if (task.status === 'running') {
75
- task.status = 'failed';
76
- task.error = `Worker error: ${error.message}`;
77
- task.endTime = Date.now();
78
- }
79
- }
80
- // Mark worker as available again
81
- this.workerPool.busyWorkers.delete(workerId);
82
- this.workerPool.availableWorkers.push(workerId);
83
- }
84
- /**
85
- * Scrapes multiple Instagram posts in parallel
86
- * @param urls - Array of Instagram post URLs
87
- * @param options - Scraping options
88
- * @returns Promise<InstagramPostData[]>
89
- */
90
- async scrapeMultiple(urls, options = {}) {
91
- const taskIds = [];
92
- // Create tasks
93
- for (const url of urls) {
94
- const taskId = this.generateTaskId();
95
- const task = {
96
- id: taskId,
97
- url,
98
- options,
99
- status: 'pending'
100
- };
101
- this.tasks.set(taskId, task);
102
- taskIds.push(taskId);
103
- }
104
- // Execute tasks
105
- await this.executeTasks(taskIds);
106
- // Collect results
107
- const results = [];
108
- for (const taskId of taskIds) {
109
- const task = this.tasks.get(taskId);
110
- if (task?.result) {
111
- results.push(task.result);
112
- }
113
- }
114
- return results;
115
- }
116
- /**
117
- * Executes tasks using available workers
118
- */
119
- async executeTasks(taskIds) {
120
- return new Promise((resolve) => {
121
- let completedTasks = 0;
122
- const totalTasks = taskIds.length;
123
- const checkCompletion = () => {
124
- if (completedTasks >= totalTasks) {
125
- resolve();
126
- }
127
- };
128
- const assignTask = () => {
129
- if (this.workerPool.availableWorkers.length === 0)
130
- return;
131
- const pendingTaskId = taskIds.find(id => {
132
- const task = this.tasks.get(id);
133
- return task?.status === 'pending';
134
- });
135
- if (!pendingTaskId)
136
- return;
137
- const workerId = this.workerPool.availableWorkers.pop();
138
- const task = this.tasks.get(pendingTaskId);
139
- task.status = 'running';
140
- task.startTime = Date.now();
141
- this.workerPool.busyWorkers.add(workerId);
142
- // Send task to worker
143
- this.workerPool.workers[workerId].postMessage({
144
- taskId: pendingTaskId,
145
- url: task.url,
146
- options: task.options
147
- });
148
- };
149
- // Monitor task completion
150
- const monitor = setInterval(() => {
151
- completedTasks = taskIds.filter(id => {
152
- const task = this.tasks.get(id);
153
- return task?.status === 'completed' || task?.status === 'failed';
154
- }).length;
155
- // Assign new tasks to available workers
156
- assignTask();
157
- if (completedTasks >= totalTasks) {
158
- clearInterval(monitor);
159
- resolve();
160
- }
161
- }, 100);
162
- // Start initial task assignment
163
- for (let i = 0; i < Math.min(this.maxWorkers, taskIds.length); i++) {
164
- assignTask();
165
- }
166
- });
167
- }
168
- /**
169
- * Gets processing statistics
170
- */
171
- getStats() {
172
- const tasks = Array.from(this.tasks.values());
173
- const completed = tasks.filter(t => t.status === 'completed').length;
174
- const failed = tasks.filter(t => t.status === 'failed').length;
175
- const running = tasks.filter(t => t.status === 'running').length;
176
- const pending = tasks.filter(t => t.status === 'pending').length;
177
- return {
178
- totalTasks: tasks.length,
179
- completed,
180
- failed,
181
- running,
182
- pending,
183
- availableWorkers: this.workerPool.availableWorkers.length,
184
- busyWorkers: this.workerPool.busyWorkers.size
185
- };
186
- }
187
- /**
188
- * Generates unique task ID
189
- */
190
- generateTaskId() {
191
- return `task_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
192
- }
193
- /**
194
- * Shuts down all workers
195
- */
196
- async shutdown() {
197
- await Promise.all(this.workerPool.workers.map(worker => worker.terminate()));
198
- logger_1.log.info('🛑 All workers terminated');
199
- }
200
- }
201
- exports.ParallelProcessor = ParallelProcessor;
202
- //# sourceMappingURL=parallel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../src/parallel.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAE/B,mDAAwC;AACxC,+BAA4B;AAmB5B;;;GAGG;AACH,MAAa,iBAAiB;IAK5B;;;OAGG;IACH,YAAY,aAAqB,CAAC;QAP1B,UAAK,GAA8B,IAAI,GAAG,EAAE,CAAC;QAQnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,EAAE;YACpB,WAAW,EAAE,IAAI,GAAG,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEzC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,YAAG,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,QAAgB,EAAE,OAAY;QACxD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,MAAM;QACV,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAgB,EAAE,KAAY;QACtD,YAAG,CAAC,KAAK,CAAC,UAAU,QAAQ,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAE7D,6DAA6D;QAC7D,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,IAAc,EAAE,UAA2B,EAAE;QAChE,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,eAAe;QACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,IAAI,GAAiB;gBACzB,EAAE,EAAE,MAAM;gBACV,GAAG;gBACH,OAAO;gBACP,MAAM,EAAE,SAAS;aAClB,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEjC,kBAAkB;QAClB,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,OAAiB;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;YAElC,MAAM,eAAe,GAAG,GAAG,EAAE;gBAC3B,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;oBACjC,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,UAAU,GAAG,GAAG,EAAE;gBACtB,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAE1D,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChC,OAAO,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;gBACpC,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa;oBAAE,OAAO;gBAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAG,CAAC;gBACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC;gBAE5C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE1C,sBAAsB;gBACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;oBAC5C,MAAM,EAAE,aAAa;oBACrB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,0BAA0B;YAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;gBAC/B,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChC,OAAO,IAAI,EAAE,MAAM,KAAK,WAAW,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC;gBACnE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAEV,wCAAwC;gBACxC,UAAU,EAAE,CAAC;gBAEb,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;oBACjC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACvB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,gCAAgC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnE,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAEjE,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,SAAS;YACT,MAAM;YACN,OAAO;YACP,OAAO;YACP,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM;YACzD,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI;SAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAC1D,CAAC;QACF,YAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,CAAC;CACF;AA/ND,8CA+NC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../src/platforms/instagram.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAG1D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,cAqD7B,CAAC"}
@@ -1,263 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InstagramPlugin = void 0;
4
- const logger_1 = require("../logger");
5
- /**
6
- * Instagram platform plugin - built-in support for Instagram
7
- */
8
- exports.InstagramPlugin = {
9
- type: 'platform',
10
- name: 'instagram',
11
- version: '1.0.0',
12
- urlPatterns: [
13
- /instagram\.com\/p\//,
14
- /instagram\.com\/[^\/]+\/p\//,
15
- /instagram\.com\/reel\//,
16
- ],
17
- validateUrl(url) {
18
- return this.urlPatterns.some(pattern => pattern.test(url));
19
- },
20
- async scrape(page, url) {
21
- // Extract post ID from URL
22
- const urlPath = new URL(url).pathname;
23
- const postId = urlPath.match(/\/(p|reel)\/([^\/]+)/)?.[2] || '';
24
- logger_1.log.info('🔍 Target post ID from URL:', postId);
25
- // Wait for page to fully load
26
- await page.waitForTimeout(3000);
27
- // Extract profile information
28
- const profileInfo = await extractProfileInfo(page);
29
- logger_1.log.info('👤 Profile info:', profileInfo);
30
- // Extract media data
31
- const carouselData = await extractCarouselData(page);
32
- logger_1.log.info(`Found ${carouselData.count} media items`);
33
- // Extract metadata
34
- const metadata = await extractMetadata(page);
35
- const mediaData = {
36
- url,
37
- post_id: postId,
38
- platform: 'instagram',
39
- profile_name: profileInfo.profileName,
40
- profile_username: profileInfo.profileUsername,
41
- profile_url: profileInfo.profileUrl,
42
- media: carouselData.items,
43
- metadata
44
- };
45
- return mediaData;
46
- },
47
- workflow: './workflows/instagram.wf'
48
- };
49
- /**
50
- * Extract profile information from Instagram page
51
- */
52
- async function extractProfileInfo(page) {
53
- return await page.evaluate(() => {
54
- let profileUrl = '';
55
- let profileName = '';
56
- let profileUsername = '';
57
- // Method 1: Extract from twitter:title meta tag
58
- const twitterTitle = document.querySelector('meta[name="twitter:title"]');
59
- if (twitterTitle?.content) {
60
- const content = twitterTitle.content;
61
- // Format 1: "Display Name (@username) • Instagram photos and videos"
62
- const match1 = content.match(/^(.+?)\s+\((@[^)]+)\)/);
63
- // Format 2: "@username • Instagram photos and videos"
64
- const match2 = content.match(/^(@[a-zA-Z0-9._]+)/);
65
- if (match1) {
66
- profileName = match1[1].trim();
67
- profileUsername = match1[2].replace('@', '');
68
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
69
- }
70
- else if (match2) {
71
- profileUsername = match2[1].replace('@', '');
72
- profileName = match2[1];
73
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
74
- }
75
- }
76
- // Method 2: Fallback to og:title
77
- if (!profileName) {
78
- const ogTitle = document.querySelector('meta[property="og:title"]');
79
- if (ogTitle?.content) {
80
- const match = ogTitle.content.match(/^(.+?)\s+on Instagram/);
81
- if (match)
82
- profileName = match[1];
83
- }
84
- }
85
- // Method 3: Extract from profile links
86
- if (!profileUsername) {
87
- const links = document.querySelectorAll('a[href*="/"]');
88
- for (const link of links) {
89
- const href = link.getAttribute('href');
90
- if (href?.match(/^\/[a-zA-Z0-9._]+\/$/) &&
91
- !href.includes('explore') && !href.includes('reels') &&
92
- !href.includes('direct') && !href.includes('accounts')) {
93
- profileUsername = href.replace(/\//g, '');
94
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
95
- if (!profileName)
96
- profileName = `@${profileUsername}`;
97
- break;
98
- }
99
- }
100
- }
101
- // Method 4: Extract from URL path
102
- if (!profileUsername) {
103
- const pathSegments = window.location.pathname.split('/').filter(Boolean);
104
- if (pathSegments.length >= 3 && pathSegments[0] !== 'p' && pathSegments[0] !== 'reel') {
105
- profileUsername = pathSegments[0];
106
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
107
- if (!profileName)
108
- profileName = `@${profileUsername}`;
109
- }
110
- }
111
- return { profileName, profileUsername, profileUrl };
112
- });
113
- }
114
- /**
115
- * Extract carousel media data from Instagram page
116
- */
117
- async function extractCarouselData(page) {
118
- return await page.evaluate(() => {
119
- const scripts = document.querySelectorAll('script[type="application/json"]');
120
- for (const script of scripts) {
121
- try {
122
- const text = script.textContent;
123
- if (!text?.includes('carousel_media'))
124
- continue;
125
- const json = JSON.parse(text);
126
- // Recursively search for carousel_media
127
- function findCarouselMedia(obj) {
128
- if (!obj || typeof obj !== 'object')
129
- return null;
130
- if (obj.carousel_media && Array.isArray(obj.carousel_media)) {
131
- return obj.carousel_media;
132
- }
133
- for (const key in obj) {
134
- const result = findCarouselMedia(obj[key]);
135
- if (result)
136
- return result;
137
- }
138
- return null;
139
- }
140
- const carouselMedia = findCarouselMedia(json);
141
- if (carouselMedia) {
142
- const items = carouselMedia.map((item, index) => ({
143
- index,
144
- url: item.image_versions2?.candidates?.[0]?.url || '',
145
- width: item.original_width,
146
- height: item.original_height,
147
- })).filter((item) => item.url);
148
- return { items, count: items.length };
149
- }
150
- }
151
- catch (e) {
152
- // Continue to next script
153
- }
154
- }
155
- return { items: [], count: 0 };
156
- });
157
- }
158
- /**
159
- * Extract extended metadata from Instagram page
160
- */
161
- async function extractMetadata(page) {
162
- return await page.evaluate(() => {
163
- const result = {
164
- likesCount: null,
165
- commentsCount: null,
166
- caption: null,
167
- timestamp: null,
168
- location: null
169
- };
170
- // Find timestamp in elements containing "ago"
171
- const allElements = document.querySelectorAll('*');
172
- for (const element of allElements) {
173
- const text = element.textContent?.trim();
174
- if (text?.match(/\d+\s+(hour|minute|day|week|month)s?\s+ago/i)) {
175
- result.timestamp = text.match(/\d+\s+(hour|minute|day|week|month)s?\s+ago/i)?.[0] || null;
176
- break;
177
- }
178
- }
179
- // Extract metadata from JSON scripts
180
- const scripts = document.querySelectorAll('script[type="application/json"]');
181
- for (const script of scripts) {
182
- try {
183
- const text = script.textContent;
184
- if (!text)
185
- continue;
186
- const json = JSON.parse(text);
187
- // Recursively search for post data
188
- function extractFromObject(obj) {
189
- if (!obj || typeof obj !== 'object')
190
- return;
191
- // Caption extraction
192
- if (obj.edge_media_to_caption?.edges?.[0]?.node?.text) {
193
- result.caption = obj.edge_media_to_caption.edges[0].node.text;
194
- }
195
- else if (obj.caption?.text) {
196
- result.caption = obj.caption.text;
197
- }
198
- else if (obj.accessibility_caption) {
199
- result.caption = obj.accessibility_caption;
200
- }
201
- // Like count extraction
202
- if (obj.edge_media_preview_like?.count !== undefined) {
203
- result.likesCount = obj.edge_media_preview_like.count;
204
- }
205
- else if (obj.like_count !== undefined) {
206
- result.likesCount = obj.like_count;
207
- }
208
- else if (obj.edge_liked_by?.count !== undefined) {
209
- result.likesCount = obj.edge_liked_by.count;
210
- }
211
- // Comment count extraction
212
- if (obj.edge_media_to_comment?.count !== undefined) {
213
- result.commentsCount = obj.edge_media_to_comment.count;
214
- }
215
- else if (obj.comment_count !== undefined) {
216
- result.commentsCount = obj.comment_count;
217
- }
218
- else if (obj.edge_media_to_parent_comment?.count !== undefined) {
219
- result.commentsCount = obj.edge_media_to_parent_comment.count;
220
- }
221
- // Timestamp fallback
222
- if (!result.timestamp && obj.taken_at_timestamp) {
223
- const date = new Date(obj.taken_at_timestamp * 1000);
224
- const now = new Date();
225
- const diffMs = now.getTime() - date.getTime();
226
- const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
227
- const diffDays = Math.floor(diffHours / 24);
228
- if (diffDays > 0) {
229
- result.timestamp = `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
230
- }
231
- else if (diffHours > 0) {
232
- result.timestamp = `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
233
- }
234
- else {
235
- const diffMins = Math.floor(diffMs / (1000 * 60));
236
- result.timestamp = `${diffMins} minute${diffMins > 1 ? 's' : ''} ago`;
237
- }
238
- }
239
- // Location extraction
240
- if (obj.location?.name) {
241
- result.location = obj.location.name;
242
- }
243
- else if (obj.venue?.name) {
244
- result.location = obj.venue.name;
245
- }
246
- else if (obj.place?.name) {
247
- result.location = obj.place.name;
248
- }
249
- // Recurse through object
250
- for (const key in obj) {
251
- extractFromObject(obj[key]);
252
- }
253
- }
254
- extractFromObject(json);
255
- }
256
- catch (e) {
257
- // Continue to next script
258
- }
259
- }
260
- return result;
261
- });
262
- }
263
- //# sourceMappingURL=instagram.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/platforms/instagram.ts"],"names":[],"mappings":"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"}
package/dist/plugins.d.ts DELETED
@@ -1,132 +0,0 @@
1
- import { ProgressCallback } from "./progress-tracker";
2
- /**
3
- * Plugin system for extensibility and multi-platform support
4
- */
5
- import { Page } from 'puppeteer';
6
- import { MediaData, CarouselItem } from './types';
7
- /**
8
- * Scraping options
9
- */
10
- export interface ScrapingOptions {
11
- saveToFile?: boolean;
12
- outputPath?: string;
13
- headless?: boolean;
14
- timeout?: number;
15
- retries?: number;
16
- useSession?: boolean;
17
- progressCallback?: ProgressCallback;
18
- filenamePattern?: string;
19
- skipDuplicates?: boolean;
20
- }
21
- /**
22
- * Workflow task definition
23
- */
24
- export interface WorkflowTask {
25
- name: string;
26
- action: 'click' | 'clickOutside' | 'doubleClick' | 'hold' | 'keypress';
27
- selectors?: string[];
28
- fallback?: string;
29
- fallbackText?: string;
30
- clicks?: number;
31
- wait?: number;
32
- optional?: boolean;
33
- holdDuration?: number;
34
- key?: string;
35
- modifiers?: ('Control' | 'Shift' | 'Alt' | 'Meta')[];
36
- }
37
- /**
38
- * Platform plugin - adds support for a new platform
39
- */
40
- export interface PlatformPlugin {
41
- type: 'platform';
42
- /** Plugin name (e.g., 'pinterest', 'tiktok') */
43
- name: string;
44
- /** Plugin version */
45
- version: string;
46
- /** URL patterns this plugin handles */
47
- urlPatterns: RegExp[];
48
- /** Validate if URL is supported by this plugin */
49
- validateUrl(url: string): boolean;
50
- /** Scrape media from the platform */
51
- scrape(page: Page, url: string): Promise<MediaData>;
52
- /** Optional workflow for handling modals, cookies, etc. */
53
- workflow?: WorkflowTask[] | string;
54
- }
55
- /**
56
- * Utility plugin - extends functionality (logging, caching, analytics, etc.)
57
- */
58
- export interface UtilityPlugin {
59
- type: 'utility';
60
- /** Plugin name */
61
- name: string;
62
- /** Plugin version */
63
- version: string;
64
- /** Lifecycle hooks */
65
- hooks: PluginHooks;
66
- }
67
- /**
68
- * Plugin lifecycle hooks
69
- */
70
- export interface PluginHooks {
71
- /** Called before scraping starts */
72
- onBeforeScrape?: (url: string, options: ScrapingOptions) => Promise<void>;
73
- /** Called after scraping completes */
74
- onAfterScrape?: (data: MediaData) => Promise<MediaData>;
75
- /** Called when an error occurs */
76
- onError?: (error: Error) => Promise<void>;
77
- /** Called after media items are extracted */
78
- onMediaExtracted?: (media: CarouselItem[]) => Promise<CarouselItem[]>;
79
- }
80
- /**
81
- * Union type for all plugins
82
- */
83
- export type Plugin = PlatformPlugin | UtilityPlugin;
84
- /**
85
- * Plugin manager for registering and managing plugins
86
- */
87
- export declare class PluginManager {
88
- private plugins;
89
- /**
90
- * Register a plugin
91
- * @param plugin - Plugin to register
92
- */
93
- register(plugin: Plugin): void;
94
- /**
95
- * Unregister a plugin
96
- * @param pluginName - Name of plugin to unregister
97
- */
98
- unregister(pluginName: string): void;
99
- /**
100
- * Get platform plugin for a given URL
101
- * @param url - URL to match against platform patterns
102
- * @returns PlatformPlugin or null if no match
103
- */
104
- getPlatformForUrl(url: string): PlatformPlugin | null;
105
- /**
106
- * Get all registered plugins
107
- */
108
- getPlugins(): Plugin[];
109
- /**
110
- * Get all platform plugins
111
- */
112
- getPlatformPlugins(): PlatformPlugin[];
113
- /**
114
- * Get all utility plugins
115
- */
116
- getUtilityPlugins(): UtilityPlugin[];
117
- /**
118
- * Execute a lifecycle hook across all utility plugins
119
- * @param hookName - Name of the hook to execute
120
- * @param args - Arguments to pass to the hook
121
- */
122
- executeHook<K extends keyof PluginHooks>(hookName: K, ...args: Parameters<NonNullable<PluginHooks[K]>>): Promise<any>;
123
- /**
124
- * Check if a plugin is registered
125
- */
126
- hasPlugin(pluginName: string): boolean;
127
- /**
128
- * Get a specific plugin by name
129
- */
130
- getPlugin(pluginName: string): Plugin | undefined;
131
- }
132
- //# sourceMappingURL=plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Progress tracking system for download operations
3
- */
4
- export interface ProgressEvent {
5
- type: 'browser' | 'navigation' | 'extraction' | 'metadata' | 'complete';
6
- percentage: number;
7
- message: string;
8
- }
9
- export type ProgressCallback = (event: ProgressEvent) => void;
10
- export declare class ProgressTracker {
11
- private callback?;
12
- constructor(callback?: ProgressCallback);
13
- emit(type: ProgressEvent['type'], percentage: number, message: string): void;
14
- }
15
- //# sourceMappingURL=progress-tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-tracker.d.ts","sourceRoot":"","sources":["../src/progress-tracker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAmB;gBAExB,QAAQ,CAAC,EAAE,gBAAgB;IAIvC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAK7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-tracker.js","sourceRoot":"","sources":["../src/progress-tracker.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUH,MAAa,eAAe;IAG1B,YAAY,QAA2B;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,IAA2B,EAAE,UAAkB,EAAE,OAAe;QACnE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAZD,0CAYC"}