musora-content-services 1.6.9 → 1.7.2

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 (190) hide show
  1. package/.github/workflows/conventional-commits.yaml +0 -0
  2. package/.github/workflows/docs.js.yml +0 -0
  3. package/.github/workflows/node.js.yml +0 -0
  4. package/.github/workflows/sync-docs.yml +0 -0
  5. package/.prettierignore +0 -0
  6. package/.prettierrc +0 -0
  7. package/CHANGELOG.md +16 -0
  8. package/README.md +0 -0
  9. package/babel.config.cjs +0 -0
  10. package/docs/algolia.js.html +0 -0
  11. package/docs/config.js.html +0 -0
  12. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  13. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  14. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  15. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  16. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  17. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  18. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  19. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  20. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  21. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
  22. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  23. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  24. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  25. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  26. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
  27. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  28. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  29. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  30. package/docs/index.html +0 -0
  31. package/docs/module-Config.html +0 -0
  32. package/docs/module-Railcontent-Services.html +0 -0
  33. package/docs/module-Sanity-Services.html +0 -0
  34. package/docs/module-Search-Engine-Services.html +0 -0
  35. package/docs/railcontent.js.html +0 -0
  36. package/docs/sanity.js.html +0 -0
  37. package/docs/scripts/collapse.js +0 -0
  38. package/docs/scripts/commonNav.js +0 -0
  39. package/docs/scripts/linenumber.js +0 -0
  40. package/docs/scripts/nav.js +0 -0
  41. package/docs/scripts/polyfill.js +0 -0
  42. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
  43. package/docs/scripts/prettify/lang-css.js +0 -0
  44. package/docs/scripts/prettify/prettify.js +0 -0
  45. package/docs/scripts/search.js +0 -0
  46. package/docs/styles/jsdoc.css +0 -0
  47. package/docs/styles/prettify.css +0 -0
  48. package/docs/v2/Content.html +269 -0
  49. package/docs/v2/ContentOrganization.html +2 -2
  50. package/docs/v2/Forums.html +2 -2
  51. package/docs/v2/Gamification.html +2 -2
  52. package/docs/v2/TestUser.html +3 -3
  53. package/docs/v2/UserManagementSystem.html +2 -2
  54. package/docs/v2/api_types.js.html +2 -2
  55. package/docs/v2/config.js.html +5 -2
  56. package/docs/v2/content-org_content-org.js.html +2 -2
  57. package/docs/v2/content-org_guided-courses.ts.html +2 -2
  58. package/docs/v2/content-org_learning-paths.ts.html +286 -18
  59. package/docs/v2/content-org_playlists-types.js.html +2 -2
  60. package/docs/v2/content-org_playlists.js.html +2 -2
  61. package/docs/v2/content.js.html +94 -16
  62. package/docs/v2/content_artist.ts.html +206 -0
  63. package/docs/v2/content_content.ts.html +77 -0
  64. package/docs/v2/content_genre.ts.html +209 -0
  65. package/docs/v2/content_instructor.ts.html +206 -0
  66. package/docs/v2/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  67. package/docs/v2/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  68. package/docs/v2/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  69. package/docs/v2/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  70. package/docs/v2/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  71. package/docs/v2/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  72. package/docs/v2/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  73. package/docs/v2/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  74. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  75. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
  76. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  77. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  78. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  79. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  80. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
  81. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  82. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  83. package/docs/v2/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  84. package/docs/v2/forums_categories.ts.html +22 -3
  85. package/docs/v2/forums_discussions.js.html +0 -0
  86. package/docs/v2/forums_forum.js.html +0 -0
  87. package/docs/v2/forums_forums.ts.html +41 -41
  88. package/docs/v2/forums_posts.ts.html +54 -28
  89. package/docs/v2/forums_threads.ts.html +23 -10
  90. package/docs/v2/gamification_awards.js.html +0 -0
  91. package/docs/v2/gamification_awards.ts.html +26 -12
  92. package/docs/v2/gamification_gamification.js.html +2 -2
  93. package/docs/v2/gamification_types.js.html +0 -0
  94. package/docs/v2/global.html +57 -9
  95. package/docs/v2/index.html +2 -2
  96. package/docs/v2/liveTesting.ts.html +4 -3
  97. package/docs/v2/module-Accounts.html +202 -13
  98. package/docs/v2/module-Artist.html +993 -0
  99. package/docs/v2/module-Awards.html +106 -6
  100. package/docs/v2/module-Categories.html +0 -0
  101. package/docs/v2/module-Config.html +5 -4
  102. package/docs/v2/module-Content-Services-V2.html +440 -9
  103. package/docs/v2/module-ForumCategories.html +0 -0
  104. package/docs/v2/module-ForumDiscussions.html +0 -0
  105. package/docs/v2/module-Forums.html +1398 -192
  106. package/docs/v2/module-Genre.html +981 -0
  107. package/docs/v2/module-GuidedCourses.html +2 -1198
  108. package/docs/v2/module-Instructor.html +929 -0
  109. package/docs/v2/module-Interests.html +2 -2
  110. package/docs/v2/module-LearningPaths.html +2424 -0
  111. package/docs/v2/module-Onboarding.html +217 -5
  112. package/docs/v2/module-Payments.html +148 -6
  113. package/docs/v2/module-Permissions.html +2 -2
  114. package/docs/v2/module-Playlists.html +2 -2
  115. package/docs/v2/module-ProgressRow.html +108 -0
  116. package/docs/v2/module-Railcontent-Services.html +34 -626
  117. package/docs/v2/module-Sanity-Services.html +803 -1722
  118. package/docs/v2/module-Sessions.html +2 -2
  119. package/docs/v2/module-Threads.html +0 -0
  120. package/docs/v2/module-UserActivity.html +70 -116
  121. package/docs/v2/module-UserChat.html +2 -2
  122. package/docs/v2/module-UserManagement.html +2 -2
  123. package/docs/v2/module-UserMemberships.html +2 -2
  124. package/docs/v2/module-UserNotifications.html +2 -2
  125. package/docs/v2/module-UserProfile.html +2 -2
  126. package/docs/v2/progress-row_method-card.js.html +184 -0
  127. package/docs/v2/railcontent.js.html +14 -125
  128. package/docs/v2/sanity.js.html +261 -325
  129. package/docs/v2/scripts/collapse.js +0 -0
  130. package/docs/v2/scripts/commonNav.js +0 -0
  131. package/docs/v2/scripts/linenumber.js +0 -0
  132. package/docs/v2/scripts/nav.js +0 -0
  133. package/docs/v2/scripts/polyfill.js +0 -0
  134. package/docs/v2/scripts/prettify/Apache-License-2.0.txt +0 -0
  135. package/docs/v2/scripts/prettify/lang-css.js +0 -0
  136. package/docs/v2/scripts/prettify/prettify.js +0 -0
  137. package/docs/v2/scripts/search.js +0 -0
  138. package/docs/v2/styles/jsdoc.css +0 -0
  139. package/docs/v2/styles/prettify.css +0 -0
  140. package/docs/v2/userActivity.js.html +191 -211
  141. package/docs/v2/user_account.ts.html +42 -14
  142. package/docs/v2/user_chat.js.html +2 -2
  143. package/docs/v2/user_interests.js.html +2 -2
  144. package/docs/v2/user_management.js.html +2 -2
  145. package/docs/v2/user_memberships.js.html +0 -0
  146. package/docs/v2/user_memberships.ts.html +2 -2
  147. package/docs/v2/user_notifications.js.html +2 -2
  148. package/docs/v2/user_onboarding.ts.html +148 -2
  149. package/docs/v2/user_payments.ts.html +54 -5
  150. package/docs/v2/user_permissions.js.html +3 -3
  151. package/docs/v2/user_profile.js.html +2 -2
  152. package/docs/v2/user_sessions.js.html +2 -2
  153. package/docs/v2/user_types.js.html +4 -2
  154. package/docs/v2/user_user-management-system.js.html +2 -2
  155. package/jest.config.js +0 -0
  156. package/jsdoc.json +0 -0
  157. package/link_mcs.sh +0 -0
  158. package/package.json +1 -1
  159. package/src/contentMetaData.js +0 -0
  160. package/src/contentTypeConfig.js +2 -0
  161. package/src/filterBuilder.js +3 -1
  162. package/src/index.d.ts +0 -0
  163. package/src/index.js +0 -0
  164. package/src/services/algolia.js +0 -0
  165. package/src/services/config.js +0 -0
  166. package/src/services/contentLikes.js +0 -0
  167. package/src/services/contentProgress.js +0 -0
  168. package/src/services/dataContext.js +0 -0
  169. package/src/services/imageSRCBuilder.js +0 -0
  170. package/src/services/imageSRCVerify.js +0 -0
  171. package/src/services/lastUpdated.js +0 -0
  172. package/src/services/railcontent.js +0 -0
  173. package/src/services/recommendations.js +0 -0
  174. package/src/services/sanity.js +15 -6
  175. package/src/services/userPermissions.js +0 -0
  176. package/test/config.test.js +0 -0
  177. package/test/contentLikes.test.js +0 -0
  178. package/test/contentProgress.test.js +0 -0
  179. package/test/dataContext.test.js +0 -0
  180. package/test/imageSRCBuilder.test.js +0 -0
  181. package/test/imageSRCVerify.test.js +0 -0
  182. package/test/initializeTests.js +0 -0
  183. package/test/lastUpdated.test.js +0 -0
  184. package/test/live/contentProgressLive.test.js +0 -0
  185. package/test/live/railcontentLive.test.js +0 -0
  186. package/test/localStorageMock.js +0 -0
  187. package/test/log.js +0 -0
  188. package/test/sanityQueryService.test.js +0 -0
  189. package/test/userPermissions.test.js +0 -0
  190. package/tools/generate-index.cjs +0 -0
@@ -29,7 +29,7 @@
29
29
  <nav >
30
30
 
31
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></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#.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#~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#~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-GuidedCourses.html">GuidedCourses</a><ul class='methods'><li data-type='method'><a href="module-GuidedCourses.html#~getActivePath">getActivePath</a></li><li data-type='method'><a href="module-GuidedCourses.html#~getDailySession">getDailySession</a></li><li data-type='method'><a href="module-GuidedCourses.html#~updateActivePath">updateActivePath</a></li><li data-type='method'><a href="module-GuidedCourses.html#~updateDailySession">updateDailySession</a></li></ul></li><li></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-Onboarding.html">Onboarding</a><ul class='methods'><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-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#.postContentComplete">postContentComplete</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.postContentReset">postContentReset</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.postContentRestore">postContentRestore</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.postContentStart">postContentStart</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#.fetchArtistLessons">fetchArtistLessons</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchArtists">fetchArtists</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#.fetchCoachLessons">fetchCoachLessons</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#.fetchGenreLessons">fetchGenreLessons</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#.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#.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#.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>
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
33
 
34
34
  </nav>
35
35
 
@@ -45,12 +45,28 @@
45
45
 
46
46
  <section>
47
47
  <article>
48
- <pre class="prettyprint source linenums"><code>import { fetchHandler } from '../railcontent.js'
49
-
50
- /**
51
- * @module GuidedCourses
48
+ <pre class="prettyprint source linenums"><code>/**
49
+ * @module LearningPaths
52
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
+
53
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
+ }
54
70
 
55
71
  /**
56
72
  * Gets today's daily session for the user.
@@ -59,9 +75,8 @@ const BASE_PATH: string = `/api/content-org`
59
75
  */
60
76
  export async function getDailySession(brand: string, userDate: Date) {
61
77
  const stringDate = userDate.toISOString().split('T')[0]
62
- const url: string = `${BASE_PATH}/v1/user/learning-paths/daily-session/get-or-create`
63
- const body = { brand: brand, userDate: stringDate }
64
- return await fetchHandler(url, 'POST', null, body)
78
+ const url: string = `${LEARNING_PATHS_PATH}/daily-session/get?brand=${brand}&amp;userDate=${stringDate}`
79
+ return await fetchHandler(url, 'GET', null, null)
65
80
  }
66
81
 
67
82
  /**
@@ -70,9 +85,13 @@ export async function getDailySession(brand: string, userDate: Date) {
70
85
  * @param userDate - format 2025-10-31
71
86
  * @param keepFirstLearningPath
72
87
  */
73
- export async function updateDailySession(brand: string, userDate: Date, keepFirstLearningPath: boolean) {
88
+ export async function updateDailySession(
89
+ brand: string,
90
+ userDate: Date,
91
+ keepFirstLearningPath: boolean
92
+ ) {
74
93
  const stringDate = userDate.toISOString().split('T')[0]
75
- const url: string = `${BASE_PATH}/v1/user/learning-paths/daily-session/update`
94
+ const url: string = `${LEARNING_PATHS_PATH}/daily-session/create`
76
95
  const body = { brand: brand, userDate: stringDate, keepFirstLearningPath: keepFirstLearningPath }
77
96
  return await fetchHandler(url, 'POST', null, body)
78
97
  }
@@ -82,20 +101,269 @@ export async function updateDailySession(brand: string, userDate: Date, keepFirs
82
101
  * @param brand
83
102
  */
84
103
  export async function getActivePath(brand: string) {
85
- const url: string = `${BASE_PATH}/v1/user/learning-paths/active-path/get-or-create`
86
- const body = { brand: brand }
87
- return await fetchHandler(url, 'POST', null, body)
104
+ const url: string = `${LEARNING_PATHS_PATH}/active-path/get?brand=${brand}`
105
+ return await fetchHandler(url, 'GET', null, null)
88
106
  }
89
107
 
90
108
  /**
91
- * Updates user's active learning path.
109
+ * Sets a new learning path as the user's active learning path.
92
110
  * @param brand
111
+ * @param learningPathId
93
112
  */
94
- export async function updateActivePath(brand: string) {
95
- const url: string = `${BASE_PATH}/v1/user/learning-paths/active-path/update`
96
- const body = { brand: brand }
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 }
97
116
  return await fetchHandler(url, 'POST', null, body)
98
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
+ }
99
367
  </code></pre>
100
368
  </article>
101
369
  </section>
@@ -110,7 +378,7 @@ export async function updateActivePath(brand: string) {
110
378
  <br class="clear">
111
379
 
112
380
  <footer>
113
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.3</a> on Tue Nov 04 2025 18:21:55 GMT+0000 (Coordinated Universal Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
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.
114
382
  </footer>
115
383
 
116
384
  <script>prettyPrint();</script>