retainr-js
v0.1.1
Published
Una librería para implementar sistemas de repaso espaciado (spaced repetition) en JavaScript
Maintainers
Readme
Retainr.js
Una librería para implementar sistemas de repaso espaciado (spaced repetition) en JavaScript.
Instalación
npm install retainr-jsUso
import { Card, SM2Scheduler } from 'retainr-js';
// Crear una tarjeta de vocabulario
class VocabularyCard extends Card {
constructor(word, translation, example) {
super();
this.metadata = {
word,
translation,
example,
lastReviewQuality: null
};
}
getWord() {
return this.metadata.word;
}
getTranslation() {
return this.metadata.translation;
}
getExample() {
return this.metadata.example;
}
}
// Crear un scheduler
const scheduler = new SM2Scheduler();
// Crear una tarjeta de vocabulario
const card = new VocabularyCard(
'serendipity',
'serendipia',
'Finding this book was pure serendipity.'
);
// Revisar la tarjeta
const currentDate = new Date();
scheduler.calculateNextInterval(card, 5, currentDate); // Calidad 5 (perfecto)
// Obtener tarjetas pendientes de revisión
const cardsToReview = scheduler.getCardsToReview([card], currentDate);Características
- Implementación del algoritmo SuperMemo 2 (SM2)
- Sistema de tarjetas flexible con metadata
- Serialización/deserialización de tarjetas
- Cálculo automático de intervalos de repaso
API
Card
class Card {
constructor();
getState();
getLastReview();
getNextReview();
getReviewCount();
getMetadata();
updateReview(quality, currentDate, nextDate, metadata, resetCount);
serialize();
deserialize(serializedState);
}SM2Scheduler
class SM2Scheduler extends Scheduler {
calculateNextInterval(card, quality, currentDate);
getCardsToReview(cards, currentDate);
}Licencia
MIT
