musora-content-services 2.84.0 → 2.85.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +14 -0
- package/.coderabbit.yaml +0 -0
- package/.editorconfig +0 -0
- package/.github/pull_request_template.md +0 -0
- package/.github/workflows/conventional-commits.yaml +0 -0
- package/.github/workflows/docs.js.yml +0 -0
- package/.github/workflows/node.js.yml +0 -0
- package/.prettierignore +0 -0
- package/.prettierrc +0 -0
- package/.yarnrc.yml +1 -0
- package/CHANGELOG.md +15 -0
- package/README.md +0 -0
- package/babel.config.cjs +0 -0
- package/docs/Content.html +0 -0
- package/docs/ContentOrganization.html +2 -2
- package/docs/Forums.html +2 -2
- package/docs/Gamification.html +2 -2
- package/docs/TestUser.html +2 -2
- package/docs/UserManagementSystem.html +2 -2
- package/docs/api_types.js.html +2 -2
- package/docs/config.js.html +2 -5
- package/docs/content-org_content-org.js.html +2 -2
- package/docs/content-org_guided-courses.ts.html +2 -2
- package/docs/content-org_learning-paths.ts.html +24 -126
- package/docs/content-org_playlists-types.js.html +2 -2
- package/docs/content-org_playlists.js.html +2 -2
- package/docs/content.js.html +10 -88
- package/docs/content_artist.ts.html +0 -0
- package/docs/content_content.ts.html +0 -0
- package/docs/content_genre.ts.html +0 -0
- package/docs/content_instructor.ts.html +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/forums_categories.ts.html +3 -22
- package/docs/forums_discussions.js.html +0 -0
- package/docs/forums_forum.js.html +0 -0
- package/docs/forums_forums.ts.html +2 -2
- package/docs/forums_posts.ts.html +2 -2
- package/docs/forums_threads.ts.html +2 -2
- package/docs/gamification_awards.js.html +0 -0
- package/docs/gamification_awards.ts.html +12 -26
- package/docs/gamification_gamification.js.html +2 -2
- package/docs/gamification_types.js.html +0 -0
- package/docs/global.html +2 -2
- package/docs/index.html +2 -2
- package/docs/liveTesting.ts.html +2 -2
- package/docs/module-Accounts.html +14 -14
- package/docs/module-Artist.html +0 -0
- package/docs/module-Awards.html +6 -106
- package/docs/module-Categories.html +0 -0
- package/docs/module-Config.html +4 -5
- package/docs/module-Content-Services-V2.html +9 -440
- package/docs/module-ForumCategories.html +0 -0
- package/docs/module-ForumDiscussions.html +0 -0
- package/docs/module-Forums.html +43 -607
- package/docs/module-Genre.html +0 -0
- package/docs/module-GuidedCourses.html +2 -2
- package/docs/module-Instructor.html +0 -0
- package/docs/module-Interests.html +2 -2
- package/docs/module-LearningPaths.html +12 -640
- package/docs/module-Onboarding.html +2 -2
- package/docs/module-Payments.html +2 -2
- package/docs/module-Permissions.html +2 -2
- package/docs/module-Playlists.html +2 -2
- package/docs/module-ProgressRow.html +2 -2
- package/docs/module-Railcontent-Services.html +298 -31
- package/docs/module-Sanity-Services.html +1901 -530
- package/docs/module-Sessions.html +2 -2
- package/docs/module-Threads.html +0 -0
- package/docs/module-UserActivity.html +5 -5
- package/docs/module-UserChat.html +2 -2
- package/docs/module-UserManagement.html +2 -2
- package/docs/module-UserMemberships.html +2 -2
- package/docs/module-UserNotifications.html +2 -2
- package/docs/module-UserProfile.html +2 -2
- package/docs/progress-row_method-card.js.html +3 -3
- package/docs/railcontent.js.html +20 -8
- package/docs/sanity.js.html +313 -199
- package/docs/scripts/collapse.js +0 -0
- package/docs/scripts/commonNav.js +0 -0
- package/docs/scripts/linenumber.js +0 -0
- package/docs/scripts/nav.js +0 -0
- package/docs/scripts/polyfill.js +0 -0
- package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
- package/docs/scripts/prettify/lang-css.js +0 -0
- package/docs/scripts/prettify/prettify.js +0 -0
- package/docs/scripts/search.js +0 -0
- package/docs/styles/jsdoc.css +0 -0
- package/docs/styles/prettify.css +0 -0
- package/docs/userActivity.js.html +5 -17
- package/docs/user_account.ts.html +13 -14
- package/docs/user_chat.js.html +2 -2
- package/docs/user_interests.js.html +2 -2
- package/docs/user_management.js.html +2 -2
- package/docs/user_memberships.js.html +0 -0
- package/docs/user_memberships.ts.html +2 -2
- package/docs/user_notifications.js.html +2 -2
- package/docs/user_onboarding.ts.html +2 -2
- package/docs/user_payments.ts.html +2 -2
- package/docs/user_permissions.js.html +3 -3
- package/docs/user_profile.js.html +2 -2
- package/docs/user_sessions.js.html +2 -2
- package/docs/user_types.js.html +2 -2
- package/docs/user_user-management-system.js.html +2 -2
- package/jest.config.js +0 -0
- package/jsdoc.json +0 -0
- package/package.json +1 -1
- package/src/contentMetaData.js +0 -0
- package/src/filterBuilder.js +0 -0
- package/src/index.d.ts +2 -2
- package/src/index.js +2 -2
- package/src/infrastructure/http/HttpClient.ts +0 -0
- package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
- package/src/infrastructure/http/index.ts +0 -0
- package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
- package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
- package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
- package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
- package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
- package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +0 -0
- package/src/lib/httpHelper.js +0 -0
- package/src/lib/lastUpdated.js +0 -0
- package/src/services/api/types.js +0 -0
- package/src/services/api/types.ts +0 -0
- package/src/services/config.js +0 -0
- package/src/services/content/artist.ts +0 -0
- package/src/services/content/content.ts +0 -0
- package/src/services/content/genre.ts +0 -0
- package/src/services/content/instructor.ts +0 -0
- package/src/services/content-org/content-org.js +0 -0
- package/src/services/content-org/guided-courses.ts +0 -0
- package/src/services/content-org/learning-paths.ts +0 -0
- package/src/services/content-org/playlists-types.js +0 -0
- package/src/services/content-org/playlists.js +0 -0
- package/src/services/content.js +0 -0
- package/src/services/contentAggregator.js +10 -23
- package/src/services/contentLikes.js +0 -0
- package/src/services/contentProgress.js +250 -147
- package/src/services/dataContext.js +0 -0
- package/src/services/dateUtils.js +0 -0
- package/src/services/eventsAPI.js +0 -0
- package/src/services/forums/categories.ts +0 -0
- package/src/services/forums/forums.ts +0 -0
- package/src/services/forums/posts.ts +0 -0
- package/src/services/forums/threads.ts +7 -7
- package/src/services/forums/types.ts +1 -0
- package/src/services/gamification/awards.ts +0 -0
- package/src/services/gamification/gamification.js +0 -0
- package/src/services/imageSRCBuilder.js +0 -0
- package/src/services/imageSRCVerify.js +0 -0
- package/src/services/liveTesting.ts +0 -0
- package/src/services/permissions/PermissionsAdapter.ts +0 -0
- package/src/services/permissions/PermissionsAdapterFactory.ts +0 -0
- package/src/services/permissions/PermissionsV1Adapter.ts +0 -0
- package/src/services/permissions/PermissionsV2Adapter.ts +0 -0
- package/src/services/permissions/README.md +0 -0
- package/src/services/permissions/index.ts +0 -0
- package/src/services/progress-row/method-card.js +0 -0
- package/src/services/railcontent.js +18 -6
- package/src/services/recommendations.js +0 -0
- package/src/services/sanity.js +18 -2
- package/src/services/types.js +0 -0
- package/src/services/user/account.ts +0 -0
- package/src/services/user/chat.js +0 -0
- package/src/services/user/interests.js +0 -0
- package/src/services/user/management.js +0 -0
- package/src/services/user/memberships.ts +0 -0
- package/src/services/user/notifications.js +0 -0
- package/src/services/user/onboarding.ts +0 -0
- package/src/services/user/payments.ts +0 -0
- package/src/services/user/permissions.js +0 -0
- package/src/services/user/profile.js +0 -0
- package/src/services/user/sessions.js +0 -0
- package/src/services/user/types.d.ts +0 -0
- package/src/services/user/types.js +0 -0
- package/src/services/user/user-management-system.js +0 -0
- package/src/services/userActivity.js +3 -14
- package/test/HttpClient.test.js +0 -0
- package/test/content.test.js +0 -0
- package/test/contentLikes.test.js +0 -0
- package/test/contentProgress.test.js +0 -0
- package/test/dataContext.test.js +0 -0
- package/test/forum.test.js +0 -0
- package/test/imageSRCBuilder.test.js +0 -0
- package/test/imageSRCVerify.test.js +0 -0
- package/test/initializeTests.js +0 -0
- package/test/learningPaths.test.js +0 -0
- package/test/lib/lastUpdated.test.js +0 -0
- package/test/live/contentProgressLive.test.js +0 -0
- package/test/live/railcontentLive.test.js +0 -0
- package/test/localStorageMock.js +0 -0
- package/test/log.js +0 -0
- package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
- package/test/mockData/mockData_progress_content.json +0 -0
- package/test/mockData/mockData_sanity_progress_content.json +0 -0
- package/test/mockData/mockData_user_practices.json +0 -0
- package/test/notifications.test.js +0 -0
- package/test/progressRows.test.js +0 -0
- package/test/sanityQueryService.test.js +0 -0
- package/test/streakMessage.test.js +0 -0
- package/test/user/permissions.test.js +0 -0
- package/test/userActivity.test.js +0 -0
- package/tools/generate-index.cjs +0 -0
|
@@ -52,9 +52,9 @@ export async function updateThread(
|
|
|
52
52
|
/**
|
|
53
53
|
* Follow a thread.
|
|
54
54
|
*
|
|
55
|
-
* @param {number} threadId - The ID of the thread to
|
|
55
|
+
* @param {number} threadId - The ID of the thread to follow.
|
|
56
56
|
* @param {string} brand - The brand associated with the follow action.
|
|
57
|
-
* @return {Promise<void>} - A promise that resolves when the thread is
|
|
57
|
+
* @return {Promise<void>} - A promise that resolves when the thread is followed.
|
|
58
58
|
* @throws {HttpError} - If the request fails.
|
|
59
59
|
*/
|
|
60
60
|
export async function followThread(threadId: number, brand: string): Promise<void> {
|
|
@@ -63,11 +63,11 @@ export async function followThread(threadId: number, brand: string): Promise<voi
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
|
-
*
|
|
66
|
+
* Unfollow a thread to allow further posts.
|
|
67
67
|
*
|
|
68
|
-
* @param {number} threadId - The ID of the thread to
|
|
69
|
-
* @param {string} brand - The brand associated with the
|
|
70
|
-
* @return {Promise<void>} - A promise that resolves when the thread is
|
|
68
|
+
* @param {number} threadId - The ID of the thread to unfollow.
|
|
69
|
+
* @param {string} brand - The brand associated with the unfollow action.
|
|
70
|
+
* @return {Promise<void>} - A promise that resolves when the thread is unfollowed.
|
|
71
71
|
* @throws {HttpError} - If the request fails.
|
|
72
72
|
*/
|
|
73
73
|
export async function unfollowThread(threadId: number, brand: string): Promise<void> {
|
|
@@ -154,7 +154,7 @@ export async function unpinThread(threadId: number, brand: string): Promise<void
|
|
|
154
154
|
*/
|
|
155
155
|
export async function lockThread(threadId: number, brand: string): Promise<void> {
|
|
156
156
|
const httpClient = new HttpClient(globalConfig.baseUrl)
|
|
157
|
-
return httpClient.post<void>(`${baseUrl}/v1/threads/${threadId}/
|
|
157
|
+
return httpClient.post<void>(`${baseUrl}/v1/threads/${threadId}/lock`, { brand })
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
/**
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -381,31 +381,43 @@ export async function fetchUserBadges(brand = null) {
|
|
|
381
381
|
/**
|
|
382
382
|
* complete a content's progress for a given user
|
|
383
383
|
* @param contentId
|
|
384
|
+
* @param collection {object|null} - the collection context of the progress. null is normal content progress
|
|
385
|
+
* @param collection.type - the type of collection. options: ["learning-path"]
|
|
386
|
+
* @param collection.id - the content_id of collection.
|
|
384
387
|
* @returns {Promise<any|string|null>}
|
|
385
388
|
*/
|
|
386
|
-
export async function postContentComplete(contentId) {
|
|
389
|
+
export async function postContentComplete(contentId, collection = null) {
|
|
387
390
|
let url = `/api/content/v1/user/progress/complete/${contentId}`
|
|
388
|
-
|
|
391
|
+
const body = {collection: collection}
|
|
392
|
+
return postDataHandler(url, body)
|
|
389
393
|
}
|
|
390
394
|
|
|
391
395
|
/**
|
|
392
396
|
* start the user's progress on a content
|
|
393
397
|
* @param contentId
|
|
398
|
+
* @param collection {object|null} - the collection context of the progress. null is normal content progress
|
|
399
|
+
* @param collection.type - the type of collection. options: ["learning-path"]
|
|
400
|
+
* @param collection.id - the content_id of collection.
|
|
394
401
|
* @returns {Promise<any|string|null>}
|
|
395
402
|
*/
|
|
396
|
-
export async function postContentStart(contentId) {
|
|
403
|
+
export async function postContentStart(contentId, collection = null) {
|
|
397
404
|
let url = `/api/content/v1/user/progress/start/${contentId}`
|
|
398
|
-
|
|
405
|
+
const body = {collection: collection}
|
|
406
|
+
return postDataHandler(url, body)
|
|
399
407
|
}
|
|
400
408
|
|
|
401
409
|
/**
|
|
402
410
|
* resets the user's progress on a content
|
|
403
411
|
* @param contentId
|
|
412
|
+
* @param collection {object|null} - the collection context of the progress. null is normal content progress
|
|
413
|
+
* @param collection.type - the type of collection. options: ["learning-path"]
|
|
414
|
+
* @param collection.id - the content_id of collection.
|
|
404
415
|
* @returns {Promise<any|string|null>}
|
|
405
416
|
*/
|
|
406
|
-
export async function postContentReset(contentId) {
|
|
417
|
+
export async function postContentReset(contentId, collection = null) {
|
|
407
418
|
let url = `/api/content/v1/user/progress/reset/${contentId}`
|
|
408
|
-
|
|
419
|
+
const body = {collection: collection}
|
|
420
|
+
return postDataHandler(url, body)
|
|
409
421
|
}
|
|
410
422
|
|
|
411
423
|
/**
|
|
File without changes
|
package/src/services/sanity.js
CHANGED
|
@@ -478,7 +478,6 @@ export async function fetchByRailContentIds(
|
|
|
478
478
|
live_event_end_time,
|
|
479
479
|
}`
|
|
480
480
|
|
|
481
|
-
console.log('ids query', query)
|
|
482
481
|
const customPostProcess = (results) => {
|
|
483
482
|
const now = getSanityDate(new Date(), false)
|
|
484
483
|
const liveProcess = (result) => {
|
|
@@ -2165,7 +2164,7 @@ export async function fetchMethodV2Structure(brand) {
|
|
|
2165
2164
|
const _type = 'method-v2'
|
|
2166
2165
|
const query = `*[_type == '${_type}' && brand == '${brand}'][0...1]{
|
|
2167
2166
|
'sanity_id': _id,
|
|
2168
|
-
'
|
|
2167
|
+
'learning_paths': child[]->{
|
|
2169
2168
|
'id': railcontent_id,
|
|
2170
2169
|
'children': child[]->railcontent_id
|
|
2171
2170
|
}
|
|
@@ -2173,6 +2172,23 @@ export async function fetchMethodV2Structure(brand) {
|
|
|
2173
2172
|
return await fetchSanity(query, false)
|
|
2174
2173
|
}
|
|
2175
2174
|
|
|
2175
|
+
/**
|
|
2176
|
+
* Fetch the structure (just ids) of the Method of a given learning path or learning path lesson.
|
|
2177
|
+
* @param contentId
|
|
2178
|
+
* @returns {Promise<*|null>}
|
|
2179
|
+
*/
|
|
2180
|
+
export async function fetchMethodV2StructureFromId(contentId) {
|
|
2181
|
+
const _type = "method-v2";
|
|
2182
|
+
const query = `*[_type == '${_type}' && brand == *[railcontent_id == ${contentId}][0].brand][0...1]{
|
|
2183
|
+
'sanity_id': _id,
|
|
2184
|
+
'learning_paths': child[]->{
|
|
2185
|
+
'id': railcontent_id,
|
|
2186
|
+
'children': child[]->railcontent_id
|
|
2187
|
+
}
|
|
2188
|
+
}`
|
|
2189
|
+
return await fetchSanity(query, false);
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2176
2192
|
/**
|
|
2177
2193
|
* Fetch content owned by the user (excluding membership content).
|
|
2178
2194
|
* Shows only content accessible through purchases/entitlements, not through membership.
|
package/src/services/types.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -986,7 +986,7 @@ async function extractPinnedItemsAndSortAllItems(
|
|
|
986
986
|
return mergeAndSortItems(combined, limit)
|
|
987
987
|
}
|
|
988
988
|
|
|
989
|
-
function generateContentsMap(contents, playlistsContents
|
|
989
|
+
function generateContentsMap(contents, playlistsContents) {
|
|
990
990
|
const excludedTypes = new Set(['pack-bundle', 'guided-course-part'])
|
|
991
991
|
const existingShows = new Set()
|
|
992
992
|
const contentsMap = new Map()
|
|
@@ -1027,15 +1027,6 @@ function generateContentsMap(contents, playlistsContents, methodProgressContents
|
|
|
1027
1027
|
parentIds.forEach((id) => contentsMap.delete(id))
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
|
-
//TODO:: remove method cards from progress rows
|
|
1031
|
-
// if (methodProgressContents && Object.keys(methodProgressContents).length) {
|
|
1032
|
-
// for (const item of methodProgressContents) {
|
|
1033
|
-
// const contentId = item.id
|
|
1034
|
-
// contentsMap.delete(contentId)
|
|
1035
|
-
// const parentIds = item.parent_content_data || []
|
|
1036
|
-
// parentIds.forEach((id) => contentsMap.delete(id))
|
|
1037
|
-
// }
|
|
1038
|
-
// }
|
|
1039
1030
|
|
|
1040
1031
|
return contentsMap
|
|
1041
1032
|
}
|
|
@@ -1075,23 +1066,21 @@ export async function getProgressRows({ brand = 'drumeo', limit = 8 } = {}) {
|
|
|
1075
1066
|
}
|
|
1076
1067
|
//need to update addContextToContent to accept collection info
|
|
1077
1068
|
const [playlistsContents, contents] = await Promise.all([
|
|
1078
|
-
playlistEngagedOnContents
|
|
1069
|
+
(playlistEngagedOnContents.length > 0)
|
|
1079
1070
|
? addContextToContent(fetchByRailContentIds, playlistEngagedOnContents, 'progress-tracker', {
|
|
1080
|
-
addNextLesson: true,
|
|
1081
1071
|
addNavigateTo: true,
|
|
1082
1072
|
addProgressStatus: true,
|
|
1083
1073
|
addProgressPercentage: true,
|
|
1084
1074
|
addProgressTimestamp: true,
|
|
1085
1075
|
})
|
|
1086
1076
|
: Promise.resolve([]),
|
|
1087
|
-
nonPlaylistContentIds
|
|
1077
|
+
(nonPlaylistContentIds.length > 0)
|
|
1088
1078
|
? addContextToContent(
|
|
1089
1079
|
fetchByRailContentIds,
|
|
1090
1080
|
nonPlaylistContentIds,
|
|
1091
1081
|
'progress-tracker',
|
|
1092
1082
|
brand,
|
|
1093
1083
|
{
|
|
1094
|
-
addNextLesson: true,
|
|
1095
1084
|
addNavigateTo: true,
|
|
1096
1085
|
addProgressStatus: true,
|
|
1097
1086
|
addProgressPercentage: true,
|
package/test/HttpClient.test.js
CHANGED
|
File without changes
|
package/test/content.test.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/test/dataContext.test.js
CHANGED
|
File without changes
|
package/test/forum.test.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/test/initializeTests.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/test/localStorageMock.js
CHANGED
|
File without changes
|
package/test/log.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/tools/generate-index.cjs
CHANGED
|
File without changes
|