musora-content-services 2.70.0 → 2.70.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.
- 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 +18 -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 +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 +8 -8
- 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 +2 -2
- package/docs/forums_threads.ts.html +2 -2
- 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 +2 -2
- 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 +9 -9
- package/docs/module-ForumCategories.html +0 -0
- package/docs/module-ForumDiscussions.html +0 -0
- package/docs/module-Forums.html +2 -2
- package/docs/module-GuidedCourses.html +2 -2
- package/docs/module-Interests.html +2 -2
- package/docs/module-Onboarding.html +193 -5
- package/docs/module-Payments.html +148 -6
- 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 +45 -45
- 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/railcontent.js.html +2 -2
- package/docs/sanity.js.html +24 -13
- 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 +3 -3
- 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 +53 -2
- package/docs/user_payments.ts.html +54 -5
- 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/package.json +1 -1
- package/src/contentTypeConfig.js +4 -15
- package/src/filterBuilder.js +0 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -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 +0 -0
- package/src/services/content-org/playlists-types.js +0 -0
- package/src/services/content-org/playlists.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/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 +2 -1
- 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 +1 -1
- 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 +51 -0
- package/src/services/user/payments.ts +52 -3
- 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/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
|
@@ -14,6 +14,12 @@ export interface OnboardingSteps {
|
|
|
14
14
|
goals?: string[]
|
|
15
15
|
practice_frequency?: string
|
|
16
16
|
enable_notifications?: boolean
|
|
17
|
+
recommendation?:
|
|
18
|
+
| {
|
|
19
|
+
accepted: true
|
|
20
|
+
content_id: number
|
|
21
|
+
}
|
|
22
|
+
| { accepted: false }
|
|
17
23
|
}
|
|
18
24
|
|
|
19
25
|
export interface StartOnboardingParams {
|
|
@@ -109,3 +115,48 @@ export async function userOnboardingForBrand(brand: string): Promise<Onboarding>
|
|
|
109
115
|
`/api/user-management-system/v1/users/${globalConfig.sessionConfig.userId}/onboardings/brand/${encodeURIComponent(brand)}`
|
|
110
116
|
)
|
|
111
117
|
}
|
|
118
|
+
|
|
119
|
+
export interface OnboardingRecommendedContent {
|
|
120
|
+
id: number
|
|
121
|
+
title: string
|
|
122
|
+
difficulty: string
|
|
123
|
+
lesson_count: number
|
|
124
|
+
skill_count: number
|
|
125
|
+
badge: string
|
|
126
|
+
description: string
|
|
127
|
+
video: {
|
|
128
|
+
external_id: string
|
|
129
|
+
hlsManifestUrl: string
|
|
130
|
+
type: string
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Fetches recommended content for onboarding based on the specified brand.
|
|
136
|
+
*
|
|
137
|
+
* @param {string} brand - The brand identifier.
|
|
138
|
+
* @returns {Promise<OnboardingRecommendedContent>} - A promise that resolves with the recommended content.
|
|
139
|
+
* @throws {HttpError} - If the HTTP request fails.
|
|
140
|
+
*/
|
|
141
|
+
export async function getOnboardingRecommendedContent(
|
|
142
|
+
brand: string
|
|
143
|
+
): Promise<OnboardingRecommendedContent> {
|
|
144
|
+
// TODO: Replace with real API call when available
|
|
145
|
+
return {
|
|
146
|
+
id: 412405,
|
|
147
|
+
title: 'Getting Started On The Piano',
|
|
148
|
+
difficulty: 'Beginner',
|
|
149
|
+
lesson_count: 4,
|
|
150
|
+
skill_count: 3,
|
|
151
|
+
badge:
|
|
152
|
+
'https://cdn.sanity.io/files/4032r8py/staging/9470587f03479b7c1f8019c3cbcbdfe12aa267f3.png',
|
|
153
|
+
description:
|
|
154
|
+
'The goal of this course is to introduce you to the keys, and get you playing a song as fast as possible. ',
|
|
155
|
+
video: {
|
|
156
|
+
external_id: '1001267395',
|
|
157
|
+
hlsManifestUrl:
|
|
158
|
+
'https://player.vimeo.com/external/1001267395.m3u8?s=8f8d8a8a762f688058e6e6fd6704c402baf1b797&oauth2_token_id=1284792283',
|
|
159
|
+
type: 'vimeo-video',
|
|
160
|
+
},
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -13,13 +13,62 @@ interface CustomerOrder {
|
|
|
13
13
|
status_url: string
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
interface PaginationMeta {
|
|
17
|
+
hasNextPage: boolean
|
|
18
|
+
hasPreviousPage: boolean
|
|
19
|
+
startCursor: string | null
|
|
20
|
+
endCursor: string | null
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface CustomerOrdersResponse {
|
|
24
|
+
data: CustomerOrder[]
|
|
25
|
+
meta: {
|
|
26
|
+
pagination: PaginationMeta
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface FetchCustomerPaymentsOptions {
|
|
31
|
+
perPage?: number
|
|
32
|
+
cursor?: string | null
|
|
33
|
+
}
|
|
34
|
+
|
|
16
35
|
/**
|
|
17
36
|
* Fetches a list of orders (from Shopify) for the authenticated user (customer).
|
|
18
37
|
*
|
|
19
|
-
* @
|
|
38
|
+
* @param {FetchCustomerPaymentsOptions} options - Pagination options
|
|
39
|
+
* @param {number} options.perPage - Number of orders per page (1-100, default: 40)
|
|
40
|
+
* @param {string|null} options.cursor - Cursor for pagination
|
|
41
|
+
* @returns {Promise<CustomerOrdersResponse>} - A promise that resolves to customer orders with pagination metadata
|
|
20
42
|
* @throws {HttpError} - Throws HttpError if the request fails.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Fetch first page with default page size (40)
|
|
46
|
+
* const response = await fetchCustomerPayments()
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* // Fetch first page with custom page size
|
|
50
|
+
* const response = await fetchCustomerPayments({ perPage: 20 })
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* // Fetch next page using cursor from previous response
|
|
54
|
+
* const response = await fetchCustomerPayments({
|
|
55
|
+
* perPage: 20,
|
|
56
|
+
* cursor: previousResponse.meta.pagination.endCursor
|
|
57
|
+
* })
|
|
21
58
|
*/
|
|
22
|
-
export async function fetchCustomerPayments(
|
|
59
|
+
export async function fetchCustomerPayments(
|
|
60
|
+
options: FetchCustomerPaymentsOptions = {}
|
|
61
|
+
): Promise<CustomerOrdersResponse> {
|
|
23
62
|
const client = new HttpClient(globalConfig.baseUrl, globalConfig.sessionConfig.authToken)
|
|
24
|
-
|
|
63
|
+
const params = new URLSearchParams()
|
|
64
|
+
if (options.perPage) {
|
|
65
|
+
params.append('per_page', options.perPage.toString())
|
|
66
|
+
}
|
|
67
|
+
if (options.cursor) {
|
|
68
|
+
params.append('cursor', options.cursor)
|
|
69
|
+
}
|
|
70
|
+
const queryString = params.toString()
|
|
71
|
+
const url = queryString ? `/api/customer/orders/v1?${queryString}` : '/api/customer/orders/v1'
|
|
72
|
+
|
|
73
|
+
return await client.get<CustomerOrdersResponse>(url)
|
|
25
74
|
}
|
|
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
|
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
|