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.
Files changed (190) hide show
  1. package/.coderabbit.yaml +0 -0
  2. package/.editorconfig +0 -0
  3. package/.github/pull_request_template.md +0 -0
  4. package/.github/workflows/conventional-commits.yaml +0 -0
  5. package/.github/workflows/docs.js.yml +0 -0
  6. package/.github/workflows/node.js.yml +0 -0
  7. package/.prettierignore +0 -0
  8. package/.prettierrc +0 -0
  9. package/CHANGELOG.md +18 -0
  10. package/README.md +0 -0
  11. package/babel.config.cjs +0 -0
  12. package/docs/ContentOrganization.html +2 -2
  13. package/docs/Forums.html +2 -2
  14. package/docs/Gamification.html +2 -2
  15. package/docs/TestUser.html +2 -2
  16. package/docs/UserManagementSystem.html +2 -2
  17. package/docs/api_types.js.html +2 -2
  18. package/docs/config.js.html +2 -2
  19. package/docs/content-org_content-org.js.html +2 -2
  20. package/docs/content-org_guided-courses.ts.html +2 -2
  21. package/docs/content-org_learning-paths.ts.html +2 -2
  22. package/docs/content-org_playlists-types.js.html +2 -2
  23. package/docs/content-org_playlists.js.html +2 -2
  24. package/docs/content.js.html +8 -8
  25. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  26. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  27. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  28. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  29. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  30. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  31. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  32. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  33. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  34. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
  35. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  36. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  37. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  38. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  39. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
  40. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  41. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  42. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  43. package/docs/forums_categories.ts.html +2 -2
  44. package/docs/forums_discussions.js.html +0 -0
  45. package/docs/forums_forum.js.html +0 -0
  46. package/docs/forums_forums.ts.html +2 -2
  47. package/docs/forums_posts.ts.html +2 -2
  48. package/docs/forums_threads.ts.html +2 -2
  49. package/docs/gamification_awards.js.html +0 -0
  50. package/docs/gamification_awards.ts.html +2 -2
  51. package/docs/gamification_gamification.js.html +2 -2
  52. package/docs/gamification_types.js.html +0 -0
  53. package/docs/global.html +2 -2
  54. package/docs/index.html +2 -2
  55. package/docs/liveTesting.ts.html +2 -2
  56. package/docs/module-Accounts.html +2 -2
  57. package/docs/module-Awards.html +2 -2
  58. package/docs/module-Categories.html +0 -0
  59. package/docs/module-Config.html +2 -2
  60. package/docs/module-Content-Services-V2.html +9 -9
  61. package/docs/module-ForumCategories.html +0 -0
  62. package/docs/module-ForumDiscussions.html +0 -0
  63. package/docs/module-Forums.html +2 -2
  64. package/docs/module-GuidedCourses.html +2 -2
  65. package/docs/module-Interests.html +2 -2
  66. package/docs/module-Onboarding.html +193 -5
  67. package/docs/module-Payments.html +148 -6
  68. package/docs/module-Permissions.html +2 -2
  69. package/docs/module-Playlists.html +2 -2
  70. package/docs/module-Railcontent-Services.html +2 -2
  71. package/docs/module-Sanity-Services.html +45 -45
  72. package/docs/module-Sessions.html +2 -2
  73. package/docs/module-Threads.html +0 -0
  74. package/docs/module-UserActivity.html +2 -2
  75. package/docs/module-UserChat.html +2 -2
  76. package/docs/module-UserManagement.html +2 -2
  77. package/docs/module-UserMemberships.html +2 -2
  78. package/docs/module-UserNotifications.html +2 -2
  79. package/docs/module-UserProfile.html +2 -2
  80. package/docs/railcontent.js.html +2 -2
  81. package/docs/sanity.js.html +24 -13
  82. package/docs/scripts/collapse.js +0 -0
  83. package/docs/scripts/commonNav.js +0 -0
  84. package/docs/scripts/linenumber.js +0 -0
  85. package/docs/scripts/nav.js +0 -0
  86. package/docs/scripts/polyfill.js +0 -0
  87. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
  88. package/docs/scripts/prettify/lang-css.js +0 -0
  89. package/docs/scripts/prettify/prettify.js +0 -0
  90. package/docs/scripts/search.js +0 -0
  91. package/docs/styles/jsdoc.css +0 -0
  92. package/docs/styles/prettify.css +0 -0
  93. package/docs/userActivity.js.html +2 -2
  94. package/docs/user_account.ts.html +3 -3
  95. package/docs/user_chat.js.html +2 -2
  96. package/docs/user_interests.js.html +2 -2
  97. package/docs/user_management.js.html +2 -2
  98. package/docs/user_memberships.js.html +0 -0
  99. package/docs/user_memberships.ts.html +2 -2
  100. package/docs/user_notifications.js.html +2 -2
  101. package/docs/user_onboarding.ts.html +53 -2
  102. package/docs/user_payments.ts.html +54 -5
  103. package/docs/user_permissions.js.html +2 -2
  104. package/docs/user_profile.js.html +2 -2
  105. package/docs/user_sessions.js.html +2 -2
  106. package/docs/user_types.js.html +2 -2
  107. package/docs/user_user-management-system.js.html +2 -2
  108. package/jest.config.js +0 -0
  109. package/package.json +1 -1
  110. package/src/contentTypeConfig.js +4 -15
  111. package/src/filterBuilder.js +0 -0
  112. package/src/index.d.ts +2 -0
  113. package/src/index.js +2 -0
  114. package/src/infrastructure/http/HttpClient.ts +0 -0
  115. package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
  116. package/src/infrastructure/http/index.ts +0 -0
  117. package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
  118. package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
  119. package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
  120. package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
  121. package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
  122. package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +0 -0
  123. package/src/lib/httpHelper.js +0 -0
  124. package/src/lib/lastUpdated.js +0 -0
  125. package/src/services/api/types.js +0 -0
  126. package/src/services/api/types.ts +0 -0
  127. package/src/services/config.js +0 -0
  128. package/src/services/content-org/content-org.js +0 -0
  129. package/src/services/content-org/guided-courses.ts +0 -0
  130. package/src/services/content-org/learning-paths.ts +0 -0
  131. package/src/services/content-org/playlists-types.js +0 -0
  132. package/src/services/content-org/playlists.js +0 -0
  133. package/src/services/contentAggregator.js +0 -0
  134. package/src/services/contentLikes.js +0 -0
  135. package/src/services/contentProgress.js +0 -0
  136. package/src/services/dataContext.js +0 -0
  137. package/src/services/dateUtils.js +0 -0
  138. package/src/services/eventsAPI.js +0 -0
  139. package/src/services/forums/categories.ts +0 -0
  140. package/src/services/forums/forums.ts +0 -0
  141. package/src/services/forums/posts.ts +0 -0
  142. package/src/services/forums/threads.ts +0 -0
  143. package/src/services/forums/types.ts +0 -0
  144. package/src/services/gamification/awards.ts +0 -0
  145. package/src/services/gamification/gamification.js +0 -0
  146. package/src/services/imageSRCBuilder.js +0 -0
  147. package/src/services/imageSRCVerify.js +0 -0
  148. package/src/services/liveTesting.ts +2 -1
  149. package/src/services/railcontent.js +0 -0
  150. package/src/services/recommendations.js +0 -0
  151. package/src/services/types.js +0 -0
  152. package/src/services/user/account.ts +1 -1
  153. package/src/services/user/chat.js +0 -0
  154. package/src/services/user/interests.js +0 -0
  155. package/src/services/user/management.js +0 -0
  156. package/src/services/user/memberships.ts +0 -0
  157. package/src/services/user/notifications.js +0 -0
  158. package/src/services/user/onboarding.ts +51 -0
  159. package/src/services/user/payments.ts +52 -3
  160. package/src/services/user/permissions.js +0 -0
  161. package/src/services/user/profile.js +0 -0
  162. package/src/services/user/sessions.js +0 -0
  163. package/src/services/user/types.js +0 -0
  164. package/src/services/user/user-management-system.js +0 -0
  165. package/src/services/userActivity.js +0 -0
  166. package/test/HttpClient.test.js +0 -0
  167. package/test/content.test.js +0 -0
  168. package/test/contentLikes.test.js +0 -0
  169. package/test/contentProgress.test.js +0 -0
  170. package/test/dataContext.test.js +0 -0
  171. package/test/forum.test.js +0 -0
  172. package/test/imageSRCBuilder.test.js +0 -0
  173. package/test/imageSRCVerify.test.js +0 -0
  174. package/test/initializeTests.js +0 -0
  175. package/test/lib/lastUpdated.test.js +0 -0
  176. package/test/live/contentProgressLive.test.js +0 -0
  177. package/test/live/railcontentLive.test.js +0 -0
  178. package/test/localStorageMock.js +0 -0
  179. package/test/log.js +0 -0
  180. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  181. package/test/mockData/mockData_progress_content.json +0 -0
  182. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  183. package/test/mockData/mockData_user_practices.json +0 -0
  184. package/test/notifications.test.js +0 -0
  185. package/test/progressRows.test.js +0 -0
  186. package/test/sanityQueryService.test.js +0 -0
  187. package/test/streakMessage.test.js +0 -0
  188. package/test/user/permissions.test.js +0 -0
  189. package/test/userActivity.test.js +0 -0
  190. 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
- * @returns {Promise<CustomerOrder[]>} - A promise that resolves to an array of customer order objects.
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(): Promise<CustomerOrder[]> {
59
+ export async function fetchCustomerPayments(
60
+ options: FetchCustomerPaymentsOptions = {}
61
+ ): Promise<CustomerOrdersResponse> {
23
62
  const client = new HttpClient(globalConfig.baseUrl, globalConfig.sessionConfig.authToken)
24
- return await client.get<CustomerOrder[]>('/api/customer/orders/v1')
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
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/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