The goal of this repository and the overall idea of separating neume-network-core's source from its strategies, is to allow any type of music platform to quickly define their on-chain schema - allowing them to re-use neume-network-core to index and distribute their and other platform's music ecosystem.
npm i
will
download the submodule and install its dependenciesnpm run test
a properly set up .env
is necessary. We
recommend softlinking from core's .env
file using ln
Checkout the quickstart guide for a in-depth walkthrough.
To implement a strategy with maximum efficiency, we recommend doing all on-chain and off-chain requests using the extraction Worker API.
An extractor strategy must implement the following interface:
interface Extractor {
name: String;
init(args...): Object<messages: Message[], write: String>;
update(message: Message): Object<messages: Message[], write: String>;
}
Where Message
is defined as any JSON object compliant to the definitions in
neume-network/message-schema.
A neume-network extraction message is layed out similarly to a react.js component in that foundamentally, it is a component implementing lifecycle methods.
init
function is called when the component is mounted into the core
process.init
task, update
is called until update
's
returned messages
list is empty.Below is a visual overview of a neume-network extractor component's lifecycle.
A transformer strategy must implement the following interface:
interface Transformer {
name: String;
onLine(line: String): String | null | undefined;
onError(error: Error): any;
onClose(): String | null | undefined;
}
Where Message
is defined as any JSON object compliant to the definitions in
neume-network/message-schema.