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.
- package/.env.example +165 -0
- package/LICENSE +21 -0
- package/README-sc.md +642 -0
- package/README.md +642 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +637 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/ConfigService.d.ts +26 -0
- package/dist/config/ConfigService.d.ts.map +1 -0
- package/dist/config/ConfigService.js +145 -0
- package/dist/config/ConfigService.js.map +1 -0
- package/dist/config/constants.d.ts +140 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +93 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/core/diagnostics.d.ts +43 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +544 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/handleToolCall.d.ts +8 -0
- package/dist/core/handleToolCall.d.ts.map +1 -0
- package/dist/core/handleToolCall.js +440 -0
- package/dist/core/handleToolCall.js.map +1 -0
- package/dist/core/schemas.d.ts +454 -0
- package/dist/core/schemas.d.ts.map +1 -0
- package/dist/core/schemas.js +322 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/core/searchers.d.ts +45 -0
- package/dist/core/searchers.d.ts.map +1 -0
- package/dist/core/searchers.js +73 -0
- package/dist/core/searchers.js.map +1 -0
- package/dist/core/tools.d.ts +7 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +640 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/models/Paper.d.ts +64 -0
- package/dist/models/Paper.d.ts.map +1 -0
- package/dist/models/Paper.js +70 -0
- package/dist/models/Paper.js.map +1 -0
- package/dist/platforms/ArxivSearcher.d.ts +64 -0
- package/dist/platforms/ArxivSearcher.d.ts.map +1 -0
- package/dist/platforms/ArxivSearcher.js +531 -0
- package/dist/platforms/ArxivSearcher.js.map +1 -0
- package/dist/platforms/BioRxivSearcher.d.ts +47 -0
- package/dist/platforms/BioRxivSearcher.d.ts.map +1 -0
- package/dist/platforms/BioRxivSearcher.js +196 -0
- package/dist/platforms/BioRxivSearcher.js.map +1 -0
- package/dist/platforms/CORESearcher.d.ts +16 -0
- package/dist/platforms/CORESearcher.d.ts.map +1 -0
- package/dist/platforms/CORESearcher.js +148 -0
- package/dist/platforms/CORESearcher.js.map +1 -0
- package/dist/platforms/CrossrefSearcher.d.ts +34 -0
- package/dist/platforms/CrossrefSearcher.d.ts.map +1 -0
- package/dist/platforms/CrossrefSearcher.js +339 -0
- package/dist/platforms/CrossrefSearcher.js.map +1 -0
- package/dist/platforms/EuropePMCSearcher.d.ts +20 -0
- package/dist/platforms/EuropePMCSearcher.d.ts.map +1 -0
- package/dist/platforms/EuropePMCSearcher.js +173 -0
- package/dist/platforms/EuropePMCSearcher.js.map +1 -0
- package/dist/platforms/GoogleScholarSearcher.d.ts +77 -0
- package/dist/platforms/GoogleScholarSearcher.d.ts.map +1 -0
- package/dist/platforms/GoogleScholarSearcher.js +262 -0
- package/dist/platforms/GoogleScholarSearcher.js.map +1 -0
- package/dist/platforms/IACRSearcher.d.ts +51 -0
- package/dist/platforms/IACRSearcher.d.ts.map +1 -0
- package/dist/platforms/IACRSearcher.js +339 -0
- package/dist/platforms/IACRSearcher.js.map +1 -0
- package/dist/platforms/OpenAIRESearcher.d.ts +22 -0
- package/dist/platforms/OpenAIRESearcher.d.ts.map +1 -0
- package/dist/platforms/OpenAIRESearcher.js +223 -0
- package/dist/platforms/OpenAIRESearcher.js.map +1 -0
- package/dist/platforms/OpenAlexSearcher.d.ts +14 -0
- package/dist/platforms/OpenAlexSearcher.d.ts.map +1 -0
- package/dist/platforms/OpenAlexSearcher.js +114 -0
- package/dist/platforms/OpenAlexSearcher.js.map +1 -0
- package/dist/platforms/PMCSearcher.d.ts +20 -0
- package/dist/platforms/PMCSearcher.d.ts.map +1 -0
- package/dist/platforms/PMCSearcher.js +177 -0
- package/dist/platforms/PMCSearcher.js.map +1 -0
- package/dist/platforms/PaperSource.d.ts +143 -0
- package/dist/platforms/PaperSource.d.ts.map +1 -0
- package/dist/platforms/PaperSource.js +125 -0
- package/dist/platforms/PaperSource.js.map +1 -0
- package/dist/platforms/PubMedSearcher.d.ts +104 -0
- package/dist/platforms/PubMedSearcher.d.ts.map +1 -0
- package/dist/platforms/PubMedSearcher.js +422 -0
- package/dist/platforms/PubMedSearcher.js.map +1 -0
- package/dist/platforms/SciHubSearcher.d.ts +66 -0
- package/dist/platforms/SciHubSearcher.d.ts.map +1 -0
- package/dist/platforms/SciHubSearcher.js +398 -0
- package/dist/platforms/SciHubSearcher.js.map +1 -0
- package/dist/platforms/ScienceDirectSearcher.d.ts +42 -0
- package/dist/platforms/ScienceDirectSearcher.d.ts.map +1 -0
- package/dist/platforms/ScienceDirectSearcher.js +326 -0
- package/dist/platforms/ScienceDirectSearcher.js.map +1 -0
- package/dist/platforms/ScopusSearcher.d.ts +43 -0
- package/dist/platforms/ScopusSearcher.d.ts.map +1 -0
- package/dist/platforms/ScopusSearcher.js +364 -0
- package/dist/platforms/ScopusSearcher.js.map +1 -0
- package/dist/platforms/SemanticScholarSearcher.d.ts +96 -0
- package/dist/platforms/SemanticScholarSearcher.d.ts.map +1 -0
- package/dist/platforms/SemanticScholarSearcher.js +419 -0
- package/dist/platforms/SemanticScholarSearcher.js.map +1 -0
- package/dist/platforms/SpringerSearcher.d.ts +54 -0
- package/dist/platforms/SpringerSearcher.d.ts.map +1 -0
- package/dist/platforms/SpringerSearcher.js +407 -0
- package/dist/platforms/SpringerSearcher.js.map +1 -0
- package/dist/platforms/UnpaywallSearcher.d.ts +18 -0
- package/dist/platforms/UnpaywallSearcher.d.ts.map +1 -0
- package/dist/platforms/UnpaywallSearcher.js +115 -0
- package/dist/platforms/UnpaywallSearcher.js.map +1 -0
- package/dist/platforms/WebOfScienceSearcher.d.ts +111 -0
- package/dist/platforms/WebOfScienceSearcher.d.ts.map +1 -0
- package/dist/platforms/WebOfScienceSearcher.js +500 -0
- package/dist/platforms/WebOfScienceSearcher.js.map +1 -0
- package/dist/platforms/WileySearcher.d.ts +44 -0
- package/dist/platforms/WileySearcher.d.ts.map +1 -0
- package/dist/platforms/WileySearcher.js +148 -0
- package/dist/platforms/WileySearcher.js.map +1 -0
- package/dist/services/CitationService.d.ts +66 -0
- package/dist/services/CitationService.d.ts.map +1 -0
- package/dist/services/CitationService.js +237 -0
- package/dist/services/CitationService.js.map +1 -0
- package/dist/services/MultiSourceSearchService.d.ts +19 -0
- package/dist/services/MultiSourceSearchService.d.ts.map +1 -0
- package/dist/services/MultiSourceSearchService.js +96 -0
- package/dist/services/MultiSourceSearchService.js.map +1 -0
- package/dist/services/OpenAccessFallbackService.d.ts +20 -0
- package/dist/services/OpenAccessFallbackService.d.ts.map +1 -0
- package/dist/services/OpenAccessFallbackService.js +124 -0
- package/dist/services/OpenAccessFallbackService.js.map +1 -0
- package/dist/utils/ErrorHandler.d.ts +99 -0
- package/dist/utils/ErrorHandler.d.ts.map +1 -0
- package/dist/utils/ErrorHandler.js +266 -0
- package/dist/utils/ErrorHandler.js.map +1 -0
- package/dist/utils/Logger.d.ts +6 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +26 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/PDFExtractor.d.ts +34 -0
- package/dist/utils/PDFExtractor.d.ts.map +1 -0
- package/dist/utils/PDFExtractor.js +130 -0
- package/dist/utils/PDFExtractor.js.map +1 -0
- package/dist/utils/PdfDownload.d.ts +7 -0
- package/dist/utils/PdfDownload.d.ts.map +1 -0
- package/dist/utils/PdfDownload.js +52 -0
- package/dist/utils/PdfDownload.js.map +1 -0
- package/dist/utils/QuotaManager.d.ts +32 -0
- package/dist/utils/QuotaManager.d.ts.map +1 -0
- package/dist/utils/QuotaManager.js +95 -0
- package/dist/utils/QuotaManager.js.map +1 -0
- package/dist/utils/RateLimiter.d.ts +50 -0
- package/dist/utils/RateLimiter.d.ts.map +1 -0
- package/dist/utils/RateLimiter.js +121 -0
- package/dist/utils/RateLimiter.js.map +1 -0
- package/dist/utils/RequestCache.d.ts +26 -0
- package/dist/utils/RequestCache.d.ts.map +1 -0
- package/dist/utils/RequestCache.js +66 -0
- package/dist/utils/RequestCache.js.map +1 -0
- package/dist/utils/SecurityUtils.d.ts +80 -0
- package/dist/utils/SecurityUtils.d.ts.map +1 -0
- package/dist/utils/SecurityUtils.js +357 -0
- package/dist/utils/SecurityUtils.js.map +1 -0
- package/package.json +111 -0
- package/skills/paper-search/SKILL.md +192 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一的学术论文数据模型
|
|
3
|
+
* 支持多个学术平台的标准化数据格式
|
|
4
|
+
*/
|
|
5
|
+
export interface Paper {
|
|
6
|
+
/** 唯一标识符 (如 arXiv ID, PMID, DOI) */
|
|
7
|
+
paperId: string;
|
|
8
|
+
/** 论文标题 */
|
|
9
|
+
title: string;
|
|
10
|
+
/** 作者列表 */
|
|
11
|
+
authors: string[];
|
|
12
|
+
/** 摘要 */
|
|
13
|
+
abstract: string;
|
|
14
|
+
/** DOI (数字对象标识符) */
|
|
15
|
+
doi: string;
|
|
16
|
+
/** 发布日期 */
|
|
17
|
+
publishedDate: Date | null;
|
|
18
|
+
/** PDF直接下载链接 */
|
|
19
|
+
pdfUrl: string;
|
|
20
|
+
/** 论文页面URL */
|
|
21
|
+
url: string;
|
|
22
|
+
/** 来源平台 (如 'arxiv', 'pubmed', 'webofscience') */
|
|
23
|
+
source: string;
|
|
24
|
+
/** 最后更新日期 */
|
|
25
|
+
updatedDate?: Date;
|
|
26
|
+
/** 学科分类 */
|
|
27
|
+
categories?: string[];
|
|
28
|
+
/** 关键词 */
|
|
29
|
+
keywords?: string[];
|
|
30
|
+
/** 被引次数 */
|
|
31
|
+
citationCount?: number;
|
|
32
|
+
/** 参考文献ID/DOI列表 */
|
|
33
|
+
references?: string[];
|
|
34
|
+
/** 期刊/会议名称 */
|
|
35
|
+
journal?: string;
|
|
36
|
+
/** 卷号 */
|
|
37
|
+
volume?: string;
|
|
38
|
+
/** 期号 */
|
|
39
|
+
issue?: string;
|
|
40
|
+
/** 页码范围 */
|
|
41
|
+
pages?: string;
|
|
42
|
+
/** 年份 */
|
|
43
|
+
year?: number;
|
|
44
|
+
/** 平台特定的额外元数据 */
|
|
45
|
+
extra?: Record<string, any>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Paper工厂类,用于创建和验证Paper对象
|
|
49
|
+
*/
|
|
50
|
+
export declare class PaperFactory {
|
|
51
|
+
/**
|
|
52
|
+
* 创建Paper对象
|
|
53
|
+
*/
|
|
54
|
+
static create(data: Partial<Paper> & Required<Pick<Paper, 'paperId' | 'title' | 'source'>>): Paper;
|
|
55
|
+
/**
|
|
56
|
+
* 将Paper对象转换为字典格式(用于序列化)
|
|
57
|
+
*/
|
|
58
|
+
static toDict(paper: Paper): Record<string, any>;
|
|
59
|
+
/**
|
|
60
|
+
* 验证Paper对象是否有效
|
|
61
|
+
*/
|
|
62
|
+
static validate(paper: Paper): boolean;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=Paper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paper.d.ts","sourceRoot":"","sources":["../../src/models/Paper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,KAAK;IAEpB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IAEd,WAAW;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,SAAS;IACT,QAAQ,EAAE,MAAM,CAAC;IAEjB,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW;IACX,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAE3B,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;IAEf,cAAc;IACd,GAAG,EAAE,MAAM,CAAC;IAEZ,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IAGf,aAAa;IACb,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,UAAU;IACV,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,KAAK;IAyBlG;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAyBhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAGvC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一的学术论文数据模型
|
|
3
|
+
* 支持多个学术平台的标准化数据格式
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Paper工厂类,用于创建和验证Paper对象
|
|
7
|
+
*/
|
|
8
|
+
export class PaperFactory {
|
|
9
|
+
/**
|
|
10
|
+
* 创建Paper对象
|
|
11
|
+
*/
|
|
12
|
+
static create(data) {
|
|
13
|
+
return {
|
|
14
|
+
paperId: data.paperId,
|
|
15
|
+
title: data.title,
|
|
16
|
+
authors: data.authors || [],
|
|
17
|
+
abstract: data.abstract || '',
|
|
18
|
+
doi: data.doi || '',
|
|
19
|
+
publishedDate: data.publishedDate || null,
|
|
20
|
+
pdfUrl: data.pdfUrl || '',
|
|
21
|
+
url: data.url || '',
|
|
22
|
+
source: data.source,
|
|
23
|
+
updatedDate: data.updatedDate,
|
|
24
|
+
categories: data.categories || [],
|
|
25
|
+
keywords: data.keywords || [],
|
|
26
|
+
citationCount: data.citationCount || 0,
|
|
27
|
+
references: data.references || [],
|
|
28
|
+
journal: data.journal,
|
|
29
|
+
volume: data.volume,
|
|
30
|
+
issue: data.issue,
|
|
31
|
+
pages: data.pages,
|
|
32
|
+
year: data.year,
|
|
33
|
+
extra: data.extra || {}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 将Paper对象转换为字典格式(用于序列化)
|
|
38
|
+
*/
|
|
39
|
+
static toDict(paper) {
|
|
40
|
+
return {
|
|
41
|
+
paper_id: paper.paperId,
|
|
42
|
+
title: paper.title,
|
|
43
|
+
authors: paper.authors.join('; '),
|
|
44
|
+
abstract: paper.abstract,
|
|
45
|
+
doi: paper.doi,
|
|
46
|
+
published_date: paper.publishedDate?.toISOString() || '',
|
|
47
|
+
pdf_url: paper.pdfUrl,
|
|
48
|
+
url: paper.url,
|
|
49
|
+
source: paper.source,
|
|
50
|
+
updated_date: paper.updatedDate?.toISOString() || '',
|
|
51
|
+
categories: paper.categories?.join('; ') || '',
|
|
52
|
+
keywords: paper.keywords?.join('; ') || '',
|
|
53
|
+
citation_count: paper.citationCount || 0,
|
|
54
|
+
references: paper.references?.join('; ') || '',
|
|
55
|
+
journal: paper.journal || '',
|
|
56
|
+
volume: paper.volume || '',
|
|
57
|
+
issue: paper.issue || '',
|
|
58
|
+
pages: paper.pages || '',
|
|
59
|
+
year: paper.year || null,
|
|
60
|
+
extra: JSON.stringify(paper.extra || {})
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 验证Paper对象是否有效
|
|
65
|
+
*/
|
|
66
|
+
static validate(paper) {
|
|
67
|
+
return !!(paper.paperId && paper.title && paper.source);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=Paper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paper.js","sourceRoot":"","sources":["../../src/models/Paper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkEH;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAA4E;QACxF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,KAAY;QACxB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE;YACxD,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE;YACpD,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC1C,cAAc,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9C,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;YACxB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAY;QAC1B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* arXiv API集成模块
|
|
3
|
+
* 基于arXiv API v1.1实现论文搜索和下载功能
|
|
4
|
+
*/
|
|
5
|
+
import { Paper } from '../models/Paper.js';
|
|
6
|
+
import { PaperSource, SearchOptions, DownloadOptions, PlatformCapabilities } from './PaperSource.js';
|
|
7
|
+
export declare class ArxivSearcher extends PaperSource {
|
|
8
|
+
private readonly rateLimiter;
|
|
9
|
+
private readonly cache;
|
|
10
|
+
constructor();
|
|
11
|
+
getCapabilities(): PlatformCapabilities;
|
|
12
|
+
/**
|
|
13
|
+
* 搜索arXiv论文
|
|
14
|
+
*/
|
|
15
|
+
search(query: string, options?: SearchOptions): Promise<Paper[]>;
|
|
16
|
+
private searchViaExportApi;
|
|
17
|
+
private fetchSearchPage;
|
|
18
|
+
private normalizeMaxResults;
|
|
19
|
+
private isTimeoutError;
|
|
20
|
+
private shouldUseWebFallback;
|
|
21
|
+
private isRateLimitError;
|
|
22
|
+
private waitForGlobalExportApiSlot;
|
|
23
|
+
private markGlobalExportApiCooldown;
|
|
24
|
+
private withArxivRateLimitLock;
|
|
25
|
+
private acquireArxivRateLimitLock;
|
|
26
|
+
private removeStaleArxivRateLimitLock;
|
|
27
|
+
private getArxivRateLimitPaths;
|
|
28
|
+
private readArxivRateLimitState;
|
|
29
|
+
private writeArxivRateLimitState;
|
|
30
|
+
private createArxivCooldownError;
|
|
31
|
+
private sleep;
|
|
32
|
+
private searchViaWebFallback;
|
|
33
|
+
private parseWebSearchResponse;
|
|
34
|
+
/**
|
|
35
|
+
* 下载PDF文件
|
|
36
|
+
*/
|
|
37
|
+
downloadPdf(paperId: string, options?: DownloadOptions): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* 读取论文全文内容(从PDF中提取)
|
|
40
|
+
*/
|
|
41
|
+
readPaper(paperId: string, options?: DownloadOptions): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* 构建搜索查询
|
|
44
|
+
*/
|
|
45
|
+
private buildSearchQuery;
|
|
46
|
+
private normalizeSearchQuery;
|
|
47
|
+
private hasArxivQuerySyntax;
|
|
48
|
+
private escapeArxivTerm;
|
|
49
|
+
private webFallbackPageSize;
|
|
50
|
+
private mapWebSortOrder;
|
|
51
|
+
/**
|
|
52
|
+
* 映射排序字段
|
|
53
|
+
*/
|
|
54
|
+
private mapSortField;
|
|
55
|
+
/**
|
|
56
|
+
* 解析搜索响应
|
|
57
|
+
*/
|
|
58
|
+
private parseSearchResponse;
|
|
59
|
+
/**
|
|
60
|
+
* 解析单个arXiv条目
|
|
61
|
+
*/
|
|
62
|
+
private parseArxivEntry;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=ArxivSearcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArxivSearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/ArxivSearcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAqDrG,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;;IAe9C,eAAe,IAAI,oBAAoB;IAWvC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAoD5D,kBAAkB;YAiClB,eAAe;IAwB7B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,gBAAgB;YAIV,0BAA0B;YAwB1B,2BAA2B;YAW3B,sBAAsB;YAatB,yBAAyB;IAevC,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,KAAK;YAIC,oBAAoB;IA8BlC,OAAO,CAAC,sBAAsB;IA0D9B;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwClF;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;YACW,mBAAmB;IAqBjC;;OAEG;IACH,OAAO,CAAC,eAAe;CA6DxB"}
|