Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clairefro/etymo-js
A NodeJS and browser wrapper for fetching etymology information in various langauges from Douglas Harper's wonderful Online Etymology Dictionary
https://github.com/clairefro/etymo-js
Last synced: 3 days ago
JSON representation
A NodeJS and browser wrapper for fetching etymology information in various langauges from Douglas Harper's wonderful Online Etymology Dictionary
- Host: GitHub
- URL: https://github.com/clairefro/etymo-js
- Owner: clairefro
- License: mit
- Created: 2024-02-24T19:12:04.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-02-24T20:28:13.000Z (11 months ago)
- Last Synced: 2025-01-10T02:17:55.335Z (6 days ago)
- Language: TypeScript
- Homepage:
- Size: 83 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# etymo-js
A NodeJS and browser wrapper for fetching etymology information in various languages from Douglas Harper's wonderful Online Etymology Dictionary (https://www.etymonline.com)
Please refer to Online Etymology Dictionary's [Terms of Service](https://www.etymonline.com/legal/terms) to make sure you are not infringing intellectual property rights with your use case, and please be kind to their servers.
Consider donating [directly to Douglas Harper](https://www.patreon.com/etymonline?utm_source=etymonline.com&utm_campaign=footer_link&utm_medium=website) for maintaining an excellent word resource.
## Get started
Add `etymo-js` to your Node project
```bash
npm install etymo-js
``````js
import { Etymo } from "etymo-js";
// initialize
const etymo = new Etymo();async function run() {
const results = await etymo.search("remember");
console.log(results);
}run();
```Returns an array of search results, with the first item being most relevant:
```json
[
{
"term": "remember (v.)",
"def": "mid-14c., remembren, \"keep or bear (something or someone) in mind, retain in the memory, preserve unforgotten,\" from Old French remembrer [...]",
"path": "/word/disremember#etymonline_v_11486",
"id": "11486"
},
{
"term": "*(s)mer- (1)",
"def": "Proto-Indo-European root meaning \"to remember.\" \n' +
'It forms all or part of: commemorate; commemoration; mourn; memo; memoir; memorable; memorandum; memorial [...]"
"path": "/word/*%28s%29mer-#etymonline_v_53458",
"id": "53458"
},
{
"term": "remembrance (n.)",
"def": "c. 1300, remembraunce, \"a memory, recollection,\" from Old French remembrance (11c.), from remembrer (see remember). From late 14c. as \"consideration, reflection; present consciousness [...]",
"path": "/word/remembrance#etymonline_v_37059",
"id": "37059"
} ...
]
```## Usage
Note - requires internet connection to retrieve data.
### .search()
**Basic search**
Returns array of search result obejcts (`{ term, def, path, id}`), ordered by relevance to search term
```js
const res = await etymo.search("remember");
``````json
[
{
"term": "remember (v.)",
"def": "mid-14c., remembren, \"keep or bear (something or someone) in mind, retain in the memory, preserve unforgotten,\" from Old French remembrer [...]",
"path": "/word/disremember#etymonline_v_11486",
"id": "11486"
}, ...
]
```**Multi-word search**
It's fine to use spaces in the search term
```js
const res = await etymo.search("back seat");
``````json
[
{
"term": "back seat (n.)",
"def": "also back-seat, 1832, originally of coaches, from back (adj.) + seat (n.). Used figuratively for \"less or least prominent position\" by 1868. Back-seat driver \"passenger who gives the driver unwanted advice\" is [...]",
"path": "/word/back%20seat#etymonline_v_42318",
"id": "42318"
}, ...
]
```### .get()
Gets an entry by its path. You can also specifify the language of the definition returned.
Returns a single entry (`{ term, def, path, id}`)
**get English definition**
```js
const res = await etymo.get("/word/remember#etymonline_v_10402");
``````json
{
"term": "remember (v.)",
"def": "mid-14c., remembren, \"keep or bear (something or someone) in mind, retain in the memory, preserve unforgotten,\" from Old French remembrer \"remember, recall, bring to mind\" (11c.)[...]",
"path": "/word/remember#etymonline_v_10402",
"id": "10402"
}
```**get definition in another language**
You can specify an option `lang` parameter . See avaialable languages below. Note that the `lang` parameter will override any language pre-pended in the provided `path`.
```js
// get definition in Japanese
const res = await etymo.get("/word/remember#etymonline_v_10402", {
lang: "jp",
});
``````json
{
"term": "remember (v.)",
"def": "14世紀中頃、remembren は、「(何かや誰かを)心に留める、記憶に保つ、忘れないようにする」という意味で使われました。これは、古フランス語の remembrer「思い出す、思い起こす」(11世紀)から来ており、ラテン語の rememorari「思い出す、記憶する」から派生したものです。これは、re-「再び」(re- を参照) [...]",
"path": "/jp/word/remember#etymonline_v_10402",
"id": "10402"
}
```Supported languages
| Language | Two-Letter Code |
|-------------|-----------------|
| English | `en` |
| Spanish | `es` |
| French | `fr` |
| German | `de` |
| Italian | `it` |
| Portuguese | `pt` |
| Japanese | `ja` |
| Chinese | `zh` |
| Korean | `ko` |### .trending()
Returns a list of terms currently trending on etymonline.com
```js
const res = await etymo.trending();// => ['nepotism','nickelodeon','hero','island','ego','fast','spell','gospel','father','confidence']
```## Development
Package created with [@el3um4s/typescript-npm-package-starter](https://www.npmjs.com/package/@el3um4s/typescript-npm-package-starter)
Ignore the TS errors in the test file 🤷 Jest doesn't seem to care.
### Build the package
Run
```bash
npm run build
```### Test the package
You can test the code with [Jest](https://jestjs.io/)
```bash
npm test
```You can find the test coverage in `coverage/lcov-report/index.html`.
### Check dependencies
You can check and upgrade dependencies to the latest versions, ignoring specified versions. with [npm-check-updates](https://www.npmjs.com/package/npm-check-updates):
```bash
npm run check-updates
```You can also use `npm run check-updates:minor` to update only patch and minor.
Instead `npm run check-updates:patch` only updates patch.
### Publish
First commit the changes to GitHub. Then login to your [NPM](https://www.npmjs.com) account (If you don’t have an account you can do so on [https://www.npmjs.com/signup](https://www.npmjs.com/signup))
```bash
npm login
```Then run publish:
```bash
npm publish
```If you're using a scoped name use:
```bash
npm publish --access public
```### Bumping a new version
To update the package use:
```bash
npm version patch
```and then
```bash
npm publish
```