fsrs-algorithm
Version:
Free Spaced Repetition Scheduler (FSRS) algorithm implementation in TypeScript
65 lines • 2.47 kB
TypeScript
import { Card, FSRSParameters, SchedulingCards, RawCardData } from "./types";
export declare class FSRS {
private parameters;
constructor(parameters?: Partial<FSRSParameters>);
/**
* Creates a new, empty card object.
* @param now The current date, defaults to new Date().
* @returns A new Card object.
*/
createEmptyCard(now?: Date): Card;
/**
* Generates scheduling information for all possible ratings for a given card.
* @param card The card to schedule.
* @param now The current date of the review.
* @returns An object containing the card and review log for each rating.
*/
schedule(card: Card, now?: Date): SchedulingCards;
/**
* Converts raw card data, validates it, and then schedules it.
* @param rawData The raw card data from a database or API.
* @param now The current date of the review.
* @returns Scheduling cards for all ratings.
*/
scheduleRawCard(rawData: RawCardData, now?: Date): SchedulingCards;
/**
* Converts and validates raw card data into a formal Card object.
* @param rawData The raw card data.
* @returns A validated Card object.
*/
convertRawCard(rawData: RawCardData): Card;
/**
* Batch converts and validates multiple raw cards.
* @param rawDataArray Array of raw card data.
* @returns An object containing arrays of valid cards and any errors encountered.
*/
convertRawCardBatch(rawDataArray: RawCardData[]): {
valid: Card[];
errors: Array<{
index: number;
error: string;
data: RawCardData;
}>;
};
/**
* Calculates the probability of recalling a card at a given time.
* @param card The card to calculate retrievability for.
* @param now The date for which to calculate retrievability.
* @returns A number between 0 and 1, representing the probability of recall.
*/
getRetrievability(card: Card, now?: Date): number | undefined;
private buildSchedulingCards;
private calculateScheduledCard;
private buildReviewLog;
private initStability;
private initDifficulty;
private nextDifficulty;
private nextStability;
private nextInterval;
private retrievability;
private addDays;
private getRatingKey;
updateParameters(newParameters: Partial<FSRSParameters>): void;
getParameters(): FSRSParameters;
}
//# sourceMappingURL=fsrs.d.ts.map