LoopKitType Reference
Configuration
DeckConfig, SessionOptions, and related configuration types
DeckConfig
Complete configuration for a deck's SRS behavior. All fields have sensible defaults.
interface DeckConfig {
newCardsPerDay: number; // Default: 20
maxReviewsPerDay: number; // Default: 200
learningSteps: number[]; // Default: [1, 10] (minutes)
graduatingInterval: number; // Default: 1 (days)
easyInterval: number; // Default: 4 (days)
relearningSteps: number[]; // Default: [10] (minutes)
lapseNewInterval: number; // Default: 0.7 (multiplier)
lapseMinInterval: number; // Default: 1 (days)
maxInterval: number; // Default: 36500 (~100 years)
startingEaseFactor: number; // Default: 2.5
hardIntervalMultiplier: number; // Default: 1.2
easyBonus: number; // Default: 1.3
newCardOrder: NewCardOrder; // Default: 'added'
reviewOrder: ReviewOrder; // Default: 'due'
nextDayStartsAt: number; // Default: 4 (4 AM)
enableFuzz: boolean; // Default: true
}Field Details
| Field | Type | Default | Description |
|---|---|---|---|
newCardsPerDay | number | 20 | Maximum new cards introduced per day |
maxReviewsPerDay | number | 200 | Maximum reviews per day |
learningSteps | number[] | [1, 10] | Learning step durations in minutes |
graduatingInterval | number | 1 | Days until first review after graduating |
easyInterval | number | 4 | Days until first review when graduating via "easy" |
relearningSteps | number[] | [10] | Relearning step durations in minutes |
lapseNewInterval | number | 0.7 | Interval multiplier on lapse (0–1) |
lapseMinInterval | number | 1 | Minimum interval after lapse in days |
maxInterval | number | 36500 | Maximum interval in days (~100 years) |
startingEaseFactor | number | 2.5 | Initial ease factor for new cards |
hardIntervalMultiplier | number | 1.2 | Interval multiplier for "hard" grade |
easyBonus | number | 1.3 | Extra multiplier for "easy" grade |
newCardOrder | NewCardOrder | 'added' | Order for introducing new cards |
reviewOrder | ReviewOrder | 'due' | Order for review cards |
nextDayStartsAt | number | 4 | Hour when a new "study day" begins (0–23) |
enableFuzz | boolean | true | Add ±5% interval variance |
Order Types
type NewCardOrder = 'added' | 'random';
type ReviewOrder = 'due' | 'random' | 'relative-overdueness';DEFAULT_DECK_CONFIG
The hardcoded defaults, exported as a frozen object:
import { DEFAULT_DECK_CONFIG } from '@loopkit/nestjs';SessionOptions
Options for ReviewSessionService.buildQueue():
interface SessionOptions {
tags?: string[]; // Filter cards by tags
newCardsLimit?: number; // Override newCardsPerDay
reviewCardsLimit?: number; // Override maxReviewsPerDay
}DeckCounts
Aggregated card counts by state:
interface DeckCounts {
new: number;
learning: number;
review: number;
relearning: number;
total: number;
}