
Security News
Bun 1.2.19 Adds Isolated Installs for Better Monorepo Support
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.
@koale/worms-js-sdk
Advanced tools
TypeScript SDK for accessing the World Register of Marine Species (WoRMS) APIs. Fully typed based on the official WoRMS REST API Specification.
npm install @koale/worms-js-sdk
# or
yarn add @koale/worms-js-sdk
# or
pnpm add @koale/worms-js-sdk
import { WormsClient, AphiaRecord } from '@koale/worms-js-sdk';
const worms = new WormsClient();
// Use the default instance
const records = await worms.searchByScientificName("Homo sapiens");
console.log(`Found ${records.length} records`);
// Search with filters
const marineRecords = await worms.searchByScientificName("Carcharodon", {
like: true, // Use LIKE for partial search
marineOnly: true, // Only marine organisms
extantOnly: true, // Only non-extinct organisms
pagination: {
autoIterate: true, // Automatically collect all results
maxResults: 100 // Limit to 100 results
}
});
// Search by date range
const recentRecords = await worms.getRecordsByDate("2023-01-01", {
endDate: "2023-12-31",
marineOnly: true,
pagination: { autoIterate: true }
});
import { WormsClient } from '@koale/worms-js-sdk';
const worms = new WormsClient();
// Get all children of a taxon
const allChildren = await worms.getChildren(2, {
marineOnly: true,
pagination: { autoIterate: true }
});
// Get only the first 50 results
const firstBatch = await worms.getChildren(2, {
pagination: { autoIterate: false },
offset: 1
});
// Get complete statistics ( this is a wrapper around the other methods, so can be slow)
const stats = await worms.getRecordStats(105838);
console.log(`Children: ${stats.childrenCount}`);
console.log(`Synonyms: ${stats.synonymsCount}`);
console.log(`Vernaculars: ${stats.vernacularsCount}`);
console.log(`Distributions: ${stats.distributionsCount}`);
console.log(`Sources: ${stats.sourcesCount}`);
// Get full record (JSON-LD format)
const fullRecord = await worms.getFullRecord(105838);
console.log(`Full record with linked data: ${fullRecord.scientificname}`);
Method | Description | Pagination |
---|---|---|
searchByScientificName() | Search by scientific name | ✅ |
searchByVernacular() | Search by vernacular name | ✅ |
searchByScientificNames() | Batch search by scientific names | ❌ |
fuzzyMatch() | Fuzzy search with TAXAMATCH algorithm | ❌ |
getRecordsByDate() | Get records by date range | ✅ |
Method | Description | Pagination |
---|---|---|
getRecord() | Get record by AphiaID | ❌ |
getRecords() | Get multiple records by AphiaIDs | ❌ |
getFullRecord() | Get full record (JSON-LD) | ❌ |
getAphiaId() | Get AphiaID by name | ❌ |
getName() | Get name by AphiaID | ❌ |
exists() | Check if AphiaID exists | ❌ |
Method | Description | Pagination |
---|---|---|
getClassification() | Complete classification | ❌ |
getChildren() | Direct children | ✅ |
getSynonyms() | Synonyms | ✅ |
getVernaculars() | Vernacular names | ❌ |
Method | Description | Pagination Support |
---|---|---|
getDistributions() | Geographic distributions | ❌ |
getSources() | Sources and references | ❌ |
Method | Description | Pagination Support |
---|---|---|
getAttributeKeys() | Get attribute keys by ID | ❌ |
getAttributeValues() | Get attribute values by category | ❌ |
getAttributes() | Get attributes by AphiaID | ❌ |
getAphiaIdsByAttribute() | Get AphiaIDs by attribute | ✅ |
Method | Description | Pagination Support |
---|---|---|
getTaxonRanksById() | Get taxonomic ranks by ID | ❌ |
getTaxonRanksByName() | Get taxonomic ranks by name | ❌ |
getRecordsByTaxonRank() | Get records by taxonomic rank | ✅ |
Method | Description |
---|---|
getExternalId() | Get external ID by AphiaID |
getRecordByExternalId() | Get record by external ID |
Supported external ID types: algaebase
, bold
, dyntaxa
, fishbase
, iucn
, lsid
, ncbi
, tsn
, gisd
These are utility methods that are wrappers around the other methods.
Method | Description |
---|---|
getRecordStats() | Get complete statistics for a record |
getAllResults() | Get all results from a paginated function |
exists() | Check if an AphiaID exists |
import { WormsError } from '@koale/worms-js-sdk';
try {
const record = await worms.getRecord(999999999);
} catch (error) {
if (error instanceof WormsError) {
console.error(`WoRMS Error: ${error.message}`);
console.error(`Status: ${error.status}`);
} else {
console.error('Unknown error:', error);
}
}
const client = new WormsClient({
baseUrl: "https://www.marinespecies.org/rest",
fetchOptions: {
headers: {
"User-Agent": "MyApp/1.0",
"Accept": "application/json"
},
timeout: 10000
}
});
All types are fully typed:
import type {
AphiaRecord,
Classification,
Distribution,
Vernacular,
Source,
AphiaRank,
AttributeKey,
AttributeValue,
Attribute,
AphiaAttributeSet,
AphiaRecordFull,
WormsClientOptions,
PaginationOptions,
PaginatedResult,
WormsError
} from '@koale/worms-js-sdk';
Check the examples/index.ts file for complete usage examples.
Run the examples:
pnpm run example
# or
tsx examples/index.ts
MIT License. See LICENSE for more details.
For issues or questions:
FAQs
JS SDK for the World Register of Marine Species API
The npm package @koale/worms-js-sdk receives a total of 46 weekly downloads. As such, @koale/worms-js-sdk popularity was classified as not popular.
We found that @koale/worms-js-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.
Security News
Popular npm packages like eslint-config-prettier were compromised after a phishing attack stole a maintainer’s token, spreading malicious updates.
Security News
/Research
A phishing attack targeted developers using a typosquatted npm domain (npnjs.com) to steal credentials via fake login pages - watch out for similar scams.