paper-search-cli 0.1.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 (166) hide show
  1. package/.env.example +165 -0
  2. package/LICENSE +21 -0
  3. package/README-sc.md +642 -0
  4. package/README.md +642 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +637 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/config/ConfigService.d.ts +26 -0
  10. package/dist/config/ConfigService.d.ts.map +1 -0
  11. package/dist/config/ConfigService.js +145 -0
  12. package/dist/config/ConfigService.js.map +1 -0
  13. package/dist/config/constants.d.ts +140 -0
  14. package/dist/config/constants.d.ts.map +1 -0
  15. package/dist/config/constants.js +93 -0
  16. package/dist/config/constants.js.map +1 -0
  17. package/dist/core/diagnostics.d.ts +43 -0
  18. package/dist/core/diagnostics.d.ts.map +1 -0
  19. package/dist/core/diagnostics.js +544 -0
  20. package/dist/core/diagnostics.js.map +1 -0
  21. package/dist/core/handleToolCall.d.ts +8 -0
  22. package/dist/core/handleToolCall.d.ts.map +1 -0
  23. package/dist/core/handleToolCall.js +440 -0
  24. package/dist/core/handleToolCall.js.map +1 -0
  25. package/dist/core/schemas.d.ts +454 -0
  26. package/dist/core/schemas.d.ts.map +1 -0
  27. package/dist/core/schemas.js +322 -0
  28. package/dist/core/schemas.js.map +1 -0
  29. package/dist/core/searchers.d.ts +45 -0
  30. package/dist/core/searchers.d.ts.map +1 -0
  31. package/dist/core/searchers.js +73 -0
  32. package/dist/core/searchers.js.map +1 -0
  33. package/dist/core/tools.d.ts +7 -0
  34. package/dist/core/tools.d.ts.map +1 -0
  35. package/dist/core/tools.js +640 -0
  36. package/dist/core/tools.js.map +1 -0
  37. package/dist/models/Paper.d.ts +64 -0
  38. package/dist/models/Paper.d.ts.map +1 -0
  39. package/dist/models/Paper.js +70 -0
  40. package/dist/models/Paper.js.map +1 -0
  41. package/dist/platforms/ArxivSearcher.d.ts +64 -0
  42. package/dist/platforms/ArxivSearcher.d.ts.map +1 -0
  43. package/dist/platforms/ArxivSearcher.js +531 -0
  44. package/dist/platforms/ArxivSearcher.js.map +1 -0
  45. package/dist/platforms/BioRxivSearcher.d.ts +47 -0
  46. package/dist/platforms/BioRxivSearcher.d.ts.map +1 -0
  47. package/dist/platforms/BioRxivSearcher.js +196 -0
  48. package/dist/platforms/BioRxivSearcher.js.map +1 -0
  49. package/dist/platforms/CORESearcher.d.ts +16 -0
  50. package/dist/platforms/CORESearcher.d.ts.map +1 -0
  51. package/dist/platforms/CORESearcher.js +148 -0
  52. package/dist/platforms/CORESearcher.js.map +1 -0
  53. package/dist/platforms/CrossrefSearcher.d.ts +34 -0
  54. package/dist/platforms/CrossrefSearcher.d.ts.map +1 -0
  55. package/dist/platforms/CrossrefSearcher.js +339 -0
  56. package/dist/platforms/CrossrefSearcher.js.map +1 -0
  57. package/dist/platforms/EuropePMCSearcher.d.ts +20 -0
  58. package/dist/platforms/EuropePMCSearcher.d.ts.map +1 -0
  59. package/dist/platforms/EuropePMCSearcher.js +173 -0
  60. package/dist/platforms/EuropePMCSearcher.js.map +1 -0
  61. package/dist/platforms/GoogleScholarSearcher.d.ts +77 -0
  62. package/dist/platforms/GoogleScholarSearcher.d.ts.map +1 -0
  63. package/dist/platforms/GoogleScholarSearcher.js +262 -0
  64. package/dist/platforms/GoogleScholarSearcher.js.map +1 -0
  65. package/dist/platforms/IACRSearcher.d.ts +51 -0
  66. package/dist/platforms/IACRSearcher.d.ts.map +1 -0
  67. package/dist/platforms/IACRSearcher.js +339 -0
  68. package/dist/platforms/IACRSearcher.js.map +1 -0
  69. package/dist/platforms/OpenAIRESearcher.d.ts +22 -0
  70. package/dist/platforms/OpenAIRESearcher.d.ts.map +1 -0
  71. package/dist/platforms/OpenAIRESearcher.js +223 -0
  72. package/dist/platforms/OpenAIRESearcher.js.map +1 -0
  73. package/dist/platforms/OpenAlexSearcher.d.ts +14 -0
  74. package/dist/platforms/OpenAlexSearcher.d.ts.map +1 -0
  75. package/dist/platforms/OpenAlexSearcher.js +114 -0
  76. package/dist/platforms/OpenAlexSearcher.js.map +1 -0
  77. package/dist/platforms/PMCSearcher.d.ts +20 -0
  78. package/dist/platforms/PMCSearcher.d.ts.map +1 -0
  79. package/dist/platforms/PMCSearcher.js +177 -0
  80. package/dist/platforms/PMCSearcher.js.map +1 -0
  81. package/dist/platforms/PaperSource.d.ts +143 -0
  82. package/dist/platforms/PaperSource.d.ts.map +1 -0
  83. package/dist/platforms/PaperSource.js +125 -0
  84. package/dist/platforms/PaperSource.js.map +1 -0
  85. package/dist/platforms/PubMedSearcher.d.ts +104 -0
  86. package/dist/platforms/PubMedSearcher.d.ts.map +1 -0
  87. package/dist/platforms/PubMedSearcher.js +422 -0
  88. package/dist/platforms/PubMedSearcher.js.map +1 -0
  89. package/dist/platforms/SciHubSearcher.d.ts +66 -0
  90. package/dist/platforms/SciHubSearcher.d.ts.map +1 -0
  91. package/dist/platforms/SciHubSearcher.js +398 -0
  92. package/dist/platforms/SciHubSearcher.js.map +1 -0
  93. package/dist/platforms/ScienceDirectSearcher.d.ts +42 -0
  94. package/dist/platforms/ScienceDirectSearcher.d.ts.map +1 -0
  95. package/dist/platforms/ScienceDirectSearcher.js +326 -0
  96. package/dist/platforms/ScienceDirectSearcher.js.map +1 -0
  97. package/dist/platforms/ScopusSearcher.d.ts +43 -0
  98. package/dist/platforms/ScopusSearcher.d.ts.map +1 -0
  99. package/dist/platforms/ScopusSearcher.js +364 -0
  100. package/dist/platforms/ScopusSearcher.js.map +1 -0
  101. package/dist/platforms/SemanticScholarSearcher.d.ts +96 -0
  102. package/dist/platforms/SemanticScholarSearcher.d.ts.map +1 -0
  103. package/dist/platforms/SemanticScholarSearcher.js +419 -0
  104. package/dist/platforms/SemanticScholarSearcher.js.map +1 -0
  105. package/dist/platforms/SpringerSearcher.d.ts +54 -0
  106. package/dist/platforms/SpringerSearcher.d.ts.map +1 -0
  107. package/dist/platforms/SpringerSearcher.js +407 -0
  108. package/dist/platforms/SpringerSearcher.js.map +1 -0
  109. package/dist/platforms/UnpaywallSearcher.d.ts +18 -0
  110. package/dist/platforms/UnpaywallSearcher.d.ts.map +1 -0
  111. package/dist/platforms/UnpaywallSearcher.js +115 -0
  112. package/dist/platforms/UnpaywallSearcher.js.map +1 -0
  113. package/dist/platforms/WebOfScienceSearcher.d.ts +111 -0
  114. package/dist/platforms/WebOfScienceSearcher.d.ts.map +1 -0
  115. package/dist/platforms/WebOfScienceSearcher.js +500 -0
  116. package/dist/platforms/WebOfScienceSearcher.js.map +1 -0
  117. package/dist/platforms/WileySearcher.d.ts +44 -0
  118. package/dist/platforms/WileySearcher.d.ts.map +1 -0
  119. package/dist/platforms/WileySearcher.js +148 -0
  120. package/dist/platforms/WileySearcher.js.map +1 -0
  121. package/dist/services/CitationService.d.ts +66 -0
  122. package/dist/services/CitationService.d.ts.map +1 -0
  123. package/dist/services/CitationService.js +237 -0
  124. package/dist/services/CitationService.js.map +1 -0
  125. package/dist/services/MultiSourceSearchService.d.ts +19 -0
  126. package/dist/services/MultiSourceSearchService.d.ts.map +1 -0
  127. package/dist/services/MultiSourceSearchService.js +96 -0
  128. package/dist/services/MultiSourceSearchService.js.map +1 -0
  129. package/dist/services/OpenAccessFallbackService.d.ts +20 -0
  130. package/dist/services/OpenAccessFallbackService.d.ts.map +1 -0
  131. package/dist/services/OpenAccessFallbackService.js +124 -0
  132. package/dist/services/OpenAccessFallbackService.js.map +1 -0
  133. package/dist/utils/ErrorHandler.d.ts +99 -0
  134. package/dist/utils/ErrorHandler.d.ts.map +1 -0
  135. package/dist/utils/ErrorHandler.js +266 -0
  136. package/dist/utils/ErrorHandler.js.map +1 -0
  137. package/dist/utils/Logger.d.ts +6 -0
  138. package/dist/utils/Logger.d.ts.map +1 -0
  139. package/dist/utils/Logger.js +26 -0
  140. package/dist/utils/Logger.js.map +1 -0
  141. package/dist/utils/PDFExtractor.d.ts +34 -0
  142. package/dist/utils/PDFExtractor.d.ts.map +1 -0
  143. package/dist/utils/PDFExtractor.js +130 -0
  144. package/dist/utils/PDFExtractor.js.map +1 -0
  145. package/dist/utils/PdfDownload.d.ts +7 -0
  146. package/dist/utils/PdfDownload.d.ts.map +1 -0
  147. package/dist/utils/PdfDownload.js +52 -0
  148. package/dist/utils/PdfDownload.js.map +1 -0
  149. package/dist/utils/QuotaManager.d.ts +32 -0
  150. package/dist/utils/QuotaManager.d.ts.map +1 -0
  151. package/dist/utils/QuotaManager.js +95 -0
  152. package/dist/utils/QuotaManager.js.map +1 -0
  153. package/dist/utils/RateLimiter.d.ts +50 -0
  154. package/dist/utils/RateLimiter.d.ts.map +1 -0
  155. package/dist/utils/RateLimiter.js +121 -0
  156. package/dist/utils/RateLimiter.js.map +1 -0
  157. package/dist/utils/RequestCache.d.ts +26 -0
  158. package/dist/utils/RequestCache.d.ts.map +1 -0
  159. package/dist/utils/RequestCache.js +66 -0
  160. package/dist/utils/RequestCache.js.map +1 -0
  161. package/dist/utils/SecurityUtils.d.ts +80 -0
  162. package/dist/utils/SecurityUtils.d.ts.map +1 -0
  163. package/dist/utils/SecurityUtils.js +357 -0
  164. package/dist/utils/SecurityUtils.js.map +1 -0
  165. package/package.json +111 -0
  166. package/skills/paper-search/SKILL.md +192 -0
@@ -0,0 +1,326 @@
1
+ /**
2
+ * ScienceDirect (Elsevier) Searcher
3
+ *
4
+ * Documentation: https://dev.elsevier.com/
5
+ * API Endpoints:
6
+ * - Search API: https://api.elsevier.com/content/search/sciencedirect
7
+ * - Article API: https://api.elsevier.com/content/article/doi/
8
+ *
9
+ * Required API Key: Yes (X-ELS-APIKey header)
10
+ * Get API key from: https://dev.elsevier.com/apikey/manage
11
+ */
12
+ import axios from 'axios';
13
+ import { PaperSource } from './PaperSource.js';
14
+ import { PaperFactory } from '../models/Paper.js';
15
+ import { RateLimiter } from '../utils/RateLimiter.js';
16
+ import { ErrorHandler } from '../utils/ErrorHandler.js';
17
+ import { QuotaManager } from '../utils/QuotaManager.js';
18
+ import { logDebug } from '../utils/Logger.js';
19
+ import { TIMEOUTS, USER_AGENT } from '../config/constants.js';
20
+ export class ScienceDirectSearcher extends PaperSource {
21
+ client;
22
+ rateLimiter;
23
+ quotaManager;
24
+ constructor(apiKey) {
25
+ super('sciencedirect', 'https://api.elsevier.com', apiKey);
26
+ this.client = axios.create({
27
+ baseURL: 'https://api.elsevier.com',
28
+ timeout: TIMEOUTS.DEFAULT,
29
+ headers: {
30
+ 'Accept': 'application/json',
31
+ 'User-Agent': USER_AGENT,
32
+ ...(apiKey ? { 'X-ELS-APIKey': apiKey } : {})
33
+ }
34
+ });
35
+ // Elsevier rate limits:
36
+ // - Without key: 20 requests per minute
37
+ // - With key: 10 requests per second (600 per minute)
38
+ const requestsPerSecond = apiKey ? 10 : 0.33;
39
+ this.rateLimiter = new RateLimiter({
40
+ requestsPerSecond,
41
+ burstCapacity: apiKey ? 20 : 5
42
+ });
43
+ this.quotaManager = QuotaManager.getInstance();
44
+ this.quotaManager.registerPlatform('sciencedirect', {
45
+ dailyLimit: 5000,
46
+ envPrefix: 'SCIENCEDIRECT'
47
+ });
48
+ }
49
+ async search(query, options = {}) {
50
+ const customOptions = options;
51
+ if (!this.apiKey) {
52
+ throw new Error('ScienceDirect API key is required');
53
+ }
54
+ const maxResults = Math.min(options.maxResults || 10, 100);
55
+ const papers = [];
56
+ try {
57
+ // Use PUT method with new API format (matching Python implementation)
58
+ const requestBody = {
59
+ qs: query
60
+ };
61
+ // Add year filter
62
+ if (options.year) {
63
+ if (options.year.includes('-')) {
64
+ const [startYear, endYear] = options.year.split('-');
65
+ requestBody.date = endYear ? `${startYear}-${endYear}` : startYear;
66
+ }
67
+ else {
68
+ requestBody.date = options.year;
69
+ }
70
+ }
71
+ // Add author filter
72
+ if (options.author) {
73
+ requestBody.authors = options.author;
74
+ }
75
+ // Display options
76
+ requestBody.display = {
77
+ offset: 0,
78
+ show: maxResults,
79
+ sortBy: options.sortBy === 'date' ? 'date' : 'relevance'
80
+ };
81
+ await this.rateLimiter.waitForPermission();
82
+ this.quotaManager.checkQuota('sciencedirect');
83
+ const response = await ErrorHandler.retryWithBackoff(() => this.client.put('/content/search/sciencedirect', requestBody, {
84
+ headers: { 'Content-Type': 'application/json' }
85
+ }), { context: 'ScienceDirect search' });
86
+ this.quotaManager.incrementUsage('sciencedirect');
87
+ const results = response.data?.results || [];
88
+ for (const result of results) {
89
+ const paper = this.parseNewApiResult(result);
90
+ if (paper) {
91
+ papers.push(paper);
92
+ }
93
+ }
94
+ // Enrich with abstracts if requested
95
+ if (customOptions.includeAbstract && papers.length > 0) {
96
+ const enrichedPapers = await this.enrichPapersWithAbstracts(papers);
97
+ return enrichedPapers;
98
+ }
99
+ return papers;
100
+ }
101
+ catch (error) {
102
+ this.handleHttpError(error, 'search');
103
+ }
104
+ }
105
+ /**
106
+ * Parse result from new PUT API format
107
+ */
108
+ parseNewApiResult(result) {
109
+ try {
110
+ // Parse publication date
111
+ let publishedDate = null;
112
+ let year;
113
+ const pubDateStr = result.publicationDate;
114
+ if (pubDateStr) {
115
+ try {
116
+ publishedDate = new Date(pubDateStr);
117
+ year = publishedDate.getFullYear();
118
+ }
119
+ catch {
120
+ if (pubDateStr.length >= 4) {
121
+ year = parseInt(pubDateStr.substring(0, 4));
122
+ }
123
+ }
124
+ }
125
+ // Parse authors
126
+ const authors = [];
127
+ const authorsData = result.authors || [];
128
+ if (Array.isArray(authorsData)) {
129
+ const sortedAuthors = [...authorsData].sort((a, b) => (a.order || 999) - (b.order || 999));
130
+ for (const author of sortedAuthors) {
131
+ if (author.name) {
132
+ authors.push(author.name.trim());
133
+ }
134
+ }
135
+ }
136
+ return PaperFactory.create({
137
+ paperId: result.pii || `scidir_${Date.now()}`,
138
+ title: result.title || 'No title',
139
+ authors: authors,
140
+ abstract: '',
141
+ doi: result.doi,
142
+ publishedDate: publishedDate,
143
+ url: result.uri,
144
+ source: 'sciencedirect',
145
+ journal: result.sourceTitle,
146
+ year: year,
147
+ extra: {
148
+ pii: result.pii,
149
+ openAccess: result.openAccess || false,
150
+ volumeIssue: result.volumeIssue,
151
+ pages: result.pages
152
+ }
153
+ });
154
+ }
155
+ catch (error) {
156
+ logDebug('Error parsing ScienceDirect result:', error);
157
+ return null;
158
+ }
159
+ }
160
+ /**
161
+ * Enrich papers with abstracts using Article Retrieval API
162
+ */
163
+ async enrichPapersWithAbstracts(papers) {
164
+ const enrichedPapers = [];
165
+ for (const paper of papers) {
166
+ try {
167
+ await this.rateLimiter.waitForPermission();
168
+ const response = await ErrorHandler.retryWithBackoff(() => this.client.get(`/content/article/pii/${paper.paperId}`, {
169
+ params: { view: 'META_ABS' }
170
+ }), { context: 'ScienceDirect abstract' });
171
+ const coredata = response.data?.['full-text-retrieval-response']?.coredata;
172
+ if (coredata) {
173
+ paper.abstract = coredata['dc:description'] || '';
174
+ }
175
+ enrichedPapers.push(paper);
176
+ }
177
+ catch (error) {
178
+ // If enrichment fails, keep original paper
179
+ enrichedPapers.push(paper);
180
+ }
181
+ }
182
+ return enrichedPapers;
183
+ }
184
+ async parseEntry(entry) {
185
+ try {
186
+ // Extract PDF URL if available
187
+ let pdfUrl;
188
+ if (entry.link) {
189
+ const pdfLink = entry.link.find(l => l['@type'] === 'application/pdf');
190
+ if (pdfLink) {
191
+ pdfUrl = pdfLink['@href'];
192
+ }
193
+ }
194
+ // Build paper URL
195
+ const paperUrl = entry['prism:url'] ||
196
+ (entry['prism:doi'] ? `https://doi.org/${entry['prism:doi']}` : undefined);
197
+ return PaperFactory.create({
198
+ paperId: entry['prism:doi'] || entry['dc:identifier'] || entry.pii || '',
199
+ title: entry['dc:title'] || '',
200
+ authors: entry['dc:creator'] ? [entry['dc:creator']] : [],
201
+ abstract: entry['dc:description'] || '',
202
+ doi: entry['prism:doi'],
203
+ publishedDate: entry['prism:coverDate'] ? new Date(entry['prism:coverDate']) : null,
204
+ pdfUrl: pdfUrl,
205
+ url: paperUrl,
206
+ source: 'sciencedirect',
207
+ journal: entry['prism:publicationName'],
208
+ volume: entry['prism:volume'],
209
+ issue: entry['prism:issueIdentifier'],
210
+ pages: entry['prism:pageRange'],
211
+ extra: {
212
+ pii: entry.pii,
213
+ openAccess: entry.openaccess || entry.openaccessFlag || false
214
+ }
215
+ });
216
+ }
217
+ catch (error) {
218
+ logDebug('Error parsing ScienceDirect entry:', error);
219
+ return null;
220
+ }
221
+ }
222
+ async getArticleDetails(doi) {
223
+ if (!this.apiKey) {
224
+ throw new Error('ScienceDirect API key is required');
225
+ }
226
+ try {
227
+ await this.rateLimiter.waitForPermission();
228
+ const response = await ErrorHandler.retryWithBackoff(() => this.client.get(`/content/article/doi/${doi}`, {
229
+ params: { view: 'FULL' }
230
+ }), { context: 'ScienceDirect article details' });
231
+ const coredata = response.data['full-text-retrieval-response']?.coredata;
232
+ if (!coredata)
233
+ return null;
234
+ // Extract authors
235
+ let authors = '';
236
+ if (coredata['dc:creator']) {
237
+ if (Array.isArray(coredata['dc:creator'])) {
238
+ authors = coredata['dc:creator'].map((a) => a.$).join(', ');
239
+ }
240
+ else if (typeof coredata['dc:creator'] === 'string') {
241
+ authors = coredata['dc:creator'];
242
+ }
243
+ }
244
+ return PaperFactory.create({
245
+ paperId: doi,
246
+ title: coredata['dc:title'] || '',
247
+ authors: authors ? [authors] : [],
248
+ abstract: coredata['dc:description'] || '',
249
+ doi: coredata['prism:doi'] || doi,
250
+ publishedDate: coredata['prism:coverDate'] ? new Date(coredata['prism:coverDate']) : null,
251
+ url: `https://doi.org/${doi}`,
252
+ source: 'sciencedirect',
253
+ journal: coredata['prism:publicationName'],
254
+ volume: coredata['prism:volume'],
255
+ issue: coredata['prism:issueIdentifier'],
256
+ pages: coredata['prism:pageRange'],
257
+ citationCount: coredata['citedby-count'] ? parseInt(coredata['citedby-count']) : undefined
258
+ });
259
+ }
260
+ catch (error) {
261
+ logDebug('ScienceDirect article details error:', error.message);
262
+ return null;
263
+ }
264
+ }
265
+ getCapabilities() {
266
+ return {
267
+ search: true,
268
+ download: false,
269
+ fullText: false,
270
+ citations: true,
271
+ requiresApiKey: true,
272
+ supportedOptions: ['maxResults', 'year', 'author', 'journal']
273
+ };
274
+ }
275
+ async downloadPdf(paperId, options = {}) {
276
+ throw new Error('PDF download requires institutional access for ScienceDirect');
277
+ }
278
+ async readPaper(paperId, options = {}) {
279
+ const paper = await this.getArticleDetails(paperId);
280
+ if (!paper) {
281
+ throw new Error('Paper not found');
282
+ }
283
+ return paper.abstract || 'Abstract not available';
284
+ }
285
+ /**
286
+ * 获取引用此论文的文献列表(通过Crossref/OpenCitations)
287
+ */
288
+ async getCitations(paperId) {
289
+ try {
290
+ // Get paper to check DOI
291
+ const paper = await this.getArticleDetails(paperId);
292
+ if (!paper || !paper.doi) {
293
+ logDebug(`ScienceDirect paper ${paperId} has no DOI, cannot fetch citations`);
294
+ return [];
295
+ }
296
+ const { CrossrefSearcher } = await import('./CrossrefSearcher.js');
297
+ const crossref = new CrossrefSearcher();
298
+ return await crossref.getCitations(paper.doi);
299
+ }
300
+ catch (error) {
301
+ logDebug('Error getting ScienceDirect citations:', error);
302
+ return [];
303
+ }
304
+ }
305
+ /**
306
+ * 获取论文的参考文献列表(通过Crossref)
307
+ */
308
+ async getReferences(paperId) {
309
+ try {
310
+ // Get paper to check DOI
311
+ const paper = await this.getArticleDetails(paperId);
312
+ if (!paper || !paper.doi) {
313
+ logDebug(`ScienceDirect paper ${paperId} has no DOI, cannot fetch references`);
314
+ return [];
315
+ }
316
+ const { CrossrefSearcher } = await import('./CrossrefSearcher.js');
317
+ const crossref = new CrossrefSearcher();
318
+ return await crossref.getReferences(paper.doi);
319
+ }
320
+ catch (error) {
321
+ logDebug('Error getting ScienceDirect references:', error);
322
+ return [];
323
+ }
324
+ }
325
+ }
326
+ //# sourceMappingURL=ScienceDirectSearcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScienceDirectSearcher.js","sourceRoot":"","sources":["../../src/platforms/ScienceDirectSearcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Scopus (Elsevier) Searcher
3
+ *
4
+ * Documentation: https://dev.elsevier.com/documentation/SCOPUSSearchAPI.wadl
5
+ * API Endpoints:
6
+ * - Search API: https://api.elsevier.com/content/search/scopus
7
+ * - Abstract API: https://api.elsevier.com/content/abstract/scopus_id/
8
+ *
9
+ * Required API Key: Yes (X-ELS-APIKey header or apikey parameter)
10
+ * Get API key from: https://dev.elsevier.com/apikey/manage
11
+ *
12
+ * Scopus is the largest abstract and citation database of peer-reviewed literature
13
+ */
14
+ import { PaperSource, SearchOptions, DownloadOptions, PlatformCapabilities } from './PaperSource.js';
15
+ import { Paper } from '../models/Paper.js';
16
+ export declare class ScopusSearcher extends PaperSource {
17
+ private client;
18
+ private rateLimiter;
19
+ private quotaManager;
20
+ private searchApiKey?;
21
+ private elsevierApiKey?;
22
+ constructor(apiKey?: string, searchApiKey?: string);
23
+ search(query: string, options?: SearchOptions): Promise<Paper[]>;
24
+ private buildSearchParams;
25
+ private parseEntry;
26
+ getAbstract(scopusId: string): Promise<Paper | null>;
27
+ getCapabilities(): PlatformCapabilities;
28
+ downloadPdf(paperId: string, options?: DownloadOptions): Promise<string>;
29
+ readPaper(paperId: string, options?: DownloadOptions): Promise<string>;
30
+ /**
31
+ * 获取参考文献的Scopus ID列表
32
+ */
33
+ getReferenceIds(scopusId: string): Promise<string[]>;
34
+ /**
35
+ * 获取引用文献的Scopus ID列表
36
+ */
37
+ getCitationIds(scopusId: string): Promise<string[]>;
38
+ /**
39
+ * 获取论文详情(包含references和citations ID列表)
40
+ */
41
+ getPaperWithCitations(paperId: string): Promise<Paper | null>;
42
+ }
43
+ //# sourceMappingURL=ScopusSearcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopusSearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/ScopusSearcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AAiHzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAkC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAmF1E,OAAO,CAAC,iBAAiB;YAuBX,UAAU;IAsDlB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgE1D,eAAe,IAAI,oBAAoB;IAWjC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhF;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyC1D;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuCzD;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAwBpE"}