@flasd/spaced-repetition
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

spaced-repetition

Simple spaced-repetition algorithm based on supermemo 2.

Build Status Coverage Status npm version npm downloads per month

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. 🚀

Package Sidebar

Install

npm i @flasd/spaced-repetition

Weekly Downloads

6

Version

0.1.1

License

MIT

Unpacked Size

15.5 kB

Total Files

13

Last publish

Collaborators

  • husscode