musora-content-services 2.79.0 → 2.79.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 +3 -9
- 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 +7 -0
- package/README.md +0 -0
- package/babel.config.cjs +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 -2
- 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 +106 -13
- package/docs/content-org_playlists-types.js.html +2 -2
- package/docs/content-org_playlists.js.html +2 -2
- package/docs/content.js.html +2 -2
- 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 +2 -2
- 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 +22 -3
- package/docs/forums_threads.ts.html +16 -3
- package/docs/gamification_awards.js.html +0 -0
- package/docs/gamification_awards.ts.html +2 -2
- 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 +10 -10
- package/docs/module-Awards.html +2 -2
- package/docs/module-Categories.html +0 -0
- package/docs/module-Config.html +2 -2
- package/docs/module-Content-Services-V2.html +2 -2
- package/docs/module-ForumCategories.html +0 -0
- package/docs/module-ForumDiscussions.html +0 -0
- package/docs/module-Forums.html +731 -89
- package/docs/module-GuidedCourses.html +2 -2
- package/docs/module-Interests.html +2 -2
- package/docs/module-LearningPaths.html +640 -12
- 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 +2 -2
- package/docs/module-Sanity-Services.html +29 -29
- package/docs/module-Sessions.html +2 -2
- package/docs/module-Threads.html +0 -0
- package/docs/module-UserActivity.html +2 -2
- 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 +8 -7
- package/docs/railcontent.js.html +2 -2
- package/docs/sanity.js.html +5 -3
- 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 +2 -2
- package/docs/user_account.ts.html +5 -11
- 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 +2 -2
- 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 +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-org/content-org.js +0 -0
- package/src/services/content-org/guided-courses.ts +0 -0
- package/src/services/content-org/learning-paths.ts +35 -21
- 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/contentLikes.js +0 -0
- package/src/services/contentProgress.js +0 -0
- 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/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/progress-row/method-card.js +0 -0
- package/src/services/railcontent.js +0 -0
- package/src/services/recommendations.js +0 -0
- package/src/services/types.js +0 -0
- package/src/services/user/account.ts +3 -9
- 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.js +0 -0
- package/src/services/user/user-management-system.js +0 -0
- package/src/services/userActivity.js +0 -0
- 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/.yarnrc.yml +0 -1
|
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
|
|
@@ -101,21 +101,28 @@ 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
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
// TODO: replace addNextLesson with addNaviageTo
|
|
105
|
+
const response = (await addContextToContent(
|
|
106
|
+
fetchByRailContentId,
|
|
107
|
+
learningPathId,
|
|
108
|
+
'learning-path-v2',
|
|
109
|
+
{
|
|
110
|
+
dataField: 'children',
|
|
111
|
+
dataField_includeParent: true,
|
|
112
|
+
addProgressStatus: true,
|
|
113
|
+
addProgressPercentage: true,
|
|
114
|
+
addProgressTimestamp: true,
|
|
115
|
+
addNextLesson: true,
|
|
116
|
+
}
|
|
117
|
+
)) as any
|
|
118
|
+
if (!response) return response
|
|
119
|
+
|
|
120
|
+
response.children = mapContentToParent(
|
|
121
|
+
response.children,
|
|
108
122
|
'learning-path-lesson-v2',
|
|
109
123
|
learningPathId
|
|
110
124
|
)
|
|
111
|
-
|
|
112
|
-
learningPath.children = await addContextToContent(() => learningPath.children, {
|
|
113
|
-
addProgressStatus: true,
|
|
114
|
-
addProgressPercentage: true,
|
|
115
|
-
addProgressTimestamp: true,
|
|
116
|
-
})
|
|
117
|
-
learningPath = await addContextToContent(() => learningPath, { addNextLesson: true })
|
|
118
|
-
return learningPath
|
|
125
|
+
return response
|
|
119
126
|
}
|
|
120
127
|
|
|
121
128
|
/**
|
|
@@ -234,7 +241,7 @@ interface completeMethodIntroVideo {
|
|
|
234
241
|
}
|
|
235
242
|
/**
|
|
236
243
|
* Handles completion of method intro video and other related actions.
|
|
237
|
-
* @param introVideoId - The intro video content ID.
|
|
244
|
+
* @param introVideoId - The method intro video content ID.
|
|
238
245
|
* @param brand
|
|
239
246
|
* @returns {Promise<Array>} response - The response object.
|
|
240
247
|
* @returns {Promise<Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
|
|
@@ -245,8 +252,11 @@ export async function completeMethodIntroVideo(introVideoId: number, brand: stri
|
|
|
245
252
|
|
|
246
253
|
response.intro_video_response = await completeIfNotCompleted(introVideoId)
|
|
247
254
|
|
|
255
|
+
const methodStructure = await fetchMethodV2Structure(brand)
|
|
256
|
+
const learningPathId = methodStructure.learningPaths[0].id
|
|
257
|
+
|
|
248
258
|
const url: string = `${LEARNING_PATHS_PATH}/start`
|
|
249
|
-
const body = { brand: brand }
|
|
259
|
+
const body = { learning_path_id: learningPathId, brand: brand }
|
|
250
260
|
response.active_path_response = await fetchHandler(url, 'POST', null, body)
|
|
251
261
|
|
|
252
262
|
return response
|
|
@@ -254,13 +264,18 @@ export async function completeMethodIntroVideo(introVideoId: number, brand: stri
|
|
|
254
264
|
|
|
255
265
|
interface completeLearningPathIntroVideo {
|
|
256
266
|
intro_video_response: Object | null,
|
|
257
|
-
learning_path_reset_response: void |
|
|
267
|
+
learning_path_reset_response: void | null,
|
|
268
|
+
lesson_import_response: Object[] | null
|
|
258
269
|
}
|
|
259
270
|
/**
|
|
260
271
|
* Handles completion of learning path intro video and other related actions.
|
|
261
|
-
* @param introVideoId
|
|
262
|
-
* @param learningPathId
|
|
263
|
-
* @param lessonsToImport
|
|
272
|
+
* @param introVideoId - The learning path intro video content ID.
|
|
273
|
+
* @param learningPathId - The content_id of the learning path that this learning path intro video belongs to.
|
|
274
|
+
* @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.
|
|
275
|
+
* @returns {Promise<Array>} response - The response object.
|
|
276
|
+
* @returns {Promise<Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
|
|
277
|
+
* @returns {Promise<void>} response.learning_path_reset_response - The reset learning path response.
|
|
278
|
+
* @returns {Promise<Object[]>} response.lesson_import_response - The responses for completing each content_id within the learning path.
|
|
264
279
|
*/
|
|
265
280
|
export async function completeLearningPathIntroVideo(introVideoId: number, learningPathId: number, lessonsToImport: number[] | null) {
|
|
266
281
|
let response = {} as completeLearningPathIntroVideo
|
|
@@ -268,14 +283,13 @@ export async function completeLearningPathIntroVideo(introVideoId: number, learn
|
|
|
268
283
|
response.intro_video_response = await completeIfNotCompleted(introVideoId)
|
|
269
284
|
|
|
270
285
|
if (!lessonsToImport) {
|
|
271
|
-
//
|
|
286
|
+
// returns nothing now, but it will when watermelon comes 'round
|
|
272
287
|
response.learning_path_reset_response = await contentStatusReset(learningPathId)
|
|
273
288
|
} else {
|
|
274
|
-
response.learning_path_reset_response = null
|
|
275
289
|
|
|
276
290
|
// todo: add collection context + optimize with bulk calls with watermelon
|
|
277
291
|
for (const contentId of lessonsToImport) {
|
|
278
|
-
response.
|
|
292
|
+
response.lesson_import_response[contentId] = await contentStatusCompleted(contentId)
|
|
279
293
|
}
|
|
280
294
|
}
|
|
281
295
|
|
|
File without changes
|
|
File without changes
|
package/src/services/content.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/services/types.js
CHANGED
|
File without changes
|
|
@@ -39,6 +39,7 @@ export interface AccountSetupProps {
|
|
|
39
39
|
token?: string
|
|
40
40
|
revenuecatAppUserId?: string
|
|
41
41
|
deviceName?: string
|
|
42
|
+
from?: string
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
/**
|
|
@@ -56,23 +57,16 @@ export interface AccountSetupProps {
|
|
|
56
57
|
*/
|
|
57
58
|
export async function setupAccount(props: AccountSetupProps): Promise<void> {
|
|
58
59
|
const httpClient = new HttpClient(globalConfig.baseUrl)
|
|
59
|
-
if (!globalConfig.isMA && !props.token) {
|
|
60
|
+
if ((!globalConfig.isMA || props.from === 'mobile-ios-app') && !props.token) {
|
|
60
61
|
throw new Error('Token is required for non-MA environments')
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
// NOTE: remove deviceName temporarily. It will be required late
|
|
64
|
-
// if (globalConfig.isMA && (!props.deviceName || !props.revenuecatAppUserId)) {
|
|
65
|
-
if (globalConfig.isMA && !props.revenuecatAppUserId) {
|
|
66
|
-
throw new Error('Device name and RevenueCat App User ID are required for MA environments')
|
|
67
|
-
}
|
|
68
|
-
|
|
69
64
|
return httpClient.post(`/api/user-management-system/v1/accounts`, {
|
|
70
65
|
email: props.email,
|
|
71
66
|
password: props.password,
|
|
72
67
|
password_confirmation: props.passwordConfirmation,
|
|
73
68
|
token: props.token,
|
|
74
|
-
|
|
75
|
-
device_name: props.deviceName,
|
|
69
|
+
from: props.from,
|
|
76
70
|
})
|
|
77
71
|
}
|
|
78
72
|
|
|
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/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
|