gcheck-core
v0.4.2
Published
Checklist engine of the Duniter/Ğ1 ecosystem, with the official gcheck checklists embedded
Maintainers
Readme
gcheck-core
Checklist engine of the Duniter/Ğ1 ecosystem: it reads a gcheck checklist (YAML or JSON), resolves its options, selects the questions to ask and turns the answers into a verdict (pass, warning or fail).
The official checklists (member certification, smith commitments…) are embedded. They come from the source of truth, g1_monetary_license: updating this dependency is enough to get their latest questions. An application can also provide its own checklists, instead of or on top of the embedded ones.
The Rust crate gcheck-core offers the same API and the
same checklists; both engines are checked against shared test cases, so they cannot drift apart.
Usage
import { createEngine, Catalog, SMITH_ASPIRANT } from "gcheck-core";
const catalog = Catalog.embedded();
// …optionally, the application's own checklists, which take precedence:
// catalog.addContent("my-checklist", myYamlOrJson);
const checklist = catalog.get(SMITH_ASPIRANT, "fr");
const engine = createEngine();
const prepared = await engine.prepare(checklist.content);
if (!prepared.ok) throw new Error(prepared.error.message);
const quiz = prepared.value;
const answers = {};
for (const question of quiz.questions) {
answers[question.id] = ask(question.text); // your UI here
}
const verdict = engine.evaluate(quiz, answers); // "pass" | "warning" | "fail"
for (const issue of verdict.issues) {
console.log(issue.text, "expected:", issue.expected, issue.message);
}quiz.checklistHashis the content hash of the checklist that was gone through: store it with the result, compare it later to know whether the checklist changed since. The Rust engine computes the same value.allChecklists()lists the embedded checklists,getChecklist(id, lang)picks one (falling back to English, then to any available language).externalChecklist(id, content)validates a checklist provided by the application.
Checklist format
Checklists follow the checklist schema published by the source of truth.
License
AGPL-3.0-or-later: GNU Affero General Public License, version 3 or (at your option) any later version.
