@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(
      cardsISpacedRepetitionCard[],
      reviewsISpacedRepetitionReview[],
    )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. 🚀

    Install

    npm i @flasd/spaced-repetition

    DownloadsWeekly Downloads

    6

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    15.5 kB

    Total Files

    13

    Last publish

    Collaborators

    • husscode