musora-content-services 2.85.1 → 2.86.0
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/.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/CHANGELOG.md +12 -0
- package/README.md +0 -0
- package/babel.config.cjs +0 -0
- package/docs/Content.html +0 -0
- package/docs/ContentOrganization.html +0 -0
- package/docs/Forums.html +0 -0
- package/docs/Gamification.html +0 -0
- package/docs/TestUser.html +0 -0
- package/docs/UserManagementSystem.html +0 -0
- package/docs/api_types.js.html +0 -0
- package/docs/config.js.html +0 -0
- package/docs/content-org_content-org.js.html +0 -0
- package/docs/content-org_guided-courses.ts.html +0 -0
- package/docs/content-org_learning-paths.ts.html +0 -0
- package/docs/content-org_playlists-types.js.html +0 -0
- package/docs/content-org_playlists.js.html +0 -0
- package/docs/content.js.html +0 -0
- 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 +0 -0
- package/docs/forums_discussions.js.html +0 -0
- package/docs/forums_forum.js.html +0 -0
- package/docs/forums_forums.ts.html +0 -0
- package/docs/forums_posts.ts.html +0 -0
- package/docs/forums_threads.ts.html +0 -0
- package/docs/gamification_awards.js.html +0 -0
- package/docs/gamification_awards.ts.html +0 -0
- package/docs/gamification_gamification.js.html +0 -0
- package/docs/gamification_types.js.html +0 -0
- package/docs/global.html +0 -0
- package/docs/index.html +0 -0
- package/docs/liveTesting.ts.html +0 -0
- package/docs/module-Accounts.html +0 -0
- package/docs/module-Artist.html +0 -0
- package/docs/module-Awards.html +0 -0
- package/docs/module-Categories.html +0 -0
- package/docs/module-Config.html +0 -0
- package/docs/module-Content-Services-V2.html +0 -0
- package/docs/module-ForumCategories.html +0 -0
- package/docs/module-ForumDiscussions.html +0 -0
- package/docs/module-Forums.html +0 -0
- package/docs/module-Genre.html +0 -0
- package/docs/module-GuidedCourses.html +0 -0
- package/docs/module-Instructor.html +0 -0
- package/docs/module-Interests.html +0 -0
- package/docs/module-LearningPaths.html +0 -0
- package/docs/module-Onboarding.html +0 -0
- package/docs/module-Payments.html +0 -0
- package/docs/module-Permissions.html +0 -0
- package/docs/module-Playlists.html +0 -0
- package/docs/module-ProgressRow.html +0 -0
- package/docs/module-Railcontent-Services.html +0 -0
- package/docs/module-Sanity-Services.html +0 -0
- package/docs/module-Sessions.html +0 -0
- package/docs/module-Threads.html +0 -0
- package/docs/module-UserActivity.html +0 -0
- package/docs/module-UserChat.html +0 -0
- package/docs/module-UserManagement.html +0 -0
- package/docs/module-UserMemberships.html +0 -0
- package/docs/module-UserNotifications.html +0 -0
- package/docs/module-UserProfile.html +0 -0
- package/docs/progress-row_method-card.js.html +0 -0
- package/docs/railcontent.js.html +0 -0
- package/docs/sanity.js.html +0 -0
- 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 +0 -0
- package/docs/user_account.ts.html +0 -0
- package/docs/user_chat.js.html +0 -0
- package/docs/user_interests.js.html +0 -0
- package/docs/user_management.js.html +0 -0
- package/docs/user_memberships.js.html +0 -0
- package/docs/user_memberships.ts.html +0 -0
- package/docs/user_notifications.js.html +0 -0
- package/docs/user_onboarding.ts.html +0 -0
- package/docs/user_payments.ts.html +0 -0
- package/docs/user_permissions.js.html +0 -0
- package/docs/user_profile.js.html +0 -0
- package/docs/user_sessions.js.html +0 -0
- package/docs/user_types.js.html +0 -0
- package/docs/user_user-management-system.js.html +0 -0
- 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 +0 -0
- package/src/index.js +0 -0
- 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 +4 -4
- 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 +5 -1
- package/src/services/contentLikes.js +0 -0
- package/src/services/contentProgress.js +6 -6
- 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 +0 -0
- package/src/services/forums/types.ts +0 -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 +0 -0
- package/src/services/recommendations.js +0 -0
- package/src/services/sanity.js +18 -19
- 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 +1 -1
- 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
- package/.claude/settings.local.json +0 -14
- package/.yarnrc.yml +0 -1
package/.coderabbit.yaml
CHANGED
|
File without changes
|
package/.editorconfig
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/.prettierignore
CHANGED
|
File without changes
|
package/.prettierrc
CHANGED
|
File without changes
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [2.86.0](https://github.com/railroadmedia/musora-content-services/compare/v2.85.1...v2.86.0) (2025-11-25)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **BEH-1266:** Update fetchHierarchy to use parent_content_data ([#586](https://github.com/railroadmedia/musora-content-services/issues/586)) ([4d44fea](https://github.com/railroadmedia/musora-content-services/commit/4d44fea55c5094fd35bbac98f282a996d455be03))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* content aggregator and fetch learnig path ([#587](https://github.com/railroadmedia/musora-content-services/issues/587)) ([f8af202](https://github.com/railroadmedia/musora-content-services/commit/f8af2024f147680b60b66e440c164cfd6ff0922b))
|
|
16
|
+
|
|
5
17
|
### [2.85.1](https://github.com/railroadmedia/musora-content-services/compare/v2.85.0...v2.85.1) (2025-11-24)
|
|
6
18
|
|
|
7
19
|
|
package/README.md
CHANGED
|
File without changes
|
package/babel.config.cjs
CHANGED
|
File without changes
|
package/docs/Content.html
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/Forums.html
CHANGED
|
File without changes
|
package/docs/Gamification.html
CHANGED
|
File without changes
|
package/docs/TestUser.html
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/api_types.js.html
CHANGED
|
File without changes
|
package/docs/config.js.html
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/content.js.html
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/global.html
CHANGED
|
File without changes
|
package/docs/index.html
CHANGED
|
File without changes
|
package/docs/liveTesting.ts.html
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/module-Artist.html
CHANGED
|
File without changes
|
package/docs/module-Awards.html
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/module-Config.html
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/module-Forums.html
CHANGED
|
File without changes
|
package/docs/module-Genre.html
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
|
package/docs/module-Threads.html
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
|
package/docs/railcontent.js.html
CHANGED
|
File without changes
|
package/docs/sanity.js.html
CHANGED
|
File without changes
|
package/docs/scripts/collapse.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/scripts/nav.js
CHANGED
|
File without changes
|
package/docs/scripts/polyfill.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/scripts/search.js
CHANGED
|
File without changes
|
package/docs/styles/jsdoc.css
CHANGED
|
File without changes
|
package/docs/styles/prettify.css
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/user_chat.js.html
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/docs/user_types.js.html
CHANGED
|
File without changes
|
|
File without changes
|
package/jest.config.js
CHANGED
|
File without changes
|
package/jsdoc.json
CHANGED
|
File without changes
|
package/package.json
CHANGED
package/src/contentMetaData.js
CHANGED
|
File without changes
|
package/src/filterBuilder.js
CHANGED
|
File without changes
|
package/src/index.d.ts
CHANGED
|
File without changes
|
package/src/index.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
|
package/src/lib/httpHelper.js
CHANGED
|
File without changes
|
package/src/lib/lastUpdated.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/services/config.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -101,22 +101,22 @@ export async function resetAllLearningPaths() {
|
|
|
101
101
|
* @returns {Promise<Object>} Learning path with enriched lesson data
|
|
102
102
|
*/
|
|
103
103
|
export async function getEnrichedLearningPath(learningPathId) {
|
|
104
|
-
// TODO: replace addNextLesson with addNaviageTo
|
|
105
104
|
const response = (await addContextToContent(
|
|
106
105
|
fetchByRailContentId,
|
|
107
106
|
learningPathId,
|
|
108
107
|
'learning-path-v2',
|
|
109
108
|
{
|
|
109
|
+
collection: { id: learningPathId, type: 'learning-path-v2' },
|
|
110
110
|
dataField: 'children',
|
|
111
111
|
dataField_includeParent: true,
|
|
112
112
|
addProgressStatus: true,
|
|
113
113
|
addProgressPercentage: true,
|
|
114
114
|
addProgressTimestamp: true,
|
|
115
|
-
|
|
115
|
+
addNavigateTo: true,
|
|
116
116
|
}
|
|
117
117
|
)) as any
|
|
118
118
|
if (!response) return response
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
response.children = mapContentToParent(
|
|
121
121
|
response.children,
|
|
122
122
|
'learning-path-lesson-v2',
|
|
@@ -222,7 +222,7 @@ export async function fetchLearningPathLessons(
|
|
|
222
222
|
nextLPLessons = await getLearningPathLessonsByIds(nextContentIds, nextLearningPathId)
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
|
|
227
227
|
return {
|
|
228
228
|
...learningPath,
|
|
File without changes
|
|
File without changes
|
package/src/services/content.js
CHANGED
|
File without changes
|
|
@@ -173,7 +173,11 @@ function extractItemsFromData(data, dataField, isParentArray, includeParent) {
|
|
|
173
173
|
if (includeParent) {
|
|
174
174
|
if (isParentArray) {
|
|
175
175
|
for (const parent of data) {
|
|
176
|
-
|
|
176
|
+
if(Array.isArray(parent)){
|
|
177
|
+
items = [...items, ...parent]
|
|
178
|
+
} else {
|
|
179
|
+
items = [...items, parent]
|
|
180
|
+
}
|
|
177
181
|
}
|
|
178
182
|
} else {
|
|
179
183
|
items = [...items, data]
|
|
File without changes
|
|
@@ -410,7 +410,7 @@ function setStartedOrCompletedStatusInLocalContext(
|
|
|
410
410
|
|
|
411
411
|
if (!hierarchy) return
|
|
412
412
|
|
|
413
|
-
if (collection && collection.type === 'learning-path') {
|
|
413
|
+
if (collection && collection.type === 'learning-path-v2') {
|
|
414
414
|
bubbleOrTrickleLearningPathProgress(hierarchy, contentId, localContext, isCompleted, collection)
|
|
415
415
|
return
|
|
416
416
|
}
|
|
@@ -453,7 +453,7 @@ function resetStatusInLocalContext(localContext, contentId, hierarchy, collectio
|
|
|
453
453
|
let allChildIds
|
|
454
454
|
let learningPathId = null
|
|
455
455
|
let childrenIds = []
|
|
456
|
-
if (collection && collection.type === 'learning-path') {
|
|
456
|
+
if (collection && collection.type === 'learning-path-v2') {
|
|
457
457
|
[learningPathId, childrenIds] = findLearningPathAndChildren(hierarchy, contentId)
|
|
458
458
|
allChildIds = (learningPathId === contentId) ? childrenIds : []
|
|
459
459
|
} else {
|
|
@@ -471,7 +471,7 @@ function resetStatusInLocalContext(localContext, contentId, hierarchy, collectio
|
|
|
471
471
|
delete localContext.data[key]
|
|
472
472
|
}
|
|
473
473
|
})
|
|
474
|
-
if (collection && collection.type === 'learning-path') { // manual bubbling for LP
|
|
474
|
+
if (collection && collection.type === 'learning-path-v2') { // manual bubbling for LP
|
|
475
475
|
if (learningPathId !== contentId) {
|
|
476
476
|
bubbleLearningPathProgress(hierarchy, contentId, localContext, collection)
|
|
477
477
|
}
|
|
@@ -492,7 +492,7 @@ function resetStatusInLocalContext(localContext, contentId, hierarchy, collectio
|
|
|
492
492
|
* @param {string} sessionId - This function records a sessionId to pass into future updates to progress on the same video
|
|
493
493
|
* @param {int} instrumentId - enum value of instrument id
|
|
494
494
|
* @param {int} categoryId - enum value of category id
|
|
495
|
-
* @param {object|null} collection - optional collection info { type: 'learning-path', id: 123 }
|
|
495
|
+
* @param {object|null} collection - optional collection info { type: 'learning-path-v2', id: 123 }
|
|
496
496
|
*/
|
|
497
497
|
// NOTE: have not set up collection because its not super important for testing and this will change soon with watermelon
|
|
498
498
|
export async function recordWatchSession(
|
|
@@ -507,7 +507,7 @@ export async function recordWatchSession(
|
|
|
507
507
|
categoryId = null,
|
|
508
508
|
collection = null
|
|
509
509
|
) {
|
|
510
|
-
if (collection && collection.type === 'learning-path') {
|
|
510
|
+
if (collection && collection.type === 'learning-path-v2') {
|
|
511
511
|
console.log('Learning Path lesson watch sessions are not set up yet without watermelon')
|
|
512
512
|
return sessionId
|
|
513
513
|
}
|
|
@@ -640,7 +640,7 @@ function extractContentIdFromRecordKey(key) {
|
|
|
640
640
|
}
|
|
641
641
|
|
|
642
642
|
async function getContentHierarchy(contentId, collection = null) {
|
|
643
|
-
if (collection && collection.type === 'learning-path') {
|
|
643
|
+
if (collection && collection.type === 'learning-path-v2') {
|
|
644
644
|
return fetchMethodV2StructureFromId(contentId)
|
|
645
645
|
}
|
|
646
646
|
return await fetchHierarchy(contentId)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/services/sanity.js
CHANGED
|
@@ -1480,35 +1480,34 @@ export async function fetchByReference(
|
|
|
1480
1480
|
return fetchSanity(query, true)
|
|
1481
1481
|
}
|
|
1482
1482
|
|
|
1483
|
+
/**
|
|
1484
|
+
*
|
|
1485
|
+
* Return the top level parent content railcontent_id.
|
|
1486
|
+
* Ignores learning-path-v2 parents.
|
|
1487
|
+
* ex: if railcontentId is of type 'skill-pack-lesson', return the corresponding 'skill-pack' railcontent_id
|
|
1488
|
+
*
|
|
1489
|
+
* @param {int} railcontentId
|
|
1490
|
+
* @returns {Promise<int|null>}
|
|
1491
|
+
*/
|
|
1483
1492
|
export async function fetchTopLevelParentId(railcontentId) {
|
|
1493
|
+
const parentFilter = "railcontent_id in [...(^.parent_content_data[].id)]"
|
|
1484
1494
|
const statusFilter = "&& status in ['scheduled', 'published', 'archived', 'unlisted']"
|
|
1485
1495
|
|
|
1486
1496
|
const query = `*[railcontent_id == ${railcontentId}]{
|
|
1487
1497
|
railcontent_id,
|
|
1488
|
-
'parents': *[
|
|
1489
|
-
railcontent_id
|
|
1490
|
-
'parents': *[^._id in child[]._ref ${statusFilter}]{
|
|
1491
|
-
railcontent_id,
|
|
1492
|
-
'parents': *[^._id in child[]._ref ${statusFilter}]{
|
|
1493
|
-
railcontent_id,
|
|
1494
|
-
'parents': *[^._id in child[]._ref ${statusFilter}]{
|
|
1495
|
-
railcontent_id,
|
|
1496
|
-
}
|
|
1497
|
-
}
|
|
1498
|
-
}
|
|
1498
|
+
'parents': *[${parentFilter} ${statusFilter}]{
|
|
1499
|
+
railcontent_id
|
|
1499
1500
|
}
|
|
1500
1501
|
}`
|
|
1501
1502
|
let response = await fetchSanity(query, false, { processNeedAccess: false })
|
|
1502
1503
|
if (!response) return null
|
|
1503
|
-
let
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
return currentLevel['railcontent_id']
|
|
1509
|
-
}
|
|
1504
|
+
let parents = response['parents']
|
|
1505
|
+
let parentsLength = parents ? response['parents'].length : 0
|
|
1506
|
+
if (parentsLength > 0) {
|
|
1507
|
+
// return the last parent
|
|
1508
|
+
return parents[parentsLength - 1]['railcontent_id']
|
|
1510
1509
|
}
|
|
1511
|
-
return
|
|
1510
|
+
return response['railcontent_id']
|
|
1512
1511
|
}
|
|
1513
1512
|
|
|
1514
1513
|
export async function fetchHierarchy(railcontentId) {
|
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
|
|
@@ -1347,7 +1347,7 @@ function mergeAndSortItems(items, limit) {
|
|
|
1347
1347
|
|
|
1348
1348
|
export function findIncompleteLesson(progressOnItems, currentContentId, contentType) {
|
|
1349
1349
|
const ids = Object.keys(progressOnItems).map(Number)
|
|
1350
|
-
if (contentType === 'guided-course' || contentType === 'learning-path') {
|
|
1350
|
+
if (contentType === 'guided-course' || contentType === 'learning-path-v2') {
|
|
1351
1351
|
// Return first incomplete lesson
|
|
1352
1352
|
return ids.find((id) => progressOnItems[id] !== 'completed') || ids.at(0)
|
|
1353
1353
|
}
|
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
|
package/.yarnrc.yml
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
nodeLinker: node-modules
|