paper-search-cli 0.3.1 → 0.3.2

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 (304) hide show
  1. package/README.md +1 -1
  2. package/README.zh.md +1 -1
  3. package/dist/capabilities/body-snippet-search/handler.d.ts +9 -0
  4. package/dist/capabilities/body-snippet-search/handler.d.ts.map +1 -0
  5. package/dist/capabilities/body-snippet-search/handler.js +17 -0
  6. package/dist/capabilities/body-snippet-search/handler.js.map +1 -0
  7. package/dist/capabilities/body-snippet-search/index.d.ts +7 -0
  8. package/dist/capabilities/body-snippet-search/index.d.ts.map +1 -0
  9. package/dist/capabilities/body-snippet-search/index.js +6 -0
  10. package/dist/capabilities/body-snippet-search/index.js.map +1 -0
  11. package/dist/capabilities/body-snippet-search/schemas.d.ts +36 -0
  12. package/dist/capabilities/body-snippet-search/schemas.d.ts.map +1 -0
  13. package/dist/capabilities/body-snippet-search/schemas.js +16 -0
  14. package/dist/capabilities/body-snippet-search/schemas.js.map +1 -0
  15. package/dist/capabilities/body-snippet-search/service.d.ts +4 -0
  16. package/dist/capabilities/body-snippet-search/service.d.ts.map +1 -0
  17. package/dist/capabilities/body-snippet-search/service.js +4 -0
  18. package/dist/capabilities/body-snippet-search/service.js.map +1 -0
  19. package/dist/capabilities/body-snippet-search/tools.d.ts +187 -0
  20. package/dist/capabilities/body-snippet-search/tools.d.ts.map +1 -0
  21. package/dist/capabilities/body-snippet-search/tools.js +49 -0
  22. package/dist/capabilities/body-snippet-search/tools.js.map +1 -0
  23. package/dist/capabilities/body-snippet-search/types.d.ts +14 -0
  24. package/dist/capabilities/body-snippet-search/types.d.ts.map +1 -0
  25. package/dist/capabilities/body-snippet-search/types.js +2 -0
  26. package/dist/capabilities/body-snippet-search/types.js.map +1 -0
  27. package/dist/capabilities/citation-expansion/CitationService.d.ts +47 -0
  28. package/dist/capabilities/citation-expansion/CitationService.d.ts.map +1 -0
  29. package/dist/capabilities/citation-expansion/CitationService.js +243 -0
  30. package/dist/capabilities/citation-expansion/CitationService.js.map +1 -0
  31. package/dist/capabilities/citation-expansion/handler.d.ts +36 -0
  32. package/dist/capabilities/citation-expansion/handler.d.ts.map +1 -0
  33. package/dist/capabilities/citation-expansion/handler.js +44 -0
  34. package/dist/capabilities/citation-expansion/handler.js.map +1 -0
  35. package/dist/capabilities/citation-expansion/index.d.ts +6 -0
  36. package/dist/capabilities/citation-expansion/index.d.ts.map +1 -0
  37. package/dist/capabilities/citation-expansion/index.js +5 -0
  38. package/dist/capabilities/citation-expansion/index.js.map +1 -0
  39. package/dist/capabilities/citation-expansion/schemas.d.ts +28 -0
  40. package/dist/capabilities/citation-expansion/schemas.d.ts.map +1 -0
  41. package/dist/capabilities/citation-expansion/schemas.js +13 -0
  42. package/dist/capabilities/citation-expansion/schemas.js.map +1 -0
  43. package/dist/capabilities/citation-expansion/tools.d.ts +82 -0
  44. package/dist/capabilities/citation-expansion/tools.d.ts.map +1 -0
  45. package/dist/capabilities/citation-expansion/tools.js +48 -0
  46. package/dist/capabilities/citation-expansion/tools.js.map +1 -0
  47. package/dist/capabilities/citation-expansion/types.d.ts +22 -0
  48. package/dist/capabilities/citation-expansion/types.d.ts.map +1 -0
  49. package/dist/capabilities/citation-expansion/types.js +2 -0
  50. package/dist/capabilities/citation-expansion/types.js.map +1 -0
  51. package/dist/capabilities/journal-metrics/JournalMetricsService.d.ts +3 -0
  52. package/dist/capabilities/journal-metrics/JournalMetricsService.d.ts.map +1 -0
  53. package/dist/capabilities/journal-metrics/JournalMetricsService.js +142 -0
  54. package/dist/capabilities/journal-metrics/JournalMetricsService.js.map +1 -0
  55. package/dist/capabilities/journal-metrics/handler.d.ts +12 -0
  56. package/dist/capabilities/journal-metrics/handler.d.ts.map +1 -0
  57. package/dist/capabilities/journal-metrics/handler.js +38 -0
  58. package/dist/capabilities/journal-metrics/handler.js.map +1 -0
  59. package/dist/capabilities/journal-metrics/index.d.ts +6 -0
  60. package/dist/capabilities/journal-metrics/index.d.ts.map +1 -0
  61. package/dist/capabilities/journal-metrics/index.js +5 -0
  62. package/dist/capabilities/journal-metrics/index.js.map +1 -0
  63. package/dist/capabilities/journal-metrics/schemas.d.ts +28 -0
  64. package/dist/capabilities/journal-metrics/schemas.d.ts.map +1 -0
  65. package/dist/capabilities/journal-metrics/schemas.js +13 -0
  66. package/dist/capabilities/journal-metrics/schemas.js.map +1 -0
  67. package/dist/capabilities/journal-metrics/tools.d.ts +67 -0
  68. package/dist/capabilities/journal-metrics/tools.d.ts.map +1 -0
  69. package/dist/capabilities/journal-metrics/tools.js +27 -0
  70. package/dist/capabilities/journal-metrics/tools.js.map +1 -0
  71. package/dist/capabilities/journal-metrics/types.d.ts +36 -0
  72. package/dist/capabilities/journal-metrics/types.d.ts.map +1 -0
  73. package/dist/capabilities/journal-metrics/types.js +2 -0
  74. package/dist/capabilities/journal-metrics/types.js.map +1 -0
  75. package/dist/capabilities/metadata-search/MultiSourceSearchService.d.ts +9 -0
  76. package/dist/capabilities/metadata-search/MultiSourceSearchService.d.ts.map +1 -0
  77. package/dist/capabilities/metadata-search/MultiSourceSearchService.js +78 -0
  78. package/dist/capabilities/metadata-search/MultiSourceSearchService.js.map +1 -0
  79. package/dist/capabilities/metadata-search/handler.d.ts +23 -0
  80. package/dist/capabilities/metadata-search/handler.d.ts.map +1 -0
  81. package/dist/capabilities/metadata-search/handler.js +163 -0
  82. package/dist/capabilities/metadata-search/handler.js.map +1 -0
  83. package/dist/capabilities/metadata-search/index.d.ts +6 -0
  84. package/dist/capabilities/metadata-search/index.d.ts.map +1 -0
  85. package/dist/capabilities/metadata-search/index.js +5 -0
  86. package/dist/capabilities/metadata-search/index.js.map +1 -0
  87. package/dist/capabilities/metadata-search/schemas.d.ts +83 -0
  88. package/dist/capabilities/metadata-search/schemas.d.ts.map +1 -0
  89. package/dist/capabilities/metadata-search/schemas.js +81 -0
  90. package/dist/capabilities/metadata-search/schemas.js.map +1 -0
  91. package/dist/capabilities/metadata-search/tools.d.ts +178 -0
  92. package/dist/capabilities/metadata-search/tools.d.ts.map +1 -0
  93. package/dist/capabilities/metadata-search/tools.js +75 -0
  94. package/dist/capabilities/metadata-search/tools.js.map +1 -0
  95. package/dist/capabilities/metadata-search/types.d.ts +13 -0
  96. package/dist/capabilities/metadata-search/types.d.ts.map +1 -0
  97. package/dist/capabilities/metadata-search/types.js +2 -0
  98. package/dist/capabilities/metadata-search/types.js.map +1 -0
  99. package/dist/capabilities/pdf-discovery/DownloadTier.d.ts +22 -0
  100. package/dist/capabilities/pdf-discovery/DownloadTier.d.ts.map +1 -0
  101. package/dist/capabilities/pdf-discovery/DownloadTier.js +2 -0
  102. package/dist/capabilities/pdf-discovery/DownloadTier.js.map +1 -0
  103. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.d.ts +10 -0
  104. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.d.ts.map +1 -0
  105. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.js +53 -0
  106. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.js.map +1 -0
  107. package/dist/capabilities/pdf-discovery/handler.d.ts +19 -0
  108. package/dist/capabilities/pdf-discovery/handler.d.ts.map +1 -0
  109. package/dist/capabilities/pdf-discovery/handler.js +56 -0
  110. package/dist/capabilities/pdf-discovery/handler.js.map +1 -0
  111. package/dist/capabilities/pdf-discovery/index.d.ts +7 -0
  112. package/dist/capabilities/pdf-discovery/index.d.ts.map +1 -0
  113. package/dist/capabilities/pdf-discovery/index.js +5 -0
  114. package/dist/capabilities/pdf-discovery/index.js.map +1 -0
  115. package/dist/capabilities/pdf-discovery/schemas.d.ts +37 -0
  116. package/dist/capabilities/pdf-discovery/schemas.d.ts.map +1 -0
  117. package/dist/capabilities/pdf-discovery/schemas.js +22 -0
  118. package/dist/capabilities/pdf-discovery/schemas.js.map +1 -0
  119. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.d.ts +3 -0
  120. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.d.ts.map +1 -0
  121. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.js +27 -0
  122. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.js.map +1 -0
  123. package/dist/capabilities/pdf-discovery/tiers/primary.d.ts +3 -0
  124. package/dist/capabilities/pdf-discovery/tiers/primary.d.ts.map +1 -0
  125. package/dist/capabilities/pdf-discovery/tiers/primary.js +21 -0
  126. package/dist/capabilities/pdf-discovery/tiers/primary.js.map +1 -0
  127. package/dist/capabilities/pdf-discovery/tiers/repositories.d.ts +3 -0
  128. package/dist/capabilities/pdf-discovery/tiers/repositories.d.ts.map +1 -0
  129. package/dist/capabilities/pdf-discovery/tiers/repositories.js +35 -0
  130. package/dist/capabilities/pdf-discovery/tiers/repositories.js.map +1 -0
  131. package/dist/capabilities/pdf-discovery/tiers/scihub.d.ts +3 -0
  132. package/dist/capabilities/pdf-discovery/tiers/scihub.d.ts.map +1 -0
  133. package/dist/capabilities/pdf-discovery/tiers/scihub.js +21 -0
  134. package/dist/capabilities/pdf-discovery/tiers/scihub.js.map +1 -0
  135. package/dist/capabilities/pdf-discovery/tiers/unpaywall.d.ts +3 -0
  136. package/dist/capabilities/pdf-discovery/tiers/unpaywall.d.ts.map +1 -0
  137. package/dist/capabilities/pdf-discovery/tiers/unpaywall.js +29 -0
  138. package/dist/capabilities/pdf-discovery/tiers/unpaywall.js.map +1 -0
  139. package/dist/capabilities/pdf-discovery/tools.d.ts +114 -0
  140. package/dist/capabilities/pdf-discovery/tools.d.ts.map +1 -0
  141. package/dist/capabilities/pdf-discovery/tools.js +42 -0
  142. package/dist/capabilities/pdf-discovery/tools.js.map +1 -0
  143. package/dist/capabilities/pdf-discovery/types.d.ts +19 -0
  144. package/dist/capabilities/pdf-discovery/types.d.ts.map +1 -0
  145. package/dist/capabilities/pdf-discovery/types.js +2 -0
  146. package/dist/capabilities/pdf-discovery/types.js.map +1 -0
  147. package/dist/cli.js +6 -6
  148. package/dist/cli.js.map +1 -1
  149. package/dist/core/capabilityProfile.d.ts +1 -17
  150. package/dist/core/capabilityProfile.d.ts.map +1 -1
  151. package/dist/core/capabilityProfile.js +1 -166
  152. package/dist/core/capabilityProfile.js.map +1 -1
  153. package/dist/core/diagnostics.d.ts +1 -42
  154. package/dist/core/diagnostics.d.ts.map +1 -1
  155. package/dist/core/diagnostics.js +1 -585
  156. package/dist/core/diagnostics.js.map +1 -1
  157. package/dist/core/handleToolCall.d.ts +1 -0
  158. package/dist/core/handleToolCall.d.ts.map +1 -1
  159. package/dist/core/handleToolCall.js +265 -509
  160. package/dist/core/handleToolCall.js.map +1 -1
  161. package/dist/core/httpPolicies.d.ts +2 -0
  162. package/dist/core/httpPolicies.d.ts.map +1 -0
  163. package/dist/core/httpPolicies.js +2 -0
  164. package/dist/core/httpPolicies.js.map +1 -0
  165. package/dist/core/liveSmoke.d.ts +1 -41
  166. package/dist/core/liveSmoke.d.ts.map +1 -1
  167. package/dist/core/liveSmoke.js +1 -225
  168. package/dist/core/liveSmoke.js.map +1 -1
  169. package/dist/core/platformFactories.d.ts +2 -0
  170. package/dist/core/platformFactories.d.ts.map +1 -0
  171. package/dist/core/platformFactories.js +2 -0
  172. package/dist/core/platformFactories.js.map +1 -0
  173. package/dist/core/platformMetadata.d.ts +1 -27
  174. package/dist/core/platformMetadata.d.ts.map +1 -1
  175. package/dist/core/platformMetadata.js +1 -257
  176. package/dist/core/platformMetadata.js.map +1 -1
  177. package/dist/core/schemas.d.ts +10 -202
  178. package/dist/core/schemas.d.ts.map +1 -1
  179. package/dist/core/schemas.js +11 -118
  180. package/dist/core/schemas.js.map +1 -1
  181. package/dist/core/searchers.d.ts +24 -24
  182. package/dist/core/searchers.d.ts.map +1 -1
  183. package/dist/core/searchers.js +14 -79
  184. package/dist/core/searchers.js.map +1 -1
  185. package/dist/core/textReports.d.ts +1 -20
  186. package/dist/core/textReports.d.ts.map +1 -1
  187. package/dist/core/textReports.js +1 -84
  188. package/dist/core/textReports.js.map +1 -1
  189. package/dist/core/tools.d.ts.map +1 -1
  190. package/dist/core/tools.js +15 -237
  191. package/dist/core/tools.js.map +1 -1
  192. package/dist/infrastructure/cache/RequestCache.d.ts +26 -0
  193. package/dist/infrastructure/cache/RequestCache.d.ts.map +1 -0
  194. package/dist/infrastructure/cache/RequestCache.js +66 -0
  195. package/dist/infrastructure/cache/RequestCache.js.map +1 -0
  196. package/dist/infrastructure/http/ErrorHandler.d.ts +99 -0
  197. package/dist/infrastructure/http/ErrorHandler.d.ts.map +1 -0
  198. package/dist/infrastructure/http/ErrorHandler.js +266 -0
  199. package/dist/infrastructure/http/ErrorHandler.js.map +1 -0
  200. package/dist/infrastructure/http/HttpClient.d.ts +31 -0
  201. package/dist/infrastructure/http/HttpClient.d.ts.map +1 -0
  202. package/dist/infrastructure/http/HttpClient.js +50 -0
  203. package/dist/infrastructure/http/HttpClient.js.map +1 -0
  204. package/dist/infrastructure/pdf/PDFExtractor.d.ts +34 -0
  205. package/dist/infrastructure/pdf/PDFExtractor.d.ts.map +1 -0
  206. package/dist/infrastructure/pdf/PDFExtractor.js +130 -0
  207. package/dist/infrastructure/pdf/PDFExtractor.js.map +1 -0
  208. package/dist/infrastructure/pdf/PdfDownload.d.ts +7 -0
  209. package/dist/infrastructure/pdf/PdfDownload.d.ts.map +1 -0
  210. package/dist/infrastructure/pdf/PdfDownload.js +175 -0
  211. package/dist/infrastructure/pdf/PdfDownload.js.map +1 -0
  212. package/dist/infrastructure/rate-limit/RateLimiter.d.ts +50 -0
  213. package/dist/infrastructure/rate-limit/RateLimiter.d.ts.map +1 -0
  214. package/dist/infrastructure/rate-limit/RateLimiter.js +128 -0
  215. package/dist/infrastructure/rate-limit/RateLimiter.js.map +1 -0
  216. package/dist/infrastructure/security/SecurityUtils.d.ts +80 -0
  217. package/dist/infrastructure/security/SecurityUtils.d.ts.map +1 -0
  218. package/dist/infrastructure/security/SecurityUtils.js +357 -0
  219. package/dist/infrastructure/security/SecurityUtils.js.map +1 -0
  220. package/dist/management/capability-profile/index.d.ts +18 -0
  221. package/dist/management/capability-profile/index.d.ts.map +1 -0
  222. package/dist/management/capability-profile/index.js +167 -0
  223. package/dist/management/capability-profile/index.js.map +1 -0
  224. package/dist/management/config/index.d.ts +2 -0
  225. package/dist/management/config/index.d.ts.map +1 -0
  226. package/dist/management/config/index.js +2 -0
  227. package/dist/management/config/index.js.map +1 -0
  228. package/dist/management/diagnostics/index.d.ts +43 -0
  229. package/dist/management/diagnostics/index.d.ts.map +1 -0
  230. package/dist/management/diagnostics/index.js +586 -0
  231. package/dist/management/diagnostics/index.js.map +1 -0
  232. package/dist/management/reports/index.d.ts +21 -0
  233. package/dist/management/reports/index.d.ts.map +1 -0
  234. package/dist/management/reports/index.js +85 -0
  235. package/dist/management/reports/index.js.map +1 -0
  236. package/dist/management/skills/index.d.ts +2 -0
  237. package/dist/management/skills/index.d.ts.map +1 -0
  238. package/dist/management/skills/index.js +2 -0
  239. package/dist/management/skills/index.js.map +1 -0
  240. package/dist/management/smoke/index.d.ts +42 -0
  241. package/dist/management/smoke/index.d.ts.map +1 -0
  242. package/dist/management/smoke/index.js +226 -0
  243. package/dist/management/smoke/index.js.map +1 -0
  244. package/dist/registry/aliases.d.ts +2 -0
  245. package/dist/registry/aliases.d.ts.map +1 -0
  246. package/dist/registry/aliases.js +2 -0
  247. package/dist/registry/aliases.js.map +1 -0
  248. package/dist/registry/httpPolicies.d.ts +3 -0
  249. package/dist/registry/httpPolicies.d.ts.map +1 -0
  250. package/dist/registry/httpPolicies.js +17 -0
  251. package/dist/registry/httpPolicies.js.map +1 -0
  252. package/dist/registry/platformFactories.d.ts +8 -0
  253. package/dist/registry/platformFactories.d.ts.map +1 -0
  254. package/dist/registry/platformFactories.js +55 -0
  255. package/dist/registry/platformFactories.js.map +1 -0
  256. package/dist/registry/platformMetadata.d.ts +39 -0
  257. package/dist/registry/platformMetadata.d.ts.map +1 -0
  258. package/dist/registry/platformMetadata.js +321 -0
  259. package/dist/registry/platformMetadata.js.map +1 -0
  260. package/dist/services/CitationService.d.ts +2 -65
  261. package/dist/services/CitationService.d.ts.map +1 -1
  262. package/dist/services/CitationService.js +1 -242
  263. package/dist/services/CitationService.js.map +1 -1
  264. package/dist/services/JournalMetricsService.d.ts +2 -37
  265. package/dist/services/JournalMetricsService.d.ts.map +1 -1
  266. package/dist/services/JournalMetricsService.js +1 -141
  267. package/dist/services/JournalMetricsService.js.map +1 -1
  268. package/dist/services/MultiSourceSearchService.d.ts +2 -18
  269. package/dist/services/MultiSourceSearchService.d.ts.map +1 -1
  270. package/dist/services/MultiSourceSearchService.js +1 -77
  271. package/dist/services/MultiSourceSearchService.js.map +1 -1
  272. package/dist/services/OpenAccessFallbackService.d.ts +3 -40
  273. package/dist/services/OpenAccessFallbackService.d.ts.map +1 -1
  274. package/dist/services/OpenAccessFallbackService.js +1 -146
  275. package/dist/services/OpenAccessFallbackService.js.map +1 -1
  276. package/dist/utils/ErrorHandler.d.ts +2 -98
  277. package/dist/utils/ErrorHandler.d.ts.map +1 -1
  278. package/dist/utils/ErrorHandler.js +2 -265
  279. package/dist/utils/ErrorHandler.js.map +1 -1
  280. package/dist/utils/HttpClient.d.ts +1 -5
  281. package/dist/utils/HttpClient.d.ts.map +1 -1
  282. package/dist/utils/HttpClient.js +1 -29
  283. package/dist/utils/HttpClient.js.map +1 -1
  284. package/dist/utils/PDFExtractor.d.ts +2 -33
  285. package/dist/utils/PDFExtractor.d.ts.map +1 -1
  286. package/dist/utils/PDFExtractor.js +2 -129
  287. package/dist/utils/PDFExtractor.js.map +1 -1
  288. package/dist/utils/PdfDownload.d.ts +1 -6
  289. package/dist/utils/PdfDownload.d.ts.map +1 -1
  290. package/dist/utils/PdfDownload.js +1 -141
  291. package/dist/utils/PdfDownload.js.map +1 -1
  292. package/dist/utils/RateLimiter.d.ts +1 -49
  293. package/dist/utils/RateLimiter.d.ts.map +1 -1
  294. package/dist/utils/RateLimiter.js +1 -127
  295. package/dist/utils/RateLimiter.js.map +1 -1
  296. package/dist/utils/RequestCache.d.ts +2 -25
  297. package/dist/utils/RequestCache.d.ts.map +1 -1
  298. package/dist/utils/RequestCache.js +2 -65
  299. package/dist/utils/RequestCache.js.map +1 -1
  300. package/dist/utils/SecurityUtils.d.ts +2 -79
  301. package/dist/utils/SecurityUtils.d.ts.map +1 -1
  302. package/dist/utils/SecurityUtils.js +2 -356
  303. package/dist/utils/SecurityUtils.js.map +1 -1
  304. package/package.json +1 -1
@@ -0,0 +1,142 @@
1
+ import axios from 'axios';
2
+ const EASYSCHOLAR_URL = 'https://www.easyscholar.cc/open/getPublicationRank';
3
+ const REQUEST_DELAY_MS = 500;
4
+ function easyScholarKey() {
5
+ const key = process.env.EASYSCHOLAR_KEY || '';
6
+ if (!key.trim()) {
7
+ throw new Error('EasyScholar API key not configured. Set EASYSCHOLAR_KEY with `paper-search setup EASYSCHOLAR_KEY`.');
8
+ }
9
+ return key.trim();
10
+ }
11
+ function uniqueJournals(journals) {
12
+ const seen = new Set();
13
+ const unique = [];
14
+ for (const journal of journals.map(item => item.trim()).filter(Boolean)) {
15
+ if (seen.has(journal))
16
+ continue;
17
+ seen.add(journal);
18
+ unique.push(journal);
19
+ }
20
+ return unique;
21
+ }
22
+ function stringValue(value) {
23
+ if (typeof value !== 'string')
24
+ return undefined;
25
+ const trimmed = value.trim();
26
+ return trimmed || undefined;
27
+ }
28
+ function extractZone(value) {
29
+ const text = stringValue(value);
30
+ const match = text?.match(/(\d+)区/);
31
+ return match?.[1];
32
+ }
33
+ function extractSmallZones(value) {
34
+ const text = stringValue(value);
35
+ if (!text)
36
+ return undefined;
37
+ const matches = [...text.matchAll(/([^/。;;]+?)([1-4])区/g)].map(match => `${match[1].trim()}${match[2]}区`);
38
+ return matches.length ? matches : undefined;
39
+ }
40
+ function normalizeOfficialRank(all) {
41
+ const casUpgraded = stringValue(all.sciUp);
42
+ const casBase = stringValue(all.sciBase);
43
+ const casSmall = stringValue(all.sciUpSmall);
44
+ const core = {
45
+ impact_factor: stringValue(all.sciif),
46
+ impact_factor_5y: stringValue(all.sciif5),
47
+ jcr_quartile: stringValue(all.sci),
48
+ ssci_quartile: stringValue(all.ssci),
49
+ jci: stringValue(all.jci),
50
+ cas_base: casBase,
51
+ cas_upgraded: casUpgraded,
52
+ cas_small: casSmall,
53
+ cas_top: stringValue(all.sciUpTop),
54
+ cas_zone: extractZone(casUpgraded) || extractZone(casBase),
55
+ cas_small_zones: extractSmallZones(casSmall),
56
+ esi: stringValue(all.esi),
57
+ warning: stringValue(all.sciwarn),
58
+ pku: stringValue(all.pku),
59
+ cssci: stringValue(all.cssci),
60
+ cscd: stringValue(all.cscd),
61
+ ahci: stringValue(all.ahci),
62
+ ccf: stringValue(all.ccf),
63
+ ei: stringValue(all.eii),
64
+ china_st_core: stringValue(all.zhongguokejihexin)
65
+ };
66
+ return Object.fromEntries(Object.entries(core).filter(([, value]) => value !== undefined));
67
+ }
68
+ function formatResult(journal, data, includeRaw) {
69
+ if (data.code !== 200 || data.msg !== 'SUCCESS' || !data.data) {
70
+ return {
71
+ journal,
72
+ status: 'not_found',
73
+ source: 'easyScholar',
74
+ message: data.msg || `EasyScholar returned code ${data.code ?? 'unknown'}`,
75
+ core: {}
76
+ };
77
+ }
78
+ const officialAll = data.data.officialRank?.all || {};
79
+ const officialSelect = data.data.officialRank?.select || {};
80
+ if (Object.keys(officialAll).length === 0) {
81
+ return {
82
+ journal,
83
+ status: 'not_found',
84
+ source: 'easyScholar',
85
+ message: 'No officialRank.all fields returned for this journal.',
86
+ core: {}
87
+ };
88
+ }
89
+ const row = {
90
+ journal,
91
+ status: 'found',
92
+ source: 'easyScholar',
93
+ core: normalizeOfficialRank(officialAll)
94
+ };
95
+ if (includeRaw) {
96
+ row.official_all = officialAll;
97
+ row.official_select = officialSelect;
98
+ row.custom_rank = data.data.customRank || {};
99
+ }
100
+ return row;
101
+ }
102
+ async function delay(ms) {
103
+ await new Promise(resolve => setTimeout(resolve, ms));
104
+ }
105
+ export async function queryJournalMetrics(options) {
106
+ const secretKey = easyScholarKey();
107
+ const journals = uniqueJournals(options.journals);
108
+ if (journals.length === 0) {
109
+ throw new Error('Provide at least one journal name.');
110
+ }
111
+ const rows = [];
112
+ for (let index = 0; index < journals.length; index += 1) {
113
+ const journal = journals[index];
114
+ try {
115
+ const response = await axios.get(EASYSCHOLAR_URL, {
116
+ params: {
117
+ secretKey,
118
+ publicationName: journal
119
+ },
120
+ timeout: 15000,
121
+ headers: {
122
+ 'User-Agent': 'Paper-Search-CLI/JournalMetrics'
123
+ }
124
+ });
125
+ rows.push(formatResult(journal, response.data, Boolean(options.includeRaw)));
126
+ }
127
+ catch (error) {
128
+ rows.push({
129
+ journal,
130
+ status: 'error',
131
+ source: 'easyScholar',
132
+ message: error?.message || String(error),
133
+ core: {}
134
+ });
135
+ }
136
+ if (index < journals.length - 1) {
137
+ await delay(REQUEST_DELAY_MS);
138
+ }
139
+ }
140
+ return rows;
141
+ }
142
+ //# sourceMappingURL=JournalMetricsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JournalMetricsService.js","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/JournalMetricsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare function handleJournalMetrics(args: {
2
+ journal?: unknown;
3
+ journals?: unknown;
4
+ file?: unknown;
5
+ includeRaw?: boolean;
6
+ }): Promise<{
7
+ content: {
8
+ type: "text";
9
+ text: string;
10
+ }[];
11
+ }>;
12
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/handler.ts"],"names":[],"mappings":"AAuBA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;;;;;GAgBA"}
@@ -0,0 +1,38 @@
1
+ import { readFileSync } from 'fs';
2
+ import { queryJournalMetrics } from './JournalMetricsService.js';
3
+ function jsonTextResponse(text) {
4
+ return {
5
+ content: [
6
+ {
7
+ type: 'text',
8
+ text
9
+ }
10
+ ]
11
+ };
12
+ }
13
+ function parseJournalList(value) {
14
+ if (!value)
15
+ return [];
16
+ if (Array.isArray(value))
17
+ return value.map(item => String(item));
18
+ return String(value)
19
+ .split(/\r?\n|[,;;]/)
20
+ .map(item => item.trim())
21
+ .filter(Boolean);
22
+ }
23
+ export async function handleJournalMetrics(args) {
24
+ const journals = [
25
+ ...parseJournalList(args.journal),
26
+ ...parseJournalList(args.journals),
27
+ ...(args.file
28
+ ? readFileSync(String(args.file), 'utf8')
29
+ .split(/\r?\n/)
30
+ .map(line => line.trim())
31
+ .filter(line => line && !line.startsWith('#'))
32
+ : [])
33
+ ];
34
+ const rows = await queryJournalMetrics({ journals, includeRaw: args.includeRaw });
35
+ const found = rows.filter(row => row.status === 'found').length;
36
+ return jsonTextResponse(`Found journal metrics for ${found}/${rows.length} journal(s).\n\n${JSON.stringify(rows, null, 2)}`);
37
+ }
38
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,KAAK,CAAC;SACjB,KAAK,CAAC,aAAa,CAAC;SACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAK1C;IACC,MAAM,QAAQ,GAAG;QACf,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;iBACpC,KAAK,CAAC,OAAO,CAAC;iBACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAChE,OAAO,gBAAgB,CACrB,6BAA6B,KAAK,IAAI,IAAI,CAAC,MAAM,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACpG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { handleJournalMetrics } from './handler.js';
2
+ export { queryJournalMetrics } from './JournalMetricsService.js';
3
+ export { QueryJournalMetricsSchema } from './schemas.js';
4
+ export { JOURNAL_METRICS_TOOLS, QUERY_JOURNAL_METRICS_TOOL } from './tools.js';
5
+ export type { JournalMetricsRow, QueryJournalMetricsOptions } from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE/E,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { handleJournalMetrics } from './handler.js';
2
+ export { queryJournalMetrics } from './JournalMetricsService.js';
3
+ export { QueryJournalMetricsSchema } from './schemas.js';
4
+ export { JOURNAL_METRICS_TOOLS, QUERY_JOURNAL_METRICS_TOOL } from './tools.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ export declare const QueryJournalMetricsSchema: z.ZodEffects<z.ZodObject<{
3
+ journal: z.ZodOptional<z.ZodString>;
4
+ journals: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
5
+ file: z.ZodOptional<z.ZodString>;
6
+ includeRaw: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ includeRaw: boolean;
9
+ journal?: string | undefined;
10
+ journals?: string | string[] | undefined;
11
+ file?: string | undefined;
12
+ }, {
13
+ journal?: string | undefined;
14
+ journals?: string | string[] | undefined;
15
+ file?: string | undefined;
16
+ includeRaw?: boolean | undefined;
17
+ }>, {
18
+ includeRaw: boolean;
19
+ journal?: string | undefined;
20
+ journals?: string | string[] | undefined;
21
+ file?: string | undefined;
22
+ }, {
23
+ journal?: string | undefined;
24
+ journals?: string | string[] | undefined;
25
+ file?: string | undefined;
26
+ includeRaw?: boolean | undefined;
27
+ }>;
28
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EAUlC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export const QueryJournalMetricsSchema = z
3
+ .object({
4
+ journal: z.string().optional(),
5
+ journals: z.union([z.string(), z.array(z.string())]).optional(),
6
+ file: z.string().optional(),
7
+ includeRaw: z.boolean().optional().default(false)
8
+ })
9
+ .strip()
10
+ .refine(value => Boolean(value.journal || value.journals || value.file), {
11
+ message: 'Provide journal, journals, or file'
12
+ });
13
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClD,CAAC;KACD,KAAK,EAAE;KACP,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;IACvE,OAAO,EAAE,oCAAoC;CAC9C,CAAC,CAAC"}
@@ -0,0 +1,67 @@
1
+ export declare const QUERY_JOURNAL_METRICS_TOOL: {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: string;
6
+ properties: {
7
+ journal: {
8
+ type: string;
9
+ description: string;
10
+ };
11
+ journals: {
12
+ anyOf: ({
13
+ type: string;
14
+ items?: undefined;
15
+ } | {
16
+ type: string;
17
+ items: {
18
+ type: string;
19
+ };
20
+ })[];
21
+ description: string;
22
+ };
23
+ file: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ includeRaw: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ };
32
+ };
33
+ };
34
+ export declare const JOURNAL_METRICS_TOOLS: {
35
+ name: string;
36
+ description: string;
37
+ inputSchema: {
38
+ type: string;
39
+ properties: {
40
+ journal: {
41
+ type: string;
42
+ description: string;
43
+ };
44
+ journals: {
45
+ anyOf: ({
46
+ type: string;
47
+ items?: undefined;
48
+ } | {
49
+ type: string;
50
+ items: {
51
+ type: string;
52
+ };
53
+ })[];
54
+ description: string;
55
+ };
56
+ file: {
57
+ type: string;
58
+ description: string;
59
+ };
60
+ includeRaw: {
61
+ type: string;
62
+ description: string;
63
+ };
64
+ };
65
+ };
66
+ }[];
67
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/tools.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBtC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA+B,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const QUERY_JOURNAL_METRICS_TOOL = {
2
+ name: 'query_journal_metrics',
3
+ description: 'Query journal-level metrics from EasyScholar, including JCR impact factor, JCR quartile, CAS zones, JCI, ESI, and optional raw official/custom rank fields. Requires EASYSCHOLAR_KEY.',
4
+ inputSchema: {
5
+ type: 'object',
6
+ properties: {
7
+ journal: {
8
+ type: 'string',
9
+ description: 'Single journal name to query'
10
+ },
11
+ journals: {
12
+ anyOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],
13
+ description: 'Journal names as an array or a newline/comma/semicolon-separated string'
14
+ },
15
+ file: {
16
+ type: 'string',
17
+ description: 'Text file with one journal name per line'
18
+ },
19
+ includeRaw: {
20
+ type: 'boolean',
21
+ description: 'Include raw officialRank.all, officialRank.select, and customRank objects. Default: false.'
22
+ }
23
+ }
24
+ }
25
+ };
26
+ export const JOURNAL_METRICS_TOOLS = [QUERY_JOURNAL_METRICS_TOOL];
27
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/tools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,uLAAuL;IACzL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;gBACzE,WAAW,EAAE,yEAAyE;aACvF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0CAA0C;aACxD;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,4FAA4F;aAC1G;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ export interface QueryJournalMetricsOptions {
2
+ journals: string[];
3
+ includeRaw?: boolean;
4
+ }
5
+ export interface JournalMetricsRow {
6
+ journal: string;
7
+ status: 'found' | 'not_found' | 'error';
8
+ source: 'easyScholar';
9
+ message?: string;
10
+ core: {
11
+ impact_factor?: string;
12
+ impact_factor_5y?: string;
13
+ jcr_quartile?: string;
14
+ ssci_quartile?: string;
15
+ jci?: string;
16
+ cas_base?: string;
17
+ cas_upgraded?: string;
18
+ cas_small?: string;
19
+ cas_top?: string;
20
+ cas_zone?: string;
21
+ cas_small_zones?: string[];
22
+ esi?: string;
23
+ warning?: string;
24
+ pku?: string;
25
+ cssci?: string;
26
+ cscd?: string;
27
+ ahci?: string;
28
+ ccf?: string;
29
+ ei?: string;
30
+ china_st_core?: string;
31
+ };
32
+ official_all?: Record<string, unknown>;
33
+ official_select?: Record<string, unknown>;
34
+ custom_rank?: unknown;
35
+ }
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/capabilities/journal-metrics/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { Searchers } from '../../core/searchers.js';
2
+ import { Paper } from '../../models/Paper.js';
3
+ import { SearchOptions } from '../../platforms/PaperSource.js';
4
+ import type { MultiSourceSearchResult } from './types.js';
5
+ export type { MultiSourceSearchResult } from './types.js';
6
+ export declare function parseSourceList(sources: string | undefined, searchers: Searchers): string[];
7
+ export declare function searchMultipleSources(searchers: Searchers, query: string, sources: string, options: SearchOptions, sourceTimeoutMs?: number): Promise<MultiSourceSearchResult>;
8
+ export declare function dedupePapers(papers: Paper[]): Paper[];
9
+ //# sourceMappingURL=MultiSourceSearchService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSourceSearchService.d.ts","sourceRoot":"","sources":["../../../src/capabilities/metadata-search/MultiSourceSearchService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAgB,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAe,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAI1D,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,CAc3F;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,eAAe,GAAE,MAA6B,GAC7C,OAAO,CAAC,uBAAuB,CAAC,CA8ClC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAYrD"}
@@ -0,0 +1,78 @@
1
+ import { TIMEOUTS } from '../../config/constants.js';
2
+ import { PaperFactory } from '../../models/Paper.js';
3
+ import { withTimeout } from '../../utils/SecurityUtils.js';
4
+ import { getAliasMap, getDefaultAllSources, resolvePlatformId } from '../../core/platformMetadata.js';
5
+ const ALIASES = getAliasMap();
6
+ export function parseSourceList(sources, searchers) {
7
+ const requested = !sources || sources.trim() === '' ? 'crossref' : sources.trim();
8
+ if (requested.toLowerCase() === 'all') {
9
+ return getDefaultAllSources().filter(source => source in searchers);
10
+ }
11
+ return requested
12
+ .split(',')
13
+ .map(source => source.trim().toLowerCase())
14
+ .filter(Boolean)
15
+ .map(source => ALIASES[source] || resolvePlatformId(source))
16
+ .filter((source, index, values) => values.indexOf(source) === index)
17
+ .filter(source => source in searchers);
18
+ }
19
+ export async function searchMultipleSources(searchers, query, sources, options, sourceTimeoutMs = TIMEOUTS.SOURCE_TASK) {
20
+ const selected = parseSourceList(sources, searchers);
21
+ const settled = await Promise.allSettled(selected.map(async (source) => {
22
+ const searcher = searchers[source];
23
+ const results = await withTimeout(searcher.search(query, options), sourceTimeoutMs, `${source} search timed out after ${sourceTimeoutMs}ms`);
24
+ return { source, results };
25
+ }));
26
+ const sourceResults = {};
27
+ const errors = {};
28
+ const failedSources = [];
29
+ const merged = [];
30
+ for (let i = 0; i < settled.length; i += 1) {
31
+ const source = selected[i];
32
+ const result = settled[i];
33
+ if (result.status === 'rejected') {
34
+ sourceResults[source] = 0;
35
+ errors[source] = result.reason?.message || String(result.reason);
36
+ failedSources.push(source);
37
+ continue;
38
+ }
39
+ sourceResults[source] = result.value.results.length;
40
+ merged.push(...result.value.results);
41
+ }
42
+ const deduped = dedupePapers(merged);
43
+ return {
44
+ query,
45
+ sources_requested: sources,
46
+ sources_used: selected,
47
+ source_results: sourceResults,
48
+ errors,
49
+ failed_sources: failedSources,
50
+ warnings: failedSources.map(source => `${source}: ${errors[source]}`),
51
+ total: deduped.length,
52
+ raw_total: merged.length,
53
+ papers: deduped.map(paper => PaperFactory.toDict(paper))
54
+ };
55
+ }
56
+ export function dedupePapers(papers) {
57
+ const seen = new Set();
58
+ const out = [];
59
+ for (const paper of papers) {
60
+ const key = paperKey(paper);
61
+ if (seen.has(key))
62
+ continue;
63
+ seen.add(key);
64
+ out.push(paper);
65
+ }
66
+ return out;
67
+ }
68
+ function paperKey(paper) {
69
+ const doi = (paper.doi || '').trim().toLowerCase();
70
+ if (doi)
71
+ return `doi:${doi}`;
72
+ const title = (paper.title || '').trim().toLowerCase();
73
+ const authors = (paper.authors || []).join(';').trim().toLowerCase();
74
+ if (title)
75
+ return `title:${title}|authors:${authors}`;
76
+ return `id:${paper.source || 'unknown'}:${paper.paperId || 'unknown'}`;
77
+ }
78
+ //# sourceMappingURL=MultiSourceSearchService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSourceSearchService.js","sourceRoot":"","sources":["../../../src/capabilities/metadata-search/MultiSourceSearchService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Searchers } from '../../core/searchers.js';
2
+ export declare function handleGenericSearch(platform: string, args: any, searchers: Searchers): Promise<{
3
+ content: {
4
+ type: "text";
5
+ text: string;
6
+ }[];
7
+ }>;
8
+ export declare function handleSearchPapers(args: any, searchers: Searchers): Promise<{
9
+ content: {
10
+ type: "text";
11
+ text: string;
12
+ }[];
13
+ }>;
14
+ export declare function handleGetPaperByDoi(args: {
15
+ doi: string;
16
+ platform: string;
17
+ }, searchers: Searchers): Promise<{
18
+ content: {
19
+ type: "text";
20
+ text: string;
21
+ }[];
22
+ }>;
23
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/capabilities/metadata-search/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AA8CzD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS;;;;;GAkB1F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS;;;;;GAiDvE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,EAAE,SAAS;;;;;GA4FtG"}