@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,45 @@
1
+ import { ContentTypeEnum, CourseDifficultyEnum, CourseEntity, CourseModuleEntity, CourseStatusEnum, LessonContentEntity, LessonEntity, LessonTypeEnum, courseEntities, courseEnums } from "./course.js";
2
+ import { CertificateEntity, EnrollmentEntity, EnrollmentStatusEnum, LearnerEntity, LessonProgressEntity, ModuleCompletionEntity, ProgressStatusEnum, learnerEntities, learnerEnums } from "./learner.js";
3
+ import { OnboardingProgressEntity, OnboardingStepCompletionEntity, OnboardingStepEntity, OnboardingStepStatusEnum, OnboardingTrackEntity, onboardingEntities, onboardingEnums } from "./onboarding.js";
4
+ import { CardEntity, CardRatingEnum, CardReviewEntity, CardScheduleEntity, DeckEntity, flashcardEntities, flashcardEnums } from "./flashcard.js";
5
+ import { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums } from "./quiz.js";
6
+ import { AchievementEntity, AchievementTypeEnum, DailyGoalEntity, HeartEntity, LeaderboardEntryEntity, LeaderboardPeriodEnum, LearnerAchievementEntity, StreakEntity, XPTransactionEntity, gamificationEntities, gamificationEnums } from "./gamification.js";
7
+ import { LearnerProfileEntity, LearningGapEntity, LearningPathEntity, LearningStyleEnum, RecommendationEntity, RecommendationTypeEnum, SkillMapEntity, aiEntities, aiEnums } from "./ai.js";
8
+
9
+ //#region src/entities/index.ts
10
+ /**
11
+ * All learning journey entities for schema composition.
12
+ */
13
+ const learningJourneyEntities = [
14
+ ...courseEntities,
15
+ ...learnerEntities,
16
+ ...onboardingEntities,
17
+ ...flashcardEntities,
18
+ ...quizEntities,
19
+ ...gamificationEntities,
20
+ ...aiEntities
21
+ ];
22
+ /**
23
+ * All learning journey enums.
24
+ */
25
+ const learningJourneyEnums = [
26
+ ...courseEnums,
27
+ ...learnerEnums,
28
+ ...onboardingEnums,
29
+ ...flashcardEnums,
30
+ ...quizEnums,
31
+ ...gamificationEnums,
32
+ ...aiEnums
33
+ ];
34
+ /**
35
+ * Module schema contribution for learning journey.
36
+ */
37
+ const learningJourneySchemaContribution = {
38
+ moduleId: "@contractspec/module.learning-journey",
39
+ entities: learningJourneyEntities,
40
+ enums: learningJourneyEnums
41
+ };
42
+
43
+ //#endregion
44
+ export { AchievementEntity, AchievementTypeEnum, AttemptStatusEnum, CardEntity, CardRatingEnum, CardReviewEntity, CardScheduleEntity, CertificateEntity, ContentTypeEnum, CourseDifficultyEnum, CourseEntity, CourseModuleEntity, CourseStatusEnum, DailyGoalEntity, DeckEntity, EnrollmentEntity, EnrollmentStatusEnum, HeartEntity, LeaderboardEntryEntity, LeaderboardPeriodEnum, LearnerAchievementEntity, LearnerEntity, LearnerProfileEntity, LearningGapEntity, LearningPathEntity, LearningStyleEnum, LessonContentEntity, LessonEntity, LessonProgressEntity, LessonTypeEnum, ModuleCompletionEntity, OnboardingProgressEntity, OnboardingStepCompletionEntity, OnboardingStepEntity, OnboardingStepStatusEnum, OnboardingTrackEntity, ProgressStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, RecommendationEntity, RecommendationTypeEnum, SkillAssessmentEntity, SkillMapEntity, StreakEntity, XPTransactionEntity, aiEntities, aiEnums, courseEntities, courseEnums, flashcardEntities, flashcardEnums, gamificationEntities, gamificationEnums, learnerEntities, learnerEnums, learningJourneyEntities, learningJourneyEnums, learningJourneySchemaContribution, onboardingEntities, onboardingEnums, quizEntities, quizEnums };
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["learningJourneySchemaContribution: ModuleSchemaContribution"],"sources":["../../src/entities/index.ts"],"sourcesContent":["import type { ModuleSchemaContribution } from '@contractspec/lib.schema';\n\n// Course entities\nexport * from './course';\nimport { courseEntities, courseEnums } from './course';\n\n// Learner entities\nexport * from './learner';\nimport { learnerEntities, learnerEnums } from './learner';\n\n// Onboarding entities\nexport * from './onboarding';\nimport { onboardingEntities, onboardingEnums } from './onboarding';\n\n// Flashcard entities\nexport * from './flashcard';\nimport { flashcardEntities, flashcardEnums } from './flashcard';\n\n// Quiz entities\nexport * from './quiz';\nimport { quizEntities, quizEnums } from './quiz';\n\n// Gamification entities\nexport * from './gamification';\nimport { gamificationEntities, gamificationEnums } from './gamification';\n\n// AI entities\nexport * from './ai';\nimport { aiEntities, aiEnums } from './ai';\n\n/**\n * All learning journey entities for schema composition.\n */\nexport const learningJourneyEntities = [\n ...courseEntities,\n ...learnerEntities,\n ...onboardingEntities,\n ...flashcardEntities,\n ...quizEntities,\n ...gamificationEntities,\n ...aiEntities,\n];\n\n/**\n * All learning journey enums.\n */\nexport const learningJourneyEnums = [\n ...courseEnums,\n ...learnerEnums,\n ...onboardingEnums,\n ...flashcardEnums,\n ...quizEnums,\n ...gamificationEnums,\n ...aiEnums,\n];\n\n/**\n * Module schema contribution for learning journey.\n */\nexport const learningJourneySchemaContribution: ModuleSchemaContribution = {\n moduleId: '@contractspec/module.learning-journey',\n entities: learningJourneyEntities,\n enums: learningJourneyEnums,\n};\n"],"mappings":";;;;;;;;;;;;AAiCA,MAAa,0BAA0B;CACrC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ;;;;AAKD,MAAa,uBAAuB;CAClC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ;;;;AAKD,MAAaA,oCAA8D;CACzE,UAAU;CACV,UAAU;CACV,OAAO;CACR"}
@@ -0,0 +1,224 @@
1
+ import * as _contractspec_lib_schema1600 from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/learner.d.ts
4
+ /**
5
+ * Enrollment status enum.
6
+ */
7
+ declare const EnrollmentStatusEnum: _contractspec_lib_schema1600.EntityEnumDef;
8
+ /**
9
+ * Progress status enum.
10
+ */
11
+ declare const ProgressStatusEnum: _contractspec_lib_schema1600.EntityEnumDef;
12
+ /**
13
+ * Learner entity - learning profile.
14
+ */
15
+ declare const LearnerEntity: _contractspec_lib_schema1600.EntitySpec<{
16
+ id: _contractspec_lib_schema1600.EntityScalarField;
17
+ userId: _contractspec_lib_schema1600.EntityScalarField;
18
+ displayName: _contractspec_lib_schema1600.EntityScalarField;
19
+ avatarUrl: _contractspec_lib_schema1600.EntityScalarField;
20
+ bio: _contractspec_lib_schema1600.EntityScalarField;
21
+ level: _contractspec_lib_schema1600.EntityScalarField;
22
+ totalXp: _contractspec_lib_schema1600.EntityScalarField;
23
+ currentStreak: _contractspec_lib_schema1600.EntityScalarField;
24
+ longestStreak: _contractspec_lib_schema1600.EntityScalarField;
25
+ lastActivityAt: _contractspec_lib_schema1600.EntityScalarField;
26
+ timezone: _contractspec_lib_schema1600.EntityScalarField;
27
+ dailyGoalXp: _contractspec_lib_schema1600.EntityScalarField;
28
+ reminderEnabled: _contractspec_lib_schema1600.EntityScalarField;
29
+ reminderTime: _contractspec_lib_schema1600.EntityScalarField;
30
+ orgId: _contractspec_lib_schema1600.EntityScalarField;
31
+ metadata: _contractspec_lib_schema1600.EntityScalarField;
32
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
33
+ updatedAt: _contractspec_lib_schema1600.EntityScalarField;
34
+ enrollments: _contractspec_lib_schema1600.EntityRelationField;
35
+ lessonProgress: _contractspec_lib_schema1600.EntityRelationField;
36
+ achievements: _contractspec_lib_schema1600.EntityRelationField;
37
+ decks: _contractspec_lib_schema1600.EntityRelationField;
38
+ profile: _contractspec_lib_schema1600.EntityRelationField;
39
+ }>;
40
+ /**
41
+ * Enrollment entity - course enrollment.
42
+ */
43
+ declare const EnrollmentEntity: _contractspec_lib_schema1600.EntitySpec<{
44
+ id: _contractspec_lib_schema1600.EntityScalarField;
45
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
46
+ courseId: _contractspec_lib_schema1600.EntityScalarField;
47
+ status: _contractspec_lib_schema1600.EntityEnumField;
48
+ progress: _contractspec_lib_schema1600.EntityScalarField;
49
+ completedLessons: _contractspec_lib_schema1600.EntityScalarField;
50
+ totalLessons: _contractspec_lib_schema1600.EntityScalarField;
51
+ xpEarned: _contractspec_lib_schema1600.EntityScalarField;
52
+ startedAt: _contractspec_lib_schema1600.EntityScalarField;
53
+ completedAt: _contractspec_lib_schema1600.EntityScalarField;
54
+ lastAccessedAt: _contractspec_lib_schema1600.EntityScalarField;
55
+ certificateId: _contractspec_lib_schema1600.EntityScalarField;
56
+ metadata: _contractspec_lib_schema1600.EntityScalarField;
57
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
58
+ updatedAt: _contractspec_lib_schema1600.EntityScalarField;
59
+ learner: _contractspec_lib_schema1600.EntityRelationField;
60
+ course: _contractspec_lib_schema1600.EntityRelationField;
61
+ }>;
62
+ /**
63
+ * LessonProgress entity - tracks individual lesson progress.
64
+ */
65
+ declare const LessonProgressEntity: _contractspec_lib_schema1600.EntitySpec<{
66
+ id: _contractspec_lib_schema1600.EntityScalarField;
67
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
68
+ lessonId: _contractspec_lib_schema1600.EntityScalarField;
69
+ status: _contractspec_lib_schema1600.EntityEnumField;
70
+ progress: _contractspec_lib_schema1600.EntityScalarField;
71
+ score: _contractspec_lib_schema1600.EntityScalarField;
72
+ attempts: _contractspec_lib_schema1600.EntityScalarField;
73
+ bestScore: _contractspec_lib_schema1600.EntityScalarField;
74
+ timeSpent: _contractspec_lib_schema1600.EntityScalarField;
75
+ xpEarned: _contractspec_lib_schema1600.EntityScalarField;
76
+ startedAt: _contractspec_lib_schema1600.EntityScalarField;
77
+ completedAt: _contractspec_lib_schema1600.EntityScalarField;
78
+ lastAccessedAt: _contractspec_lib_schema1600.EntityScalarField;
79
+ bookmarks: _contractspec_lib_schema1600.EntityScalarField;
80
+ notes: _contractspec_lib_schema1600.EntityScalarField;
81
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
82
+ updatedAt: _contractspec_lib_schema1600.EntityScalarField;
83
+ learner: _contractspec_lib_schema1600.EntityRelationField;
84
+ lesson: _contractspec_lib_schema1600.EntityRelationField;
85
+ }>;
86
+ /**
87
+ * ModuleCompletion entity - tracks module completion.
88
+ */
89
+ declare const ModuleCompletionEntity: _contractspec_lib_schema1600.EntitySpec<{
90
+ id: _contractspec_lib_schema1600.EntityScalarField;
91
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
92
+ moduleId: _contractspec_lib_schema1600.EntityScalarField;
93
+ score: _contractspec_lib_schema1600.EntityScalarField;
94
+ xpEarned: _contractspec_lib_schema1600.EntityScalarField;
95
+ timeSpent: _contractspec_lib_schema1600.EntityScalarField;
96
+ completedAt: _contractspec_lib_schema1600.EntityScalarField;
97
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
98
+ learner: _contractspec_lib_schema1600.EntityRelationField;
99
+ module: _contractspec_lib_schema1600.EntityRelationField;
100
+ }>;
101
+ /**
102
+ * Certificate entity - course completion certificate.
103
+ */
104
+ declare const CertificateEntity: _contractspec_lib_schema1600.EntitySpec<{
105
+ id: _contractspec_lib_schema1600.EntityScalarField;
106
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
107
+ courseId: _contractspec_lib_schema1600.EntityScalarField;
108
+ enrollmentId: _contractspec_lib_schema1600.EntityScalarField;
109
+ certificateNumber: _contractspec_lib_schema1600.EntityScalarField;
110
+ title: _contractspec_lib_schema1600.EntityScalarField;
111
+ description: _contractspec_lib_schema1600.EntityScalarField;
112
+ score: _contractspec_lib_schema1600.EntityScalarField;
113
+ grade: _contractspec_lib_schema1600.EntityScalarField;
114
+ issuedAt: _contractspec_lib_schema1600.EntityScalarField;
115
+ validUntil: _contractspec_lib_schema1600.EntityScalarField;
116
+ verificationUrl: _contractspec_lib_schema1600.EntityScalarField;
117
+ credentialHash: _contractspec_lib_schema1600.EntityScalarField;
118
+ isRevoked: _contractspec_lib_schema1600.EntityScalarField;
119
+ revokedAt: _contractspec_lib_schema1600.EntityScalarField;
120
+ revokedReason: _contractspec_lib_schema1600.EntityScalarField;
121
+ metadata: _contractspec_lib_schema1600.EntityScalarField;
122
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
123
+ learner: _contractspec_lib_schema1600.EntityRelationField;
124
+ course: _contractspec_lib_schema1600.EntityRelationField;
125
+ }>;
126
+ declare const learnerEntities: (_contractspec_lib_schema1600.EntitySpec<{
127
+ id: _contractspec_lib_schema1600.EntityScalarField;
128
+ userId: _contractspec_lib_schema1600.EntityScalarField;
129
+ displayName: _contractspec_lib_schema1600.EntityScalarField;
130
+ avatarUrl: _contractspec_lib_schema1600.EntityScalarField;
131
+ bio: _contractspec_lib_schema1600.EntityScalarField;
132
+ level: _contractspec_lib_schema1600.EntityScalarField;
133
+ totalXp: _contractspec_lib_schema1600.EntityScalarField;
134
+ currentStreak: _contractspec_lib_schema1600.EntityScalarField;
135
+ longestStreak: _contractspec_lib_schema1600.EntityScalarField;
136
+ lastActivityAt: _contractspec_lib_schema1600.EntityScalarField;
137
+ timezone: _contractspec_lib_schema1600.EntityScalarField;
138
+ dailyGoalXp: _contractspec_lib_schema1600.EntityScalarField;
139
+ reminderEnabled: _contractspec_lib_schema1600.EntityScalarField;
140
+ reminderTime: _contractspec_lib_schema1600.EntityScalarField;
141
+ orgId: _contractspec_lib_schema1600.EntityScalarField;
142
+ metadata: _contractspec_lib_schema1600.EntityScalarField;
143
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
144
+ updatedAt: _contractspec_lib_schema1600.EntityScalarField;
145
+ enrollments: _contractspec_lib_schema1600.EntityRelationField;
146
+ lessonProgress: _contractspec_lib_schema1600.EntityRelationField;
147
+ achievements: _contractspec_lib_schema1600.EntityRelationField;
148
+ decks: _contractspec_lib_schema1600.EntityRelationField;
149
+ profile: _contractspec_lib_schema1600.EntityRelationField;
150
+ }> | _contractspec_lib_schema1600.EntitySpec<{
151
+ id: _contractspec_lib_schema1600.EntityScalarField;
152
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
153
+ courseId: _contractspec_lib_schema1600.EntityScalarField;
154
+ status: _contractspec_lib_schema1600.EntityEnumField;
155
+ progress: _contractspec_lib_schema1600.EntityScalarField;
156
+ completedLessons: _contractspec_lib_schema1600.EntityScalarField;
157
+ totalLessons: _contractspec_lib_schema1600.EntityScalarField;
158
+ xpEarned: _contractspec_lib_schema1600.EntityScalarField;
159
+ startedAt: _contractspec_lib_schema1600.EntityScalarField;
160
+ completedAt: _contractspec_lib_schema1600.EntityScalarField;
161
+ lastAccessedAt: _contractspec_lib_schema1600.EntityScalarField;
162
+ certificateId: _contractspec_lib_schema1600.EntityScalarField;
163
+ metadata: _contractspec_lib_schema1600.EntityScalarField;
164
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
165
+ updatedAt: _contractspec_lib_schema1600.EntityScalarField;
166
+ learner: _contractspec_lib_schema1600.EntityRelationField;
167
+ course: _contractspec_lib_schema1600.EntityRelationField;
168
+ }> | _contractspec_lib_schema1600.EntitySpec<{
169
+ id: _contractspec_lib_schema1600.EntityScalarField;
170
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
171
+ lessonId: _contractspec_lib_schema1600.EntityScalarField;
172
+ status: _contractspec_lib_schema1600.EntityEnumField;
173
+ progress: _contractspec_lib_schema1600.EntityScalarField;
174
+ score: _contractspec_lib_schema1600.EntityScalarField;
175
+ attempts: _contractspec_lib_schema1600.EntityScalarField;
176
+ bestScore: _contractspec_lib_schema1600.EntityScalarField;
177
+ timeSpent: _contractspec_lib_schema1600.EntityScalarField;
178
+ xpEarned: _contractspec_lib_schema1600.EntityScalarField;
179
+ startedAt: _contractspec_lib_schema1600.EntityScalarField;
180
+ completedAt: _contractspec_lib_schema1600.EntityScalarField;
181
+ lastAccessedAt: _contractspec_lib_schema1600.EntityScalarField;
182
+ bookmarks: _contractspec_lib_schema1600.EntityScalarField;
183
+ notes: _contractspec_lib_schema1600.EntityScalarField;
184
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
185
+ updatedAt: _contractspec_lib_schema1600.EntityScalarField;
186
+ learner: _contractspec_lib_schema1600.EntityRelationField;
187
+ lesson: _contractspec_lib_schema1600.EntityRelationField;
188
+ }> | _contractspec_lib_schema1600.EntitySpec<{
189
+ id: _contractspec_lib_schema1600.EntityScalarField;
190
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
191
+ moduleId: _contractspec_lib_schema1600.EntityScalarField;
192
+ score: _contractspec_lib_schema1600.EntityScalarField;
193
+ xpEarned: _contractspec_lib_schema1600.EntityScalarField;
194
+ timeSpent: _contractspec_lib_schema1600.EntityScalarField;
195
+ completedAt: _contractspec_lib_schema1600.EntityScalarField;
196
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
197
+ learner: _contractspec_lib_schema1600.EntityRelationField;
198
+ module: _contractspec_lib_schema1600.EntityRelationField;
199
+ }> | _contractspec_lib_schema1600.EntitySpec<{
200
+ id: _contractspec_lib_schema1600.EntityScalarField;
201
+ learnerId: _contractspec_lib_schema1600.EntityScalarField;
202
+ courseId: _contractspec_lib_schema1600.EntityScalarField;
203
+ enrollmentId: _contractspec_lib_schema1600.EntityScalarField;
204
+ certificateNumber: _contractspec_lib_schema1600.EntityScalarField;
205
+ title: _contractspec_lib_schema1600.EntityScalarField;
206
+ description: _contractspec_lib_schema1600.EntityScalarField;
207
+ score: _contractspec_lib_schema1600.EntityScalarField;
208
+ grade: _contractspec_lib_schema1600.EntityScalarField;
209
+ issuedAt: _contractspec_lib_schema1600.EntityScalarField;
210
+ validUntil: _contractspec_lib_schema1600.EntityScalarField;
211
+ verificationUrl: _contractspec_lib_schema1600.EntityScalarField;
212
+ credentialHash: _contractspec_lib_schema1600.EntityScalarField;
213
+ isRevoked: _contractspec_lib_schema1600.EntityScalarField;
214
+ revokedAt: _contractspec_lib_schema1600.EntityScalarField;
215
+ revokedReason: _contractspec_lib_schema1600.EntityScalarField;
216
+ metadata: _contractspec_lib_schema1600.EntityScalarField;
217
+ createdAt: _contractspec_lib_schema1600.EntityScalarField;
218
+ learner: _contractspec_lib_schema1600.EntityRelationField;
219
+ course: _contractspec_lib_schema1600.EntityRelationField;
220
+ }>)[];
221
+ declare const learnerEnums: _contractspec_lib_schema1600.EntityEnumDef[];
222
+ //#endregion
223
+ export { CertificateEntity, EnrollmentEntity, EnrollmentStatusEnum, LearnerEntity, LessonProgressEntity, ModuleCompletionEntity, ProgressStatusEnum, learnerEntities, learnerEnums };
224
+ //# sourceMappingURL=learner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learner.d.ts","names":[],"sources":["../../src/entities/learner.ts"],"sourcesContent":[],"mappings":";;;;;;AAUa,cAAA,oBAWX,EAAA,4BAAA,CAX+B,aAW/B;AAKF;AAUA;;cAVa,oBAKX,4BAAA,CAL6B;;;;cAUlB,4CAAa;MA+ExB,4BAAA,CAAA;;;;;;;;;;;;;;;;;2DA/EwB;EAAA,WAAA,kDAAA;EAoFb,cAAA,kDAgFX;EAAA,YAAA,kDAAA;;;;;;;cAhFW,+CAAgB;MAgF3B,4BAAA,CAAA;;;;;;;;;6DAhF2B;EAAA,cAAA,gDAAA;EAqFhB,aAAA,gDAiFX;EAAA,QAAA,gDAAA;;;;;;;;;cAjFW,mDAAoB;MAiF/B,4BAAA,CAAA;;;;;;;;;0DAjF+B;EAAA,SAAA,gDAAA;EAsFpB,WAAA,gDAiCX;EAAA,cAAA,gDAAA;;;;;;;;;;;AAjCiC,cAAtB,sBAAsB,+BAAA,UAAA,CAAA;EAsCtB,EAAA,EALX,4BAAA,CAAA,iBAoFA;EAAA,SAAA,gDAAA;;;;;;;;;;;;;cA/EW,gDAAiB;MA+E5B,4BAAA,CAAA;;;;;;6DA/E4B;EAAA,KAAA,gDAAA;EAiFjB,KAAA,gDAMZ;EAAA,QAAA,gDAAA;;;;;;;;;;;;cANY,+CAAe;MAM3B,4BAAA,CAAA;;;;;;;;;;0DAN2B;EAAA,WAAA,gDAAA;;;;;;;;;;;;;MAAA,4BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQf,QAAA,gDAAY;;;;;;;;;;;;cAAZ,cAAyD,4BAAA,CAA7C,aAAA"}
@@ -0,0 +1,365 @@
1
+ import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/learner.ts
4
+ /**
5
+ * Enrollment status enum.
6
+ */
7
+ const EnrollmentStatusEnum = defineEntityEnum({
8
+ name: "EnrollmentStatus",
9
+ values: [
10
+ "ENROLLED",
11
+ "IN_PROGRESS",
12
+ "COMPLETED",
13
+ "DROPPED",
14
+ "EXPIRED"
15
+ ],
16
+ schema: "lssm_learning",
17
+ description: "Status of a course enrollment."
18
+ });
19
+ /**
20
+ * Progress status enum.
21
+ */
22
+ const ProgressStatusEnum = defineEntityEnum({
23
+ name: "ProgressStatus",
24
+ values: [
25
+ "NOT_STARTED",
26
+ "IN_PROGRESS",
27
+ "COMPLETED",
28
+ "SKIPPED"
29
+ ],
30
+ schema: "lssm_learning",
31
+ description: "Status of lesson progress."
32
+ });
33
+ /**
34
+ * Learner entity - learning profile.
35
+ */
36
+ const LearnerEntity = defineEntity({
37
+ name: "Learner",
38
+ description: "A learner profile.",
39
+ schema: "lssm_learning",
40
+ map: "learner",
41
+ fields: {
42
+ id: field.id({ description: "Unique learner identifier" }),
43
+ userId: field.string({
44
+ isUnique: true,
45
+ description: "Associated user ID"
46
+ }),
47
+ displayName: field.string({
48
+ isOptional: true,
49
+ description: "Display name"
50
+ }),
51
+ avatarUrl: field.string({
52
+ isOptional: true,
53
+ description: "Avatar URL"
54
+ }),
55
+ bio: field.string({
56
+ isOptional: true,
57
+ description: "Short bio"
58
+ }),
59
+ level: field.int({
60
+ default: 1,
61
+ description: "Current level"
62
+ }),
63
+ totalXp: field.int({
64
+ default: 0,
65
+ description: "Total XP earned"
66
+ }),
67
+ currentStreak: field.int({
68
+ default: 0,
69
+ description: "Current streak days"
70
+ }),
71
+ longestStreak: field.int({
72
+ default: 0,
73
+ description: "Longest streak ever"
74
+ }),
75
+ lastActivityAt: field.dateTime({
76
+ isOptional: true,
77
+ description: "Last learning activity"
78
+ }),
79
+ timezone: field.string({
80
+ default: "\"UTC\"",
81
+ description: "Learner timezone"
82
+ }),
83
+ dailyGoalXp: field.int({
84
+ default: 50,
85
+ description: "Daily XP goal"
86
+ }),
87
+ reminderEnabled: field.boolean({
88
+ default: true,
89
+ description: "Enable reminders"
90
+ }),
91
+ reminderTime: field.string({
92
+ isOptional: true,
93
+ description: "Preferred reminder time"
94
+ }),
95
+ orgId: field.string({
96
+ isOptional: true,
97
+ description: "Organization scope"
98
+ }),
99
+ metadata: field.json({
100
+ isOptional: true,
101
+ description: "Additional metadata"
102
+ }),
103
+ createdAt: field.createdAt(),
104
+ updatedAt: field.updatedAt(),
105
+ enrollments: field.hasMany("Enrollment"),
106
+ lessonProgress: field.hasMany("LessonProgress"),
107
+ achievements: field.hasMany("LearnerAchievement"),
108
+ decks: field.hasMany("Deck"),
109
+ profile: field.hasOne("LearnerProfile")
110
+ },
111
+ indexes: [
112
+ index.on(["orgId"]),
113
+ index.on(["totalXp"]),
114
+ index.on(["level"]),
115
+ index.on(["currentStreak"])
116
+ ]
117
+ });
118
+ /**
119
+ * Enrollment entity - course enrollment.
120
+ */
121
+ const EnrollmentEntity = defineEntity({
122
+ name: "Enrollment",
123
+ description: "A learner enrollment in a course.",
124
+ schema: "lssm_learning",
125
+ map: "enrollment",
126
+ fields: {
127
+ id: field.id({ description: "Unique enrollment identifier" }),
128
+ learnerId: field.foreignKey({ description: "Enrolled learner" }),
129
+ courseId: field.foreignKey({ description: "Enrolled course" }),
130
+ status: field.enum("EnrollmentStatus", {
131
+ default: "ENROLLED",
132
+ description: "Enrollment status"
133
+ }),
134
+ progress: field.int({
135
+ default: 0,
136
+ description: "Completion percentage (0-100)"
137
+ }),
138
+ completedLessons: field.int({
139
+ default: 0,
140
+ description: "Number of completed lessons"
141
+ }),
142
+ totalLessons: field.int({
143
+ default: 0,
144
+ description: "Total lessons in course"
145
+ }),
146
+ xpEarned: field.int({
147
+ default: 0,
148
+ description: "XP earned in this course"
149
+ }),
150
+ startedAt: field.dateTime({
151
+ isOptional: true,
152
+ description: "When learner started"
153
+ }),
154
+ completedAt: field.dateTime({
155
+ isOptional: true,
156
+ description: "When learner completed"
157
+ }),
158
+ lastAccessedAt: field.dateTime({
159
+ isOptional: true,
160
+ description: "Last access time"
161
+ }),
162
+ certificateId: field.string({
163
+ isOptional: true,
164
+ description: "Issued certificate ID"
165
+ }),
166
+ metadata: field.json({
167
+ isOptional: true,
168
+ description: "Additional metadata"
169
+ }),
170
+ createdAt: field.createdAt(),
171
+ updatedAt: field.updatedAt(),
172
+ learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
173
+ course: field.belongsTo("Course", ["courseId"], ["id"], { onDelete: "Cascade" })
174
+ },
175
+ indexes: [
176
+ index.unique(["learnerId", "courseId"], { name: "enrollment_unique" }),
177
+ index.on(["learnerId", "status"]),
178
+ index.on(["courseId", "status"])
179
+ ],
180
+ enums: [EnrollmentStatusEnum]
181
+ });
182
+ /**
183
+ * LessonProgress entity - tracks individual lesson progress.
184
+ */
185
+ const LessonProgressEntity = defineEntity({
186
+ name: "LessonProgress",
187
+ description: "Progress tracking for a lesson.",
188
+ schema: "lssm_learning",
189
+ map: "lesson_progress",
190
+ fields: {
191
+ id: field.id({ description: "Unique progress identifier" }),
192
+ learnerId: field.foreignKey({ description: "Learner" }),
193
+ lessonId: field.foreignKey({ description: "Lesson" }),
194
+ status: field.enum("ProgressStatus", {
195
+ default: "NOT_STARTED",
196
+ description: "Progress status"
197
+ }),
198
+ progress: field.int({
199
+ default: 0,
200
+ description: "Completion percentage (0-100)"
201
+ }),
202
+ score: field.int({
203
+ isOptional: true,
204
+ description: "Score achieved (for quizzes)"
205
+ }),
206
+ attempts: field.int({
207
+ default: 0,
208
+ description: "Number of attempts"
209
+ }),
210
+ bestScore: field.int({
211
+ isOptional: true,
212
+ description: "Best score across attempts"
213
+ }),
214
+ timeSpent: field.int({
215
+ default: 0,
216
+ description: "Time spent in seconds"
217
+ }),
218
+ xpEarned: field.int({
219
+ default: 0,
220
+ description: "XP earned from this lesson"
221
+ }),
222
+ startedAt: field.dateTime({
223
+ isOptional: true,
224
+ description: "When started"
225
+ }),
226
+ completedAt: field.dateTime({
227
+ isOptional: true,
228
+ description: "When completed"
229
+ }),
230
+ lastAccessedAt: field.dateTime({
231
+ isOptional: true,
232
+ description: "Last access time"
233
+ }),
234
+ bookmarks: field.json({
235
+ isOptional: true,
236
+ description: "Content bookmarks"
237
+ }),
238
+ notes: field.string({
239
+ isOptional: true,
240
+ description: "Learner notes"
241
+ }),
242
+ createdAt: field.createdAt(),
243
+ updatedAt: field.updatedAt(),
244
+ learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
245
+ lesson: field.belongsTo("Lesson", ["lessonId"], ["id"], { onDelete: "Cascade" })
246
+ },
247
+ indexes: [
248
+ index.unique(["learnerId", "lessonId"], { name: "lesson_progress_unique" }),
249
+ index.on(["learnerId", "status"]),
250
+ index.on(["lessonId"])
251
+ ],
252
+ enums: [ProgressStatusEnum]
253
+ });
254
+ /**
255
+ * ModuleCompletion entity - tracks module completion.
256
+ */
257
+ const ModuleCompletionEntity = defineEntity({
258
+ name: "ModuleCompletion",
259
+ description: "Module completion record.",
260
+ schema: "lssm_learning",
261
+ map: "module_completion",
262
+ fields: {
263
+ id: field.id({ description: "Unique completion identifier" }),
264
+ learnerId: field.foreignKey({ description: "Learner" }),
265
+ moduleId: field.foreignKey({ description: "Module" }),
266
+ score: field.int({
267
+ isOptional: true,
268
+ description: "Average score"
269
+ }),
270
+ xpEarned: field.int({
271
+ default: 0,
272
+ description: "XP earned"
273
+ }),
274
+ timeSpent: field.int({
275
+ default: 0,
276
+ description: "Time spent in seconds"
277
+ }),
278
+ completedAt: field.dateTime({ description: "When completed" }),
279
+ createdAt: field.createdAt(),
280
+ learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
281
+ module: field.belongsTo("CourseModule", ["moduleId"], ["id"], { onDelete: "Cascade" })
282
+ },
283
+ indexes: [index.unique(["learnerId", "moduleId"], { name: "module_completion_unique" }), index.on(["learnerId", "completedAt"])]
284
+ });
285
+ /**
286
+ * Certificate entity - course completion certificate.
287
+ */
288
+ const CertificateEntity = defineEntity({
289
+ name: "Certificate",
290
+ description: "Course completion certificate.",
291
+ schema: "lssm_learning",
292
+ map: "certificate",
293
+ fields: {
294
+ id: field.id({ description: "Unique certificate identifier" }),
295
+ learnerId: field.foreignKey({ description: "Certificate holder" }),
296
+ courseId: field.foreignKey({ description: "Completed course" }),
297
+ enrollmentId: field.foreignKey({ description: "Associated enrollment" }),
298
+ certificateNumber: field.string({
299
+ isUnique: true,
300
+ description: "Unique certificate number"
301
+ }),
302
+ title: field.string({ description: "Certificate title" }),
303
+ description: field.string({
304
+ isOptional: true,
305
+ description: "Certificate description"
306
+ }),
307
+ score: field.int({
308
+ isOptional: true,
309
+ description: "Final score"
310
+ }),
311
+ grade: field.string({
312
+ isOptional: true,
313
+ description: "Grade awarded"
314
+ }),
315
+ issuedAt: field.dateTime({ description: "When issued" }),
316
+ validUntil: field.dateTime({
317
+ isOptional: true,
318
+ description: "Expiration date"
319
+ }),
320
+ verificationUrl: field.string({
321
+ isOptional: true,
322
+ description: "Verification URL"
323
+ }),
324
+ credentialHash: field.string({
325
+ isOptional: true,
326
+ description: "Credential hash for verification"
327
+ }),
328
+ isRevoked: field.boolean({
329
+ default: false,
330
+ description: "Whether certificate is revoked"
331
+ }),
332
+ revokedAt: field.dateTime({
333
+ isOptional: true,
334
+ description: "When revoked"
335
+ }),
336
+ revokedReason: field.string({
337
+ isOptional: true,
338
+ description: "Revocation reason"
339
+ }),
340
+ metadata: field.json({
341
+ isOptional: true,
342
+ description: "Additional metadata"
343
+ }),
344
+ createdAt: field.createdAt(),
345
+ learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
346
+ course: field.belongsTo("Course", ["courseId"], ["id"], { onDelete: "Cascade" })
347
+ },
348
+ indexes: [
349
+ index.on(["learnerId"]),
350
+ index.on(["courseId"]),
351
+ index.on(["issuedAt"])
352
+ ]
353
+ });
354
+ const learnerEntities = [
355
+ LearnerEntity,
356
+ EnrollmentEntity,
357
+ LessonProgressEntity,
358
+ ModuleCompletionEntity,
359
+ CertificateEntity
360
+ ];
361
+ const learnerEnums = [EnrollmentStatusEnum, ProgressStatusEnum];
362
+
363
+ //#endregion
364
+ export { CertificateEntity, EnrollmentEntity, EnrollmentStatusEnum, LearnerEntity, LessonProgressEntity, ModuleCompletionEntity, ProgressStatusEnum, learnerEntities, learnerEnums };
365
+ //# sourceMappingURL=learner.js.map