musora-content-services 2.39.4 → 2.40.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/.yarnrc.yml +1 -0
- package/CHANGELOG.md +25 -0
- package/README.md +0 -0
- package/babel.config.cjs +0 -0
- package/docs/ContentOrganization.html +2 -2
- package/docs/Forums.html +28 -4
- package/docs/Gamification.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_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 +26 -3
- package/docs/forums_discussions.js.html +0 -0
- package/docs/forums_forum.js.html +0 -0
- package/docs/forums_forums.ts.html +4 -3
- package/docs/forums_threads.ts.html +102 -0
- 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/module-Accounts.html +2 -2
- package/docs/module-Awards.html +2 -2
- package/docs/module-Categories.html +679 -0
- package/docs/module-Config.html +2 -2
- package/docs/module-Content-Services-V2.html +2 -2
- package/docs/module-ForumCategories.html +198 -2
- package/docs/module-ForumDiscussions.html +0 -0
- package/docs/module-Forums.html +0 -0
- package/docs/module-GuidedCourses.html +2 -2
- package/docs/module-Interests.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-Railcontent-Services.html +2 -2
- package/docs/module-Sanity-Services.html +2 -2
- package/docs/module-Sessions.html +3 -3
- package/docs/module-Threads.html +300 -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 +152 -2
- package/docs/module-UserNotifications.html +2 -2
- package/docs/module-UserProfile.html +2 -2
- package/docs/railcontent.js.html +2 -2
- package/docs/sanity.js.html +2 -2
- 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 +2 -2
- 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 +24 -2
- package/docs/user_notifications.js.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 +3 -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 +11 -2
- package/src/index.js +11 -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-org/content-org.js +0 -0
- package/src/services/content-org/guided-courses.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 +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/forum.js +0 -0
- package/src/services/forums/categories.ts +24 -1
- package/src/services/forums/forums.ts +2 -1
- package/src/services/forums/threads.ts +30 -0
- package/src/services/forums/types.ts +13 -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/railcontent.js +0 -0
- package/src/services/recommendations.js +0 -0
- 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.js +22 -0
- package/src/services/user/notifications.js +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 +11 -19
- 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/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
|
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
|
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
|
package/src/services/forum.js
CHANGED
|
File without changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module Categories
|
|
3
3
|
*/
|
|
4
4
|
import { HttpClient } from '../../infrastructure/http/HttpClient'
|
|
5
5
|
import { globalConfig } from '../config.js'
|
|
@@ -40,3 +40,26 @@ export async function createForumCategory(
|
|
|
40
40
|
const httpClient = new HttpClient(globalConfig.baseUrl)
|
|
41
41
|
return httpClient.post<ForumCategory>(`${baseUrl}/v1/categories`, params)
|
|
42
42
|
}
|
|
43
|
+
|
|
44
|
+
export interface UpdateForumCategoryParams {
|
|
45
|
+
id: number
|
|
46
|
+
brand: number
|
|
47
|
+
name: string
|
|
48
|
+
weight: number
|
|
49
|
+
description?: string
|
|
50
|
+
icon?: string
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Creates a new forum category.
|
|
55
|
+
*
|
|
56
|
+
* @param {UpdateForumCategoryParams} params - The parameters for creating the forum category.
|
|
57
|
+
* @returns {Promise<ForumCategory>} - A promise that resolves to the created forum category.
|
|
58
|
+
* @throws {HttpError} - If the request fails.
|
|
59
|
+
*/
|
|
60
|
+
export async function updateForumCategory(
|
|
61
|
+
params: UpdateForumCategoryParams
|
|
62
|
+
): Promise<ForumCategory> {
|
|
63
|
+
const httpClient = new HttpClient(globalConfig.baseUrl)
|
|
64
|
+
return httpClient.put<ForumCategory>(`${baseUrl}/v1/categories/${params.id}`, params)
|
|
65
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Threads
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from '../../infrastructure/http/HttpClient'
|
|
5
|
+
import { globalConfig } from '../config.js'
|
|
6
|
+
import { ForumThread } from './types'
|
|
7
|
+
|
|
8
|
+
const baseUrl = `/api/forums`
|
|
9
|
+
|
|
10
|
+
export interface CreateThreadParams {
|
|
11
|
+
name: string
|
|
12
|
+
description: string
|
|
13
|
+
weight: number
|
|
14
|
+
brand: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new thread under a forum category.
|
|
19
|
+
*
|
|
20
|
+
* @param {CreateThreadParams} params - The parameters for creating the thread.
|
|
21
|
+
* @returns {Promise<ForumThread>} - A promise that resolves to the created thread.
|
|
22
|
+
* @throws {HttpError} - If the request fails.
|
|
23
|
+
*/
|
|
24
|
+
export async function createThread(
|
|
25
|
+
categoryId: number,
|
|
26
|
+
params: CreateThreadParams
|
|
27
|
+
): Promise<ForumThread> {
|
|
28
|
+
const httpClient = new HttpClient(globalConfig.baseUrl)
|
|
29
|
+
return httpClient.post<ForumThread>(`${baseUrl}/v1/categories/${categoryId}/threads`, params)
|
|
30
|
+
}
|
|
@@ -12,6 +12,19 @@ export interface ForumPost {
|
|
|
12
12
|
author: ForumUser | null
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
export interface ForumThread {
|
|
16
|
+
id: number
|
|
17
|
+
slug: string
|
|
18
|
+
title: string
|
|
19
|
+
locked: boolean
|
|
20
|
+
pinned: boolean
|
|
21
|
+
state: string
|
|
22
|
+
author: ForumUser | null
|
|
23
|
+
category_id: number
|
|
24
|
+
post_count: number
|
|
25
|
+
last_post: ForumPost | null
|
|
26
|
+
}
|
|
27
|
+
|
|
15
28
|
export interface ForumCategory {
|
|
16
29
|
id: number
|
|
17
30
|
brand: string
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -44,6 +44,28 @@ export async function fetchRechargeTokens() {
|
|
|
44
44
|
return fetchHandler(url, 'get')
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Upgrades the user's subscription or provides a prefilled add-to-cart URL.
|
|
49
|
+
*
|
|
50
|
+
* @returns {Promise<Object>} A promise that resolves to an object containing either:
|
|
51
|
+
* - {string} action - The action performed (e.g., 'instant_upgrade').
|
|
52
|
+
* - {string} message - Success message if the subscription was upgraded immediately.
|
|
53
|
+
* OR
|
|
54
|
+
* - {string} action - The action performed (e.g., 'shopify').
|
|
55
|
+
* - {string} url - URL to the ecommerce store with prefilled add-to-cart parameters.
|
|
56
|
+
*
|
|
57
|
+
* @throws {Error} Throws an error if the request fails.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* upgradeSubscription()
|
|
61
|
+
* .then(response => console.log(response))
|
|
62
|
+
* .catch(error => console.error(error));
|
|
63
|
+
*/
|
|
64
|
+
export async function upgradeSubscription() {
|
|
65
|
+
const url = `${baseUrl}/v1/update-subscription`
|
|
66
|
+
return fetchHandler(url, 'get')
|
|
67
|
+
}
|
|
68
|
+
|
|
47
69
|
|
|
48
70
|
|
|
49
71
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -12,28 +12,20 @@ import './types.js'
|
|
|
12
12
|
const excludeFromGeneratedIndex = []
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Authenticates the User.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* @param {string} email - User's email
|
|
18
|
+
* @param {string} password - User's password
|
|
19
|
+
* @param {string|null} deviceName - Device name for the user
|
|
20
|
+
* @param {string|null} deviceToken - Firebase token for the device
|
|
21
|
+
* @param {string|null} platform - Device platform
|
|
19
22
|
*
|
|
20
|
-
* @
|
|
21
|
-
* @param {string} password - The user's account password.
|
|
22
|
-
* @param {string|null} [deviceName] - A human-readable identifier for the device (e.g. "iPhone 15").
|
|
23
|
-
* @param {string|null} [deviceToken] - Optional Firebase Cloud Messaging token for push notifications.
|
|
24
|
-
* @param {string|null} [platform] - The device platform (e.g. "ios", "android", "web").
|
|
25
|
-
*
|
|
26
|
-
* @returns {Promise<Response>} - The raw `fetch` Response object.
|
|
27
|
-
* Call `response.json()` to access the API payload, which typically includes:
|
|
28
|
-
* - `token` (string): Access token.
|
|
29
|
-
* - `refresh_token` (string): Refresh token.
|
|
30
|
-
* - `user` (object): Authenticated user data.
|
|
23
|
+
* @returns {Promise<AuthResponse>} - User data and authentication token
|
|
31
24
|
*
|
|
32
25
|
* @example
|
|
33
|
-
* login('john@doe.com', 'music123'
|
|
34
|
-
* .then(
|
|
35
|
-
* .
|
|
36
|
-
* .catch(err => console.error(err));
|
|
26
|
+
* login('john@doe.com', 'music123')
|
|
27
|
+
* .then(content => console.log(content))
|
|
28
|
+
* .catch(error => console.error(error));
|
|
37
29
|
*/
|
|
38
30
|
export async function login(email, password, deviceName, deviceToken, platform) {
|
|
39
31
|
const baseUrl = `${globalConfig.baseUrl}/api/user-management-system`
|
|
@@ -59,7 +51,7 @@ export async function loginWithProvider(provider, providerIdToken, deviceToken,
|
|
|
59
51
|
|
|
60
52
|
try {
|
|
61
53
|
const response = await fetch(`${baseUrl}/v1/auth/${provider}/mobile`, {
|
|
62
|
-
method: '
|
|
54
|
+
method: 'POST',
|
|
63
55
|
headers: {
|
|
64
56
|
'Content-Type': 'application/json',
|
|
65
57
|
'X-Client-Platform': 'mobile',
|
|
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
|
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
|