@contractspec/module.learning-journey 1.44.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.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +200 -0
  3. package/dist/contracts/index.d.ts +5 -0
  4. package/dist/contracts/index.js +6 -0
  5. package/dist/contracts/models.d.ts +451 -0
  6. package/dist/contracts/models.d.ts.map +1 -0
  7. package/dist/contracts/models.js +388 -0
  8. package/dist/contracts/models.js.map +1 -0
  9. package/dist/contracts/onboarding.d.ts +666 -0
  10. package/dist/contracts/onboarding.d.ts.map +1 -0
  11. package/dist/contracts/onboarding.js +402 -0
  12. package/dist/contracts/onboarding.js.map +1 -0
  13. package/dist/contracts/operations.d.ts +280 -0
  14. package/dist/contracts/operations.d.ts.map +1 -0
  15. package/dist/contracts/operations.js +151 -0
  16. package/dist/contracts/operations.js.map +1 -0
  17. package/dist/contracts/shared.d.ts +5 -0
  18. package/dist/contracts/shared.d.ts.map +1 -0
  19. package/dist/contracts/shared.js +6 -0
  20. package/dist/contracts/shared.js.map +1 -0
  21. package/dist/docs/index.d.ts +1 -0
  22. package/dist/docs/index.js +1 -0
  23. package/dist/docs/learning-journey.docblock.d.ts +1 -0
  24. package/dist/docs/learning-journey.docblock.js +136 -0
  25. package/dist/docs/learning-journey.docblock.js.map +1 -0
  26. package/dist/engines/index.d.ts +4 -0
  27. package/dist/engines/index.js +5 -0
  28. package/dist/engines/srs.d.ts +111 -0
  29. package/dist/engines/srs.d.ts.map +1 -0
  30. package/dist/engines/srs.js +219 -0
  31. package/dist/engines/srs.js.map +1 -0
  32. package/dist/engines/streak.d.ts +100 -0
  33. package/dist/engines/streak.d.ts.map +1 -0
  34. package/dist/engines/streak.js +194 -0
  35. package/dist/engines/streak.js.map +1 -0
  36. package/dist/engines/xp.d.ts +97 -0
  37. package/dist/engines/xp.d.ts.map +1 -0
  38. package/dist/engines/xp.js +213 -0
  39. package/dist/engines/xp.js.map +1 -0
  40. package/dist/entities/ai.d.ts +232 -0
  41. package/dist/entities/ai.d.ts.map +1 -0
  42. package/dist/entities/ai.js +376 -0
  43. package/dist/entities/ai.js.map +1 -0
  44. package/dist/entities/course.d.ts +184 -0
  45. package/dist/entities/course.d.ts.map +1 -0
  46. package/dist/entities/course.js +316 -0
  47. package/dist/entities/course.js.map +1 -0
  48. package/dist/entities/flashcard.d.ts +170 -0
  49. package/dist/entities/flashcard.d.ts.map +1 -0
  50. package/dist/entities/flashcard.js +249 -0
  51. package/dist/entities/flashcard.js.map +1 -0
  52. package/dist/entities/gamification.d.ts +238 -0
  53. package/dist/entities/gamification.d.ts.map +1 -0
  54. package/dist/entities/gamification.js +392 -0
  55. package/dist/entities/gamification.js.map +1 -0
  56. package/dist/entities/index.d.ts +629 -0
  57. package/dist/entities/index.d.ts.map +1 -0
  58. package/dist/entities/index.js +45 -0
  59. package/dist/entities/index.js.map +1 -0
  60. package/dist/entities/learner.d.ts +224 -0
  61. package/dist/entities/learner.d.ts.map +1 -0
  62. package/dist/entities/learner.js +365 -0
  63. package/dist/entities/learner.js.map +1 -0
  64. package/dist/entities/onboarding.d.ts +190 -0
  65. package/dist/entities/onboarding.d.ts.map +1 -0
  66. package/dist/entities/onboarding.js +307 -0
  67. package/dist/entities/onboarding.js.map +1 -0
  68. package/dist/entities/quiz.d.ts +220 -0
  69. package/dist/entities/quiz.d.ts.map +1 -0
  70. package/dist/entities/quiz.js +370 -0
  71. package/dist/entities/quiz.js.map +1 -0
  72. package/dist/events.d.ts +796 -0
  73. package/dist/events.d.ts.map +1 -0
  74. package/dist/events.js +690 -0
  75. package/dist/events.js.map +1 -0
  76. package/dist/index.d.ts +20 -0
  77. package/dist/index.js +22 -0
  78. package/dist/learning-journey.feature.d.ts +12 -0
  79. package/dist/learning-journey.feature.d.ts.map +1 -0
  80. package/dist/learning-journey.feature.js +150 -0
  81. package/dist/learning-journey.feature.js.map +1 -0
  82. package/dist/track-spec.d.ts +129 -0
  83. package/dist/track-spec.d.ts.map +1 -0
  84. package/dist/track-spec.js +0 -0
  85. package/package.json +98 -0
@@ -0,0 +1,249 @@
1
+ import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/flashcard.ts
4
+ /**
5
+ * Card rating enum for SRS.
6
+ */
7
+ const CardRatingEnum = defineEntityEnum({
8
+ name: "CardRating",
9
+ values: [
10
+ "AGAIN",
11
+ "HARD",
12
+ "GOOD",
13
+ "EASY"
14
+ ],
15
+ schema: "lssm_learning",
16
+ description: "Rating for a flashcard review."
17
+ });
18
+ /**
19
+ * Deck entity - collection of flashcards.
20
+ */
21
+ const DeckEntity = defineEntity({
22
+ name: "Deck",
23
+ description: "A collection of flashcards.",
24
+ schema: "lssm_learning",
25
+ map: "deck",
26
+ fields: {
27
+ id: field.id({ description: "Unique deck identifier" }),
28
+ ownerId: field.foreignKey({ description: "Deck owner (learner)" }),
29
+ title: field.string({ description: "Deck title" }),
30
+ description: field.string({
31
+ isOptional: true,
32
+ description: "Deck description"
33
+ }),
34
+ category: field.string({
35
+ isOptional: true,
36
+ description: "Deck category"
37
+ }),
38
+ tags: field.json({
39
+ isOptional: true,
40
+ description: "Tags for discovery"
41
+ }),
42
+ isPublic: field.boolean({
43
+ default: false,
44
+ description: "Whether deck is publicly visible"
45
+ }),
46
+ cardCount: field.int({
47
+ default: 0,
48
+ description: "Number of cards"
49
+ }),
50
+ coverImageUrl: field.string({
51
+ isOptional: true,
52
+ description: "Cover image URL"
53
+ }),
54
+ orgId: field.string({
55
+ isOptional: true,
56
+ description: "Organization scope"
57
+ }),
58
+ newCardsPerDay: field.int({
59
+ default: 20,
60
+ description: "New cards to introduce per day"
61
+ }),
62
+ reviewsPerDay: field.int({
63
+ default: 100,
64
+ description: "Maximum reviews per day"
65
+ }),
66
+ metadata: field.json({
67
+ isOptional: true,
68
+ description: "Additional metadata"
69
+ }),
70
+ createdAt: field.createdAt(),
71
+ updatedAt: field.updatedAt(),
72
+ owner: field.belongsTo("Learner", ["ownerId"], ["id"], { onDelete: "Cascade" }),
73
+ cards: field.hasMany("Card")
74
+ },
75
+ indexes: [
76
+ index.on(["ownerId"]),
77
+ index.on(["isPublic", "category"]),
78
+ index.on(["orgId"])
79
+ ]
80
+ });
81
+ /**
82
+ * Card entity - individual flashcard.
83
+ */
84
+ const CardEntity = defineEntity({
85
+ name: "Card",
86
+ description: "An individual flashcard.",
87
+ schema: "lssm_learning",
88
+ map: "card",
89
+ fields: {
90
+ id: field.id({ description: "Unique card identifier" }),
91
+ deckId: field.foreignKey({ description: "Parent deck" }),
92
+ front: field.string({ description: "Front of card (question)" }),
93
+ back: field.string({ description: "Back of card (answer)" }),
94
+ hints: field.json({
95
+ isOptional: true,
96
+ description: "Hints for the card"
97
+ }),
98
+ explanation: field.string({
99
+ isOptional: true,
100
+ description: "Detailed explanation"
101
+ }),
102
+ frontMediaUrl: field.string({
103
+ isOptional: true,
104
+ description: "Media for front"
105
+ }),
106
+ backMediaUrl: field.string({
107
+ isOptional: true,
108
+ description: "Media for back"
109
+ }),
110
+ audioUrl: field.string({
111
+ isOptional: true,
112
+ description: "Audio pronunciation"
113
+ }),
114
+ tags: field.json({
115
+ isOptional: true,
116
+ description: "Card tags"
117
+ }),
118
+ difficulty: field.int({
119
+ default: 0,
120
+ description: "Card difficulty (0-5)"
121
+ }),
122
+ order: field.int({
123
+ default: 0,
124
+ description: "Card order in deck"
125
+ }),
126
+ isSuspended: field.boolean({
127
+ default: false,
128
+ description: "Whether card is suspended"
129
+ }),
130
+ metadata: field.json({
131
+ isOptional: true,
132
+ description: "Additional metadata"
133
+ }),
134
+ createdAt: field.createdAt(),
135
+ updatedAt: field.updatedAt(),
136
+ deck: field.belongsTo("Deck", ["deckId"], ["id"], { onDelete: "Cascade" }),
137
+ reviews: field.hasMany("CardReview"),
138
+ schedules: field.hasMany("CardSchedule")
139
+ },
140
+ indexes: [index.on(["deckId", "order"]), index.on(["isSuspended"])]
141
+ });
142
+ /**
143
+ * CardReview entity - records individual reviews.
144
+ */
145
+ const CardReviewEntity = defineEntity({
146
+ name: "CardReview",
147
+ description: "A single review of a flashcard.",
148
+ schema: "lssm_learning",
149
+ map: "card_review",
150
+ fields: {
151
+ id: field.id({ description: "Unique review identifier" }),
152
+ learnerId: field.foreignKey({ description: "Reviewer" }),
153
+ cardId: field.foreignKey({ description: "Reviewed card" }),
154
+ rating: field.enum("CardRating", { description: "Review rating" }),
155
+ responseTimeMs: field.int({
156
+ isOptional: true,
157
+ description: "Time to respond in ms"
158
+ }),
159
+ intervalBefore: field.int({ description: "Interval before review (days)" }),
160
+ easeFactorBefore: field.decimal({ description: "Ease factor before review" }),
161
+ intervalAfter: field.int({ description: "Interval after review (days)" }),
162
+ easeFactorAfter: field.decimal({ description: "Ease factor after review" }),
163
+ reviewType: field.string({
164
+ default: "\"review\"",
165
+ description: "Type: new, learning, review, relearning"
166
+ }),
167
+ reviewedAt: field.dateTime({ description: "When reviewed" }),
168
+ createdAt: field.createdAt(),
169
+ learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
170
+ card: field.belongsTo("Card", ["cardId"], ["id"], { onDelete: "Cascade" })
171
+ },
172
+ indexes: [
173
+ index.on(["learnerId", "reviewedAt"]),
174
+ index.on(["cardId", "reviewedAt"]),
175
+ index.on(["rating"])
176
+ ],
177
+ enums: [CardRatingEnum]
178
+ });
179
+ /**
180
+ * CardSchedule entity - SRS scheduling per learner/card.
181
+ */
182
+ const CardScheduleEntity = defineEntity({
183
+ name: "CardSchedule",
184
+ description: "SRS schedule for a learner/card pair.",
185
+ schema: "lssm_learning",
186
+ map: "card_schedule",
187
+ fields: {
188
+ id: field.id({ description: "Unique schedule identifier" }),
189
+ learnerId: field.foreignKey({ description: "Learner" }),
190
+ cardId: field.foreignKey({ description: "Card" }),
191
+ interval: field.int({
192
+ default: 0,
193
+ description: "Current interval in days"
194
+ }),
195
+ easeFactor: field.decimal({
196
+ default: 2.5,
197
+ description: "Ease factor (SM-2)"
198
+ }),
199
+ repetitions: field.int({
200
+ default: 0,
201
+ description: "Number of successful repetitions"
202
+ }),
203
+ nextReviewAt: field.dateTime({ description: "When next review is due" }),
204
+ lastReviewAt: field.dateTime({
205
+ isOptional: true,
206
+ description: "When last reviewed"
207
+ }),
208
+ learningStep: field.int({
209
+ default: 0,
210
+ description: "Current learning step"
211
+ }),
212
+ isGraduated: field.boolean({
213
+ default: false,
214
+ description: "Whether card has graduated"
215
+ }),
216
+ isRelearning: field.boolean({
217
+ default: false,
218
+ description: "Whether card is being relearned"
219
+ }),
220
+ lapses: field.int({
221
+ default: 0,
222
+ description: "Number of times card was forgotten"
223
+ }),
224
+ reviewCount: field.int({
225
+ default: 0,
226
+ description: "Total review count"
227
+ }),
228
+ createdAt: field.createdAt(),
229
+ updatedAt: field.updatedAt(),
230
+ learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
231
+ card: field.belongsTo("Card", ["cardId"], ["id"], { onDelete: "Cascade" })
232
+ },
233
+ indexes: [
234
+ index.unique(["learnerId", "cardId"], { name: "card_schedule_unique" }),
235
+ index.on(["learnerId", "nextReviewAt"]),
236
+ index.on(["nextReviewAt"])
237
+ ]
238
+ });
239
+ const flashcardEntities = [
240
+ DeckEntity,
241
+ CardEntity,
242
+ CardReviewEntity,
243
+ CardScheduleEntity
244
+ ];
245
+ const flashcardEnums = [CardRatingEnum];
246
+
247
+ //#endregion
248
+ export { CardEntity, CardRatingEnum, CardReviewEntity, CardScheduleEntity, DeckEntity, flashcardEntities, flashcardEnums };
249
+ //# sourceMappingURL=flashcard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flashcard.js","names":[],"sources":["../../src/entities/flashcard.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\n\n/**\n * Card rating enum for SRS.\n */\nexport const CardRatingEnum = defineEntityEnum({\n name: 'CardRating',\n values: ['AGAIN', 'HARD', 'GOOD', 'EASY'] as const,\n schema: 'lssm_learning',\n description: 'Rating for a flashcard review.',\n});\n\n/**\n * Deck entity - collection of flashcards.\n */\nexport const DeckEntity = defineEntity({\n name: 'Deck',\n description: 'A collection of flashcards.',\n schema: 'lssm_learning',\n map: 'deck',\n fields: {\n id: field.id({ description: 'Unique deck identifier' }),\n ownerId: field.foreignKey({ description: 'Deck owner (learner)' }),\n\n // Basic info\n title: field.string({ description: 'Deck title' }),\n description: field.string({\n isOptional: true,\n description: 'Deck description',\n }),\n\n // Classification\n category: field.string({ isOptional: true, description: 'Deck category' }),\n tags: field.json({ isOptional: true, description: 'Tags for discovery' }),\n\n // Visibility\n isPublic: field.boolean({\n default: false,\n description: 'Whether deck is publicly visible',\n }),\n\n // Stats\n cardCount: field.int({ default: 0, description: 'Number of cards' }),\n\n // Media\n coverImageUrl: field.string({\n isOptional: true,\n description: 'Cover image URL',\n }),\n\n // Organization scope\n orgId: field.string({\n isOptional: true,\n description: 'Organization scope',\n }),\n\n // Settings\n newCardsPerDay: field.int({\n default: 20,\n description: 'New cards to introduce per day',\n }),\n reviewsPerDay: field.int({\n default: 100,\n description: 'Maximum reviews per day',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n owner: field.belongsTo('Learner', ['ownerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n cards: field.hasMany('Card'),\n },\n indexes: [\n index.on(['ownerId']),\n index.on(['isPublic', 'category']),\n index.on(['orgId']),\n ],\n});\n\n/**\n * Card entity - individual flashcard.\n */\nexport const CardEntity = defineEntity({\n name: 'Card',\n description: 'An individual flashcard.',\n schema: 'lssm_learning',\n map: 'card',\n fields: {\n id: field.id({ description: 'Unique card identifier' }),\n deckId: field.foreignKey({ description: 'Parent deck' }),\n\n // Content\n front: field.string({ description: 'Front of card (question)' }),\n back: field.string({ description: 'Back of card (answer)' }),\n\n // Additional content\n hints: field.json({ isOptional: true, description: 'Hints for the card' }),\n explanation: field.string({\n isOptional: true,\n description: 'Detailed explanation',\n }),\n\n // Media\n frontMediaUrl: field.string({\n isOptional: true,\n description: 'Media for front',\n }),\n backMediaUrl: field.string({\n isOptional: true,\n description: 'Media for back',\n }),\n audioUrl: field.string({\n isOptional: true,\n description: 'Audio pronunciation',\n }),\n\n // Classification\n tags: field.json({ isOptional: true, description: 'Card tags' }),\n difficulty: field.int({ default: 0, description: 'Card difficulty (0-5)' }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Card order in deck' }),\n\n // Status\n isSuspended: field.boolean({\n default: false,\n description: 'Whether card is suspended',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n deck: field.belongsTo('Deck', ['deckId'], ['id'], { onDelete: 'Cascade' }),\n reviews: field.hasMany('CardReview'),\n schedules: field.hasMany('CardSchedule'),\n },\n indexes: [index.on(['deckId', 'order']), index.on(['isSuspended'])],\n});\n\n/**\n * CardReview entity - records individual reviews.\n */\nexport const CardReviewEntity = defineEntity({\n name: 'CardReview',\n description: 'A single review of a flashcard.',\n schema: 'lssm_learning',\n map: 'card_review',\n fields: {\n id: field.id({ description: 'Unique review identifier' }),\n learnerId: field.foreignKey({ description: 'Reviewer' }),\n cardId: field.foreignKey({ description: 'Reviewed card' }),\n\n // Review result\n rating: field.enum('CardRating', { description: 'Review rating' }),\n\n // Time tracking\n responseTimeMs: field.int({\n isOptional: true,\n description: 'Time to respond in ms',\n }),\n\n // SRS state before review\n intervalBefore: field.int({ description: 'Interval before review (days)' }),\n easeFactorBefore: field.decimal({\n description: 'Ease factor before review',\n }),\n\n // SRS state after review\n intervalAfter: field.int({ description: 'Interval after review (days)' }),\n easeFactorAfter: field.decimal({ description: 'Ease factor after review' }),\n\n // Review type\n reviewType: field.string({\n default: '\"review\"',\n description: 'Type: new, learning, review, relearning',\n }),\n\n // Timestamps\n reviewedAt: field.dateTime({ description: 'When reviewed' }),\n createdAt: field.createdAt(),\n\n // Relations\n learner: field.belongsTo('Learner', ['learnerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n card: field.belongsTo('Card', ['cardId'], ['id'], { onDelete: 'Cascade' }),\n },\n indexes: [\n index.on(['learnerId', 'reviewedAt']),\n index.on(['cardId', 'reviewedAt']),\n index.on(['rating']),\n ],\n enums: [CardRatingEnum],\n});\n\n/**\n * CardSchedule entity - SRS scheduling per learner/card.\n */\nexport const CardScheduleEntity = defineEntity({\n name: 'CardSchedule',\n description: 'SRS schedule for a learner/card pair.',\n schema: 'lssm_learning',\n map: 'card_schedule',\n fields: {\n id: field.id({ description: 'Unique schedule identifier' }),\n learnerId: field.foreignKey({ description: 'Learner' }),\n cardId: field.foreignKey({ description: 'Card' }),\n\n // SRS state\n interval: field.int({\n default: 0,\n description: 'Current interval in days',\n }),\n easeFactor: field.decimal({\n default: 2.5,\n description: 'Ease factor (SM-2)',\n }),\n repetitions: field.int({\n default: 0,\n description: 'Number of successful repetitions',\n }),\n\n // Scheduling\n nextReviewAt: field.dateTime({ description: 'When next review is due' }),\n lastReviewAt: field.dateTime({\n isOptional: true,\n description: 'When last reviewed',\n }),\n\n // Learning state\n learningStep: field.int({\n default: 0,\n description: 'Current learning step',\n }),\n isGraduated: field.boolean({\n default: false,\n description: 'Whether card has graduated',\n }),\n isRelearning: field.boolean({\n default: false,\n description: 'Whether card is being relearned',\n }),\n\n // Stats\n lapses: field.int({\n default: 0,\n description: 'Number of times card was forgotten',\n }),\n reviewCount: field.int({ default: 0, description: 'Total review count' }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n learner: field.belongsTo('Learner', ['learnerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n card: field.belongsTo('Card', ['cardId'], ['id'], { onDelete: 'Cascade' }),\n },\n indexes: [\n index.unique(['learnerId', 'cardId'], { name: 'card_schedule_unique' }),\n index.on(['learnerId', 'nextReviewAt']),\n index.on(['nextReviewAt']),\n ],\n});\n\nexport const flashcardEntities = [\n DeckEntity,\n CardEntity,\n CardReviewEntity,\n CardScheduleEntity,\n];\n\nexport const flashcardEnums = [CardRatingEnum];\n"],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ import * as _contractspec_lib_schema1239 from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/gamification.d.ts
4
+ /**
5
+ * Achievement type enum.
6
+ */
7
+ declare const AchievementTypeEnum: _contractspec_lib_schema1239.EntityEnumDef;
8
+ /**
9
+ * Leaderboard period enum.
10
+ */
11
+ declare const LeaderboardPeriodEnum: _contractspec_lib_schema1239.EntityEnumDef;
12
+ /**
13
+ * Achievement entity - defines an achievement.
14
+ */
15
+ declare const AchievementEntity: _contractspec_lib_schema1239.EntitySpec<{
16
+ id: _contractspec_lib_schema1239.EntityScalarField;
17
+ key: _contractspec_lib_schema1239.EntityScalarField;
18
+ name: _contractspec_lib_schema1239.EntityScalarField;
19
+ description: _contractspec_lib_schema1239.EntityScalarField;
20
+ icon: _contractspec_lib_schema1239.EntityScalarField;
21
+ color: _contractspec_lib_schema1239.EntityScalarField;
22
+ badgeUrl: _contractspec_lib_schema1239.EntityScalarField;
23
+ type: _contractspec_lib_schema1239.EntityEnumField;
24
+ category: _contractspec_lib_schema1239.EntityScalarField;
25
+ rarity: _contractspec_lib_schema1239.EntityScalarField;
26
+ xpReward: _contractspec_lib_schema1239.EntityScalarField;
27
+ condition: _contractspec_lib_schema1239.EntityScalarField;
28
+ order: _contractspec_lib_schema1239.EntityScalarField;
29
+ isHidden: _contractspec_lib_schema1239.EntityScalarField;
30
+ isActive: _contractspec_lib_schema1239.EntityScalarField;
31
+ orgId: _contractspec_lib_schema1239.EntityScalarField;
32
+ metadata: _contractspec_lib_schema1239.EntityScalarField;
33
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
34
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
35
+ learnerAchievements: _contractspec_lib_schema1239.EntityRelationField;
36
+ }>;
37
+ /**
38
+ * LearnerAchievement entity - unlocked achievements.
39
+ */
40
+ declare const LearnerAchievementEntity: _contractspec_lib_schema1239.EntitySpec<{
41
+ id: _contractspec_lib_schema1239.EntityScalarField;
42
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
43
+ achievementId: _contractspec_lib_schema1239.EntityScalarField;
44
+ xpEarned: _contractspec_lib_schema1239.EntityScalarField;
45
+ progress: _contractspec_lib_schema1239.EntityScalarField;
46
+ currentValue: _contractspec_lib_schema1239.EntityScalarField;
47
+ targetValue: _contractspec_lib_schema1239.EntityScalarField;
48
+ unlockedAt: _contractspec_lib_schema1239.EntityScalarField;
49
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
50
+ learner: _contractspec_lib_schema1239.EntityRelationField;
51
+ achievement: _contractspec_lib_schema1239.EntityRelationField;
52
+ }>;
53
+ /**
54
+ * Streak entity - tracks daily learning streaks.
55
+ */
56
+ declare const StreakEntity: _contractspec_lib_schema1239.EntitySpec<{
57
+ id: _contractspec_lib_schema1239.EntityScalarField;
58
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
59
+ currentStreak: _contractspec_lib_schema1239.EntityScalarField;
60
+ longestStreak: _contractspec_lib_schema1239.EntityScalarField;
61
+ lastActivityAt: _contractspec_lib_schema1239.EntityScalarField;
62
+ lastActivityDate: _contractspec_lib_schema1239.EntityScalarField;
63
+ freezesRemaining: _contractspec_lib_schema1239.EntityScalarField;
64
+ freezeUsedAt: _contractspec_lib_schema1239.EntityScalarField;
65
+ streakHistory: _contractspec_lib_schema1239.EntityScalarField;
66
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
67
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
68
+ learner: _contractspec_lib_schema1239.EntityRelationField;
69
+ }>;
70
+ /**
71
+ * DailyGoal entity - tracks daily XP goals.
72
+ */
73
+ declare const DailyGoalEntity: _contractspec_lib_schema1239.EntitySpec<{
74
+ id: _contractspec_lib_schema1239.EntityScalarField;
75
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
76
+ date: _contractspec_lib_schema1239.EntityScalarField;
77
+ targetXp: _contractspec_lib_schema1239.EntityScalarField;
78
+ currentXp: _contractspec_lib_schema1239.EntityScalarField;
79
+ isCompleted: _contractspec_lib_schema1239.EntityScalarField;
80
+ completedAt: _contractspec_lib_schema1239.EntityScalarField;
81
+ xpBreakdown: _contractspec_lib_schema1239.EntityScalarField;
82
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
83
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
84
+ learner: _contractspec_lib_schema1239.EntityRelationField;
85
+ }>;
86
+ /**
87
+ * LeaderboardEntry entity - leaderboard rankings.
88
+ */
89
+ declare const LeaderboardEntryEntity: _contractspec_lib_schema1239.EntitySpec<{
90
+ id: _contractspec_lib_schema1239.EntityScalarField;
91
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
92
+ periodType: _contractspec_lib_schema1239.EntityEnumField;
93
+ periodKey: _contractspec_lib_schema1239.EntityScalarField;
94
+ xp: _contractspec_lib_schema1239.EntityScalarField;
95
+ rank: _contractspec_lib_schema1239.EntityScalarField;
96
+ lessonsCompleted: _contractspec_lib_schema1239.EntityScalarField;
97
+ quizzesPassed: _contractspec_lib_schema1239.EntityScalarField;
98
+ cardsReviewed: _contractspec_lib_schema1239.EntityScalarField;
99
+ streakDays: _contractspec_lib_schema1239.EntityScalarField;
100
+ league: _contractspec_lib_schema1239.EntityScalarField;
101
+ orgId: _contractspec_lib_schema1239.EntityScalarField;
102
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
103
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
104
+ learner: _contractspec_lib_schema1239.EntityRelationField;
105
+ }>;
106
+ /**
107
+ * Heart entity - lives system (optional).
108
+ */
109
+ declare const HeartEntity: _contractspec_lib_schema1239.EntitySpec<{
110
+ id: _contractspec_lib_schema1239.EntityScalarField;
111
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
112
+ current: _contractspec_lib_schema1239.EntityScalarField;
113
+ max: _contractspec_lib_schema1239.EntityScalarField;
114
+ lastRefillAt: _contractspec_lib_schema1239.EntityScalarField;
115
+ nextRefillAt: _contractspec_lib_schema1239.EntityScalarField;
116
+ refillIntervalMinutes: _contractspec_lib_schema1239.EntityScalarField;
117
+ infiniteUntil: _contractspec_lib_schema1239.EntityScalarField;
118
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
119
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
120
+ learner: _contractspec_lib_schema1239.EntityRelationField;
121
+ }>;
122
+ /**
123
+ * XPTransaction entity - XP earning history.
124
+ */
125
+ declare const XPTransactionEntity: _contractspec_lib_schema1239.EntitySpec<{
126
+ id: _contractspec_lib_schema1239.EntityScalarField;
127
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
128
+ amount: _contractspec_lib_schema1239.EntityScalarField;
129
+ type: _contractspec_lib_schema1239.EntityScalarField;
130
+ sourceType: _contractspec_lib_schema1239.EntityScalarField;
131
+ sourceId: _contractspec_lib_schema1239.EntityScalarField;
132
+ description: _contractspec_lib_schema1239.EntityScalarField;
133
+ balanceAfter: _contractspec_lib_schema1239.EntityScalarField;
134
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
135
+ learner: _contractspec_lib_schema1239.EntityRelationField;
136
+ }>;
137
+ declare const gamificationEntities: (_contractspec_lib_schema1239.EntitySpec<{
138
+ id: _contractspec_lib_schema1239.EntityScalarField;
139
+ key: _contractspec_lib_schema1239.EntityScalarField;
140
+ name: _contractspec_lib_schema1239.EntityScalarField;
141
+ description: _contractspec_lib_schema1239.EntityScalarField;
142
+ icon: _contractspec_lib_schema1239.EntityScalarField;
143
+ color: _contractspec_lib_schema1239.EntityScalarField;
144
+ badgeUrl: _contractspec_lib_schema1239.EntityScalarField;
145
+ type: _contractspec_lib_schema1239.EntityEnumField;
146
+ category: _contractspec_lib_schema1239.EntityScalarField;
147
+ rarity: _contractspec_lib_schema1239.EntityScalarField;
148
+ xpReward: _contractspec_lib_schema1239.EntityScalarField;
149
+ condition: _contractspec_lib_schema1239.EntityScalarField;
150
+ order: _contractspec_lib_schema1239.EntityScalarField;
151
+ isHidden: _contractspec_lib_schema1239.EntityScalarField;
152
+ isActive: _contractspec_lib_schema1239.EntityScalarField;
153
+ orgId: _contractspec_lib_schema1239.EntityScalarField;
154
+ metadata: _contractspec_lib_schema1239.EntityScalarField;
155
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
156
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
157
+ learnerAchievements: _contractspec_lib_schema1239.EntityRelationField;
158
+ }> | _contractspec_lib_schema1239.EntitySpec<{
159
+ id: _contractspec_lib_schema1239.EntityScalarField;
160
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
161
+ achievementId: _contractspec_lib_schema1239.EntityScalarField;
162
+ xpEarned: _contractspec_lib_schema1239.EntityScalarField;
163
+ progress: _contractspec_lib_schema1239.EntityScalarField;
164
+ currentValue: _contractspec_lib_schema1239.EntityScalarField;
165
+ targetValue: _contractspec_lib_schema1239.EntityScalarField;
166
+ unlockedAt: _contractspec_lib_schema1239.EntityScalarField;
167
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
168
+ learner: _contractspec_lib_schema1239.EntityRelationField;
169
+ achievement: _contractspec_lib_schema1239.EntityRelationField;
170
+ }> | _contractspec_lib_schema1239.EntitySpec<{
171
+ id: _contractspec_lib_schema1239.EntityScalarField;
172
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
173
+ currentStreak: _contractspec_lib_schema1239.EntityScalarField;
174
+ longestStreak: _contractspec_lib_schema1239.EntityScalarField;
175
+ lastActivityAt: _contractspec_lib_schema1239.EntityScalarField;
176
+ lastActivityDate: _contractspec_lib_schema1239.EntityScalarField;
177
+ freezesRemaining: _contractspec_lib_schema1239.EntityScalarField;
178
+ freezeUsedAt: _contractspec_lib_schema1239.EntityScalarField;
179
+ streakHistory: _contractspec_lib_schema1239.EntityScalarField;
180
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
181
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
182
+ learner: _contractspec_lib_schema1239.EntityRelationField;
183
+ }> | _contractspec_lib_schema1239.EntitySpec<{
184
+ id: _contractspec_lib_schema1239.EntityScalarField;
185
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
186
+ date: _contractspec_lib_schema1239.EntityScalarField;
187
+ targetXp: _contractspec_lib_schema1239.EntityScalarField;
188
+ currentXp: _contractspec_lib_schema1239.EntityScalarField;
189
+ isCompleted: _contractspec_lib_schema1239.EntityScalarField;
190
+ completedAt: _contractspec_lib_schema1239.EntityScalarField;
191
+ xpBreakdown: _contractspec_lib_schema1239.EntityScalarField;
192
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
193
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
194
+ learner: _contractspec_lib_schema1239.EntityRelationField;
195
+ }> | _contractspec_lib_schema1239.EntitySpec<{
196
+ id: _contractspec_lib_schema1239.EntityScalarField;
197
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
198
+ periodType: _contractspec_lib_schema1239.EntityEnumField;
199
+ periodKey: _contractspec_lib_schema1239.EntityScalarField;
200
+ xp: _contractspec_lib_schema1239.EntityScalarField;
201
+ rank: _contractspec_lib_schema1239.EntityScalarField;
202
+ lessonsCompleted: _contractspec_lib_schema1239.EntityScalarField;
203
+ quizzesPassed: _contractspec_lib_schema1239.EntityScalarField;
204
+ cardsReviewed: _contractspec_lib_schema1239.EntityScalarField;
205
+ streakDays: _contractspec_lib_schema1239.EntityScalarField;
206
+ league: _contractspec_lib_schema1239.EntityScalarField;
207
+ orgId: _contractspec_lib_schema1239.EntityScalarField;
208
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
209
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
210
+ learner: _contractspec_lib_schema1239.EntityRelationField;
211
+ }> | _contractspec_lib_schema1239.EntitySpec<{
212
+ id: _contractspec_lib_schema1239.EntityScalarField;
213
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
214
+ current: _contractspec_lib_schema1239.EntityScalarField;
215
+ max: _contractspec_lib_schema1239.EntityScalarField;
216
+ lastRefillAt: _contractspec_lib_schema1239.EntityScalarField;
217
+ nextRefillAt: _contractspec_lib_schema1239.EntityScalarField;
218
+ refillIntervalMinutes: _contractspec_lib_schema1239.EntityScalarField;
219
+ infiniteUntil: _contractspec_lib_schema1239.EntityScalarField;
220
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
221
+ updatedAt: _contractspec_lib_schema1239.EntityScalarField;
222
+ learner: _contractspec_lib_schema1239.EntityRelationField;
223
+ }> | _contractspec_lib_schema1239.EntitySpec<{
224
+ id: _contractspec_lib_schema1239.EntityScalarField;
225
+ learnerId: _contractspec_lib_schema1239.EntityScalarField;
226
+ amount: _contractspec_lib_schema1239.EntityScalarField;
227
+ type: _contractspec_lib_schema1239.EntityScalarField;
228
+ sourceType: _contractspec_lib_schema1239.EntityScalarField;
229
+ sourceId: _contractspec_lib_schema1239.EntityScalarField;
230
+ description: _contractspec_lib_schema1239.EntityScalarField;
231
+ balanceAfter: _contractspec_lib_schema1239.EntityScalarField;
232
+ createdAt: _contractspec_lib_schema1239.EntityScalarField;
233
+ learner: _contractspec_lib_schema1239.EntityRelationField;
234
+ }>)[];
235
+ declare const gamificationEnums: _contractspec_lib_schema1239.EntityEnumDef[];
236
+ //#endregion
237
+ export { AchievementEntity, AchievementTypeEnum, DailyGoalEntity, HeartEntity, LeaderboardEntryEntity, LeaderboardPeriodEnum, LearnerAchievementEntity, StreakEntity, XPTransactionEntity, gamificationEntities, gamificationEnums };
238
+ //# sourceMappingURL=gamification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gamification.d.ts","names":[],"sources":["../../src/entities/gamification.ts"],"sourcesContent":[],"mappings":";;;;;;AAUa,cAAA,mBAYX,EAAA,4BAAA,CAZ8B,aAY9B;AAKF;AAUA;;cAVa,uBAKX,4BAAA,CALgC;;;;cAUrB,gDAAiB;MAgF5B,4BAAA,CAAA;;;;;;;;;;;;;;0DAhF4B;EAAA,KAAA,gDAAA;EAqFjB,QAAA,gDA2CX;EAAA,SAAA,gDAAA;;;;;;;cA3CW,uDAAwB;MA2CnC,4BAAA,CAAA;;;0DA3CmC;EAAA,QAAA,gDAAA;EAgDxB,YAAA,gDA2DX;EAAA,WAAA,gDAAA;;;;;;;;;cA3DW,2CAAY;MA2DvB,4BAAA,CAAA;;+DA3DuB;EAAA,aAAA,gDAAA;EAgEZ,cAAA,gDA6CX;EAAA,gBAAA,gDAAA;;;;;;;;;;;cA7CW,eAAe,+BAAA,UAAA,CAAA;EAAA,EAAA,EA6C1B,4BAAA,CAAA,iBA7C0B;EAkDf,SAAA,gDAoDX;EAAA,IAAA,gDAAA;;;;;;;;;;;;;cApDW,qDAAsB;MAoDjC,4BAAA,CAAA;2DApDiC;EAAA,UAAA,8CAAA;EAyDtB,SAAA,gDA8CX;EAAA,EAAA,gDAAA;;;;;;;;;;;;;AAKF;;cAnDa,0CAAW;MA8CtB,4BAAA,CAAA;;;;;;;;2DAK8B;EAAA,SAAA,gDAAA;EAmDnB,OAAA,kDAQZ;CAAA,CAAA;;;;cA3DY,kDAAmB;MAiD9B,4BAAA,CAAA;;;;;;;;;;;cAEW,oDAAoB;MAQhC,4BAAA,CAAA;;;6DARgC;EAAA,IAAA,gDAAA;;;;;;;;;;;;;;;;;MAAA,4BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpB,aAAA,gDAAiB;;;;;;;;;;;;;;;;cAAjB,mBAAgE,4BAAA,CAA/C,aAAA"}