@cyanheads/pubmed-mcp-server 2.7.11 → 2.9.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/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +4 -4
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +11 -3
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts +40 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +314 -79
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts +6 -2
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.js +17 -9
- package/dist/mcp-server/tools/definitions/format-citations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js +17 -4
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js.map +1 -1
- package/dist/services/error-contracts.d.ts +19 -1
- package/dist/services/error-contracts.d.ts.map +1 -1
- package/dist/services/error-contracts.js +27 -1
- package/dist/services/error-contracts.js.map +1 -1
- package/dist/services/europe-pmc/api-client.d.ts +14 -0
- package/dist/services/europe-pmc/api-client.d.ts.map +1 -1
- package/dist/services/europe-pmc/api-client.js +42 -0
- package/dist/services/europe-pmc/api-client.js.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts +28 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.js +59 -0
- package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
- package/dist/services/europe-pmc/types.d.ts +31 -0
- package/dist/services/europe-pmc/types.d.ts.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.d.ts +16 -2
- package/dist/services/ncbi/formatting/citation-formatter.d.ts.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.js +102 -2
- package/dist/services/ncbi/formatting/citation-formatter.js.map +1 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.d.ts +5 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.js +11 -2
- package/dist/services/ncbi/parsing/pmc-article-parser.js.map +1 -1
- package/dist/services/openalex/api-client.d.ts +39 -0
- package/dist/services/openalex/api-client.d.ts.map +1 -0
- package/dist/services/openalex/api-client.js +174 -0
- package/dist/services/openalex/api-client.js.map +1 -0
- package/dist/services/openalex/openalex-service.d.ts +59 -0
- package/dist/services/openalex/openalex-service.d.ts.map +1 -0
- package/dist/services/openalex/openalex-service.js +195 -0
- package/dist/services/openalex/openalex-service.js.map +1 -0
- package/dist/services/openalex/types.d.ts +56 -0
- package/dist/services/openalex/types.d.ts.map +1 -0
- package/dist/services/openalex/types.js +15 -0
- package/dist/services/openalex/types.js.map +1 -0
- package/package.json +2 -2
- package/server.json +3 -3
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Hand-rolled citation formatters for PubMed articles.
|
|
3
|
-
* Supports APA 7th, MLA 9th, BibTeX, and
|
|
3
|
+
* Supports APA 7th, MLA 9th, BibTeX, RIS, and Vancouver (ICMJE/NLM) formats.
|
|
4
4
|
* Pure TypeScript, zero dependencies, Workers-compatible.
|
|
5
5
|
* @module src/services/ncbi/formatting/citation-formatter
|
|
6
6
|
*/
|
|
7
7
|
import type { ParsedArticle } from '../types.js';
|
|
8
8
|
/** Supported citation output formats. */
|
|
9
|
-
export type CitationStyle = 'apa' | 'mla' | 'bibtex' | 'ris';
|
|
9
|
+
export type CitationStyle = 'apa' | 'mla' | 'bibtex' | 'ris' | 'vancouver';
|
|
10
10
|
/**
|
|
11
11
|
* Format a PubMed article as an APA 7th edition citation.
|
|
12
12
|
*
|
|
@@ -46,6 +46,20 @@ export declare function formatBibtex(article: ParsedArticle): string;
|
|
|
46
46
|
* Record ends with `ER - ` (trailing spaces per spec).
|
|
47
47
|
*/
|
|
48
48
|
export declare function formatRis(article: ParsedArticle): string;
|
|
49
|
+
/**
|
|
50
|
+
* Format a PubMed article as a Vancouver (ICMJE/NLM) reference — the numbered
|
|
51
|
+
* style used by NEJM, Lancet, JAMA, BMJ, and most biomedical journals.
|
|
52
|
+
*
|
|
53
|
+
* Pattern (the leading list number is the consumer's responsibility — entries
|
|
54
|
+
* are formatted independently, so this returns the unnumbered reference body):
|
|
55
|
+
* ```
|
|
56
|
+
* Surname AB, Surname CD, et al. Article title. Abbrev J Name. Year;Vol(Issue):Pages. doi: 10.x/y
|
|
57
|
+
* ```
|
|
58
|
+
* Journal name uses the NLM/ISO abbreviation when available; pages are used as
|
|
59
|
+
* PubMed supplies them (often elided, e.g. "583-9"); the DOI carries no trailing
|
|
60
|
+
* period so it stays copy-pasteable.
|
|
61
|
+
*/
|
|
62
|
+
export declare function formatVancouver(article: ParsedArticle): string;
|
|
49
63
|
/**
|
|
50
64
|
* Format a single article in the requested citation style.
|
|
51
65
|
* Throws on unsupported style.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"citation-formatter.d.ts","sourceRoot":"","sources":["../../../../src/services/ncbi/formatting/citation-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAEtE,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"citation-formatter.d.ts","sourceRoot":"","sources":["../../../../src/services/ncbi/formatting/citation-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAEtE,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;AAgM3E;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CA6CxD;AAMD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAkDxD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAkF3D;AAMD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CA4FxD;AA4CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAuC9D;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAanF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,aAAa,EAAE,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Hand-rolled citation formatters for PubMed articles.
|
|
3
|
-
* Supports APA 7th, MLA 9th, BibTeX, and
|
|
3
|
+
* Supports APA 7th, MLA 9th, BibTeX, RIS, and Vancouver (ICMJE/NLM) formats.
|
|
4
4
|
* Pure TypeScript, zero dependencies, Workers-compatible.
|
|
5
5
|
* @module src/services/ncbi/formatting/citation-formatter
|
|
6
6
|
*/
|
|
@@ -370,8 +370,12 @@ export function formatBibtex(article) {
|
|
|
370
370
|
if (m.descriptorName)
|
|
371
371
|
keywordSet.add(m.descriptorName);
|
|
372
372
|
}
|
|
373
|
+
// Brace-wrap each term so MeSH descriptors that carry internal commas in
|
|
374
|
+
// their inverted form (e.g. "Databases, Protein") stay a single keyword —
|
|
375
|
+
// biblatex's comma-separated list parser reads a braced item as one element.
|
|
373
376
|
if (keywordSet.size > 0) {
|
|
374
|
-
|
|
377
|
+
const keywords = [...keywordSet].map((k) => `{${escapeBibtex(k)}}`).join(', ');
|
|
378
|
+
fields.push(['keywords', keywords]);
|
|
375
379
|
}
|
|
376
380
|
// Build entry
|
|
377
381
|
const maxKeyLen = Math.max(...fields.map(([k]) => k.length));
|
|
@@ -468,6 +472,100 @@ export function formatRis(article) {
|
|
|
468
472
|
return lines.join('\n');
|
|
469
473
|
}
|
|
470
474
|
// ---------------------------------------------------------------------------
|
|
475
|
+
// Vancouver (ICMJE / NLM)
|
|
476
|
+
// ---------------------------------------------------------------------------
|
|
477
|
+
/**
|
|
478
|
+
* Format a single author in Vancouver style: `Surname AB` — surname, a space,
|
|
479
|
+
* then initials with no periods or internal spaces. Collective/group authors
|
|
480
|
+
* return their name directly.
|
|
481
|
+
*/
|
|
482
|
+
function formatAuthorVancouver(author) {
|
|
483
|
+
if (author.collectiveName)
|
|
484
|
+
return author.collectiveName;
|
|
485
|
+
const last = author.lastName ?? '';
|
|
486
|
+
const initialsSource = author.initials ??
|
|
487
|
+
author.firstName
|
|
488
|
+
?.split(/[\s-]+/)
|
|
489
|
+
.filter(Boolean)
|
|
490
|
+
.map((part) => part[0])
|
|
491
|
+
.join('');
|
|
492
|
+
// Letters only (Unicode-aware), uppercased, no separators: "AB", not "A. B."
|
|
493
|
+
const initials = initialsSource
|
|
494
|
+
? Array.from(initialsSource)
|
|
495
|
+
.filter((c) => /\p{L}/u.test(c))
|
|
496
|
+
.join('')
|
|
497
|
+
.toUpperCase()
|
|
498
|
+
: '';
|
|
499
|
+
if (!last)
|
|
500
|
+
return initials;
|
|
501
|
+
if (!initials)
|
|
502
|
+
return last;
|
|
503
|
+
return `${last} ${initials}`;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Format the full author list for Vancouver: list every author for six or
|
|
507
|
+
* fewer; for seven or more, list the first six followed by `et al.` (ICMJE).
|
|
508
|
+
*/
|
|
509
|
+
function formatAuthorsVancouver(authors) {
|
|
510
|
+
const names = authors.map(formatAuthorVancouver).filter(Boolean);
|
|
511
|
+
if (names.length === 0)
|
|
512
|
+
return '';
|
|
513
|
+
if (names.length <= 6)
|
|
514
|
+
return names.join(', ');
|
|
515
|
+
return `${names.slice(0, 6).join(', ')}, et al.`;
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Format a PubMed article as a Vancouver (ICMJE/NLM) reference — the numbered
|
|
519
|
+
* style used by NEJM, Lancet, JAMA, BMJ, and most biomedical journals.
|
|
520
|
+
*
|
|
521
|
+
* Pattern (the leading list number is the consumer's responsibility — entries
|
|
522
|
+
* are formatted independently, so this returns the unnumbered reference body):
|
|
523
|
+
* ```
|
|
524
|
+
* Surname AB, Surname CD, et al. Article title. Abbrev J Name. Year;Vol(Issue):Pages. doi: 10.x/y
|
|
525
|
+
* ```
|
|
526
|
+
* Journal name uses the NLM/ISO abbreviation when available; pages are used as
|
|
527
|
+
* PubMed supplies them (often elided, e.g. "583-9"); the DOI carries no trailing
|
|
528
|
+
* period so it stays copy-pasteable.
|
|
529
|
+
*/
|
|
530
|
+
export function formatVancouver(article) {
|
|
531
|
+
const segments = [];
|
|
532
|
+
// Authors — terminate with a period unless the list already ends in "et al."
|
|
533
|
+
const authorStr = article.authors?.length ? formatAuthorsVancouver(article.authors) : '';
|
|
534
|
+
if (authorStr) {
|
|
535
|
+
segments.push(authorStr.endsWith('.') ? authorStr : `${authorStr}.`);
|
|
536
|
+
}
|
|
537
|
+
// Title — sentence case as supplied, single terminating period
|
|
538
|
+
if (article.title) {
|
|
539
|
+
segments.push(`${article.title.replace(/\.\s*$/, '')}.`);
|
|
540
|
+
}
|
|
541
|
+
// Journal — NLM/ISO abbreviation preferred, full title as fallback
|
|
542
|
+
const journal = article.journalInfo;
|
|
543
|
+
const journalName = journal?.isoAbbreviation ?? journal?.title;
|
|
544
|
+
if (journalName) {
|
|
545
|
+
segments.push(`${journalName.replace(/\.\s*$/, '')}.`);
|
|
546
|
+
}
|
|
547
|
+
// Source — "Year;Volume(Issue):Pages."
|
|
548
|
+
const year = getYear(article);
|
|
549
|
+
let source = year !== 'n.d.' ? year : '';
|
|
550
|
+
if (journal?.volume) {
|
|
551
|
+
source += source ? `;${journal.volume}` : journal.volume;
|
|
552
|
+
if (journal.issue)
|
|
553
|
+
source += `(${journal.issue})`;
|
|
554
|
+
if (journal.pages)
|
|
555
|
+
source += `:${journal.pages}`;
|
|
556
|
+
}
|
|
557
|
+
else if (journal?.pages) {
|
|
558
|
+
source += source ? `:${journal.pages}` : journal.pages;
|
|
559
|
+
}
|
|
560
|
+
if (source)
|
|
561
|
+
segments.push(`${source}.`);
|
|
562
|
+
// DOI — NLM "doi: <doi>" form; no trailing period (would corrupt the DOI)
|
|
563
|
+
if (article.doi) {
|
|
564
|
+
segments.push(`doi: ${article.doi}`);
|
|
565
|
+
}
|
|
566
|
+
return segments.join(' ');
|
|
567
|
+
}
|
|
568
|
+
// ---------------------------------------------------------------------------
|
|
471
569
|
// Dispatchers
|
|
472
570
|
// ---------------------------------------------------------------------------
|
|
473
571
|
/**
|
|
@@ -484,6 +582,8 @@ export function formatCitation(article, style) {
|
|
|
484
582
|
return formatBibtex(article);
|
|
485
583
|
case 'ris':
|
|
486
584
|
return formatRis(article);
|
|
585
|
+
case 'vancouver':
|
|
586
|
+
return formatVancouver(article);
|
|
487
587
|
}
|
|
488
588
|
}
|
|
489
589
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"citation-formatter.js","sourceRoot":"","sources":["../../../../src/services/ncbi/formatting/citation-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAS,OAAO,CAAC,OAAsB;IACrC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC;IAC/D,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACpE,OAAO,WAAW,IAAI,MAAM,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9C,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,2EAA2E;AAC3E,MAAM,iBAAiB,GAA2B;IAChD,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,QAAQ;IACxB,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF,yEAAyE;AACzE,MAAM,kBAAkB,GAA2B;IACjD,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,SAAS,eAAe,CACtB,KAA2B,EAC3B,GAA2B,EAC3B,QAAgB;IAEhB,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,QAAQ,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE;QAC3C,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,IAAI;gBACP,OAAO,mBAAmB,CAAC;YAC7B,KAAK,GAAG;gBACN,OAAO,oBAAoB,CAAC;YAC9B,KAAK,GAAG;gBACN,OAAO,qBAAqB,CAAC;YAC/B;gBACE,OAAO,KAAK,EAAE,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,eAAe,CAAC,MAA2B;IAClD,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACnC,4EAA4E;IAC5E,MAAM,QAAQ,GACZ,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,SAAS;YACd,EAAE,KAAK,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;SACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,GAAG,IAAI,KAAK,SAAS,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,OAA8B;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,GAAG,UAAU,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IACD,wCAAwC;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,GAAG,OAAO,SAAS,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,MAA2B,EAAE,OAAgB;IACpE,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAA8B;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,MAAM;YACX,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YAC1E,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAA2B;IACrD,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,IAAI,GAAG,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,IAAI,IAAI,MAAM,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnF,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;IACP,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAEzB,gEAAgE;IAChE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACpC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,IAAI,WAAW,GAAG,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC;QACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,WAAW,IAAI,MAAM,OAAO,CAAC,MAAM,GAAG,CAAC;YACvC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,WAAW,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,WAAW,IAAI,GAAG,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,UAAU;IACV,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnF,IAAI,SAAS,EAAE,CAAC;QACd,wCAAwC;QACxC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACpC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAEvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,yDAAyD;YACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtD,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;IACN,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAuB,EAAE,CAAC;IAEtC,UAAU;IACV,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxF,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,kEAAkE;IAClE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;IACV,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACpC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;IACP,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS;IACT,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;IACP,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,KAAK,CAAC;IAC7C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;IACN,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;IACP,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpC,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,+DAA+D;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE;QAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,cAAc;YAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,cAAc;IACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3F,OAAO,IAAI,SAAS,IAAI,GAAG,MAAM,UAAU,KAAK,CAAC;AACnD,CAAC;AAED,8EAA8E;AAC9E,MAAM;AACN,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAyB,EAAQ,EAAE;QAC5D,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,wDAAwD;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IAE/B,kCAAkC;IAClC,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBACrC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClB,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;IACR,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzB,UAAU;IACV,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACpC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;IACP,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3B,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE1B,4EAA4E;IAC5E,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,oDAAoD;IACpD,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC;IAE3C,2DAA2D;IAC3D,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvB,0BAA0B;IAC1B,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB,aAAa;IACb,KAAK,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAErE,2BAA2B;IAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,+CAA+C,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,+DAA+D;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE;QAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,cAAc;YAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,oDAAoD;IACpD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAsB,EAAE,KAAoB;IACzE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAsB,EACtB,MAAuB;IAEvB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"citation-formatter.js","sourceRoot":"","sources":["../../../../src/services/ncbi/formatting/citation-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,11 @@ export declare function extractJatsAuthors(contribGroup: JatsNode | undefined):
|
|
|
18
18
|
* in manuscript-submitted PMC deposits) preserve their main text.
|
|
19
19
|
*/
|
|
20
20
|
export declare function extractBodySections(body: JatsNode | undefined): ParsedPmcSection[];
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Extract references from a `<back>` node. Prefers mixed-citation over
|
|
23
|
+
* element-citation, descending into `<citation-alternatives>` when a ref carries
|
|
24
|
+
* both forms there rather than as direct children of `<ref>`.
|
|
25
|
+
*/
|
|
22
26
|
export declare function extractReferences(back: JatsNode | undefined): ParsedPmcReference[];
|
|
23
27
|
/**
|
|
24
28
|
* Parse a single JATS `<article>` node (from PMC EFetch via the ordered parser)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmc-article-parser.d.ts","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/pmc-article-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,KAAK,QAAQ,EAGd,MAAM,sBAAsB,CAAC;AAmB9B,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,EAAE,CA2BxF;AA2HD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,EAAE,CA2BlF;AA0BD
|
|
1
|
+
{"version":3,"file":"pmc-article-parser.d.ts","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/pmc-article-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,KAAK,QAAQ,EAGd,MAAM,sBAAsB,CAAC;AAmB9B,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,EAAE,CA2BxF;AA2HD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,EAAE,CA2BlF;AA0BD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,kBAAkB,EAAE,CA4BlF;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,QAAQ,GAAG,gBAAgB,CA4CvE"}
|
|
@@ -206,7 +206,11 @@ function extractSection(sec) {
|
|
|
206
206
|
};
|
|
207
207
|
}
|
|
208
208
|
// ─── References ─────────────────────────────────────────────────────────────
|
|
209
|
-
/**
|
|
209
|
+
/**
|
|
210
|
+
* Extract references from a `<back>` node. Prefers mixed-citation over
|
|
211
|
+
* element-citation, descending into `<citation-alternatives>` when a ref carries
|
|
212
|
+
* both forms there rather than as direct children of `<ref>`.
|
|
213
|
+
*/
|
|
210
214
|
export function extractReferences(back) {
|
|
211
215
|
if (!back)
|
|
212
216
|
return [];
|
|
@@ -215,7 +219,12 @@ export function extractReferences(back) {
|
|
|
215
219
|
return [];
|
|
216
220
|
const results = [];
|
|
217
221
|
for (const ref of findAll(refList, 'ref')) {
|
|
218
|
-
|
|
222
|
+
// JATS wraps the two citation forms in <citation-alternatives> (the NLM
|
|
223
|
+
// construct carrying both a structured <element-citation> and a readable
|
|
224
|
+
// <mixed-citation>). findOne matches direct children only, so resolve that
|
|
225
|
+
// container first; refs with a direct citation node fall through to `ref`.
|
|
226
|
+
const container = findOne(ref, 'citation-alternatives') ?? ref;
|
|
227
|
+
const citationNode = findOne(container, 'mixed-citation') ?? findOne(container, 'element-citation');
|
|
219
228
|
if (!citationNode)
|
|
220
229
|
continue;
|
|
221
230
|
const citation = textContent(citationNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmc-article-parser.js","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/pmc-article-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pmc-article-parser.js","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/pmc-article-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Low-level HTTP client for the OpenAlex API. Builds URLs,
|
|
3
|
+
* injects the optional polite-pool email, and exposes single-attempt fetch
|
|
4
|
+
* calls. Retry logic lives in `OpenAlexService`.
|
|
5
|
+
* @module src/services/openalex/api-client
|
|
6
|
+
*/
|
|
7
|
+
import { type OpenAlexWork } from './types.js';
|
|
8
|
+
export interface OpenAlexApiClientConfig {
|
|
9
|
+
/** Admin email for OpenAlex polite pool (mailto= param). Optional. */
|
|
10
|
+
email?: string;
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
}
|
|
13
|
+
/** Low-level HTTP client for OpenAlex. Single-attempt — retries upstream. */
|
|
14
|
+
export declare class OpenAlexApiClient {
|
|
15
|
+
private readonly config;
|
|
16
|
+
constructor(config: OpenAlexApiClientConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Fetch a single work by PMID. Returns the work record (with related_works
|
|
19
|
+
* and referenced_works populated) or null when the PMID is unknown.
|
|
20
|
+
*/
|
|
21
|
+
getWorkByPmid(pmid: string, signal?: AbortSignal): Promise<OpenAlexWork | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Batch-resolve a list of OpenAlex work IDs to their PMIDs.
|
|
24
|
+
* Uses the filter=openalex:W1|W2|... endpoint with select=id,ids.
|
|
25
|
+
* Returns only records that carry a `pmid` field.
|
|
26
|
+
*/
|
|
27
|
+
resolveOaIdsToPmids(oaIds: string[], signal?: AbortSignal): Promise<OpenAlexWork[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Fetch works that cite a given OpenAlex work ID (the cited_by relationship).
|
|
30
|
+
* Returns up to `perPage` records with PMIDs.
|
|
31
|
+
*/
|
|
32
|
+
getCitedBy(oaId: string, perPage: number, signal?: AbortSignal): Promise<{
|
|
33
|
+
works: OpenAlexWork[];
|
|
34
|
+
totalCount: number;
|
|
35
|
+
}>;
|
|
36
|
+
/** Helper: fetch a /works?... URL and return parsed results. */
|
|
37
|
+
private fetchWorksList;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/services/openalex/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAqB,KAAK,YAAY,EAA8B,MAAM,YAAY,CAAC;AAI9F,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6EAA6E;AAC7E,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,uBAAuB;IAE5D;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiDrF;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBnF;;;OAGG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAsEzD,gEAAgE;YAClD,cAAc;CA4C7B"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Low-level HTTP client for the OpenAlex API. Builds URLs,
|
|
3
|
+
* injects the optional polite-pool email, and exposes single-attempt fetch
|
|
4
|
+
* calls. Retry logic lives in `OpenAlexService`.
|
|
5
|
+
* @module src/services/openalex/api-client
|
|
6
|
+
*/
|
|
7
|
+
import { McpError, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
|
|
8
|
+
import { fetchWithTimeout, httpErrorFromResponse, logger, requestContextService, } from '@cyanheads/mcp-ts-core/utils';
|
|
9
|
+
import { recoveryFor } from '../../services/error-contracts.js';
|
|
10
|
+
import { OPENALEX_API_BASE } from './types.js';
|
|
11
|
+
const USER_AGENT = 'pubmed-mcp-server (+https://github.com/cyanheads/pubmed-mcp-server)';
|
|
12
|
+
/** Low-level HTTP client for OpenAlex. Single-attempt — retries upstream. */
|
|
13
|
+
export class OpenAlexApiClient {
|
|
14
|
+
config;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Fetch a single work by PMID. Returns the work record (with related_works
|
|
20
|
+
* and referenced_works populated) or null when the PMID is unknown.
|
|
21
|
+
*/
|
|
22
|
+
async getWorkByPmid(pmid, signal) {
|
|
23
|
+
const params = new URLSearchParams({
|
|
24
|
+
select: 'id,related_works,referenced_works',
|
|
25
|
+
});
|
|
26
|
+
if (this.config.email)
|
|
27
|
+
params.set('mailto', this.config.email);
|
|
28
|
+
const url = `${OPENALEX_API_BASE}/works/pmid:${encodeURIComponent(pmid)}?${params.toString()}`;
|
|
29
|
+
const ctx = requestContextService.createRequestContext({
|
|
30
|
+
operation: 'OpenAlexGetWorkByPmid',
|
|
31
|
+
pmid,
|
|
32
|
+
});
|
|
33
|
+
let response;
|
|
34
|
+
try {
|
|
35
|
+
response = await fetchWithTimeout(url, this.config.timeoutMs, ctx, {
|
|
36
|
+
headers: { Accept: 'application/json', 'User-Agent': USER_AGENT },
|
|
37
|
+
...(signal && { signal }),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof McpError)
|
|
42
|
+
throw error;
|
|
43
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
44
|
+
throw serviceUnavailable(`OpenAlex request failed: ${msg}`, { reason: 'openalex_unreachable', ...recoveryFor('openalex_unreachable') }, { cause: error });
|
|
45
|
+
}
|
|
46
|
+
if (response.status === 404)
|
|
47
|
+
return null;
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw await httpErrorFromResponse(response, {
|
|
50
|
+
service: 'OpenAlex',
|
|
51
|
+
data: { url, reason: 'openalex_unreachable', ...recoveryFor('openalex_unreachable') },
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const text = await response.text();
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(text);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw serviceUnavailable('OpenAlex returned a non-JSON body.', { reason: 'openalex_invalid_response', ...recoveryFor('openalex_invalid_response') }, { cause: error });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Batch-resolve a list of OpenAlex work IDs to their PMIDs.
|
|
64
|
+
* Uses the filter=openalex:W1|W2|... endpoint with select=id,ids.
|
|
65
|
+
* Returns only records that carry a `pmid` field.
|
|
66
|
+
*/
|
|
67
|
+
resolveOaIdsToPmids(oaIds, signal) {
|
|
68
|
+
if (oaIds.length === 0)
|
|
69
|
+
return Promise.resolve([]);
|
|
70
|
+
// Strip https://openalex.org/ prefix if present — filter expects bare IDs
|
|
71
|
+
const bareIds = oaIds.map((id) => id.startsWith('https://openalex.org/') ? id.slice('https://openalex.org/'.length) : id);
|
|
72
|
+
const params = new URLSearchParams({
|
|
73
|
+
filter: `openalex:${bareIds.join('|')}`,
|
|
74
|
+
select: 'id,ids',
|
|
75
|
+
per_page: String(Math.min(oaIds.length, 200)),
|
|
76
|
+
});
|
|
77
|
+
if (this.config.email)
|
|
78
|
+
params.set('mailto', this.config.email);
|
|
79
|
+
const url = `${OPENALEX_API_BASE}/works?${params.toString()}`;
|
|
80
|
+
return this.fetchWorksList(url, 'OpenAlexResolveOaIds', signal);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Fetch works that cite a given OpenAlex work ID (the cited_by relationship).
|
|
84
|
+
* Returns up to `perPage` records with PMIDs.
|
|
85
|
+
*/
|
|
86
|
+
async getCitedBy(oaId, perPage, signal) {
|
|
87
|
+
// Strip full URL prefix if needed
|
|
88
|
+
const bareId = oaId.startsWith('https://openalex.org/')
|
|
89
|
+
? oaId.slice('https://openalex.org/'.length)
|
|
90
|
+
: oaId;
|
|
91
|
+
const params = new URLSearchParams({
|
|
92
|
+
filter: `cites:${bareId}`,
|
|
93
|
+
select: 'id,ids',
|
|
94
|
+
per_page: String(Math.min(perPage, 200)),
|
|
95
|
+
});
|
|
96
|
+
if (this.config.email)
|
|
97
|
+
params.set('mailto', this.config.email);
|
|
98
|
+
const url = `${OPENALEX_API_BASE}/works?${params.toString()}`;
|
|
99
|
+
const ctx = requestContextService.createRequestContext({
|
|
100
|
+
operation: 'OpenAlexGetCitedBy',
|
|
101
|
+
oaId: bareId,
|
|
102
|
+
});
|
|
103
|
+
let response;
|
|
104
|
+
try {
|
|
105
|
+
response = await fetchWithTimeout(url, this.config.timeoutMs, ctx, {
|
|
106
|
+
headers: { Accept: 'application/json', 'User-Agent': USER_AGENT },
|
|
107
|
+
...(signal && { signal }),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof McpError)
|
|
112
|
+
throw error;
|
|
113
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
114
|
+
throw serviceUnavailable(`OpenAlex request failed: ${msg}`, { reason: 'openalex_unreachable', ...recoveryFor('openalex_unreachable') }, { cause: error });
|
|
115
|
+
}
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
throw await httpErrorFromResponse(response, {
|
|
118
|
+
service: 'OpenAlex',
|
|
119
|
+
data: { url, reason: 'openalex_unreachable', ...recoveryFor('openalex_unreachable') },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const text = await response.text();
|
|
123
|
+
let parsed;
|
|
124
|
+
try {
|
|
125
|
+
parsed = JSON.parse(text);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
throw serviceUnavailable('OpenAlex returned a non-JSON body.', { reason: 'openalex_invalid_response', ...recoveryFor('openalex_invalid_response') }, { cause: error });
|
|
129
|
+
}
|
|
130
|
+
logger.debug('OpenAlex cited_by response', requestContextService.createRequestContext({
|
|
131
|
+
operation: 'OpenAlexGetCitedByDone',
|
|
132
|
+
oaId: bareId,
|
|
133
|
+
totalCount: parsed.meta?.count,
|
|
134
|
+
resultCount: parsed.results?.length,
|
|
135
|
+
}));
|
|
136
|
+
return {
|
|
137
|
+
works: parsed.results ?? [],
|
|
138
|
+
totalCount: parsed.meta?.count ?? 0,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/** Helper: fetch a /works?... URL and return parsed results. */
|
|
142
|
+
async fetchWorksList(url, operation, signal) {
|
|
143
|
+
const ctx = requestContextService.createRequestContext({ operation });
|
|
144
|
+
let response;
|
|
145
|
+
try {
|
|
146
|
+
response = await fetchWithTimeout(url, this.config.timeoutMs, ctx, {
|
|
147
|
+
headers: { Accept: 'application/json', 'User-Agent': USER_AGENT },
|
|
148
|
+
...(signal && { signal }),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (error instanceof McpError)
|
|
153
|
+
throw error;
|
|
154
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
155
|
+
throw serviceUnavailable(`OpenAlex request failed: ${msg}`, { reason: 'openalex_unreachable', ...recoveryFor('openalex_unreachable') }, { cause: error });
|
|
156
|
+
}
|
|
157
|
+
if (!response.ok) {
|
|
158
|
+
throw await httpErrorFromResponse(response, {
|
|
159
|
+
service: 'OpenAlex',
|
|
160
|
+
data: { url, reason: 'openalex_unreachable', ...recoveryFor('openalex_unreachable') },
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
const text = await response.text();
|
|
164
|
+
let parsed;
|
|
165
|
+
try {
|
|
166
|
+
parsed = JSON.parse(text);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
throw serviceUnavailable('OpenAlex returned a non-JSON body.', { reason: 'openalex_invalid_response', ...recoveryFor('openalex_invalid_response') }, { cause: error });
|
|
170
|
+
}
|
|
171
|
+
return parsed.results ?? [];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/services/openalex/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview OpenAlex service for related-article fallback in `pubmed_find_related`.
|
|
3
|
+
* Provides three capabilities that mirror the NCBI eLink relationships:
|
|
4
|
+
* - `similar(pmid, n)`: related_works → PMIDs (mirrors pubmed_pubmed)
|
|
5
|
+
* - `citedBy(pmid, n)`: cites:W<id> filter → PMIDs (mirrors pubmed_pubmed_citedin)
|
|
6
|
+
* - `references(pmid, n)`: referenced_works → PMIDs (mirrors pubmed_pubmed_refs)
|
|
7
|
+
*
|
|
8
|
+
* All three methods drop records with no PMID — never mints fake IDs.
|
|
9
|
+
* Uses the NCBI_ADMIN_EMAIL config (adminEmail) as the OpenAlex polite-pool
|
|
10
|
+
* `mailto=` parameter when set; omits it when unset.
|
|
11
|
+
*
|
|
12
|
+
* @module src/services/openalex/openalex-service
|
|
13
|
+
*/
|
|
14
|
+
import { OpenAlexApiClient } from './api-client.js';
|
|
15
|
+
/** Service facade over the OpenAlex API for the find-related provider chain. */
|
|
16
|
+
export declare class OpenAlexService {
|
|
17
|
+
private readonly client;
|
|
18
|
+
private readonly maxRetries;
|
|
19
|
+
constructor(client: OpenAlexApiClient, maxRetries: number);
|
|
20
|
+
/**
|
|
21
|
+
* Find works with similar content to the given PMID via OpenAlex `related_works`.
|
|
22
|
+
* Returns PMIDs only; drops any record with no PMID.
|
|
23
|
+
* `n` is the number of PMIDs to return (OpenAlex caps related_works at ~10).
|
|
24
|
+
*/
|
|
25
|
+
similar(pmid: string, n: number, signal?: AbortSignal): Promise<{
|
|
26
|
+
pmids: string[];
|
|
27
|
+
totalCount: number;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Find works that cite the given PMID via OpenAlex `cites:W<id>` filter.
|
|
31
|
+
* Returns PMIDs only; drops any record with no PMID.
|
|
32
|
+
*/
|
|
33
|
+
citedBy(pmid: string, n: number, signal?: AbortSignal): Promise<{
|
|
34
|
+
pmids: string[];
|
|
35
|
+
totalCount: number;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Find works referenced by the given PMID via OpenAlex `referenced_works`.
|
|
39
|
+
* Returns PMIDs only; drops any record with no PMID.
|
|
40
|
+
*/
|
|
41
|
+
references(pmid: string, n: number, signal?: AbortSignal): Promise<{
|
|
42
|
+
pmids: string[];
|
|
43
|
+
totalCount: number;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Extract unique numeric PMIDs from a list of works, excluding the source PMID.
|
|
47
|
+
* Any work with no PMID is silently dropped (never minted).
|
|
48
|
+
*/
|
|
49
|
+
private extractPmids;
|
|
50
|
+
/** Retry wrapper for transient errors, mirroring the EPMC service pattern. */
|
|
51
|
+
private withRetry;
|
|
52
|
+
}
|
|
53
|
+
/** Initialize the OpenAlex service. Call from `setup()` in createApp. */
|
|
54
|
+
export declare function initOpenAlexService(): void;
|
|
55
|
+
/** Get the initialized OpenAlex service. Throws if not initialized. */
|
|
56
|
+
export declare function getOpenAlexService(): OpenAlexService;
|
|
57
|
+
/** Returns the service if initialized, undefined otherwise (for optional use). */
|
|
58
|
+
export declare function getOpenAlexServiceOptional(): OpenAlexService | undefined;
|
|
59
|
+
//# sourceMappingURL=openalex-service.d.ts.map
|