@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.
- package/LICENSE +21 -0
- package/README.md +200 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.js +6 -0
- package/dist/contracts/models.d.ts +451 -0
- package/dist/contracts/models.d.ts.map +1 -0
- package/dist/contracts/models.js +388 -0
- package/dist/contracts/models.js.map +1 -0
- package/dist/contracts/onboarding.d.ts +666 -0
- package/dist/contracts/onboarding.d.ts.map +1 -0
- package/dist/contracts/onboarding.js +402 -0
- package/dist/contracts/onboarding.js.map +1 -0
- package/dist/contracts/operations.d.ts +280 -0
- package/dist/contracts/operations.d.ts.map +1 -0
- package/dist/contracts/operations.js +151 -0
- package/dist/contracts/operations.js.map +1 -0
- package/dist/contracts/shared.d.ts +5 -0
- package/dist/contracts/shared.d.ts.map +1 -0
- package/dist/contracts/shared.js +6 -0
- package/dist/contracts/shared.js.map +1 -0
- package/dist/docs/index.d.ts +1 -0
- package/dist/docs/index.js +1 -0
- package/dist/docs/learning-journey.docblock.d.ts +1 -0
- package/dist/docs/learning-journey.docblock.js +136 -0
- package/dist/docs/learning-journey.docblock.js.map +1 -0
- package/dist/engines/index.d.ts +4 -0
- package/dist/engines/index.js +5 -0
- package/dist/engines/srs.d.ts +111 -0
- package/dist/engines/srs.d.ts.map +1 -0
- package/dist/engines/srs.js +219 -0
- package/dist/engines/srs.js.map +1 -0
- package/dist/engines/streak.d.ts +100 -0
- package/dist/engines/streak.d.ts.map +1 -0
- package/dist/engines/streak.js +194 -0
- package/dist/engines/streak.js.map +1 -0
- package/dist/engines/xp.d.ts +97 -0
- package/dist/engines/xp.d.ts.map +1 -0
- package/dist/engines/xp.js +213 -0
- package/dist/engines/xp.js.map +1 -0
- package/dist/entities/ai.d.ts +232 -0
- package/dist/entities/ai.d.ts.map +1 -0
- package/dist/entities/ai.js +376 -0
- package/dist/entities/ai.js.map +1 -0
- package/dist/entities/course.d.ts +184 -0
- package/dist/entities/course.d.ts.map +1 -0
- package/dist/entities/course.js +316 -0
- package/dist/entities/course.js.map +1 -0
- package/dist/entities/flashcard.d.ts +170 -0
- package/dist/entities/flashcard.d.ts.map +1 -0
- package/dist/entities/flashcard.js +249 -0
- package/dist/entities/flashcard.js.map +1 -0
- package/dist/entities/gamification.d.ts +238 -0
- package/dist/entities/gamification.d.ts.map +1 -0
- package/dist/entities/gamification.js +392 -0
- package/dist/entities/gamification.js.map +1 -0
- package/dist/entities/index.d.ts +629 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +45 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/learner.d.ts +224 -0
- package/dist/entities/learner.d.ts.map +1 -0
- package/dist/entities/learner.js +365 -0
- package/dist/entities/learner.js.map +1 -0
- package/dist/entities/onboarding.d.ts +190 -0
- package/dist/entities/onboarding.d.ts.map +1 -0
- package/dist/entities/onboarding.js +307 -0
- package/dist/entities/onboarding.js.map +1 -0
- package/dist/entities/quiz.d.ts +220 -0
- package/dist/entities/quiz.d.ts.map +1 -0
- package/dist/entities/quiz.js +370 -0
- package/dist/entities/quiz.js.map +1 -0
- package/dist/events.d.ts +796 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +690 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +22 -0
- package/dist/learning-journey.feature.d.ts +12 -0
- package/dist/learning-journey.feature.d.ts.map +1 -0
- package/dist/learning-journey.feature.js +150 -0
- package/dist/learning-journey.feature.js.map +1 -0
- package/dist/track-spec.d.ts +129 -0
- package/dist/track-spec.d.ts.map +1 -0
- package/dist/track-spec.js +0 -0
- package/package.json +98 -0
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/entities/course.ts
|
|
4
|
+
/**
|
|
5
|
+
* Course difficulty enum.
|
|
6
|
+
*/
|
|
7
|
+
const CourseDifficultyEnum = defineEntityEnum({
|
|
8
|
+
name: "CourseDifficulty",
|
|
9
|
+
values: [
|
|
10
|
+
"BEGINNER",
|
|
11
|
+
"INTERMEDIATE",
|
|
12
|
+
"ADVANCED",
|
|
13
|
+
"EXPERT"
|
|
14
|
+
],
|
|
15
|
+
schema: "lssm_learning",
|
|
16
|
+
description: "Difficulty level of a course."
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Course status enum.
|
|
20
|
+
*/
|
|
21
|
+
const CourseStatusEnum = defineEntityEnum({
|
|
22
|
+
name: "CourseStatus",
|
|
23
|
+
values: [
|
|
24
|
+
"DRAFT",
|
|
25
|
+
"PUBLISHED",
|
|
26
|
+
"ARCHIVED"
|
|
27
|
+
],
|
|
28
|
+
schema: "lssm_learning",
|
|
29
|
+
description: "Publication status of a course."
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Lesson type enum.
|
|
33
|
+
*/
|
|
34
|
+
const LessonTypeEnum = defineEntityEnum({
|
|
35
|
+
name: "LessonType",
|
|
36
|
+
values: [
|
|
37
|
+
"CONTENT",
|
|
38
|
+
"VIDEO",
|
|
39
|
+
"INTERACTIVE",
|
|
40
|
+
"QUIZ",
|
|
41
|
+
"PRACTICE",
|
|
42
|
+
"PROJECT"
|
|
43
|
+
],
|
|
44
|
+
schema: "lssm_learning",
|
|
45
|
+
description: "Type of lesson content."
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Content type enum.
|
|
49
|
+
*/
|
|
50
|
+
const ContentTypeEnum = defineEntityEnum({
|
|
51
|
+
name: "ContentType",
|
|
52
|
+
values: [
|
|
53
|
+
"MARKDOWN",
|
|
54
|
+
"VIDEO",
|
|
55
|
+
"AUDIO",
|
|
56
|
+
"EMBED",
|
|
57
|
+
"SCORM",
|
|
58
|
+
"CUSTOM"
|
|
59
|
+
],
|
|
60
|
+
schema: "lssm_learning",
|
|
61
|
+
description: "Type of lesson content format."
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Course entity - defines a learning course.
|
|
65
|
+
*/
|
|
66
|
+
const CourseEntity = defineEntity({
|
|
67
|
+
name: "Course",
|
|
68
|
+
description: "A structured learning course.",
|
|
69
|
+
schema: "lssm_learning",
|
|
70
|
+
map: "course",
|
|
71
|
+
fields: {
|
|
72
|
+
id: field.id({ description: "Unique course identifier" }),
|
|
73
|
+
title: field.string({ description: "Course title" }),
|
|
74
|
+
slug: field.string({
|
|
75
|
+
isUnique: true,
|
|
76
|
+
description: "URL-friendly slug"
|
|
77
|
+
}),
|
|
78
|
+
description: field.string({
|
|
79
|
+
isOptional: true,
|
|
80
|
+
description: "Course description"
|
|
81
|
+
}),
|
|
82
|
+
summary: field.string({
|
|
83
|
+
isOptional: true,
|
|
84
|
+
description: "Short summary"
|
|
85
|
+
}),
|
|
86
|
+
difficulty: field.enum("CourseDifficulty", {
|
|
87
|
+
default: "BEGINNER",
|
|
88
|
+
description: "Difficulty level"
|
|
89
|
+
}),
|
|
90
|
+
category: field.string({
|
|
91
|
+
isOptional: true,
|
|
92
|
+
description: "Course category"
|
|
93
|
+
}),
|
|
94
|
+
tags: field.json({
|
|
95
|
+
isOptional: true,
|
|
96
|
+
description: "Tags for discovery"
|
|
97
|
+
}),
|
|
98
|
+
prerequisites: field.json({
|
|
99
|
+
isOptional: true,
|
|
100
|
+
description: "Required course IDs"
|
|
101
|
+
}),
|
|
102
|
+
requiredSkills: field.json({
|
|
103
|
+
isOptional: true,
|
|
104
|
+
description: "Required skill levels"
|
|
105
|
+
}),
|
|
106
|
+
estimatedDuration: field.int({
|
|
107
|
+
isOptional: true,
|
|
108
|
+
description: "Estimated duration in minutes"
|
|
109
|
+
}),
|
|
110
|
+
thumbnailUrl: field.string({
|
|
111
|
+
isOptional: true,
|
|
112
|
+
description: "Thumbnail image URL"
|
|
113
|
+
}),
|
|
114
|
+
coverImageUrl: field.string({
|
|
115
|
+
isOptional: true,
|
|
116
|
+
description: "Cover image URL"
|
|
117
|
+
}),
|
|
118
|
+
promoVideoUrl: field.string({
|
|
119
|
+
isOptional: true,
|
|
120
|
+
description: "Promo video URL"
|
|
121
|
+
}),
|
|
122
|
+
status: field.enum("CourseStatus", {
|
|
123
|
+
default: "DRAFT",
|
|
124
|
+
description: "Publication status"
|
|
125
|
+
}),
|
|
126
|
+
publishedAt: field.dateTime({
|
|
127
|
+
isOptional: true,
|
|
128
|
+
description: "When published"
|
|
129
|
+
}),
|
|
130
|
+
authorId: field.string({ description: "Author user ID" }),
|
|
131
|
+
orgId: field.string({
|
|
132
|
+
isOptional: true,
|
|
133
|
+
description: "Organization scope"
|
|
134
|
+
}),
|
|
135
|
+
isPublic: field.boolean({
|
|
136
|
+
default: false,
|
|
137
|
+
description: "Whether course is publicly accessible"
|
|
138
|
+
}),
|
|
139
|
+
isFeatured: field.boolean({
|
|
140
|
+
default: false,
|
|
141
|
+
description: "Whether course is featured"
|
|
142
|
+
}),
|
|
143
|
+
certificateEnabled: field.boolean({
|
|
144
|
+
default: false,
|
|
145
|
+
description: "Award certificate on completion"
|
|
146
|
+
}),
|
|
147
|
+
metadata: field.json({
|
|
148
|
+
isOptional: true,
|
|
149
|
+
description: "Additional metadata"
|
|
150
|
+
}),
|
|
151
|
+
createdAt: field.createdAt(),
|
|
152
|
+
updatedAt: field.updatedAt(),
|
|
153
|
+
modules: field.hasMany("CourseModule"),
|
|
154
|
+
enrollments: field.hasMany("Enrollment")
|
|
155
|
+
},
|
|
156
|
+
indexes: [
|
|
157
|
+
index.on(["orgId", "status"]),
|
|
158
|
+
index.on(["category"]),
|
|
159
|
+
index.on(["difficulty"]),
|
|
160
|
+
index.on(["authorId"])
|
|
161
|
+
],
|
|
162
|
+
enums: [CourseDifficultyEnum, CourseStatusEnum]
|
|
163
|
+
});
|
|
164
|
+
/**
|
|
165
|
+
* CourseModule entity - a section within a course.
|
|
166
|
+
*/
|
|
167
|
+
const CourseModuleEntity = defineEntity({
|
|
168
|
+
name: "CourseModule",
|
|
169
|
+
description: "A module (section) within a course.",
|
|
170
|
+
schema: "lssm_learning",
|
|
171
|
+
map: "course_module",
|
|
172
|
+
fields: {
|
|
173
|
+
id: field.id({ description: "Unique module identifier" }),
|
|
174
|
+
courseId: field.foreignKey({ description: "Parent course" }),
|
|
175
|
+
title: field.string({ description: "Module title" }),
|
|
176
|
+
description: field.string({
|
|
177
|
+
isOptional: true,
|
|
178
|
+
description: "Module description"
|
|
179
|
+
}),
|
|
180
|
+
order: field.int({
|
|
181
|
+
default: 0,
|
|
182
|
+
description: "Display order"
|
|
183
|
+
}),
|
|
184
|
+
unlockCondition: field.json({
|
|
185
|
+
isOptional: true,
|
|
186
|
+
description: "Conditions to unlock module"
|
|
187
|
+
}),
|
|
188
|
+
prerequisiteModuleIds: field.json({
|
|
189
|
+
isOptional: true,
|
|
190
|
+
description: "Required modules to complete first"
|
|
191
|
+
}),
|
|
192
|
+
estimatedDuration: field.int({
|
|
193
|
+
isOptional: true,
|
|
194
|
+
description: "Estimated duration in minutes"
|
|
195
|
+
}),
|
|
196
|
+
createdAt: field.createdAt(),
|
|
197
|
+
updatedAt: field.updatedAt(),
|
|
198
|
+
course: field.belongsTo("Course", ["courseId"], ["id"], { onDelete: "Cascade" }),
|
|
199
|
+
lessons: field.hasMany("Lesson"),
|
|
200
|
+
completions: field.hasMany("ModuleCompletion")
|
|
201
|
+
},
|
|
202
|
+
indexes: [index.on(["courseId", "order"])]
|
|
203
|
+
});
|
|
204
|
+
/**
|
|
205
|
+
* Lesson entity - individual learning unit.
|
|
206
|
+
*/
|
|
207
|
+
const LessonEntity = defineEntity({
|
|
208
|
+
name: "Lesson",
|
|
209
|
+
description: "An individual lesson within a module.",
|
|
210
|
+
schema: "lssm_learning",
|
|
211
|
+
map: "lesson",
|
|
212
|
+
fields: {
|
|
213
|
+
id: field.id({ description: "Unique lesson identifier" }),
|
|
214
|
+
moduleId: field.foreignKey({ description: "Parent module" }),
|
|
215
|
+
title: field.string({ description: "Lesson title" }),
|
|
216
|
+
description: field.string({
|
|
217
|
+
isOptional: true,
|
|
218
|
+
description: "Lesson description"
|
|
219
|
+
}),
|
|
220
|
+
type: field.enum("LessonType", {
|
|
221
|
+
default: "CONTENT",
|
|
222
|
+
description: "Lesson type"
|
|
223
|
+
}),
|
|
224
|
+
order: field.int({
|
|
225
|
+
default: 0,
|
|
226
|
+
description: "Display order"
|
|
227
|
+
}),
|
|
228
|
+
estimatedDuration: field.int({
|
|
229
|
+
isOptional: true,
|
|
230
|
+
description: "Estimated duration in minutes"
|
|
231
|
+
}),
|
|
232
|
+
xpReward: field.int({
|
|
233
|
+
default: 10,
|
|
234
|
+
description: "XP awarded on completion"
|
|
235
|
+
}),
|
|
236
|
+
isFree: field.boolean({
|
|
237
|
+
default: false,
|
|
238
|
+
description: "Whether lesson is free preview"
|
|
239
|
+
}),
|
|
240
|
+
isRequired: field.boolean({
|
|
241
|
+
default: true,
|
|
242
|
+
description: "Whether lesson is required for completion"
|
|
243
|
+
}),
|
|
244
|
+
metadata: field.json({
|
|
245
|
+
isOptional: true,
|
|
246
|
+
description: "Additional metadata"
|
|
247
|
+
}),
|
|
248
|
+
createdAt: field.createdAt(),
|
|
249
|
+
updatedAt: field.updatedAt(),
|
|
250
|
+
module: field.belongsTo("CourseModule", ["moduleId"], ["id"], { onDelete: "Cascade" }),
|
|
251
|
+
contents: field.hasMany("LessonContent"),
|
|
252
|
+
progress: field.hasMany("LessonProgress"),
|
|
253
|
+
quizzes: field.hasMany("Quiz")
|
|
254
|
+
},
|
|
255
|
+
indexes: [index.on(["moduleId", "order"]), index.on(["type"])],
|
|
256
|
+
enums: [LessonTypeEnum]
|
|
257
|
+
});
|
|
258
|
+
/**
|
|
259
|
+
* LessonContent entity - content blocks within a lesson.
|
|
260
|
+
*/
|
|
261
|
+
const LessonContentEntity = defineEntity({
|
|
262
|
+
name: "LessonContent",
|
|
263
|
+
description: "Content block within a lesson.",
|
|
264
|
+
schema: "lssm_learning",
|
|
265
|
+
map: "lesson_content",
|
|
266
|
+
fields: {
|
|
267
|
+
id: field.id({ description: "Unique content identifier" }),
|
|
268
|
+
lessonId: field.foreignKey({ description: "Parent lesson" }),
|
|
269
|
+
contentType: field.enum("ContentType", { description: "Content format" }),
|
|
270
|
+
content: field.string({
|
|
271
|
+
isOptional: true,
|
|
272
|
+
description: "Text content (markdown, etc.)"
|
|
273
|
+
}),
|
|
274
|
+
mediaUrl: field.string({
|
|
275
|
+
isOptional: true,
|
|
276
|
+
description: "Media URL for video/audio"
|
|
277
|
+
}),
|
|
278
|
+
embedData: field.json({
|
|
279
|
+
isOptional: true,
|
|
280
|
+
description: "Embed data for external content"
|
|
281
|
+
}),
|
|
282
|
+
order: field.int({
|
|
283
|
+
default: 0,
|
|
284
|
+
description: "Display order"
|
|
285
|
+
}),
|
|
286
|
+
duration: field.int({
|
|
287
|
+
isOptional: true,
|
|
288
|
+
description: "Content duration in seconds"
|
|
289
|
+
}),
|
|
290
|
+
metadata: field.json({
|
|
291
|
+
isOptional: true,
|
|
292
|
+
description: "Additional metadata"
|
|
293
|
+
}),
|
|
294
|
+
createdAt: field.createdAt(),
|
|
295
|
+
updatedAt: field.updatedAt(),
|
|
296
|
+
lesson: field.belongsTo("Lesson", ["lessonId"], ["id"], { onDelete: "Cascade" })
|
|
297
|
+
},
|
|
298
|
+
indexes: [index.on(["lessonId", "order"])],
|
|
299
|
+
enums: [ContentTypeEnum]
|
|
300
|
+
});
|
|
301
|
+
const courseEntities = [
|
|
302
|
+
CourseEntity,
|
|
303
|
+
CourseModuleEntity,
|
|
304
|
+
LessonEntity,
|
|
305
|
+
LessonContentEntity
|
|
306
|
+
];
|
|
307
|
+
const courseEnums = [
|
|
308
|
+
CourseDifficultyEnum,
|
|
309
|
+
CourseStatusEnum,
|
|
310
|
+
LessonTypeEnum,
|
|
311
|
+
ContentTypeEnum
|
|
312
|
+
];
|
|
313
|
+
|
|
314
|
+
//#endregion
|
|
315
|
+
export { ContentTypeEnum, CourseDifficultyEnum, CourseEntity, CourseModuleEntity, CourseStatusEnum, LessonContentEntity, LessonEntity, LessonTypeEnum, courseEntities, courseEnums };
|
|
316
|
+
//# sourceMappingURL=course.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"course.js","names":[],"sources":["../../src/entities/course.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\n\n/**\n * Course difficulty enum.\n */\nexport const CourseDifficultyEnum = defineEntityEnum({\n name: 'CourseDifficulty',\n values: ['BEGINNER', 'INTERMEDIATE', 'ADVANCED', 'EXPERT'] as const,\n schema: 'lssm_learning',\n description: 'Difficulty level of a course.',\n});\n\n/**\n * Course status enum.\n */\nexport const CourseStatusEnum = defineEntityEnum({\n name: 'CourseStatus',\n values: ['DRAFT', 'PUBLISHED', 'ARCHIVED'] as const,\n schema: 'lssm_learning',\n description: 'Publication status of a course.',\n});\n\n/**\n * Lesson type enum.\n */\nexport const LessonTypeEnum = defineEntityEnum({\n name: 'LessonType',\n values: [\n 'CONTENT',\n 'VIDEO',\n 'INTERACTIVE',\n 'QUIZ',\n 'PRACTICE',\n 'PROJECT',\n ] as const,\n schema: 'lssm_learning',\n description: 'Type of lesson content.',\n});\n\n/**\n * Content type enum.\n */\nexport const ContentTypeEnum = defineEntityEnum({\n name: 'ContentType',\n values: ['MARKDOWN', 'VIDEO', 'AUDIO', 'EMBED', 'SCORM', 'CUSTOM'] as const,\n schema: 'lssm_learning',\n description: 'Type of lesson content format.',\n});\n\n/**\n * Course entity - defines a learning course.\n */\nexport const CourseEntity = defineEntity({\n name: 'Course',\n description: 'A structured learning course.',\n schema: 'lssm_learning',\n map: 'course',\n fields: {\n id: field.id({ description: 'Unique course identifier' }),\n\n // Basic info\n title: field.string({ description: 'Course title' }),\n slug: field.string({ isUnique: true, description: 'URL-friendly slug' }),\n description: field.string({\n isOptional: true,\n description: 'Course description',\n }),\n summary: field.string({ isOptional: true, description: 'Short summary' }),\n\n // Classification\n difficulty: field.enum('CourseDifficulty', {\n default: 'BEGINNER',\n description: 'Difficulty level',\n }),\n category: field.string({\n isOptional: true,\n description: 'Course category',\n }),\n tags: field.json({ isOptional: true, description: 'Tags for discovery' }),\n\n // Prerequisites\n prerequisites: field.json({\n isOptional: true,\n description: 'Required course IDs',\n }),\n requiredSkills: field.json({\n isOptional: true,\n description: 'Required skill levels',\n }),\n\n // Duration\n estimatedDuration: field.int({\n isOptional: true,\n description: 'Estimated duration in minutes',\n }),\n\n // Media\n thumbnailUrl: field.string({\n isOptional: true,\n description: 'Thumbnail image URL',\n }),\n coverImageUrl: field.string({\n isOptional: true,\n description: 'Cover image URL',\n }),\n promoVideoUrl: field.string({\n isOptional: true,\n description: 'Promo video URL',\n }),\n\n // Publishing\n status: field.enum('CourseStatus', {\n default: 'DRAFT',\n description: 'Publication status',\n }),\n publishedAt: field.dateTime({\n isOptional: true,\n description: 'When published',\n }),\n\n // Author\n authorId: field.string({ description: 'Author user ID' }),\n\n // Organization scope\n orgId: field.string({\n isOptional: true,\n description: 'Organization scope',\n }),\n\n // Settings\n isPublic: field.boolean({\n default: false,\n description: 'Whether course is publicly accessible',\n }),\n isFeatured: field.boolean({\n default: false,\n description: 'Whether course is featured',\n }),\n certificateEnabled: field.boolean({\n default: false,\n description: 'Award certificate on completion',\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 modules: field.hasMany('CourseModule'),\n enrollments: field.hasMany('Enrollment'),\n },\n indexes: [\n index.on(['orgId', 'status']),\n index.on(['category']),\n index.on(['difficulty']),\n index.on(['authorId']),\n ],\n enums: [CourseDifficultyEnum, CourseStatusEnum],\n});\n\n/**\n * CourseModule entity - a section within a course.\n */\nexport const CourseModuleEntity = defineEntity({\n name: 'CourseModule',\n description: 'A module (section) within a course.',\n schema: 'lssm_learning',\n map: 'course_module',\n fields: {\n id: field.id({ description: 'Unique module identifier' }),\n courseId: field.foreignKey({ description: 'Parent course' }),\n\n // Basic info\n title: field.string({ description: 'Module title' }),\n description: field.string({\n isOptional: true,\n description: 'Module description',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\n\n // Unlock conditions\n unlockCondition: field.json({\n isOptional: true,\n description: 'Conditions to unlock module',\n }),\n prerequisiteModuleIds: field.json({\n isOptional: true,\n description: 'Required modules to complete first',\n }),\n\n // Duration\n estimatedDuration: field.int({\n isOptional: true,\n description: 'Estimated duration in minutes',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n course: field.belongsTo('Course', ['courseId'], ['id'], {\n onDelete: 'Cascade',\n }),\n lessons: field.hasMany('Lesson'),\n completions: field.hasMany('ModuleCompletion'),\n },\n indexes: [index.on(['courseId', 'order'])],\n});\n\n/**\n * Lesson entity - individual learning unit.\n */\nexport const LessonEntity = defineEntity({\n name: 'Lesson',\n description: 'An individual lesson within a module.',\n schema: 'lssm_learning',\n map: 'lesson',\n fields: {\n id: field.id({ description: 'Unique lesson identifier' }),\n moduleId: field.foreignKey({ description: 'Parent module' }),\n\n // Basic info\n title: field.string({ description: 'Lesson title' }),\n description: field.string({\n isOptional: true,\n description: 'Lesson description',\n }),\n\n // Type and content\n type: field.enum('LessonType', {\n default: 'CONTENT',\n description: 'Lesson type',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\n\n // Duration\n estimatedDuration: field.int({\n isOptional: true,\n description: 'Estimated duration in minutes',\n }),\n\n // XP reward\n xpReward: field.int({\n default: 10,\n description: 'XP awarded on completion',\n }),\n\n // Settings\n isFree: field.boolean({\n default: false,\n description: 'Whether lesson is free preview',\n }),\n isRequired: field.boolean({\n default: true,\n description: 'Whether lesson is required for completion',\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 module: field.belongsTo('CourseModule', ['moduleId'], ['id'], {\n onDelete: 'Cascade',\n }),\n contents: field.hasMany('LessonContent'),\n progress: field.hasMany('LessonProgress'),\n quizzes: field.hasMany('Quiz'),\n },\n indexes: [index.on(['moduleId', 'order']), index.on(['type'])],\n enums: [LessonTypeEnum],\n});\n\n/**\n * LessonContent entity - content blocks within a lesson.\n */\nexport const LessonContentEntity = defineEntity({\n name: 'LessonContent',\n description: 'Content block within a lesson.',\n schema: 'lssm_learning',\n map: 'lesson_content',\n fields: {\n id: field.id({ description: 'Unique content identifier' }),\n lessonId: field.foreignKey({ description: 'Parent lesson' }),\n\n // Content type and data\n contentType: field.enum('ContentType', { description: 'Content format' }),\n content: field.string({\n isOptional: true,\n description: 'Text content (markdown, etc.)',\n }),\n mediaUrl: field.string({\n isOptional: true,\n description: 'Media URL for video/audio',\n }),\n embedData: field.json({\n isOptional: true,\n description: 'Embed data for external content',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\n\n // Duration\n duration: field.int({\n isOptional: true,\n description: 'Content duration in seconds',\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 lesson: field.belongsTo('Lesson', ['lessonId'], ['id'], {\n onDelete: 'Cascade',\n }),\n },\n indexes: [index.on(['lessonId', 'order'])],\n enums: [ContentTypeEnum],\n});\n\nexport const courseEntities = [\n CourseEntity,\n CourseModuleEntity,\n LessonEntity,\n LessonContentEntity,\n];\n\nexport const courseEnums = [\n CourseDifficultyEnum,\n CourseStatusEnum,\n LessonTypeEnum,\n ContentTypeEnum,\n];\n"],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema1095 from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/entities/flashcard.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Card rating enum for SRS.
|
|
6
|
+
*/
|
|
7
|
+
declare const CardRatingEnum: _contractspec_lib_schema1095.EntityEnumDef;
|
|
8
|
+
/**
|
|
9
|
+
* Deck entity - collection of flashcards.
|
|
10
|
+
*/
|
|
11
|
+
declare const DeckEntity: _contractspec_lib_schema1095.EntitySpec<{
|
|
12
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
13
|
+
ownerId: _contractspec_lib_schema1095.EntityScalarField;
|
|
14
|
+
title: _contractspec_lib_schema1095.EntityScalarField;
|
|
15
|
+
description: _contractspec_lib_schema1095.EntityScalarField;
|
|
16
|
+
category: _contractspec_lib_schema1095.EntityScalarField;
|
|
17
|
+
tags: _contractspec_lib_schema1095.EntityScalarField;
|
|
18
|
+
isPublic: _contractspec_lib_schema1095.EntityScalarField;
|
|
19
|
+
cardCount: _contractspec_lib_schema1095.EntityScalarField;
|
|
20
|
+
coverImageUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
21
|
+
orgId: _contractspec_lib_schema1095.EntityScalarField;
|
|
22
|
+
newCardsPerDay: _contractspec_lib_schema1095.EntityScalarField;
|
|
23
|
+
reviewsPerDay: _contractspec_lib_schema1095.EntityScalarField;
|
|
24
|
+
metadata: _contractspec_lib_schema1095.EntityScalarField;
|
|
25
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
26
|
+
updatedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
27
|
+
owner: _contractspec_lib_schema1095.EntityRelationField;
|
|
28
|
+
cards: _contractspec_lib_schema1095.EntityRelationField;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Card entity - individual flashcard.
|
|
32
|
+
*/
|
|
33
|
+
declare const CardEntity: _contractspec_lib_schema1095.EntitySpec<{
|
|
34
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
35
|
+
deckId: _contractspec_lib_schema1095.EntityScalarField;
|
|
36
|
+
front: _contractspec_lib_schema1095.EntityScalarField;
|
|
37
|
+
back: _contractspec_lib_schema1095.EntityScalarField;
|
|
38
|
+
hints: _contractspec_lib_schema1095.EntityScalarField;
|
|
39
|
+
explanation: _contractspec_lib_schema1095.EntityScalarField;
|
|
40
|
+
frontMediaUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
41
|
+
backMediaUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
42
|
+
audioUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
43
|
+
tags: _contractspec_lib_schema1095.EntityScalarField;
|
|
44
|
+
difficulty: _contractspec_lib_schema1095.EntityScalarField;
|
|
45
|
+
order: _contractspec_lib_schema1095.EntityScalarField;
|
|
46
|
+
isSuspended: _contractspec_lib_schema1095.EntityScalarField;
|
|
47
|
+
metadata: _contractspec_lib_schema1095.EntityScalarField;
|
|
48
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
49
|
+
updatedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
50
|
+
deck: _contractspec_lib_schema1095.EntityRelationField;
|
|
51
|
+
reviews: _contractspec_lib_schema1095.EntityRelationField;
|
|
52
|
+
schedules: _contractspec_lib_schema1095.EntityRelationField;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* CardReview entity - records individual reviews.
|
|
56
|
+
*/
|
|
57
|
+
declare const CardReviewEntity: _contractspec_lib_schema1095.EntitySpec<{
|
|
58
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
59
|
+
learnerId: _contractspec_lib_schema1095.EntityScalarField;
|
|
60
|
+
cardId: _contractspec_lib_schema1095.EntityScalarField;
|
|
61
|
+
rating: _contractspec_lib_schema1095.EntityEnumField;
|
|
62
|
+
responseTimeMs: _contractspec_lib_schema1095.EntityScalarField;
|
|
63
|
+
intervalBefore: _contractspec_lib_schema1095.EntityScalarField;
|
|
64
|
+
easeFactorBefore: _contractspec_lib_schema1095.EntityScalarField;
|
|
65
|
+
intervalAfter: _contractspec_lib_schema1095.EntityScalarField;
|
|
66
|
+
easeFactorAfter: _contractspec_lib_schema1095.EntityScalarField;
|
|
67
|
+
reviewType: _contractspec_lib_schema1095.EntityScalarField;
|
|
68
|
+
reviewedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
69
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
70
|
+
learner: _contractspec_lib_schema1095.EntityRelationField;
|
|
71
|
+
card: _contractspec_lib_schema1095.EntityRelationField;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* CardSchedule entity - SRS scheduling per learner/card.
|
|
75
|
+
*/
|
|
76
|
+
declare const CardScheduleEntity: _contractspec_lib_schema1095.EntitySpec<{
|
|
77
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
78
|
+
learnerId: _contractspec_lib_schema1095.EntityScalarField;
|
|
79
|
+
cardId: _contractspec_lib_schema1095.EntityScalarField;
|
|
80
|
+
interval: _contractspec_lib_schema1095.EntityScalarField;
|
|
81
|
+
easeFactor: _contractspec_lib_schema1095.EntityScalarField;
|
|
82
|
+
repetitions: _contractspec_lib_schema1095.EntityScalarField;
|
|
83
|
+
nextReviewAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
84
|
+
lastReviewAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
85
|
+
learningStep: _contractspec_lib_schema1095.EntityScalarField;
|
|
86
|
+
isGraduated: _contractspec_lib_schema1095.EntityScalarField;
|
|
87
|
+
isRelearning: _contractspec_lib_schema1095.EntityScalarField;
|
|
88
|
+
lapses: _contractspec_lib_schema1095.EntityScalarField;
|
|
89
|
+
reviewCount: _contractspec_lib_schema1095.EntityScalarField;
|
|
90
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
91
|
+
updatedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
92
|
+
learner: _contractspec_lib_schema1095.EntityRelationField;
|
|
93
|
+
card: _contractspec_lib_schema1095.EntityRelationField;
|
|
94
|
+
}>;
|
|
95
|
+
declare const flashcardEntities: (_contractspec_lib_schema1095.EntitySpec<{
|
|
96
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
97
|
+
ownerId: _contractspec_lib_schema1095.EntityScalarField;
|
|
98
|
+
title: _contractspec_lib_schema1095.EntityScalarField;
|
|
99
|
+
description: _contractspec_lib_schema1095.EntityScalarField;
|
|
100
|
+
category: _contractspec_lib_schema1095.EntityScalarField;
|
|
101
|
+
tags: _contractspec_lib_schema1095.EntityScalarField;
|
|
102
|
+
isPublic: _contractspec_lib_schema1095.EntityScalarField;
|
|
103
|
+
cardCount: _contractspec_lib_schema1095.EntityScalarField;
|
|
104
|
+
coverImageUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
105
|
+
orgId: _contractspec_lib_schema1095.EntityScalarField;
|
|
106
|
+
newCardsPerDay: _contractspec_lib_schema1095.EntityScalarField;
|
|
107
|
+
reviewsPerDay: _contractspec_lib_schema1095.EntityScalarField;
|
|
108
|
+
metadata: _contractspec_lib_schema1095.EntityScalarField;
|
|
109
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
110
|
+
updatedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
111
|
+
owner: _contractspec_lib_schema1095.EntityRelationField;
|
|
112
|
+
cards: _contractspec_lib_schema1095.EntityRelationField;
|
|
113
|
+
}> | _contractspec_lib_schema1095.EntitySpec<{
|
|
114
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
115
|
+
deckId: _contractspec_lib_schema1095.EntityScalarField;
|
|
116
|
+
front: _contractspec_lib_schema1095.EntityScalarField;
|
|
117
|
+
back: _contractspec_lib_schema1095.EntityScalarField;
|
|
118
|
+
hints: _contractspec_lib_schema1095.EntityScalarField;
|
|
119
|
+
explanation: _contractspec_lib_schema1095.EntityScalarField;
|
|
120
|
+
frontMediaUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
121
|
+
backMediaUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
122
|
+
audioUrl: _contractspec_lib_schema1095.EntityScalarField;
|
|
123
|
+
tags: _contractspec_lib_schema1095.EntityScalarField;
|
|
124
|
+
difficulty: _contractspec_lib_schema1095.EntityScalarField;
|
|
125
|
+
order: _contractspec_lib_schema1095.EntityScalarField;
|
|
126
|
+
isSuspended: _contractspec_lib_schema1095.EntityScalarField;
|
|
127
|
+
metadata: _contractspec_lib_schema1095.EntityScalarField;
|
|
128
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
129
|
+
updatedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
130
|
+
deck: _contractspec_lib_schema1095.EntityRelationField;
|
|
131
|
+
reviews: _contractspec_lib_schema1095.EntityRelationField;
|
|
132
|
+
schedules: _contractspec_lib_schema1095.EntityRelationField;
|
|
133
|
+
}> | _contractspec_lib_schema1095.EntitySpec<{
|
|
134
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
135
|
+
learnerId: _contractspec_lib_schema1095.EntityScalarField;
|
|
136
|
+
cardId: _contractspec_lib_schema1095.EntityScalarField;
|
|
137
|
+
rating: _contractspec_lib_schema1095.EntityEnumField;
|
|
138
|
+
responseTimeMs: _contractspec_lib_schema1095.EntityScalarField;
|
|
139
|
+
intervalBefore: _contractspec_lib_schema1095.EntityScalarField;
|
|
140
|
+
easeFactorBefore: _contractspec_lib_schema1095.EntityScalarField;
|
|
141
|
+
intervalAfter: _contractspec_lib_schema1095.EntityScalarField;
|
|
142
|
+
easeFactorAfter: _contractspec_lib_schema1095.EntityScalarField;
|
|
143
|
+
reviewType: _contractspec_lib_schema1095.EntityScalarField;
|
|
144
|
+
reviewedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
145
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
146
|
+
learner: _contractspec_lib_schema1095.EntityRelationField;
|
|
147
|
+
card: _contractspec_lib_schema1095.EntityRelationField;
|
|
148
|
+
}> | _contractspec_lib_schema1095.EntitySpec<{
|
|
149
|
+
id: _contractspec_lib_schema1095.EntityScalarField;
|
|
150
|
+
learnerId: _contractspec_lib_schema1095.EntityScalarField;
|
|
151
|
+
cardId: _contractspec_lib_schema1095.EntityScalarField;
|
|
152
|
+
interval: _contractspec_lib_schema1095.EntityScalarField;
|
|
153
|
+
easeFactor: _contractspec_lib_schema1095.EntityScalarField;
|
|
154
|
+
repetitions: _contractspec_lib_schema1095.EntityScalarField;
|
|
155
|
+
nextReviewAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
156
|
+
lastReviewAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
157
|
+
learningStep: _contractspec_lib_schema1095.EntityScalarField;
|
|
158
|
+
isGraduated: _contractspec_lib_schema1095.EntityScalarField;
|
|
159
|
+
isRelearning: _contractspec_lib_schema1095.EntityScalarField;
|
|
160
|
+
lapses: _contractspec_lib_schema1095.EntityScalarField;
|
|
161
|
+
reviewCount: _contractspec_lib_schema1095.EntityScalarField;
|
|
162
|
+
createdAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
163
|
+
updatedAt: _contractspec_lib_schema1095.EntityScalarField;
|
|
164
|
+
learner: _contractspec_lib_schema1095.EntityRelationField;
|
|
165
|
+
card: _contractspec_lib_schema1095.EntityRelationField;
|
|
166
|
+
}>)[];
|
|
167
|
+
declare const flashcardEnums: _contractspec_lib_schema1095.EntityEnumDef[];
|
|
168
|
+
//#endregion
|
|
169
|
+
export { CardEntity, CardRatingEnum, CardReviewEntity, CardScheduleEntity, DeckEntity, flashcardEntities, flashcardEnums };
|
|
170
|
+
//# sourceMappingURL=flashcard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flashcard.d.ts","names":[],"sources":["../../src/entities/flashcard.ts"],"sourcesContent":[],"mappings":";;;;;;AAUa,cAAA,cAKX,EAAA,4BAAA,CALyB,aAKzB;AAKF;;;cAAa,yCAAU;MAwErB,4BAAA,CAAA;;;;;;;;;;;;;;2DAxEqB;EAAA,KAAA,kDAAA;EA6EV,KAAA,kDA+DX;CAAA,CAAA;;;;cA/DW,yCAAU;MA+DrB,4BAAA,CAAA;;;;;;;;;;;;;;2DA/DqB;EAAA,SAAA,gDAAA;EAoEV,IAAA,kDAmDX;EAAA,OAAA,kDAAA;;;;;;cAnDW,+CAAgB;MAmD3B,4BAAA,CAAA;;;;;;;+DAnD2B;EAAA,eAAA,gDAAA;EAwDhB,UAAA,gDAmEX;EAAA,UAAA,gDAAA;;;;;;;;cAnEW,iDAAkB;MAmE7B,4BAAA,CAAA;;;;;;;;8DAnE6B;EAAA,WAAA,gDAAA;EAqElB,YAAA,gDAKZ;EAAA,MAAA,gDAAA;;;;;;;cALY,iDAAiB;MAK7B,4BAAA,CAAA;;;;;;;;;uDAL6B;EAAA,cAAA,gDAAA;;;;;;;;MAAA,4BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOjB,MAAA,gDAAc;;;;;;;cAAd,gBAAiC,4BAAA,CAAnB,aAAA"}
|