@contractspec/module.learning-journey 1.44.1 → 1.45.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","names":[],"sources":["../src/events.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","names":[],"sources":["../src/events.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/events.js CHANGED
@@ -28,7 +28,7 @@ const CoursePublishedPayload = defineSchemaModel({
28
28
  const CoursePublishedEvent = defineEvent({
29
29
  meta: {
30
30
  key: "course.published",
31
- version: 1,
31
+ version: "1.0.0",
32
32
  description: "A course has been published.",
33
33
  stability: "stable",
34
34
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -61,7 +61,7 @@ const EnrollmentCreatedPayload = defineSchemaModel({
61
61
  const EnrollmentCreatedEvent = defineEvent({
62
62
  meta: {
63
63
  key: "enrollment.created",
64
- version: 1,
64
+ version: "1.0.0",
65
65
  description: "A learner has enrolled in a course.",
66
66
  stability: "stable",
67
67
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -106,7 +106,7 @@ const LessonCompletedPayload = defineSchemaModel({
106
106
  const LessonCompletedEvent = defineEvent({
107
107
  meta: {
108
108
  key: "lesson.completed",
109
- version: 1,
109
+ version: "1.0.0",
110
110
  description: "A learner has completed a lesson.",
111
111
  stability: "stable",
112
112
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -155,7 +155,7 @@ const CourseCompletedPayload = defineSchemaModel({
155
155
  const CourseCompletedEvent = defineEvent({
156
156
  meta: {
157
157
  key: "course.completed",
158
- version: 1,
158
+ version: "1.0.0",
159
159
  description: "A learner has completed a course.",
160
160
  stability: "stable",
161
161
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -192,7 +192,7 @@ const OnboardingStartedPayload = defineSchemaModel({
192
192
  const OnboardingStartedEvent = defineEvent({
193
193
  meta: {
194
194
  key: "onboarding.started",
195
- version: 1,
195
+ version: "1.0.0",
196
196
  description: "A learner has started onboarding.",
197
197
  stability: "stable",
198
198
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -233,7 +233,7 @@ const OnboardingStepCompletedPayload = defineSchemaModel({
233
233
  const OnboardingStepCompletedEvent = defineEvent({
234
234
  meta: {
235
235
  key: "onboarding.step_completed",
236
- version: 1,
236
+ version: "1.0.0",
237
237
  description: "An onboarding step has been completed.",
238
238
  stability: "stable",
239
239
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -270,7 +270,7 @@ const OnboardingCompletedPayload = defineSchemaModel({
270
270
  const OnboardingCompletedEvent = defineEvent({
271
271
  meta: {
272
272
  key: "onboarding.completed",
273
- version: 1,
273
+ version: "1.0.0",
274
274
  description: "A learner has completed onboarding.",
275
275
  stability: "stable",
276
276
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -311,7 +311,7 @@ const CardReviewedPayload = defineSchemaModel({
311
311
  const CardReviewedEvent = defineEvent({
312
312
  meta: {
313
313
  key: "flashcard.reviewed",
314
- version: 1,
314
+ version: "1.0.0",
315
315
  description: "A flashcard has been reviewed.",
316
316
  stability: "stable",
317
317
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -348,7 +348,7 @@ const QuizStartedPayload = defineSchemaModel({
348
348
  const QuizStartedEvent = defineEvent({
349
349
  meta: {
350
350
  key: "quiz.started",
351
- version: 1,
351
+ version: "1.0.0",
352
352
  description: "A quiz attempt has started.",
353
353
  stability: "stable",
354
354
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -401,7 +401,7 @@ const QuizCompletedPayload = defineSchemaModel({
401
401
  const QuizCompletedEvent = defineEvent({
402
402
  meta: {
403
403
  key: "quiz.completed",
404
- version: 1,
404
+ version: "1.0.0",
405
405
  description: "A quiz attempt has been completed.",
406
406
  stability: "stable",
407
407
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -442,7 +442,7 @@ const XpEarnedPayload = defineSchemaModel({
442
442
  const XpEarnedEvent = defineEvent({
443
443
  meta: {
444
444
  key: "xp.earned",
445
- version: 1,
445
+ version: "1.0.0",
446
446
  description: "XP has been earned.",
447
447
  stability: "stable",
448
448
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -483,7 +483,7 @@ const LevelUpPayload = defineSchemaModel({
483
483
  const LevelUpEvent = defineEvent({
484
484
  meta: {
485
485
  key: "level.up",
486
- version: 1,
486
+ version: "1.0.0",
487
487
  description: "A learner has leveled up.",
488
488
  stability: "stable",
489
489
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -528,7 +528,7 @@ const StreakUpdatedPayload = defineSchemaModel({
528
528
  const StreakUpdatedEvent = defineEvent({
529
529
  meta: {
530
530
  key: "streak.updated",
531
- version: 1,
531
+ version: "1.0.0",
532
532
  description: "A streak has been updated.",
533
533
  stability: "stable",
534
534
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -573,7 +573,7 @@ const AchievementUnlockedPayload = defineSchemaModel({
573
573
  const AchievementUnlockedEvent = defineEvent({
574
574
  meta: {
575
575
  key: "achievement.unlocked",
576
- version: 1,
576
+ version: "1.0.0",
577
577
  description: "An achievement has been unlocked.",
578
578
  stability: "stable",
579
579
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -614,7 +614,7 @@ const DailyGoalCompletedPayload = defineSchemaModel({
614
614
  const DailyGoalCompletedEvent = defineEvent({
615
615
  meta: {
616
616
  key: "daily_goal.completed",
617
- version: 1,
617
+ version: "1.0.0",
618
618
  description: "A daily goal has been completed.",
619
619
  stability: "stable",
620
620
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -655,7 +655,7 @@ const CertificateIssuedPayload = defineSchemaModel({
655
655
  const CertificateIssuedEvent = defineEvent({
656
656
  meta: {
657
657
  key: "certificate.issued",
658
- version: 1,
658
+ version: "1.0.0",
659
659
  description: "A certificate has been issued.",
660
660
  stability: "stable",
661
661
  owners: [...LEARNING_JOURNEY_OWNERS],
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","names":[],"sources":["../src/events.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\nimport { LEARNING_JOURNEY_OWNERS } from './contracts/shared';\n\n// ============ Course Events ============\n\nconst CoursePublishedPayload = defineSchemaModel({\n name: 'CoursePublishedEventPayload',\n description: 'Payload when a course is published',\n fields: {\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n authorId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n publishedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CoursePublishedEvent = defineEvent({\n meta: {\n key: 'course.published',\n version: 1,\n description: 'A course has been published.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'course'],\n },\n payload: CoursePublishedPayload,\n});\n\n// ============ Enrollment Events ============\n\nconst EnrollmentCreatedPayload = defineSchemaModel({\n name: 'EnrollmentCreatedEventPayload',\n description: 'Payload when a learner enrolls in a course',\n fields: {\n enrollmentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n enrolledAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const EnrollmentCreatedEvent = defineEvent({\n meta: {\n key: 'enrollment.created',\n version: 1,\n description: 'A learner has enrolled in a course.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'enrollment'],\n },\n payload: EnrollmentCreatedPayload,\n});\n\n// ============ Progress Events ============\n\nconst LessonCompletedPayload = defineSchemaModel({\n name: 'LessonCompletedEventPayload',\n description: 'Payload when a lesson is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n lessonId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n score: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timeSpent: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const LessonCompletedEvent = defineEvent({\n meta: {\n key: 'lesson.completed',\n version: 1,\n description: 'A learner has completed a lesson.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'progress', 'lesson'],\n },\n payload: LessonCompletedPayload,\n});\n\nconst CourseCompletedPayload = defineSchemaModel({\n name: 'CourseCompletedEventPayload',\n description: 'Payload when a course is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n enrollmentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n score: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n certificateId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CourseCompletedEvent = defineEvent({\n meta: {\n key: 'course.completed',\n version: 1,\n description: 'A learner has completed a course.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'progress', 'course'],\n },\n payload: CourseCompletedPayload,\n});\n\n// ============ Onboarding Events ============\n\nconst OnboardingStartedPayload = defineSchemaModel({\n name: 'OnboardingStartedEventPayload',\n description: 'Payload when onboarding starts',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n trackId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n productId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const OnboardingStartedEvent = defineEvent({\n meta: {\n key: 'onboarding.started',\n version: 1,\n description: 'A learner has started onboarding.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'onboarding'],\n },\n payload: OnboardingStartedPayload,\n});\n\nconst OnboardingStepCompletedPayload = defineSchemaModel({\n name: 'OnboardingStepCompletedEventPayload',\n description: 'Payload when an onboarding step is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n trackId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n stepId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n triggeringEvent: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const OnboardingStepCompletedEvent = defineEvent({\n meta: {\n key: 'onboarding.step_completed',\n version: 1,\n description: 'An onboarding step has been completed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'onboarding'],\n },\n payload: OnboardingStepCompletedPayload,\n});\n\nconst OnboardingCompletedPayload = defineSchemaModel({\n name: 'OnboardingCompletedEventPayload',\n description: 'Payload when onboarding is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n trackId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n productId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const OnboardingCompletedEvent = defineEvent({\n meta: {\n key: 'onboarding.completed',\n version: 1,\n description: 'A learner has completed onboarding.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'onboarding'],\n },\n payload: OnboardingCompletedPayload,\n});\n\n// ============ Flashcard Events ============\n\nconst CardReviewedPayload = defineSchemaModel({\n name: 'CardReviewedEventPayload',\n description: 'Payload when a flashcard is reviewed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n cardId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n deckId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n rating: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n responseTimeMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n reviewedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CardReviewedEvent = defineEvent({\n meta: {\n key: 'flashcard.reviewed',\n version: 1,\n description: 'A flashcard has been reviewed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'flashcards'],\n },\n payload: CardReviewedPayload,\n});\n\n// ============ Quiz Events ============\n\nconst QuizStartedPayload = defineSchemaModel({\n name: 'QuizStartedEventPayload',\n description: 'Payload when a quiz is started',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n quizId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n attemptId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n attemptNumber: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const QuizStartedEvent = defineEvent({\n meta: {\n key: 'quiz.started',\n version: 1,\n description: 'A quiz attempt has started.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'quiz'],\n },\n payload: QuizStartedPayload,\n});\n\nconst QuizCompletedPayload = defineSchemaModel({\n name: 'QuizCompletedEventPayload',\n description: 'Payload when a quiz is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n quizId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n attemptId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n score: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n percentageScore: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n passed: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timeSpent: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const QuizCompletedEvent = defineEvent({\n meta: {\n key: 'quiz.completed',\n version: 1,\n description: 'A quiz attempt has been completed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'quiz'],\n },\n payload: QuizCompletedPayload,\n});\n\n// ============ Gamification Events ============\n\nconst XpEarnedPayload = defineSchemaModel({\n name: 'XpEarnedEventPayload',\n description: 'Payload when XP is earned',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n amount: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n source: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n sourceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n earnedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const XpEarnedEvent = defineEvent({\n meta: {\n key: 'xp.earned',\n version: 1,\n description: 'XP has been earned.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'xp'],\n },\n payload: XpEarnedPayload,\n});\n\nconst LevelUpPayload = defineSchemaModel({\n name: 'LevelUpEventPayload',\n description: 'Payload when a learner levels up',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousLevel: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n newLevel: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n leveledUpAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const LevelUpEvent = defineEvent({\n meta: {\n key: 'level.up',\n version: 1,\n description: 'A learner has leveled up.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'level'],\n },\n payload: LevelUpPayload,\n});\n\nconst StreakUpdatedPayload = defineSchemaModel({\n name: 'StreakUpdatedEventPayload',\n description: 'Payload when a streak is updated',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousStreak: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n currentStreak: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n longestStreak: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n freezeUsed: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const StreakUpdatedEvent = defineEvent({\n meta: {\n key: 'streak.updated',\n version: 1,\n description: 'A streak has been updated.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'streak'],\n },\n payload: StreakUpdatedPayload,\n});\n\nconst AchievementUnlockedPayload = defineSchemaModel({\n name: 'AchievementUnlockedEventPayload',\n description: 'Payload when an achievement is unlocked',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n achievementId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n achievementKey: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n achievementName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n unlockedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const AchievementUnlockedEvent = defineEvent({\n meta: {\n key: 'achievement.unlocked',\n version: 1,\n description: 'An achievement has been unlocked.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'achievement'],\n },\n payload: AchievementUnlockedPayload,\n});\n\nconst DailyGoalCompletedPayload = defineSchemaModel({\n name: 'DailyGoalCompletedEventPayload',\n description: 'Payload when a daily goal is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n date: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n targetXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n actualXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const DailyGoalCompletedEvent = defineEvent({\n meta: {\n key: 'daily_goal.completed',\n version: 1,\n description: 'A daily goal has been completed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'goal'],\n },\n payload: DailyGoalCompletedPayload,\n});\n\n// ============ Certificate Events ============\n\nconst CertificateIssuedPayload = defineSchemaModel({\n name: 'CertificateIssuedEventPayload',\n description: 'Payload when a certificate is issued',\n fields: {\n certificateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n certificateNumber: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n issuedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CertificateIssuedEvent = defineEvent({\n meta: {\n key: 'certificate.issued',\n version: 1,\n description: 'A certificate has been issued.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'certificate'],\n },\n payload: CertificateIssuedPayload,\n});\n\n/**\n * All learning journey events.\n */\nexport const LearningJourneyEvents = {\n CoursePublishedEvent,\n EnrollmentCreatedEvent,\n LessonCompletedEvent,\n CourseCompletedEvent,\n OnboardingStartedEvent,\n OnboardingStepCompletedEvent,\n OnboardingCompletedEvent,\n CardReviewedEvent,\n QuizStartedEvent,\n QuizCompletedEvent,\n XpEarnedEvent,\n LevelUpEvent,\n StreakUpdatedEvent,\n AchievementUnlockedEvent,\n DailyGoalCompletedEvent,\n CertificateIssuedEvent,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"events.js","names":[],"sources":["../src/events.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\nimport { LEARNING_JOURNEY_OWNERS } from './contracts/shared';\n\n// ============ Course Events ============\n\nconst CoursePublishedPayload = defineSchemaModel({\n name: 'CoursePublishedEventPayload',\n description: 'Payload when a course is published',\n fields: {\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n authorId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n publishedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CoursePublishedEvent = defineEvent({\n meta: {\n key: 'course.published',\n version: '1.0.0',\n description: 'A course has been published.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'course'],\n },\n payload: CoursePublishedPayload,\n});\n\n// ============ Enrollment Events ============\n\nconst EnrollmentCreatedPayload = defineSchemaModel({\n name: 'EnrollmentCreatedEventPayload',\n description: 'Payload when a learner enrolls in a course',\n fields: {\n enrollmentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n enrolledAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const EnrollmentCreatedEvent = defineEvent({\n meta: {\n key: 'enrollment.created',\n version: '1.0.0',\n description: 'A learner has enrolled in a course.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'enrollment'],\n },\n payload: EnrollmentCreatedPayload,\n});\n\n// ============ Progress Events ============\n\nconst LessonCompletedPayload = defineSchemaModel({\n name: 'LessonCompletedEventPayload',\n description: 'Payload when a lesson is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n lessonId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n score: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timeSpent: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const LessonCompletedEvent = defineEvent({\n meta: {\n key: 'lesson.completed',\n version: '1.0.0',\n description: 'A learner has completed a lesson.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'progress', 'lesson'],\n },\n payload: LessonCompletedPayload,\n});\n\nconst CourseCompletedPayload = defineSchemaModel({\n name: 'CourseCompletedEventPayload',\n description: 'Payload when a course is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n enrollmentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n score: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n certificateId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CourseCompletedEvent = defineEvent({\n meta: {\n key: 'course.completed',\n version: '1.0.0',\n description: 'A learner has completed a course.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'progress', 'course'],\n },\n payload: CourseCompletedPayload,\n});\n\n// ============ Onboarding Events ============\n\nconst OnboardingStartedPayload = defineSchemaModel({\n name: 'OnboardingStartedEventPayload',\n description: 'Payload when onboarding starts',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n trackId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n productId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const OnboardingStartedEvent = defineEvent({\n meta: {\n key: 'onboarding.started',\n version: '1.0.0',\n description: 'A learner has started onboarding.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'onboarding'],\n },\n payload: OnboardingStartedPayload,\n});\n\nconst OnboardingStepCompletedPayload = defineSchemaModel({\n name: 'OnboardingStepCompletedEventPayload',\n description: 'Payload when an onboarding step is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n trackId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n stepId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n triggeringEvent: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const OnboardingStepCompletedEvent = defineEvent({\n meta: {\n key: 'onboarding.step_completed',\n version: '1.0.0',\n description: 'An onboarding step has been completed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'onboarding'],\n },\n payload: OnboardingStepCompletedPayload,\n});\n\nconst OnboardingCompletedPayload = defineSchemaModel({\n name: 'OnboardingCompletedEventPayload',\n description: 'Payload when onboarding is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n trackId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n productId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const OnboardingCompletedEvent = defineEvent({\n meta: {\n key: 'onboarding.completed',\n version: '1.0.0',\n description: 'A learner has completed onboarding.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'onboarding'],\n },\n payload: OnboardingCompletedPayload,\n});\n\n// ============ Flashcard Events ============\n\nconst CardReviewedPayload = defineSchemaModel({\n name: 'CardReviewedEventPayload',\n description: 'Payload when a flashcard is reviewed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n cardId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n deckId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n rating: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n responseTimeMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n reviewedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CardReviewedEvent = defineEvent({\n meta: {\n key: 'flashcard.reviewed',\n version: '1.0.0',\n description: 'A flashcard has been reviewed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'flashcards'],\n },\n payload: CardReviewedPayload,\n});\n\n// ============ Quiz Events ============\n\nconst QuizStartedPayload = defineSchemaModel({\n name: 'QuizStartedEventPayload',\n description: 'Payload when a quiz is started',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n quizId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n attemptId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n attemptNumber: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const QuizStartedEvent = defineEvent({\n meta: {\n key: 'quiz.started',\n version: '1.0.0',\n description: 'A quiz attempt has started.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'quiz'],\n },\n payload: QuizStartedPayload,\n});\n\nconst QuizCompletedPayload = defineSchemaModel({\n name: 'QuizCompletedEventPayload',\n description: 'Payload when a quiz is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n quizId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n attemptId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n score: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n percentageScore: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n passed: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timeSpent: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const QuizCompletedEvent = defineEvent({\n meta: {\n key: 'quiz.completed',\n version: '1.0.0',\n description: 'A quiz attempt has been completed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'quiz'],\n },\n payload: QuizCompletedPayload,\n});\n\n// ============ Gamification Events ============\n\nconst XpEarnedPayload = defineSchemaModel({\n name: 'XpEarnedEventPayload',\n description: 'Payload when XP is earned',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n amount: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n source: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n sourceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n earnedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const XpEarnedEvent = defineEvent({\n meta: {\n key: 'xp.earned',\n version: '1.0.0',\n description: 'XP has been earned.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'xp'],\n },\n payload: XpEarnedPayload,\n});\n\nconst LevelUpPayload = defineSchemaModel({\n name: 'LevelUpEventPayload',\n description: 'Payload when a learner levels up',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousLevel: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n newLevel: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n leveledUpAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const LevelUpEvent = defineEvent({\n meta: {\n key: 'level.up',\n version: '1.0.0',\n description: 'A learner has leveled up.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'level'],\n },\n payload: LevelUpPayload,\n});\n\nconst StreakUpdatedPayload = defineSchemaModel({\n name: 'StreakUpdatedEventPayload',\n description: 'Payload when a streak is updated',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousStreak: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n currentStreak: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n longestStreak: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n freezeUsed: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const StreakUpdatedEvent = defineEvent({\n meta: {\n key: 'streak.updated',\n version: '1.0.0',\n description: 'A streak has been updated.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'streak'],\n },\n payload: StreakUpdatedPayload,\n});\n\nconst AchievementUnlockedPayload = defineSchemaModel({\n name: 'AchievementUnlockedEventPayload',\n description: 'Payload when an achievement is unlocked',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n achievementId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n achievementKey: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n achievementName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n xpEarned: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n unlockedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const AchievementUnlockedEvent = defineEvent({\n meta: {\n key: 'achievement.unlocked',\n version: '1.0.0',\n description: 'An achievement has been unlocked.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'achievement'],\n },\n payload: AchievementUnlockedPayload,\n});\n\nconst DailyGoalCompletedPayload = defineSchemaModel({\n name: 'DailyGoalCompletedEventPayload',\n description: 'Payload when a daily goal is completed',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n date: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n targetXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n actualXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const DailyGoalCompletedEvent = defineEvent({\n meta: {\n key: 'daily_goal.completed',\n version: '1.0.0',\n description: 'A daily goal has been completed.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'gamification', 'goal'],\n },\n payload: DailyGoalCompletedPayload,\n});\n\n// ============ Certificate Events ============\n\nconst CertificateIssuedPayload = defineSchemaModel({\n name: 'CertificateIssuedEventPayload',\n description: 'Payload when a certificate is issued',\n fields: {\n certificateId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n courseId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n certificateNumber: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n issuedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CertificateIssuedEvent = defineEvent({\n meta: {\n key: 'certificate.issued',\n version: '1.0.0',\n description: 'A certificate has been issued.',\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'certificate'],\n },\n payload: CertificateIssuedPayload,\n});\n\n/**\n * All learning journey events.\n */\nexport const LearningJourneyEvents = {\n CoursePublishedEvent,\n EnrollmentCreatedEvent,\n LessonCompletedEvent,\n CourseCompletedEvent,\n OnboardingStartedEvent,\n OnboardingStepCompletedEvent,\n OnboardingCompletedEvent,\n CardReviewedEvent,\n QuizStartedEvent,\n QuizCompletedEvent,\n XpEarnedEvent,\n LevelUpEvent,\n StreakUpdatedEvent,\n AchievementUnlockedEvent,\n DailyGoalCompletedEvent,\n CertificateIssuedEvent,\n};\n"],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  const LearningJourneyFeature = {
7
7
  meta: {
8
8
  key: "learning-journey",
9
- version: 1,
9
+ version: "1.0.0",
10
10
  title: "Learning Journey",
11
11
  description: "Learning platform with courses, onboarding, flashcards, and gamification",
12
12
  domain: "learning",
@@ -23,101 +23,101 @@ const LearningJourneyFeature = {
23
23
  operations: [
24
24
  {
25
25
  key: "learning.onboarding.recordEvent",
26
- version: 1
26
+ version: "1.0.0"
27
27
  },
28
28
  {
29
29
  key: "learning.onboarding.listTracks",
30
- version: 1
30
+ version: "1.0.0"
31
31
  },
32
32
  {
33
33
  key: "learning.onboarding.getProgress",
34
- version: 1
34
+ version: "1.0.0"
35
35
  },
36
36
  {
37
37
  key: "learning.enroll",
38
- version: 1
38
+ version: "1.0.0"
39
39
  },
40
40
  {
41
41
  key: "learning.completeLesson",
42
- version: 1
42
+ version: "1.0.0"
43
43
  },
44
44
  {
45
45
  key: "learning.submitCardReview",
46
- version: 1
46
+ version: "1.0.0"
47
47
  },
48
48
  {
49
49
  key: "learning.getDueCards",
50
- version: 1
50
+ version: "1.0.0"
51
51
  },
52
52
  {
53
53
  key: "learning.getDashboard",
54
- version: 1
54
+ version: "1.0.0"
55
55
  }
56
56
  ],
57
57
  events: [
58
58
  {
59
59
  key: "course.published",
60
- version: 1
60
+ version: "1.0.0"
61
61
  },
62
62
  {
63
63
  key: "course.completed",
64
- version: 1
64
+ version: "1.0.0"
65
65
  },
66
66
  {
67
67
  key: "enrollment.created",
68
- version: 1
68
+ version: "1.0.0"
69
69
  },
70
70
  {
71
71
  key: "lesson.completed",
72
- version: 1
72
+ version: "1.0.0"
73
73
  },
74
74
  {
75
75
  key: "onboarding.started",
76
- version: 1
76
+ version: "1.0.0"
77
77
  },
78
78
  {
79
79
  key: "onboarding.step_completed",
80
- version: 1
80
+ version: "1.0.0"
81
81
  },
82
82
  {
83
83
  key: "onboarding.completed",
84
- version: 1
84
+ version: "1.0.0"
85
85
  },
86
86
  {
87
87
  key: "flashcard.reviewed",
88
- version: 1
88
+ version: "1.0.0"
89
89
  },
90
90
  {
91
91
  key: "quiz.started",
92
- version: 1
92
+ version: "1.0.0"
93
93
  },
94
94
  {
95
95
  key: "quiz.completed",
96
- version: 1
96
+ version: "1.0.0"
97
97
  },
98
98
  {
99
99
  key: "xp.earned",
100
- version: 1
100
+ version: "1.0.0"
101
101
  },
102
102
  {
103
103
  key: "level.up",
104
- version: 1
104
+ version: "1.0.0"
105
105
  },
106
106
  {
107
107
  key: "streak.updated",
108
- version: 1
108
+ version: "1.0.0"
109
109
  },
110
110
  {
111
111
  key: "achievement.unlocked",
112
- version: 1
112
+ version: "1.0.0"
113
113
  },
114
114
  {
115
115
  key: "daily_goal.completed",
116
- version: 1
116
+ version: "1.0.0"
117
117
  },
118
118
  {
119
119
  key: "certificate.issued",
120
- version: 1
120
+ version: "1.0.0"
121
121
  }
122
122
  ],
123
123
  presentations: [],
@@ -127,20 +127,20 @@ const LearningJourneyFeature = {
127
127
  provides: [
128
128
  {
129
129
  key: "learning-journey",
130
- version: 1
130
+ version: "1.0.0"
131
131
  },
132
132
  {
133
133
  key: "onboarding",
134
- version: 1
134
+ version: "1.0.0"
135
135
  },
136
136
  {
137
137
  key: "gamification",
138
- version: 1
138
+ version: "1.0.0"
139
139
  }
140
140
  ],
141
141
  requires: [{
142
142
  key: "identity",
143
- version: 1
143
+ version: "1.0.0"
144
144
  }]
145
145
  }
146
146
  };
@@ -1 +1 @@
1
- {"version":3,"file":"learning-journey.feature.js","names":["LearningJourneyFeature: FeatureModuleSpec"],"sources":["../src/learning-journey.feature.ts"],"sourcesContent":["/**\n * Learning Journey Feature Module Specification\n *\n * Defines the feature module for learning, onboarding, and gamification.\n */\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts';\n\n/**\n * Learning Journey feature module that bundles course enrollment,\n * onboarding tracks, flashcard review, and gamification capabilities.\n */\nexport const LearningJourneyFeature: FeatureModuleSpec = {\n meta: {\n key: 'learning-journey',\n version: 1,\n title: 'Learning Journey',\n description:\n 'Learning platform with courses, onboarding, flashcards, and gamification',\n domain: 'learning',\n owners: ['@platform.learning-journey'],\n tags: ['learning', 'onboarding', 'courses', 'flashcards', 'gamification'],\n stability: 'stable',\n },\n\n // All contract operations included in this feature\n operations: [\n // Onboarding operations\n { key: 'learning.onboarding.recordEvent', version: 1 },\n { key: 'learning.onboarding.listTracks', version: 1 },\n { key: 'learning.onboarding.getProgress', version: 1 },\n\n // Core learning operations\n { key: 'learning.enroll', version: 1 },\n { key: 'learning.completeLesson', version: 1 },\n { key: 'learning.submitCardReview', version: 1 },\n { key: 'learning.getDueCards', version: 1 },\n { key: 'learning.getDashboard', version: 1 },\n ],\n\n // Events emitted by this feature\n events: [\n // Course events\n { key: 'course.published', version: 1 },\n { key: 'course.completed', version: 1 },\n\n // Enrollment events\n { key: 'enrollment.created', version: 1 },\n\n // Progress events\n { key: 'lesson.completed', version: 1 },\n\n // Onboarding events\n { key: 'onboarding.started', version: 1 },\n { key: 'onboarding.step_completed', version: 1 },\n { key: 'onboarding.completed', version: 1 },\n\n // Flashcard events\n { key: 'flashcard.reviewed', version: 1 },\n\n // Quiz events\n { key: 'quiz.started', version: 1 },\n { key: 'quiz.completed', version: 1 },\n\n // Gamification events\n { key: 'xp.earned', version: 1 },\n { key: 'level.up', version: 1 },\n { key: 'streak.updated', version: 1 },\n { key: 'achievement.unlocked', version: 1 },\n { key: 'daily_goal.completed', version: 1 },\n\n // Certificate events\n { key: 'certificate.issued', version: 1 },\n ],\n\n // No presentations for this module feature\n presentations: [],\n opToPresentation: [],\n presentationsTargets: [],\n\n // Capability definitions\n capabilities: {\n provides: [\n { key: 'learning-journey', version: 1 },\n { key: 'onboarding', version: 1 },\n { key: 'gamification', version: 1 },\n ],\n requires: [{ key: 'identity', version: 1 }],\n },\n};\n"],"mappings":";;;;;AAWA,MAAaA,yBAA4C;CACvD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,6BAA6B;EACtC,MAAM;GAAC;GAAY;GAAc;GAAW;GAAc;GAAe;EACzE,WAAW;EACZ;CAGD,YAAY;EAEV;GAAE,KAAK;GAAmC,SAAS;GAAG;EACtD;GAAE,KAAK;GAAkC,SAAS;GAAG;EACrD;GAAE,KAAK;GAAmC,SAAS;GAAG;EAGtD;GAAE,KAAK;GAAmB,SAAS;GAAG;EACtC;GAAE,KAAK;GAA2B,SAAS;GAAG;EAC9C;GAAE,KAAK;GAA6B,SAAS;GAAG;EAChD;GAAE,KAAK;GAAwB,SAAS;GAAG;EAC3C;GAAE,KAAK;GAAyB,SAAS;GAAG;EAC7C;CAGD,QAAQ;EAEN;GAAE,KAAK;GAAoB,SAAS;GAAG;EACvC;GAAE,KAAK;GAAoB,SAAS;GAAG;EAGvC;GAAE,KAAK;GAAsB,SAAS;GAAG;EAGzC;GAAE,KAAK;GAAoB,SAAS;GAAG;EAGvC;GAAE,KAAK;GAAsB,SAAS;GAAG;EACzC;GAAE,KAAK;GAA6B,SAAS;GAAG;EAChD;GAAE,KAAK;GAAwB,SAAS;GAAG;EAG3C;GAAE,KAAK;GAAsB,SAAS;GAAG;EAGzC;GAAE,KAAK;GAAgB,SAAS;GAAG;EACnC;GAAE,KAAK;GAAkB,SAAS;GAAG;EAGrC;GAAE,KAAK;GAAa,SAAS;GAAG;EAChC;GAAE,KAAK;GAAY,SAAS;GAAG;EAC/B;GAAE,KAAK;GAAkB,SAAS;GAAG;EACrC;GAAE,KAAK;GAAwB,SAAS;GAAG;EAC3C;GAAE,KAAK;GAAwB,SAAS;GAAG;EAG3C;GAAE,KAAK;GAAsB,SAAS;GAAG;EAC1C;CAGD,eAAe,EAAE;CACjB,kBAAkB,EAAE;CACpB,sBAAsB,EAAE;CAGxB,cAAc;EACZ,UAAU;GACR;IAAE,KAAK;IAAoB,SAAS;IAAG;GACvC;IAAE,KAAK;IAAc,SAAS;IAAG;GACjC;IAAE,KAAK;IAAgB,SAAS;IAAG;GACpC;EACD,UAAU,CAAC;GAAE,KAAK;GAAY,SAAS;GAAG,CAAC;EAC5C;CACF"}
1
+ {"version":3,"file":"learning-journey.feature.js","names":["LearningJourneyFeature: FeatureModuleSpec"],"sources":["../src/learning-journey.feature.ts"],"sourcesContent":["/**\n * Learning Journey Feature Module Specification\n *\n * Defines the feature module for learning, onboarding, and gamification.\n */\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts';\n\n/**\n * Learning Journey feature module that bundles course enrollment,\n * onboarding tracks, flashcard review, and gamification capabilities.\n */\nexport const LearningJourneyFeature: FeatureModuleSpec = {\n meta: {\n key: 'learning-journey',\n version: '1.0.0',\n title: 'Learning Journey',\n description:\n 'Learning platform with courses, onboarding, flashcards, and gamification',\n domain: 'learning',\n owners: ['@platform.learning-journey'],\n tags: ['learning', 'onboarding', 'courses', 'flashcards', 'gamification'],\n stability: 'stable',\n },\n\n // All contract operations included in this feature\n operations: [\n // Onboarding operations\n { key: 'learning.onboarding.recordEvent', version: '1.0.0' },\n { key: 'learning.onboarding.listTracks', version: '1.0.0' },\n { key: 'learning.onboarding.getProgress', version: '1.0.0' },\n\n // Core learning operations\n { key: 'learning.enroll', version: '1.0.0' },\n { key: 'learning.completeLesson', version: '1.0.0' },\n { key: 'learning.submitCardReview', version: '1.0.0' },\n { key: 'learning.getDueCards', version: '1.0.0' },\n { key: 'learning.getDashboard', version: '1.0.0' },\n ],\n\n // Events emitted by this feature\n events: [\n // Course events\n { key: 'course.published', version: '1.0.0' },\n { key: 'course.completed', version: '1.0.0' },\n\n // Enrollment events\n { key: 'enrollment.created', version: '1.0.0' },\n\n // Progress events\n { key: 'lesson.completed', version: '1.0.0' },\n\n // Onboarding events\n { key: 'onboarding.started', version: '1.0.0' },\n { key: 'onboarding.step_completed', version: '1.0.0' },\n { key: 'onboarding.completed', version: '1.0.0' },\n\n // Flashcard events\n { key: 'flashcard.reviewed', version: '1.0.0' },\n\n // Quiz events\n { key: 'quiz.started', version: '1.0.0' },\n { key: 'quiz.completed', version: '1.0.0' },\n\n // Gamification events\n { key: 'xp.earned', version: '1.0.0' },\n { key: 'level.up', version: '1.0.0' },\n { key: 'streak.updated', version: '1.0.0' },\n { key: 'achievement.unlocked', version: '1.0.0' },\n { key: 'daily_goal.completed', version: '1.0.0' },\n\n // Certificate events\n { key: 'certificate.issued', version: '1.0.0' },\n ],\n\n // No presentations for this module feature\n presentations: [],\n opToPresentation: [],\n presentationsTargets: [],\n\n // Capability definitions\n capabilities: {\n provides: [\n { key: 'learning-journey', version: '1.0.0' },\n { key: 'onboarding', version: '1.0.0' },\n { key: 'gamification', version: '1.0.0' },\n ],\n requires: [{ key: 'identity', version: '1.0.0' }],\n },\n};\n"],"mappings":";;;;;AAWA,MAAaA,yBAA4C;CACvD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,6BAA6B;EACtC,MAAM;GAAC;GAAY;GAAc;GAAW;GAAc;GAAe;EACzE,WAAW;EACZ;CAGD,YAAY;EAEV;GAAE,KAAK;GAAmC,SAAS;GAAS;EAC5D;GAAE,KAAK;GAAkC,SAAS;GAAS;EAC3D;GAAE,KAAK;GAAmC,SAAS;GAAS;EAG5D;GAAE,KAAK;GAAmB,SAAS;GAAS;EAC5C;GAAE,KAAK;GAA2B,SAAS;GAAS;EACpD;GAAE,KAAK;GAA6B,SAAS;GAAS;EACtD;GAAE,KAAK;GAAwB,SAAS;GAAS;EACjD;GAAE,KAAK;GAAyB,SAAS;GAAS;EACnD;CAGD,QAAQ;EAEN;GAAE,KAAK;GAAoB,SAAS;GAAS;EAC7C;GAAE,KAAK;GAAoB,SAAS;GAAS;EAG7C;GAAE,KAAK;GAAsB,SAAS;GAAS;EAG/C;GAAE,KAAK;GAAoB,SAAS;GAAS;EAG7C;GAAE,KAAK;GAAsB,SAAS;GAAS;EAC/C;GAAE,KAAK;GAA6B,SAAS;GAAS;EACtD;GAAE,KAAK;GAAwB,SAAS;GAAS;EAGjD;GAAE,KAAK;GAAsB,SAAS;GAAS;EAG/C;GAAE,KAAK;GAAgB,SAAS;GAAS;EACzC;GAAE,KAAK;GAAkB,SAAS;GAAS;EAG3C;GAAE,KAAK;GAAa,SAAS;GAAS;EACtC;GAAE,KAAK;GAAY,SAAS;GAAS;EACrC;GAAE,KAAK;GAAkB,SAAS;GAAS;EAC3C;GAAE,KAAK;GAAwB,SAAS;GAAS;EACjD;GAAE,KAAK;GAAwB,SAAS;GAAS;EAGjD;GAAE,KAAK;GAAsB,SAAS;GAAS;EAChD;CAGD,eAAe,EAAE;CACjB,kBAAkB,EAAE;CACpB,sBAAsB,EAAE;CAGxB,cAAc;EACZ,UAAU;GACR;IAAE,KAAK;IAAoB,SAAS;IAAS;GAC7C;IAAE,KAAK;IAAc,SAAS;IAAS;GACvC;IAAE,KAAK;IAAgB,SAAS;IAAS;GAC1C;EACD,UAAU,CAAC;GAAE,KAAK;GAAY,SAAS;GAAS,CAAC;EAClD;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/module.learning-journey",
3
- "version": "1.44.1",
3
+ "version": "1.45.1",
4
4
  "description": "Comprehensive learning journey engine - onboarding, LMS, flashcards, gamification, and AI personalization",
5
5
  "keywords": [
6
6
  "contractspec",
@@ -26,13 +26,13 @@
26
26
  "lint:check": "eslint src"
27
27
  },
28
28
  "dependencies": {
29
- "@contractspec/lib.schema": "1.44.1",
30
- "@contractspec/lib.contracts": "1.44.1",
29
+ "@contractspec/lib.schema": "1.45.1",
30
+ "@contractspec/lib.contracts": "1.45.1",
31
31
  "zod": "^4.1.13"
32
32
  },
33
33
  "devDependencies": {
34
- "@contractspec/tool.typescript": "1.44.1",
35
- "@contractspec/tool.tsdown": "1.44.1",
34
+ "@contractspec/tool.typescript": "1.45.1",
35
+ "@contractspec/tool.tsdown": "1.45.1",
36
36
  "typescript": "^5.9.3"
37
37
  },
38
38
  "exports": {