https://github.com/flasd/spaced-repetition
Simple spaced repetition algorithm
https://github.com/flasd/spaced-repetition
Last synced: about 1 year ago
JSON representation
Simple spaced repetition algorithm
- Host: GitHub
- URL: https://github.com/flasd/spaced-repetition
- Owner: flasd
- License: mit
- Created: 2020-11-02T21:00:05.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-11-02T21:09:21.000Z (over 5 years ago)
- Last Synced: 2025-04-10T02:08:35.269Z (about 1 year ago)
- Language: TypeScript
- Size: 112 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# spaced-repetition
Simple spaced-repetition algorithm based on supermemo 2.
[](https://travis-ci.org/flasd/spaced-repetition)
[](https://coveralls.io/github/flasd/spaced-repetition?branch=master)
[](https://www.npmjs.com/package/@flasd/spaced-repetition)
[](https://www.npmjs.com/package/@flasd/spaced-repetition)
## 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
```html
const { SpacedRepetition, getDueCards } = window.SpacedRepetition;
```
Or import it as a module.
```javascript
const { SpacedRepetition } = require('@flasd/spaced-repetition');
// or, in ES6+
import { SpacedRepetition } from '@flasd/spaced-repetition';
```
This module is [UMD](https://github.com/umdjs/umd) compliant, therefore it's compatible with RequireJs, AMD, CommonJs 1 & 2, etc.
## API & Usage.
#### SpacedRepetition class
Method signature:
```typescript
new SpacedRepetition(): SpacedRepetition;
```
```javascript
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:
```typescript
getDueCards(
cards: ISpacedRepetitionCard[],
reviews: ISpacedRepetitionReview[],
): Array<[ISpacedRepetitionCard, TRepetition]>;
```
This method returns a list of cards that are due (or overdue) for review:
```javascript
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](https://github.com/flasd) under the [MIT License](https://github.com/flasd/spaced-repetition/blob/master/LICENSE.md). Go Crazy. :rocket: