heor-agent-mcp 1.14.0 → 1.14.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 (55) hide show
  1. package/dist/models/modelUtils.d.ts +18 -0
  2. package/dist/models/modelUtils.d.ts.map +1 -1
  3. package/dist/models/modelUtils.js +34 -0
  4. package/dist/models/modelUtils.js.map +1 -1
  5. package/dist/providers/direct/biorxiv.d.ts +1 -0
  6. package/dist/providers/direct/biorxiv.d.ts.map +1 -1
  7. package/dist/providers/direct/biorxiv.js +43 -27
  8. package/dist/providers/direct/biorxiv.js.map +1 -1
  9. package/dist/providers/direct/cmsNadac.d.ts.map +1 -1
  10. package/dist/providers/direct/cmsNadac.js +25 -16
  11. package/dist/providers/direct/cmsNadac.js.map +1 -1
  12. package/dist/providers/direct/embase.d.ts +17 -0
  13. package/dist/providers/direct/embase.d.ts.map +1 -1
  14. package/dist/providers/direct/embase.js +70 -37
  15. package/dist/providers/direct/embase.js.map +1 -1
  16. package/dist/providers/direct/googleScholar.d.ts.map +1 -1
  17. package/dist/providers/direct/googleScholar.js +40 -34
  18. package/dist/providers/direct/googleScholar.js.map +1 -1
  19. package/dist/providers/direct/pubmed.d.ts.map +1 -1
  20. package/dist/providers/direct/pubmed.js +42 -43
  21. package/dist/providers/direct/pubmed.js.map +1 -1
  22. package/dist/providers/direct/purpleBook.d.ts.map +1 -1
  23. package/dist/providers/direct/purpleBook.js +36 -37
  24. package/dist/providers/direct/purpleBook.js.map +1 -1
  25. package/dist/providers/direct/scienceDirect.d.ts.map +1 -1
  26. package/dist/providers/direct/scienceDirect.js +38 -36
  27. package/dist/providers/direct/scienceDirect.js.map +1 -1
  28. package/dist/providers/direct/whoGho.d.ts.map +1 -1
  29. package/dist/providers/direct/whoGho.js +29 -27
  30. package/dist/providers/direct/whoGho.js.map +1 -1
  31. package/dist/server.js +10 -36
  32. package/dist/server.js.map +1 -1
  33. package/dist/tools/costEffectivenessModel.d.ts +5 -5
  34. package/dist/tools/costEffectivenessModel.d.ts.map +1 -1
  35. package/dist/tools/costEffectivenessModel.js +64 -10
  36. package/dist/tools/costEffectivenessModel.js.map +1 -1
  37. package/dist/tools/htaDossierPrep.d.ts +5 -5
  38. package/dist/tools/htaDossierPrep.js +5 -5
  39. package/dist/tools/htaDossierPrep.js.map +1 -1
  40. package/dist/tools/htaWorkflow.d.ts +5 -5
  41. package/dist/tools/htaWorkflow.d.ts.map +1 -1
  42. package/dist/tools/htaWorkflow.js +8 -6
  43. package/dist/tools/htaWorkflow.js.map +1 -1
  44. package/dist/tools/maicWorkflow.d.ts +2 -2
  45. package/dist/tools/maicWorkflow.d.ts.map +1 -1
  46. package/dist/tools/maicWorkflow.js +23 -29
  47. package/dist/tools/maicWorkflow.js.map +1 -1
  48. package/dist/tools/survivalFitting.d.ts +5 -5
  49. package/dist/tools/survivalFitting.d.ts.map +1 -1
  50. package/dist/tools/survivalFitting.js +13 -9
  51. package/dist/tools/survivalFitting.js.map +1 -1
  52. package/dist/tools/validateLinks.d.ts.map +1 -1
  53. package/dist/tools/validateLinks.js +8 -6
  54. package/dist/tools/validateLinks.js.map +1 -1
  55. package/package.json +1 -1
@@ -4,6 +4,24 @@
4
4
  */
5
5
  import type { CEModelParams } from "../providers/types.js";
6
6
  import type { MarkovParams } from "./markov.js";
7
+ /**
8
+ * Structural assumptions baked into `buildMarkovParamsFromCE`.
9
+ *
10
+ * These are simplified illustrative defaults used when no indication-specific
11
+ * epidemiological data are supplied. They materially drive every Markov-based
12
+ * ICER produced by this tool. They MUST be replaced with indication-specific
13
+ * values before the model is used for any regulatory submission, HTA dossier,
14
+ * or payer negotiation.
15
+ *
16
+ * Callers (e.g. costEffectivenessModel.ts) should surface all three strings
17
+ * via `addAssumption` so they appear in the audit trail and visible output.
18
+ *
19
+ * Rationale for exporting rather than calling addAssumption here:
20
+ * modelUtils is a pure computation module with no audit dependency — it has
21
+ * no access to an AuditRecord instance. The caller owns the audit lifecycle
22
+ * and is the correct place to wire these strings in.
23
+ */
24
+ export declare const MARKOV_STRUCTURAL_ASSUMPTIONS: readonly string[];
7
25
  export declare function getTimeHorizonYears(horizon: CEModelParams["time_horizon"]): number;
8
26
  /**
9
27
  * Build MarkovParams from CEModelParams using a 3-state model
@@ -1 +1 @@
1
- {"version":3,"file":"modelUtils.d.ts","sourceRoot":"","sources":["../../src/models/modelUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAK/E,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,GACrC,MAAM,CAKR;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAgG3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAgEA"}
1
+ {"version":3,"file":"modelUtils.d.ts","sourceRoot":"","sources":["../../src/models/modelUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAK/E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAkBjD,CAAC;AAEX,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,GACrC,MAAM,CAKR;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAgG3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAgEA"}
@@ -4,6 +4,40 @@
4
4
  */
5
5
  import { runMarkovModel } from "./markov.js";
6
6
  const DISCOUNT_RATE = 0.035;
7
+ /**
8
+ * Structural assumptions baked into `buildMarkovParamsFromCE`.
9
+ *
10
+ * These are simplified illustrative defaults used when no indication-specific
11
+ * epidemiological data are supplied. They materially drive every Markov-based
12
+ * ICER produced by this tool. They MUST be replaced with indication-specific
13
+ * values before the model is used for any regulatory submission, HTA dossier,
14
+ * or payer negotiation.
15
+ *
16
+ * Callers (e.g. costEffectivenessModel.ts) should surface all three strings
17
+ * via `addAssumption` so they appear in the audit trail and visible output.
18
+ *
19
+ * Rationale for exporting rather than calling addAssumption here:
20
+ * modelUtils is a pure computation module with no audit dependency — it has
21
+ * no access to an AuditRecord instance. The caller owns the audit lifecycle
22
+ * and is the correct place to wire these strings in.
23
+ */
24
+ export const MARKOV_STRUCTURAL_ASSUMPTIONS = [
25
+ "STRUCTURAL ASSUMPTION (illustrative, not epidemiologically derived): " +
26
+ "Background annual mortality fixed at 2% (0.02). " +
27
+ "This is a generic placeholder. Replace with indication-specific life-table " +
28
+ "mortality for submission use.",
29
+ "STRUCTURAL ASSUMPTION (illustrative, not epidemiologically derived): " +
30
+ "Annual probability of staying on intervention derived as " +
31
+ "0.5 + efficacy_delta × 0.5 — a heuristic mapping from the unitless " +
32
+ "efficacy_delta input to a Markov transition probability with no " +
33
+ "epidemiological basis. Replace with a clinical-trial-derived " +
34
+ "treatment-discontinuation rate for submission use.",
35
+ "STRUCTURAL ASSUMPTION (illustrative, not epidemiologically derived): " +
36
+ "Comparator retention set to 70% of intervention retention " +
37
+ "(baselineProbStayOn = probStayOnIntervention × 0.7) — an arbitrary scalar " +
38
+ "with no indication-specific basis. Replace with trial-observed or " +
39
+ "registry-derived comparator discontinuation data for submission use.",
40
+ ];
7
41
  export function getTimeHorizonYears(horizon) {
8
42
  if (horizon === "lifetime")
9
43
  return 40;
@@ -1 +1 @@
1
- {"version":3,"file":"modelUtils.js","sourceRoot":"","sources":["../../src/models/modelUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modelUtils.js","sourceRoot":"","sources":["../../src/models/modelUtils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { LiteratureResult } from "../types.js";
2
+ export declare function extractBiorxivKeywords(query: string): string[];
2
3
  export declare function fetchBiorxiv(query: string, maxResults: number): Promise<LiteratureResult[]>;
3
4
  //# sourceMappingURL=biorxiv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"biorxiv.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/biorxiv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAapD,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkC7B"}
1
+ {"version":3,"file":"biorxiv.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/biorxiv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAepD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAa9D;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B"}
@@ -1,33 +1,49 @@
1
1
  const BASE = "https://api.biorxiv.org/details/medrxiv";
2
+ const BIORXIV_QUERY_NOISE = /\b(?:AND|OR|NOT)\b/gi;
3
+ export function extractBiorxivKeywords(query) {
4
+ return [
5
+ ...new Set(query
6
+ .replace(/[(){}[\]:"']/g, " ")
7
+ .replace(BIORXIV_QUERY_NOISE, " ")
8
+ .replace(/[?*]/g, "")
9
+ .toLowerCase()
10
+ .split(/\s+/)
11
+ .map((term) => term.trim())
12
+ .filter((term) => term.length >= 3)),
13
+ ];
14
+ }
2
15
  export async function fetchBiorxiv(query, maxResults) {
3
- try {
4
- const dateFrom = new Date();
5
- dateFrom.setFullYear(dateFrom.getFullYear() - 2);
6
- const from = dateFrom.toISOString().split("T")[0];
7
- const to = new Date().toISOString().split("T")[0];
8
- const url = `${BASE}/${from}/${to}/0/json`;
9
- const res = await fetch(url, { signal: AbortSignal.timeout(15_000) });
10
- if (!res.ok)
11
- return [];
12
- const data = (await res.json());
13
- const queryLower = query.toLowerCase();
14
- return (data.collection ?? [])
15
- .filter((p) => p.title.toLowerCase().includes(queryLower) ||
16
- p.abstract.toLowerCase().includes(queryLower))
17
- .slice(0, maxResults)
18
- .map((p) => ({
19
- id: `biorxiv_${p.doi.replace(/\//g, "_")}`,
20
- source: "biorxiv",
21
- title: p.title,
22
- authors: p.authors.split(";").map((a) => a.trim()),
23
- date: p.date,
24
- study_type: "preprint",
25
- abstract: p.abstract,
26
- url: `https://www.medrxiv.org/content/${p.doi}`,
27
- }));
16
+ const dateFrom = new Date();
17
+ dateFrom.setFullYear(dateFrom.getFullYear() - 2);
18
+ const from = dateFrom.toISOString().split("T")[0];
19
+ const to = new Date().toISOString().split("T")[0];
20
+ // bioRxiv/medRxiv has no true search endpoint. We fetch the first page only
21
+ // (offset 0, roughly 100 records) and keyword-filter locally.
22
+ const url = `${BASE}/${from}/${to}/0/json`;
23
+ const res = await fetch(url, { signal: AbortSignal.timeout(15_000) });
24
+ if (!res.ok) {
25
+ const body = await res.text().catch(() => "");
26
+ throw new Error(`bioRxiv API ${res.status}: ${body.slice(0, 200)}`);
28
27
  }
29
- catch {
28
+ const data = (await res.json());
29
+ const keywords = extractBiorxivKeywords(query);
30
+ if (keywords.length === 0)
30
31
  return [];
31
- }
32
+ return (data.collection ?? [])
33
+ .filter((p) => {
34
+ const haystack = `${p.title} ${p.abstract}`.toLowerCase();
35
+ return keywords.some((term) => haystack.includes(term));
36
+ })
37
+ .slice(0, maxResults)
38
+ .map((p) => ({
39
+ id: `biorxiv_${p.doi.replace(/\//g, "_")}`,
40
+ source: "biorxiv",
41
+ title: p.title,
42
+ authors: p.authors.split(";").map((a) => a.trim()),
43
+ date: p.date,
44
+ study_type: "preprint",
45
+ abstract: p.abstract,
46
+ url: `https://www.medrxiv.org/content/${p.doi}`,
47
+ }));
32
48
  }
33
49
  //# sourceMappingURL=biorxiv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"biorxiv.js","sourceRoot":"","sources":["../../../src/providers/direct/biorxiv.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,yCAAyC,CAAC;AAWvD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,SAAS,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmC,CAAC;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;aAC3B,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC1C,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAChD;aACA,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC1C,MAAM,EAAE,SAAkB;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,EAAE,mCAAmC,CAAC,CAAC,GAAG,EAAE;SAChD,CAAC,CAAC,CAAC;IACR,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"biorxiv.js","sourceRoot":"","sources":["../../../src/providers/direct/biorxiv.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cmsNadac.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/cmsNadac.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoBpD,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgC7B"}
1
+ {"version":3,"file":"cmsNadac.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/cmsNadac.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoBpD,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2C7B"}
@@ -5,16 +5,28 @@ const BASE = "https://data.cms.gov/data-api/v1/dataset";
5
5
  // NADAC dataset UUID (stable since 2022)
6
6
  const NADAC_DATASET_ID = "dfa2ab14-06c2-4b99-9f0e-215a6713b5f2";
7
7
  export async function fetchCmsNadac(query, maxResults) {
8
- try {
9
- // The CMS data-api supports filter syntax
10
- const url = `${BASE}/${NADAC_DATASET_ID}/data?filter[NDC Description][condition][path]=NDC Description&filter[NDC Description][condition][operator]=CONTAINS&filter[NDC Description][condition][value]=${encodeURIComponent(query.toUpperCase())}&size=${Math.min(maxResults, 100)}`;
11
- const res = await fetch(url, { signal: AbortSignal.timeout(15_000) });
12
- if (!res.ok)
13
- return getFallback(query, maxResults);
14
- const data = (await res.json());
15
- if (!Array.isArray(data) || data.length === 0)
16
- return getFallback(query, maxResults);
17
- return data.slice(0, maxResults).map((row, i) => ({
8
+ // The CMS data-api supports filter syntax. Use URLSearchParams because the
9
+ // JSONAPI filter key itself contains spaces and brackets.
10
+ const params = new URLSearchParams({
11
+ "filter[NDC Description][condition][path]": "NDC Description",
12
+ "filter[NDC Description][condition][operator]": "CONTAINS",
13
+ "filter[NDC Description][condition][value]": query.toUpperCase(),
14
+ size: String(Math.min(maxResults, 100)),
15
+ });
16
+ const url = `${BASE}/${NADAC_DATASET_ID}/data?${params}`;
17
+ const res = await fetch(url, { signal: AbortSignal.timeout(15_000) });
18
+ if (!res.ok) {
19
+ const body = await res.text().catch(() => "");
20
+ throw new Error(`CMS NADAC API ${res.status}: ${body.slice(0, 200)}`);
21
+ }
22
+ const data = (await res.json());
23
+ if (!Array.isArray(data) || data.length === 0)
24
+ return getFallback(query, maxResults);
25
+ return data.slice(0, maxResults).map((row, i) => {
26
+ const resultParams = new URLSearchParams({
27
+ "filter[NDC]": row["NDC"] ?? "",
28
+ });
29
+ return {
18
30
  id: `cms_nadac_${row["NDC"] ?? i}`,
19
31
  source: "cms_nadac",
20
32
  title: `${row["NDC Description"] ?? "Unknown drug"} — NADAC $${row["NADAC Per Unit"] ?? "N/A"}/${row["Pricing Unit"] ?? "unit"}`,
@@ -30,12 +42,9 @@ export async function fetchCmsNadac(query, maxResults) {
30
42
  `OTC: ${row["OTC"] ?? "N"}`,
31
43
  `Effective: ${row["Effective Date"] ?? ""}`,
32
44
  ].join(" | "),
33
- url: `https://data.cms.gov/dataset/dfa2ab14-06c2-4b99-9f0e-215a6713b5f2/data?filter[NDC]=${row["NDC"] ?? ""}`,
34
- }));
35
- }
36
- catch {
37
- return getFallback(query, maxResults);
38
- }
45
+ url: `https://data.cms.gov/dataset/dfa2ab14-06c2-4b99-9f0e-215a6713b5f2/data?${resultParams}`,
46
+ };
47
+ });
39
48
  }
40
49
  function getFallback(query, maxResults) {
41
50
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"cmsNadac.js","sourceRoot":"","sources":["../../../src/providers/direct/cmsNadac.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmsNadac.js","sourceRoot":"","sources":["../../../src/providers/direct/cmsNadac.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,qCAAqC;AACrC,4DAA4D;AAC5D,MAAM,IAAI,GAAG,0CAA0C,CAAC;AACxD,yCAAyC;AACzC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,UAAkB;IAElB,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,0CAA0C,EAAE,iBAAiB;QAC7D,8CAA8C,EAAE,UAAU;QAC1D,2CAA2C,EAAE,KAAK,CAAC,WAAW,EAAE;QAChE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,gBAAgB,SAAS,MAAM,EAAE,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAe,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAC3C,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAExC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC;YACvC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;SAChC,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,EAAE,WAAoB;YAC5B,KAAK,EAAE,GAAG,GAAG,CAAC,iBAAiB,CAAC,IAAI,cAAc,aAAa,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,EAAE;YAChI,OAAO,EAAE,CAAC,0CAA0C,CAAC;YACrD,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACjC,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE;gBACR,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;gBAC7B,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,EAAE;gBACpD,iBAAiB,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,EAAE;gBAC/C,mBAAmB,GAAG,CAAC,iCAAiC,CAAC,IAAI,KAAK,EAAE;gBACpE,kBAAkB,GAAG,CAAC,yBAAyB,CAAC,IAAI,KAAK,EAAE;gBAC3D,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;gBAC3B,cAAc,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE;aAC5C,CAAC,IAAI,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,0EAA0E,YAAY,EAAE;SAC9F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,UAAkB;IACpD,OAAO;QACL;YACE,EAAE,EAAE,kBAAkB;YACtB,MAAM,EAAE,WAAoB;YAC5B,KAAK,EAAE,qBAAqB,KAAK,EAAE;YACnC,OAAO,EAAE,CAAC,0CAA0C,CAAC;YACrD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YACzC,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,8EAA8E,KAAK,2NAA2N;YACxT,GAAG,EAAE,4CAA4C,kBAAkB,CAAC,KAAK,CAAC,EAAE;SAC7E;KACF,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACzB,CAAC"}
@@ -1,3 +1,20 @@
1
1
  import type { LiteratureResult } from "../types.js";
2
+ /**
3
+ * Sanitise a raw search query before sending it to the Scopus free-text
4
+ * search endpoint. The Scopus translator returns 400 "Error translating
5
+ * query" when it encounters:
6
+ * - parentheses / curly- / square-brackets (grouping syntax it can't parse
7
+ * in free-text mode), e.g. `tirzepatide (obesity OR overweight)`
8
+ * - bare boolean operators adjacent to terms
9
+ * - field-prefix punctuation such as TITLE:"…"
10
+ *
11
+ * Reduction to a flat space-separated term list — which Scopus treats as
12
+ * implicit AND — is the most reliable strategy. Wildcards (* ?) are
13
+ * intentionally preserved.
14
+ */
15
+ export declare function cleanScopusQuery(raw: string): {
16
+ cleaned: string;
17
+ stripped: string[];
18
+ };
2
19
  export declare function fetchEmbase(query: string, maxResults: number, injectedApiKey?: string): Promise<LiteratureResult[]>;
3
20
  //# sourceMappingURL=embase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embase.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/embase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAwBpD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqD7B"}
1
+ {"version":3,"file":"embase.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/embase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAYA;AAoBD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwD7B"}
@@ -1,10 +1,45 @@
1
1
  // EMBASE records are indexed in Scopus and accessed via the Scopus Search API
2
2
  // with dbId=embase. The standalone /content/search/embase endpoint returns 404.
3
3
  const BASE = "https://api.elsevier.com/content/search/scopus";
4
+ // Database names that users/models sometimes append to queries but which kill
5
+ // Scopus results (Scopus treats all terms as mandatory AND — "EMBASE" in the
6
+ // query means the paper must contain the word "EMBASE").
7
+ const DB_NAME_PATTERN = /\b(embase|pubmed|scopus|medline|cinahl|cochrane|sciencedirect|web\s+of\s+science)\b/gi;
8
+ /**
9
+ * Sanitise a raw search query before sending it to the Scopus free-text
10
+ * search endpoint. The Scopus translator returns 400 "Error translating
11
+ * query" when it encounters:
12
+ * - parentheses / curly- / square-brackets (grouping syntax it can't parse
13
+ * in free-text mode), e.g. `tirzepatide (obesity OR overweight)`
14
+ * - bare boolean operators adjacent to terms
15
+ * - field-prefix punctuation such as TITLE:"…"
16
+ *
17
+ * Reduction to a flat space-separated term list — which Scopus treats as
18
+ * implicit AND — is the most reliable strategy. Wildcards (* ?) are
19
+ * intentionally preserved.
20
+ */
21
+ export function cleanScopusQuery(raw) {
22
+ const stripped = [];
23
+ const cleaned = raw
24
+ .replace(DB_NAME_PATTERN, (match) => {
25
+ stripped.push(match.toLowerCase());
26
+ return "";
27
+ })
28
+ .replace(/[(){}[\]:"']/g, " ") // grouping / field-prefix / quote chars
29
+ .replace(/\b(?:AND|OR|NOT)\b/gi, " ") // bare boolean operators
30
+ .replace(/\s{2,}/g, " ")
31
+ .trim();
32
+ return { cleaned, stripped: [...new Set(stripped)] };
33
+ }
4
34
  export async function fetchEmbase(query, maxResults, injectedApiKey) {
5
35
  const apiKey = injectedApiKey ?? process.env.ELSEVIER_API_KEY;
6
36
  if (!apiKey)
7
37
  return [];
38
+ // Sanitise the query before sending to Scopus. Parentheses, bare boolean
39
+ // operators, and field-prefix punctuation cause Scopus to return
40
+ // 400 "Error translating query". Reduce to a flat term list so errors
41
+ // are never silently swallowed by the outer catch in the dispatcher.
42
+ const { cleaned: cleanedQuery } = cleanScopusQuery(query);
8
43
  const instToken = process.env.ELSEVIER_INST_TOKEN;
9
44
  const headers = {
10
45
  "X-ELS-APIKey": apiKey,
@@ -12,44 +47,42 @@ export async function fetchEmbase(query, maxResults, injectedApiKey) {
12
47
  };
13
48
  if (instToken)
14
49
  headers["X-ELS-Insttoken"] = instToken;
15
- try {
16
- const params = new URLSearchParams({
17
- query,
18
- count: String(maxResults),
19
- dbId: "embase",
20
- field: "title,creator,publicationName,coverDate,description,doi,subtypeDescription,link",
21
- });
22
- const res = await fetch(`${BASE}?${params}`, {
23
- headers,
24
- signal: AbortSignal.timeout(15_000),
25
- });
26
- if (!res.ok) {
27
- const body = await res.text().catch(() => "");
28
- throw new Error(`Scopus API ${res.status}: ${body.slice(0, 200)}`);
29
- }
30
- const data = (await res.json());
31
- const entries = data["search-results"]?.entry ?? [];
32
- return entries
33
- .filter((e) => e["dc:title"])
34
- .map((e, i) => {
35
- const doi = e["prism:doi"];
36
- const scopusLink = e.link?.find((l) => l["@ref"] === "scopus")?.["@href"];
37
- const url = doi ? `https://doi.org/${doi}` : (scopusLink ?? "");
38
- return {
39
- id: `embase_${doi ?? scopusLink ?? i}`,
40
- source: "embase",
41
- title: e["dc:title"] ?? "",
42
- authors: e["dc:creator"] ? [e["dc:creator"]] : [],
43
- date: e["prism:coverDate"] ?? "",
44
- study_type: mapSubtype(e["subtypeDescription"]),
45
- abstract: e["dc:description"] ?? "",
46
- url,
47
- };
48
- });
49
- }
50
- catch {
51
- return [];
50
+ // No try/catch here — let errors propagate so the dispatcher
51
+ // (src/providers/direct/index.ts) can record status:"failed" + error
52
+ // message in the audit trail instead of silently returning [].
53
+ const params = new URLSearchParams({
54
+ query: cleanedQuery,
55
+ count: String(maxResults),
56
+ dbId: "embase",
57
+ field: "title,creator,publicationName,coverDate,description,doi,subtypeDescription,link",
58
+ });
59
+ const res = await fetch(`${BASE}?${params}`, {
60
+ headers,
61
+ signal: AbortSignal.timeout(15_000),
62
+ });
63
+ if (!res.ok) {
64
+ const body = await res.text().catch(() => "");
65
+ throw new Error(`Scopus API ${res.status}: ${body.slice(0, 200)}`);
52
66
  }
67
+ const data = (await res.json());
68
+ const entries = data["search-results"]?.entry ?? [];
69
+ return entries
70
+ .filter((e) => e["dc:title"])
71
+ .map((e, i) => {
72
+ const doi = e["prism:doi"];
73
+ const scopusLink = e.link?.find((l) => l["@ref"] === "scopus")?.["@href"];
74
+ const url = doi ? `https://doi.org/${doi}` : (scopusLink ?? "");
75
+ return {
76
+ id: `embase_${doi ?? scopusLink ?? i}`,
77
+ source: "embase",
78
+ title: e["dc:title"] ?? "",
79
+ authors: e["dc:creator"] ? [e["dc:creator"]] : [],
80
+ date: e["prism:coverDate"] ?? "",
81
+ study_type: mapSubtype(e["subtypeDescription"]),
82
+ abstract: e["dc:description"] ?? "",
83
+ url,
84
+ };
85
+ });
53
86
  }
54
87
  function mapSubtype(subtype) {
55
88
  if (!subtype)
@@ -1 +1 @@
1
- {"version":3,"file":"embase.js","sourceRoot":"","sources":["../../../src/providers/direct/embase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embase.js","sourceRoot":"","sources":["../../../src/providers/direct/embase.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"googleScholar.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/googleScholar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBpD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAsC7B"}
1
+ {"version":3,"file":"googleScholar.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/googleScholar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBpD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6C7B"}
@@ -3,41 +3,47 @@ export async function fetchGoogleScholar(query, maxResults) {
3
3
  const apiKey = process.env.SERPAPI_KEY;
4
4
  if (!apiKey)
5
5
  return [];
6
- try {
7
- const url = `${BASE}?engine=google_scholar&q=${encodeURIComponent(query)}&num=${Math.min(maxResults, 20)}&api_key=${apiKey}`;
8
- const res = await fetch(url, { signal: AbortSignal.timeout(15_000) });
9
- if (!res.ok)
10
- return [];
11
- const data = (await res.json());
12
- if (data.error || !data.organic_results)
13
- return [];
14
- return data.organic_results.slice(0, maxResults).map((r, i) => {
15
- const authors = r.publication_info?.authors?.map((a) => a.name) ?? [];
16
- const pubSummary = r.publication_info?.summary ?? "";
17
- // pub summary often: "A Smith, B Jones - Journal Name, 2023 - publisher.com"
18
- const yearMatch = pubSummary.match(/\b(19|20)\d{2}\b/);
19
- return {
20
- id: `gscholar_${r.result_id ?? i}`,
21
- source: "google_scholar",
22
- title: r.title ?? "Untitled",
23
- authors,
24
- date: yearMatch ? yearMatch[0] : "",
25
- study_type: "unknown",
26
- abstract: [
27
- r.snippet ?? "",
28
- pubSummary ? `Publication: ${pubSummary}` : null,
29
- r.inline_links?.cited_by?.total
30
- ? `Cited by: ${r.inline_links.cited_by.total}`
31
- : null,
32
- ]
33
- .filter(Boolean)
34
- .join(" | "),
35
- url: r.link ?? "",
36
- };
37
- });
6
+ const params = new URLSearchParams({
7
+ engine: "google_scholar",
8
+ q: query,
9
+ num: String(Math.min(maxResults, 20)),
10
+ api_key: apiKey,
11
+ });
12
+ const res = await fetch(`${BASE}?${params}`, {
13
+ signal: AbortSignal.timeout(15_000),
14
+ });
15
+ if (!res.ok) {
16
+ const body = await res.text().catch(() => "");
17
+ throw new Error(`SerpAPI ${res.status}: ${body.slice(0, 200)}`);
38
18
  }
39
- catch {
19
+ const data = (await res.json());
20
+ if (data.error)
21
+ throw new Error(`SerpAPI error: ${data.error}`);
22
+ if (!data.organic_results)
40
23
  return [];
41
- }
24
+ return data.organic_results.slice(0, maxResults).map((r, i) => {
25
+ const authors = r.publication_info?.authors?.map((a) => a.name) ?? [];
26
+ const pubSummary = r.publication_info?.summary ?? "";
27
+ // pub summary often: "A Smith, B Jones - Journal Name, 2023 - publisher.com"
28
+ const yearMatch = pubSummary.match(/\b(19|20)\d{2}\b/);
29
+ return {
30
+ id: `gscholar_${r.result_id ?? i}`,
31
+ source: "google_scholar",
32
+ title: r.title ?? "Untitled",
33
+ authors,
34
+ date: yearMatch ? yearMatch[0] : "",
35
+ study_type: "unknown",
36
+ abstract: [
37
+ r.snippet ?? "",
38
+ pubSummary ? `Publication: ${pubSummary}` : null,
39
+ r.inline_links?.cited_by?.total
40
+ ? `Cited by: ${r.inline_links.cited_by.total}`
41
+ : null,
42
+ ]
43
+ .filter(Boolean)
44
+ .join(" | "),
45
+ url: r.link ?? "",
46
+ };
47
+ });
42
48
  }
43
49
  //# sourceMappingURL=googleScholar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"googleScholar.js","sourceRoot":"","sources":["../../../src/providers/direct/googleScholar.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,4BAA4B,CAAC;AAmB1C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,UAAkB;IAElB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,IAAI,4BAA4B,kBAAkB,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,MAAM,EAAE,CAAC;QAC7H,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QAEnD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAC;YACrD,6EAA6E;YAC7E,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACvD,OAAO;gBACL,EAAE,EAAE,YAAY,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE;gBAClC,MAAM,EAAE,gBAAyB;gBACjC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,UAAU;gBAC5B,OAAO;gBACP,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnC,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE;oBACR,CAAC,CAAC,OAAO,IAAI,EAAE;oBACf,UAAU,CAAC,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;oBAChD,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK;wBAC7B,CAAC,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;wBAC9C,CAAC,CAAC,IAAI;iBACT;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,KAAK,CAAC;gBACd,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"googleScholar.js","sourceRoot":"","sources":["../../../src/providers/direct/googleScholar.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,4BAA4B,CAAC;AAmB1C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,UAAkB;IAElB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,MAAM,EAAE,gBAAgB;QACxB,CAAC,EAAE,KAAK;QACR,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,EAAE;QAC3C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;IACnD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAErC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAC;QACrD,6EAA6E;QAC7E,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvD,OAAO;YACL,EAAE,EAAE,YAAY,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE;YAClC,MAAM,EAAE,gBAAyB;YACjC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,UAAU;YAC5B,OAAO;YACP,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnC,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE;gBACR,CAAC,CAAC,OAAO,IAAI,EAAE;gBACf,UAAU,CAAC,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;gBAChD,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK;oBAC7B,CAAC,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;oBAC9C,CAAC,CAAC,IAAI;aACT;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,KAAK,CAAC;YACd,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;SAClB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pubmed.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/pubmed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6BpD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4D7B"}
1
+ {"version":3,"file":"pubmed.d.ts","sourceRoot":"","sources":["../../../src/providers/direct/pubmed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6BpD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8D7B"}