@ooneex/gamification 0.0.14 → 0.0.15
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/flashcard/index.js +2 -229
- package/dist/flashcard/index.js.map +2 -2
- package/dist/index.js +2 -196
- package/dist/index.js.map +2 -2
- package/dist/mcq/index.js +2 -26
- package/dist/mcq/index.js.map +2 -2
- package/package.json +1 -1
package/dist/flashcard/index.js
CHANGED
|
@@ -1,230 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
var EFlashcardState;
|
|
3
|
-
((EFlashcardState2) => {
|
|
4
|
-
EFlashcardState2["NEW"] = "new";
|
|
5
|
-
EFlashcardState2["LEARNING"] = "learning";
|
|
6
|
-
EFlashcardState2["RELEARNING"] = "relearning";
|
|
7
|
-
EFlashcardState2["REVIEW"] = "review";
|
|
8
|
-
EFlashcardState2["BURIED"] = "buried";
|
|
9
|
-
EFlashcardState2["SUSPENDED"] = "suspended";
|
|
10
|
-
})(EFlashcardState ||= {});
|
|
11
|
-
var EFlashcardRating;
|
|
12
|
-
((EFlashcardRating2) => {
|
|
13
|
-
EFlashcardRating2["AGAIN"] = "again";
|
|
14
|
-
EFlashcardRating2["HARD"] = "hard";
|
|
15
|
-
EFlashcardRating2["GOOD"] = "good";
|
|
16
|
-
EFlashcardRating2["EASY"] = "easy";
|
|
17
|
-
})(EFlashcardRating ||= {});
|
|
18
|
-
var EFlashcardSessionStatus;
|
|
19
|
-
((EFlashcardSessionStatus2) => {
|
|
20
|
-
EFlashcardSessionStatus2["DRAFT"] = "draft";
|
|
21
|
-
EFlashcardSessionStatus2["STARTED"] = "started";
|
|
22
|
-
EFlashcardSessionStatus2["PAUSED"] = "paused";
|
|
23
|
-
EFlashcardSessionStatus2["COMPLETED"] = "completed";
|
|
24
|
-
})(EFlashcardSessionStatus ||= {});
|
|
25
|
-
var EFlashcardAlgorithm;
|
|
26
|
-
((EFlashcardAlgorithm2) => {
|
|
27
|
-
EFlashcardAlgorithm2["SM2"] = "sm2";
|
|
28
|
-
EFlashcardAlgorithm2["FSRS"] = "fsrs";
|
|
29
|
-
})(EFlashcardAlgorithm ||= {});
|
|
1
|
+
var J;((f)=>{f.NEW="new";f.LEARNING="learning";f.RELEARNING="relearning";f.REVIEW="review";f.BURIED="buried";f.SUSPENDED="suspended"})(J||={});var K;((x)=>{x.AGAIN="again";x.HARD="hard";x.GOOD="good";x.EASY="easy"})(K||={});var b;((x)=>{x.DRAFT="draft";x.STARTED="started";x.PAUSED="paused";x.COMPLETED="completed"})(b||={});var Q;((j)=>{j.SM2="sm2";j.FSRS="fsrs"})(Q||={});var w={LEARNING_STEPS:[1,10],GRADUATING_INTERVAL:1,EASY_INTERVAL:4,STARTING_EASE_FACTOR:2.5,EASY_BONUS:1.3,INTERVAL_MODIFIER:1,HARD_INTERVAL:1.2,RELEARNING_STEPS:[10],NEW_INTERVAL:0,MINIMUM_INTERVAL:1,LEECH_THRESHOLD:8,MAX_NEW_CARDS_PER_DAY:20,MAX_REVIEW_CARDS_PER_DAY:200,MAX_ANSWER_TIME:60,MIN_INTERVAL:1,MAX_INTERVAL:36500,DESIRED_RETENTION:0.9,FSRS_DEFAULT_PARAMETERS:[0.4072,1.1829,3.1262,15.4722,7.2102,0.5316,1.0651,0.0234,1.616,0.1544,1.0824,1.9813,0.0953,0.2975,2.2042,0.2407,2.9466]},z=Object.freeze({again:0,hard:1.2,good:2.5,easy:3.25}),B=Object.freeze({again:-0.2,hard:-0.15,good:0,easy:0.15}),V={MIN:1.3,MAX:2.5},G=Object.freeze({new:Object.freeze({again:"learning",hard:"learning",good:"learning",easy:"review"}),learning:Object.freeze({again:"learning",hard:"learning",good:"learning",easy:"review"}),review:Object.freeze({again:"relearning",hard:"review",good:"review",easy:"review"}),relearning:Object.freeze({again:"relearning",hard:"relearning",good:"relearning",easy:"review"}),buried:Object.freeze({again:"buried",hard:"buried",good:"buried",easy:"buried"}),suspended:Object.freeze({again:"suspended",hard:"suspended",good:"suspended",easy:"suspended"})}),N={FIRST_STEP:1.5,AVERAGE_STEPS:0.5},q={MIN:0.95,MAX:1.05},X=Object.freeze({again:0,hard:50,good:80,easy:100}),L=21,P={BEGINNER:{name:"Beginner",description:"For new learners with more repetition",learningSteps:[1,10,1440],graduatingInterval:2,easyInterval:7,maxNewCardsPerDay:10,desiredRetention:0.85},DEFAULT:{name:"Default",description:"Balanced settings for most users",learningSteps:[1,10],graduatingInterval:1,easyInterval:4,maxNewCardsPerDay:20,desiredRetention:0.9},INTENSIVE:{name:"Intensive",description:"For serious learners who want higher retention",learningSteps:[1,10],graduatingInterval:1,easyInterval:4,maxNewCardsPerDay:30,desiredRetention:0.95},LIGHT:{name:"Light",description:"For casual learning with fewer reviews",learningSteps:[1,10],graduatingInterval:3,easyInterval:7,maxNewCardsPerDay:15,desiredRetention:0.8}},W=Object.freeze({sm2:Object.freeze({MIN_EASE_FACTOR:1.3,MAX_EASE_FACTOR:2.5,EASE_ADJUSTMENT_STEP:0.15}),fsrs:Object.freeze({MIN_DIFFICULTY:1,MAX_DIFFICULTY:10,MIN_STABILITY:0.1,MAX_STABILITY:36500,MIN_RETRIEVABILITY:0.01,MAX_RETRIEVABILITY:0.99})}),y={minutesToMs:(p)=>p*60*1000,daysToMs:(p)=>p*24*60*60*1000,applyFuzz:(p)=>{let k=q.MIN+Math.random()*(q.MAX-q.MIN);return Math.max(1,Math.round(p*k))},clampEaseFactor:(p)=>{return Math.max(V.MIN,Math.min(p,V.MAX))},calculateScore:(p)=>{if(p.length===0)return 0;let k=p.reduce(($,x)=>$+X[x],0),j=p.length*X["easy"];return Math.round(k/j*100)},isMature:(p)=>p>=L};export{y as UTILS,G as STATE_TRANSITIONS,X as SCORE_WEIGHTS,z as RATING_MULTIPLIERS,L as MATURITY_THRESHOLD,N as LEARNING_HARD_MULTIPLIERS,q as FUZZ_FACTOR,J as EFlashcardState,b as EFlashcardSessionStatus,K as EFlashcardRating,Q as EFlashcardAlgorithm,V as EASE_BOUNDS,B as EASE_ADJUSTMENTS,P as DEFAULT_PRESETS,w as ANKI_DEFAULTS,W as ALGORITHM_CONSTANTS};
|
|
30
2
|
|
|
31
|
-
|
|
32
|
-
var ANKI_DEFAULTS = {
|
|
33
|
-
LEARNING_STEPS: [1, 10],
|
|
34
|
-
GRADUATING_INTERVAL: 1,
|
|
35
|
-
EASY_INTERVAL: 4,
|
|
36
|
-
STARTING_EASE_FACTOR: 2.5,
|
|
37
|
-
EASY_BONUS: 1.3,
|
|
38
|
-
INTERVAL_MODIFIER: 1,
|
|
39
|
-
HARD_INTERVAL: 1.2,
|
|
40
|
-
RELEARNING_STEPS: [10],
|
|
41
|
-
NEW_INTERVAL: 0,
|
|
42
|
-
MINIMUM_INTERVAL: 1,
|
|
43
|
-
LEECH_THRESHOLD: 8,
|
|
44
|
-
MAX_NEW_CARDS_PER_DAY: 20,
|
|
45
|
-
MAX_REVIEW_CARDS_PER_DAY: 200,
|
|
46
|
-
MAX_ANSWER_TIME: 60,
|
|
47
|
-
MIN_INTERVAL: 1,
|
|
48
|
-
MAX_INTERVAL: 36500,
|
|
49
|
-
DESIRED_RETENTION: 0.9,
|
|
50
|
-
FSRS_DEFAULT_PARAMETERS: [
|
|
51
|
-
0.4072,
|
|
52
|
-
1.1829,
|
|
53
|
-
3.1262,
|
|
54
|
-
15.4722,
|
|
55
|
-
7.2102,
|
|
56
|
-
0.5316,
|
|
57
|
-
1.0651,
|
|
58
|
-
0.0234,
|
|
59
|
-
1.616,
|
|
60
|
-
0.1544,
|
|
61
|
-
1.0824,
|
|
62
|
-
1.9813,
|
|
63
|
-
0.0953,
|
|
64
|
-
0.2975,
|
|
65
|
-
2.2042,
|
|
66
|
-
0.2407,
|
|
67
|
-
2.9466
|
|
68
|
-
]
|
|
69
|
-
};
|
|
70
|
-
var RATING_MULTIPLIERS = Object.freeze({
|
|
71
|
-
["again" /* AGAIN */]: 0,
|
|
72
|
-
["hard" /* HARD */]: 1.2,
|
|
73
|
-
["good" /* GOOD */]: 2.5,
|
|
74
|
-
["easy" /* EASY */]: 2.5 * 1.3
|
|
75
|
-
});
|
|
76
|
-
var EASE_ADJUSTMENTS = Object.freeze({
|
|
77
|
-
["again" /* AGAIN */]: -0.2,
|
|
78
|
-
["hard" /* HARD */]: -0.15,
|
|
79
|
-
["good" /* GOOD */]: 0,
|
|
80
|
-
["easy" /* EASY */]: 0.15
|
|
81
|
-
});
|
|
82
|
-
var EASE_BOUNDS = {
|
|
83
|
-
MIN: 1.3,
|
|
84
|
-
MAX: 2.5
|
|
85
|
-
};
|
|
86
|
-
var STATE_TRANSITIONS = Object.freeze({
|
|
87
|
-
["new" /* NEW */]: Object.freeze({
|
|
88
|
-
["again" /* AGAIN */]: "learning" /* LEARNING */,
|
|
89
|
-
["hard" /* HARD */]: "learning" /* LEARNING */,
|
|
90
|
-
["good" /* GOOD */]: "learning" /* LEARNING */,
|
|
91
|
-
["easy" /* EASY */]: "review" /* REVIEW */
|
|
92
|
-
}),
|
|
93
|
-
["learning" /* LEARNING */]: Object.freeze({
|
|
94
|
-
["again" /* AGAIN */]: "learning" /* LEARNING */,
|
|
95
|
-
["hard" /* HARD */]: "learning" /* LEARNING */,
|
|
96
|
-
["good" /* GOOD */]: "learning" /* LEARNING */,
|
|
97
|
-
["easy" /* EASY */]: "review" /* REVIEW */
|
|
98
|
-
}),
|
|
99
|
-
["review" /* REVIEW */]: Object.freeze({
|
|
100
|
-
["again" /* AGAIN */]: "relearning" /* RELEARNING */,
|
|
101
|
-
["hard" /* HARD */]: "review" /* REVIEW */,
|
|
102
|
-
["good" /* GOOD */]: "review" /* REVIEW */,
|
|
103
|
-
["easy" /* EASY */]: "review" /* REVIEW */
|
|
104
|
-
}),
|
|
105
|
-
["relearning" /* RELEARNING */]: Object.freeze({
|
|
106
|
-
["again" /* AGAIN */]: "relearning" /* RELEARNING */,
|
|
107
|
-
["hard" /* HARD */]: "relearning" /* RELEARNING */,
|
|
108
|
-
["good" /* GOOD */]: "relearning" /* RELEARNING */,
|
|
109
|
-
["easy" /* EASY */]: "review" /* REVIEW */
|
|
110
|
-
}),
|
|
111
|
-
["buried" /* BURIED */]: Object.freeze({
|
|
112
|
-
["again" /* AGAIN */]: "buried" /* BURIED */,
|
|
113
|
-
["hard" /* HARD */]: "buried" /* BURIED */,
|
|
114
|
-
["good" /* GOOD */]: "buried" /* BURIED */,
|
|
115
|
-
["easy" /* EASY */]: "buried" /* BURIED */
|
|
116
|
-
}),
|
|
117
|
-
["suspended" /* SUSPENDED */]: Object.freeze({
|
|
118
|
-
["again" /* AGAIN */]: "suspended" /* SUSPENDED */,
|
|
119
|
-
["hard" /* HARD */]: "suspended" /* SUSPENDED */,
|
|
120
|
-
["good" /* GOOD */]: "suspended" /* SUSPENDED */,
|
|
121
|
-
["easy" /* EASY */]: "suspended" /* SUSPENDED */
|
|
122
|
-
})
|
|
123
|
-
});
|
|
124
|
-
var LEARNING_HARD_MULTIPLIERS = {
|
|
125
|
-
FIRST_STEP: 1.5,
|
|
126
|
-
AVERAGE_STEPS: 0.5
|
|
127
|
-
};
|
|
128
|
-
var FUZZ_FACTOR = {
|
|
129
|
-
MIN: 0.95,
|
|
130
|
-
MAX: 1.05
|
|
131
|
-
};
|
|
132
|
-
var SCORE_WEIGHTS = Object.freeze({
|
|
133
|
-
["again" /* AGAIN */]: 0,
|
|
134
|
-
["hard" /* HARD */]: 50,
|
|
135
|
-
["good" /* GOOD */]: 80,
|
|
136
|
-
["easy" /* EASY */]: 100
|
|
137
|
-
});
|
|
138
|
-
var MATURITY_THRESHOLD = 21;
|
|
139
|
-
var DEFAULT_PRESETS = {
|
|
140
|
-
BEGINNER: {
|
|
141
|
-
name: "Beginner",
|
|
142
|
-
description: "For new learners with more repetition",
|
|
143
|
-
learningSteps: [1, 10, 1440],
|
|
144
|
-
graduatingInterval: 2,
|
|
145
|
-
easyInterval: 7,
|
|
146
|
-
maxNewCardsPerDay: 10,
|
|
147
|
-
desiredRetention: 0.85
|
|
148
|
-
},
|
|
149
|
-
DEFAULT: {
|
|
150
|
-
name: "Default",
|
|
151
|
-
description: "Balanced settings for most users",
|
|
152
|
-
learningSteps: [1, 10],
|
|
153
|
-
graduatingInterval: 1,
|
|
154
|
-
easyInterval: 4,
|
|
155
|
-
maxNewCardsPerDay: 20,
|
|
156
|
-
desiredRetention: 0.9
|
|
157
|
-
},
|
|
158
|
-
INTENSIVE: {
|
|
159
|
-
name: "Intensive",
|
|
160
|
-
description: "For serious learners who want higher retention",
|
|
161
|
-
learningSteps: [1, 10],
|
|
162
|
-
graduatingInterval: 1,
|
|
163
|
-
easyInterval: 4,
|
|
164
|
-
maxNewCardsPerDay: 30,
|
|
165
|
-
desiredRetention: 0.95
|
|
166
|
-
},
|
|
167
|
-
LIGHT: {
|
|
168
|
-
name: "Light",
|
|
169
|
-
description: "For casual learning with fewer reviews",
|
|
170
|
-
learningSteps: [1, 10],
|
|
171
|
-
graduatingInterval: 3,
|
|
172
|
-
easyInterval: 7,
|
|
173
|
-
maxNewCardsPerDay: 15,
|
|
174
|
-
desiredRetention: 0.8
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
var ALGORITHM_CONSTANTS = Object.freeze({
|
|
178
|
-
["sm2" /* SM2 */]: Object.freeze({
|
|
179
|
-
MIN_EASE_FACTOR: 1.3,
|
|
180
|
-
MAX_EASE_FACTOR: 2.5,
|
|
181
|
-
EASE_ADJUSTMENT_STEP: 0.15
|
|
182
|
-
}),
|
|
183
|
-
["fsrs" /* FSRS */]: Object.freeze({
|
|
184
|
-
MIN_DIFFICULTY: 1,
|
|
185
|
-
MAX_DIFFICULTY: 10,
|
|
186
|
-
MIN_STABILITY: 0.1,
|
|
187
|
-
MAX_STABILITY: 36500,
|
|
188
|
-
MIN_RETRIEVABILITY: 0.01,
|
|
189
|
-
MAX_RETRIEVABILITY: 0.99
|
|
190
|
-
})
|
|
191
|
-
});
|
|
192
|
-
var UTILS = {
|
|
193
|
-
minutesToMs: (minutes) => minutes * 60 * 1000,
|
|
194
|
-
daysToMs: (days) => days * 24 * 60 * 60 * 1000,
|
|
195
|
-
applyFuzz: (interval) => {
|
|
196
|
-
const fuzz = FUZZ_FACTOR.MIN + Math.random() * (FUZZ_FACTOR.MAX - FUZZ_FACTOR.MIN);
|
|
197
|
-
return Math.max(1, Math.round(interval * fuzz));
|
|
198
|
-
},
|
|
199
|
-
clampEaseFactor: (ease) => {
|
|
200
|
-
return Math.max(EASE_BOUNDS.MIN, Math.min(ease, EASE_BOUNDS.MAX));
|
|
201
|
-
},
|
|
202
|
-
calculateScore: (ratings) => {
|
|
203
|
-
if (ratings.length === 0)
|
|
204
|
-
return 0;
|
|
205
|
-
const totalPoints = ratings.reduce((sum, rating) => sum + SCORE_WEIGHTS[rating], 0);
|
|
206
|
-
const maxPossible = ratings.length * SCORE_WEIGHTS["easy" /* EASY */];
|
|
207
|
-
return Math.round(totalPoints / maxPossible * 100);
|
|
208
|
-
},
|
|
209
|
-
isMature: (interval) => interval >= MATURITY_THRESHOLD
|
|
210
|
-
};
|
|
211
|
-
export {
|
|
212
|
-
UTILS,
|
|
213
|
-
STATE_TRANSITIONS,
|
|
214
|
-
SCORE_WEIGHTS,
|
|
215
|
-
RATING_MULTIPLIERS,
|
|
216
|
-
MATURITY_THRESHOLD,
|
|
217
|
-
LEARNING_HARD_MULTIPLIERS,
|
|
218
|
-
FUZZ_FACTOR,
|
|
219
|
-
EFlashcardState,
|
|
220
|
-
EFlashcardSessionStatus,
|
|
221
|
-
EFlashcardRating,
|
|
222
|
-
EFlashcardAlgorithm,
|
|
223
|
-
EASE_BOUNDS,
|
|
224
|
-
EASE_ADJUSTMENTS,
|
|
225
|
-
DEFAULT_PRESETS,
|
|
226
|
-
ANKI_DEFAULTS,
|
|
227
|
-
ALGORITHM_CONSTANTS
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
//# debugId=1185534FD6DD1B5064756E2164756E21
|
|
3
|
+
//# debugId=38A76FAEB9774D5664756E2164756E21
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"import type { IImage } from \"@ooneex/image\";\nimport type { IStatus } from \"@ooneex/status\";\nimport type { ITag } from \"@ooneex/tag\";\nimport type { IBase, IStat } from \"@ooneex/types\";\nimport type { ESessionType, ILevel } from \"../types\";\n\nexport enum EFlashcardState {\n /** Brand new card that hasn't been studied yet */\n NEW = \"new\",\n /** Card in learning phase with short intervals */\n LEARNING = \"learning\",\n /** Card in relearning phase after being forgotten */\n RELEARNING = \"relearning\",\n /** Graduated card in long-term review cycle */\n REVIEW = \"review\",\n /** Card temporarily hidden until next day */\n BURIED = \"buried\",\n /** Card permanently hidden from reviews */\n SUSPENDED = \"suspended\",\n}\n\nexport enum EFlashcardRating {\n /** Incorrect answer - restart learning */\n AGAIN = \"again\",\n /** Correct but difficult - shorter interval */\n HARD = \"hard\",\n /** Correct with some effort - normal interval */\n GOOD = \"good\",\n /** Correct with no effort - longer interval */\n EASY = \"easy\",\n}\n\nexport enum EFlashcardSessionStatus {\n DRAFT = \"draft\",\n STARTED = \"started\",\n PAUSED = \"paused\",\n COMPLETED = \"completed\",\n}\n\nexport enum EFlashcardAlgorithm {\n /** Legacy SuperMemo 2 algorithm */\n SM2 = \"sm2\",\n /** Free Spaced Repetition Scheduler (modern) */\n FSRS = \"fsrs\",\n}\n\nexport interface IFlashcardSchedule extends IBase {\n /** Current state of the card */\n state: EFlashcardState;\n /** Days until next review */\n interval: number;\n /** Ease factor for SM-2 algorithm (2.5 = 250%) */\n easeFactor: number;\n /** Number of times card has been reviewed */\n reviewCount: number;\n /** Number of times card has failed (lapses) */\n lapseCount: number;\n /** Current step in learning/relearning sequence */\n currentStep: number;\n /** When the card is due for review */\n dueDate: Date;\n /** Last time the card was reviewed */\n lastReviewedAt?: Date | null;\n /** FSRS-specific parameters */\n difficulty?: number; // FSRS difficulty (0-10)\n stability?: number; // FSRS stability in days\n retrievability?: number; // FSRS retrievability (0-1)\n /** Learning steps for this card (in minutes) */\n learningSteps: number[];\n /** Relearning steps for this card (in minutes) */\n relearningSteps: number[];\n}\n\nexport interface IFlashcard extends IBase {\n /** Front side content */\n front: string;\n /** Back side content */\n back: string;\n /** Optional hint text */\n hint?: string;\n /** Optional context or source */\n context?: string;\n contextId?: string;\n /** Scheduling information */\n schedule: IFlashcardSchedule;\n /** Additional metadata */\n tags?: ITag[];\n stat?: IStat;\n status?: IStatus;\n image?: IImage;\n}\n\nexport interface IFlashcardReview extends IBase {\n /** The flashcard being reviewed */\n card: IFlashcard;\n /** Session this review belongs to */\n session: IFlashcardSession;\n /** User's rating for this review */\n rating: EFlashcardRating;\n /** Time taken to answer (in seconds) */\n responseTime: number;\n /** Previous interval before this review */\n previousInterval: number;\n /** New interval after this review */\n newInterval: number;\n /** Previous ease factor */\n previousEaseFactor: number;\n /** New ease factor */\n newEaseFactor: number;\n /** Previous due date */\n previousDueDate: Date;\n /** New due date */\n newDueDate: Date;\n /** Previous card state */\n previousState: EFlashcardState;\n /** New card state */\n newState: EFlashcardState;\n /** Whether this was a lapse (forgotten card) */\n wasLapse: boolean;\n /** Algorithm used for scheduling */\n algorithm: EFlashcardAlgorithm;\n /** Review timestamp */\n reviewedAt: Date;\n}\n\nexport interface IFlashcardSession extends IBase {\n name: string;\n /** Total cards available for study */\n totalCards: number;\n /** Number of new cards in session */\n newCardsCount: number;\n /** Number of learning cards in session */\n learningCardsCount: number;\n /** Number of review cards in session */\n reviewCardsCount: number;\n /** Cards studied so far */\n studiedCount: number;\n /** Cards answered correctly */\n correctCount: number;\n /** Cards answered incorrectly */\n incorrectCount: number;\n /** Total study time in seconds */\n studyTime: number;\n /** Cards in this session */\n cards: IFlashcard[];\n /** Reviews completed in this session */\n reviews: IFlashcardReview[];\n /** Session status */\n status: EFlashcardSessionStatus;\n /** Overall session score (0-100) */\n score: number;\n /** Session start time */\n startedAt?: Date | null;\n /** Session pause time */\n pausedAt?: Date | null;\n /** Session resume time */\n resumedAt?: Date | null;\n /** Session completion time */\n completedAt?: Date | null;\n /** Type of study session */\n type: ESessionType;\n /** Difficulty level */\n level: ILevel;\n /** Algorithm configuration */\n algorithm: EFlashcardAlgorithm;\n /** Maximum new cards per session */\n maxNewCards: number;\n /** Maximum review cards per session */\n maxReviewCards: number;\n /** Desired retention rate (0-1) for FSRS */\n desiredRetention: number;\n /** Learning steps (in minutes) */\n learningSteps: number[];\n /** Graduating interval (in days) */\n graduatingInterval: number;\n /** Easy interval (in days) */\n easyInterval: number;\n /** Maximum interval (in days) */\n maxInterval: number;\n}\n\nexport interface IFlashcardDeck extends IBase {\n name: string;\n description?: string;\n /** Total cards in deck */\n totalCards: number;\n /** New cards ready to learn */\n newCards: number;\n /** Cards in learning phase */\n learningCards: number;\n /** Cards due for review today */\n dueCards: number;\n /** Cards suspended */\n suspendedCards: number;\n /** All flashcards in this deck */\n cards: IFlashcard[];\n /** Deck settings */\n algorithm: EFlashcardAlgorithm;\n maxNewCardsPerDay: number;\n maxReviewCardsPerDay: number;\n desiredRetention: number;\n learningSteps: number[];\n relearningSteps: number[];\n graduatingInterval: number;\n easyInterval: number;\n maxInterval: number;\n /** FSRS parameters (17 parameters) */\n fsrsParameters?: number[];\n /** Leech threshold (number of lapses before marking as leech) */\n leechThreshold: number;\n /** Whether to bury sibling cards */\n burySiblings: boolean;\n /** Deck statistics */\n stat?: IStat;\n status?: IStatus;\n}\n\nexport interface IFlashcardPreset extends IBase {\n name: string;\n description?: string;\n /** Algorithm to use */\n algorithm: EFlashcardAlgorithm;\n /** Learning configuration */\n learningSteps: number[];\n relearningSteps: number[];\n graduatingInterval: number;\n easyInterval: number;\n maxInterval: number;\n /** Daily limits */\n maxNewCardsPerDay: number;\n maxReviewCardsPerDay: number;\n /** FSRS configuration */\n desiredRetention: number;\n fsrsParameters?: number[];\n /** SM-2 configuration */\n startingEaseFactor: number;\n easyBonus: number;\n intervalModifier: number;\n hardInterval: number;\n newInterval: number;\n /** Lapse configuration */\n minimumInterval: number;\n leechThreshold: number;\n /** Display options */\n burySiblings: boolean;\n showTimer: boolean;\n autoPlayAudio: boolean;\n}\n\nexport interface IFlashcardStats extends IBase {\n /** Cards studied today */\n cardsStudiedToday: number;\n /** Time spent studying today (minutes) */\n timeSpentToday: number;\n /** Current streak (days) */\n currentStreak: number;\n /** Longest streak (days) */\n longestStreak: number;\n /** Total reviews all time */\n totalReviews: number;\n /** Total study time all time (minutes) */\n totalStudyTime: number;\n /** Average retention rate */\n retentionRate: number;\n /** Breakdown by card state */\n newCardsCount: number;\n learningCardsCount: number;\n reviewCardsCount: number;\n suspendedCardsCount: number;\n /** Maturity statistics */\n matureCardsCount: number; // Cards with interval >= 21 days\n youngCardsCount: number; // Cards with interval < 21 days\n /** Performance by rating */\n againCount: number;\n hardCount: number;\n goodCount: number;\n easyCount: number;\n /** Date range for these stats */\n startDate: Date;\n endDate: Date;\n}\n",
|
|
6
6
|
"import { EFlashcardAlgorithm, EFlashcardRating, EFlashcardState } from \"./types\";\n\n/**\n * Default Anki algorithm constants\n */\nexport const ANKI_DEFAULTS = {\n // Learning phase\n LEARNING_STEPS: [1, 10], // 1 minute, 10 minutes\n GRADUATING_INTERVAL: 1, // 1 day\n EASY_INTERVAL: 4, // 4 days\n\n // Review phase (SM-2)\n STARTING_EASE_FACTOR: 2.5, // 250%\n EASY_BONUS: 1.3, // 130%\n INTERVAL_MODIFIER: 1.0, // 100%\n HARD_INTERVAL: 1.2, // 120%\n\n // Lapses\n RELEARNING_STEPS: [10], // 10 minutes\n NEW_INTERVAL: 0.0, // 0% of previous interval\n MINIMUM_INTERVAL: 1, // 1 day\n LEECH_THRESHOLD: 8, // 8 lapses\n\n // Daily limits\n MAX_NEW_CARDS_PER_DAY: 20,\n MAX_REVIEW_CARDS_PER_DAY: 200,\n\n // Timing\n MAX_ANSWER_TIME: 60, // 60 seconds\n MIN_INTERVAL: 1, // 1 day minimum\n MAX_INTERVAL: 36500, // 100 years\n\n // FSRS\n DESIRED_RETENTION: 0.9, // 90%\n FSRS_DEFAULT_PARAMETERS: [\n 0.4072, 1.1829, 3.1262, 15.4722, 7.2102, 0.5316, 1.0651, 0.0234, 1.616, 0.1544, 1.0824, 1.9813, 0.0953, 0.2975,\n 2.2042, 0.2407, 2.9466,\n ],\n} as const;\n\n/**\n * Rating multipliers for interval calculation\n */\nexport const RATING_MULTIPLIERS: Record<EFlashcardRating, number> = Object.freeze({\n [EFlashcardRating.AGAIN]: 0, // Reset to learning\n [EFlashcardRating.HARD]: 1.2,\n [EFlashcardRating.GOOD]: 2.5, // Default ease factor\n [EFlashcardRating.EASY]: 2.5 * 1.3, // Easy bonus applied\n});\n\n/**\n * Ease factor adjustments based on rating\n */\nexport const EASE_ADJUSTMENTS: Record<EFlashcardRating, number> = Object.freeze({\n [EFlashcardRating.AGAIN]: -0.2, // Decrease ease by 20%\n [EFlashcardRating.HARD]: -0.15, // Decrease ease by 15%\n [EFlashcardRating.GOOD]: 0, // No change\n [EFlashcardRating.EASY]: 0.15, // Increase ease by 15%\n});\n\n/**\n * Minimum and maximum ease factor bounds\n */\nexport const EASE_BOUNDS = {\n MIN: 1.3, // 130% minimum\n MAX: 2.5, // 250% maximum (no upper bound in practice)\n} as const;\n\n/**\n * Card state transitions based on rating\n */\nexport const STATE_TRANSITIONS: Record<EFlashcardState, Record<EFlashcardRating, EFlashcardState>> = Object.freeze({\n [EFlashcardState.NEW]: Object.freeze({\n [EFlashcardRating.AGAIN]: EFlashcardState.LEARNING,\n [EFlashcardRating.HARD]: EFlashcardState.LEARNING,\n [EFlashcardRating.GOOD]: EFlashcardState.LEARNING,\n [EFlashcardRating.EASY]: EFlashcardState.REVIEW,\n }),\n [EFlashcardState.LEARNING]: Object.freeze({\n [EFlashcardRating.AGAIN]: EFlashcardState.LEARNING, // Restart learning\n [EFlashcardRating.HARD]: EFlashcardState.LEARNING, // Repeat current step\n [EFlashcardRating.GOOD]: EFlashcardState.LEARNING, // Next step or graduate\n [EFlashcardRating.EASY]: EFlashcardState.REVIEW, // Skip to review\n }),\n [EFlashcardState.REVIEW]: Object.freeze({\n [EFlashcardRating.AGAIN]: EFlashcardState.RELEARNING,\n [EFlashcardRating.HARD]: EFlashcardState.REVIEW,\n [EFlashcardRating.GOOD]: EFlashcardState.REVIEW,\n [EFlashcardRating.EASY]: EFlashcardState.REVIEW,\n }),\n [EFlashcardState.RELEARNING]: Object.freeze({\n [EFlashcardRating.AGAIN]: EFlashcardState.RELEARNING, // Restart relearning\n [EFlashcardRating.HARD]: EFlashcardState.RELEARNING, // Repeat current step\n [EFlashcardRating.GOOD]: EFlashcardState.RELEARNING, // Next step or back to review\n [EFlashcardRating.EASY]: EFlashcardState.REVIEW, // Skip to review\n }),\n [EFlashcardState.BURIED]: Object.freeze({\n [EFlashcardRating.AGAIN]: EFlashcardState.BURIED, // Remains buried\n [EFlashcardRating.HARD]: EFlashcardState.BURIED, // Remains buried\n [EFlashcardRating.GOOD]: EFlashcardState.BURIED, // Remains buried\n [EFlashcardRating.EASY]: EFlashcardState.BURIED, // Remains buried\n }),\n [EFlashcardState.SUSPENDED]: Object.freeze({\n [EFlashcardRating.AGAIN]: EFlashcardState.SUSPENDED, // Remains suspended\n [EFlashcardRating.HARD]: EFlashcardState.SUSPENDED, // Remains suspended\n [EFlashcardRating.GOOD]: EFlashcardState.SUSPENDED, // Remains suspended\n [EFlashcardRating.EASY]: EFlashcardState.SUSPENDED, // Remains suspended\n }),\n});\n\n/**\n * Learning step multipliers for Hard button\n */\nexport const LEARNING_HARD_MULTIPLIERS = {\n FIRST_STEP: 1.5, // 150% of first step when only one step\n AVERAGE_STEPS: 0.5, // 50% of average between current and next step\n} as const;\n\n/**\n * Fuzz factor for randomizing intervals\n */\nexport const FUZZ_FACTOR = {\n MIN: 0.95, // 95% of calculated interval\n MAX: 1.05, // 105% of calculated interval\n} as const;\n\n/**\n * Session scoring weights\n */\nexport const SCORE_WEIGHTS: Record<EFlashcardRating, number> = Object.freeze({\n [EFlashcardRating.AGAIN]: 0, // 0 points\n [EFlashcardRating.HARD]: 50, // 50 points\n [EFlashcardRating.GOOD]: 80, // 80 points\n [EFlashcardRating.EASY]: 100, // 100 points\n});\n\n/**\n * Card maturity threshold (days)\n */\nexport const MATURITY_THRESHOLD = 21; // Cards with interval >= 21 days are mature\n\n/**\n * Default preset configurations\n */\nexport const DEFAULT_PRESETS = {\n BEGINNER: {\n name: \"Beginner\",\n description: \"For new learners with more repetition\",\n learningSteps: [1, 10, 1440], // 1m, 10m, 1d\n graduatingInterval: 2,\n easyInterval: 7,\n maxNewCardsPerDay: 10,\n desiredRetention: 0.85,\n },\n DEFAULT: {\n name: \"Default\",\n description: \"Balanced settings for most users\",\n learningSteps: [1, 10], // 1m, 10m\n graduatingInterval: 1,\n easyInterval: 4,\n maxNewCardsPerDay: 20,\n desiredRetention: 0.9,\n },\n INTENSIVE: {\n name: \"Intensive\",\n description: \"For serious learners who want higher retention\",\n learningSteps: [1, 10], // 1m, 10m\n graduatingInterval: 1,\n easyInterval: 4,\n maxNewCardsPerDay: 30,\n desiredRetention: 0.95,\n },\n LIGHT: {\n name: \"Light\",\n description: \"For casual learning with fewer reviews\",\n learningSteps: [1, 10], // 1m, 10m\n graduatingInterval: 3,\n easyInterval: 7,\n maxNewCardsPerDay: 15,\n desiredRetention: 0.8,\n },\n} as const;\n\n/**\n * Algorithm-specific constants\n */\ninterface SM2Constants {\n MIN_EASE_FACTOR: number;\n MAX_EASE_FACTOR: number;\n EASE_ADJUSTMENT_STEP: number;\n}\n\ninterface FSRSConstants {\n MIN_DIFFICULTY: number;\n MAX_DIFFICULTY: number;\n MIN_STABILITY: number;\n MAX_STABILITY: number;\n MIN_RETRIEVABILITY: number;\n MAX_RETRIEVABILITY: number;\n}\n\ntype AlgorithmConstants = {\n [EFlashcardAlgorithm.SM2]: SM2Constants;\n [EFlashcardAlgorithm.FSRS]: FSRSConstants;\n};\n\nexport const ALGORITHM_CONSTANTS: AlgorithmConstants = Object.freeze({\n [EFlashcardAlgorithm.SM2]: Object.freeze({\n MIN_EASE_FACTOR: 1.3,\n MAX_EASE_FACTOR: 2.5,\n EASE_ADJUSTMENT_STEP: 0.15,\n }),\n [EFlashcardAlgorithm.FSRS]: Object.freeze({\n MIN_DIFFICULTY: 1,\n MAX_DIFFICULTY: 10,\n MIN_STABILITY: 0.1,\n MAX_STABILITY: 36500,\n MIN_RETRIEVABILITY: 0.01,\n MAX_RETRIEVABILITY: 0.99,\n }),\n});\n\n/**\n * Utility functions for common calculations\n */\nexport const UTILS = {\n /**\n * Convert minutes to milliseconds\n */\n minutesToMs: (minutes: number): number => minutes * 60 * 1000,\n\n /**\n * Convert days to milliseconds\n */\n daysToMs: (days: number): number => days * 24 * 60 * 60 * 1000,\n\n /**\n * Apply fuzz factor to interval\n */\n applyFuzz: (interval: number): number => {\n const fuzz = FUZZ_FACTOR.MIN + Math.random() * (FUZZ_FACTOR.MAX - FUZZ_FACTOR.MIN);\n return Math.max(1, Math.round(interval * fuzz));\n },\n\n /**\n * Clamp ease factor to valid range\n */\n clampEaseFactor: (ease: number): number => {\n return Math.max(EASE_BOUNDS.MIN, Math.min(ease, EASE_BOUNDS.MAX));\n },\n\n /**\n * Calculate session score\n */\n calculateScore: (ratings: EFlashcardRating[]): number => {\n if (ratings.length === 0) return 0;\n const totalPoints = ratings.reduce((sum, rating) => sum + SCORE_WEIGHTS[rating], 0);\n const maxPossible = ratings.length * SCORE_WEIGHTS[EFlashcardRating.EASY];\n return Math.round((totalPoints / maxPossible) * 100);\n },\n\n /**\n * Determine if card is mature\n */\n isMature: (interval: number): boolean => interval >= MATURITY_THRESHOLD,\n} as const;\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "AAMO,IAAK,GAAL,CAAK,IAAL,CAEL,MAAM,MAEN,WAAW,WAEX,aAAa,aAEb,SAAS,SAET,SAAS,SAET,YAAY,cAZF,QAeL,IAAK,GAAL,CAAK,IAAL,CAEL,QAAQ,QAER,OAAO,OAEP,OAAO,OAEP,OAAO,SARG,QAWL,IAAK,GAAL,CAAK,IAAL,CACL,QAAQ,QACR,UAAU,UACV,SAAS,SACT,YAAY,cAJF,QAOL,IAAK,GAAL,CAAK,IAAL,CAEL,MAAM,MAEN,OAAO,SAJG,QClCL,IAAM,EAAgB,CAE3B,eAAgB,CAAC,EAAG,EAAE,EACtB,oBAAqB,EACrB,cAAe,EAGf,qBAAsB,IACtB,WAAY,IACZ,kBAAmB,EACnB,cAAe,IAGf,iBAAkB,CAAC,EAAE,EACrB,aAAc,EACd,iBAAkB,EAClB,gBAAiB,EAGjB,sBAAuB,GACvB,yBAA0B,IAG1B,gBAAiB,GACjB,aAAc,EACd,aAAc,MAGd,kBAAmB,IACnB,wBAAyB,CACvB,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OACxG,OAAQ,OAAQ,MAClB,CACF,EAKa,EAAuD,OAAO,OAAO,CAC/E,MAAyB,EACzB,KAAwB,IACxB,KAAwB,IACxB,KAAwB,IAC3B,CAAC,EAKY,EAAqD,OAAO,OAAO,CAC7E,MAAyB,KACzB,KAAwB,MACxB,KAAwB,EACxB,KAAwB,IAC3B,CAAC,EAKY,EAAc,CACzB,IAAK,IACL,IAAK,GACP,EAKa,EAAwF,OAAO,OAAO,CAChH,IAAsB,OAAO,OAAO,CAClC,iBACA,gBACA,gBACA,aACH,CAAC,EACA,SAA2B,OAAO,OAAO,CACvC,iBACA,gBACA,gBACA,aACH,CAAC,EACA,OAAyB,OAAO,OAAO,CACrC,mBACA,cACA,cACA,aACH,CAAC,EACA,WAA6B,OAAO,OAAO,CACzC,mBACA,kBACA,kBACA,aACH,CAAC,EACA,OAAyB,OAAO,OAAO,CACrC,eACA,cACA,cACA,aACH,CAAC,EACA,UAA4B,OAAO,OAAO,CACxC,kBACA,iBACA,iBACA,gBACH,CAAC,CACH,CAAC,EAKY,EAA4B,CACvC,WAAY,IACZ,cAAe,GACjB,EAKa,EAAc,CACzB,IAAK,KACL,IAAK,IACP,EAKa,EAAkD,OAAO,OAAO,CAC1E,MAAyB,EACzB,KAAwB,GACxB,KAAwB,GACxB,KAAwB,GAC3B,CAAC,EAKY,EAAqB,GAKrB,EAAkB,CAC7B,SAAU,CACR,KAAM,WACN,YAAa,wCACb,cAAe,CAAC,EAAG,GAAI,IAAI,EAC3B,mBAAoB,EACpB,aAAc,EACd,kBAAmB,GACnB,iBAAkB,IACpB,EACA,QAAS,CACP,KAAM,UACN,YAAa,mCACb,cAAe,CAAC,EAAG,EAAE,EACrB,mBAAoB,EACpB,aAAc,EACd,kBAAmB,GACnB,iBAAkB,GACpB,EACA,UAAW,CACT,KAAM,YACN,YAAa,iDACb,cAAe,CAAC,EAAG,EAAE,EACrB,mBAAoB,EACpB,aAAc,EACd,kBAAmB,GACnB,iBAAkB,IACpB,EACA,MAAO,CACL,KAAM,QACN,YAAa,yCACb,cAAe,CAAC,EAAG,EAAE,EACrB,mBAAoB,EACpB,aAAc,EACd,kBAAmB,GACnB,iBAAkB,GACpB,CACF,EAyBa,EAA0C,OAAO,OAAO,CAClE,IAA0B,OAAO,OAAO,CACvC,gBAAiB,IACjB,gBAAiB,IACjB,qBAAsB,IACxB,CAAC,EACA,KAA2B,OAAO,OAAO,CACxC,eAAgB,EAChB,eAAgB,GAChB,cAAe,IACf,cAAe,MACf,mBAAoB,KACpB,mBAAoB,IACtB,CAAC,CACH,CAAC,EAKY,EAAQ,CAInB,YAAa,CAAC,IAA4B,EAAU,GAAK,KAKzD,SAAU,CAAC,IAAyB,EAAO,GAAK,GAAK,GAAK,KAK1D,UAAW,CAAC,IAA6B,CACvC,IAAM,EAAO,EAAY,IAAM,KAAK,OAAO,GAAK,EAAY,IAAM,EAAY,KAC9E,OAAO,KAAK,IAAI,EAAG,KAAK,MAAM,EAAW,CAAI,CAAC,GAMhD,gBAAiB,CAAC,IAAyB,CACzC,OAAO,KAAK,IAAI,EAAY,IAAK,KAAK,IAAI,EAAM,EAAY,GAAG,CAAC,GAMlE,eAAgB,CAAC,IAAwC,CACvD,GAAI,EAAQ,SAAW,EAAG,MAAO,GACjC,IAAM,EAAc,EAAQ,OAAO,CAAC,EAAK,IAAW,EAAM,EAAc,GAAS,CAAC,EAC5E,EAAc,EAAQ,OAAS,EAAc,QACnD,OAAO,KAAK,MAAO,EAAc,EAAe,GAAG,GAMrD,SAAU,CAAC,IAA8B,GAAY,CACvD",
|
|
9
|
+
"debugId": "38A76FAEB9774D5664756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,197 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
var ESessionType;
|
|
3
|
-
((ESessionType2) => {
|
|
4
|
-
ESessionType2["TRAINING"] = "training";
|
|
5
|
-
ESessionType2["PRACTICE"] = "practice";
|
|
6
|
-
ESessionType2["SIMULATION"] = "simulation";
|
|
7
|
-
ESessionType2["QUIZ"] = "quiz";
|
|
8
|
-
ESessionType2["CHALLENGE"] = "challenge";
|
|
9
|
-
ESessionType2["TOURNAMENT"] = "tournament";
|
|
10
|
-
ESessionType2["REVIEW"] = "review";
|
|
11
|
-
ESessionType2["DIAGNOSTIC"] = "diagnostic";
|
|
12
|
-
ESessionType2["SPEED_TEST"] = "speed_test";
|
|
13
|
-
})(ESessionType ||= {});
|
|
14
|
-
var EAnswerState;
|
|
15
|
-
((EAnswerState2) => {
|
|
16
|
-
EAnswerState2["CORRECT"] = "correct";
|
|
17
|
-
EAnswerState2["INCORRECT"] = "incorrect";
|
|
18
|
-
})(EAnswerState ||= {});
|
|
1
|
+
var n;((e)=>{e.TRAINING="training";e.PRACTICE="practice";e.SIMULATION="simulation";e.QUIZ="quiz";e.CHALLENGE="challenge";e.TOURNAMENT="tournament";e.REVIEW="review";e.DIAGNOSTIC="diagnostic";e.SPEED_TEST="speed_test"})(n||={});var o;((i)=>{i.CORRECT="correct";i.INCORRECT="incorrect"})(o||={});var r=[{code:"training",name:"Training",description:"Learning-focused session with detailed explanations and guided experience. Perfect for acquiring new knowledge and understanding complex concepts step by step.",color:"#3b82f6"},{code:"practice",name:"Practice",description:"Reinforcement session for solidifying already learned knowledge. Helps strengthen understanding through repetition and application of learned concepts.",color:"#10b981"},{code:"simulation",name:"Simulation",description:"Mock test environment simulating real exam conditions. Provides realistic practice experience with authentic timing and pressure conditions.",color:"#f59e0b"},{code:"quiz",name:"Quiz",description:"Quick knowledge check with immediate feedback. Short and focused sessions to assess current understanding and identify areas for improvement.",color:"#8b5cf6"},{code:"challenge",name:"Challenge",description:"Competitive or difficult questions designed to test limits. Advanced sessions that push your knowledge boundaries and critical thinking skills.",color:"#ef4444"},{code:"tournament",name:"Tournament",description:"Multiplayer competitive session with rankings and prizes. Compete against other players in real-time for leaderboard positions and rewards.",color:"#f59e0b"},{code:"review",name:"Review",description:"Session for revisiting previously answered questions and mistakes. Focused practice on areas where improvement is needed based on past performance.",color:"#6b7280"},{code:"diagnostic",name:"Diagnostic",description:"Initial assessment to identify knowledge gaps and skill levels. Comprehensive evaluation to create a personalized learning path.",color:"#06b6d4"},{code:"speed_test",name:"Speed Test",description:"Time-pressured rapid-fire questions focusing on speed and accuracy. Develops quick thinking and decision-making skills under time constraints.",color:"#ec4899"}],a=[{code:"training",name:"Formation",description:"Session d'apprentissage avec explications détaillées et expérience guidée. Parfait pour acquérir de nouvelles connaissances et comprendre des concepts complexes étape par étape.",color:"#3b82f6"},{code:"practice",name:"Pratique",description:"Session de renforcement pour consolider les connaissances déjà apprises. Aide à renforcer la compréhension par la répétition et l'application des concepts appris.",color:"#10b981"},{code:"simulation",name:"Simulation",description:"Environnement d'examen simulé reproduisant les conditions réelles d'examen. Offre une expérience de pratique réaliste avec un timing et une pression authentiques.",color:"#f59e0b"},{code:"quiz",name:"Quiz",description:"Contrôle rapide des connaissances avec feedback immédiat. Sessions courtes et ciblées pour évaluer la compréhension actuelle et identifier les domaines à améliorer.",color:"#8b5cf6"},{code:"challenge",name:"Défi",description:"Questions compétitives ou difficiles conçues pour tester les limites. Sessions avancées qui repoussent vos limites de connaissances et vos compétences de pensée critique.",color:"#ef4444"},{code:"tournament",name:"Tournoi",description:"Session compétitive multijoueur avec classements et prix. Affrontez d'autres joueurs en temps réel pour des positions au classement et des récompenses.",color:"#f59e0b"},{code:"review",name:"Révision",description:"Session pour revoir les questions précédemment répondues et les erreurs. Pratique ciblée sur les domaines nécessitant une amélioration basée sur les performances passées.",color:"#6b7280"},{code:"diagnostic",name:"Diagnostic",description:"Évaluation initiale pour identifier les lacunes de connaissances et les niveaux de compétences. Évaluation complète pour créer un parcours d'apprentissage personnalisé.",color:"#06b6d4"},{code:"speed_test",name:"Test de Vitesse",description:"Questions rapides sous pression temporelle axées sur la vitesse et la précision. Développe la pensée rapide et les compétences de prise de décision sous contraintes de temps.",color:"#ec4899"}],s=[{code:"training",name:"Antrenament",description:"Sesiune de învățare cu explicații detaliate și experiență ghidată. Perfect pentru dobândirea de cunoștințe noi și înțelegerea conceptelor complexe pas cu pas.",color:"#3b82f6"},{code:"practice",name:"Practică",description:"Sesiune de consolidare pentru solidificarea cunoștințelor deja învățate. Ajută la consolidarea înțelegerii prin repetiție și aplicarea conceptelor învățate.",color:"#10b981"},{code:"simulation",name:"Simulare",description:"Mediu de testare simulat care reproduce condițiile reale de examen. Oferă o experiență de practică realistă cu timp și presiune autentice.",color:"#f59e0b"},{code:"quiz",name:"Quiz",description:"Verificare rapidă a cunoștințelor cu feedback imediat. Sesiuni scurte și focalizate pentru a evalua înțelegerea actuală și a identifica domeniile de îmbunătățit.",color:"#8b5cf6"},{code:"challenge",name:"Provocare",description:"Întrebări competitive sau dificile concepute pentru a testa limitele. Sesiuni avansate care îți împing limitele cunoștințelor și abilitățile de gândire critică.",color:"#ef4444"},{code:"tournament",name:"Turneu",description:"Sesiune competitivă multiplayer cu clasamente și premii. Concurează cu alți jucători în timp real pentru poziții în clasament și recompense.",color:"#f59e0b"},{code:"review",name:"Recapitulare",description:"Sesiune pentru revizuirea întrebărilor răspunse anterior și greșelilor. Practică focalizată pe domeniile care necesită îmbunătățire pe baza performanțelor anterioare.",color:"#6b7280"},{code:"diagnostic",name:"Diagnostic",description:"Evaluare inițială pentru identificarea lacunelor de cunoștințe și nivelurilor de competențe. Evaluare cuprinzătoare pentru crearea unei căi de învățare personalizate.",color:"#06b6d4"},{code:"speed_test",name:"Test de Viteză",description:"Întrebări rapide sub presiunea timpului, axate pe viteză și acuratețe. Dezvoltă gândirea rapidă și abilitățile de luare a deciziilor sub constrângeri de timp.",color:"#ec4899"}];export{s as SESSION_TYPES_RO,a as SESSION_TYPES_FR,r as SESSION_TYPES_EN,n as ESessionType,o as EAnswerState};
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
var SESSION_TYPES_EN = [
|
|
22
|
-
{
|
|
23
|
-
code: "training" /* TRAINING */,
|
|
24
|
-
name: "Training",
|
|
25
|
-
description: "Learning-focused session with detailed explanations and guided experience. Perfect for acquiring new knowledge and understanding complex concepts step by step.",
|
|
26
|
-
color: "#3b82f6"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
code: "practice" /* PRACTICE */,
|
|
30
|
-
name: "Practice",
|
|
31
|
-
description: "Reinforcement session for solidifying already learned knowledge. Helps strengthen understanding through repetition and application of learned concepts.",
|
|
32
|
-
color: "#10b981"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
code: "simulation" /* SIMULATION */,
|
|
36
|
-
name: "Simulation",
|
|
37
|
-
description: "Mock test environment simulating real exam conditions. Provides realistic practice experience with authentic timing and pressure conditions.",
|
|
38
|
-
color: "#f59e0b"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
code: "quiz" /* QUIZ */,
|
|
42
|
-
name: "Quiz",
|
|
43
|
-
description: "Quick knowledge check with immediate feedback. Short and focused sessions to assess current understanding and identify areas for improvement.",
|
|
44
|
-
color: "#8b5cf6"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
code: "challenge" /* CHALLENGE */,
|
|
48
|
-
name: "Challenge",
|
|
49
|
-
description: "Competitive or difficult questions designed to test limits. Advanced sessions that push your knowledge boundaries and critical thinking skills.",
|
|
50
|
-
color: "#ef4444"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
code: "tournament" /* TOURNAMENT */,
|
|
54
|
-
name: "Tournament",
|
|
55
|
-
description: "Multiplayer competitive session with rankings and prizes. Compete against other players in real-time for leaderboard positions and rewards.",
|
|
56
|
-
color: "#f59e0b"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
code: "review" /* REVIEW */,
|
|
60
|
-
name: "Review",
|
|
61
|
-
description: "Session for revisiting previously answered questions and mistakes. Focused practice on areas where improvement is needed based on past performance.",
|
|
62
|
-
color: "#6b7280"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
code: "diagnostic" /* DIAGNOSTIC */,
|
|
66
|
-
name: "Diagnostic",
|
|
67
|
-
description: "Initial assessment to identify knowledge gaps and skill levels. Comprehensive evaluation to create a personalized learning path.",
|
|
68
|
-
color: "#06b6d4"
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
code: "speed_test" /* SPEED_TEST */,
|
|
72
|
-
name: "Speed Test",
|
|
73
|
-
description: "Time-pressured rapid-fire questions focusing on speed and accuracy. Develops quick thinking and decision-making skills under time constraints.",
|
|
74
|
-
color: "#ec4899"
|
|
75
|
-
}
|
|
76
|
-
];
|
|
77
|
-
var SESSION_TYPES_FR = [
|
|
78
|
-
{
|
|
79
|
-
code: "training" /* TRAINING */,
|
|
80
|
-
name: "Formation",
|
|
81
|
-
description: "Session d'apprentissage avec explications détaillées et expérience guidée. Parfait pour acquérir de nouvelles connaissances et comprendre des concepts complexes étape par étape.",
|
|
82
|
-
color: "#3b82f6"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
code: "practice" /* PRACTICE */,
|
|
86
|
-
name: "Pratique",
|
|
87
|
-
description: "Session de renforcement pour consolider les connaissances déjà apprises. Aide à renforcer la compréhension par la répétition et l'application des concepts appris.",
|
|
88
|
-
color: "#10b981"
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
code: "simulation" /* SIMULATION */,
|
|
92
|
-
name: "Simulation",
|
|
93
|
-
description: "Environnement d'examen simulé reproduisant les conditions réelles d'examen. Offre une expérience de pratique réaliste avec un timing et une pression authentiques.",
|
|
94
|
-
color: "#f59e0b"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
code: "quiz" /* QUIZ */,
|
|
98
|
-
name: "Quiz",
|
|
99
|
-
description: "Contrôle rapide des connaissances avec feedback immédiat. Sessions courtes et ciblées pour évaluer la compréhension actuelle et identifier les domaines à améliorer.",
|
|
100
|
-
color: "#8b5cf6"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
code: "challenge" /* CHALLENGE */,
|
|
104
|
-
name: "Défi",
|
|
105
|
-
description: "Questions compétitives ou difficiles conçues pour tester les limites. Sessions avancées qui repoussent vos limites de connaissances et vos compétences de pensée critique.",
|
|
106
|
-
color: "#ef4444"
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
code: "tournament" /* TOURNAMENT */,
|
|
110
|
-
name: "Tournoi",
|
|
111
|
-
description: "Session compétitive multijoueur avec classements et prix. Affrontez d'autres joueurs en temps réel pour des positions au classement et des récompenses.",
|
|
112
|
-
color: "#f59e0b"
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
code: "review" /* REVIEW */,
|
|
116
|
-
name: "Révision",
|
|
117
|
-
description: "Session pour revoir les questions précédemment répondues et les erreurs. Pratique ciblée sur les domaines nécessitant une amélioration basée sur les performances passées.",
|
|
118
|
-
color: "#6b7280"
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
code: "diagnostic" /* DIAGNOSTIC */,
|
|
122
|
-
name: "Diagnostic",
|
|
123
|
-
description: "Évaluation initiale pour identifier les lacunes de connaissances et les niveaux de compétences. Évaluation complète pour créer un parcours d'apprentissage personnalisé.",
|
|
124
|
-
color: "#06b6d4"
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
code: "speed_test" /* SPEED_TEST */,
|
|
128
|
-
name: "Test de Vitesse",
|
|
129
|
-
description: "Questions rapides sous pression temporelle axées sur la vitesse et la précision. Développe la pensée rapide et les compétences de prise de décision sous contraintes de temps.",
|
|
130
|
-
color: "#ec4899"
|
|
131
|
-
}
|
|
132
|
-
];
|
|
133
|
-
var SESSION_TYPES_RO = [
|
|
134
|
-
{
|
|
135
|
-
code: "training" /* TRAINING */,
|
|
136
|
-
name: "Antrenament",
|
|
137
|
-
description: "Sesiune de învățare cu explicații detaliate și experiență ghidată. Perfect pentru dobândirea de cunoștințe noi și înțelegerea conceptelor complexe pas cu pas.",
|
|
138
|
-
color: "#3b82f6"
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
code: "practice" /* PRACTICE */,
|
|
142
|
-
name: "Practică",
|
|
143
|
-
description: "Sesiune de consolidare pentru solidificarea cunoștințelor deja învățate. Ajută la consolidarea înțelegerii prin repetiție și aplicarea conceptelor învățate.",
|
|
144
|
-
color: "#10b981"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
code: "simulation" /* SIMULATION */,
|
|
148
|
-
name: "Simulare",
|
|
149
|
-
description: "Mediu de testare simulat care reproduce condițiile reale de examen. Oferă o experiență de practică realistă cu timp și presiune autentice.",
|
|
150
|
-
color: "#f59e0b"
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
code: "quiz" /* QUIZ */,
|
|
154
|
-
name: "Quiz",
|
|
155
|
-
description: "Verificare rapidă a cunoștințelor cu feedback imediat. Sesiuni scurte și focalizate pentru a evalua înțelegerea actuală și a identifica domeniile de îmbunătățit.",
|
|
156
|
-
color: "#8b5cf6"
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
code: "challenge" /* CHALLENGE */,
|
|
160
|
-
name: "Provocare",
|
|
161
|
-
description: "Întrebări competitive sau dificile concepute pentru a testa limitele. Sesiuni avansate care îți împing limitele cunoștințelor și abilitățile de gândire critică.",
|
|
162
|
-
color: "#ef4444"
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
code: "tournament" /* TOURNAMENT */,
|
|
166
|
-
name: "Turneu",
|
|
167
|
-
description: "Sesiune competitivă multiplayer cu clasamente și premii. Concurează cu alți jucători în timp real pentru poziții în clasament și recompense.",
|
|
168
|
-
color: "#f59e0b"
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
code: "review" /* REVIEW */,
|
|
172
|
-
name: "Recapitulare",
|
|
173
|
-
description: "Sesiune pentru revizuirea întrebărilor răspunse anterior și greșelilor. Practică focalizată pe domeniile care necesită îmbunătățire pe baza performanțelor anterioare.",
|
|
174
|
-
color: "#6b7280"
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
code: "diagnostic" /* DIAGNOSTIC */,
|
|
178
|
-
name: "Diagnostic",
|
|
179
|
-
description: "Evaluare inițială pentru identificarea lacunelor de cunoștințe și nivelurilor de competențe. Evaluare cuprinzătoare pentru crearea unei căi de învățare personalizate.",
|
|
180
|
-
color: "#06b6d4"
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
code: "speed_test" /* SPEED_TEST */,
|
|
184
|
-
name: "Test de Viteză",
|
|
185
|
-
description: "Întrebări rapide sub presiunea timpului, axate pe viteză și acuratețe. Dezvoltă gândirea rapidă și abilitățile de luare a deciziilor sub constrângeri de timp.",
|
|
186
|
-
color: "#ec4899"
|
|
187
|
-
}
|
|
188
|
-
];
|
|
189
|
-
export {
|
|
190
|
-
SESSION_TYPES_RO,
|
|
191
|
-
SESSION_TYPES_FR,
|
|
192
|
-
SESSION_TYPES_EN,
|
|
193
|
-
ESessionType,
|
|
194
|
-
EAnswerState
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
//# debugId=3C43F3BABC69C9F764756E2164756E21
|
|
3
|
+
//# debugId=51B4C4C4B3E30D1C64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"import type { IBase } from \"@ooneex/types\";\n\nexport interface ILevel extends IBase {\n name: string;\n code: string;\n color: string;\n}\n\nexport enum ESessionType {\n /** Learning-focused session with detailed explanations and guided experience */\n TRAINING = \"training\",\n /** Reinforcement session for solidifying already learned knowledge */\n PRACTICE = \"practice\",\n /** Mock test environment simulating real exam conditions */\n SIMULATION = \"simulation\",\n /** Quick knowledge check with immediate feedback */\n QUIZ = \"quiz\",\n /** Competitive or difficult questions designed to test limits */\n CHALLENGE = \"challenge\",\n /** Multiplayer competitive session with rankings and prizes */\n TOURNAMENT = \"tournament\",\n /** Session for revisiting previously answered questions and mistakes */\n REVIEW = \"review\",\n /** Initial assessment to identify knowledge gaps and skill levels */\n DIAGNOSTIC = \"diagnostic\",\n /** Time-pressured rapid-fire questions focusing on speed and accuracy */\n SPEED_TEST = \"speed_test\",\n}\n\nexport enum EAnswerState {\n CORRECT = \"correct\",\n INCORRECT = \"incorrect\",\n}\n",
|
|
6
6
|
"import { ESessionType } from \"./types\";\n\ntype SessionTypeItem = {\n readonly code: ESessionType;\n readonly name: string;\n readonly description: string;\n readonly color: string;\n};\n\nexport const SESSION_TYPES_EN: readonly SessionTypeItem[] = [\n {\n code: ESessionType.TRAINING,\n name: \"Training\",\n description:\n \"Learning-focused session with detailed explanations and guided experience. Perfect for acquiring new knowledge and understanding complex concepts step by step.\",\n color: \"#3b82f6\",\n },\n {\n code: ESessionType.PRACTICE,\n name: \"Practice\",\n description:\n \"Reinforcement session for solidifying already learned knowledge. Helps strengthen understanding through repetition and application of learned concepts.\",\n color: \"#10b981\",\n },\n {\n code: ESessionType.SIMULATION,\n name: \"Simulation\",\n description:\n \"Mock test environment simulating real exam conditions. Provides realistic practice experience with authentic timing and pressure conditions.\",\n color: \"#f59e0b\",\n },\n {\n code: ESessionType.QUIZ,\n name: \"Quiz\",\n description:\n \"Quick knowledge check with immediate feedback. Short and focused sessions to assess current understanding and identify areas for improvement.\",\n color: \"#8b5cf6\",\n },\n {\n code: ESessionType.CHALLENGE,\n name: \"Challenge\",\n description:\n \"Competitive or difficult questions designed to test limits. Advanced sessions that push your knowledge boundaries and critical thinking skills.\",\n color: \"#ef4444\",\n },\n {\n code: ESessionType.TOURNAMENT,\n name: \"Tournament\",\n description:\n \"Multiplayer competitive session with rankings and prizes. Compete against other players in real-time for leaderboard positions and rewards.\",\n color: \"#f59e0b\",\n },\n {\n code: ESessionType.REVIEW,\n name: \"Review\",\n description:\n \"Session for revisiting previously answered questions and mistakes. Focused practice on areas where improvement is needed based on past performance.\",\n color: \"#6b7280\",\n },\n {\n code: ESessionType.DIAGNOSTIC,\n name: \"Diagnostic\",\n description:\n \"Initial assessment to identify knowledge gaps and skill levels. Comprehensive evaluation to create a personalized learning path.\",\n color: \"#06b6d4\",\n },\n {\n code: ESessionType.SPEED_TEST,\n name: \"Speed Test\",\n description:\n \"Time-pressured rapid-fire questions focusing on speed and accuracy. Develops quick thinking and decision-making skills under time constraints.\",\n color: \"#ec4899\",\n },\n] as const;\n\nexport const SESSION_TYPES_FR: readonly SessionTypeItem[] = [\n {\n code: ESessionType.TRAINING,\n name: \"Formation\",\n description:\n \"Session d'apprentissage avec explications détaillées et expérience guidée. Parfait pour acquérir de nouvelles connaissances et comprendre des concepts complexes étape par étape.\",\n color: \"#3b82f6\",\n },\n {\n code: ESessionType.PRACTICE,\n name: \"Pratique\",\n description:\n \"Session de renforcement pour consolider les connaissances déjà apprises. Aide à renforcer la compréhension par la répétition et l'application des concepts appris.\",\n color: \"#10b981\",\n },\n {\n code: ESessionType.SIMULATION,\n name: \"Simulation\",\n description:\n \"Environnement d'examen simulé reproduisant les conditions réelles d'examen. Offre une expérience de pratique réaliste avec un timing et une pression authentiques.\",\n color: \"#f59e0b\",\n },\n {\n code: ESessionType.QUIZ,\n name: \"Quiz\",\n description:\n \"Contrôle rapide des connaissances avec feedback immédiat. Sessions courtes et ciblées pour évaluer la compréhension actuelle et identifier les domaines à améliorer.\",\n color: \"#8b5cf6\",\n },\n {\n code: ESessionType.CHALLENGE,\n name: \"Défi\",\n description:\n \"Questions compétitives ou difficiles conçues pour tester les limites. Sessions avancées qui repoussent vos limites de connaissances et vos compétences de pensée critique.\",\n color: \"#ef4444\",\n },\n {\n code: ESessionType.TOURNAMENT,\n name: \"Tournoi\",\n description:\n \"Session compétitive multijoueur avec classements et prix. Affrontez d'autres joueurs en temps réel pour des positions au classement et des récompenses.\",\n color: \"#f59e0b\",\n },\n {\n code: ESessionType.REVIEW,\n name: \"Révision\",\n description:\n \"Session pour revoir les questions précédemment répondues et les erreurs. Pratique ciblée sur les domaines nécessitant une amélioration basée sur les performances passées.\",\n color: \"#6b7280\",\n },\n {\n code: ESessionType.DIAGNOSTIC,\n name: \"Diagnostic\",\n description:\n \"Évaluation initiale pour identifier les lacunes de connaissances et les niveaux de compétences. Évaluation complète pour créer un parcours d'apprentissage personnalisé.\",\n color: \"#06b6d4\",\n },\n {\n code: ESessionType.SPEED_TEST,\n name: \"Test de Vitesse\",\n description:\n \"Questions rapides sous pression temporelle axées sur la vitesse et la précision. Développe la pensée rapide et les compétences de prise de décision sous contraintes de temps.\",\n color: \"#ec4899\",\n },\n] as const;\n\nexport const SESSION_TYPES_RO: readonly SessionTypeItem[] = [\n {\n code: ESessionType.TRAINING,\n name: \"Antrenament\",\n description:\n \"Sesiune de învățare cu explicații detaliate și experiență ghidată. Perfect pentru dobândirea de cunoștințe noi și înțelegerea conceptelor complexe pas cu pas.\",\n color: \"#3b82f6\",\n },\n {\n code: ESessionType.PRACTICE,\n name: \"Practică\",\n description:\n \"Sesiune de consolidare pentru solidificarea cunoștințelor deja învățate. Ajută la consolidarea înțelegerii prin repetiție și aplicarea conceptelor învățate.\",\n color: \"#10b981\",\n },\n {\n code: ESessionType.SIMULATION,\n name: \"Simulare\",\n description:\n \"Mediu de testare simulat care reproduce condițiile reale de examen. Oferă o experiență de practică realistă cu timp și presiune autentice.\",\n color: \"#f59e0b\",\n },\n {\n code: ESessionType.QUIZ,\n name: \"Quiz\",\n description:\n \"Verificare rapidă a cunoștințelor cu feedback imediat. Sesiuni scurte și focalizate pentru a evalua înțelegerea actuală și a identifica domeniile de îmbunătățit.\",\n color: \"#8b5cf6\",\n },\n {\n code: ESessionType.CHALLENGE,\n name: \"Provocare\",\n description:\n \"Întrebări competitive sau dificile concepute pentru a testa limitele. Sesiuni avansate care îți împing limitele cunoștințelor și abilitățile de gândire critică.\",\n color: \"#ef4444\",\n },\n {\n code: ESessionType.TOURNAMENT,\n name: \"Turneu\",\n description:\n \"Sesiune competitivă multiplayer cu clasamente și premii. Concurează cu alți jucători în timp real pentru poziții în clasament și recompense.\",\n color: \"#f59e0b\",\n },\n {\n code: ESessionType.REVIEW,\n name: \"Recapitulare\",\n description:\n \"Sesiune pentru revizuirea întrebărilor răspunse anterior și greșelilor. Practică focalizată pe domeniile care necesită îmbunătățire pe baza performanțelor anterioare.\",\n color: \"#6b7280\",\n },\n {\n code: ESessionType.DIAGNOSTIC,\n name: \"Diagnostic\",\n description:\n \"Evaluare inițială pentru identificarea lacunelor de cunoștințe și nivelurilor de competențe. Evaluare cuprinzătoare pentru crearea unei căi de învățare personalizate.\",\n color: \"#06b6d4\",\n },\n {\n code: ESessionType.SPEED_TEST,\n name: \"Test de Viteză\",\n description:\n \"Întrebări rapide sub presiunea timpului, axate pe viteză și acuratețe. Dezvoltă gândirea rapidă și abilitățile de luare a deciziilor sub constrângeri de timp.\",\n color: \"#ec4899\",\n },\n] as const;\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "AAQO,IAAK,GAAL,CAAK,IAAL,CAEL,WAAW,WAEX,WAAW,WAEX,aAAa,aAEb,OAAO,OAEP,YAAY,YAEZ,aAAa,aAEb,SAAS,SAET,aAAa,aAEb,aAAa,eAlBH,QAqBL,IAAK,GAAL,CAAK,IAAL,CACL,UAAU,UACV,YAAY,cAFF,QCpBL,IAAM,EAA+C,CAC1D,CACE,gBACA,KAAM,WACN,YACE,kKACF,MAAO,SACT,EACA,CACE,gBACA,KAAM,WACN,YACE,0JACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,+IACF,MAAO,SACT,EACA,CACE,YACA,KAAM,OACN,YACE,gJACF,MAAO,SACT,EACA,CACE,iBACA,KAAM,YACN,YACE,kJACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,8IACF,MAAO,SACT,EACA,CACE,cACA,KAAM,SACN,YACE,sJACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,mIACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,iJACF,MAAO,SACT,CACF,EAEa,EAA+C,CAC1D,CACE,gBACA,KAAM,YACN,YACE,oLACF,MAAO,SACT,EACA,CACE,gBACA,KAAM,WACN,YACE,qKACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,qKACF,MAAO,SACT,EACA,CACE,YACA,KAAM,OACN,YACE,uKACF,MAAO,SACT,EACA,CACE,iBACA,KAAM,OACN,YACE,6KACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,UACN,YACE,0JACF,MAAO,SACT,EACA,CACE,cACA,KAAM,WACN,YACE,6KACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,2KACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,kBACN,YACE,iLACF,MAAO,SACT,CACF,EAEa,EAA+C,CAC1D,CACE,gBACA,KAAM,cACN,YACE,iKACF,MAAO,SACT,EACA,CACE,gBACA,KAAM,WACN,YACE,+JACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,WACN,YACE,6IACF,MAAO,SACT,EACA,CACE,YACA,KAAM,OACN,YACE,oKACF,MAAO,SACT,EACA,CACE,iBACA,KAAM,YACN,YACE,mKACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,SACN,YACE,+IACF,MAAO,SACT,EACA,CACE,cACA,KAAM,eACN,YACE,yKACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,aACN,YACE,yKACF,MAAO,SACT,EACA,CACE,kBACA,KAAM,iBACN,YACE,iKACF,MAAO,SACT,CACF",
|
|
9
|
+
"debugId": "51B4C4C4B3E30D1C64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/dist/mcq/index.js
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
var EMcqQuestionChoiceLetter;
|
|
3
|
-
((EMcqQuestionChoiceLetter2) => {
|
|
4
|
-
EMcqQuestionChoiceLetter2["A"] = "A";
|
|
5
|
-
EMcqQuestionChoiceLetter2["B"] = "B";
|
|
6
|
-
EMcqQuestionChoiceLetter2["C"] = "C";
|
|
7
|
-
EMcqQuestionChoiceLetter2["D"] = "D";
|
|
8
|
-
EMcqQuestionChoiceLetter2["E"] = "E";
|
|
9
|
-
EMcqQuestionChoiceLetter2["F"] = "F";
|
|
10
|
-
EMcqQuestionChoiceLetter2["G"] = "G";
|
|
11
|
-
EMcqQuestionChoiceLetter2["H"] = "H";
|
|
12
|
-
EMcqQuestionChoiceLetter2["I"] = "I";
|
|
13
|
-
EMcqQuestionChoiceLetter2["J"] = "J";
|
|
14
|
-
})(EMcqQuestionChoiceLetter ||= {});
|
|
15
|
-
var EMcqSessionStatus;
|
|
16
|
-
((EMcqSessionStatus2) => {
|
|
17
|
-
EMcqSessionStatus2["DRAFT"] = "draft";
|
|
18
|
-
EMcqSessionStatus2["STARTED"] = "started";
|
|
19
|
-
EMcqSessionStatus2["PAUSED"] = "paused";
|
|
20
|
-
EMcqSessionStatus2["COMPLETED"] = "completed";
|
|
21
|
-
})(EMcqSessionStatus ||= {});
|
|
22
|
-
export {
|
|
23
|
-
EMcqSessionStatus,
|
|
24
|
-
EMcqQuestionChoiceLetter
|
|
25
|
-
};
|
|
1
|
+
var n;((e)=>{e.A="A";e.B="B";e.C="C";e.D="D";e.E="E";e.F="F";e.G="G";e.H="H";e.I="I";e.J="J"})(n||={});var s;((t)=>{t.DRAFT="draft";t.STARTED="started";t.PAUSED="paused";t.COMPLETED="completed"})(s||={});export{s as EMcqSessionStatus,n as EMcqQuestionChoiceLetter};
|
|
26
2
|
|
|
27
|
-
//# debugId=
|
|
3
|
+
//# debugId=EA8EAD6A5D8BC75D64756E2164756E21
|
package/dist/mcq/index.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { IImage } from \"@ooneex/image\";\nimport type { IStatus } from \"@ooneex/status\";\nimport type { ITag } from \"@ooneex/tag\";\nimport type { IBase, IStat } from \"@ooneex/types\";\nimport type { EAnswerState, ESessionType, ILevel } from \"@/types\";\n\nexport enum EMcqQuestionChoiceLetter {\n A = \"A\",\n B = \"B\",\n C = \"C\",\n D = \"D\",\n E = \"E\",\n F = \"F\",\n G = \"G\",\n H = \"H\",\n I = \"I\",\n J = \"J\",\n}\n\nexport enum EMcqSessionStatus {\n DRAFT = \"draft\",\n STARTED = \"started\",\n PAUSED = \"paused\",\n COMPLETED = \"completed\",\n}\n\nexport interface IMcqQuestionChoice extends IBase {\n letter: EMcqQuestionChoiceLetter;\n text: string;\n isCorrect: boolean;\n explanation?: string;\n question: IMcqQuestion;\n}\n\nexport interface IMcqQuestion extends IBase {\n questionNumber: number;\n text: string;\n choices: IMcqQuestionChoice[];\n context?: string;\n contextId?: string;\n stat?: IStat;\n status?: IStatus;\n image?: IImage;\n tags?: ITag[];\n}\n\nexport interface IMcqSession extends IBase {\n name: string;\n totalQuestions: number;\n answeredCount: number;\n correctCount: number;\n incorrectCount: number;\n timing: number;\n questions: IMcqQuestion[];\n status: EMcqSessionStatus;\n score: number;\n startedAt?: Date | null;\n pausedAt?: Date | null;\n resumedAt?: Date | null;\n completedAt?: Date | null;\n type: ESessionType;\n level: ILevel;\n}\n\nexport interface IMcqSessionQuestion extends IBase {\n session: IMcqSession;\n question: IMcqQuestion;\n questionNumber: number;\n selectedChoices: IMcqQuestionChoice[];\n context?: string;\n contextId?: string;\n state: EAnswerState;\n score: number;\n}\n\nexport interface IMcqQuestionShared extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n sharedWith?: string;\n sharedById?: string;\n permission?: string;\n expiresAt?: string;\n}\n\nexport interface IMcqQuestionLiked extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n likedBy?: string;\n likedById?: string;\n}\n\nexport interface IMcqQuestionComment extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n comment: string;\n commentedBy?: string;\n commentedById?: string;\n parentCommentId?: string;\n}\n\nexport interface IMcqQuestionDisliked extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n dislikedBy?: string;\n dislikedById?: string;\n}\n\nexport interface IMcqQuestionSaved extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n savedBy?: string;\n savedById?: string;\n}\n\nexport interface IMcqQuestionReport extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n reason: string;\n description?: string;\n reportedBy?: string;\n reportedById?: string;\n status?: IStatus;\n}\n\nexport interface IMcqQuestionViewed extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n viewedBy?: string;\n viewedById?: string;\n}\n\nexport interface IMcqQuestionStat extends IBase {\n question?: IMcqQuestion;\n questionId?: string;\n likesCount?: number;\n dislikesCount?: number;\n commentsCount?: number;\n sharesCount?: number;\n savesCount?: number;\n viewsCount?: number;\n reportsCount?: number;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAMO,IAAK,GAAL,CAAK,IAAL,CACL,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,MAVM,QAaL,IAAK,GAAL,CAAK,IAAL,CACL,QAAQ,QACR,UAAU,UACV,SAAS,SACT,YAAY,cAJF",
|
|
8
|
+
"debugId": "EA8EAD6A5D8BC75D64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ooneex/gamification",
|
|
3
3
|
"description": "Gamification utilities for interactive learning experiences including multiple choice questions (MCQ) and flashcard systems",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.15",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|