@flasd/spaced-repetition
v0.1.1
Published
Simple spaced repetition algorithm
Downloads
18
Maintainers
Readme
spaced-repetition
Simple spaced-repetition algorithm based on supermemo 2.
Installation
Install the latest version of spaced-repetition:
yarn add @flasd/spaced-repetition
// or
npm install @flasd/spaced-repetition --save
Now you can use it in your index.html
<script
type="text/javascript"
src="./node_modules/@flasd/spaced-repetition/dist/index.umd.js"
></script>
const { SpacedRepetition, getDueCards } = window.SpacedRepetition;
Or import it as a module.
const { SpacedRepetition } = require('@flasd/spaced-repetition');
// or, in ES6+
import { SpacedRepetition } from '@flasd/spaced-repetition';
This module is UMD compliant, therefore it's compatible with RequireJs, AMD, CommonJs 1 & 2, etc.
API & Usage.
SpacedRepetition class
Method signature:
new SpacedRepetition(): SpacedRepetition;
import { SpacedRepetition } from '@flasd/spaced-repetition';
const sr = new SpacedRepetition();
// or
const sr = new SpacedRepetition({
debug: false,
nowFn: () => Date.now(),
});
nowFunction
should be a function that returns a number in milliseconds. debug
flag will enable console.logs with extra information.
getDueCards();
Method signature:
getDueCards(
cards: ISpacedRepetitionCard[],
reviews: ISpacedRepetitionReview[],
): Array<[ISpacedRepetitionCard, TRepetition]>;
This method returns a list of cards that are due (or overdue) for review:
import { SpacedRepetition, getDueCards } from '@flasd/spaced-repetition';
const cards = [{ id: '1' }, { id: '2' }, { id: '3' }];
const reviews = [
{ card: '1', timestamp: Date.now(), difficulty: 1 },
{ card: '2', timestamp: Date.now(), difficulty: 2 },
{ card: '3', timestamp: Date.now(), difficulty: 3 },
];
new SpacedRepetition().getDueCards(cards, reviews);
// « [[{ id: '1' }, 18568], { id: '2' }, 18565]
getDueCards(cards, reviews);
// « [[{ id: '1' }, 18568], { id: '2' }, 18565]
The return value is a tupple [ISpacedRepetitionCard, TRepetition]
, where TRepetition is the next day (counting since date epoch, as a integer) that this card should be repeated. Only cards with TRepetition <= today will be returned.
Copyright & License
Copyright (c) 2020 Marcel de Oliveira Coelho under the MIT License. Go Crazy. :rocket: