musora-content-services 2.92.3 → 2.92.6

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 (114) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.json +1 -1
  3. package/src/index.d.ts +2 -0
  4. package/src/index.js +2 -0
  5. package/src/services/content-org/learning-paths.ts +3 -3
  6. package/src/services/progress-row/method-card.js +1 -1
  7. package/src/services/sync/fetch.ts +3 -0
  8. package/docs/Content.html +0 -269
  9. package/docs/ContentOrganization.html +0 -245
  10. package/docs/Forums.html +0 -269
  11. package/docs/Gamification.html +0 -245
  12. package/docs/TestUser.html +0 -260
  13. package/docs/UserManagementSystem.html +0 -317
  14. package/docs/api_types.js.html +0 -97
  15. package/docs/config.js.html +0 -140
  16. package/docs/content-org_content-org.js.html +0 -76
  17. package/docs/content-org_guided-courses.ts.html +0 -110
  18. package/docs/content-org_learning-paths.ts.html +0 -391
  19. package/docs/content-org_playlists-types.js.html +0 -128
  20. package/docs/content-org_playlists.js.html +0 -440
  21. package/docs/content.js.html +0 -603
  22. package/docs/content_artist.ts.html +0 -206
  23. package/docs/content_content.ts.html +0 -77
  24. package/docs/content_genre.ts.html +0 -209
  25. package/docs/content_instructor.ts.html +0 -206
  26. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  27. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  28. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  29. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  30. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  31. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  32. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  33. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  34. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  35. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
  36. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  37. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  38. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  39. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  40. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
  41. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  42. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  43. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  44. package/docs/forums_categories.ts.html +0 -156
  45. package/docs/forums_discussions.js.html +0 -95
  46. package/docs/forums_forum.js.html +0 -95
  47. package/docs/forums_forums.ts.html +0 -160
  48. package/docs/forums_posts.ts.html +0 -284
  49. package/docs/forums_threads.ts.html +0 -284
  50. package/docs/gamification_awards.js.html +0 -165
  51. package/docs/gamification_awards.ts.html +0 -195
  52. package/docs/gamification_gamification.js.html +0 -76
  53. package/docs/gamification_types.js.html +0 -80
  54. package/docs/global.html +0 -6019
  55. package/docs/index.html +0 -167
  56. package/docs/liveTesting.ts.html +0 -103
  57. package/docs/module-Accounts.html +0 -2283
  58. package/docs/module-Artist.html +0 -993
  59. package/docs/module-Awards.html +0 -836
  60. package/docs/module-Categories.html +0 -711
  61. package/docs/module-Config.html +0 -431
  62. package/docs/module-Content-Services-V2.html +0 -2998
  63. package/docs/module-ForumCategories.html +0 -687
  64. package/docs/module-ForumDiscussions.html +0 -370
  65. package/docs/module-Forums.html +0 -16599
  66. package/docs/module-Genre.html +0 -981
  67. package/docs/module-GuidedCourses.html +0 -108
  68. package/docs/module-Instructor.html +0 -929
  69. package/docs/module-Interests.html +0 -1066
  70. package/docs/module-LearningPaths.html +0 -2424
  71. package/docs/module-Onboarding.html +0 -882
  72. package/docs/module-Payments.html +0 -392
  73. package/docs/module-Permissions.html +0 -406
  74. package/docs/module-Playlists.html +0 -3030
  75. package/docs/module-ProgressRow.html +0 -108
  76. package/docs/module-Railcontent-Services.html +0 -5876
  77. package/docs/module-Sanity-Services.html +0 -8244
  78. package/docs/module-Sessions.html +0 -575
  79. package/docs/module-Threads.html +0 -1119
  80. package/docs/module-UserActivity.html +0 -4534
  81. package/docs/module-UserChat.html +0 -410
  82. package/docs/module-UserManagement.html +0 -1932
  83. package/docs/module-UserMemberships.html +0 -829
  84. package/docs/module-UserNotifications.html +0 -2595
  85. package/docs/module-UserProfile.html +0 -370
  86. package/docs/progress-row_method-card.js.html +0 -184
  87. package/docs/railcontent.js.html +0 -724
  88. package/docs/sanity.js.html +0 -2322
  89. package/docs/scripts/collapse.js +0 -39
  90. package/docs/scripts/commonNav.js +0 -28
  91. package/docs/scripts/linenumber.js +0 -25
  92. package/docs/scripts/nav.js +0 -12
  93. package/docs/scripts/polyfill.js +0 -4
  94. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  95. package/docs/scripts/prettify/lang-css.js +0 -2
  96. package/docs/scripts/prettify/prettify.js +0 -28
  97. package/docs/scripts/search.js +0 -99
  98. package/docs/styles/jsdoc.css +0 -776
  99. package/docs/styles/prettify.css +0 -80
  100. package/docs/userActivity.js.html +0 -1512
  101. package/docs/user_account.ts.html +0 -265
  102. package/docs/user_chat.js.html +0 -98
  103. package/docs/user_interests.js.html +0 -150
  104. package/docs/user_management.js.html +0 -258
  105. package/docs/user_memberships.js.html +0 -144
  106. package/docs/user_memberships.ts.html +0 -292
  107. package/docs/user_notifications.js.html +0 -374
  108. package/docs/user_onboarding.ts.html +0 -329
  109. package/docs/user_payments.ts.html +0 -146
  110. package/docs/user_permissions.js.html +0 -110
  111. package/docs/user_profile.js.html +0 -115
  112. package/docs/user_sessions.js.html +0 -170
  113. package/docs/user_types.js.html +0 -224
  114. package/docs/user_user-management-system.js.html +0 -79
@@ -1,391 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
-
5
- <meta charset="utf-8">
6
- <title>content-org/learning-paths.ts - Documentation</title>
7
-
8
-
9
- <script src="scripts/prettify/prettify.js"></script>
10
- <script src="scripts/prettify/lang-css.js"></script>
11
- <!--[if lt IE 9]>
12
- <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
13
- <![endif]-->
14
- <link type="text/css" rel="stylesheet" href="styles/prettify.css">
15
- <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
16
- <script src="scripts/nav.js" defer></script>
17
-
18
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
19
- </head>
20
- <body>
21
-
22
- <input type="checkbox" id="nav-trigger" class="nav-trigger" />
23
- <label for="nav-trigger" class="navicon-button x">
24
- <div class="navicon"></div>
25
- </label>
26
-
27
- <label for="nav-trigger" class="overlay"></label>
28
-
29
- <nav >
30
-
31
-
32
- <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-Accounts.html">Accounts</a><ul class='methods'><li data-type='method'><a href="module-Accounts.html#~confirmEmailChange">confirmEmailChange</a></li><li data-type='method'><a href="module-Accounts.html#~deleteAccount">deleteAccount</a></li><li data-type='method'><a href="module-Accounts.html#~numberOfActiveUsers">numberOfActiveUsers</a></li><li data-type='method'><a href="module-Accounts.html#~requestEmailChange">requestEmailChange</a></li><li data-type='method'><a href="module-Accounts.html#~resetPassword">resetPassword</a></li><li data-type='method'><a href="module-Accounts.html#~sendAccountSetupEmail">sendAccountSetupEmail</a></li><li data-type='method'><a href="module-Accounts.html#~sendPasswordResetEmail">sendPasswordResetEmail</a></li><li data-type='method'><a href="module-Accounts.html#~setupAccount">setupAccount</a></li><li data-type='method'><a href="module-Accounts.html#~status">status</a></li><li data-type='method'><a href="module-Accounts.html#~toggleStudentView">toggleStudentView</a></li></ul></li><li><a href="module-Artist.html">Artist</a><ul class='methods'><li data-type='method'><a href="module-Artist.html#~fetchArtistBySlug">fetchArtistBySlug</a></li><li data-type='method'><a href="module-Artist.html#~fetchArtistLessons">fetchArtistLessons</a></li><li data-type='method'><a href="module-Artist.html#~fetchArtists">fetchArtists</a></li></ul></li><li><a href="module-Awards.html">Awards</a><ul class='methods'><li data-type='method'><a href="module-Awards.html#~fetchAwardsForUser">fetchAwardsForUser</a></li><li data-type='method'><a href="module-Awards.html#~fetchCertificate">fetchCertificate</a></li><li data-type='method'><a href="module-Awards.html#~getAwardDataForGuidedContent">getAwardDataForGuidedContent</a></li></ul></li><li><a href="module-Config.html">Config</a><ul class='methods'><li data-type='method'><a href="module-Config.html#.initializeService">initializeService</a></li></ul></li><li><a href="module-Content-Services-V2.html">Content-Services-V2</a><ul class='methods'><li data-type='method'><a href="module-Content-Services-V2.html#.getContentRows">getContentRows</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getLegacyMethods">getLegacyMethods</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getNewAndUpcoming">getNewAndUpcoming</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getOwnedContent">getOwnedContent</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getRecent">getRecent</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getRecommendedForYou">getRecommendedForYou</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getScheduleContentRows">getScheduleContentRows</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getTabResults">getTabResults</a></li></ul></li><li><a href="module-Forums.html">Forums</a><ul class='methods'><li data-type='method'><a href="module-Forums.html#~createForumCategory">createForumCategory</a></li><li data-type='method'><a href="module-Forums.html#~createPost">createPost</a></li><li data-type='method'><a href="module-Forums.html#~createThread">createThread</a></li><li data-type='method'><a href="module-Forums.html#~deleteForumCategory">deleteForumCategory</a></li><li data-type='method'><a href="module-Forums.html#~deletePost">deletePost</a></li><li data-type='method'><a href="module-Forums.html#~deleteThread">deleteThread</a></li><li data-type='method'><a href="module-Forums.html#~fetchCommunityGuidelines">fetchCommunityGuidelines</a></li><li data-type='method'><a href="module-Forums.html#~fetchFollowedThreads">fetchFollowedThreads</a></li><li data-type='method'><a href="module-Forums.html#~fetchForumCategories">fetchForumCategories</a></li><li data-type='method'><a href="module-Forums.html#~fetchLatestThreads">fetchLatestThreads</a></li><li data-type='method'><a href="module-Forums.html#~fetchPosts">fetchPosts</a></li><li data-type='method'><a href="module-Forums.html#~fetchThreads">fetchThreads</a></li><li data-type='method'><a href="module-Forums.html#~followThread">followThread</a></li><li data-type='method'><a href="module-Forums.html#~jumpToPost">jumpToPost</a></li><li data-type='method'><a href="module-Forums.html#~likePost">likePost</a></li><li data-type='method'><a href="module-Forums.html#~lockThread">lockThread</a></li><li data-type='method'><a href="module-Forums.html#~markThreadAsRead">markThreadAsRead</a></li><li data-type='method'><a href="module-Forums.html#~pinThread">pinThread</a></li><li data-type='method'><a href="module-Forums.html#~search">search</a></li><li data-type='method'><a href="module-Forums.html#~unfollowThread">unfollowThread</a></li><li data-type='method'><a href="module-Forums.html#~unlikePost">unlikePost</a></li><li data-type='method'><a href="module-Forums.html#~unlockThread">unlockThread</a></li><li data-type='method'><a href="module-Forums.html#~unpinThread">unpinThread</a></li><li data-type='method'><a href="module-Forums.html#~updateForumCategory">updateForumCategory</a></li><li data-type='method'><a href="module-Forums.html#~updatePost">updatePost</a></li><li data-type='method'><a href="module-Forums.html#~updateThread">updateThread</a></li></ul></li><li></li><li></li><li><a href="module-Genre.html">Genre</a><ul class='methods'><li data-type='method'><a href="module-Genre.html#~fetchGenreBySlug">fetchGenreBySlug</a></li><li data-type='method'><a href="module-Genre.html#~fetchGenreLessons">fetchGenreLessons</a></li><li data-type='method'><a href="module-Genre.html#~fetchGenres">fetchGenres</a></li></ul></li><li><a href="module-GuidedCourses.html">GuidedCourses</a></li><li><a href="module-Instructor.html">Instructor</a><ul class='methods'><li data-type='method'><a href="module-Instructor.html#~fetchInstructorBySlug">fetchInstructorBySlug</a></li><li data-type='method'><a href="module-Instructor.html#~fetchInstructorLessons">fetchInstructorLessons</a></li><li data-type='method'><a href="module-Instructor.html#~fetchInstructors">fetchInstructors</a></li></ul></li><li><a href="module-Interests.html">Interests</a><ul class='methods'><li data-type='method'><a href="module-Interests.html#.fetchInterests">fetchInterests</a></li><li data-type='method'><a href="module-Interests.html#.fetchUninterests">fetchUninterests</a></li><li data-type='method'><a href="module-Interests.html#.markContentAsInterested">markContentAsInterested</a></li><li data-type='method'><a href="module-Interests.html#.markContentAsNotInterested">markContentAsNotInterested</a></li><li data-type='method'><a href="module-Interests.html#.removeContentAsInterested">removeContentAsInterested</a></li><li data-type='method'><a href="module-Interests.html#.removeContentAsNotInterested">removeContentAsNotInterested</a></li></ul></li><li><a href="module-LearningPaths.html">LearningPaths</a><ul class='methods'><li data-type='method'><a href="module-LearningPaths.html#~completeLearningPathIntroVideo">completeLearningPathIntroVideo</a></li><li data-type='method'><a href="module-LearningPaths.html#~completeMethodIntroVideo">completeMethodIntroVideo</a></li><li data-type='method'><a href="module-LearningPaths.html#~fetchLearningPathLessons">fetchLearningPathLessons</a></li><li data-type='method'><a href="module-LearningPaths.html#~fetchLearningPathProgressCheckLessons">fetchLearningPathProgressCheckLessons</a></li><li data-type='method'><a href="module-LearningPaths.html#~getActivePath">getActivePath</a></li><li data-type='method'><a href="module-LearningPaths.html#~getDailySession">getDailySession</a></li><li data-type='method'><a href="module-LearningPaths.html#~getEnrichedLearningPath">getEnrichedLearningPath</a></li><li data-type='method'><a href="module-LearningPaths.html#~getLearningPathLessonsByIds">getLearningPathLessonsByIds</a></li><li data-type='method'><a href="module-LearningPaths.html#~mapContentToParent">mapContentToParent</a></li><li data-type='method'><a href="module-LearningPaths.html#~resetAllLearningPaths">resetAllLearningPaths</a></li><li data-type='method'><a href="module-LearningPaths.html#~startLearningPath">startLearningPath</a></li><li data-type='method'><a href="module-LearningPaths.html#~updateDailySession">updateDailySession</a></li></ul></li><li><a href="module-Onboarding.html">Onboarding</a><ul class='methods'><li data-type='method'><a href="module-Onboarding.html#~getOnboardingRecommendedContent">getOnboardingRecommendedContent</a></li><li data-type='method'><a href="module-Onboarding.html#~startOnboarding">startOnboarding</a></li><li data-type='method'><a href="module-Onboarding.html#~updateOnboarding">updateOnboarding</a></li><li data-type='method'><a href="module-Onboarding.html#~userOnboardingForBrand">userOnboardingForBrand</a></li></ul></li><li><a href="module-Payments.html">Payments</a><ul class='methods'><li data-type='method'><a href="module-Payments.html#~fetchCustomerPayments">fetchCustomerPayments</a></li></ul></li><li><a href="module-Permissions.html">Permissions</a><ul class='methods'><li data-type='method'><a href="module-Permissions.html#.fetchUserPermissions">fetchUserPermissions</a></li><li data-type='method'><a href="module-Permissions.html#.reset">reset</a></li></ul></li><li><a href="module-Playlists.html">Playlists</a><ul class='methods'><li data-type='method'><a href="module-Playlists.html#.addItemToPlaylist">addItemToPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.createPlaylist">createPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.deletePlaylist">deletePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.duplicatePlaylist">duplicatePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.fetchPlaylist">fetchPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.fetchPlaylistItems">fetchPlaylistItems</a></li><li data-type='method'><a href="module-Playlists.html#.fetchUserPlaylists">fetchUserPlaylists</a></li><li data-type='method'><a href="module-Playlists.html#.togglePlaylistPrivate">togglePlaylistPrivate</a></li><li data-type='method'><a href="module-Playlists.html#.undeletePlaylist">undeletePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.updatePlaylist">updatePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~deleteItemsFromPlaylist">deleteItemsFromPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~likePlaylist">likePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~reportPlaylist">reportPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~restoreItemFromPlaylist">restoreItemFromPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~unlikePlaylist">unlikePlaylist</a></li></ul></li><li><a href="module-ProgressRow.html">ProgressRow</a></li><li><a href="module-Railcontent-Services.html">Railcontent-Services</a><ul class='methods'><li data-type='method'><a href="module-Railcontent-Services.html#.assignModeratorToComment">assignModeratorToComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.closeComment">closeComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.createComment">createComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.deleteComment">deleteComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.editComment">editComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchAllCompletedStates">fetchAllCompletedStates</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCarouselCardData">fetchCarouselCardData</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchComment">fetchComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCommentRelies">fetchCommentRelies</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchComments">fetchComments</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCompletedContent">fetchCompletedContent</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCompletedState">fetchCompletedState</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchContentInProgress">fetchContentInProgress</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchContentPageUserData">fetchContentPageUserData</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchNextContentDataForParent">fetchNextContentDataForParent</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchRecentUserActivities">fetchRecentUserActivities</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchSongsInProgress">fetchSongsInProgress</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchTopComment">fetchTopComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchUserAward">fetchUserAward</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchUserBadges">fetchUserBadges</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchUserPracticeNotes">fetchUserPracticeNotes</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.likeComment">likeComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.openComment">openComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.replyToComment">replyToComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.reportComment">reportComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.restoreComment">restoreComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.setStudentViewForUser">setStudentViewForUser</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.unassignModeratorToComment">unassignModeratorToComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.unlikeComment">unlikeComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#~fetchLastInteractedChild">fetchLastInteractedChild</a></li></ul></li><li><a href="module-Sanity-Services.html">Sanity-Services</a><ul class='methods'><li data-type='method'><a href="module-Sanity-Services.html#.fetchAll">fetchAll</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchAllFilterOptions">fetchAllFilterOptions</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchAllPacks">fetchAllPacks</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchByRailContentId">fetchByRailContentId</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchByRailContentIds">fetchByRailContentIds</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchByReference">fetchByReference</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchComingSoon">fetchComingSoon</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchCommentModContentData">fetchCommentModContentData</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchFoundation">fetchFoundation</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchLeaving">fetchLeaving</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchLessonContent">fetchLessonContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchLessonsFeaturingThisContent">fetchLessonsFeaturingThisContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMetadata">fetchMetadata</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethod">fetchMethod</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodChildren">fetchMethodChildren</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodChildrenIds">fetchMethodChildrenIds</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodPreviousNextLesson">fetchMethodPreviousNextLesson</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodV2IntroVideo">fetchMethodV2IntroVideo</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodV2Structure">fetchMethodV2Structure</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodV2StructureFromId">fetchMethodV2StructureFromId</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchNewReleases">fetchNewReleases</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchNextPreviousLesson">fetchNextPreviousLesson</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchOtherSongVersions">fetchOtherSongVersions</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchOwnedContent">fetchOwnedContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchPackAll">fetchPackAll</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchPackData">fetchPackData</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchRelatedLessons">fetchRelatedLessons</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchRelatedRecommendedContent">fetchRelatedRecommendedContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchRelatedSongs">fetchRelatedSongs</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchReturning">fetchReturning</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSanity">fetchSanity</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchScheduledReleases">fetchScheduledReleases</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchShowsData">fetchShowsData</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSiblingContent">fetchSiblingContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSongArtistCount">fetchSongArtistCount</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSongById">fetchSongById</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchTopLevelParentId">fetchTopLevelParentId</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchUpcomingEvents">fetchUpcomingEvents</a></li><li data-type='method'><a href="module-Sanity-Services.html#.jumpToContinueContent">jumpToContinueContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#~fetchRelatedByLicense">fetchRelatedByLicense</a></li><li data-type='method'><a href="module-Sanity-Services.html#~getQueryFromPage">getQueryFromPage</a></li></ul></li><li><a href="module-Sessions.html">Sessions</a><ul class='methods'><li data-type='method'><a href="module-Sessions.html#.login">login</a></li><li data-type='method'><a href="module-Sessions.html#.logout">logout</a></li></ul></li><li><a href="module-UserActivity.html">UserActivity</a><ul class='methods'><li data-type='method'><a href="module-UserActivity.html#.calculateLongestStreaks">calculateLongestStreaks</a></li><li data-type='method'><a href="module-UserActivity.html#.createPracticeNotes">createPracticeNotes</a></li><li data-type='method'><a href="module-UserActivity.html#.deletePracticeSession">deletePracticeSession</a></li><li data-type='method'><a href="module-UserActivity.html#.deleteUserActivity">deleteUserActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.getPracticeNotes">getPracticeNotes</a></li><li data-type='method'><a href="module-UserActivity.html#.getPracticeSessions">getPracticeSessions</a></li><li data-type='method'><a href="module-UserActivity.html#.getProgressRows">getProgressRows</a></li><li data-type='method'><a href="module-UserActivity.html#.getRecentActivity">getRecentActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.getUserMonthlyStats">getUserMonthlyStats</a></li><li data-type='method'><a href="module-UserActivity.html#.getUserWeeklyStats">getUserWeeklyStats</a></li><li data-type='method'><a href="module-UserActivity.html#.pinProgressRow">pinProgressRow</a></li><li data-type='method'><a href="module-UserActivity.html#.recordUserActivity">recordUserActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.recordUserPractice">recordUserPractice</a></li><li data-type='method'><a href="module-UserActivity.html#.removeUserPractice">removeUserPractice</a></li><li data-type='method'><a href="module-UserActivity.html#.restorePracticeSession">restorePracticeSession</a></li><li data-type='method'><a href="module-UserActivity.html#.restoreUserActivity">restoreUserActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.restoreUserPractice">restoreUserPractice</a></li><li data-type='method'><a href="module-UserActivity.html#.unpinProgressRow">unpinProgressRow</a></li><li data-type='method'><a href="module-UserActivity.html#.updatePracticeNotes">updatePracticeNotes</a></li><li data-type='method'><a href="module-UserActivity.html#.updateUserPractice">updateUserPractice</a></li></ul></li><li><a href="module-UserChat.html">UserChat</a><ul class='methods'><li data-type='method'><a href="module-UserChat.html#.fetchChatSettings">fetchChatSettings</a></li></ul></li><li><a href="module-UserManagement.html">UserManagement</a><ul class='methods'><li data-type='method'><a href="module-UserManagement.html#.blockUser">blockUser</a></li><li data-type='method'><a href="module-UserManagement.html#.blockedUsers">blockedUsers</a></li><li data-type='method'><a href="module-UserManagement.html#.deletePicture">deletePicture</a></li><li data-type='method'><a href="module-UserManagement.html#.getUserData">getUserData</a></li><li data-type='method'><a href="module-UserManagement.html#.getUserSignature">getUserSignature</a></li><li data-type='method'><a href="module-UserManagement.html#.isUsernameAvailable">isUsernameAvailable</a></li><li data-type='method'><a href="module-UserManagement.html#.setUserSignature">setUserSignature</a></li><li data-type='method'><a href="module-UserManagement.html#.toggleSignaturePrivate">toggleSignaturePrivate</a></li><li data-type='method'><a href="module-UserManagement.html#.unblockUser">unblockUser</a></li><li data-type='method'><a href="module-UserManagement.html#.updateDisplayName">updateDisplayName</a></li><li data-type='method'><a href="module-UserManagement.html#.uploadPicture">uploadPicture</a></li><li data-type='method'><a href="module-UserManagement.html#.uploadPictureFromS3">uploadPictureFromS3</a></li></ul></li><li><a href="module-UserMemberships.html">UserMemberships</a><ul class='methods'><li data-type='method'><a href="module-UserMemberships.html#~fetchMemberships">fetchMemberships</a></li><li data-type='method'><a href="module-UserMemberships.html#~fetchRechargeTokens">fetchRechargeTokens</a></li><li data-type='method'><a href="module-UserMemberships.html#~restorePurchases">restorePurchases</a></li><li data-type='method'><a href="module-UserMemberships.html#~upgradeSubscription">upgradeSubscription</a></li></ul></li><li><a href="module-UserNotifications.html">UserNotifications</a><ul class='methods'><li data-type='method'><a href="module-UserNotifications.html#.deleteNotification">deleteNotification</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchLiveEventPollingState">fetchLiveEventPollingState</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchNotificationSettings">fetchNotificationSettings</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchNotifications">fetchNotifications</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchUnreadCount">fetchUnreadCount</a></li><li data-type='method'><a href="module-UserNotifications.html#.markAllNotificationsAsRead">markAllNotificationsAsRead</a></li><li data-type='method'><a href="module-UserNotifications.html#.markNotificationAsRead">markNotificationAsRead</a></li><li data-type='method'><a href="module-UserNotifications.html#.markNotificationAsUnread">markNotificationAsUnread</a></li><li data-type='method'><a href="module-UserNotifications.html#.pauseLiveEventPolling">pauseLiveEventPolling</a></li><li data-type='method'><a href="module-UserNotifications.html#.restoreNotification">restoreNotification</a></li><li data-type='method'><a href="module-UserNotifications.html#.startLiveEventPolling">startLiveEventPolling</a></li><li data-type='method'><a href="module-UserNotifications.html#.updateNotificationSetting">updateNotificationSetting</a></li></ul></li><li><a href="module-UserProfile.html">UserProfile</a><ul class='methods'><li data-type='method'><a href="module-UserProfile.html#.deleteProfilePicture">deleteProfilePicture</a></li><li data-type='method'><a href="module-UserProfile.html#.otherStats">otherStats</a></li></ul></li></ul><h3>Namespaces</h3><ul><li><a href="ContentOrganization.html">ContentOrganization</a></li><li><a href="Forums.html">Forums</a></li><li><a href="Gamification.html">Gamification</a></li><li><a href="UserManagementSystem.html">UserManagementSystem</a></li></ul><h3>Interfaces</h3><ul><li><a href="TestUser.html">TestUser</a></li></ul><h3>Global</h3><ul><li><a href="global.html#createTestUser">createTestUser</a></li></ul>
33
-
34
- </nav>
35
-
36
- <div id="main">
37
-
38
- <h1 class="page-title">content-org/learning-paths.ts</h1>
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
- <section>
47
- <article>
48
- <pre class="prettyprint source linenums"><code>/**
49
- * @module LearningPaths
50
- */
51
-
52
- import { fetchHandler } from '../railcontent.js'
53
- import { fetchByRailContentId, fetchMethodV2Structure } from '../sanity.js'
54
- import { addContextToContent } from '../contentAggregator.js'
55
- import {
56
- contentStatusCompleted,
57
- contentStatusReset,
58
- getAllCompletedByIds,
59
- getProgressState,
60
- } from '../contentProgress.js'
61
-
62
- const BASE_PATH: string = `/api/content-org`
63
- const LEARNING_PATHS_PATH = `${BASE_PATH}/v1/user/learning-paths`
64
-
65
- interface ActiveLearningPathResponse {
66
- user_id: number,
67
- brand: string,
68
- active_learning_path_id: number,
69
- }
70
-
71
- /**
72
- * Gets today's daily session for the user.
73
- * @param brand
74
- * @param userDate
75
- */
76
- export async function getDailySession(brand: string, userDate: Date) {
77
- const stringDate = userDate.toISOString().split('T')[0]
78
- const url: string = `${LEARNING_PATHS_PATH}/daily-session/get?brand=${brand}&amp;userDate=${stringDate}`
79
- return await fetchHandler(url, 'GET', null, null)
80
- }
81
-
82
- /**
83
- * Updates the daily session for the user. Optionally, keeps the first learning path's dailies from a matching day's session.
84
- * @param brand
85
- * @param userDate - format 2025-10-31
86
- * @param keepFirstLearningPath
87
- */
88
- export async function updateDailySession(
89
- brand: string,
90
- userDate: Date,
91
- keepFirstLearningPath: boolean
92
- ) {
93
- const stringDate = userDate.toISOString().split('T')[0]
94
- const url: string = `${LEARNING_PATHS_PATH}/daily-session/create`
95
- const body = { brand: brand, userDate: stringDate, keepFirstLearningPath: keepFirstLearningPath }
96
- return await fetchHandler(url, 'POST', null, body)
97
- }
98
-
99
- /**
100
- * Gets user's active learning path.
101
- * @param brand
102
- */
103
- export async function getActivePath(brand: string) {
104
- const url: string = `${LEARNING_PATHS_PATH}/active-path/get?brand=${brand}`
105
- return await fetchHandler(url, 'GET', null, null)
106
- }
107
-
108
- /**
109
- * Sets a new learning path as the user's active learning path.
110
- * @param brand
111
- * @param learningPathId
112
- */
113
- export async function startLearningPath(brand: string, learningPathId: number) {
114
- const url: string = `${LEARNING_PATHS_PATH}/active-path/set`
115
- const body = { brand: brand, learning_path_id: learningPathId }
116
- return await fetchHandler(url, 'POST', null, body)
117
- }
118
-
119
- /**
120
- * Resets the user's learning path.
121
- */
122
- export async function resetAllLearningPaths() {
123
- const url: string = `${LEARNING_PATHS_PATH}/reset`
124
- return await fetchHandler(url, 'POST', null, {})
125
- }
126
-
127
- /**
128
- * Returns learning path with lessons and progress data
129
- * @param {number} learningPathId - The learning path ID
130
- * @returns {Promise&lt;Object>} Learning path with enriched lesson data
131
- */
132
- export async function getEnrichedLearningPath(learningPathId) {
133
- const response = (await addContextToContent(
134
- fetchByRailContentId,
135
- learningPathId,
136
- 'learning-path-v2',
137
- {
138
- collection: { id: learningPathId, type: 'learning-path-v2' },
139
- dataField: 'children',
140
- dataField_includeParent: true,
141
- addProgressStatus: true,
142
- addProgressPercentage: true,
143
- addProgressTimestamp: true,
144
- addNavigateTo: true,
145
- }
146
- )) as any
147
- if (!response) return response
148
-
149
- response.children = mapContentToParent(
150
- response.children,
151
- 'learning-path-lesson-v2',
152
- learningPathId
153
- )
154
- return response
155
- }
156
-
157
- /**
158
- * Get specific learning path lessons by content IDs
159
- * @param {number[]} contentIds - Array of content IDs to filter
160
- * @param {number} learningPathId - The learning path ID
161
- * @returns {Promise&lt;Array>} Filtered lessons
162
- */
163
- export async function getLearningPathLessonsByIds(contentIds, learningPathId) {
164
- // It is more efficient to load the entire learning path than individual lessons
165
- // Also adds reliability check whether content is actually in the learning path
166
- const learningPath = await getEnrichedLearningPath(learningPathId)
167
- return learningPath.children.filter((lesson) => contentIds.includes(lesson.id))
168
- }
169
-
170
- /**
171
- * Maps content to its parent learning path - fixes multi-parent problems for cta when lessons have a special collection.
172
- * @param lessons
173
- * @param parentContentType
174
- * @param parentContentId
175
- */
176
- export function mapContentToParent(lessons, parentContentType, parentContentId) {
177
- return lessons.map((lesson: any) => {
178
- return { ...lesson, type: parentContentType, parent_id: parentContentId }
179
- })
180
- }
181
-
182
- /** Fetches and organizes learning path lessons.
183
- *
184
- * @param {number} learningPathId - The learning path ID.
185
- * @param {string} brand
186
- * @param {Date} userDate - Users local date - format 2025-10-31
187
- * @returns {Promise&lt;Object>} result - The result object.
188
- * @returns {number} result.id - The learning path ID.
189
- * @returns {string} result.thumbnail - Optional thumbnail URL for the learning path.
190
- * @returns {string} result.title - The title of the learning path.
191
- * @returns {boolean} result.is_active_learning_path - Whether the learning path is currently active.
192
- * @returns {Array} result.children - Array of all lessons.
193
- * @returns {Array} result.upcoming_lessons - Array of upcoming/additional lessons.
194
- * @returns {Array} result.todays_lessons - Array of today's lessons (max 3).
195
- * @returns {Array} result.next_learning_path_lessons - Array of next lessons to be taken.
196
- * @returns {Array} result.completed_lessons - Array of completed lessons.
197
- * @returns {Array} result.previous_learning_path_todays - Array of completed lessons.
198
- */
199
- export async function fetchLearningPathLessons(
200
- learningPathId: number,
201
- brand: string,
202
- userDate: Date
203
- ) {
204
- const learningPath = await getEnrichedLearningPath(learningPathId)
205
- let dailySession = await getDailySession(brand, userDate)
206
- if (!dailySession) {
207
- dailySession = await updateDailySession(brand, userDate, false)
208
- }
209
-
210
- const isActiveLearningPath = (dailySession?.active_learning_path_id || 0) == learningPathId
211
- if (!isActiveLearningPath) {
212
- return {
213
- ...learningPath,
214
- is_active_learning_path: isActiveLearningPath,
215
- }
216
- }
217
- const todayContentIds = dailySession.daily_session[0]?.content_ids || []
218
- const previousLearningPathId = dailySession.daily_session[0]?.learning_path_id
219
- const nextContentIds = dailySession.daily_session[1]?.content_ids || []
220
- const nextLearningPathId = dailySession.daily_session[1]?.learning_path_id
221
- const completedLessons = []
222
- let todaysLessons = []
223
- let nextLPLessons = []
224
- let previousLearningPathTodays = []
225
- const upcomingLessons = []
226
-
227
- learningPath.children.forEach((lesson: any) => {
228
- if (todayContentIds.includes(lesson.id)) {
229
- todaysLessons.push(lesson)
230
- } else if (lesson.progressStatus === 'completed') {
231
- completedLessons.push(lesson)
232
- } else {
233
- upcomingLessons.push(lesson)
234
- }
235
- })
236
-
237
- if (todaysLessons.length == 0) {
238
- // Daily sessions first lessons are not part of the active learning path, but next lessons are
239
- // load todays lessons from previous learning path
240
- previousLearningPathTodays = await getLearningPathLessonsByIds(
241
- todayContentIds,
242
- previousLearningPathId
243
- )
244
- } else if (
245
- nextContentIds.length > 0 &amp;&amp;
246
- todaysLessons.length &lt; 3 &amp;&amp;
247
- upcomingLessons.length === 0
248
- ) {
249
- // Daily sessions first lessons are the active learning path and the next lessons are not
250
- // load next lessons from next learning path
251
- // TODO: update item status to locked when the current learning path is not complete
252
- nextLPLessons = await getLearningPathLessonsByIds(nextContentIds, nextLearningPathId)
253
- }
254
-
255
-
256
-
257
- return {
258
- ...learningPath,
259
- is_active_learning_path: isActiveLearningPath,
260
- active_learning_path_id: dailySession?.active_learning_path_id,
261
- active_learning_path_created_at: dailySession?.active_learning_path_created_at,
262
- upcoming_lessons: upcomingLessons,
263
- todays_lessons: todaysLessons,
264
- next_learning_path_lessons: nextLPLessons,
265
- next_learning_path_id: nextLearningPathId,
266
- completed_lessons: completedLessons,
267
- previous_learning_path_todays: previousLearningPathTodays,
268
- }
269
- }
270
-
271
- /**
272
- * For an array of contentIds, fetch any content progress with state=completed,
273
- * including other learning paths and a la carte progress.
274
- *
275
- * @param contentIds The array of content IDs within the learning path
276
- * @param learningPathId The learning path ID
277
- * @returns {Promise&lt;Object>} Response object
278
- * @returns {Array} result.lessons - Array of all learning path lesson contentIds.
279
- * @returns {Array} result.completed_lessons - Array of learning path lesson contentIds that are completed.
280
- * @returns {Array} result.lessons_count - Count of learning path lessons.
281
- * @returns {Array} result.completed_lessons_count - Count of learning path completed lessons.
282
- */
283
- export async function fetchLearningPathProgressCheckLessons(
284
- contentIds: number[],
285
- learningPathId: number
286
- ): Promise&lt;object> {
287
- let completedContentIds = await getAllCompletedByIds(contentIds, {
288
- id: learningPathId,
289
- type: 'learning-path-v2',
290
- })
291
- return {
292
- lessons: contentIds,
293
- completed_lessons: completedContentIds,
294
- lessons_count: contentIds.length,
295
- completed_lessons_count: completedContentIds.length,
296
- }
297
- }
298
-
299
- interface completeMethodIntroVideo {
300
- intro_video_response: Object | null,
301
- active_path_response: ActiveLearningPathResponse
302
- }
303
- /**
304
- * Handles completion of method intro video and other related actions.
305
- * @param introVideoId - The method intro video content ID.
306
- * @param brand
307
- * @returns {Promise&lt;Array>} response - The response object.
308
- * @returns {Promise&lt;Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
309
- * @returns {Promise&lt;Object>} response.active_path_response - The set active learning path response.
310
- */
311
- export async function completeMethodIntroVideo(introVideoId: number, brand: string): Promise&lt;completeMethodIntroVideo> {
312
- let response = {} as completeMethodIntroVideo
313
-
314
- response.intro_video_response = await completeIfNotCompleted(introVideoId)
315
-
316
- const methodStructure = await fetchMethodV2Structure(brand)
317
- const learningPathId = methodStructure.learningPaths[0].id
318
-
319
- response.active_path_response = await startLearningPath(brand, learningPathId)
320
-
321
-
322
- return response
323
- }
324
-
325
- interface completeLearningPathIntroVideo {
326
- intro_video_response: Object | null,
327
- learning_path_reset_response: void | null,
328
- lesson_import_response: Object[] | null
329
- }
330
- /**
331
- * Handles completion of learning path intro video and other related actions.
332
- * @param introVideoId - The learning path intro video content ID.
333
- * @param learningPathId - The content_id of the learning path that this learning path intro video belongs to.
334
- * @param lessonsToImport - content ids for all lessons with progress found during intro video progress check. empty if user chose not to keep learning path progress.
335
- * @returns {Promise&lt;Array>} response - The response object.
336
- * @returns {Promise&lt;Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
337
- * @returns {Promise&lt;void>} response.learning_path_reset_response - The reset learning path response.
338
- * @returns {Promise&lt;Object[]>} response.lesson_import_response - The responses for completing each content_id within the learning path.
339
- */
340
- export async function completeLearningPathIntroVideo(introVideoId: number, learningPathId: number, lessonsToImport: number[] | null) {
341
- let response = {} as completeLearningPathIntroVideo
342
-
343
- response.intro_video_response = await completeIfNotCompleted(introVideoId)
344
-
345
- const collection = { id: learningPathId, type: 'learning-path-v2' }
346
-
347
- if (!lessonsToImport) {
348
- // returns nothing now, but it will when watermelon comes 'round
349
- response.learning_path_reset_response = await contentStatusReset(learningPathId, collection)
350
-
351
- } else {
352
- response.lesson_import_response = {}
353
- for (const contentId of lessonsToImport) {
354
- response.lesson_import_response[contentId] = await contentStatusCompleted(contentId, collection)
355
- }
356
- }
357
-
358
- return response
359
- }
360
-
361
-
362
- async function completeIfNotCompleted(contentId: number): Promise&lt;Object | null> {
363
- const introVideoStatus = await getProgressState(contentId)
364
-
365
- return introVideoStatus !== 'completed' ? await contentStatusCompleted(contentId) : null
366
- }
367
- </code></pre>
368
- </article>
369
- </section>
370
-
371
-
372
-
373
-
374
-
375
-
376
- </div>
377
-
378
- <br class="clear">
379
-
380
- <footer>
381
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.3</a> on Fri Nov 28 2025 11:22:56 GMT-0800 (Pacific Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
382
- </footer>
383
-
384
- <script>prettyPrint();</script>
385
- <script src="scripts/polyfill.js"></script>
386
- <script src="scripts/linenumber.js"></script>
387
-
388
-
389
-
390
- </body>
391
- </html>