@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":"assign.js","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/assign.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,0BAA0B,CAAC,GAAgB;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,yCAAyC;IACzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC;YAAE,OAAQ,GAAW,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,gFAAgF;IAChF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,GAAQ,EAAe,EAAE,CACpE,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CompleteIds } from "../../types";
2
+ export declare function computeIsPreprint(applied: CompleteIds, isPreprintDoi: (d?: string | null) => boolean): boolean;
3
+ export declare function computeIsOpenAccess({ oaBest, oaAny, isPreprint, license, crossrefLic, }: {
4
+ oaBest: any;
5
+ oaAny: boolean;
6
+ isPreprint: boolean;
7
+ license?: string;
8
+ crossrefLic?: string;
9
+ }): boolean;
10
+ export declare function synthesizeBestPdfUrl(applied: CompleteIds): string | undefined;
11
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,WAQ9C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,KAAK,EACL,UAAU,EACV,OAAO,EACP,WAAW,GACZ,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,WAQA;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAS7E"}
@@ -0,0 +1,27 @@
1
+ const looksCreativeCommons = (lic) => !!lic &&
2
+ /(creativecommons|cc-?by|cc0|cc-?by-?sa|cc-?by-?nc|cc-?by-?nd)/i.test(lic);
3
+ export function computeIsPreprint(applied, isPreprintDoi) {
4
+ return Boolean(applied.biorxivId ||
5
+ applied.medrxivId ||
6
+ applied.arxivId ||
7
+ isPreprintDoi(applied.doi));
8
+ }
9
+ export function computeIsOpenAccess({ oaBest, oaAny, isPreprint, license, crossrefLic, }) {
10
+ return (oaBest?.is_oa === true ||
11
+ oaAny ||
12
+ isPreprint ||
13
+ looksCreativeCommons(license || crossrefLic) ||
14
+ false);
15
+ }
16
+ export function synthesizeBestPdfUrl(applied) {
17
+ if (applied.arxivId)
18
+ return `https://arxiv.org/pdf/${applied.arxivId}.pdf`;
19
+ if (applied.pmcid)
20
+ return `https://www.ncbi.nlm.nih.gov/pmc/articles/${applied.pmcid}/pdf`;
21
+ if (applied.biorxivId && /v\d+$/i.test(applied.biorxivId))
22
+ return `https://www.biorxiv.org/content/10.1101/${applied.biorxivId}.full.pdf`;
23
+ if (applied.medrxivId && /v\d+$/i.test(applied.medrxivId))
24
+ return `https://www.medrxiv.org/content/10.1101/${applied.medrxivId}.full.pdf`;
25
+ return undefined;
26
+ }
27
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/flags.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,CAAC,GAAY,EAAE,EAAE,CAC5C,CAAC,CAAC,GAAG;IACL,gEAAgE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE7E,MAAM,UAAU,iBAAiB,CAC/B,OAAoB,EACpB,aAA6C;IAE7C,OAAO,OAAO,CACZ,OAAO,CAAC,SAAS;QACf,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,OAAO;QACf,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,MAAM,EACN,KAAK,EACL,UAAU,EACV,OAAO,EACP,WAAW,GAOZ;IACC,OAAO,CACL,MAAM,EAAE,KAAK,KAAK,IAAI;QACtB,KAAK;QACL,UAAU;QACV,oBAAoB,CAAC,OAAO,IAAI,WAAW,CAAC;QAC5C,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,yBAAyB,OAAO,CAAC,OAAO,MAAM,CAAC;IAC3E,IAAI,OAAO,CAAC,KAAK;QACf,OAAO,6CAA6C,OAAO,CAAC,KAAK,MAAM,CAAC;IAC1E,IAAI,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvD,OAAO,2CAA2C,OAAO,CAAC,SAAS,WAAW,CAAC;IACjF,IAAI,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvD,OAAO,2CAA2C,OAAO,CAAC,SAAS,WAAW,CAAC;IACjF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function normalizeVersionLabel(value?: string | null): string | null;
2
+ export declare function stripVersionSuffix(value?: string | null): string | null;
3
+ export declare function hasVersionSuffix(value?: string | null): boolean;
4
+ //# sourceMappingURL=idctx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idctx.d.ts","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/idctx.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAY1E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGvE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAG/D"}
@@ -0,0 +1,25 @@
1
+ export function normalizeVersionLabel(value) {
2
+ if (!value)
3
+ return null;
4
+ const v = String(value).trim().toLowerCase();
5
+ if (v === "published")
6
+ return "published";
7
+ const m = v.match(/^v\s*(\d+)$/i);
8
+ if (m) {
9
+ const n = Number(m[1]);
10
+ if (Number.isFinite(n) && n >= 1)
11
+ return `v${n}`;
12
+ }
13
+ return null;
14
+ }
15
+ export function stripVersionSuffix(value) {
16
+ if (!value)
17
+ return null;
18
+ return String(value).replace(/v\d+$/i, "");
19
+ }
20
+ export function hasVersionSuffix(value) {
21
+ if (!value)
22
+ return false;
23
+ return /v\d+$/i.test(String(value));
24
+ }
25
+ //# sourceMappingURL=idctx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idctx.js","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/idctx.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAE1C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAqB;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ActionsExternalType, CompleteIds } from "../../types";
2
+ import { type LoggerLike } from "../../util/debug";
3
+ /** ---- Orchestrator ---- */
4
+ export declare function resolveIds(externalIdType: ActionsExternalType, rawId: string, opts?: {
5
+ logger?: LoggerLike | {
6
+ log?: LoggerLike;
7
+ };
8
+ debug?: boolean;
9
+ cid?: string;
10
+ }): Promise<{
11
+ completeIds: CompleteIds;
12
+ }>;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,mBAAmB,EAEnB,WAAW,EAEZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA+LnE,6BAA6B;AAC7B,wBAAsB,UAAU,CAC9B,cAAc,EAAE,mBAAmB,EACnC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IACL,MAAM,CAAC,EAAE,UAAU,GAAG;QAAE,GAAG,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,CA+avC"}
@@ -0,0 +1,498 @@
1
+ import { normalizeExternalId, } from "../normalize-external-id";
2
+ import { normalizeAndMaybeResolveToDOI, normalizeDOI, normalizePMID, normalizePMCID, normalizeArXivId, } from "../normalize-ids";
3
+ import { resolveArxivToDoi, resolvePmcidToDoi, resolvePmidToDoi, shouldQueryCrossrefForDoi, } from "../resolve";
4
+ import { inferSourceKind } from "../../util/source";
5
+ import { parseDebugFlag } from "../../util/debug";
6
+ import { normalizeIds } from "../../util/normalize";
7
+ import { parseArxivIdFromUrl, parseArxivIdFromDoi, parseBiorxivMedrxivIdFromDoi, } from "../../util/parse";
8
+ import { fetchOpenAlexWorkByKey, fetchOpenAlexWorkByDoi, } from "../../adapters/openalex";
9
+ import { resolveDoiToPmidPmcidViaEpmc } from "../../adapters/europepmc";
10
+ import { enrichFromCrossref } from "../../adapters/crossref";
11
+ import { inferVersionLabel } from "./versioning";
12
+ import { computeIsPreprint, computeIsOpenAccess, synthesizeBestPdfUrl, } from "./flags";
13
+ /** ---- small local helpers (behavioral no-ops, reduce duplication) ---- */
14
+ function stripHtmlLike(input) {
15
+ if (!input || typeof input !== "string")
16
+ return undefined;
17
+ const s = input
18
+ .replace(/<[^>]+>/g, " ") // drop tags
19
+ .replace(/\s+/g, " ")
20
+ .trim();
21
+ return s || undefined;
22
+ }
23
+ function reconstructOpenAlexAbstract(inv) {
24
+ if (!inv || typeof inv !== "object")
25
+ return undefined;
26
+ // Rebuild by positions
27
+ const positions = [];
28
+ for (const [token, idxs] of Object.entries(inv)) {
29
+ for (const i of idxs)
30
+ positions.push({ pos: i, token });
31
+ }
32
+ positions.sort((a, b) => a.pos - b.pos);
33
+ const text = positions.map((p) => p.token).join(" ");
34
+ return text && text.trim() ? text : undefined;
35
+ }
36
+ function ensureLandingUrlFromDoi(r) {
37
+ if (r.doi && !r.landingUrl)
38
+ r.landingUrl = `https://doi.org/${r.doi}`;
39
+ }
40
+ function pickCrossrefLicenseUrl(crossref) {
41
+ return Array.isArray(crossref?.license)
42
+ ? crossref.license[0]?.URL || crossref.license[0]?.["content-version"]
43
+ : undefined;
44
+ }
45
+ function parseCrossrefFirstDate(cr) {
46
+ if (!cr)
47
+ return undefined;
48
+ const picks = [
49
+ cr["published-online"],
50
+ cr["published-print"],
51
+ cr["created"],
52
+ ].filter(Boolean);
53
+ for (const d of picks) {
54
+ // Crossref date-parts format: { "date-parts": [[YYYY, M?, D?]] }
55
+ const parts = Array.isArray(d?.["date-parts"]) && Array.isArray(d["date-parts"][0])
56
+ ? d["date-parts"][0]
57
+ : null;
58
+ if (!parts || !parts.length)
59
+ continue;
60
+ const [Y, M = 1, D = 1] = parts;
61
+ if (Y)
62
+ return new Date(Date.UTC(Y, M - 1, D)).toISOString();
63
+ }
64
+ return undefined;
65
+ }
66
+ function parseOpenAlexDate(oa) {
67
+ const y = oa?.publication_year;
68
+ const dt = oa?.publication_date; // e.g., "2024-05-12"
69
+ if (dt && /^\d{4}-\d{2}-\d{2}$/.test(dt)) {
70
+ return new Date(dt + "T00:00:00Z").toISOString();
71
+ }
72
+ if (y && Number.isInteger(y)) {
73
+ return new Date(Date.UTC(y, 0, 1)).toISOString();
74
+ }
75
+ return undefined;
76
+ }
77
+ function pickBestLicense({ crossref, openalex, existing, }) {
78
+ // Crossref
79
+ const crLicArr = Array.isArray(crossref?.license) ? crossref.license : [];
80
+ const crLic = crLicArr.length
81
+ ? crLicArr[0].URL || crLicArr[0]["content-version"]
82
+ : undefined;
83
+ // OpenAlex
84
+ const oaLic = openalex?.best_oa_location?.license || undefined;
85
+ return ((crLic && String(crLic)) ||
86
+ (oaLic && String(oaLic)) ||
87
+ (existing && String(existing)) ||
88
+ undefined);
89
+ }
90
+ /** Prefer a DOI lookup, otherwise fall back to the provided external key. */
91
+ async function fetchOpenAlexPreferDoiThenKey(doi, externalIdType, normalizedInput, rawId) {
92
+ if (doi) {
93
+ const byDoi = await fetchOpenAlexWorkByDoi(doi);
94
+ if (byDoi.ok)
95
+ return byDoi;
96
+ }
97
+ return fetchOpenAlexWorkByKey(externalIdType, normalizedInput ?? rawId);
98
+ }
99
+ /** Consolidated arXiv inference across all signals (existing → Crossref → OpenAlex → arXiv DOI) */
100
+ function inferArxivId({ existing, crossref, openalex, doi, logger, }) {
101
+ // 1) existing (already normalized upstream)
102
+ if (existing)
103
+ return existing;
104
+ // 2) Crossref relation: look for arXiv
105
+ try {
106
+ const rel = crossref?.relation ?? {};
107
+ const relVals = Object.values(rel).flat();
108
+ for (const r of relVals) {
109
+ const id = r?.id;
110
+ const arx = id?.startsWith("arXiv:")
111
+ ? id.replace(/^arXiv:/i, "")
112
+ : parseArxivIdFromUrl(id ?? "");
113
+ if (arx)
114
+ return normalizeArXivId(arx)?.replace(/v\d+$/i, "");
115
+ }
116
+ }
117
+ catch (err) {
118
+ logger?.warn?.({ err, source: "crossref", step: "extractArxivId" }, "resolveIds.extractArxivId: failed parsing Crossref relations");
119
+ }
120
+ // 3) OpenAlex: locations/source
121
+ if (openalex) {
122
+ const primary = openalex.primary_location || null;
123
+ const best = openalex.best_oa_location || null;
124
+ const allLocs = [primary, best, ...(openalex.locations || [])].filter(Boolean);
125
+ for (const loc of allLocs) {
126
+ const url = loc?.landing_page_url || loc?.pdf_url || undefined;
127
+ const arx = parseArxivIdFromUrl(url || undefined);
128
+ if (arx)
129
+ return normalizeArXivId(arx)?.replace(/v\d+$/i, "");
130
+ const src = loc?.source?.display_name || loc?.source?.id || "";
131
+ if (/arxiv/i.test(src)) {
132
+ const arx2 = parseArxivIdFromUrl(url || undefined);
133
+ if (arx2)
134
+ return normalizeArXivId(arx2)?.replace(/v\d+$/i, "");
135
+ }
136
+ }
137
+ }
138
+ // 4) DOI minted by DataCite for arXiv
139
+ if (doi) {
140
+ const fromDoi = parseArxivIdFromDoi(doi);
141
+ if (fromDoi)
142
+ return normalizeArXivId(fromDoi)?.replace(/v\d+$/i, "");
143
+ }
144
+ return undefined;
145
+ }
146
+ /** ---- Orchestrator ---- */
147
+ export async function resolveIds(externalIdType, rawId, opts) {
148
+ const cid = opts?.cid;
149
+ const rawLogger = opts?.logger;
150
+ const logger = rawLogger && typeof rawLogger === "object" && "log" in rawLogger
151
+ ? rawLogger.log
152
+ : rawLogger;
153
+ const shouldDebug = parseDebugFlag(opts?.debug) || parseDebugFlag(process.env.DEBUG_ADD_IDS);
154
+ const debug = (obj, msg) => {
155
+ if (!shouldDebug)
156
+ return;
157
+ try {
158
+ const payload = { tag: "resolveIds", ...obj };
159
+ logger?.warn?.({ correlationId: cid, ...payload }, msg);
160
+ }
161
+ catch { }
162
+ };
163
+ // 1) Normalize the provided identifier
164
+ const normalizedInput = normalizeExternalId(externalIdType, rawId) ?? undefined;
165
+ // capture original rxiv cores for version suffix restoration
166
+ const originalBiorxivId = externalIdType === "biorxivId"
167
+ ? String(normalizedInput ?? rawId)
168
+ .trim()
169
+ .replace(/^10\.1101\//i, "")
170
+ : null;
171
+ const originalMedrxivId = externalIdType === "medrxivId"
172
+ ? String(normalizedInput ?? rawId)
173
+ .trim()
174
+ .replace(/^10\.1101\//i, "")
175
+ : null;
176
+ debug({ externalIdType, rawId, normalizedInput }, "ids.start");
177
+ const result = {};
178
+ const confirmedBy = new Set();
179
+ const upstreamErrors = [];
180
+ const assignCanon = (ids) => Object.assign(result, normalizeIds({
181
+ ...result,
182
+ ...Object.fromEntries(Object.entries(ids).filter(([, v]) => v !== undefined && v !== null)),
183
+ }));
184
+ // Preserve arXiv / medrxiv up front (so we never lose them during DOI resolution)
185
+ if (externalIdType === "arxivId" && (normalizedInput ?? rawId)) {
186
+ const canon = normalizeArXivId(normalizedInput ?? rawId);
187
+ if (canon)
188
+ assignCanon({ arxivId: canon.replace(/v\d+$/i, "") });
189
+ }
190
+ if (externalIdType === "medrxivId" && (normalizedInput ?? rawId)) {
191
+ const core = String(normalizedInput ?? rawId)
192
+ .trim()
193
+ .replace(/^10\.1101\//i, "");
194
+ if (core)
195
+ assignCanon({ medrxivId: core });
196
+ }
197
+ if (externalIdType === "biorxivId" && (normalizedInput ?? rawId)) {
198
+ const core = String(normalizedInput ?? rawId)
199
+ .trim()
200
+ .replace(/^10\.1101\//i, "");
201
+ if (core)
202
+ assignCanon({ biorxivId: core });
203
+ }
204
+ debug({ partial: { ...result } }, "ids.after_preserve");
205
+ // 2) Resolve to DOI (single place)
206
+ let doi = null;
207
+ if (externalIdType !== "openalexId") {
208
+ const map = {
209
+ doi: "doi",
210
+ pmid: "pmid",
211
+ pmcid: "pmcid",
212
+ arxivId: "arxiv",
213
+ biorxivId: "biorxiv",
214
+ medrxivId: "medrxiv",
215
+ openalexId: "openalex",
216
+ };
217
+ const mapped = map[externalIdType];
218
+ if (mapped && mapped !== "openalex") {
219
+ const res = await normalizeAndMaybeResolveToDOI(mapped, normalizedInput ?? rawId, {
220
+ resolvePmidToDoi,
221
+ resolvePmcidToDoi,
222
+ resolveArxivToDoi,
223
+ });
224
+ if (res.ok && res.data.type === "doi") {
225
+ doi = res.data.value;
226
+ debug({ doi }, "ids.doi_resolved.initial");
227
+ }
228
+ else if (res.ok) {
229
+ const t = res.data.type;
230
+ if (t === "pmid")
231
+ assignCanon({ pmid: res.data.value });
232
+ if (t === "pmcid")
233
+ assignCanon({ pmcid: res.data.value });
234
+ if (t === "arxiv")
235
+ assignCanon({ arxivId: res.data.value });
236
+ if (t === "biorxiv")
237
+ assignCanon({ biorxivId: res.data.value });
238
+ if (t === "medrxiv")
239
+ assignCanon({ medrxivId: res.data.value });
240
+ debug({ type: t, value: res.data.value, partial: { ...result } }, "ids.no_doi_fallback");
241
+ }
242
+ }
243
+ }
244
+ // 3) Crossref enrichment (single spot)
245
+ let crossref = null;
246
+ if (doi && shouldQueryCrossrefForDoi(doi)) {
247
+ const cr = await enrichFromCrossref(doi);
248
+ crossref = cr.crossref;
249
+ doi = cr.doi; // possibly refined DOI casing from Crossref
250
+ if (crossref) {
251
+ confirmedBy.add("crossref");
252
+ const { license, landingUrl, publisher, journal, year } = cr.enriched;
253
+ // NEW: extract Crossref title safely (array or string)
254
+ const crTitleRaw = crossref?.title;
255
+ const crTitle = Array.isArray(crTitleRaw)
256
+ ? crTitleRaw[0] ?? null
257
+ : typeof crTitleRaw === "string"
258
+ ? crTitleRaw
259
+ : null;
260
+ assignCanon({
261
+ doi: doi ?? undefined,
262
+ license,
263
+ landingUrl,
264
+ publisher,
265
+ journal,
266
+ year,
267
+ // NEW: carry a human-readable title
268
+ title: crTitle && crTitle.trim() ? crTitle : undefined,
269
+ });
270
+ debug({ doi, license, landingUrl, publisher, journal, year, title: crTitle }, "ids.crossref.enriched");
271
+ }
272
+ else if (cr.adapterError) {
273
+ upstreamErrors.push({
274
+ source: "crossref",
275
+ status: cr.adapterError.status,
276
+ reason: cr.adapterError.reason,
277
+ });
278
+ assignCanon({ doi: doi || undefined });
279
+ debug({ doi, adapterError: cr.adapterError }, "ids.crossref.error");
280
+ }
281
+ else {
282
+ assignCanon({ doi: doi || undefined });
283
+ debug({ doi }, "ids.crossref.miss");
284
+ }
285
+ }
286
+ else if (doi) {
287
+ assignCanon({ doi });
288
+ debug({ doi }, "ids.crossref.skipped");
289
+ }
290
+ // Consolidated landing URL synthesis (single place after DOI phase)
291
+ ensureLandingUrlFromDoi(result);
292
+ // 4) OpenAlex enrichment (wrapped)
293
+ const oaResult = await fetchOpenAlexPreferDoiThenKey(doi, externalIdType, normalizedInput, rawId);
294
+ const openalex = oaResult.ok ? oaResult.data : null;
295
+ if (!oaResult.ok && oaResult.reason !== "not_found") {
296
+ upstreamErrors.push({
297
+ source: "openalex",
298
+ status: oaResult.status,
299
+ reason: oaResult.reason,
300
+ });
301
+ }
302
+ if (openalex) {
303
+ confirmedBy.add("openalex");
304
+ const ids = openalex.ids || {};
305
+ const oaId = (ids.openalex || openalex.id || "").replace(/^https?:\/\/(www\.)?openalex\.org\//i, "");
306
+ const oaDoi = ids.doi ? normalizeDOI(ids.doi) : null;
307
+ const oaPmid = ids.pmid ? normalizePMID(ids.pmid) : null;
308
+ const oaPmcid = ids.pmcid ? normalizePMCID(ids.pmcid) : null;
309
+ const oaTitle = openalex.title || openalex.display_name || null;
310
+ if (!result.title &&
311
+ oaTitle &&
312
+ typeof oaTitle === "string" &&
313
+ oaTitle.trim()) {
314
+ assignCanon({ title: oaTitle });
315
+ }
316
+ // Merge core identifiers (DOI first, but allow OpenAlex to backfill if missing)
317
+ assignCanon({
318
+ doi: result.doi || oaDoi || undefined,
319
+ pmid: result.pmid || oaPmid || undefined,
320
+ pmcid: result.pmcid || oaPmcid || undefined,
321
+ openalexId: result.openalexId || oaId || undefined,
322
+ // license/landingUrl/journal/publisher/year only if still missing
323
+ landingUrl: result.landingUrl ||
324
+ openalex.best_oa_location?.landing_page_url ||
325
+ openalex.primary_location?.landing_page_url ||
326
+ undefined,
327
+ license: result.license ||
328
+ openalex.best_oa_location?.license ||
329
+ undefined,
330
+ journal: result.journal ||
331
+ openalex.host_venue?.display_name ||
332
+ openalex.primary_location?.source?.display_name ||
333
+ openalex.best_oa_location?.source?.display_name ||
334
+ undefined,
335
+ publisher: result.publisher || openalex.host_venue?.publisher || undefined,
336
+ year: typeof result.year === "number"
337
+ ? result.year
338
+ : openalex.publication_year || undefined,
339
+ });
340
+ // Derive biorxiv/medrxiv from DOI & venue (only if still missing)
341
+ const venueName = openalex.host_venue?.display_name || null;
342
+ const rxiv = parseBiorxivMedrxivIdFromDoi(result.doi || oaDoi || null, venueName);
343
+ if (rxiv)
344
+ assignCanon(rxiv);
345
+ }
346
+ // arXiv inference (single pass from all signals)
347
+ {
348
+ const arxiv = inferArxivId({
349
+ existing: result.arxivId ?? null,
350
+ crossref,
351
+ openalex,
352
+ doi: result.doi ?? null,
353
+ logger,
354
+ });
355
+ if (arxiv)
356
+ assignCanon({ arxivId: arxiv });
357
+ }
358
+ // 5) EuropePMC backfill for pmid/pmcid (if missing and DOI present)
359
+ if (result.doi && (!result.pmid || !result.pmcid)) {
360
+ const epResult = await resolveDoiToPmidPmcidViaEpmc(result.doi);
361
+ if (epResult.adapterError) {
362
+ upstreamErrors.push({
363
+ source: "europepmc",
364
+ status: epResult.adapterError.status,
365
+ reason: epResult.adapterError.reason,
366
+ });
367
+ }
368
+ if (epResult.result) {
369
+ confirmedBy.add("europepmc");
370
+ assignCanon({
371
+ pmid: result.pmid || epResult.result.pmid,
372
+ pmcid: result.pmcid || epResult.result.pmcid,
373
+ });
374
+ debug({ ep: epResult.result }, "ids.epmc.backfill");
375
+ }
376
+ }
377
+ // --- ABSTRACT (Crossref → OpenAlex) ---
378
+ let abstractBest;
379
+ const crAbsRaw = crossref && typeof crossref === "object" ? crossref.abstract ?? null : null;
380
+ const crAbs = stripHtmlLike(typeof crAbsRaw === "string" ? crAbsRaw : undefined);
381
+ if (crAbs) {
382
+ abstractBest = crAbs;
383
+ }
384
+ else if (openalex) {
385
+ abstractBest = reconstructOpenAlexAbstract(openalex.abstract_inverted_index);
386
+ }
387
+ if (abstractBest)
388
+ result.abstract = abstractBest;
389
+ // --- BEST LICENSE (Crossref → OpenAlex → existing) ---
390
+ const bestLicense = pickBestLicense({
391
+ crossref,
392
+ openalex,
393
+ existing: result.license ?? null,
394
+ });
395
+ if (bestLicense)
396
+ result.bestLicense = bestLicense;
397
+ // --- FIRST PUBLISHED DATE (Crossref → OpenAlex) ---
398
+ const firstPublishedAt = parseCrossrefFirstDate(crossref) ||
399
+ parseOpenAlexDate(openalex) ||
400
+ undefined;
401
+ if (firstPublishedAt)
402
+ result.firstPublishedAt = firstPublishedAt;
403
+ // 6) Last resort: arXiv → DOI, then synthesize landing URL once
404
+ if (!result.doi && result.arxivId) {
405
+ const d = await resolveArxivToDoi(result.arxivId);
406
+ if (d)
407
+ assignCanon({ doi: d });
408
+ if (result.doi)
409
+ ensureLandingUrlFromDoi(result);
410
+ debug({ doi: result.doi }, "ids.arxiv.final_doi_backfill");
411
+ }
412
+ // ---- Final normalization & flags ----
413
+ const final = normalizeIds(result);
414
+ // restore version suffixes if user provided explicit vN cores originally
415
+ const normalizeVersionSuffix = (value) => value.replace(/v(\d+)$/i, (_, d) => `v${d}`);
416
+ if (originalBiorxivId &&
417
+ /v\d+$/i.test(originalBiorxivId) &&
418
+ (!final.biorxivId || !/v\d+$/i.test(final.biorxivId))) {
419
+ final.biorxivId = normalizeVersionSuffix(originalBiorxivId);
420
+ }
421
+ if (originalMedrxivId &&
422
+ /v\d+$/i.test(originalMedrxivId) &&
423
+ (!final.medrxivId || !/v\d+$/i.test(final.medrxivId))) {
424
+ final.medrxivId = normalizeVersionSuffix(originalMedrxivId);
425
+ }
426
+ debug({ final }, "ids.final.before_apply");
427
+ // normalizeIds already applied all canonical normalization; no second pass needed
428
+ const applied = final;
429
+ // ---- Version inference (new, robust) ----
430
+ const crossrefType = crossref?.type ?? null;
431
+ const crossrefSubtype = crossref?.subtype ?? null;
432
+ const openalexVenueName = openalex?.host_venue?.display_name ?? null;
433
+ const openalexIsPreprintVenue = Boolean(/arxiv|bio?rxiv|medrxiv|osf|preprint/i.test(openalexVenueName || ""));
434
+ const versionInf = await inferVersionLabel({
435
+ doi: applied.doi ?? null,
436
+ arxivId: applied.arxivId ?? null,
437
+ biorxivId: applied.biorxivId ?? null,
438
+ medrxivId: applied.medrxivId ?? null,
439
+ landingUrl: applied.landingUrl ?? null,
440
+ journal: applied.journal ?? null,
441
+ openalexHostVenue: openalexVenueName,
442
+ }, {
443
+ crossrefType,
444
+ crossrefSubtype,
445
+ openalexVenueName,
446
+ openalexIsPreprintVenue,
447
+ });
448
+ applied.version = versionInf.label; // "published" or "vN"
449
+ applied.versionStage = versionInf.stage; // "journal" | "preprint" | "unknown"
450
+ applied.versionConfidence = versionInf.confidence;
451
+ applied.versionEvidence = versionInf.evidence;
452
+ const sourceKind = inferSourceKind({
453
+ biorxivId: applied.biorxivId ?? null,
454
+ medrxivId: applied.medrxivId ?? null,
455
+ arxivId: applied.arxivId ?? null,
456
+ pmcid: applied.pmcid ?? null,
457
+ landingUrl: applied.landingUrl ?? null,
458
+ openalexHostVenue: openalexVenueName,
459
+ });
460
+ applied.sourceKind = sourceKind;
461
+ applied.sourceName = openalexVenueName ?? applied.publisher ?? null;
462
+ // ---- Flags (single place) ----
463
+ const crossrefLic = pickCrossrefLicenseUrl(crossref);
464
+ // keep existing isPreprint logic, but you can also short-circuit using versionStage if desired
465
+ const isPreprintDoi = (d) => !!d &&
466
+ /^(10\.1101\/|10\.48550\/(?:arxiv\.|arxiv:)|10\.31219\/osf\.io\/|10\.31234\/osf\.io\/|10\.7287\/peerj\.preprints)/i.test(d);
467
+ const isPreprint = computeIsPreprint(applied, isPreprintDoi);
468
+ applied.isPreprint = isPreprint;
469
+ const oaBest = openalex?.best_oa_location;
470
+ const oaAny = (openalex?.locations || []).some((l) => l?.is_oa === true);
471
+ const isOpenAccess = computeIsOpenAccess({
472
+ oaBest,
473
+ oaAny,
474
+ isPreprint,
475
+ license: applied.license,
476
+ crossrefLic,
477
+ });
478
+ applied.isOpenAccess = !!isOpenAccess;
479
+ // bestPdfUrl (single place)
480
+ let bestPdfUrl = oaBest?.pdf_url ??
481
+ (openalex?.locations || []).find((l) => l?.pdf_url)?.pdf_url ??
482
+ synthesizeBestPdfUrl(applied) ??
483
+ undefined;
484
+ if (bestPdfUrl)
485
+ applied.bestPdfUrl = bestPdfUrl;
486
+ applied.abstract = result.abstract || undefined;
487
+ applied.isOpenAccess = !!applied.isOpenAccess;
488
+ applied.bestLicense =
489
+ result.bestLicense || applied.license || undefined;
490
+ applied.firstPublishedAt =
491
+ result.firstPublishedAt || undefined;
492
+ applied.confirmedBy = [...confirmedBy];
493
+ if (upstreamErrors.length > 0) {
494
+ applied.upstreamErrors = upstreamErrors;
495
+ }
496
+ return { completeIds: applied };
497
+ }
498
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/works/id/resolveIds/index.ts"],"names":[],"mappings":"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"}