ts-fsrs 3.1.0-beta2 → 3.1.0-beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/default.js CHANGED
@@ -29,7 +29,7 @@ exports.default_w = exports.envParams.FSRS_W || [
29
29
  0.34, 1.26, 0.29, 2.61,
30
30
  ];
31
31
  exports.default_enable_fuzz = exports.envParams.FSRS_ENABLE_FUZZ || false;
32
- exports.FSRSVersion = "3.1.0-beta2";
32
+ exports.FSRSVersion = "3.1.0-beta3";
33
33
  const generatorParameters = (props) => {
34
34
  return {
35
35
  request_retention: props?.request_retention || exports.default_request_retention,
package/dist/fsrs.js CHANGED
@@ -83,12 +83,13 @@ class FSRS extends algorithm_1.FSRSAlgorithm {
83
83
  if (log.rating === models_1.Rating.Manual) {
84
84
  throw new Error("Cannot rollback a manual rating");
85
85
  }
86
- let last_due, last_review, last_lapses;
86
+ let last_due, last_review, last_lapses, last_elapsed_days;
87
87
  switch (log.state) {
88
88
  case models_1.State.New:
89
89
  last_due = log.due;
90
90
  last_review = undefined;
91
91
  last_lapses = 0;
92
+ last_elapsed_days = 0;
92
93
  break;
93
94
  case models_1.State.Learning:
94
95
  case models_1.State.Relearning:
@@ -98,6 +99,7 @@ class FSRS extends algorithm_1.FSRSAlgorithm {
98
99
  last_lapses =
99
100
  card.lapses -
100
101
  (log.rating === models_1.Rating.Again && log.state === models_1.State.Review ? 1 : 0);
102
+ last_elapsed_days = log.elapsed_days == 0 ? 0 : card.scheduled_days;
101
103
  break;
102
104
  }
103
105
  return {
@@ -105,7 +107,7 @@ class FSRS extends algorithm_1.FSRSAlgorithm {
105
107
  due: last_due,
106
108
  stability: log.stability,
107
109
  difficulty: log.difficulty,
108
- elapsed_days: log.elapsed_days,
110
+ elapsed_days: log.last_elapsed_days,
109
111
  scheduled_days: log.scheduled_days,
110
112
  reps: Math.max(0, card.reps - 1),
111
113
  lapses: Math.max(0, last_lapses),
@@ -122,7 +124,8 @@ class FSRS extends algorithm_1.FSRSAlgorithm {
122
124
  due: card.due,
123
125
  stability: card.stability,
124
126
  difficulty: card.difficulty,
125
- elapsed_days: card.elapsed_days,
127
+ elapsed_days: 0,
128
+ last_elapsed_days: card.elapsed_days,
126
129
  scheduled_days: card.scheduled_days,
127
130
  review: now,
128
131
  };
package/dist/models.d.ts CHANGED
@@ -22,6 +22,7 @@ export interface ReviewLog {
22
22
  stability: number;
23
23
  difficulty: number;
24
24
  elapsed_days: number;
25
+ last_elapsed_days: number;
25
26
  scheduled_days: number;
26
27
  review: Date;
27
28
  }
@@ -5,7 +5,7 @@ export declare class SchedulingCard {
5
5
  good: Card;
6
6
  easy: Card;
7
7
  last_review: Date;
8
- elapsed_days: number;
8
+ last_elapsed_days: number;
9
9
  private copy;
10
10
  constructor(card: Card, now: Date);
11
11
  update_state(state: State): this;
package/dist/scheduler.js CHANGED
@@ -9,7 +9,7 @@ class SchedulingCard {
9
9
  good;
10
10
  easy;
11
11
  last_review;
12
- elapsed_days;
12
+ last_elapsed_days;
13
13
  copy(card) {
14
14
  return {
15
15
  ...card,
@@ -17,7 +17,7 @@ class SchedulingCard {
17
17
  }
18
18
  constructor(card, now) {
19
19
  this.last_review = card.last_review || card.due;
20
- this.elapsed_days = card.elapsed_days;
20
+ this.last_elapsed_days = card.elapsed_days;
21
21
  card.elapsed_days =
22
22
  card.state === models_1.State.New ? 0 : now.diff(card.last_review, "days"); //相距时间
23
23
  card.last_review = now; // 上次复习时间
@@ -74,7 +74,8 @@ class SchedulingCard {
74
74
  due: this.last_review,
75
75
  stability: card.stability,
76
76
  difficulty: card.difficulty,
77
- elapsed_days: this.elapsed_days,
77
+ elapsed_days: card.elapsed_days,
78
+ last_elapsed_days: this.last_elapsed_days,
78
79
  scheduled_days: card.scheduled_days,
79
80
  review: now,
80
81
  },
@@ -87,7 +88,8 @@ class SchedulingCard {
87
88
  due: this.last_review,
88
89
  stability: card.stability,
89
90
  difficulty: card.difficulty,
90
- elapsed_days: this.elapsed_days,
91
+ elapsed_days: card.elapsed_days,
92
+ last_elapsed_days: this.last_elapsed_days,
91
93
  scheduled_days: card.scheduled_days,
92
94
  review: now,
93
95
  },
@@ -100,7 +102,8 @@ class SchedulingCard {
100
102
  due: this.last_review,
101
103
  stability: card.stability,
102
104
  difficulty: card.difficulty,
103
- elapsed_days: this.elapsed_days,
105
+ elapsed_days: card.elapsed_days,
106
+ last_elapsed_days: this.last_elapsed_days,
104
107
  scheduled_days: card.scheduled_days,
105
108
  review: now,
106
109
  },
@@ -113,7 +116,8 @@ class SchedulingCard {
113
116
  due: this.last_review,
114
117
  stability: card.stability,
115
118
  difficulty: card.difficulty,
116
- elapsed_days: this.elapsed_days,
119
+ elapsed_days: card.elapsed_days,
120
+ last_elapsed_days: this.last_elapsed_days,
117
121
  scheduled_days: card.scheduled_days,
118
122
  review: now,
119
123
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-fsrs",
3
- "version": "3.1.0-beta2",
3
+ "version": "3.1.0-beta3",
4
4
  "description": "ts-fsrs is a TypeScript package used to implement the Free Spaced Repetition Scheduler (FSRS) algorithm. It helps developers apply FSRS to their flashcard applications, thereby improving the user learning experience.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",