https://github.com/kjczarne/refinery-core
Core shared elements of Refinery
https://github.com/kjczarne/refinery-core
Last synced: 3 months ago
JSON representation
Core shared elements of Refinery
- Host: GitHub
- URL: https://github.com/kjczarne/refinery-core
- Owner: kjczarne
- Created: 2020-09-16T22:31:42.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-09-19T14:12:24.000Z (over 4 years ago)
- Last Synced: 2025-01-23T04:11:57.231Z (5 months ago)
- Language: TypeScript
- Size: 101 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Refinery Core
Refinery is a lightweight adapter framework designed primarily for extracting information snippets that can be paired into flashcards. It extracts data from various sources, e.g. highlight from iBooks and places a highlight+note pair in a self-hosted CouchDB instance. The information from the database can then be *refined* into a different format, e.g. a flashcard deck.
This repo contains core shared elements used the Refinery API repo. This covers stuff like Engines, `configProvider`, `IRecord` interface and `Record` class as well as SQL utils and general utility functions (including logger).
## User-defined Engines
To declare your own Engines, you can inherit from the `BaseEngine` class and implement `load()` method for ingress and `exportCallback()` for egress. Then, import your engines in `yourEngines.ts` in the base repository and pass the engine type to the exported list. Don't forget to run `tsc`!
Engines need to be defined by inheriting from the `BaseEngine` class and implementing a few details:
```typescript
import { BaseEngine } from 'refinery-core';
import { Record } from 'refinery-core';export class FakeEngine extends BaseEngine {
static descriptor = 'fake' // Human-readable description for the logger (debugging)static arg = 'fake'; // CLI arg and API route ID
static hasIngress = false; // set to true if data is importable
static hasEgress = true; // set to true if data is exportableasync load(): Promise { // implement this function for import
let pr: Promise = new Promise((resolve, reject) => {});
return pr;
}exportCallback(output: string, records: Array, flipped: boolean) {
return new Array(); // implement this function for export
}}
export default FakeEngine;
```