@lssm/module.learning-journey 0.0.0-canary-20251217062943 → 0.0.0-canary-20251217072406

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 (156) hide show
  1. package/dist/contracts/index.js +6 -1
  2. package/dist/contracts/models.d.ts +118 -118
  3. package/dist/contracts/models.js +389 -1
  4. package/dist/contracts/onboarding.d.ts +168 -168
  5. package/dist/contracts/onboarding.js +404 -1
  6. package/dist/contracts/operations.d.ts +71 -71
  7. package/dist/contracts/operations.js +151 -1
  8. package/dist/contracts/shared.js +5 -1
  9. package/dist/docs/index.js +1 -1
  10. package/dist/docs/learning-journey.docblock.js +61 -5
  11. package/dist/engines/index.js +5 -1
  12. package/dist/engines/srs.js +219 -1
  13. package/dist/engines/streak.js +193 -1
  14. package/dist/engines/xp.js +212 -1
  15. package/dist/entities/ai.d.ts +200 -200
  16. package/dist/entities/ai.js +376 -1
  17. package/dist/entities/course.d.ts +150 -150
  18. package/dist/entities/course.js +316 -1
  19. package/dist/entities/flashcard.d.ts +145 -145
  20. package/dist/entities/flashcard.js +249 -1
  21. package/dist/entities/gamification.d.ts +198 -198
  22. package/dist/entities/gamification.js +392 -1
  23. package/dist/entities/index.d.ts +605 -605
  24. package/dist/entities/index.js +44 -1
  25. package/dist/entities/learner.d.ts +192 -192
  26. package/dist/entities/learner.js +365 -1
  27. package/dist/entities/onboarding.d.ts +165 -165
  28. package/dist/entities/onboarding.js +307 -1
  29. package/dist/entities/quiz.d.ts +185 -185
  30. package/dist/entities/quiz.js +370 -1
  31. package/dist/events.d.ts +213 -213
  32. package/dist/events.js +583 -1
  33. package/dist/index.js +22 -1
  34. package/dist/learning-journey.feature.js +148 -1
  35. package/dist/libs/contracts/dist/capabilities/openbanking.js +88 -1
  36. package/dist/libs/contracts/dist/client/index.js +5 -1
  37. package/dist/libs/contracts/dist/client/react/feature-render.js +2 -1
  38. package/dist/libs/contracts/dist/client/react/form-render.js +4 -1
  39. package/dist/libs/contracts/dist/client/react/index.js +4 -1
  40. package/dist/libs/contracts/dist/contract-registry/index.js +1 -1
  41. package/dist/libs/contracts/dist/contract-registry/schemas.js +60 -1
  42. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +16 -76
  43. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +16 -350
  44. package/dist/libs/contracts/dist/docs/index.js +29 -1
  45. package/dist/libs/contracts/dist/docs/presentations.js +71 -1
  46. package/dist/libs/contracts/dist/docs/registry.js +44 -1
  47. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +16 -383
  48. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +16 -68
  49. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +16 -140
  50. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +16 -86
  51. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +16 -1
  52. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +24 -2
  53. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +21 -2
  54. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +16 -213
  55. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +73 -5
  56. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +37 -1
  57. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +16 -1
  58. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +20 -262
  59. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +48 -1
  60. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +24 -2
  61. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +23 -2
  62. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +25 -16
  63. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +67 -1
  64. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +22 -2
  65. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +40 -36
  66. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +47 -1
  67. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +23 -2
  68. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +36 -3
  69. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +20 -1
  70. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +36 -3
  71. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +20 -1
  72. package/dist/libs/contracts/dist/events.js +10 -1
  73. package/dist/libs/contracts/dist/experiments/evaluator.js +1 -1
  74. package/dist/libs/contracts/dist/index.js +71 -1
  75. package/dist/libs/contracts/dist/install.js +2 -1
  76. package/dist/libs/contracts/dist/integrations/contracts.js +377 -1
  77. package/dist/libs/contracts/dist/integrations/index.js +18 -1
  78. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +228 -1
  79. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +159 -1
  80. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +3 -1
  81. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +210 -1
  82. package/dist/libs/contracts/dist/integrations/openbanking/models.js +242 -1
  83. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +13 -1
  84. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +52 -1
  85. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +75 -1
  86. package/dist/libs/contracts/dist/integrations/providers/gmail.js +87 -1
  87. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +66 -1
  88. package/dist/libs/contracts/dist/integrations/providers/index.js +11 -1
  89. package/dist/libs/contracts/dist/integrations/providers/mistral.js +68 -1
  90. package/dist/libs/contracts/dist/integrations/providers/postmark.js +68 -1
  91. package/dist/libs/contracts/dist/integrations/providers/powens.js +116 -1
  92. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +73 -1
  93. package/dist/libs/contracts/dist/integrations/providers/registry.js +10 -1
  94. package/dist/libs/contracts/dist/integrations/providers/stripe.js +83 -1
  95. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +61 -1
  96. package/dist/libs/contracts/dist/jsonschema.js +1 -1
  97. package/dist/libs/contracts/dist/knowledge/contracts.js +306 -1
  98. package/dist/libs/contracts/dist/knowledge/index.js +7 -1
  99. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +34 -1
  100. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +34 -1
  101. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +38 -1
  102. package/dist/libs/contracts/dist/knowledge/spaces/index.js +6 -1
  103. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +34 -1
  104. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +37 -1
  105. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +34 -1
  106. package/dist/libs/contracts/dist/llm/exporters.js +19 -1
  107. package/dist/libs/contracts/dist/llm/index.js +2 -1
  108. package/dist/libs/contracts/dist/llm/prompts.js +1 -1
  109. package/dist/libs/contracts/dist/onboarding-base.js +196 -1
  110. package/dist/libs/contracts/dist/openapi.js +1 -1
  111. package/dist/libs/contracts/dist/ownership.js +21 -1
  112. package/dist/libs/contracts/dist/presentations.js +1 -1
  113. package/dist/libs/contracts/dist/presentations.v2.js +11 -1
  114. package/dist/libs/contracts/dist/prompt.js +1 -1
  115. package/dist/libs/contracts/dist/promptRegistry.js +1 -1
  116. package/dist/libs/contracts/dist/regenerator/index.js +1 -1
  117. package/dist/libs/contracts/dist/regenerator/service.js +6 -1
  118. package/dist/libs/contracts/dist/registry.js +2 -1
  119. package/dist/libs/contracts/dist/resources.js +1 -1
  120. package/dist/libs/contracts/dist/schema/dist/EnumType.js +2 -1
  121. package/dist/libs/contracts/dist/schema/dist/FieldType.js +49 -1
  122. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +236 -1
  123. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +34 -1
  124. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +1 -1
  125. package/dist/libs/contracts/dist/schema/dist/entity/index.js +2 -1
  126. package/dist/libs/contracts/dist/schema/dist/entity/types.js +1 -1
  127. package/dist/libs/contracts/dist/schema/dist/index.js +6 -1
  128. package/dist/libs/contracts/dist/server/graphql-pothos.js +6 -1
  129. package/dist/libs/contracts/dist/server/index.js +8 -1
  130. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +4 -1
  131. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +2 -1
  132. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +1 -1
  133. package/dist/libs/contracts/dist/server/mcp/registerResources.js +2 -1
  134. package/dist/libs/contracts/dist/server/mcp/registerTools.js +1 -1
  135. package/dist/libs/contracts/dist/server/provider-mcp.js +1 -1
  136. package/dist/libs/contracts/dist/server/rest-elysia.js +1 -1
  137. package/dist/libs/contracts/dist/server/rest-express.js +1 -1
  138. package/dist/libs/contracts/dist/server/rest-generic.js +1 -1
  139. package/dist/libs/contracts/dist/server/rest-next-app.js +1 -1
  140. package/dist/libs/contracts/dist/server/rest-next-pages.js +1 -1
  141. package/dist/libs/contracts/dist/spec.js +34 -1
  142. package/dist/libs/contracts/dist/telemetry/index.js +1 -1
  143. package/dist/libs/contracts/dist/telemetry/tracker.js +1 -1
  144. package/dist/libs/contracts/dist/tests/index.js +1 -1
  145. package/dist/libs/contracts/dist/tests/runner.js +2 -1
  146. package/dist/libs/contracts/dist/workflow/index.js +1 -1
  147. package/dist/libs/contracts/dist/workflow/runner.js +1 -1
  148. package/dist/libs/schema/dist/EnumType.js +2 -1
  149. package/dist/libs/schema/dist/FieldType.js +49 -1
  150. package/dist/libs/schema/dist/ScalarTypeEnum.js +236 -1
  151. package/dist/libs/schema/dist/SchemaModel.js +39 -1
  152. package/dist/libs/schema/dist/entity/defineEntity.js +236 -1
  153. package/dist/libs/schema/dist/entity/index.js +2 -1
  154. package/dist/libs/schema/dist/entity/types.js +1 -1
  155. package/dist/libs/schema/dist/index.js +6 -1
  156. package/package.json +5 -5
@@ -1,183 +1,183 @@
1
- import * as _lssm_lib_schema1630 from "@lssm/lib.schema";
1
+ import * as _lssm_lib_schema663 from "@lssm/lib.schema";
2
2
 
3
3
  //#region src/entities/course.d.ts
4
4
  /**
5
5
  * Course difficulty enum.
6
6
  */
7
- declare const CourseDifficultyEnum: _lssm_lib_schema1630.EntityEnumDef;
7
+ declare const CourseDifficultyEnum: _lssm_lib_schema663.EntityEnumDef;
8
8
  /**
9
9
  * Course status enum.
10
10
  */
11
- declare const CourseStatusEnum: _lssm_lib_schema1630.EntityEnumDef;
11
+ declare const CourseStatusEnum: _lssm_lib_schema663.EntityEnumDef;
12
12
  /**
13
13
  * Lesson type enum.
14
14
  */
15
- declare const LessonTypeEnum: _lssm_lib_schema1630.EntityEnumDef;
15
+ declare const LessonTypeEnum: _lssm_lib_schema663.EntityEnumDef;
16
16
  /**
17
17
  * Content type enum.
18
18
  */
19
- declare const ContentTypeEnum: _lssm_lib_schema1630.EntityEnumDef;
19
+ declare const ContentTypeEnum: _lssm_lib_schema663.EntityEnumDef;
20
20
  /**
21
21
  * Course entity - defines a learning course.
22
22
  */
23
- declare const CourseEntity: _lssm_lib_schema1630.EntitySpec<{
24
- id: _lssm_lib_schema1630.EntityScalarField;
25
- title: _lssm_lib_schema1630.EntityScalarField;
26
- slug: _lssm_lib_schema1630.EntityScalarField;
27
- description: _lssm_lib_schema1630.EntityScalarField;
28
- summary: _lssm_lib_schema1630.EntityScalarField;
29
- difficulty: _lssm_lib_schema1630.EntityEnumField;
30
- category: _lssm_lib_schema1630.EntityScalarField;
31
- tags: _lssm_lib_schema1630.EntityScalarField;
32
- prerequisites: _lssm_lib_schema1630.EntityScalarField;
33
- requiredSkills: _lssm_lib_schema1630.EntityScalarField;
34
- estimatedDuration: _lssm_lib_schema1630.EntityScalarField;
35
- thumbnailUrl: _lssm_lib_schema1630.EntityScalarField;
36
- coverImageUrl: _lssm_lib_schema1630.EntityScalarField;
37
- promoVideoUrl: _lssm_lib_schema1630.EntityScalarField;
38
- status: _lssm_lib_schema1630.EntityEnumField;
39
- publishedAt: _lssm_lib_schema1630.EntityScalarField;
40
- authorId: _lssm_lib_schema1630.EntityScalarField;
41
- orgId: _lssm_lib_schema1630.EntityScalarField;
42
- isPublic: _lssm_lib_schema1630.EntityScalarField;
43
- isFeatured: _lssm_lib_schema1630.EntityScalarField;
44
- certificateEnabled: _lssm_lib_schema1630.EntityScalarField;
45
- metadata: _lssm_lib_schema1630.EntityScalarField;
46
- createdAt: _lssm_lib_schema1630.EntityScalarField;
47
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
48
- modules: _lssm_lib_schema1630.EntityRelationField;
49
- enrollments: _lssm_lib_schema1630.EntityRelationField;
23
+ declare const CourseEntity: _lssm_lib_schema663.EntitySpec<{
24
+ id: _lssm_lib_schema663.EntityScalarField;
25
+ title: _lssm_lib_schema663.EntityScalarField;
26
+ slug: _lssm_lib_schema663.EntityScalarField;
27
+ description: _lssm_lib_schema663.EntityScalarField;
28
+ summary: _lssm_lib_schema663.EntityScalarField;
29
+ difficulty: _lssm_lib_schema663.EntityEnumField;
30
+ category: _lssm_lib_schema663.EntityScalarField;
31
+ tags: _lssm_lib_schema663.EntityScalarField;
32
+ prerequisites: _lssm_lib_schema663.EntityScalarField;
33
+ requiredSkills: _lssm_lib_schema663.EntityScalarField;
34
+ estimatedDuration: _lssm_lib_schema663.EntityScalarField;
35
+ thumbnailUrl: _lssm_lib_schema663.EntityScalarField;
36
+ coverImageUrl: _lssm_lib_schema663.EntityScalarField;
37
+ promoVideoUrl: _lssm_lib_schema663.EntityScalarField;
38
+ status: _lssm_lib_schema663.EntityEnumField;
39
+ publishedAt: _lssm_lib_schema663.EntityScalarField;
40
+ authorId: _lssm_lib_schema663.EntityScalarField;
41
+ orgId: _lssm_lib_schema663.EntityScalarField;
42
+ isPublic: _lssm_lib_schema663.EntityScalarField;
43
+ isFeatured: _lssm_lib_schema663.EntityScalarField;
44
+ certificateEnabled: _lssm_lib_schema663.EntityScalarField;
45
+ metadata: _lssm_lib_schema663.EntityScalarField;
46
+ createdAt: _lssm_lib_schema663.EntityScalarField;
47
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
48
+ modules: _lssm_lib_schema663.EntityRelationField;
49
+ enrollments: _lssm_lib_schema663.EntityRelationField;
50
50
  }>;
51
51
  /**
52
52
  * CourseModule entity - a section within a course.
53
53
  */
54
- declare const CourseModuleEntity: _lssm_lib_schema1630.EntitySpec<{
55
- id: _lssm_lib_schema1630.EntityScalarField;
56
- courseId: _lssm_lib_schema1630.EntityScalarField;
57
- title: _lssm_lib_schema1630.EntityScalarField;
58
- description: _lssm_lib_schema1630.EntityScalarField;
59
- order: _lssm_lib_schema1630.EntityScalarField;
60
- unlockCondition: _lssm_lib_schema1630.EntityScalarField;
61
- prerequisiteModuleIds: _lssm_lib_schema1630.EntityScalarField;
62
- estimatedDuration: _lssm_lib_schema1630.EntityScalarField;
63
- createdAt: _lssm_lib_schema1630.EntityScalarField;
64
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
65
- course: _lssm_lib_schema1630.EntityRelationField;
66
- lessons: _lssm_lib_schema1630.EntityRelationField;
67
- completions: _lssm_lib_schema1630.EntityRelationField;
54
+ declare const CourseModuleEntity: _lssm_lib_schema663.EntitySpec<{
55
+ id: _lssm_lib_schema663.EntityScalarField;
56
+ courseId: _lssm_lib_schema663.EntityScalarField;
57
+ title: _lssm_lib_schema663.EntityScalarField;
58
+ description: _lssm_lib_schema663.EntityScalarField;
59
+ order: _lssm_lib_schema663.EntityScalarField;
60
+ unlockCondition: _lssm_lib_schema663.EntityScalarField;
61
+ prerequisiteModuleIds: _lssm_lib_schema663.EntityScalarField;
62
+ estimatedDuration: _lssm_lib_schema663.EntityScalarField;
63
+ createdAt: _lssm_lib_schema663.EntityScalarField;
64
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
65
+ course: _lssm_lib_schema663.EntityRelationField;
66
+ lessons: _lssm_lib_schema663.EntityRelationField;
67
+ completions: _lssm_lib_schema663.EntityRelationField;
68
68
  }>;
69
69
  /**
70
70
  * Lesson entity - individual learning unit.
71
71
  */
72
- declare const LessonEntity: _lssm_lib_schema1630.EntitySpec<{
73
- id: _lssm_lib_schema1630.EntityScalarField;
74
- moduleId: _lssm_lib_schema1630.EntityScalarField;
75
- title: _lssm_lib_schema1630.EntityScalarField;
76
- description: _lssm_lib_schema1630.EntityScalarField;
77
- type: _lssm_lib_schema1630.EntityEnumField;
78
- order: _lssm_lib_schema1630.EntityScalarField;
79
- estimatedDuration: _lssm_lib_schema1630.EntityScalarField;
80
- xpReward: _lssm_lib_schema1630.EntityScalarField;
81
- isFree: _lssm_lib_schema1630.EntityScalarField;
82
- isRequired: _lssm_lib_schema1630.EntityScalarField;
83
- metadata: _lssm_lib_schema1630.EntityScalarField;
84
- createdAt: _lssm_lib_schema1630.EntityScalarField;
85
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
86
- module: _lssm_lib_schema1630.EntityRelationField;
87
- contents: _lssm_lib_schema1630.EntityRelationField;
88
- progress: _lssm_lib_schema1630.EntityRelationField;
89
- quizzes: _lssm_lib_schema1630.EntityRelationField;
72
+ declare const LessonEntity: _lssm_lib_schema663.EntitySpec<{
73
+ id: _lssm_lib_schema663.EntityScalarField;
74
+ moduleId: _lssm_lib_schema663.EntityScalarField;
75
+ title: _lssm_lib_schema663.EntityScalarField;
76
+ description: _lssm_lib_schema663.EntityScalarField;
77
+ type: _lssm_lib_schema663.EntityEnumField;
78
+ order: _lssm_lib_schema663.EntityScalarField;
79
+ estimatedDuration: _lssm_lib_schema663.EntityScalarField;
80
+ xpReward: _lssm_lib_schema663.EntityScalarField;
81
+ isFree: _lssm_lib_schema663.EntityScalarField;
82
+ isRequired: _lssm_lib_schema663.EntityScalarField;
83
+ metadata: _lssm_lib_schema663.EntityScalarField;
84
+ createdAt: _lssm_lib_schema663.EntityScalarField;
85
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
86
+ module: _lssm_lib_schema663.EntityRelationField;
87
+ contents: _lssm_lib_schema663.EntityRelationField;
88
+ progress: _lssm_lib_schema663.EntityRelationField;
89
+ quizzes: _lssm_lib_schema663.EntityRelationField;
90
90
  }>;
91
91
  /**
92
92
  * LessonContent entity - content blocks within a lesson.
93
93
  */
94
- declare const LessonContentEntity: _lssm_lib_schema1630.EntitySpec<{
95
- id: _lssm_lib_schema1630.EntityScalarField;
96
- lessonId: _lssm_lib_schema1630.EntityScalarField;
97
- contentType: _lssm_lib_schema1630.EntityEnumField;
98
- content: _lssm_lib_schema1630.EntityScalarField;
99
- mediaUrl: _lssm_lib_schema1630.EntityScalarField;
100
- embedData: _lssm_lib_schema1630.EntityScalarField;
101
- order: _lssm_lib_schema1630.EntityScalarField;
102
- duration: _lssm_lib_schema1630.EntityScalarField;
103
- metadata: _lssm_lib_schema1630.EntityScalarField;
104
- createdAt: _lssm_lib_schema1630.EntityScalarField;
105
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
106
- lesson: _lssm_lib_schema1630.EntityRelationField;
94
+ declare const LessonContentEntity: _lssm_lib_schema663.EntitySpec<{
95
+ id: _lssm_lib_schema663.EntityScalarField;
96
+ lessonId: _lssm_lib_schema663.EntityScalarField;
97
+ contentType: _lssm_lib_schema663.EntityEnumField;
98
+ content: _lssm_lib_schema663.EntityScalarField;
99
+ mediaUrl: _lssm_lib_schema663.EntityScalarField;
100
+ embedData: _lssm_lib_schema663.EntityScalarField;
101
+ order: _lssm_lib_schema663.EntityScalarField;
102
+ duration: _lssm_lib_schema663.EntityScalarField;
103
+ metadata: _lssm_lib_schema663.EntityScalarField;
104
+ createdAt: _lssm_lib_schema663.EntityScalarField;
105
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
106
+ lesson: _lssm_lib_schema663.EntityRelationField;
107
107
  }>;
108
- declare const courseEntities: (_lssm_lib_schema1630.EntitySpec<{
109
- id: _lssm_lib_schema1630.EntityScalarField;
110
- title: _lssm_lib_schema1630.EntityScalarField;
111
- slug: _lssm_lib_schema1630.EntityScalarField;
112
- description: _lssm_lib_schema1630.EntityScalarField;
113
- summary: _lssm_lib_schema1630.EntityScalarField;
114
- difficulty: _lssm_lib_schema1630.EntityEnumField;
115
- category: _lssm_lib_schema1630.EntityScalarField;
116
- tags: _lssm_lib_schema1630.EntityScalarField;
117
- prerequisites: _lssm_lib_schema1630.EntityScalarField;
118
- requiredSkills: _lssm_lib_schema1630.EntityScalarField;
119
- estimatedDuration: _lssm_lib_schema1630.EntityScalarField;
120
- thumbnailUrl: _lssm_lib_schema1630.EntityScalarField;
121
- coverImageUrl: _lssm_lib_schema1630.EntityScalarField;
122
- promoVideoUrl: _lssm_lib_schema1630.EntityScalarField;
123
- status: _lssm_lib_schema1630.EntityEnumField;
124
- publishedAt: _lssm_lib_schema1630.EntityScalarField;
125
- authorId: _lssm_lib_schema1630.EntityScalarField;
126
- orgId: _lssm_lib_schema1630.EntityScalarField;
127
- isPublic: _lssm_lib_schema1630.EntityScalarField;
128
- isFeatured: _lssm_lib_schema1630.EntityScalarField;
129
- certificateEnabled: _lssm_lib_schema1630.EntityScalarField;
130
- metadata: _lssm_lib_schema1630.EntityScalarField;
131
- createdAt: _lssm_lib_schema1630.EntityScalarField;
132
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
133
- modules: _lssm_lib_schema1630.EntityRelationField;
134
- enrollments: _lssm_lib_schema1630.EntityRelationField;
135
- }> | _lssm_lib_schema1630.EntitySpec<{
136
- id: _lssm_lib_schema1630.EntityScalarField;
137
- courseId: _lssm_lib_schema1630.EntityScalarField;
138
- title: _lssm_lib_schema1630.EntityScalarField;
139
- description: _lssm_lib_schema1630.EntityScalarField;
140
- order: _lssm_lib_schema1630.EntityScalarField;
141
- unlockCondition: _lssm_lib_schema1630.EntityScalarField;
142
- prerequisiteModuleIds: _lssm_lib_schema1630.EntityScalarField;
143
- estimatedDuration: _lssm_lib_schema1630.EntityScalarField;
144
- createdAt: _lssm_lib_schema1630.EntityScalarField;
145
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
146
- course: _lssm_lib_schema1630.EntityRelationField;
147
- lessons: _lssm_lib_schema1630.EntityRelationField;
148
- completions: _lssm_lib_schema1630.EntityRelationField;
149
- }> | _lssm_lib_schema1630.EntitySpec<{
150
- id: _lssm_lib_schema1630.EntityScalarField;
151
- moduleId: _lssm_lib_schema1630.EntityScalarField;
152
- title: _lssm_lib_schema1630.EntityScalarField;
153
- description: _lssm_lib_schema1630.EntityScalarField;
154
- type: _lssm_lib_schema1630.EntityEnumField;
155
- order: _lssm_lib_schema1630.EntityScalarField;
156
- estimatedDuration: _lssm_lib_schema1630.EntityScalarField;
157
- xpReward: _lssm_lib_schema1630.EntityScalarField;
158
- isFree: _lssm_lib_schema1630.EntityScalarField;
159
- isRequired: _lssm_lib_schema1630.EntityScalarField;
160
- metadata: _lssm_lib_schema1630.EntityScalarField;
161
- createdAt: _lssm_lib_schema1630.EntityScalarField;
162
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
163
- module: _lssm_lib_schema1630.EntityRelationField;
164
- contents: _lssm_lib_schema1630.EntityRelationField;
165
- progress: _lssm_lib_schema1630.EntityRelationField;
166
- quizzes: _lssm_lib_schema1630.EntityRelationField;
167
- }> | _lssm_lib_schema1630.EntitySpec<{
168
- id: _lssm_lib_schema1630.EntityScalarField;
169
- lessonId: _lssm_lib_schema1630.EntityScalarField;
170
- contentType: _lssm_lib_schema1630.EntityEnumField;
171
- content: _lssm_lib_schema1630.EntityScalarField;
172
- mediaUrl: _lssm_lib_schema1630.EntityScalarField;
173
- embedData: _lssm_lib_schema1630.EntityScalarField;
174
- order: _lssm_lib_schema1630.EntityScalarField;
175
- duration: _lssm_lib_schema1630.EntityScalarField;
176
- metadata: _lssm_lib_schema1630.EntityScalarField;
177
- createdAt: _lssm_lib_schema1630.EntityScalarField;
178
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
179
- lesson: _lssm_lib_schema1630.EntityRelationField;
108
+ declare const courseEntities: (_lssm_lib_schema663.EntitySpec<{
109
+ id: _lssm_lib_schema663.EntityScalarField;
110
+ title: _lssm_lib_schema663.EntityScalarField;
111
+ slug: _lssm_lib_schema663.EntityScalarField;
112
+ description: _lssm_lib_schema663.EntityScalarField;
113
+ summary: _lssm_lib_schema663.EntityScalarField;
114
+ difficulty: _lssm_lib_schema663.EntityEnumField;
115
+ category: _lssm_lib_schema663.EntityScalarField;
116
+ tags: _lssm_lib_schema663.EntityScalarField;
117
+ prerequisites: _lssm_lib_schema663.EntityScalarField;
118
+ requiredSkills: _lssm_lib_schema663.EntityScalarField;
119
+ estimatedDuration: _lssm_lib_schema663.EntityScalarField;
120
+ thumbnailUrl: _lssm_lib_schema663.EntityScalarField;
121
+ coverImageUrl: _lssm_lib_schema663.EntityScalarField;
122
+ promoVideoUrl: _lssm_lib_schema663.EntityScalarField;
123
+ status: _lssm_lib_schema663.EntityEnumField;
124
+ publishedAt: _lssm_lib_schema663.EntityScalarField;
125
+ authorId: _lssm_lib_schema663.EntityScalarField;
126
+ orgId: _lssm_lib_schema663.EntityScalarField;
127
+ isPublic: _lssm_lib_schema663.EntityScalarField;
128
+ isFeatured: _lssm_lib_schema663.EntityScalarField;
129
+ certificateEnabled: _lssm_lib_schema663.EntityScalarField;
130
+ metadata: _lssm_lib_schema663.EntityScalarField;
131
+ createdAt: _lssm_lib_schema663.EntityScalarField;
132
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
133
+ modules: _lssm_lib_schema663.EntityRelationField;
134
+ enrollments: _lssm_lib_schema663.EntityRelationField;
135
+ }> | _lssm_lib_schema663.EntitySpec<{
136
+ id: _lssm_lib_schema663.EntityScalarField;
137
+ courseId: _lssm_lib_schema663.EntityScalarField;
138
+ title: _lssm_lib_schema663.EntityScalarField;
139
+ description: _lssm_lib_schema663.EntityScalarField;
140
+ order: _lssm_lib_schema663.EntityScalarField;
141
+ unlockCondition: _lssm_lib_schema663.EntityScalarField;
142
+ prerequisiteModuleIds: _lssm_lib_schema663.EntityScalarField;
143
+ estimatedDuration: _lssm_lib_schema663.EntityScalarField;
144
+ createdAt: _lssm_lib_schema663.EntityScalarField;
145
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
146
+ course: _lssm_lib_schema663.EntityRelationField;
147
+ lessons: _lssm_lib_schema663.EntityRelationField;
148
+ completions: _lssm_lib_schema663.EntityRelationField;
149
+ }> | _lssm_lib_schema663.EntitySpec<{
150
+ id: _lssm_lib_schema663.EntityScalarField;
151
+ moduleId: _lssm_lib_schema663.EntityScalarField;
152
+ title: _lssm_lib_schema663.EntityScalarField;
153
+ description: _lssm_lib_schema663.EntityScalarField;
154
+ type: _lssm_lib_schema663.EntityEnumField;
155
+ order: _lssm_lib_schema663.EntityScalarField;
156
+ estimatedDuration: _lssm_lib_schema663.EntityScalarField;
157
+ xpReward: _lssm_lib_schema663.EntityScalarField;
158
+ isFree: _lssm_lib_schema663.EntityScalarField;
159
+ isRequired: _lssm_lib_schema663.EntityScalarField;
160
+ metadata: _lssm_lib_schema663.EntityScalarField;
161
+ createdAt: _lssm_lib_schema663.EntityScalarField;
162
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
163
+ module: _lssm_lib_schema663.EntityRelationField;
164
+ contents: _lssm_lib_schema663.EntityRelationField;
165
+ progress: _lssm_lib_schema663.EntityRelationField;
166
+ quizzes: _lssm_lib_schema663.EntityRelationField;
167
+ }> | _lssm_lib_schema663.EntitySpec<{
168
+ id: _lssm_lib_schema663.EntityScalarField;
169
+ lessonId: _lssm_lib_schema663.EntityScalarField;
170
+ contentType: _lssm_lib_schema663.EntityEnumField;
171
+ content: _lssm_lib_schema663.EntityScalarField;
172
+ mediaUrl: _lssm_lib_schema663.EntityScalarField;
173
+ embedData: _lssm_lib_schema663.EntityScalarField;
174
+ order: _lssm_lib_schema663.EntityScalarField;
175
+ duration: _lssm_lib_schema663.EntityScalarField;
176
+ metadata: _lssm_lib_schema663.EntityScalarField;
177
+ createdAt: _lssm_lib_schema663.EntityScalarField;
178
+ updatedAt: _lssm_lib_schema663.EntityScalarField;
179
+ lesson: _lssm_lib_schema663.EntityRelationField;
180
180
  }>)[];
181
- declare const courseEnums: _lssm_lib_schema1630.EntityEnumDef[];
181
+ declare const courseEnums: _lssm_lib_schema663.EntityEnumDef[];
182
182
  //#endregion
183
183
  export { ContentTypeEnum, CourseDifficultyEnum, CourseEntity, CourseModuleEntity, CourseStatusEnum, LessonContentEntity, LessonEntity, LessonTypeEnum, courseEntities, courseEnums };
@@ -1 +1,316 @@
1
- import{i as e,n as t,r as n,t as r}from"../libs/schema/dist/entity/defineEntity.js";import"../libs/schema/dist/index.js";const i=t({name:`CourseDifficulty`,values:[`BEGINNER`,`INTERMEDIATE`,`ADVANCED`,`EXPERT`],schema:`lssm_learning`,description:`Difficulty level of a course.`}),a=t({name:`CourseStatus`,values:[`DRAFT`,`PUBLISHED`,`ARCHIVED`],schema:`lssm_learning`,description:`Publication status of a course.`}),o=t({name:`LessonType`,values:[`CONTENT`,`VIDEO`,`INTERACTIVE`,`QUIZ`,`PRACTICE`,`PROJECT`],schema:`lssm_learning`,description:`Type of lesson content.`}),s=t({name:`ContentType`,values:[`MARKDOWN`,`VIDEO`,`AUDIO`,`EMBED`,`SCORM`,`CUSTOM`],schema:`lssm_learning`,description:`Type of lesson content format.`}),c=r({name:`Course`,description:`A structured learning course.`,schema:`lssm_learning`,map:`course`,fields:{id:n.id({description:`Unique course identifier`}),title:n.string({description:`Course title`}),slug:n.string({isUnique:!0,description:`URL-friendly slug`}),description:n.string({isOptional:!0,description:`Course description`}),summary:n.string({isOptional:!0,description:`Short summary`}),difficulty:n.enum(`CourseDifficulty`,{default:`BEGINNER`,description:`Difficulty level`}),category:n.string({isOptional:!0,description:`Course category`}),tags:n.json({isOptional:!0,description:`Tags for discovery`}),prerequisites:n.json({isOptional:!0,description:`Required course IDs`}),requiredSkills:n.json({isOptional:!0,description:`Required skill levels`}),estimatedDuration:n.int({isOptional:!0,description:`Estimated duration in minutes`}),thumbnailUrl:n.string({isOptional:!0,description:`Thumbnail image URL`}),coverImageUrl:n.string({isOptional:!0,description:`Cover image URL`}),promoVideoUrl:n.string({isOptional:!0,description:`Promo video URL`}),status:n.enum(`CourseStatus`,{default:`DRAFT`,description:`Publication status`}),publishedAt:n.dateTime({isOptional:!0,description:`When published`}),authorId:n.string({description:`Author user ID`}),orgId:n.string({isOptional:!0,description:`Organization scope`}),isPublic:n.boolean({default:!1,description:`Whether course is publicly accessible`}),isFeatured:n.boolean({default:!1,description:`Whether course is featured`}),certificateEnabled:n.boolean({default:!1,description:`Award certificate on completion`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),modules:n.hasMany(`CourseModule`),enrollments:n.hasMany(`Enrollment`)},indexes:[e.on([`orgId`,`status`]),e.on([`category`]),e.on([`difficulty`]),e.on([`authorId`])],enums:[i,a]}),l=r({name:`CourseModule`,description:`A module (section) within a course.`,schema:`lssm_learning`,map:`course_module`,fields:{id:n.id({description:`Unique module identifier`}),courseId:n.foreignKey({description:`Parent course`}),title:n.string({description:`Module title`}),description:n.string({isOptional:!0,description:`Module description`}),order:n.int({default:0,description:`Display order`}),unlockCondition:n.json({isOptional:!0,description:`Conditions to unlock module`}),prerequisiteModuleIds:n.json({isOptional:!0,description:`Required modules to complete first`}),estimatedDuration:n.int({isOptional:!0,description:`Estimated duration in minutes`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),course:n.belongsTo(`Course`,[`courseId`],[`id`],{onDelete:`Cascade`}),lessons:n.hasMany(`Lesson`),completions:n.hasMany(`ModuleCompletion`)},indexes:[e.on([`courseId`,`order`])]}),u=r({name:`Lesson`,description:`An individual lesson within a module.`,schema:`lssm_learning`,map:`lesson`,fields:{id:n.id({description:`Unique lesson identifier`}),moduleId:n.foreignKey({description:`Parent module`}),title:n.string({description:`Lesson title`}),description:n.string({isOptional:!0,description:`Lesson description`}),type:n.enum(`LessonType`,{default:`CONTENT`,description:`Lesson type`}),order:n.int({default:0,description:`Display order`}),estimatedDuration:n.int({isOptional:!0,description:`Estimated duration in minutes`}),xpReward:n.int({default:10,description:`XP awarded on completion`}),isFree:n.boolean({default:!1,description:`Whether lesson is free preview`}),isRequired:n.boolean({default:!0,description:`Whether lesson is required for completion`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),module:n.belongsTo(`CourseModule`,[`moduleId`],[`id`],{onDelete:`Cascade`}),contents:n.hasMany(`LessonContent`),progress:n.hasMany(`LessonProgress`),quizzes:n.hasMany(`Quiz`)},indexes:[e.on([`moduleId`,`order`]),e.on([`type`])],enums:[o]}),d=r({name:`LessonContent`,description:`Content block within a lesson.`,schema:`lssm_learning`,map:`lesson_content`,fields:{id:n.id({description:`Unique content identifier`}),lessonId:n.foreignKey({description:`Parent lesson`}),contentType:n.enum(`ContentType`,{description:`Content format`}),content:n.string({isOptional:!0,description:`Text content (markdown, etc.)`}),mediaUrl:n.string({isOptional:!0,description:`Media URL for video/audio`}),embedData:n.json({isOptional:!0,description:`Embed data for external content`}),order:n.int({default:0,description:`Display order`}),duration:n.int({isOptional:!0,description:`Content duration in seconds`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),lesson:n.belongsTo(`Lesson`,[`lessonId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`lessonId`,`order`])],enums:[s]}),f=[c,l,u,d],p=[i,a,o,s];export{s as ContentTypeEnum,i as CourseDifficultyEnum,c as CourseEntity,l as CourseModuleEntity,a as CourseStatusEnum,d as LessonContentEntity,u as LessonEntity,o as LessonTypeEnum,f as courseEntities,p as courseEnums};
1
+ import { defineEntity, defineEntityEnum, field, index } from "../libs/schema/dist/entity/defineEntity.js";
2
+ import "../libs/schema/dist/index.js";
3
+
4
+ //#region src/entities/course.ts
5
+ /**
6
+ * Course difficulty enum.
7
+ */
8
+ const CourseDifficultyEnum = defineEntityEnum({
9
+ name: "CourseDifficulty",
10
+ values: [
11
+ "BEGINNER",
12
+ "INTERMEDIATE",
13
+ "ADVANCED",
14
+ "EXPERT"
15
+ ],
16
+ schema: "lssm_learning",
17
+ description: "Difficulty level of a course."
18
+ });
19
+ /**
20
+ * Course status enum.
21
+ */
22
+ const CourseStatusEnum = defineEntityEnum({
23
+ name: "CourseStatus",
24
+ values: [
25
+ "DRAFT",
26
+ "PUBLISHED",
27
+ "ARCHIVED"
28
+ ],
29
+ schema: "lssm_learning",
30
+ description: "Publication status of a course."
31
+ });
32
+ /**
33
+ * Lesson type enum.
34
+ */
35
+ const LessonTypeEnum = defineEntityEnum({
36
+ name: "LessonType",
37
+ values: [
38
+ "CONTENT",
39
+ "VIDEO",
40
+ "INTERACTIVE",
41
+ "QUIZ",
42
+ "PRACTICE",
43
+ "PROJECT"
44
+ ],
45
+ schema: "lssm_learning",
46
+ description: "Type of lesson content."
47
+ });
48
+ /**
49
+ * Content type enum.
50
+ */
51
+ const ContentTypeEnum = defineEntityEnum({
52
+ name: "ContentType",
53
+ values: [
54
+ "MARKDOWN",
55
+ "VIDEO",
56
+ "AUDIO",
57
+ "EMBED",
58
+ "SCORM",
59
+ "CUSTOM"
60
+ ],
61
+ schema: "lssm_learning",
62
+ description: "Type of lesson content format."
63
+ });
64
+ /**
65
+ * Course entity - defines a learning course.
66
+ */
67
+ const CourseEntity = defineEntity({
68
+ name: "Course",
69
+ description: "A structured learning course.",
70
+ schema: "lssm_learning",
71
+ map: "course",
72
+ fields: {
73
+ id: field.id({ description: "Unique course identifier" }),
74
+ title: field.string({ description: "Course title" }),
75
+ slug: field.string({
76
+ isUnique: true,
77
+ description: "URL-friendly slug"
78
+ }),
79
+ description: field.string({
80
+ isOptional: true,
81
+ description: "Course description"
82
+ }),
83
+ summary: field.string({
84
+ isOptional: true,
85
+ description: "Short summary"
86
+ }),
87
+ difficulty: field.enum("CourseDifficulty", {
88
+ default: "BEGINNER",
89
+ description: "Difficulty level"
90
+ }),
91
+ category: field.string({
92
+ isOptional: true,
93
+ description: "Course category"
94
+ }),
95
+ tags: field.json({
96
+ isOptional: true,
97
+ description: "Tags for discovery"
98
+ }),
99
+ prerequisites: field.json({
100
+ isOptional: true,
101
+ description: "Required course IDs"
102
+ }),
103
+ requiredSkills: field.json({
104
+ isOptional: true,
105
+ description: "Required skill levels"
106
+ }),
107
+ estimatedDuration: field.int({
108
+ isOptional: true,
109
+ description: "Estimated duration in minutes"
110
+ }),
111
+ thumbnailUrl: field.string({
112
+ isOptional: true,
113
+ description: "Thumbnail image URL"
114
+ }),
115
+ coverImageUrl: field.string({
116
+ isOptional: true,
117
+ description: "Cover image URL"
118
+ }),
119
+ promoVideoUrl: field.string({
120
+ isOptional: true,
121
+ description: "Promo video URL"
122
+ }),
123
+ status: field.enum("CourseStatus", {
124
+ default: "DRAFT",
125
+ description: "Publication status"
126
+ }),
127
+ publishedAt: field.dateTime({
128
+ isOptional: true,
129
+ description: "When published"
130
+ }),
131
+ authorId: field.string({ description: "Author user ID" }),
132
+ orgId: field.string({
133
+ isOptional: true,
134
+ description: "Organization scope"
135
+ }),
136
+ isPublic: field.boolean({
137
+ default: false,
138
+ description: "Whether course is publicly accessible"
139
+ }),
140
+ isFeatured: field.boolean({
141
+ default: false,
142
+ description: "Whether course is featured"
143
+ }),
144
+ certificateEnabled: field.boolean({
145
+ default: false,
146
+ description: "Award certificate on completion"
147
+ }),
148
+ metadata: field.json({
149
+ isOptional: true,
150
+ description: "Additional metadata"
151
+ }),
152
+ createdAt: field.createdAt(),
153
+ updatedAt: field.updatedAt(),
154
+ modules: field.hasMany("CourseModule"),
155
+ enrollments: field.hasMany("Enrollment")
156
+ },
157
+ indexes: [
158
+ index.on(["orgId", "status"]),
159
+ index.on(["category"]),
160
+ index.on(["difficulty"]),
161
+ index.on(["authorId"])
162
+ ],
163
+ enums: [CourseDifficultyEnum, CourseStatusEnum]
164
+ });
165
+ /**
166
+ * CourseModule entity - a section within a course.
167
+ */
168
+ const CourseModuleEntity = defineEntity({
169
+ name: "CourseModule",
170
+ description: "A module (section) within a course.",
171
+ schema: "lssm_learning",
172
+ map: "course_module",
173
+ fields: {
174
+ id: field.id({ description: "Unique module identifier" }),
175
+ courseId: field.foreignKey({ description: "Parent course" }),
176
+ title: field.string({ description: "Module title" }),
177
+ description: field.string({
178
+ isOptional: true,
179
+ description: "Module description"
180
+ }),
181
+ order: field.int({
182
+ default: 0,
183
+ description: "Display order"
184
+ }),
185
+ unlockCondition: field.json({
186
+ isOptional: true,
187
+ description: "Conditions to unlock module"
188
+ }),
189
+ prerequisiteModuleIds: field.json({
190
+ isOptional: true,
191
+ description: "Required modules to complete first"
192
+ }),
193
+ estimatedDuration: field.int({
194
+ isOptional: true,
195
+ description: "Estimated duration in minutes"
196
+ }),
197
+ createdAt: field.createdAt(),
198
+ updatedAt: field.updatedAt(),
199
+ course: field.belongsTo("Course", ["courseId"], ["id"], { onDelete: "Cascade" }),
200
+ lessons: field.hasMany("Lesson"),
201
+ completions: field.hasMany("ModuleCompletion")
202
+ },
203
+ indexes: [index.on(["courseId", "order"])]
204
+ });
205
+ /**
206
+ * Lesson entity - individual learning unit.
207
+ */
208
+ const LessonEntity = defineEntity({
209
+ name: "Lesson",
210
+ description: "An individual lesson within a module.",
211
+ schema: "lssm_learning",
212
+ map: "lesson",
213
+ fields: {
214
+ id: field.id({ description: "Unique lesson identifier" }),
215
+ moduleId: field.foreignKey({ description: "Parent module" }),
216
+ title: field.string({ description: "Lesson title" }),
217
+ description: field.string({
218
+ isOptional: true,
219
+ description: "Lesson description"
220
+ }),
221
+ type: field.enum("LessonType", {
222
+ default: "CONTENT",
223
+ description: "Lesson type"
224
+ }),
225
+ order: field.int({
226
+ default: 0,
227
+ description: "Display order"
228
+ }),
229
+ estimatedDuration: field.int({
230
+ isOptional: true,
231
+ description: "Estimated duration in minutes"
232
+ }),
233
+ xpReward: field.int({
234
+ default: 10,
235
+ description: "XP awarded on completion"
236
+ }),
237
+ isFree: field.boolean({
238
+ default: false,
239
+ description: "Whether lesson is free preview"
240
+ }),
241
+ isRequired: field.boolean({
242
+ default: true,
243
+ description: "Whether lesson is required for completion"
244
+ }),
245
+ metadata: field.json({
246
+ isOptional: true,
247
+ description: "Additional metadata"
248
+ }),
249
+ createdAt: field.createdAt(),
250
+ updatedAt: field.updatedAt(),
251
+ module: field.belongsTo("CourseModule", ["moduleId"], ["id"], { onDelete: "Cascade" }),
252
+ contents: field.hasMany("LessonContent"),
253
+ progress: field.hasMany("LessonProgress"),
254
+ quizzes: field.hasMany("Quiz")
255
+ },
256
+ indexes: [index.on(["moduleId", "order"]), index.on(["type"])],
257
+ enums: [LessonTypeEnum]
258
+ });
259
+ /**
260
+ * LessonContent entity - content blocks within a lesson.
261
+ */
262
+ const LessonContentEntity = defineEntity({
263
+ name: "LessonContent",
264
+ description: "Content block within a lesson.",
265
+ schema: "lssm_learning",
266
+ map: "lesson_content",
267
+ fields: {
268
+ id: field.id({ description: "Unique content identifier" }),
269
+ lessonId: field.foreignKey({ description: "Parent lesson" }),
270
+ contentType: field.enum("ContentType", { description: "Content format" }),
271
+ content: field.string({
272
+ isOptional: true,
273
+ description: "Text content (markdown, etc.)"
274
+ }),
275
+ mediaUrl: field.string({
276
+ isOptional: true,
277
+ description: "Media URL for video/audio"
278
+ }),
279
+ embedData: field.json({
280
+ isOptional: true,
281
+ description: "Embed data for external content"
282
+ }),
283
+ order: field.int({
284
+ default: 0,
285
+ description: "Display order"
286
+ }),
287
+ duration: field.int({
288
+ isOptional: true,
289
+ description: "Content duration in seconds"
290
+ }),
291
+ metadata: field.json({
292
+ isOptional: true,
293
+ description: "Additional metadata"
294
+ }),
295
+ createdAt: field.createdAt(),
296
+ updatedAt: field.updatedAt(),
297
+ lesson: field.belongsTo("Lesson", ["lessonId"], ["id"], { onDelete: "Cascade" })
298
+ },
299
+ indexes: [index.on(["lessonId", "order"])],
300
+ enums: [ContentTypeEnum]
301
+ });
302
+ const courseEntities = [
303
+ CourseEntity,
304
+ CourseModuleEntity,
305
+ LessonEntity,
306
+ LessonContentEntity
307
+ ];
308
+ const courseEnums = [
309
+ CourseDifficultyEnum,
310
+ CourseStatusEnum,
311
+ LessonTypeEnum,
312
+ ContentTypeEnum
313
+ ];
314
+
315
+ //#endregion
316
+ export { ContentTypeEnum, CourseDifficultyEnum, CourseEntity, CourseModuleEntity, CourseStatusEnum, LessonContentEntity, LessonEntity, LessonTypeEnum, courseEntities, courseEnums };