ts-fsrs 2.1.1 → 2.2.0

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/README.md CHANGED
@@ -9,6 +9,15 @@ developers apply FSRS to their flashcard applications, there by improving the us
9
9
  npm install ts-fsrs
10
10
  ```
11
11
 
12
+ # Environment Variables
13
+ If you need to customize default parameters, you can modify the values using `.env`/`.env.local`/`.env.production`/`.env.development`.
14
+
15
+ Copy the [.env.local.example](./example/.env.local.example) file in this directory to .env.local (which will be ignored by Git):
16
+
17
+ ```bash
18
+ cp .env.local.example .env.local
19
+ ```
20
+
12
21
  # Example
13
22
 
14
23
  ```typescript
@@ -0,0 +1,20 @@
1
+ import { Card, FSRSParameters, FSRS } from "./index";
2
+ import { EnvParams } from "./type";
3
+ export declare const envParams: EnvParams;
4
+ export declare const default_request_retention: number;
5
+ export declare const default_maximum_interval: number;
6
+ export declare const default_easy_bonus: number;
7
+ export declare const default_hard_factor: number;
8
+ export declare const default_w: number[];
9
+ export declare const default_enable_fuzz: boolean;
10
+ export declare const FSRSVersion: string;
11
+ export declare const generatorParameters: (props?: Partial<FSRSParameters>) => {
12
+ request_retention: number;
13
+ maximum_interval: number;
14
+ easy_bonus: number;
15
+ hard_factor: number;
16
+ w: number[];
17
+ enable_fuzz: boolean;
18
+ };
19
+ export declare const createEmptyCard: (now?: Date) => Card;
20
+ export declare const fsrs: (params?: Partial<FSRSParameters>) => FSRS;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fsrs = exports.createEmptyCard = exports.generatorParameters = exports.FSRSVersion = exports.default_enable_fuzz = exports.default_w = exports.default_hard_factor = exports.default_easy_bonus = exports.default_maximum_interval = exports.default_request_retention = exports.envParams = void 0;
7
+ const index_1 = require("./index");
8
+ const dotenv_1 = __importDefault(require("dotenv"));
9
+ dotenv_1.default.config({ path: `./.env.local` });
10
+ dotenv_1.default.config({ path: `./.env.production` });
11
+ dotenv_1.default.config({ path: `./.env.` });
12
+ dotenv_1.default.config({ path: `./.env.development` });
13
+ exports.envParams = {
14
+ FSRS_REQUEST_RETENTION: Number(process.env.FSRS_REQUEST_RETENTION),
15
+ FSRS_MAXIMUM_INTERVAL: Number(process.env.FSRS_MAXIMUM_INTERVAL),
16
+ FSRS_EASY_BOUND: Number(process.env.FSRS_EASY_BOUND),
17
+ FSRS_HARD_FACTOR: Number(process.env.FSRS_HARD_FACTOR),
18
+ FSRS_W: process.env.FSRS_W
19
+ ? JSON.parse(process.env.FSRS_W)
20
+ : undefined,
21
+ FSRS_ENABLE_FUZZ: Boolean(process.env.FSRS_ENABLE_FUZZ),
22
+ };
23
+ exports.default_request_retention = !isNaN(exports.envParams.FSRS_REQUEST_RETENTION)
24
+ ? exports.envParams.FSRS_REQUEST_RETENTION
25
+ : 0.9;
26
+ exports.default_maximum_interval = !isNaN(exports.envParams.FSRS_MAXIMUM_INTERVAL)
27
+ ? exports.envParams.FSRS_MAXIMUM_INTERVAL
28
+ : 36500;
29
+ exports.default_easy_bonus = !isNaN(exports.envParams.FSRS_EASY_BOUND)
30
+ ? exports.envParams.FSRS_EASY_BOUND
31
+ : 1.3;
32
+ exports.default_hard_factor = !isNaN(exports.envParams.FSRS_HARD_FACTOR)
33
+ ? exports.envParams.FSRS_HARD_FACTOR
34
+ : 1.2;
35
+ exports.default_w = exports.envParams.FSRS_W || [
36
+ 1, 1, 5, -0.5, -0.5, 0.2, 1.4, -0.12, 0.8, 2, -0.2, 0.2, 1,
37
+ ];
38
+ exports.default_enable_fuzz = exports.envParams.FSRS_ENABLE_FUZZ || false;
39
+ exports.FSRSVersion = "2.2.0";
40
+ const generatorParameters = (props) => {
41
+ return {
42
+ request_retention: props?.request_retention || exports.default_request_retention,
43
+ maximum_interval: props?.maximum_interval || exports.default_maximum_interval,
44
+ easy_bonus: props?.easy_bonus || exports.default_easy_bonus,
45
+ hard_factor: props?.hard_factor || exports.default_hard_factor,
46
+ w: props?.w || exports.default_w,
47
+ enable_fuzz: props?.enable_fuzz || exports.default_enable_fuzz,
48
+ };
49
+ };
50
+ exports.generatorParameters = generatorParameters;
51
+ const createEmptyCard = (now) => {
52
+ return {
53
+ due: now || new Date(),
54
+ stability: 0,
55
+ difficulty: 0,
56
+ elapsed_days: 0,
57
+ scheduled_days: 0,
58
+ reps: 0,
59
+ lapses: 0,
60
+ state: index_1.State.New,
61
+ };
62
+ };
63
+ exports.createEmptyCard = createEmptyCard;
64
+ const fsrs = (params) => {
65
+ return new index_1.FSRS(params || {});
66
+ };
67
+ exports.fsrs = fsrs;
package/dist/fsrs.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { Card, FSRSParameters, Rating, SchedulingCard, State } from "./index";
2
- import { int } from "./help";
3
- export default class FSRS {
1
+ import { SchedulingCard } from "./index";
2
+ import { FSRSParameters, Card, State, Rating } from "./models";
3
+ import type { int } from "./type";
4
+ export declare class FSRS {
4
5
  private param;
5
6
  private readonly intervalModifier;
6
7
  private seed?;
7
- constructor(param?: FSRSParameters);
8
+ constructor(param: Partial<FSRSParameters>);
8
9
  repeat: (card: Card, now: Date) => {
9
10
  0: {
10
11
  card: Card;
package/dist/fsrs.js CHANGED
@@ -3,25 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FSRS = void 0;
6
7
  const seedrandom_1 = __importDefault(require("seedrandom"));
7
8
  const index_1 = require("./index");
8
9
  const help_1 = require("./help");
10
+ const models_1 = require("./models");
9
11
  class FSRS {
10
12
  param;
11
13
  intervalModifier;
12
14
  seed;
13
15
  constructor(param) {
14
- this.param = param || (0, index_1.generatorParameters)();
16
+ this.param = (0, index_1.generatorParameters)(param);
15
17
  this.intervalModifier =
16
18
  Math.log(this.param.request_retention) / Math.log(0.9);
17
19
  }
18
20
  repeat = (card, now) => {
19
21
  card = {
20
22
  ...card,
23
+ last_review: card.last_review ? (0, help_1.fixDate)(card.last_review) : undefined,
21
24
  };
22
25
  now = new Date((0, help_1.fixDate)(now));
23
26
  card.elapsed_days =
24
- card.state === index_1.State.New ? 0 : now.diff(card.last_review, "days"); //相距时间
27
+ card.state === models_1.State.New ? 0 : now.diff(card.last_review, "days"); //相距时间
25
28
  card.last_review = now; // 上次复习时间
26
29
  card.reps += 1;
27
30
  const s = new index_1.SchedulingCard(card);
@@ -29,7 +32,7 @@ class FSRS {
29
32
  this.seed = String(card.last_review.getTime()) + String(card.elapsed_days);
30
33
  let easy_interval, good_interval, hard_interval;
31
34
  switch (card.state) {
32
- case index_1.State.New:
35
+ case models_1.State.New:
33
36
  this.init_ds(s);
34
37
  s.again.due = now.scheduler(1);
35
38
  s.hard.due = now.scheduler(5);
@@ -38,14 +41,14 @@ class FSRS {
38
41
  s.easy.scheduled_days = easy_interval;
39
42
  s.easy.due = now.scheduler(easy_interval, true);
40
43
  break;
41
- case index_1.State.Learning:
42
- case index_1.State.Relearning:
44
+ case models_1.State.Learning:
45
+ case models_1.State.Relearning:
43
46
  hard_interval = 0;
44
47
  good_interval = this.next_interval(s.good.stability);
45
48
  easy_interval = Math.max(this.next_interval(s.easy.stability * this.param.easy_bonus), good_interval + 1);
46
49
  s.schedule(now, hard_interval, good_interval, easy_interval);
47
50
  break;
48
- case index_1.State.Review: {
51
+ case models_1.State.Review: {
49
52
  const interval = card.elapsed_days;
50
53
  const last_d = card.difficulty;
51
54
  const last_s = card.stability;
@@ -63,21 +66,21 @@ class FSRS {
63
66
  return s.record_log(card, now);
64
67
  };
65
68
  get_retrievability = (card, now) => {
66
- if (card.state !== index_1.State.Review) {
69
+ if (card.state !== models_1.State.Review) {
67
70
  return undefined;
68
71
  }
69
72
  const t = Math.max(now.diff(card.last_review, "days"), 0);
70
73
  return ((this.current_retrievability(t, card.stability) * 100).toFixed(2) + "%");
71
74
  };
72
75
  init_ds(s) {
73
- s.again.difficulty = this.init_difficulty(index_1.Rating.Again);
74
- s.again.stability = this.init_stability(index_1.Rating.Again);
75
- s.hard.difficulty = this.init_difficulty(index_1.Rating.Hard);
76
- s.hard.stability = this.init_stability(index_1.Rating.Hard);
77
- s.good.difficulty = this.init_difficulty(index_1.Rating.Good);
78
- s.good.stability = this.init_stability(index_1.Rating.Good);
79
- s.easy.difficulty = this.init_difficulty(index_1.Rating.Easy);
80
- s.easy.stability = this.init_stability(index_1.Rating.Easy);
76
+ s.again.difficulty = this.init_difficulty(models_1.Rating.Again);
77
+ s.again.stability = this.init_stability(models_1.Rating.Again);
78
+ s.hard.difficulty = this.init_difficulty(models_1.Rating.Hard);
79
+ s.hard.stability = this.init_stability(models_1.Rating.Hard);
80
+ s.good.difficulty = this.init_difficulty(models_1.Rating.Good);
81
+ s.good.stability = this.init_stability(models_1.Rating.Good);
82
+ s.easy.difficulty = this.init_difficulty(models_1.Rating.Easy);
83
+ s.easy.stability = this.init_stability(models_1.Rating.Easy);
81
84
  }
82
85
  /**
83
86
  *
@@ -87,13 +90,13 @@ class FSRS {
87
90
  * @param retrievability Retrievability
88
91
  */
89
92
  next_ds(s, last_d, last_s, retrievability) {
90
- s.again.difficulty = this.next_difficulty(last_d, index_1.Rating.Again);
93
+ s.again.difficulty = this.next_difficulty(last_d, models_1.Rating.Again);
91
94
  s.again.stability = this.next_forget_stability(s.again.difficulty, last_s, retrievability);
92
- s.hard.difficulty = this.next_difficulty(last_d, index_1.Rating.Hard);
95
+ s.hard.difficulty = this.next_difficulty(last_d, models_1.Rating.Hard);
93
96
  s.hard.stability = this.next_recall_stability(s.hard.difficulty, last_s, retrievability);
94
- s.good.difficulty = this.next_difficulty(last_d, index_1.Rating.Good);
97
+ s.good.difficulty = this.next_difficulty(last_d, models_1.Rating.Good);
95
98
  s.good.stability = this.next_recall_stability(s.good.difficulty, last_s, retrievability);
96
- s.easy.difficulty = this.next_difficulty(last_d, index_1.Rating.Easy);
99
+ s.easy.difficulty = this.next_difficulty(last_d, models_1.Rating.Easy);
97
100
  s.easy.stability = this.next_recall_stability(s.easy.difficulty, last_s, retrievability);
98
101
  }
99
102
  /**
@@ -200,4 +203,4 @@ class FSRS {
200
203
  return Math.exp((Math.log(0.9) * t) / s);
201
204
  }
202
205
  }
203
- exports.default = FSRS;
206
+ exports.FSRS = FSRS;
package/dist/help.d.ts CHANGED
@@ -1,10 +1,4 @@
1
- export type unit = "days" | "minutes";
2
- export type int = number & {
3
- __int__: void;
4
- };
5
- export type double = number & {
6
- __double__: void;
7
- };
1
+ import type { int, unit } from "./type";
8
2
  declare global {
9
3
  export interface Date {
10
4
  scheduler(t: int, isDay?: boolean): Date;
package/dist/index.d.ts CHANGED
@@ -1,26 +1,7 @@
1
- import FSRS from "./fsrs";
2
- import { Card, default_easy_bonus, default_enable_fuzz, default_hard_factor, default_maximum_interval, default_request_retention, default_w, FSRSParameters, Rating, RatingType, ReviewLog, SchedulingLog, State, StateType } from "./models";
3
- import { SchedulingCard } from "./scheduler";
4
- import FSRSVersion from "./fsrs_version";
5
- declare const fsrs: (param?: FSRSParameters) => FSRS;
6
- declare const createEmptyCard: (now?: Date) => Card;
7
- declare const generatorParameters: (props?: {
8
- request_retention?: number;
9
- maximum_interval?: number;
10
- easy_bonus?: number;
11
- hard_factor?: number;
12
- w?: number[];
13
- enable_fuzz?: boolean;
14
- }) => {
15
- request_retention: number;
16
- maximum_interval: number;
17
- easy_bonus: number;
18
- hard_factor: number;
19
- w: number[];
20
- enable_fuzz: boolean;
21
- };
22
- export { fsrs, FSRSVersion, State, Rating, SchedulingCard, createEmptyCard, generatorParameters, };
23
- export type { StateType, RatingType, ReviewLog, Card, SchedulingLog, FSRSParameters, };
24
- export { default_request_retention, default_maximum_interval, default_easy_bonus, default_hard_factor, default_w, default_enable_fuzz, };
1
+ export { SchedulingCard } from "./scheduler";
2
+ export { default_request_retention, default_maximum_interval, default_easy_bonus, default_hard_factor, default_w, default_enable_fuzz, FSRSVersion, generatorParameters, createEmptyCard, fsrs, envParams } from "./default";
25
3
  export { date_scheduler, date_diff, formatDate, show_diff_message, } from "./help";
26
- export type { int, double } from "./help";
4
+ export type { int, double } from "./type";
5
+ export type { FSRSParameters, Card, ReviewLog, StateType, RatingType, } from "./models";
6
+ export { State, Rating } from "./models";
7
+ export { FSRS } from "./fsrs";
package/dist/index.js CHANGED
@@ -1,64 +1,27 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.show_diff_message = exports.formatDate = exports.date_diff = exports.date_scheduler = exports.default_enable_fuzz = exports.default_w = exports.default_hard_factor = exports.default_easy_bonus = exports.default_maximum_interval = exports.default_request_retention = exports.generatorParameters = exports.createEmptyCard = exports.SchedulingCard = exports.Rating = exports.State = exports.FSRSVersion = exports.fsrs = void 0;
7
- const fsrs_1 = __importDefault(require("./fsrs"));
8
- const models_1 = require("./models");
9
- Object.defineProperty(exports, "default_easy_bonus", { enumerable: true, get: function () { return models_1.default_easy_bonus; } });
10
- Object.defineProperty(exports, "default_enable_fuzz", { enumerable: true, get: function () { return models_1.default_enable_fuzz; } });
11
- Object.defineProperty(exports, "default_hard_factor", { enumerable: true, get: function () { return models_1.default_hard_factor; } });
12
- Object.defineProperty(exports, "default_maximum_interval", { enumerable: true, get: function () { return models_1.default_maximum_interval; } });
13
- Object.defineProperty(exports, "default_request_retention", { enumerable: true, get: function () { return models_1.default_request_retention; } });
14
- Object.defineProperty(exports, "default_w", { enumerable: true, get: function () { return models_1.default_w; } });
15
- Object.defineProperty(exports, "Rating", { enumerable: true, get: function () { return models_1.Rating; } });
16
- Object.defineProperty(exports, "State", { enumerable: true, get: function () { return models_1.State; } });
17
- const scheduler_1 = require("./scheduler");
3
+ exports.FSRS = exports.Rating = exports.State = exports.show_diff_message = exports.formatDate = exports.date_diff = exports.date_scheduler = exports.envParams = exports.fsrs = exports.createEmptyCard = exports.generatorParameters = exports.FSRSVersion = exports.default_enable_fuzz = exports.default_w = exports.default_hard_factor = exports.default_easy_bonus = exports.default_maximum_interval = exports.default_request_retention = exports.SchedulingCard = void 0;
4
+ var scheduler_1 = require("./scheduler");
18
5
  Object.defineProperty(exports, "SchedulingCard", { enumerable: true, get: function () { return scheduler_1.SchedulingCard; } });
19
- const fsrs_version_1 = __importDefault(require("./fsrs_version"));
20
- exports.FSRSVersion = fsrs_version_1.default;
21
- const fsrs = (param) => {
22
- return new fsrs_1.default(param);
23
- };
24
- exports.fsrs = fsrs;
25
- const createEmptyCard = (now) => {
26
- return {
27
- due: now || new Date(),
28
- stability: 0,
29
- difficulty: 0,
30
- elapsed_days: 0,
31
- scheduled_days: 0,
32
- reps: 0,
33
- lapses: 0,
34
- state: models_1.State.New,
35
- };
36
- };
37
- exports.createEmptyCard = createEmptyCard;
38
- const generatorParameters = (props) => {
39
- if (!props) {
40
- return {
41
- request_retention: models_1.default_request_retention,
42
- maximum_interval: models_1.default_maximum_interval,
43
- easy_bonus: models_1.default_easy_bonus,
44
- hard_factor: models_1.default_hard_factor,
45
- w: models_1.default_w,
46
- enable_fuzz: models_1.default_enable_fuzz,
47
- };
48
- }
49
- const { w, request_retention, hard_factor, maximum_interval, enable_fuzz, easy_bonus, } = props;
50
- return {
51
- request_retention: request_retention || models_1.default_request_retention,
52
- maximum_interval: maximum_interval || models_1.default_maximum_interval,
53
- easy_bonus: easy_bonus || models_1.default_easy_bonus,
54
- hard_factor: hard_factor || models_1.default_hard_factor,
55
- w: w || models_1.default_w,
56
- enable_fuzz: enable_fuzz || models_1.default_enable_fuzz,
57
- };
58
- };
59
- exports.generatorParameters = generatorParameters;
6
+ var default_1 = require("./default");
7
+ Object.defineProperty(exports, "default_request_retention", { enumerable: true, get: function () { return default_1.default_request_retention; } });
8
+ Object.defineProperty(exports, "default_maximum_interval", { enumerable: true, get: function () { return default_1.default_maximum_interval; } });
9
+ Object.defineProperty(exports, "default_easy_bonus", { enumerable: true, get: function () { return default_1.default_easy_bonus; } });
10
+ Object.defineProperty(exports, "default_hard_factor", { enumerable: true, get: function () { return default_1.default_hard_factor; } });
11
+ Object.defineProperty(exports, "default_w", { enumerable: true, get: function () { return default_1.default_w; } });
12
+ Object.defineProperty(exports, "default_enable_fuzz", { enumerable: true, get: function () { return default_1.default_enable_fuzz; } });
13
+ Object.defineProperty(exports, "FSRSVersion", { enumerable: true, get: function () { return default_1.FSRSVersion; } });
14
+ Object.defineProperty(exports, "generatorParameters", { enumerable: true, get: function () { return default_1.generatorParameters; } });
15
+ Object.defineProperty(exports, "createEmptyCard", { enumerable: true, get: function () { return default_1.createEmptyCard; } });
16
+ Object.defineProperty(exports, "fsrs", { enumerable: true, get: function () { return default_1.fsrs; } });
17
+ Object.defineProperty(exports, "envParams", { enumerable: true, get: function () { return default_1.envParams; } });
60
18
  var help_1 = require("./help");
61
19
  Object.defineProperty(exports, "date_scheduler", { enumerable: true, get: function () { return help_1.date_scheduler; } });
62
20
  Object.defineProperty(exports, "date_diff", { enumerable: true, get: function () { return help_1.date_diff; } });
63
21
  Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return help_1.formatDate; } });
64
22
  Object.defineProperty(exports, "show_diff_message", { enumerable: true, get: function () { return help_1.show_diff_message; } });
23
+ var models_1 = require("./models");
24
+ Object.defineProperty(exports, "State", { enumerable: true, get: function () { return models_1.State; } });
25
+ Object.defineProperty(exports, "Rating", { enumerable: true, get: function () { return models_1.Rating; } });
26
+ var fsrs_1 = require("./fsrs");
27
+ Object.defineProperty(exports, "FSRS", { enumerable: true, get: function () { return fsrs_1.FSRS; } });
package/dist/models.d.ts CHANGED
@@ -30,12 +30,6 @@ export interface Card {
30
30
  state: State;
31
31
  last_review?: Date;
32
32
  }
33
- export interface SchedulingLog {
34
- [key: number]: {
35
- card: Card;
36
- log: ReviewLog;
37
- };
38
- }
39
33
  export interface FSRSParameters {
40
34
  request_retention: number;
41
35
  maximum_interval: number;
@@ -44,9 +38,3 @@ export interface FSRSParameters {
44
38
  w: number[];
45
39
  enable_fuzz: boolean;
46
40
  }
47
- export declare const default_request_retention = 0.9;
48
- export declare const default_maximum_interval = 36500;
49
- export declare const default_easy_bonus = 1.3;
50
- export declare const default_hard_factor = 1.2;
51
- export declare const default_w: number[];
52
- export declare const default_enable_fuzz = false;
package/dist/models.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default_enable_fuzz = exports.default_w = exports.default_hard_factor = exports.default_easy_bonus = exports.default_maximum_interval = exports.default_request_retention = exports.Rating = exports.State = void 0;
3
+ exports.Rating = exports.State = void 0;
4
4
  var State;
5
5
  (function (State) {
6
6
  State[State["New"] = 0] = "New";
@@ -15,11 +15,3 @@ var Rating;
15
15
  Rating[Rating["Good"] = 2] = "Good";
16
16
  Rating[Rating["Easy"] = 3] = "Easy";
17
17
  })(Rating || (exports.Rating = Rating = {}));
18
- exports.default_request_retention = 0.9;
19
- exports.default_maximum_interval = 36500;
20
- exports.default_easy_bonus = 1.3;
21
- exports.default_hard_factor = 1.2;
22
- exports.default_w = [
23
- 1, 1, 5, -0.5, -0.5, 0.2, 1.4, -0.12, 0.8, 2, -0.2, 0.2, 1,
24
- ];
25
- exports.default_enable_fuzz = false;
package/dist/type.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ export type unit = "days" | "minutes";
2
+ export type int = number & {
3
+ __int__: void;
4
+ };
5
+ export type double = number & {
6
+ __double__: void;
7
+ };
8
+ export interface EnvParams {
9
+ FSRS_REQUEST_RETENTION: number;
10
+ FSRS_MAXIMUM_INTERVAL: number;
11
+ FSRS_EASY_BOUND: number;
12
+ FSRS_HARD_FACTOR: number;
13
+ FSRS_W?: number[];
14
+ FSRS_ENABLE_FUZZ?: boolean;
15
+ }
package/dist/type.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-fsrs",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
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",
@@ -10,11 +10,12 @@
10
10
  "FSRS"
11
11
  ],
12
12
  "dependencies": {
13
+ "dotenv": "^16.3.1",
13
14
  "seedrandom": "^3.0.5"
14
15
  },
15
16
  "devDependencies": {
16
- "@types/node": "^20.6.2",
17
17
  "@types/jest": "^29.5.5",
18
+ "@types/node": "^20.6.2",
18
19
  "@types/seedrandom": "^3.0.5",
19
20
  "@typescript-eslint/eslint-plugin": "^6.7.0",
20
21
  "@typescript-eslint/parser": "^6.7.0",
@@ -1,2 +0,0 @@
1
- declare const FSRSVersion: string;
2
- export default FSRSVersion;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
4
- // @ts-ignore
5
- const package_json_1 = require("../../package.json");
6
- const FSRSVersion = package_json_1.version;
7
- exports.default = FSRSVersion;