@mantra-ai/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/dist/ai/google/client.d.ts +67 -0
  2. package/dist/ai/google/client.d.ts.map +1 -0
  3. package/dist/ai/google/client.js +169 -0
  4. package/dist/ai/google/client.js.map +1 -0
  5. package/dist/ai/google/generate.d.ts +10 -0
  6. package/dist/ai/google/generate.d.ts.map +1 -0
  7. package/dist/ai/google/generate.js +137 -0
  8. package/dist/ai/google/generate.js.map +1 -0
  9. package/dist/ai/google/index.d.ts +4 -0
  10. package/dist/ai/google/index.d.ts.map +1 -0
  11. package/dist/ai/google/index.js +4 -0
  12. package/dist/ai/google/index.js.map +1 -0
  13. package/dist/ai/google/types.d.ts +88 -0
  14. package/dist/ai/google/types.d.ts.map +1 -0
  15. package/dist/ai/google/types.js +55 -0
  16. package/dist/ai/google/types.js.map +1 -0
  17. package/dist/ai/index.d.ts +3 -0
  18. package/dist/ai/index.d.ts.map +1 -0
  19. package/dist/ai/index.js +3 -0
  20. package/dist/ai/index.js.map +1 -0
  21. package/dist/ai/openai/client.d.ts +22 -0
  22. package/dist/ai/openai/client.d.ts.map +1 -0
  23. package/dist/ai/openai/client.js +49 -0
  24. package/dist/ai/openai/client.js.map +1 -0
  25. package/dist/ai/openai/generate.d.ts +14 -0
  26. package/dist/ai/openai/generate.d.ts.map +1 -0
  27. package/dist/ai/openai/generate.js +178 -0
  28. package/dist/ai/openai/generate.js.map +1 -0
  29. package/dist/ai/openai/index.d.ts +4 -0
  30. package/dist/ai/openai/index.d.ts.map +1 -0
  31. package/dist/ai/openai/index.js +4 -0
  32. package/dist/ai/openai/index.js.map +1 -0
  33. package/dist/ai/openai/types.d.ts +86 -0
  34. package/dist/ai/openai/types.d.ts.map +1 -0
  35. package/dist/ai/openai/types.js +56 -0
  36. package/dist/ai/openai/types.js.map +1 -0
  37. package/dist/ai/prompts/index.d.ts +1 -0
  38. package/dist/ai/prompts/index.d.ts.map +1 -0
  39. package/dist/ai/prompts/index.js +2 -0
  40. package/dist/ai/prompts/index.js.map +1 -0
  41. package/dist/errors/index.d.ts +3 -0
  42. package/dist/errors/index.d.ts.map +1 -0
  43. package/dist/errors/index.js +4 -0
  44. package/dist/errors/index.js.map +1 -0
  45. package/dist/errors/schemas.d.ts +304 -0
  46. package/dist/errors/schemas.d.ts.map +1 -0
  47. package/dist/errors/schemas.js +57 -0
  48. package/dist/errors/schemas.js.map +1 -0
  49. package/dist/errors/types.d.ts +30 -0
  50. package/dist/errors/types.d.ts.map +1 -0
  51. package/dist/errors/types.js +33 -0
  52. package/dist/errors/types.js.map +1 -0
  53. package/dist/index.d.ts +21 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +21 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/normalization/jats/index.d.ts +4 -0
  58. package/dist/normalization/jats/index.d.ts.map +1 -0
  59. package/dist/normalization/jats/index.js +3 -0
  60. package/dist/normalization/jats/index.js.map +1 -0
  61. package/dist/normalization/jats/normalize.d.ts +7 -0
  62. package/dist/normalization/jats/normalize.d.ts.map +1 -0
  63. package/dist/normalization/jats/normalize.js +213 -0
  64. package/dist/normalization/jats/normalize.js.map +1 -0
  65. package/dist/normalization/jats/utils/build/finalize.d.ts +3 -0
  66. package/dist/normalization/jats/utils/build/finalize.d.ts.map +1 -0
  67. package/dist/normalization/jats/utils/build/finalize.js +462 -0
  68. package/dist/normalization/jats/utils/build/finalize.js.map +1 -0
  69. package/dist/normalization/jats/utils/build/flatten.d.ts +20 -0
  70. package/dist/normalization/jats/utils/build/flatten.d.ts.map +1 -0
  71. package/dist/normalization/jats/utils/build/flatten.js +502 -0
  72. package/dist/normalization/jats/utils/build/flatten.js.map +1 -0
  73. package/dist/normalization/jats/utils/build/meta.d.ts +10 -0
  74. package/dist/normalization/jats/utils/build/meta.d.ts.map +1 -0
  75. package/dist/normalization/jats/utils/build/meta.js +32 -0
  76. package/dist/normalization/jats/utils/build/meta.js.map +1 -0
  77. package/dist/normalization/jats/utils/build/version.d.ts +3 -0
  78. package/dist/normalization/jats/utils/build/version.d.ts.map +1 -0
  79. package/dist/normalization/jats/utils/build/version.js +11 -0
  80. package/dist/normalization/jats/utils/build/version.js.map +1 -0
  81. package/dist/normalization/jats/utils/category.d.ts +11 -0
  82. package/dist/normalization/jats/utils/category.d.ts.map +1 -0
  83. package/dist/normalization/jats/utils/category.js +431 -0
  84. package/dist/normalization/jats/utils/category.js.map +1 -0
  85. package/dist/normalization/jats/utils/collectors/abstracts.d.ts +3 -0
  86. package/dist/normalization/jats/utils/collectors/abstracts.d.ts.map +1 -0
  87. package/dist/normalization/jats/utils/collectors/abstracts.js +168 -0
  88. package/dist/normalization/jats/utils/collectors/abstracts.js.map +1 -0
  89. package/dist/normalization/jats/utils/collectors/back.d.ts +35 -0
  90. package/dist/normalization/jats/utils/collectors/back.d.ts.map +1 -0
  91. package/dist/normalization/jats/utils/collectors/back.js +801 -0
  92. package/dist/normalization/jats/utils/collectors/back.js.map +1 -0
  93. package/dist/normalization/jats/utils/collectors/contributors.d.ts +4 -0
  94. package/dist/normalization/jats/utils/collectors/contributors.d.ts.map +1 -0
  95. package/dist/normalization/jats/utils/collectors/contributors.js +77 -0
  96. package/dist/normalization/jats/utils/collectors/contributors.js.map +1 -0
  97. package/dist/normalization/jats/utils/collectors/keywords.d.ts +2 -0
  98. package/dist/normalization/jats/utils/collectors/keywords.d.ts.map +1 -0
  99. package/dist/normalization/jats/utils/collectors/keywords.js +14 -0
  100. package/dist/normalization/jats/utils/collectors/keywords.js.map +1 -0
  101. package/dist/normalization/jats/utils/collectors/meta.d.ts +6 -0
  102. package/dist/normalization/jats/utils/collectors/meta.d.ts.map +1 -0
  103. package/dist/normalization/jats/utils/collectors/meta.js +103 -0
  104. package/dist/normalization/jats/utils/collectors/meta.js.map +1 -0
  105. package/dist/normalization/jats/utils/collectors/sections.d.ts +7 -0
  106. package/dist/normalization/jats/utils/collectors/sections.d.ts.map +1 -0
  107. package/dist/normalization/jats/utils/collectors/sections.js +484 -0
  108. package/dist/normalization/jats/utils/collectors/sections.js.map +1 -0
  109. package/dist/normalization/jats/utils/licenses.d.ts +5 -0
  110. package/dist/normalization/jats/utils/licenses.d.ts.map +1 -0
  111. package/dist/normalization/jats/utils/licenses.js +64 -0
  112. package/dist/normalization/jats/utils/licenses.js.map +1 -0
  113. package/dist/normalization/jats/utils/po/nodes.d.ts +6 -0
  114. package/dist/normalization/jats/utils/po/nodes.d.ts.map +1 -0
  115. package/dist/normalization/jats/utils/po/nodes.js +60 -0
  116. package/dist/normalization/jats/utils/po/nodes.js.map +1 -0
  117. package/dist/normalization/jats/utils/po/query.d.ts +7 -0
  118. package/dist/normalization/jats/utils/po/query.d.ts.map +1 -0
  119. package/dist/normalization/jats/utils/po/query.js +67 -0
  120. package/dist/normalization/jats/utils/po/query.js.map +1 -0
  121. package/dist/normalization/jats/utils/po/serialize.d.ts +4 -0
  122. package/dist/normalization/jats/utils/po/serialize.d.ts.map +1 -0
  123. package/dist/normalization/jats/utils/po/serialize.js +329 -0
  124. package/dist/normalization/jats/utils/po/serialize.js.map +1 -0
  125. package/dist/normalization/jats/utils/po/text.d.ts +7 -0
  126. package/dist/normalization/jats/utils/po/text.d.ts.map +1 -0
  127. package/dist/normalization/jats/utils/po/text.js +114 -0
  128. package/dist/normalization/jats/utils/po/text.js.map +1 -0
  129. package/dist/normalization/jats/utils/references.d.ts +26 -0
  130. package/dist/normalization/jats/utils/references.d.ts.map +1 -0
  131. package/dist/normalization/jats/utils/references.js +371 -0
  132. package/dist/normalization/jats/utils/references.js.map +1 -0
  133. package/dist/normalization/jats/utils/strings.d.ts +8 -0
  134. package/dist/normalization/jats/utils/strings.d.ts.map +1 -0
  135. package/dist/normalization/jats/utils/strings.js +197 -0
  136. package/dist/normalization/jats/utils/strings.js.map +1 -0
  137. package/dist/normalization/jats/utils/types.d.ts +233 -0
  138. package/dist/normalization/jats/utils/types.d.ts.map +1 -0
  139. package/dist/normalization/jats/utils/types.js +2 -0
  140. package/dist/normalization/jats/utils/types.js.map +1 -0
  141. package/dist/normalization/jats/utils/xml.d.ts +5 -0
  142. package/dist/normalization/jats/utils/xml.d.ts.map +1 -0
  143. package/dist/normalization/jats/utils/xml.js +69 -0
  144. package/dist/normalization/jats/utils/xml.js.map +1 -0
  145. package/dist/normalization/normalized-doc-schema.d.ts +1094 -0
  146. package/dist/normalization/normalized-doc-schema.d.ts.map +1 -0
  147. package/dist/normalization/normalized-doc-schema.js +410 -0
  148. package/dist/normalization/normalized-doc-schema.js.map +1 -0
  149. package/dist/normalization/pdf/index.d.ts +4 -0
  150. package/dist/normalization/pdf/index.d.ts.map +1 -0
  151. package/dist/normalization/pdf/index.js +3 -0
  152. package/dist/normalization/pdf/index.js.map +1 -0
  153. package/dist/normalization/pdf/normalize.d.ts +31 -0
  154. package/dist/normalization/pdf/normalize.d.ts.map +1 -0
  155. package/dist/normalization/pdf/normalize.js +321 -0
  156. package/dist/normalization/pdf/normalize.js.map +1 -0
  157. package/dist/normalization/pdf/prompt.d.ts +3 -0
  158. package/dist/normalization/pdf/prompt.d.ts.map +1 -0
  159. package/dist/normalization/pdf/prompt.js +118 -0
  160. package/dist/normalization/pdf/prompt.js.map +1 -0
  161. package/dist/sources/arxiv/client.d.ts +4 -0
  162. package/dist/sources/arxiv/client.d.ts.map +1 -0
  163. package/dist/sources/arxiv/client.js +13 -0
  164. package/dist/sources/arxiv/client.js.map +1 -0
  165. package/dist/sources/biorxiv/client.d.ts +21 -0
  166. package/dist/sources/biorxiv/client.d.ts.map +1 -0
  167. package/dist/sources/biorxiv/client.js +173 -0
  168. package/dist/sources/biorxiv/client.js.map +1 -0
  169. package/dist/sources/crossref/client.d.ts +3 -0
  170. package/dist/sources/crossref/client.d.ts.map +1 -0
  171. package/dist/sources/crossref/client.js +24 -0
  172. package/dist/sources/crossref/client.js.map +1 -0
  173. package/dist/sources/europepmc/client.d.ts +3 -0
  174. package/dist/sources/europepmc/client.d.ts.map +1 -0
  175. package/dist/sources/europepmc/client.js +29 -0
  176. package/dist/sources/europepmc/client.js.map +1 -0
  177. package/dist/sources/medrxiv/browser.d.ts +16 -0
  178. package/dist/sources/medrxiv/browser.d.ts.map +1 -0
  179. package/dist/sources/medrxiv/browser.js +210 -0
  180. package/dist/sources/medrxiv/browser.js.map +1 -0
  181. package/dist/sources/medrxiv/client.d.ts +34 -0
  182. package/dist/sources/medrxiv/client.d.ts.map +1 -0
  183. package/dist/sources/medrxiv/client.js +673 -0
  184. package/dist/sources/medrxiv/client.js.map +1 -0
  185. package/dist/sources/medrxiv/shared.d.ts +7 -0
  186. package/dist/sources/medrxiv/shared.d.ts.map +1 -0
  187. package/dist/sources/medrxiv/shared.js +18 -0
  188. package/dist/sources/medrxiv/shared.js.map +1 -0
  189. package/dist/sources/plos/client.d.ts +13 -0
  190. package/dist/sources/plos/client.d.ts.map +1 -0
  191. package/dist/sources/plos/client.js +147 -0
  192. package/dist/sources/plos/client.js.map +1 -0
  193. package/dist/sources/preprint-discovery.d.ts +55 -0
  194. package/dist/sources/preprint-discovery.d.ts.map +1 -0
  195. package/dist/sources/preprint-discovery.js +115 -0
  196. package/dist/sources/preprint-discovery.js.map +1 -0
  197. package/dist/types/expand.d.ts +5 -0
  198. package/dist/types/expand.d.ts.map +1 -0
  199. package/dist/types/expand.js +20 -0
  200. package/dist/types/expand.js.map +1 -0
  201. package/dist/types/methods-types.d.ts +37 -0
  202. package/dist/types/methods-types.d.ts.map +1 -0
  203. package/dist/types/methods-types.js +2 -0
  204. package/dist/types/methods-types.js.map +1 -0
  205. package/dist/types/multi-input-types.d.ts +57 -0
  206. package/dist/types/multi-input-types.d.ts.map +1 -0
  207. package/dist/types/multi-input-types.js +2 -0
  208. package/dist/types/multi-input-types.js.map +1 -0
  209. package/dist/types/paper/types.d.ts +41 -0
  210. package/dist/types/paper/types.d.ts.map +1 -0
  211. package/dist/types/paper/types.js +2 -0
  212. package/dist/types/paper/types.js.map +1 -0
  213. package/dist/types/results-types.d.ts +122 -0
  214. package/dist/types/results-types.d.ts.map +1 -0
  215. package/dist/types/results-types.js +17 -0
  216. package/dist/types/results-types.js.map +1 -0
  217. package/dist/types/supp-types.d.ts +6 -0
  218. package/dist/types/supp-types.d.ts.map +1 -0
  219. package/dist/types/supp-types.js +2 -0
  220. package/dist/types/supp-types.js.map +1 -0
  221. package/dist/types/version.d.ts +1828 -0
  222. package/dist/types/version.d.ts.map +1 -0
  223. package/dist/types/version.js +311 -0
  224. package/dist/types/version.js.map +1 -0
  225. package/dist/types/work.d.ts +4455 -0
  226. package/dist/types/work.d.ts.map +1 -0
  227. package/dist/types/work.js +330 -0
  228. package/dist/types/work.js.map +1 -0
  229. package/dist/works/adapters/crossref.d.ts +28 -0
  230. package/dist/works/adapters/crossref.d.ts.map +1 -0
  231. package/dist/works/adapters/crossref.js +43 -0
  232. package/dist/works/adapters/crossref.js.map +1 -0
  233. package/dist/works/adapters/europepmc.d.ts +14 -0
  234. package/dist/works/adapters/europepmc.d.ts.map +1 -0
  235. package/dist/works/adapters/europepmc.js +46 -0
  236. package/dist/works/adapters/europepmc.js.map +1 -0
  237. package/dist/works/adapters/openalex.d.ts +5 -0
  238. package/dist/works/adapters/openalex.d.ts.map +1 -0
  239. package/dist/works/adapters/openalex.js +75 -0
  240. package/dist/works/adapters/openalex.js.map +1 -0
  241. package/dist/works/errors.d.ts +23 -0
  242. package/dist/works/errors.d.ts.map +1 -0
  243. package/dist/works/errors.js +37 -0
  244. package/dist/works/errors.js.map +1 -0
  245. package/dist/works/id/detect-identifier.d.ts +15 -0
  246. package/dist/works/id/detect-identifier.d.ts.map +1 -0
  247. package/dist/works/id/detect-identifier.js +50 -0
  248. package/dist/works/id/detect-identifier.js.map +1 -0
  249. package/dist/works/id/normalize-external-id.d.ts +3 -0
  250. package/dist/works/id/normalize-external-id.d.ts.map +1 -0
  251. package/dist/works/id/normalize-external-id.js +44 -0
  252. package/dist/works/id/normalize-external-id.js.map +1 -0
  253. package/dist/works/id/normalize-ids.d.ts +66 -0
  254. package/dist/works/id/normalize-ids.d.ts.map +1 -0
  255. package/dist/works/id/normalize-ids.js +112 -0
  256. package/dist/works/id/normalize-ids.js.map +1 -0
  257. package/dist/works/id/normalize-internals.d.ts +7 -0
  258. package/dist/works/id/normalize-internals.d.ts.map +1 -0
  259. package/dist/works/id/normalize-internals.js +65 -0
  260. package/dist/works/id/normalize-internals.js.map +1 -0
  261. package/dist/works/id/resolve.d.ts +31 -0
  262. package/dist/works/id/resolve.d.ts.map +1 -0
  263. package/dist/works/id/resolve.js +123 -0
  264. package/dist/works/id/resolve.js.map +1 -0
  265. package/dist/works/id/resolveIds/assign.d.ts +4 -0
  266. package/dist/works/id/resolveIds/assign.d.ts.map +1 -0
  267. package/dist/works/id/resolveIds/assign.js +15 -0
  268. package/dist/works/id/resolveIds/assign.js.map +1 -0
  269. package/dist/works/id/resolveIds/flags.d.ts +11 -0
  270. package/dist/works/id/resolveIds/flags.d.ts.map +1 -0
  271. package/dist/works/id/resolveIds/flags.js +27 -0
  272. package/dist/works/id/resolveIds/flags.js.map +1 -0
  273. package/dist/works/id/resolveIds/idctx.d.ts +4 -0
  274. package/dist/works/id/resolveIds/idctx.d.ts.map +1 -0
  275. package/dist/works/id/resolveIds/idctx.js +25 -0
  276. package/dist/works/id/resolveIds/idctx.js.map +1 -0
  277. package/dist/works/id/resolveIds/index.d.ts +13 -0
  278. package/dist/works/id/resolveIds/index.d.ts.map +1 -0
  279. package/dist/works/id/resolveIds/index.js +498 -0
  280. package/dist/works/id/resolveIds/index.js.map +1 -0
  281. package/dist/works/id/resolveIds/versioning.d.ts +27 -0
  282. package/dist/works/id/resolveIds/versioning.d.ts.map +1 -0
  283. package/dist/works/id/resolveIds/versioning.js +156 -0
  284. package/dist/works/id/resolveIds/versioning.js.map +1 -0
  285. package/dist/works/id/resolveIds/workWhere.d.ts +3 -0
  286. package/dist/works/id/resolveIds/workWhere.d.ts.map +1 -0
  287. package/dist/works/id/resolveIds/workWhere.js +35 -0
  288. package/dist/works/id/resolveIds/workWhere.js.map +1 -0
  289. package/dist/works/id/types.d.ts +6 -0
  290. package/dist/works/id/types.d.ts.map +1 -0
  291. package/dist/works/id/types.js +2 -0
  292. package/dist/works/id/types.js.map +1 -0
  293. package/dist/works/pdf-fallback/candidates.d.ts +12 -0
  294. package/dist/works/pdf-fallback/candidates.d.ts.map +1 -0
  295. package/dist/works/pdf-fallback/candidates.js +51 -0
  296. package/dist/works/pdf-fallback/candidates.js.map +1 -0
  297. package/dist/works/pdf-fallback/fetch.d.ts +21 -0
  298. package/dist/works/pdf-fallback/fetch.d.ts.map +1 -0
  299. package/dist/works/pdf-fallback/fetch.js +89 -0
  300. package/dist/works/pdf-fallback/fetch.js.map +1 -0
  301. package/dist/works/pdf-fallback/index.d.ts +28 -0
  302. package/dist/works/pdf-fallback/index.d.ts.map +1 -0
  303. package/dist/works/pdf-fallback/index.js +35 -0
  304. package/dist/works/pdf-fallback/index.js.map +1 -0
  305. package/dist/works/plan.d.ts +8 -0
  306. package/dist/works/plan.d.ts.map +1 -0
  307. package/dist/works/plan.js +62 -0
  308. package/dist/works/plan.js.map +1 -0
  309. package/dist/works/strategies/arxiv.d.ts +3 -0
  310. package/dist/works/strategies/arxiv.d.ts.map +1 -0
  311. package/dist/works/strategies/arxiv.js +56 -0
  312. package/dist/works/strategies/arxiv.js.map +1 -0
  313. package/dist/works/strategies/biorxiv.d.ts +3 -0
  314. package/dist/works/strategies/biorxiv.d.ts.map +1 -0
  315. package/dist/works/strategies/biorxiv.js +63 -0
  316. package/dist/works/strategies/biorxiv.js.map +1 -0
  317. package/dist/works/strategies/europepmc.d.ts +3 -0
  318. package/dist/works/strategies/europepmc.d.ts.map +1 -0
  319. package/dist/works/strategies/europepmc.js +15 -0
  320. package/dist/works/strategies/europepmc.js.map +1 -0
  321. package/dist/works/strategies/index.d.ts +12 -0
  322. package/dist/works/strategies/index.d.ts.map +1 -0
  323. package/dist/works/strategies/index.js +19 -0
  324. package/dist/works/strategies/index.js.map +1 -0
  325. package/dist/works/strategies/landing-url.d.ts +3 -0
  326. package/dist/works/strategies/landing-url.d.ts.map +1 -0
  327. package/dist/works/strategies/landing-url.js +10 -0
  328. package/dist/works/strategies/landing-url.js.map +1 -0
  329. package/dist/works/strategies/medrxiv.d.ts +3 -0
  330. package/dist/works/strategies/medrxiv.d.ts.map +1 -0
  331. package/dist/works/strategies/medrxiv.js +47 -0
  332. package/dist/works/strategies/medrxiv.js.map +1 -0
  333. package/dist/works/strategies/plos.d.ts +3 -0
  334. package/dist/works/strategies/plos.d.ts.map +1 -0
  335. package/dist/works/strategies/plos.js +15 -0
  336. package/dist/works/strategies/plos.js.map +1 -0
  337. package/dist/works/strategies/shared.d.ts +11 -0
  338. package/dist/works/strategies/shared.d.ts.map +1 -0
  339. package/dist/works/strategies/shared.js +97 -0
  340. package/dist/works/strategies/shared.js.map +1 -0
  341. package/dist/works/strategies/ten1101.d.ts +3 -0
  342. package/dist/works/strategies/ten1101.d.ts.map +1 -0
  343. package/dist/works/strategies/ten1101.js +84 -0
  344. package/dist/works/strategies/ten1101.js.map +1 -0
  345. package/dist/works/text/acquire-fulltext.d.ts +7 -0
  346. package/dist/works/text/acquire-fulltext.d.ts.map +1 -0
  347. package/dist/works/text/acquire-fulltext.js +62 -0
  348. package/dist/works/text/acquire-fulltext.js.map +1 -0
  349. package/dist/works/text/normalize.d.ts +40 -0
  350. package/dist/works/text/normalize.d.ts.map +1 -0
  351. package/dist/works/text/normalize.js +188 -0
  352. package/dist/works/text/normalize.js.map +1 -0
  353. package/dist/works/types.d.ts +215 -0
  354. package/dist/works/types.d.ts.map +1 -0
  355. package/dist/works/types.js +6 -0
  356. package/dist/works/types.js.map +1 -0
  357. package/dist/works/util/debug.d.ts +7 -0
  358. package/dist/works/util/debug.d.ts.map +1 -0
  359. package/dist/works/util/debug.js +9 -0
  360. package/dist/works/util/debug.js.map +1 -0
  361. package/dist/works/util/license.d.ts +9 -0
  362. package/dist/works/util/license.d.ts.map +1 -0
  363. package/dist/works/util/license.js +39 -0
  364. package/dist/works/util/license.js.map +1 -0
  365. package/dist/works/util/normalize.d.ts +2 -0
  366. package/dist/works/util/normalize.d.ts.map +1 -0
  367. package/dist/works/util/normalize.js +76 -0
  368. package/dist/works/util/normalize.js.map +1 -0
  369. package/dist/works/util/parse.d.ts +8 -0
  370. package/dist/works/util/parse.d.ts.map +1 -0
  371. package/dist/works/util/parse.js +32 -0
  372. package/dist/works/util/parse.js.map +1 -0
  373. package/dist/works/util/source.d.ts +10 -0
  374. package/dist/works/util/source.d.ts.map +1 -0
  375. package/dist/works/util/source.js +48 -0
  376. package/dist/works/util/source.js.map +1 -0
  377. package/dist/works/util/version-label.d.ts +2 -0
  378. package/dist/works/util/version-label.d.ts.map +1 -0
  379. package/dist/works/util/version-label.js +8 -0
  380. package/dist/works/util/version-label.js.map +1 -0
  381. package/dist/works/util/work-id.d.ts +2 -0
  382. package/dist/works/util/work-id.d.ts.map +1 -0
  383. package/dist/works/util/work-id.js +27 -0
  384. package/dist/works/util/work-id.js.map +1 -0
  385. package/package.json +208 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../src/types/work.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ import { z } from "zod";
2
+ // Base identifiers schema
3
+ export const WorkIdsSchema = z.object({
4
+ doi: z.string().nullable().optional(),
5
+ pmid: z.string().nullable().optional(),
6
+ pmcid: z.string().nullable().optional(),
7
+ arxiv_id: z.string().nullable().optional(),
8
+ biorxiv_id: z.string().nullable().optional(),
9
+ medrxiv_id: z.string().nullable().optional(),
10
+ openalex_id: z.string().nullable().optional(),
11
+ });
12
+ // Version information schema (full version object)
13
+ export const WorkVersionSchema = z.object({
14
+ id: z.string(),
15
+ version_label: z.string(),
16
+ doi: z.string().nullable().optional(),
17
+ released_at: z.string(),
18
+ previous_version_id: z.string().nullable().optional(),
19
+ schema_version: z.string().nullable().optional(),
20
+ open_access: z.boolean().optional(),
21
+ license: z.string().nullable().optional(),
22
+ ingested: z.boolean().optional(),
23
+ normalized: z.boolean().optional(),
24
+ });
25
+ // Minimal version schema (for versions array)
26
+ export const WorkVersionMinimalSchema = z.object({
27
+ public_id: z.string(),
28
+ open_access: z.boolean().optional(),
29
+ license: z.string().nullable().optional(),
30
+ });
31
+ // Contributor schema (removed - contributors relation is commented out in schema)
32
+ // export const WorkContributorSchema = z.object({
33
+ // agent_id: z.string(),
34
+ // role: z.string(),
35
+ // author_order: z.number().int().nullable().optional(),
36
+ // full_name: z.string().optional(),
37
+ // given_name: z.string().optional(),
38
+ // surname: z.string().optional(),
39
+ // });
40
+ export const AuthorSchema = z.object({
41
+ role: z.string(),
42
+ given: z.string(),
43
+ surname: z.string(),
44
+ corresp: z.boolean(),
45
+ xref_aff: z.array(z.string()).optional(), // optional because some entries might omit it
46
+ email: z.string().optional(),
47
+ corresp_id: z.string().optional(),
48
+ full: z.string().optional(),
49
+ });
50
+ // Work links schema
51
+ export const WorkLinksSchema = z.object({
52
+ self: z.string(),
53
+ versions: z.string(),
54
+ // latest_version: z.string().optional(),
55
+ });
56
+ // Metadata schema for ingest responses (removed - metadata expansion is no longer supported)
57
+ // export const WorkMetadataSchema = z.object({
58
+ // ids: WorkIdsSchema,
59
+ // landing_url: z.string().nullable().optional(),
60
+ // publisher: z.string().optional(),
61
+ // journal: z.string().optional(),
62
+ // year: z.number().int().optional(),
63
+ // source: z.string().optional(),
64
+ // type: z.string().optional(),
65
+ // version: z.string().optional(),
66
+ // is_preprint: z.boolean().optional(),
67
+ // is_open_access: z.boolean().optional(),
68
+ // title: z.string().optional(),
69
+ // contributors: z.array(AuthorSchema).optional(),
70
+ // publication_date: z.string().optional(),
71
+ // license: z.unknown().optional(),
72
+ // abstract_snippet: z.string().optional(),
73
+ // });
74
+ // Unified Work object schema (used by all endpoints)
75
+ export const WorkCoreSchema = z.object({
76
+ // Core identifiers - only public_id exposed to users
77
+ public_id: z.string(), // The public work id
78
+ // Basic metadata
79
+ title: z.string(),
80
+ abstract: z.string().nullable().optional(),
81
+ // External identifiers
82
+ ids: WorkIdsSchema,
83
+ // URLs and access
84
+ landing_url: z.string().nullable().optional(),
85
+ is_open_access: z.boolean().optional(),
86
+ best_license: z.string().nullable().optional(),
87
+ // Publication timeline
88
+ first_published_at: z.string().nullable().optional(),
89
+ latest_released_at: z.string().nullable().optional(),
90
+ // Timestamps
91
+ created_at: z.string(),
92
+ updated_at: z.string(),
93
+ // Always-present expanded data
94
+ versions: z.array(WorkVersionSchema), // Version objects - selected version(s)
95
+ // contributors: z.array(WorkContributorSchema), // Removed - contributors relation is commented out in schema
96
+ // Links (always present)
97
+ _links: WorkLinksSchema,
98
+ // Expandable fields (only present when requested)
99
+ sections: z.unknown().optional(),
100
+ blocks: z.unknown().optional(),
101
+ assets: z.unknown().optional(),
102
+ citations: z.unknown().optional(),
103
+ });
104
+ // Extended supplement schema (removed - no longer needed with expand=all)
105
+ // export const WorkExtendedSchema = z.object({
106
+ // // Extended metadata (removed - metadata expansion is no longer supported)
107
+ // // metadata: WorkMetadataSchema,
108
+ //
109
+ // // Full text result (normalized document) - removed in favor of expand=all
110
+ // result: z.unknown(),
111
+ // });
112
+ // Combined response schema with all expandable fields
113
+ const ExpandPaginationSchema = z
114
+ .object({
115
+ total: z.number(),
116
+ offset: z.number(),
117
+ limit: z.number(),
118
+ has_more: z.boolean(),
119
+ })
120
+ .optional();
121
+ export const WorkResponseSchema = WorkCoreSchema.extend({
122
+ // Extended fields are optional to allow union with WorkCoreSchema
123
+ // metadata: WorkMetadataSchema.optional(), // Removed - metadata expansion is no longer supported
124
+ // result: z.unknown().optional(), // Removed - no longer needed with expand=all
125
+ sections: z.unknown().optional(),
126
+ blocks: z.unknown().optional(),
127
+ _blocks_pagination: ExpandPaginationSchema,
128
+ assets: z.unknown().optional(),
129
+ citations: z.unknown().optional(),
130
+ _citations_pagination: ExpandPaginationSchema,
131
+ });
132
+ // -------- Download + Envelope Schemas --------
133
+ export const WorkDownloadPresignedSchema = z
134
+ .object({
135
+ mode: z.literal("presigned"),
136
+ url: z.string().url(),
137
+ expires_in: z.number().int().min(30).max(3600),
138
+ })
139
+ .strict();
140
+ export const WorkDownloadSavedSchema = z
141
+ .object({
142
+ mode: z.literal("saved"),
143
+ path: z.string(),
144
+ size: z.number().nonnegative(),
145
+ content_type: z.string(),
146
+ })
147
+ .strict();
148
+ export const WorkDownloadSchema = z.union([
149
+ WorkDownloadPresignedSchema,
150
+ WorkDownloadSavedSchema,
151
+ ]);
152
+ export const WorkExpandedDataSchema = z
153
+ .object({
154
+ sections: z.unknown().optional(),
155
+ blocks: z.unknown().optional(),
156
+ _blocks_pagination: ExpandPaginationSchema,
157
+ assets: z.unknown().optional(),
158
+ citations: z.unknown().optional(),
159
+ _citations_pagination: ExpandPaginationSchema,
160
+ })
161
+ .strict()
162
+ .optional();
163
+ export const WorkErrorSchema = z
164
+ .object({
165
+ code: z.string(),
166
+ message: z.string(),
167
+ details: z.record(z.string(), z.unknown()).optional(),
168
+ })
169
+ .strict();
170
+ export const WorkEnvelopeSuccessSchema = z
171
+ .object({
172
+ status: z.literal("completed"),
173
+ work: WorkCoreSchema,
174
+ data: WorkExpandedDataSchema,
175
+ download: WorkDownloadSchema.optional(),
176
+ warnings: z.array(z.string()).optional(),
177
+ })
178
+ .strict();
179
+ export const WorkEnvelopeErrorSchema = z
180
+ .object({
181
+ status: z.literal("error"),
182
+ error: WorkErrorSchema,
183
+ })
184
+ .strict();
185
+ export const WorkEnvelopeSchema = z.union([
186
+ WorkEnvelopeSuccessSchema,
187
+ WorkEnvelopeErrorSchema,
188
+ ]);
189
+ export const BatchWorkResultSuccessSchema = z
190
+ .object({
191
+ index: z.number().int().min(0),
192
+ status: z.literal("success"),
193
+ work: WorkCoreSchema,
194
+ data: WorkExpandedDataSchema,
195
+ download: WorkDownloadSchema.optional(),
196
+ warnings: z.array(z.string()).optional(),
197
+ })
198
+ .strict();
199
+ export const BatchWorkResultErrorSchema = z
200
+ .object({
201
+ index: z.number().int().min(0),
202
+ status: z.literal("error"),
203
+ error: WorkErrorSchema,
204
+ })
205
+ .strict();
206
+ export const BatchWorkResultSchema = z.union([
207
+ BatchWorkResultSuccessSchema,
208
+ BatchWorkResultErrorSchema,
209
+ ]);
210
+ const BatchWorkResultsEnvelopeSchema = z
211
+ .object({
212
+ status: z.enum(["completed", "partial", "failed"]),
213
+ results: z.array(BatchWorkResultSchema),
214
+ })
215
+ .strict();
216
+ export const BatchWorkProcessingEnvelopeSchema = z
217
+ .object({
218
+ status: z.literal("processing"),
219
+ idempotency_key: z.string(),
220
+ job_id: z.string(),
221
+ created_at: z.string(),
222
+ })
223
+ .strict();
224
+ export const BatchWorkEnvelopeSchema = z.union([
225
+ BatchWorkResultsEnvelopeSchema,
226
+ BatchWorkProcessingEnvelopeSchema,
227
+ ]);
228
+ // Works list response schema
229
+ export const WorksListResponseSchema = z.object({
230
+ items: z.array(z.union([WorkCoreSchema, WorkResponseSchema])),
231
+ next_cursor: z.string().nullable(),
232
+ });
233
+ // Legacy schemas for backward compatibility (deprecated)
234
+ export const WorkShortViewSchema = WorkCoreSchema;
235
+ export const WorkFullViewSchema = WorkResponseSchema;
236
+ export const WorkShortViewGetSchema = WorkCoreSchema;
237
+ export const WorkFullViewGetSchema = WorkResponseSchema;
238
+ // Helper function to create Work object with proper typing
239
+ export function createWorkObject(data, view = "short") {
240
+ const baseWork = {
241
+ public_id: data.public_id || "",
242
+ title: data.title || "",
243
+ abstract: data.abstract || null,
244
+ ids: data.ids || {},
245
+ landing_url: data.landing_url || null,
246
+ is_open_access: data.is_open_access || false,
247
+ best_license: data.best_license || null,
248
+ first_published_at: data.first_published_at || null,
249
+ latest_released_at: data.latest_released_at || null,
250
+ created_at: data.created_at || new Date().toISOString(),
251
+ updated_at: data.updated_at || new Date().toISOString(),
252
+ versions: data.versions || [],
253
+ // contributors: data.contributors || [], // Removed
254
+ _links: data._links || {
255
+ self: "",
256
+ versions: "",
257
+ },
258
+ ...data,
259
+ };
260
+ return baseWork;
261
+ }
262
+ // Helper function to transform Prisma Work record to WorkCore
263
+ export function transformPrismaWorkToWorkObject(prismaWork, options = {}) {
264
+ const { includeVersions = true, // Always include versions
265
+ // includeContributors = true, // Removed
266
+ selectedVersion = null, // Selected version (or latest if none specified)
267
+ versionsToInclude = [],
268
+ // metadata, // Removed
269
+ // result, // Removed - no longer needed with expand=all
270
+ jobId, idempotencyKey, correlationId, } = options;
271
+ const workObject = {
272
+ public_id: prismaWork.publicId,
273
+ title: prismaWork.title,
274
+ abstract: prismaWork.abstract,
275
+ ids: {
276
+ doi: prismaWork.doi,
277
+ pmid: prismaWork.pmid,
278
+ pmcid: prismaWork.pmcid,
279
+ arxiv_id: prismaWork.arxivId,
280
+ biorxiv_id: prismaWork.biorxivId,
281
+ medrxiv_id: prismaWork.medrxivId,
282
+ openalex_id: prismaWork.openalexId,
283
+ },
284
+ landing_url: prismaWork.landingUrl,
285
+ is_open_access: prismaWork.isOpenAccess,
286
+ best_license: prismaWork.bestLicense,
287
+ first_published_at: prismaWork.firstPublishedAt?.toISOString() || null,
288
+ latest_released_at: prismaWork.latestReleasedAt?.toISOString() || null,
289
+ created_at: prismaWork.createdAt.toISOString(),
290
+ updated_at: prismaWork.updatedAt.toISOString(),
291
+ versions: [], // Will be populated below
292
+ // contributors: [], // Removed - contributors relation is commented out in schema
293
+ _links: {
294
+ self: `/v1/work/${prismaWork.publicId}`,
295
+ versions: `/v1/work/${prismaWork.publicId}/versions`,
296
+ // latest_version: prismaWork.latestVersionId ? `/v1/work/${prismaWork.publicId}/versions/latest` : undefined,
297
+ },
298
+ };
299
+ // Always populate versions array with specified versions
300
+ if (includeVersions && versionsToInclude && versionsToInclude.length > 0) {
301
+ workObject.versions = versionsToInclude.map((version) => ({
302
+ id: version.id,
303
+ version_label: version.version_label,
304
+ doi: version.doi,
305
+ released_at: version.released_at,
306
+ previous_version_id: version.previous_version_id,
307
+ schema_version: version.schema_version,
308
+ open_access: version.open_access,
309
+ license: version.license,
310
+ ingested: version.ingested,
311
+ normalized: version.normalized,
312
+ }));
313
+ }
314
+ else {
315
+ // If no versions found, set empty array
316
+ workObject.versions = [];
317
+ }
318
+ // Contributors removed - contributors relation is commented out in schema
319
+ // if (includeContributors && prismaWork.contributors) {
320
+ // workObject.contributors = prismaWork.contributors.map(
321
+ // (contributor: any) => ({
322
+ // agent_id: contributor.agentId,
323
+ // role: contributor.role,
324
+ // author_order: contributor.authorOrder,
325
+ // })
326
+ // );
327
+ // }
328
+ return workObject;
329
+ }
330
+ //# sourceMappingURL=work.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/types/work.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export declare function enrichFromCrossref(doi: string): Promise<{
2
+ crossref: null;
3
+ doi: string;
4
+ enriched: {
5
+ license: undefined;
6
+ landingUrl: undefined;
7
+ publisher: undefined;
8
+ journal: undefined;
9
+ year: undefined;
10
+ };
11
+ adapterError: {
12
+ ok: false;
13
+ status?: number;
14
+ reason: "not_found" | "rate_limited" | "upstream_error" | "network_error";
15
+ };
16
+ } | {
17
+ crossref: any;
18
+ doi: string;
19
+ enriched: {
20
+ license: string | undefined;
21
+ landingUrl: string | undefined;
22
+ publisher: string | undefined;
23
+ journal: string | undefined;
24
+ year: number | undefined;
25
+ };
26
+ adapterError: undefined;
27
+ }>;
28
+ //# sourceMappingURL=crossref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossref.d.ts","sourceRoot":"","sources":["../../../src/works/adapters/crossref.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CnD"}
@@ -0,0 +1,43 @@
1
+ import { fetchCrossrefWorkByDoi } from "../../sources/crossref/client";
2
+ import { normalizeDOI } from "../id/normalize-ids";
3
+ import { pickFirstString } from "../util/parse";
4
+ export async function enrichFromCrossref(doi) {
5
+ // Crossref returns deeply nested, untyped JSON — keep as `any` at the adapter boundary
6
+ const result = await fetchCrossrefWorkByDoi(doi);
7
+ if (!result.ok) {
8
+ return {
9
+ crossref: null,
10
+ doi,
11
+ enriched: { license: undefined, landingUrl: undefined, publisher: undefined, journal: undefined, year: undefined },
12
+ adapterError: result,
13
+ };
14
+ }
15
+ const cr = result.data;
16
+ const crDoi = normalizeDOI(cr?.DOI ?? doi) ?? doi;
17
+ const license = Array.isArray(cr?.license)
18
+ ? cr.license[0]?.["URL"] || cr.license[0]?.["content-version"]
19
+ : undefined;
20
+ const landingUrl = cr?.URL || undefined;
21
+ const publisher = cr?.publisher || undefined;
22
+ const journal = pickFirstString(cr?.["container-title"]) ||
23
+ pickFirstString(cr?.["short-container-title"]) ||
24
+ undefined;
25
+ const yearFrom = (obj) => {
26
+ const parts = obj?.["date-parts"];
27
+ const first = Array.isArray(parts) ? parts[0] : undefined;
28
+ const y = Array.isArray(first) ? first[0] : undefined;
29
+ return typeof y === "number" && Number.isFinite(y) ? y : undefined;
30
+ };
31
+ const year = yearFrom(cr?.issued) ||
32
+ yearFrom(cr?.["published-print"]) ||
33
+ yearFrom(cr?.["published-online"]) ||
34
+ yearFrom(cr?.created) ||
35
+ undefined;
36
+ return {
37
+ crossref: cr,
38
+ doi: crDoi,
39
+ enriched: { license, landingUrl, publisher, journal, year },
40
+ adapterError: undefined,
41
+ };
42
+ }
43
+ //# sourceMappingURL=crossref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossref.js","sourceRoot":"","sources":["../../../src/works/adapters/crossref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,uFAAuF;IACvF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,GAAG;YACH,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAClH,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IAClD,MAAM,OAAO,GAAuB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;QAC5D,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,UAAU,GAAuB,EAAE,EAAE,GAAG,IAAI,SAAS,CAAC;IAC5D,MAAM,SAAS,GAAuB,EAAE,EAAE,SAAS,IAAI,SAAS,CAAC;IACjE,MAAM,OAAO,GACX,eAAe,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACxC,eAAe,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC;QAC9C,SAAS,CAAC;IAEZ,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAsB,EAAE;QAChD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC,CAAC;IACF,MAAM,IAAI,GACR,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAClC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC;IAEZ,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,GAAG,EAAE,KAAK;QACV,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;QAC3D,YAAY,EAAE,SAAS;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AdapterResult, LoggerLike } from "../types";
2
+ export declare function europePmcSearch(query: string, logger?: LoggerLike): Promise<AdapterResult<any>>;
3
+ export declare function resolveDoiToPmidPmcidViaEpmc(doi: string): Promise<{
4
+ result: {
5
+ pmid?: string;
6
+ pmcid?: string;
7
+ } | null;
8
+ adapterError?: {
9
+ ok: false;
10
+ status?: number;
11
+ reason: string;
12
+ };
13
+ }>;
14
+ //# sourceMappingURL=europepmc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"europepmc.d.ts","sourceRoot":"","sources":["../../../src/works/adapters/europepmc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE1D,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,UAAU,GAElB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAmB7B;AAED,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,CAAC,CAuBD"}
@@ -0,0 +1,46 @@
1
+ import { normalizePMID, normalizePMCID } from "../id/normalize-ids";
2
+ export async function europePmcSearch(query, logger) {
3
+ try {
4
+ const url = `https://www.ebi.ac.uk/europepmc/webservices/rest/search?format=json&pageSize=25&query=${encodeURIComponent(query)}`;
5
+ const res = await fetch(url, {
6
+ headers: { Accept: "application/json" },
7
+ });
8
+ if (!res.ok) {
9
+ const status = res.status;
10
+ if (status === 429)
11
+ return { ok: false, status, reason: "rate_limited" };
12
+ return { ok: false, status, reason: "upstream_error" };
13
+ }
14
+ const data = await res.json();
15
+ return { ok: true, data };
16
+ }
17
+ catch (err) {
18
+ logger?.warn?.({ err, source: "europepmc", query }, "adapter.europepmc: search failed");
19
+ return { ok: false, reason: "network_error" };
20
+ }
21
+ }
22
+ export async function resolveDoiToPmidPmcidViaEpmc(doi) {
23
+ const searchResult = await europePmcSearch(`DOI:"${doi}"`);
24
+ if (!searchResult.ok) {
25
+ return { result: null, adapterError: searchResult };
26
+ }
27
+ const items = searchResult.data?.resultList?.result ?? [];
28
+ if (!items.length)
29
+ return { result: null };
30
+ const item = items.find((r) => r?.pmcid) ?? items[0];
31
+ const ret = {};
32
+ const pmid = item?.pmid || item?.pmidList?.[0];
33
+ const pmcid = item?.pmcid || item?.pmcidList?.[0];
34
+ if (pmid) {
35
+ const v = normalizePMID(pmid);
36
+ if (v)
37
+ ret.pmid = v;
38
+ }
39
+ if (pmcid) {
40
+ const v = normalizePMCID(pmcid);
41
+ if (v)
42
+ ret.pmcid = v;
43
+ }
44
+ return { result: ret };
45
+ }
46
+ //# sourceMappingURL=europepmc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"europepmc.js","sourceRoot":"","sources":["../../../src/works/adapters/europepmc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,MAAmB;IAGnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,yFAAyF,kBAAkB,CACrH,KAAK,CACN,EAAE,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;YACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,kCAAkC,CAAC,CAAC;QACxF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,GAAW;IAKX,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC3D,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,GAAU,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAsC,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAElD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ActionsExternalType, AdapterResult, OpenAlexWork, OpenAlexLocation, LoggerLike } from "../types";
2
+ export declare function fetchOpenAlexWorkByKey(key: ActionsExternalType, val: string, logger?: LoggerLike): Promise<AdapterResult<OpenAlexWork>>;
3
+ export declare const fetchOpenAlexWorkByDoi: (doi: string) => Promise<AdapterResult<OpenAlexWork>>;
4
+ export type { OpenAlexWork, OpenAlexLocation };
5
+ //# sourceMappingURL=openalex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openalex.d.ts","sourceRoot":"","sources":["../../../src/works/adapters/openalex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACX,MAAM,UAAU,CAAC;AAYlB,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CA4DtC;AAED,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,yCACd,CAAC;AAGrC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { normalizeArXivId, deriveBioMedrxivDoi, } from "../id/normalize-ids";
2
+ function classifyResponse(status) {
3
+ if (status === 404)
4
+ return { ok: false, status, reason: "not_found" };
5
+ if (status === 429)
6
+ return { ok: false, status, reason: "rate_limited" };
7
+ return { ok: false, status, reason: "upstream_error" };
8
+ }
9
+ export async function fetchOpenAlexWorkByKey(key, val, logger) {
10
+ try {
11
+ if (key === "arxivId") {
12
+ const aid = normalizeArXivId(val)?.replace(/v\d+$/i, "");
13
+ if (!aid)
14
+ return { ok: false, reason: "not_found" };
15
+ const url = `https://api.openalex.org/works?search=${encodeURIComponent(`arXiv:${aid}`)}&per_page=1`;
16
+ const res = await fetch(url, {
17
+ headers: { Accept: "application/json" },
18
+ });
19
+ if (!res.ok)
20
+ return classifyResponse(res.status);
21
+ const data = (await res.json());
22
+ const work = data?.results?.[0] ?? null;
23
+ if (!work)
24
+ return { ok: false, reason: "not_found" };
25
+ return { ok: true, data: work };
26
+ }
27
+ let idPath = null;
28
+ switch (key) {
29
+ case "openalexId": {
30
+ const v = val
31
+ .replace(/^https?:\/\/(www\.)?openalex\.org\//i, "")
32
+ .trim();
33
+ idPath = v.startsWith("W") ? v : `W${v}`;
34
+ break;
35
+ }
36
+ case "doi":
37
+ idPath = `doi:${val}`;
38
+ break;
39
+ case "pmid":
40
+ idPath = `pmid:${val}`;
41
+ break;
42
+ case "pmcid":
43
+ idPath = `pmcid:${val}`;
44
+ break;
45
+ case "biorxivId":
46
+ case "medrxivId": {
47
+ const maybeDoi = deriveBioMedrxivDoi(val) ?? null;
48
+ if (!maybeDoi)
49
+ return { ok: false, reason: "not_found" };
50
+ idPath = `doi:${maybeDoi}`;
51
+ break;
52
+ }
53
+ default:
54
+ return { ok: false, reason: "not_found" };
55
+ }
56
+ if (!idPath)
57
+ return { ok: false, reason: "not_found" };
58
+ const url = `https://api.openalex.org/works/${encodeURIComponent(idPath)}`;
59
+ const res = await fetch(url, {
60
+ headers: { Accept: "application/json" },
61
+ });
62
+ if (!res.ok)
63
+ return classifyResponse(res.status);
64
+ const data = (await res.json());
65
+ if (!data || !data.id)
66
+ return { ok: false, reason: "not_found" };
67
+ return { ok: true, data };
68
+ }
69
+ catch (err) {
70
+ logger?.warn?.({ err, source: "openalex", key, identifier: val }, "adapter.openalex: fetch failed");
71
+ return { ok: false, reason: "network_error" };
72
+ }
73
+ }
74
+ export const fetchOpenAlexWorkByDoi = (doi) => fetchOpenAlexWorkByKey("doi", doi);
75
+ //# sourceMappingURL=openalex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openalex.js","sourceRoot":"","sources":["../../../src/works/adapters/openalex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Typed pipeline errors for the ingest pipeline.
3
+ *
4
+ * Each error code maps to an HTTP status code so the error handler
5
+ * can return semantically correct responses instead of generic 500s.
6
+ */
7
+ export declare const PIPELINE_ERROR_CODES: {
8
+ readonly IDENTIFIER_NOT_FOUND: "identifier_not_found";
9
+ readonly FULLTEXT_UNAVAILABLE: "fulltext_unavailable";
10
+ readonly XML_PARSE_ERROR: "xml_parse_error";
11
+ readonly UPSTREAM_FAILURE: "upstream_failure";
12
+ readonly UPSTREAM_RATE_LIMITED: "upstream_rate_limited";
13
+ readonly CONFLICT: "conflict";
14
+ readonly INTERNAL_ERROR: "internal_error";
15
+ };
16
+ export type PipelineErrorCode = (typeof PIPELINE_ERROR_CODES)[keyof typeof PIPELINE_ERROR_CODES];
17
+ export declare class PipelineError extends Error {
18
+ readonly code: PipelineErrorCode;
19
+ readonly statusCode: number;
20
+ readonly details?: Record<string, unknown>;
21
+ constructor(code: PipelineErrorCode, message: string, details?: Record<string, unknown>);
22
+ }
23
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/works/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;CAQvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAYnE,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGzC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQpC"}