@lssm/module.learning-journey 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229
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 +2 -0
- package/dist/contracts/models.d.ts +120 -119
- package/dist/contracts/models.d.ts.map +1 -0
- package/dist/contracts/models.js +87 -88
- package/dist/contracts/models.js.map +1 -0
- package/dist/contracts/onboarding.d.ts +170 -169
- package/dist/contracts/onboarding.d.ts.map +1 -0
- package/dist/contracts/onboarding.js +71 -72
- package/dist/contracts/onboarding.js.map +1 -0
- package/dist/contracts/operations.d.ts +73 -72
- package/dist/contracts/operations.d.ts.map +1 -0
- package/dist/contracts/operations.js +2 -1
- package/dist/contracts/operations.js.map +1 -0
- package/dist/contracts/shared.d.ts +2 -1
- package/dist/contracts/shared.d.ts.map +1 -0
- package/dist/contracts/shared.js +2 -1
- package/dist/contracts/shared.js.map +1 -0
- package/dist/docs/learning-journey.docblock.js +2 -1
- package/dist/docs/learning-journey.docblock.js.map +1 -0
- package/dist/engines/srs.d.ts +2 -1
- package/dist/engines/srs.d.ts.map +1 -0
- package/dist/engines/srs.js +2 -1
- package/dist/engines/srs.js.map +1 -0
- package/dist/engines/streak.d.ts +2 -1
- package/dist/engines/streak.d.ts.map +1 -0
- package/dist/engines/streak.js +2 -1
- package/dist/engines/streak.js.map +1 -0
- package/dist/engines/xp.d.ts +2 -1
- package/dist/engines/xp.d.ts.map +1 -0
- package/dist/engines/xp.js +2 -1
- package/dist/engines/xp.js.map +1 -0
- package/dist/entities/ai.d.ts +202 -201
- package/dist/entities/ai.d.ts.map +1 -0
- package/dist/entities/ai.js +114 -114
- package/dist/entities/ai.js.map +1 -0
- package/dist/entities/course.d.ts +152 -151
- package/dist/entities/course.d.ts.map +1 -0
- package/dist/entities/course.js +86 -86
- package/dist/entities/course.js.map +1 -0
- package/dist/entities/flashcard.d.ts +147 -146
- package/dist/entities/flashcard.d.ts.map +1 -0
- package/dist/entities/flashcard.js +85 -85
- package/dist/entities/flashcard.js.map +1 -0
- package/dist/entities/gamification.d.ts +200 -199
- package/dist/entities/gamification.d.ts.map +1 -0
- package/dist/entities/gamification.js +120 -120
- package/dist/entities/gamification.js.map +1 -0
- package/dist/entities/index.d.ts +607 -606
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +2 -1
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/learner.d.ts +194 -193
- package/dist/entities/learner.d.ts.map +1 -0
- package/dist/entities/learner.js +113 -113
- package/dist/entities/learner.js.map +1 -0
- package/dist/entities/onboarding.d.ts +167 -166
- package/dist/entities/onboarding.d.ts.map +1 -0
- package/dist/entities/onboarding.js +93 -93
- package/dist/entities/onboarding.js.map +1 -0
- package/dist/entities/quiz.d.ts +187 -186
- package/dist/entities/quiz.d.ts.map +1 -0
- package/dist/entities/quiz.js +109 -109
- package/dist/entities/quiz.js.map +1 -0
- package/dist/events.d.ts +216 -215
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +109 -110
- package/dist/events.js.map +1 -0
- package/dist/learning-journey.feature.d.ts +2 -1
- package/dist/learning-journey.feature.d.ts.map +1 -0
- package/dist/learning-journey.feature.js +2 -1
- package/dist/learning-journey.feature.js.map +1 -0
- package/dist/libs/contracts/dist/capabilities/openbanking.js +2 -1
- package/dist/libs/contracts/dist/capabilities/openbanking.js.map +1 -0
- package/dist/libs/contracts/dist/contract-registry/schemas.js +2 -1
- package/dist/libs/contracts/dist/contract-registry/schemas.js.map +1 -0
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/index.js +2 -6
- package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
- package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
- package/dist/libs/contracts/dist/docs/presentations.js +2 -1
- package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
- package/dist/libs/contracts/dist/docs/registry.js +2 -1
- package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
- package/dist/libs/contracts/dist/events.js +2 -1
- package/dist/libs/contracts/dist/events.js.map +1 -0
- package/dist/libs/contracts/dist/index.js +2 -1
- package/dist/libs/contracts/dist/integrations/contracts.js +65 -66
- package/dist/libs/contracts/dist/integrations/contracts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/models.js +60 -61
- package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +2 -1
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gmail.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/mistral.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/postmark.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/powens.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/stripe.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/contracts.js +44 -45
- package/dist/libs/contracts/dist/knowledge/contracts.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/libs/contracts/dist/llm/exporters.js +2 -1
- package/dist/libs/contracts/dist/llm/exporters.js.map +1 -0
- package/dist/libs/contracts/dist/onboarding-base.js +22 -23
- package/dist/libs/contracts/dist/onboarding-base.js.map +1 -0
- package/dist/libs/contracts/dist/ownership.js +4 -2
- package/dist/libs/contracts/dist/ownership.js.map +1 -0
- package/dist/libs/contracts/dist/presentations.v2.js +2 -1
- package/dist/libs/contracts/dist/presentations.v2.js.map +1 -0
- package/dist/libs/contracts/dist/regenerator/service.js +2 -1
- package/dist/libs/contracts/dist/regenerator/service.js.map +1 -0
- package/dist/libs/contracts/dist/schema/dist/index.js +3873 -6
- package/dist/libs/contracts/dist/schema/dist/index.js.map +1 -0
- package/dist/libs/contracts/dist/spec.js +2 -1
- package/dist/libs/contracts/dist/spec.js.map +1 -0
- package/dist/libs/schema/dist/index.js +4889 -6
- package/dist/libs/schema/dist/index.js.map +1 -0
- package/dist/track-spec.d.ts +2 -1
- package/dist/track-spec.d.ts.map +1 -0
- package/package.json +7 -6
- package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
- package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
- package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
- package/dist/libs/schema/dist/EnumType.js +0 -2
- package/dist/libs/schema/dist/FieldType.js +0 -49
- package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/schema/dist/SchemaModel.js +0 -39
- package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
- package/dist/libs/schema/dist/entity/index.js +0 -2
- package/dist/libs/schema/dist/entity/types.js +0 -1
package/dist/entities/quiz.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../libs/schema/dist/index.js";
|
|
1
|
+
import { L5, Z5, _5, b5 } from "../libs/schema/dist/index.js";
|
|
3
2
|
|
|
4
3
|
//#region src/entities/quiz.ts
|
|
5
4
|
/**
|
|
6
5
|
* Question type enum.
|
|
7
6
|
*/
|
|
8
|
-
const QuestionTypeEnum =
|
|
7
|
+
const QuestionTypeEnum = Z5({
|
|
9
8
|
name: "QuestionType",
|
|
10
9
|
values: [
|
|
11
10
|
"MULTIPLE_CHOICE",
|
|
@@ -21,7 +20,7 @@ const QuestionTypeEnum = defineEntityEnum({
|
|
|
21
20
|
/**
|
|
22
21
|
* Quiz status enum.
|
|
23
22
|
*/
|
|
24
|
-
const QuizStatusEnum =
|
|
23
|
+
const QuizStatusEnum = Z5({
|
|
25
24
|
name: "QuizStatus",
|
|
26
25
|
values: [
|
|
27
26
|
"DRAFT",
|
|
@@ -34,7 +33,7 @@ const QuizStatusEnum = defineEntityEnum({
|
|
|
34
33
|
/**
|
|
35
34
|
* Attempt status enum.
|
|
36
35
|
*/
|
|
37
|
-
const AttemptStatusEnum =
|
|
36
|
+
const AttemptStatusEnum = Z5({
|
|
38
37
|
name: "AttemptStatus",
|
|
39
38
|
values: [
|
|
40
39
|
"IN_PROGRESS",
|
|
@@ -48,309 +47,309 @@ const AttemptStatusEnum = defineEntityEnum({
|
|
|
48
47
|
/**
|
|
49
48
|
* Quiz entity - assessment for a lesson.
|
|
50
49
|
*/
|
|
51
|
-
const QuizEntity =
|
|
50
|
+
const QuizEntity = L5({
|
|
52
51
|
name: "Quiz",
|
|
53
52
|
description: "A quiz assessment.",
|
|
54
53
|
schema: "lssm_learning",
|
|
55
54
|
map: "quiz",
|
|
56
55
|
fields: {
|
|
57
|
-
id:
|
|
58
|
-
lessonId:
|
|
56
|
+
id: _5.id({ description: "Unique quiz identifier" }),
|
|
57
|
+
lessonId: _5.foreignKey({
|
|
59
58
|
isOptional: true,
|
|
60
59
|
description: "Associated lesson"
|
|
61
60
|
}),
|
|
62
|
-
title:
|
|
63
|
-
description:
|
|
61
|
+
title: _5.string({ description: "Quiz title" }),
|
|
62
|
+
description: _5.string({
|
|
64
63
|
isOptional: true,
|
|
65
64
|
description: "Quiz description"
|
|
66
65
|
}),
|
|
67
|
-
instructions:
|
|
66
|
+
instructions: _5.string({
|
|
68
67
|
isOptional: true,
|
|
69
68
|
description: "Quiz instructions"
|
|
70
69
|
}),
|
|
71
|
-
passingScore:
|
|
70
|
+
passingScore: _5.int({
|
|
72
71
|
default: 70,
|
|
73
72
|
description: "Passing score percentage"
|
|
74
73
|
}),
|
|
75
|
-
timeLimit:
|
|
74
|
+
timeLimit: _5.int({
|
|
76
75
|
isOptional: true,
|
|
77
76
|
description: "Time limit in seconds"
|
|
78
77
|
}),
|
|
79
|
-
maxAttempts:
|
|
78
|
+
maxAttempts: _5.int({
|
|
80
79
|
isOptional: true,
|
|
81
80
|
description: "Maximum attempts allowed"
|
|
82
81
|
}),
|
|
83
|
-
shuffleQuestions:
|
|
82
|
+
shuffleQuestions: _5.boolean({
|
|
84
83
|
default: false,
|
|
85
84
|
description: "Shuffle question order"
|
|
86
85
|
}),
|
|
87
|
-
shuffleOptions:
|
|
86
|
+
shuffleOptions: _5.boolean({
|
|
88
87
|
default: false,
|
|
89
88
|
description: "Shuffle answer options"
|
|
90
89
|
}),
|
|
91
|
-
showCorrectAnswers:
|
|
90
|
+
showCorrectAnswers: _5.boolean({
|
|
92
91
|
default: true,
|
|
93
92
|
description: "Show correct answers after"
|
|
94
93
|
}),
|
|
95
|
-
showExplanations:
|
|
94
|
+
showExplanations: _5.boolean({
|
|
96
95
|
default: true,
|
|
97
96
|
description: "Show explanations after"
|
|
98
97
|
}),
|
|
99
|
-
status:
|
|
98
|
+
status: _5.enum("QuizStatus", {
|
|
100
99
|
default: "DRAFT",
|
|
101
100
|
description: "Publication status"
|
|
102
101
|
}),
|
|
103
|
-
totalPoints:
|
|
102
|
+
totalPoints: _5.int({
|
|
104
103
|
default: 0,
|
|
105
104
|
description: "Total points available"
|
|
106
105
|
}),
|
|
107
|
-
xpReward:
|
|
106
|
+
xpReward: _5.int({
|
|
108
107
|
default: 20,
|
|
109
108
|
description: "XP for passing"
|
|
110
109
|
}),
|
|
111
|
-
orgId:
|
|
110
|
+
orgId: _5.string({
|
|
112
111
|
isOptional: true,
|
|
113
112
|
description: "Organization scope"
|
|
114
113
|
}),
|
|
115
|
-
metadata:
|
|
114
|
+
metadata: _5.json({
|
|
116
115
|
isOptional: true,
|
|
117
116
|
description: "Additional metadata"
|
|
118
117
|
}),
|
|
119
|
-
createdAt:
|
|
120
|
-
updatedAt:
|
|
121
|
-
lesson:
|
|
122
|
-
questions:
|
|
123
|
-
attempts:
|
|
118
|
+
createdAt: _5.createdAt(),
|
|
119
|
+
updatedAt: _5.updatedAt(),
|
|
120
|
+
lesson: _5.belongsTo("Lesson", ["lessonId"], ["id"], { onDelete: "Cascade" }),
|
|
121
|
+
questions: _5.hasMany("Question"),
|
|
122
|
+
attempts: _5.hasMany("QuizAttempt")
|
|
124
123
|
},
|
|
125
124
|
indexes: [
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
b5.on(["lessonId"]),
|
|
126
|
+
b5.on(["status"]),
|
|
127
|
+
b5.on(["orgId"])
|
|
129
128
|
],
|
|
130
129
|
enums: [QuizStatusEnum]
|
|
131
130
|
});
|
|
132
131
|
/**
|
|
133
132
|
* Question entity - individual quiz question.
|
|
134
133
|
*/
|
|
135
|
-
const QuestionEntity =
|
|
134
|
+
const QuestionEntity = L5({
|
|
136
135
|
name: "Question",
|
|
137
136
|
description: "A quiz question.",
|
|
138
137
|
schema: "lssm_learning",
|
|
139
138
|
map: "question",
|
|
140
139
|
fields: {
|
|
141
|
-
id:
|
|
142
|
-
quizId:
|
|
143
|
-
type:
|
|
144
|
-
content:
|
|
145
|
-
mediaUrl:
|
|
140
|
+
id: _5.id({ description: "Unique question identifier" }),
|
|
141
|
+
quizId: _5.foreignKey({ description: "Parent quiz" }),
|
|
142
|
+
type: _5.enum("QuestionType", { description: "Question type" }),
|
|
143
|
+
content: _5.string({ description: "Question text" }),
|
|
144
|
+
mediaUrl: _5.string({
|
|
146
145
|
isOptional: true,
|
|
147
146
|
description: "Question media"
|
|
148
147
|
}),
|
|
149
|
-
points:
|
|
148
|
+
points: _5.int({
|
|
150
149
|
default: 1,
|
|
151
150
|
description: "Points for correct answer"
|
|
152
151
|
}),
|
|
153
|
-
codeLanguage:
|
|
152
|
+
codeLanguage: _5.string({
|
|
154
153
|
isOptional: true,
|
|
155
154
|
description: "Programming language"
|
|
156
155
|
}),
|
|
157
|
-
codeTemplate:
|
|
156
|
+
codeTemplate: _5.string({
|
|
158
157
|
isOptional: true,
|
|
159
158
|
description: "Starter code template"
|
|
160
159
|
}),
|
|
161
|
-
testCases:
|
|
160
|
+
testCases: _5.json({
|
|
162
161
|
isOptional: true,
|
|
163
162
|
description: "Test cases for code validation"
|
|
164
163
|
}),
|
|
165
|
-
explanation:
|
|
164
|
+
explanation: _5.string({
|
|
166
165
|
isOptional: true,
|
|
167
166
|
description: "Explanation of correct answer"
|
|
168
167
|
}),
|
|
169
|
-
hint:
|
|
168
|
+
hint: _5.string({
|
|
170
169
|
isOptional: true,
|
|
171
170
|
description: "Hint for the question"
|
|
172
171
|
}),
|
|
173
|
-
order:
|
|
172
|
+
order: _5.int({
|
|
174
173
|
default: 0,
|
|
175
174
|
description: "Display order"
|
|
176
175
|
}),
|
|
177
|
-
skillId:
|
|
176
|
+
skillId: _5.string({
|
|
178
177
|
isOptional: true,
|
|
179
178
|
description: "Associated skill"
|
|
180
179
|
}),
|
|
181
|
-
metadata:
|
|
180
|
+
metadata: _5.json({
|
|
182
181
|
isOptional: true,
|
|
183
182
|
description: "Additional metadata"
|
|
184
183
|
}),
|
|
185
|
-
createdAt:
|
|
186
|
-
updatedAt:
|
|
187
|
-
quiz:
|
|
188
|
-
options:
|
|
184
|
+
createdAt: _5.createdAt(),
|
|
185
|
+
updatedAt: _5.updatedAt(),
|
|
186
|
+
quiz: _5.belongsTo("Quiz", ["quizId"], ["id"], { onDelete: "Cascade" }),
|
|
187
|
+
options: _5.hasMany("QuestionOption")
|
|
189
188
|
},
|
|
190
189
|
indexes: [
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
190
|
+
b5.on(["quizId", "order"]),
|
|
191
|
+
b5.on(["type"]),
|
|
192
|
+
b5.on(["skillId"])
|
|
194
193
|
],
|
|
195
194
|
enums: [QuestionTypeEnum]
|
|
196
195
|
});
|
|
197
196
|
/**
|
|
198
197
|
* QuestionOption entity - answer option for a question.
|
|
199
198
|
*/
|
|
200
|
-
const QuestionOptionEntity =
|
|
199
|
+
const QuestionOptionEntity = L5({
|
|
201
200
|
name: "QuestionOption",
|
|
202
201
|
description: "An answer option for a question.",
|
|
203
202
|
schema: "lssm_learning",
|
|
204
203
|
map: "question_option",
|
|
205
204
|
fields: {
|
|
206
|
-
id:
|
|
207
|
-
questionId:
|
|
208
|
-
content:
|
|
209
|
-
matchContent:
|
|
205
|
+
id: _5.id({ description: "Unique option identifier" }),
|
|
206
|
+
questionId: _5.foreignKey({ description: "Parent question" }),
|
|
207
|
+
content: _5.string({ description: "Option text" }),
|
|
208
|
+
matchContent: _5.string({
|
|
210
209
|
isOptional: true,
|
|
211
210
|
description: "Match pair content"
|
|
212
211
|
}),
|
|
213
|
-
isCorrect:
|
|
212
|
+
isCorrect: _5.boolean({
|
|
214
213
|
default: false,
|
|
215
214
|
description: "Whether option is correct"
|
|
216
215
|
}),
|
|
217
|
-
feedback:
|
|
216
|
+
feedback: _5.string({
|
|
218
217
|
isOptional: true,
|
|
219
218
|
description: "Feedback when selected"
|
|
220
219
|
}),
|
|
221
|
-
order:
|
|
220
|
+
order: _5.int({
|
|
222
221
|
default: 0,
|
|
223
222
|
description: "Display order"
|
|
224
223
|
}),
|
|
225
|
-
metadata:
|
|
224
|
+
metadata: _5.json({
|
|
226
225
|
isOptional: true,
|
|
227
226
|
description: "Additional metadata"
|
|
228
227
|
}),
|
|
229
|
-
createdAt:
|
|
230
|
-
updatedAt:
|
|
231
|
-
question:
|
|
228
|
+
createdAt: _5.createdAt(),
|
|
229
|
+
updatedAt: _5.updatedAt(),
|
|
230
|
+
question: _5.belongsTo("Question", ["questionId"], ["id"], { onDelete: "Cascade" })
|
|
232
231
|
},
|
|
233
|
-
indexes: [
|
|
232
|
+
indexes: [b5.on(["questionId", "order"])]
|
|
234
233
|
});
|
|
235
234
|
/**
|
|
236
235
|
* QuizAttempt entity - a learner's quiz attempt.
|
|
237
236
|
*/
|
|
238
|
-
const QuizAttemptEntity =
|
|
237
|
+
const QuizAttemptEntity = L5({
|
|
239
238
|
name: "QuizAttempt",
|
|
240
239
|
description: "A learner quiz attempt.",
|
|
241
240
|
schema: "lssm_learning",
|
|
242
241
|
map: "quiz_attempt",
|
|
243
242
|
fields: {
|
|
244
|
-
id:
|
|
245
|
-
learnerId:
|
|
246
|
-
quizId:
|
|
247
|
-
status:
|
|
243
|
+
id: _5.id({ description: "Unique attempt identifier" }),
|
|
244
|
+
learnerId: _5.foreignKey({ description: "Learner" }),
|
|
245
|
+
quizId: _5.foreignKey({ description: "Quiz" }),
|
|
246
|
+
status: _5.enum("AttemptStatus", {
|
|
248
247
|
default: "IN_PROGRESS",
|
|
249
248
|
description: "Attempt status"
|
|
250
249
|
}),
|
|
251
|
-
score:
|
|
250
|
+
score: _5.int({
|
|
252
251
|
isOptional: true,
|
|
253
252
|
description: "Score achieved"
|
|
254
253
|
}),
|
|
255
|
-
percentageScore:
|
|
254
|
+
percentageScore: _5.int({
|
|
256
255
|
isOptional: true,
|
|
257
256
|
description: "Percentage score"
|
|
258
257
|
}),
|
|
259
|
-
passed:
|
|
258
|
+
passed: _5.boolean({
|
|
260
259
|
isOptional: true,
|
|
261
260
|
description: "Whether passed"
|
|
262
261
|
}),
|
|
263
|
-
totalQuestions:
|
|
262
|
+
totalQuestions: _5.int({
|
|
264
263
|
default: 0,
|
|
265
264
|
description: "Total questions"
|
|
266
265
|
}),
|
|
267
|
-
answeredQuestions:
|
|
266
|
+
answeredQuestions: _5.int({
|
|
268
267
|
default: 0,
|
|
269
268
|
description: "Questions answered"
|
|
270
269
|
}),
|
|
271
|
-
correctAnswers:
|
|
270
|
+
correctAnswers: _5.int({
|
|
272
271
|
default: 0,
|
|
273
272
|
description: "Correct answers"
|
|
274
273
|
}),
|
|
275
|
-
answers:
|
|
274
|
+
answers: _5.json({
|
|
276
275
|
isOptional: true,
|
|
277
276
|
description: "Submitted answers"
|
|
278
277
|
}),
|
|
279
|
-
xpEarned:
|
|
278
|
+
xpEarned: _5.int({
|
|
280
279
|
default: 0,
|
|
281
280
|
description: "XP earned"
|
|
282
281
|
}),
|
|
283
|
-
timeSpent:
|
|
282
|
+
timeSpent: _5.int({
|
|
284
283
|
default: 0,
|
|
285
284
|
description: "Time spent in seconds"
|
|
286
285
|
}),
|
|
287
|
-
startedAt:
|
|
288
|
-
completedAt:
|
|
286
|
+
startedAt: _5.dateTime({ description: "When started" }),
|
|
287
|
+
completedAt: _5.dateTime({
|
|
289
288
|
isOptional: true,
|
|
290
289
|
description: "When completed"
|
|
291
290
|
}),
|
|
292
|
-
attemptNumber:
|
|
291
|
+
attemptNumber: _5.int({
|
|
293
292
|
default: 1,
|
|
294
293
|
description: "Which attempt this is"
|
|
295
294
|
}),
|
|
296
|
-
metadata:
|
|
295
|
+
metadata: _5.json({
|
|
297
296
|
isOptional: true,
|
|
298
297
|
description: "Additional metadata"
|
|
299
298
|
}),
|
|
300
|
-
createdAt:
|
|
301
|
-
updatedAt:
|
|
302
|
-
learner:
|
|
303
|
-
quiz:
|
|
299
|
+
createdAt: _5.createdAt(),
|
|
300
|
+
updatedAt: _5.updatedAt(),
|
|
301
|
+
learner: _5.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
|
|
302
|
+
quiz: _5.belongsTo("Quiz", ["quizId"], ["id"], { onDelete: "Cascade" })
|
|
304
303
|
},
|
|
305
304
|
indexes: [
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
305
|
+
b5.on(["learnerId", "quizId"]),
|
|
306
|
+
b5.on(["learnerId", "status"]),
|
|
307
|
+
b5.on(["quizId", "status"])
|
|
309
308
|
],
|
|
310
309
|
enums: [AttemptStatusEnum]
|
|
311
310
|
});
|
|
312
311
|
/**
|
|
313
312
|
* SkillAssessment entity - maps quiz performance to skills.
|
|
314
313
|
*/
|
|
315
|
-
const SkillAssessmentEntity =
|
|
314
|
+
const SkillAssessmentEntity = L5({
|
|
316
315
|
name: "SkillAssessment",
|
|
317
316
|
description: "Assessment of a skill based on quiz performance.",
|
|
318
317
|
schema: "lssm_learning",
|
|
319
318
|
map: "skill_assessment",
|
|
320
319
|
fields: {
|
|
321
|
-
id:
|
|
322
|
-
learnerId:
|
|
323
|
-
skillId:
|
|
324
|
-
skillName:
|
|
325
|
-
level:
|
|
320
|
+
id: _5.id({ description: "Unique assessment identifier" }),
|
|
321
|
+
learnerId: _5.foreignKey({ description: "Learner" }),
|
|
322
|
+
skillId: _5.string({ description: "Skill identifier" }),
|
|
323
|
+
skillName: _5.string({ description: "Skill name" }),
|
|
324
|
+
level: _5.int({
|
|
326
325
|
default: 1,
|
|
327
326
|
description: "Proficiency level (1-5)"
|
|
328
327
|
}),
|
|
329
|
-
score:
|
|
328
|
+
score: _5.int({
|
|
330
329
|
default: 0,
|
|
331
330
|
description: "Assessment score (0-100)"
|
|
332
331
|
}),
|
|
333
|
-
confidence:
|
|
332
|
+
confidence: _5.decimal({
|
|
334
333
|
default: .5,
|
|
335
334
|
description: "Confidence in assessment"
|
|
336
335
|
}),
|
|
337
|
-
questionsAnswered:
|
|
336
|
+
questionsAnswered: _5.int({
|
|
338
337
|
default: 0,
|
|
339
338
|
description: "Total questions answered"
|
|
340
339
|
}),
|
|
341
|
-
questionsCorrect:
|
|
340
|
+
questionsCorrect: _5.int({
|
|
342
341
|
default: 0,
|
|
343
342
|
description: "Total correct"
|
|
344
343
|
}),
|
|
345
|
-
assessedAt:
|
|
346
|
-
createdAt:
|
|
347
|
-
updatedAt:
|
|
348
|
-
learner:
|
|
344
|
+
assessedAt: _5.dateTime({ description: "Last assessment time" }),
|
|
345
|
+
createdAt: _5.createdAt(),
|
|
346
|
+
updatedAt: _5.updatedAt(),
|
|
347
|
+
learner: _5.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
|
|
349
348
|
},
|
|
350
349
|
indexes: [
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
350
|
+
b5.unique(["learnerId", "skillId"], { name: "skill_assessment_unique" }),
|
|
351
|
+
b5.on(["learnerId", "level"]),
|
|
352
|
+
b5.on(["skillId"])
|
|
354
353
|
]
|
|
355
354
|
});
|
|
356
355
|
const quizEntities = [
|
|
@@ -367,4 +366,5 @@ const quizEnums = [
|
|
|
367
366
|
];
|
|
368
367
|
|
|
369
368
|
//#endregion
|
|
370
|
-
export { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums };
|
|
369
|
+
export { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums };
|
|
370
|
+
//# sourceMappingURL=quiz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quiz.js","names":["defineEntityEnum","defineEntity","field","index"],"sources":["../../src/entities/quiz.ts"],"sourcesContent":["import { defineEntity, defineEntityEnum, field, index } from '@lssm/lib.schema';\n\n/**\n * Question type enum.\n */\nexport const QuestionTypeEnum = defineEntityEnum({\n name: 'QuestionType',\n values: [\n 'MULTIPLE_CHOICE',\n 'TRUE_FALSE',\n 'FILL_BLANK',\n 'MATCHING',\n 'SHORT_ANSWER',\n 'CODE',\n ] as const,\n schema: 'lssm_learning',\n description: 'Type of quiz question.',\n});\n\n/**\n * Quiz status enum.\n */\nexport const QuizStatusEnum = defineEntityEnum({\n name: 'QuizStatus',\n values: ['DRAFT', 'PUBLISHED', 'ARCHIVED'] as const,\n schema: 'lssm_learning',\n description: 'Publication status of a quiz.',\n});\n\n/**\n * Attempt status enum.\n */\nexport const AttemptStatusEnum = defineEntityEnum({\n name: 'AttemptStatus',\n values: ['IN_PROGRESS', 'COMPLETED', 'TIMED_OUT', 'ABANDONED'] as const,\n schema: 'lssm_learning',\n description: 'Status of a quiz attempt.',\n});\n\n/**\n * Quiz entity - assessment for a lesson.\n */\nexport const QuizEntity = defineEntity({\n name: 'Quiz',\n description: 'A quiz assessment.',\n schema: 'lssm_learning',\n map: 'quiz',\n fields: {\n id: field.id({ description: 'Unique quiz identifier' }),\n lessonId: field.foreignKey({\n isOptional: true,\n description: 'Associated lesson',\n }),\n\n // Basic info\n title: field.string({ description: 'Quiz title' }),\n description: field.string({\n isOptional: true,\n description: 'Quiz description',\n }),\n instructions: field.string({\n isOptional: true,\n description: 'Quiz instructions',\n }),\n\n // Settings\n passingScore: field.int({\n default: 70,\n description: 'Passing score percentage',\n }),\n timeLimit: field.int({\n isOptional: true,\n description: 'Time limit in seconds',\n }),\n maxAttempts: field.int({\n isOptional: true,\n description: 'Maximum attempts allowed',\n }),\n\n // Display options\n shuffleQuestions: field.boolean({\n default: false,\n description: 'Shuffle question order',\n }),\n shuffleOptions: field.boolean({\n default: false,\n description: 'Shuffle answer options',\n }),\n showCorrectAnswers: field.boolean({\n default: true,\n description: 'Show correct answers after',\n }),\n showExplanations: field.boolean({\n default: true,\n description: 'Show explanations after',\n }),\n\n // Status\n status: field.enum('QuizStatus', {\n default: 'DRAFT',\n description: 'Publication status',\n }),\n\n // Scoring\n totalPoints: field.int({\n default: 0,\n description: 'Total points available',\n }),\n\n // XP\n xpReward: field.int({ default: 20, description: 'XP for passing' }),\n\n // Organization scope\n orgId: field.string({\n isOptional: true,\n description: 'Organization scope',\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 questions: field.hasMany('Question'),\n attempts: field.hasMany('QuizAttempt'),\n },\n indexes: [index.on(['lessonId']), index.on(['status']), index.on(['orgId'])],\n enums: [QuizStatusEnum],\n});\n\n/**\n * Question entity - individual quiz question.\n */\nexport const QuestionEntity = defineEntity({\n name: 'Question',\n description: 'A quiz question.',\n schema: 'lssm_learning',\n map: 'question',\n fields: {\n id: field.id({ description: 'Unique question identifier' }),\n quizId: field.foreignKey({ description: 'Parent quiz' }),\n\n // Question content\n type: field.enum('QuestionType', { description: 'Question type' }),\n content: field.string({ description: 'Question text' }),\n\n // Media\n mediaUrl: field.string({ isOptional: true, description: 'Question media' }),\n\n // Scoring\n points: field.int({ default: 1, description: 'Points for correct answer' }),\n\n // For code questions\n codeLanguage: field.string({\n isOptional: true,\n description: 'Programming language',\n }),\n codeTemplate: field.string({\n isOptional: true,\n description: 'Starter code template',\n }),\n testCases: field.json({\n isOptional: true,\n description: 'Test cases for code validation',\n }),\n\n // Feedback\n explanation: field.string({\n isOptional: true,\n description: 'Explanation of correct answer',\n }),\n hint: field.string({\n isOptional: true,\n description: 'Hint for the question',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\n\n // Skill mapping\n skillId: field.string({\n isOptional: true,\n description: 'Associated skill',\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 quiz: field.belongsTo('Quiz', ['quizId'], ['id'], { onDelete: 'Cascade' }),\n options: field.hasMany('QuestionOption'),\n },\n indexes: [\n index.on(['quizId', 'order']),\n index.on(['type']),\n index.on(['skillId']),\n ],\n enums: [QuestionTypeEnum],\n});\n\n/**\n * QuestionOption entity - answer option for a question.\n */\nexport const QuestionOptionEntity = defineEntity({\n name: 'QuestionOption',\n description: 'An answer option for a question.',\n schema: 'lssm_learning',\n map: 'question_option',\n fields: {\n id: field.id({ description: 'Unique option identifier' }),\n questionId: field.foreignKey({ description: 'Parent question' }),\n\n // Content\n content: field.string({ description: 'Option text' }),\n\n // For matching questions\n matchContent: field.string({\n isOptional: true,\n description: 'Match pair content',\n }),\n\n // Correctness\n isCorrect: field.boolean({\n default: false,\n description: 'Whether option is correct',\n }),\n\n // Feedback\n feedback: field.string({\n isOptional: true,\n description: 'Feedback when selected',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\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 question: field.belongsTo('Question', ['questionId'], ['id'], {\n onDelete: 'Cascade',\n }),\n },\n indexes: [index.on(['questionId', 'order'])],\n});\n\n/**\n * QuizAttempt entity - a learner's quiz attempt.\n */\nexport const QuizAttemptEntity = defineEntity({\n name: 'QuizAttempt',\n description: 'A learner quiz attempt.',\n schema: 'lssm_learning',\n map: 'quiz_attempt',\n fields: {\n id: field.id({ description: 'Unique attempt identifier' }),\n learnerId: field.foreignKey({ description: 'Learner' }),\n quizId: field.foreignKey({ description: 'Quiz' }),\n\n // Status\n status: field.enum('AttemptStatus', {\n default: 'IN_PROGRESS',\n description: 'Attempt status',\n }),\n\n // Results\n score: field.int({ isOptional: true, description: 'Score achieved' }),\n percentageScore: field.int({\n isOptional: true,\n description: 'Percentage score',\n }),\n passed: field.boolean({ isOptional: true, description: 'Whether passed' }),\n\n // Question tracking\n totalQuestions: field.int({ default: 0, description: 'Total questions' }),\n answeredQuestions: field.int({\n default: 0,\n description: 'Questions answered',\n }),\n correctAnswers: field.int({ default: 0, description: 'Correct answers' }),\n\n // Answers\n answers: field.json({ isOptional: true, description: 'Submitted answers' }),\n\n // XP\n xpEarned: field.int({ default: 0, description: 'XP earned' }),\n\n // Time tracking\n timeSpent: field.int({ default: 0, description: 'Time spent in seconds' }),\n\n // Timeline\n startedAt: field.dateTime({ description: 'When started' }),\n completedAt: field.dateTime({\n isOptional: true,\n description: 'When completed',\n }),\n\n // Attempt number\n attemptNumber: field.int({\n default: 1,\n description: 'Which attempt this is',\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 learner: field.belongsTo('Learner', ['learnerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n quiz: field.belongsTo('Quiz', ['quizId'], ['id'], { onDelete: 'Cascade' }),\n },\n indexes: [\n index.on(['learnerId', 'quizId']),\n index.on(['learnerId', 'status']),\n index.on(['quizId', 'status']),\n ],\n enums: [AttemptStatusEnum],\n});\n\n/**\n * SkillAssessment entity - maps quiz performance to skills.\n */\nexport const SkillAssessmentEntity = defineEntity({\n name: 'SkillAssessment',\n description: 'Assessment of a skill based on quiz performance.',\n schema: 'lssm_learning',\n map: 'skill_assessment',\n fields: {\n id: field.id({ description: 'Unique assessment identifier' }),\n learnerId: field.foreignKey({ description: 'Learner' }),\n\n // Skill\n skillId: field.string({ description: 'Skill identifier' }),\n skillName: field.string({ description: 'Skill name' }),\n\n // Assessment\n level: field.int({ default: 1, description: 'Proficiency level (1-5)' }),\n score: field.int({ default: 0, description: 'Assessment score (0-100)' }),\n confidence: field.decimal({\n default: 0.5,\n description: 'Confidence in assessment',\n }),\n\n // Stats\n questionsAnswered: field.int({\n default: 0,\n description: 'Total questions answered',\n }),\n questionsCorrect: field.int({ default: 0, description: 'Total correct' }),\n\n // Timestamps\n assessedAt: field.dateTime({ description: 'Last assessment time' }),\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n learner: field.belongsTo('Learner', ['learnerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n },\n indexes: [\n index.unique(['learnerId', 'skillId'], { name: 'skill_assessment_unique' }),\n index.on(['learnerId', 'level']),\n index.on(['skillId']),\n ],\n});\n\nexport const quizEntities = [\n QuizEntity,\n QuestionEntity,\n QuestionOptionEntity,\n QuizAttemptEntity,\n SkillAssessmentEntity,\n];\n\nexport const quizEnums = [QuestionTypeEnum, QuizStatusEnum, AttemptStatusEnum];\n"],"mappings":";;;;;;AAKA,MAAa,mBAAmBA,GAAiB;CAC/C,MAAM;CACN,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACD;CACD,QAAQ;CACR,aAAa;CACd,CAAC;;;;AAKF,MAAa,iBAAiBA,GAAiB;CAC7C,MAAM;CACN,QAAQ;EAAC;EAAS;EAAa;EAAW;CAC1C,QAAQ;CACR,aAAa;CACd,CAAC;;;;AAKF,MAAa,oBAAoBA,GAAiB;CAChD,MAAM;CACN,QAAQ;EAAC;EAAe;EAAa;EAAa;EAAY;CAC9D,QAAQ;CACR,aAAa;CACd,CAAC;;;;AAKF,MAAa,aAAaC,GAAa;CACrC,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAIC,GAAM,GAAG,EAAE,aAAa,0BAA0B,CAAC;EACvD,UAAUA,GAAM,WAAW;GACzB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,OAAOA,GAAM,OAAO,EAAE,aAAa,cAAc,CAAC;EAClD,aAAaA,GAAM,OAAO;GACxB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,cAAcA,GAAM,OAAO;GACzB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,cAAcA,GAAM,IAAI;GACtB,SAAS;GACT,aAAa;GACd,CAAC;EACF,WAAWA,GAAM,IAAI;GACnB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,aAAaA,GAAM,IAAI;GACrB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,kBAAkBA,GAAM,QAAQ;GAC9B,SAAS;GACT,aAAa;GACd,CAAC;EACF,gBAAgBA,GAAM,QAAQ;GAC5B,SAAS;GACT,aAAa;GACd,CAAC;EACF,oBAAoBA,GAAM,QAAQ;GAChC,SAAS;GACT,aAAa;GACd,CAAC;EACF,kBAAkBA,GAAM,QAAQ;GAC9B,SAAS;GACT,aAAa;GACd,CAAC;EAGF,QAAQA,GAAM,KAAK,cAAc;GAC/B,SAAS;GACT,aAAa;GACd,CAAC;EAGF,aAAaA,GAAM,IAAI;GACrB,SAAS;GACT,aAAa;GACd,CAAC;EAGF,UAAUA,GAAM,IAAI;GAAE,SAAS;GAAI,aAAa;GAAkB,CAAC;EAGnE,OAAOA,GAAM,OAAO;GAClB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,UAAUA,GAAM,KAAK;GACnB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,WAAWA,GAAM,WAAW;EAC5B,WAAWA,GAAM,WAAW;EAG5B,QAAQA,GAAM,UAAU,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EACtD,UAAU,WACX,CAAC;EACF,WAAWA,GAAM,QAAQ,WAAW;EACpC,UAAUA,GAAM,QAAQ,cAAc;EACvC;CACD,SAAS;EAACC,GAAM,GAAG,CAAC,WAAW,CAAC;EAAEA,GAAM,GAAG,CAAC,SAAS,CAAC;EAAEA,GAAM,GAAG,CAAC,QAAQ,CAAC;EAAC;CAC5E,OAAO,CAAC,eAAe;CACxB,CAAC;;;;AAKF,MAAa,iBAAiBF,GAAa;CACzC,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAIC,GAAM,GAAG,EAAE,aAAa,8BAA8B,CAAC;EAC3D,QAAQA,GAAM,WAAW,EAAE,aAAa,eAAe,CAAC;EAGxD,MAAMA,GAAM,KAAK,gBAAgB,EAAE,aAAa,iBAAiB,CAAC;EAClE,SAASA,GAAM,OAAO,EAAE,aAAa,iBAAiB,CAAC;EAGvD,UAAUA,GAAM,OAAO;GAAE,YAAY;GAAM,aAAa;GAAkB,CAAC;EAG3E,QAAQA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAA6B,CAAC;EAG3E,cAAcA,GAAM,OAAO;GACzB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,cAAcA,GAAM,OAAO;GACzB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,WAAWA,GAAM,KAAK;GACpB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,aAAaA,GAAM,OAAO;GACxB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,MAAMA,GAAM,OAAO;GACjB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,OAAOA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAiB,CAAC;EAG9D,SAASA,GAAM,OAAO;GACpB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,UAAUA,GAAM,KAAK;GACnB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,WAAWA,GAAM,WAAW;EAC5B,WAAWA,GAAM,WAAW;EAG5B,MAAMA,GAAM,UAAU,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,UAAU,WAAW,CAAC;EAC1E,SAASA,GAAM,QAAQ,iBAAiB;EACzC;CACD,SAAS;EACPC,GAAM,GAAG,CAAC,UAAU,QAAQ,CAAC;EAC7BA,GAAM,GAAG,CAAC,OAAO,CAAC;EAClBA,GAAM,GAAG,CAAC,UAAU,CAAC;EACtB;CACD,OAAO,CAAC,iBAAiB;CAC1B,CAAC;;;;AAKF,MAAa,uBAAuBF,GAAa;CAC/C,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAIC,GAAM,GAAG,EAAE,aAAa,4BAA4B,CAAC;EACzD,YAAYA,GAAM,WAAW,EAAE,aAAa,mBAAmB,CAAC;EAGhE,SAASA,GAAM,OAAO,EAAE,aAAa,eAAe,CAAC;EAGrD,cAAcA,GAAM,OAAO;GACzB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,WAAWA,GAAM,QAAQ;GACvB,SAAS;GACT,aAAa;GACd,CAAC;EAGF,UAAUA,GAAM,OAAO;GACrB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,OAAOA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAiB,CAAC;EAG9D,UAAUA,GAAM,KAAK;GACnB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,WAAWA,GAAM,WAAW;EAC5B,WAAWA,GAAM,WAAW;EAG5B,UAAUA,GAAM,UAAU,YAAY,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAC5D,UAAU,WACX,CAAC;EACH;CACD,SAAS,CAACC,GAAM,GAAG,CAAC,cAAc,QAAQ,CAAC,CAAC;CAC7C,CAAC;;;;AAKF,MAAa,oBAAoBF,GAAa;CAC5C,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAIC,GAAM,GAAG,EAAE,aAAa,6BAA6B,CAAC;EAC1D,WAAWA,GAAM,WAAW,EAAE,aAAa,WAAW,CAAC;EACvD,QAAQA,GAAM,WAAW,EAAE,aAAa,QAAQ,CAAC;EAGjD,QAAQA,GAAM,KAAK,iBAAiB;GAClC,SAAS;GACT,aAAa;GACd,CAAC;EAGF,OAAOA,GAAM,IAAI;GAAE,YAAY;GAAM,aAAa;GAAkB,CAAC;EACrE,iBAAiBA,GAAM,IAAI;GACzB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,QAAQA,GAAM,QAAQ;GAAE,YAAY;GAAM,aAAa;GAAkB,CAAC;EAG1E,gBAAgBA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAmB,CAAC;EACzE,mBAAmBA,GAAM,IAAI;GAC3B,SAAS;GACT,aAAa;GACd,CAAC;EACF,gBAAgBA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAmB,CAAC;EAGzE,SAASA,GAAM,KAAK;GAAE,YAAY;GAAM,aAAa;GAAqB,CAAC;EAG3E,UAAUA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAa,CAAC;EAG7D,WAAWA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAyB,CAAC;EAG1E,WAAWA,GAAM,SAAS,EAAE,aAAa,gBAAgB,CAAC;EAC1D,aAAaA,GAAM,SAAS;GAC1B,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,eAAeA,GAAM,IAAI;GACvB,SAAS;GACT,aAAa;GACd,CAAC;EAGF,UAAUA,GAAM,KAAK;GACnB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,WAAWA,GAAM,WAAW;EAC5B,WAAWA,GAAM,WAAW;EAG5B,SAASA,GAAM,UAAU,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EACzD,UAAU,WACX,CAAC;EACF,MAAMA,GAAM,UAAU,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,UAAU,WAAW,CAAC;EAC3E;CACD,SAAS;EACPC,GAAM,GAAG,CAAC,aAAa,SAAS,CAAC;EACjCA,GAAM,GAAG,CAAC,aAAa,SAAS,CAAC;EACjCA,GAAM,GAAG,CAAC,UAAU,SAAS,CAAC;EAC/B;CACD,OAAO,CAAC,kBAAkB;CAC3B,CAAC;;;;AAKF,MAAa,wBAAwBF,GAAa;CAChD,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAIC,GAAM,GAAG,EAAE,aAAa,gCAAgC,CAAC;EAC7D,WAAWA,GAAM,WAAW,EAAE,aAAa,WAAW,CAAC;EAGvD,SAASA,GAAM,OAAO,EAAE,aAAa,oBAAoB,CAAC;EAC1D,WAAWA,GAAM,OAAO,EAAE,aAAa,cAAc,CAAC;EAGtD,OAAOA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAA2B,CAAC;EACxE,OAAOA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAA4B,CAAC;EACzE,YAAYA,GAAM,QAAQ;GACxB,SAAS;GACT,aAAa;GACd,CAAC;EAGF,mBAAmBA,GAAM,IAAI;GAC3B,SAAS;GACT,aAAa;GACd,CAAC;EACF,kBAAkBA,GAAM,IAAI;GAAE,SAAS;GAAG,aAAa;GAAiB,CAAC;EAGzE,YAAYA,GAAM,SAAS,EAAE,aAAa,wBAAwB,CAAC;EACnE,WAAWA,GAAM,WAAW;EAC5B,WAAWA,GAAM,WAAW;EAG5B,SAASA,GAAM,UAAU,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EACzD,UAAU,WACX,CAAC;EACH;CACD,SAAS;EACPC,GAAM,OAAO,CAAC,aAAa,UAAU,EAAE,EAAE,MAAM,2BAA2B,CAAC;EAC3EA,GAAM,GAAG,CAAC,aAAa,QAAQ,CAAC;EAChCA,GAAM,GAAG,CAAC,UAAU,CAAC;EACtB;CACF,CAAC;AAEF,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,YAAY;CAAC;CAAkB;CAAgB;CAAkB"}
|