{"_id":"@altmetric/identifiers","name":"@altmetric/identifiers","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@altmetric/identifiers","version":"1.0.0","description":"Extract scholarly identifiers (DOI, arXiv, ORCID, PubMed, Bibcode, Handle, NCT, RePEc, URN)","type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","import":"./src/index.js"},"./arxiv":{"types":"./types/arxiv.d.ts","import":"./src/arxiv.js"},"./bibcode":{"types":"./types/bibcode.d.ts","import":"./src/bibcode.js"},"./doi":{"types":"./types/doi.d.ts","import":"./src/doi.js"},"./handle":{"types":"./types/handle.d.ts","import":"./src/handle.js"},"./nct":{"types":"./types/nct.d.ts","import":"./src/nct.js"},"./orcid":{"types":"./types/orcid.d.ts","import":"./src/orcid.js"},"./pubmed":{"types":"./types/pubmed.d.ts","import":"./src/pubmed.js"},"./repec":{"types":"./types/repec.d.ts","import":"./src/repec.js"},"./urn":{"types":"./types/urn.d.ts","import":"./src/urn.js"}},"keywords":["doi","arxiv","orcid","pubmed","bibcode","handle","nct","repec","urn","identifiers","scholarly"],"repository":{"type":"git","url":"git+https://github.com/altmetric/identifiers-js.git"},"bugs":{"url":"https://github.com/altmetric/identifiers-js/issues"},"author":{"name":"Altmetric LLP"},"license":"MIT","publishConfig":{"access":"public"},"scripts":{"lint":"eslint src tests","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","pretest":"npm run lint"},"devDependencies":{"@eslint/js":"^9.15.0","eslint":"^9.15.0","globals":"^15.12.0","jest":"^29.7.0"},"gitHead":"c75aac4e6f71255b4a584230d2f947595de65da7","_id":"@altmetric/identifiers@1.0.0","homepage":"https://github.com/altmetric/identifiers-js#readme","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-v/pMCH0eL8HyliI7ply3bL5xbl1oZipMP3ZRUJrqNXLqPL5Hp/sbgc2GOZiwX/Qn+rtAK1I5AEyj/D6X4QsHlg==","shasum":"fd697275ecececa82c92163a7edce31ef370bdda","tarball":"https://registry.npmjs.org/@altmetric/identifiers/-/identifiers-1.0.0.tgz","fileCount":23,"unpackedSize":15438,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCsuMx+T7wBwvs5MhSb7Bnuo9g1p/+xUv3gIAjqVJzM4AIgaUkpuIxS/dFP+KB2EduBnHyf9+pcsIMp3aWVsBuoPUk="}]},"_npmUser":{"name":"jbilbo","email":"jbilbo@gmail.com"},"directories":{},"maintainers":[{"name":"jbilbo","email":"jbilbo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/identifiers_1.0.0_1773938013653_0.2024874544083941"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-19T16:33:33.539Z","1.0.0":"2026-03-19T16:33:33.803Z","modified":"2026-03-19T16:33:34.020Z"},"maintainers":[{"name":"jbilbo","email":"jbilbo@gmail.com"}],"description":"Extract scholarly identifiers (DOI, arXiv, ORCID, PubMed, Bibcode, Handle, NCT, RePEc, URN)","homepage":"https://github.com/altmetric/identifiers-js#readme","keywords":["doi","arxiv","orcid","pubmed","bibcode","handle","nct","repec","urn","identifiers","scholarly"],"repository":{"type":"git","url":"git+https://github.com/altmetric/identifiers-js.git"},"author":{"name":"Altmetric LLP"},"bugs":{"url":"https://github.com/altmetric/identifiers-js/issues"},"license":"MIT","readme":"# @altmetric/identifiers\n\n[![CI](https://github.com/altmetric/identifiers-js/actions/workflows/ci-tests.yml/badge.svg)](https://github.com/altmetric/identifiers-js/actions/workflows/ci-tests.yml)\n[![npm](https://img.shields.io/npm/v/@altmetric/identifiers)](https://www.npmjs.com/package/@altmetric/identifiers)\n\nExtract scholarly identifiers from text strings. Supports Node.js 18, 20, and 22.\n\n## Supported Identifiers\n\n- **DOI** - Digital Object Identifiers (including ISBN-As)\n- **arXiv** - arXiv preprint identifiers (pre-2007 and post-2007 formats)\n- **ORCID** - Open Researcher and Contributor IDs (with checksum validation)\n- **PubMed** - PubMed identifiers\n- **Bibcode** - ADS Bibliographic Codes\n- **Handle** - Handle System identifiers\n- **NCT** - National Clinical Trial identifiers\n- **RePEc** - Research Papers in Economics identifiers\n- **URN** - Uniform Resource Names\n\n## Installation\n\n```shell\nnpm install @altmetric/identifiers\n```\n\n## Usage\n\n### Import individual identifiers (recommended for tree-shaking)\n\n```javascript\nimport { extract } from \"@altmetric/identifiers/doi\";\n\nextract(\"This is a DOI: 10.1234/foo.bar\");\n//=> [\"10.1234/foo.bar\"]\n```\n\n### Import multiple identifiers\n\n```javascript\nimport { extract as extractDoi } from \"@altmetric/identifiers/doi\";\nimport { extract as extractArxiv } from \"@altmetric/identifiers/arxiv\";\n\nextractDoi(\"10.1234/foo.bar\");\n//=> [\"10.1234/foo.bar\"]\n\nextractArxiv(\"arXiv:1501.00001v2\");\n//=> [\"1501.00001v2\"]\n```\n\n### Import all identifiers\n\n```javascript\nimport * as identifiers from \"@altmetric/identifiers\";\n\nidentifiers.doi.extract(\"10.1234/foo.bar\");\n//=> [\"10.1234/foo.bar\"]\n\nidentifiers.arxiv.extract(\"math.GT/0309136\");\n//=> [\"math.GT/0309136\"]\n\nidentifiers.orcid.extract(\"0000-0002-0488-8591\");\n//=> [\"0000-0002-0488-8591\"]\n```\n\n### URN special case\n\nThe URN module exports both `extract()` (normalized) and `scan()` (raw):\n\n```javascript\nimport { extract, scan } from \"@altmetric/identifiers/urn\";\n\nscan(\"URN:FOO:BAR\");\n//=> [\"URN:FOO:BAR\"]\n\nextract(\"URN:FOO:BAR\");\n//=> [\"urn:foo:BAR\"]\n```\n\n## TypeScript\n\nType definitions are included for all modules.\n\n```typescript\nimport { extract } from \"@altmetric/identifiers/doi\";\n\nconst dois: string[] = extract(\"10.1234/foo\");\n```\n\n## Migration from individual packages\n\nThis package replaces the following individual packages:\n\n| Old package | New import |\n|---|---|\n| `identifiers-arxiv` | `@altmetric/identifiers/arxiv` |\n| `identifiers-bibcode` | `@altmetric/identifiers/bibcode` |\n| `identifiers-doi` | `@altmetric/identifiers/doi` |\n| `identifiers-handle` | `@altmetric/identifiers/handle` |\n| `identifiers-nct` | `@altmetric/identifiers/nct` |\n| `identifiers-orcid` | `@altmetric/identifiers/orcid` |\n| `identifiers-pubmed` | `@altmetric/identifiers/pubmed` |\n| `identifiers-repec` | `@altmetric/identifiers/repec` |\n| `identifiers-urn` | `@altmetric/identifiers/urn` |\n\nThe API is the same — every module exports an `extract()` function (URN also exports `scan()`). The only change is the import path and switching from CommonJS `require()` to ES module `import`:\n\n```javascript\n// Before (CommonJS)\nconst doi = require(\"identifiers-doi\");\ndoi.extract(\"10.1234/foo\");\n\n// After (ES modules)\nimport { extract } from \"@altmetric/identifiers/doi\";\nextract(\"10.1234/foo\");\n```\n\n## Other versions\n\nWe also maintain versions of these libraries for [Ruby](https://github.com/altmetric/identifiers) and [PHP](https://github.com/altmetric/php-identifiers).\n\n## License\n\nCopyright © 2017-2026 [Altmetric LLP](https://www.altmetric.com)\n\nDistributed under the [MIT License](http://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_rev":"1-3f7c032a4902c181ea5d17e6329335d7"}