musora-content-services 2.28.6 → 2.30.3

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 (158) 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 +49 -0
  10. package/README.md +0 -0
  11. package/babel.config.cjs +0 -0
  12. package/docs/ContentOrganization.html +0 -0
  13. package/docs/Gamification.html +0 -0
  14. package/docs/UserManagementSystem.html +0 -0
  15. package/docs/api_types.js.html +0 -0
  16. package/docs/config.js.html +0 -0
  17. package/docs/content-org_content-org.js.html +0 -0
  18. package/docs/content-org_playlists-types.js.html +0 -0
  19. package/docs/content-org_playlists.js.html +0 -0
  20. package/docs/content.js.html +0 -0
  21. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  22. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  23. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  24. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  25. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  26. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  27. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  28. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  29. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  30. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
  31. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  32. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  33. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  34. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  35. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
  36. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  37. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  38. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  39. package/docs/gamification_awards.js.html +0 -0
  40. package/docs/gamification_gamification.js.html +0 -0
  41. package/docs/gamification_types.js.html +0 -0
  42. package/docs/global.html +0 -0
  43. package/docs/index.html +0 -0
  44. package/docs/module-Awards.html +0 -0
  45. package/docs/module-Config.html +0 -0
  46. package/docs/module-Content-Services-V2.html +0 -0
  47. package/docs/module-Interests.html +0 -0
  48. package/docs/module-Permissions.html +0 -0
  49. package/docs/module-Playlists.html +0 -0
  50. package/docs/module-Railcontent-Services.html +0 -0
  51. package/docs/module-Sanity-Services.html +0 -0
  52. package/docs/module-Sessions.html +0 -0
  53. package/docs/module-UserActivity.html +0 -0
  54. package/docs/module-UserChat.html +0 -0
  55. package/docs/module-UserManagement.html +0 -0
  56. package/docs/module-UserNotifications.html +0 -0
  57. package/docs/module-UserProfile.html +0 -0
  58. package/docs/railcontent.js.html +0 -0
  59. package/docs/sanity.js.html +0 -0
  60. package/docs/scripts/collapse.js +0 -0
  61. package/docs/scripts/commonNav.js +0 -0
  62. package/docs/scripts/linenumber.js +0 -0
  63. package/docs/scripts/nav.js +0 -0
  64. package/docs/scripts/polyfill.js +0 -0
  65. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
  66. package/docs/scripts/prettify/lang-css.js +0 -0
  67. package/docs/scripts/prettify/prettify.js +0 -0
  68. package/docs/scripts/search.js +0 -0
  69. package/docs/styles/jsdoc.css +0 -0
  70. package/docs/styles/prettify.css +0 -0
  71. package/docs/userActivity.js.html +0 -0
  72. package/docs/user_chat.js.html +0 -0
  73. package/docs/user_interests.js.html +0 -0
  74. package/docs/user_management.js.html +0 -0
  75. package/docs/user_notifications.js.html +0 -0
  76. package/docs/user_permissions.js.html +0 -0
  77. package/docs/user_profile.js.html +0 -0
  78. package/docs/user_sessions.js.html +0 -0
  79. package/docs/user_types.js.html +0 -0
  80. package/docs/user_user-management-system.js.html +0 -0
  81. package/jest.config.js +0 -0
  82. package/jsdoc.json +0 -0
  83. package/link_mcs.sh +0 -0
  84. package/package.json +1 -1
  85. package/src/contentMetaData.js +0 -0
  86. package/src/contentTypeConfig.js +69 -50
  87. package/src/filterBuilder.js +0 -0
  88. package/src/index.d.ts +0 -0
  89. package/src/index.js +0 -0
  90. package/src/infrastructure/http/HttpClient.ts +0 -0
  91. package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
  92. package/src/infrastructure/http/index.ts +0 -0
  93. package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
  94. package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
  95. package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
  96. package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
  97. package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
  98. package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +0 -0
  99. package/src/lib/httpHelper.js +0 -0
  100. package/src/lib/lastUpdated.js +0 -0
  101. package/src/services/api/types.js +0 -0
  102. package/src/services/config.js +0 -6
  103. package/src/services/content-org/content-org.js +0 -0
  104. package/src/services/content-org/guided-courses.ts +0 -0
  105. package/src/services/content-org/playlists-types.js +10 -0
  106. package/src/services/content-org/playlists.js +14 -14
  107. package/src/services/content.js +8 -9
  108. package/src/services/contentAggregator.js +45 -7
  109. package/src/services/contentLikes.js +0 -0
  110. package/src/services/contentProgress.js +122 -26
  111. package/src/services/dataContext.js +0 -0
  112. package/src/services/dateUtils.js +0 -0
  113. package/src/services/forum.js +0 -0
  114. package/src/services/gamification/awards.js +52 -33
  115. package/src/services/gamification/gamification.js +0 -0
  116. package/src/services/gamification/types.js +5 -23
  117. package/src/services/imageSRCBuilder.js +0 -0
  118. package/src/services/imageSRCVerify.js +0 -0
  119. package/src/services/railcontent.js +25 -36
  120. package/src/services/recommendations.js +20 -18
  121. package/src/services/sanity.js +27 -57
  122. package/src/services/types.js +0 -8
  123. package/src/services/user/account.ts +0 -0
  124. package/src/services/user/chat.js +0 -0
  125. package/src/services/user/interests.js +0 -0
  126. package/src/services/user/management.js +0 -0
  127. package/src/services/user/notifications.js +0 -0
  128. package/src/services/user/permissions.js +0 -0
  129. package/src/services/user/profile.js +0 -0
  130. package/src/services/user/sessions.js +0 -0
  131. package/src/services/user/types.js +0 -0
  132. package/src/services/user/user-management-system.js +0 -0
  133. package/src/services/userActivity.js +340 -419
  134. package/test/HttpClient.test.js +0 -0
  135. package/test/content.test.js +0 -0
  136. package/test/contentLikes.test.js +0 -0
  137. package/test/contentProgress.test.js +0 -0
  138. package/test/dataContext.test.js +0 -0
  139. package/test/forum.test.js +0 -0
  140. package/test/imageSRCBuilder.test.js +0 -0
  141. package/test/imageSRCVerify.test.js +0 -0
  142. package/test/initializeTests.js +0 -4
  143. package/test/lib/lastUpdated.test.js +0 -0
  144. package/test/live/contentProgressLive.test.js +0 -0
  145. package/test/live/railcontentLive.test.js +0 -0
  146. package/test/localStorageMock.js +0 -0
  147. package/test/log.js +0 -0
  148. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  149. package/test/mockData/mockData_progress_content.json +0 -0
  150. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  151. package/test/mockData/mockData_user_practices.json +0 -0
  152. package/test/notifications.test.js +0 -0
  153. package/test/progressRows.test.js +0 -0
  154. package/test/sanityQueryService.test.js +0 -0
  155. package/test/streakMessage.test.js +0 -0
  156. package/test/user/permissions.test.js +0 -0
  157. package/test/userActivity.test.js +0 -0
  158. package/tools/generate-index.cjs +0 -0
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,55 @@
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.30.3](https://github.com/railroadmedia/musora-content-services/compare/v2.30.2...v2.30.3) (2025-08-04)
6
+
7
+ ### [2.30.2](https://github.com/railroadmedia/musora-content-services/compare/v2.30.1...v2.30.2) (2025-08-04)
8
+
9
+ ### [2.30.1](https://github.com/railroadmedia/musora-content-services/compare/v2.30.0...v2.30.1) (2025-08-04)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * null check on buildNavigateTo ([#397](https://github.com/railroadmedia/musora-content-services/issues/397)) ([2387877](https://github.com/railroadmedia/musora-content-services/commit/238787786fa322872f733d769547a49796fc0bf1))
15
+
16
+ ## [2.30.0](https://github.com/railroadmedia/musora-content-services/compare/v2.28.6...v2.30.0) (2025-08-01)
17
+
18
+
19
+ ### Features
20
+
21
+ * **navigateTo:** Add navigateTo context and update homepageprogress rows to pull the same data as other locations ([#389](https://github.com/railroadmedia/musora-content-services/issues/389)) ([b731957](https://github.com/railroadmedia/musora-content-services/commit/b73195790ba0aefd98e1584ef0f57839979613b3))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * Change recommendation config to use recommender.musora.com ([#395](https://github.com/railroadmedia/musora-content-services/issues/395)) ([170d48a](https://github.com/railroadmedia/musora-content-services/commit/170d48a4b10bb11371889e14a74b3dd663d5c0e7))
27
+ * **MU2-907:** scheduled content appearing in new releases ([#391](https://github.com/railroadmedia/musora-content-services/issues/391)) ([c4f3c48](https://github.com/railroadmedia/musora-content-services/commit/c4f3c482c62513ddc4b2465bb7a6e155a92a52da))
28
+ * **T3PS-120:** allow falsey values for description and category ([#392](https://github.com/railroadmedia/musora-content-services/issues/392)) ([5645488](https://github.com/railroadmedia/musora-content-services/commit/56454880df8c92fa3c9c0a57f8b8ae7115d49391))
29
+ * **T3PS-139:** fix lesson count on content cards ([#383](https://github.com/railroadmedia/musora-content-services/issues/383)) ([818c4d0](https://github.com/railroadmedia/musora-content-services/commit/818c4d0e5f8903d9f7b2a7667460a4beb144d7ab))
30
+ * **T3PS-594:** wrong active date mobile ([#387](https://github.com/railroadmedia/musora-content-services/issues/387)) ([f9e2dfd](https://github.com/railroadmedia/musora-content-services/commit/f9e2dfd008660d55865e526317ef79e5d95e3f06))
31
+ * **T3PS-602:** fixes thumbnail data missing from getNewAndUpcoming MCS method ([#386](https://github.com/railroadmedia/musora-content-services/issues/386)) ([f8da5fc](https://github.com/railroadmedia/musora-content-services/commit/f8da5fc674380ffdebcf636ddbb7b0a5f14ba7ae))
32
+ * **T3PS-630:** show song-tutorial children in recent songs instead of parent ([#390](https://github.com/railroadmedia/musora-content-services/issues/390)) ([312bdf8](https://github.com/railroadmedia/musora-content-services/commit/312bdf891a6ffb6eb3113ebfea1692d586e0d2ea))
33
+ * **T3PS-644:** practice day incorrectly assigned ([#393](https://github.com/railroadmedia/musora-content-services/issues/393)) ([8b8a424](https://github.com/railroadmedia/musora-content-services/commit/8b8a4245cdaa389c7916eb398da47bf30f6fc056))
34
+
35
+ ## [2.29.0](https://github.com/railroadmedia/musora-content-services/compare/v2.28.6...v2.29.0) (2025-08-01)
36
+
37
+
38
+ ### Features
39
+
40
+ * **navigateTo:** Add navigateTo context and update homepageprogress rows to pull the same data as other locations ([#389](https://github.com/railroadmedia/musora-content-services/issues/389)) ([b731957](https://github.com/railroadmedia/musora-content-services/commit/b73195790ba0aefd98e1584ef0f57839979613b3))
41
+
42
+
43
+ ### Bug Fixes
44
+
45
+ * Change recommendation config to use recommender.musora.com ([#395](https://github.com/railroadmedia/musora-content-services/issues/395)) ([170d48a](https://github.com/railroadmedia/musora-content-services/commit/170d48a4b10bb11371889e14a74b3dd663d5c0e7))
46
+ * **MU2-907:** scheduled content appearing in new releases ([#391](https://github.com/railroadmedia/musora-content-services/issues/391)) ([c4f3c48](https://github.com/railroadmedia/musora-content-services/commit/c4f3c482c62513ddc4b2465bb7a6e155a92a52da))
47
+ * **T3PS-120:** allow falsey values for description and category ([#392](https://github.com/railroadmedia/musora-content-services/issues/392)) ([5645488](https://github.com/railroadmedia/musora-content-services/commit/56454880df8c92fa3c9c0a57f8b8ae7115d49391))
48
+ * **T3PS-139:** fix lesson count on content cards ([#383](https://github.com/railroadmedia/musora-content-services/issues/383)) ([818c4d0](https://github.com/railroadmedia/musora-content-services/commit/818c4d0e5f8903d9f7b2a7667460a4beb144d7ab))
49
+ * **T3PS-594:** wrong active date mobile ([#387](https://github.com/railroadmedia/musora-content-services/issues/387)) ([f9e2dfd](https://github.com/railroadmedia/musora-content-services/commit/f9e2dfd008660d55865e526317ef79e5d95e3f06))
50
+ * **T3PS-602:** fixes thumbnail data missing from getNewAndUpcoming MCS method ([#386](https://github.com/railroadmedia/musora-content-services/issues/386)) ([f8da5fc](https://github.com/railroadmedia/musora-content-services/commit/f8da5fc674380ffdebcf636ddbb7b0a5f14ba7ae))
51
+ * **T3PS-630:** show song-tutorial children in recent songs instead of parent ([#390](https://github.com/railroadmedia/musora-content-services/issues/390)) ([312bdf8](https://github.com/railroadmedia/musora-content-services/commit/312bdf891a6ffb6eb3113ebfea1692d586e0d2ea))
52
+ * **T3PS-644:** practice day incorrectly assigned ([#393](https://github.com/railroadmedia/musora-content-services/issues/393)) ([8b8a424](https://github.com/railroadmedia/musora-content-services/commit/8b8a4245cdaa389c7916eb398da47bf30f6fc056))
53
+
5
54
  ### [2.28.6](https://github.com/railroadmedia/musora-content-services/compare/v2.28.5...v2.28.6) (2025-07-28)
6
55
 
7
56
 
package/README.md CHANGED
File without changes
package/babel.config.cjs 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
package/docs/global.html CHANGED
File without changes
package/docs/index.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
File without changes
File without changes
File without changes
File without changes
File without changes
package/jest.config.js CHANGED
File without changes
package/jsdoc.json CHANGED
File without changes
package/link_mcs.sh CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "musora-content-services",
3
- "version": "2.28.6",
3
+ "version": "2.30.3",
4
4
  "description": "A package for Musoras content services ",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
File without changes
@@ -1,5 +1,6 @@
1
1
  //import {AWSUrl, CloudFrontURl} from "./services/config";
2
2
  import {Tabs} from "./contentMetaData.js";
3
+ import {FilterBuilder} from "./filterBuilder.js";
3
4
 
4
5
  export const AWSUrl = 'https://s3.us-east-1.amazonaws.com/musora-web-platform'
5
6
  export const CloudFrontURl = 'https://d3fzm1tzeyr5n3.cloudfront.net'
@@ -34,12 +35,27 @@ export const DEFAULT_FIELDS = [
34
35
  '"lesson_count": coalesce(count(child[]->.child[]->), child_count)',
35
36
  '"parent_id": parent_content_data[0].id',
36
37
  ]
38
+
37
39
  export const DEFAULT_CHILD_FIELDS = [
38
- `"id": railcontent_id`,
39
- `title`,
40
- `"image": thumbnail.asset->url`,
41
- `"instructors": instructor[]->name`,
42
- `length_in_seconds`,
40
+ "'id': railcontent_id",
41
+ 'railcontent_id',
42
+ artistOrInstructorName(),
43
+ "'artist': artist->{ 'name': name, 'thumbnail': thumbnail_url.asset->url}",
44
+ 'title',
45
+ "'image': thumbnail.asset->url",
46
+ "'thumbnail': thumbnail.asset->url",
47
+ 'difficulty',
48
+ 'difficulty_string',
49
+ 'published_on',
50
+ "'type': _type",
51
+ "'length_in_seconds' : coalesce(length_in_seconds, soundslice[0].soundslice_length_in_second)",
52
+ 'brand',
53
+ "'genre': genre[]->name",
54
+ 'status',
55
+ "'slug' : slug.current",
56
+ "'permission_id': permission[]->railcontent_id",
57
+ 'child_count',
58
+ '"parent_id": parent_content_data[0].id',
43
59
  ]
44
60
 
45
61
  export const instructorField = `instructor[]->{
@@ -202,7 +218,7 @@ export const progressTypesMapping = {
202
218
  'show': showsLessonTypes,
203
219
  'song tutorial': [...tutorialsLessonTypes, 'song-tutorial-children'],
204
220
  'songs': transcriptionsLessonTypes,
205
- 'play-along': playAlongLessonTypes,
221
+ 'play along': playAlongLessonTypes,
206
222
  'guided course': ['guided-course'],
207
223
  'pack': ['pack', 'semester-pack'],
208
224
  'method': ['learning-path'],
@@ -224,7 +240,7 @@ export const filterTypes = {
224
240
 
225
241
  export const recentTypes = {
226
242
  lessons: [...individualLessonsTypes, 'course-part', 'pack-bundle-lesson', 'guided-course-part', 'quick-tips'],
227
- songs: [...tutorialsLessonTypes, ...transcriptionsLessonTypes, ...playAlongLessonTypes],
243
+ songs: [...SONG_TYPES],
228
244
  home: [...individualLessonsTypes, ...tutorialsLessonTypes, ...transcriptionsLessonTypes, ...playAlongLessonTypes,
229
245
  'guided-course', 'learning-path', 'live', 'course', 'pack']
230
246
  }
@@ -235,30 +251,14 @@ export let contentTypeConfig = {
235
251
  'enrollment_start_time',
236
252
  'enrollment_end_time',
237
253
  ],
254
+ includeChildFields: true,
238
255
  },
239
256
  'progress-tracker': {
240
257
  fields: [
241
258
  '"parent_content_data": parent_content_data[].id',
242
259
  '"badge" : badge.asset->url',
243
- '"lessons": child[]->{' +
244
- '"id": railcontent_id,' +
245
- '"slug":slug.current,' +
246
- '"brand":brand,' +
247
- '"type": _type,' +
248
- '"thumbnail": thumbnail.asset->url,' +
249
- 'published_on,' +
250
- '"lessons": child[]->{' +
251
- '"id":railcontent_id,' +
252
- '"slug":slug.current,' +
253
- '"type": _type,' +
254
- '"brand":brand},' +
255
- '"thumbnail": thumbnail.asset->url,' +
256
- 'published_on,' +
257
- '}',
258
260
  ],
259
-
260
-
261
-
261
+ includeChildFields: true,
262
262
  },
263
263
  song: {
264
264
  fields: ['album', 'soundslice', 'instrumentless', `"resources": ${resourcesField}`],
@@ -282,6 +282,7 @@ export let contentTypeConfig = {
282
282
  }`,
283
283
  '"instructors": instructor[]->name',
284
284
  ],
285
+ includeChildFields: true,
285
286
  relationships: {
286
287
  artist: {
287
288
  isOneToOne: true,
@@ -291,6 +292,9 @@ export let contentTypeConfig = {
291
292
  'song-tutorial-children': {
292
293
  fields: [`"resources": ${resourcesField}`],
293
294
  },
295
+ 'guided-course': {
296
+ includeChildFields: true,
297
+ },
294
298
  course: {
295
299
  fields: [
296
300
  '"lesson_count": child_count',
@@ -424,26 +428,20 @@ export let contentTypeConfig = {
424
428
  '"instructors": instructor[]->{ "id": railcontent_id, name, "thumbnail_url": thumbnail_url.asset->url }',
425
429
  '"logo_image_url": logo_image_url.asset->url',
426
430
  'total_xp',
427
- `"children": child[]->{
428
- "description": ${descriptionField},
429
- "lesson_count": child_count,
430
- "instructors": select(
431
- instructor != null => instructor[]->name,
432
- ^.instructor[]->name
433
- ),
434
- "children": child[]->{
435
- "description": ${descriptionField},
436
- "children": child[]->{"id": railcontent_id},
437
- ${getFieldsForContentType()}
438
- },
439
- ${getFieldsForContentType()}
440
- }`,
441
431
  `"resources": ${resourcesField}`,
442
432
  '"thumbnail": thumbnail.asset->url',
443
433
  '"light_mode_logo": light_mode_logo_url.asset->url',
444
434
  '"dark_mode_logo": dark_mode_logo_url.asset->url',
445
435
  `"description": ${descriptionField}`,
446
436
  ],
437
+ childFields: [
438
+ `'description': ${descriptionField}`,
439
+ "'lesson_count': child_count",
440
+ `'instructors': select(
441
+ instructor != null => instructor[]->name,
442
+ ^.instructor[]->name
443
+ )`,
444
+ ],
447
445
  },
448
446
  rudiment: {
449
447
  fields: ['sheet_music_thumbnail_url'],
@@ -456,10 +454,6 @@ export let contentTypeConfig = {
456
454
  'pack-children': {
457
455
  fields: [
458
456
  'child_count',
459
- `"children": child[]->{
460
- "description": ${descriptionField},
461
- ${getFieldsForContentType()}
462
- }`,
463
457
  `"resources": ${resourcesField}`,
464
458
  '"image": logo_image_url.asset->url',
465
459
  '"thumbnail": thumbnail.asset->url',
@@ -468,6 +462,9 @@ export let contentTypeConfig = {
468
462
  `"description": ${descriptionField}`,
469
463
  'total_xp',
470
464
  ],
465
+ childFields: [
466
+ `"description": ${descriptionField}`,
467
+ ]
471
468
  },
472
469
  'pack-bundle-lesson': {
473
470
  fields: [`"resources": ${resourcesField}`],
@@ -681,6 +678,35 @@ export function artistOrInstructorNameAsArray(key = 'artists') {
681
678
  return `'${key}': select(artist->name != null => [artist->name], instructor[]->name)`
682
679
  }
683
680
 
681
+ export async function getFieldsForContentTypeWithFilteredChildren(contentType, asQueryString = true) {
682
+ const childFields = getChildFieldsForContentType(contentType, true)
683
+ const parentFields = getFieldsForContentType(contentType, false)
684
+ if (childFields) {
685
+ const childFilter = await new FilterBuilder('', {isChildrenFilter: true}).buildFilter()
686
+ parentFields.push(
687
+ `"children": child[${childFilter}]->{
688
+ ${childFields}
689
+ "children": child[${childFilter}]->{
690
+ ${childFields}
691
+ },
692
+ }`
693
+ )
694
+ }
695
+ return asQueryString ? parentFields.toString() + ',' : parentFields
696
+ }
697
+
698
+ export function getChildFieldsForContentType(contentType, asQueryString = true)
699
+ {
700
+ if (contentTypeConfig[contentType]?.childFields || contentTypeConfig[contentType]?.includeChildFields) {
701
+ const childFields = contentType
702
+ ? DEFAULT_CHILD_FIELDS.concat(contentTypeConfig?.[contentType]?.childFields ?? [])
703
+ : DEFAULT_CHILD_FIELDS
704
+ return asQueryString ? childFields.toString() + ',' : childFields
705
+ } else {
706
+ return asQueryString ? '' : []
707
+ }
708
+ }
709
+
684
710
  export function getFieldsForContentType(contentType, asQueryString = true) {
685
711
  const fields = contentType
686
712
  ? DEFAULT_FIELDS.concat(contentTypeConfig?.[contentType]?.fields ?? [])
@@ -688,13 +714,6 @@ export function getFieldsForContentType(contentType, asQueryString = true) {
688
714
  return asQueryString ? fields.toString() + ',' : fields
689
715
  }
690
716
 
691
- export function getChildFieldsForContentType(contentType, asQueryString = true) {
692
- const fields = contentType
693
- ? DEFAULT_CHILD_FIELDS.concat(childContentTypeConfig?.[contentType] ?? [])
694
- : DEFAULT_CHILD_FIELDS
695
- return asQueryString ? fields.toString() + ',' : fields
696
- }
697
-
698
717
  /**
699
718
  * Takes the included fields array and returns a string that can be used in a groq query.
700
719
  * @param {Array<string>} filters - An array of strings that represent applied filters. This should be in the format of a key,value array. eg. ['difficulty,Intermediate',
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
@@ -8,7 +8,6 @@ import './types.js'
8
8
  export let globalConfig = {
9
9
  sanityConfig: {},
10
10
  railcontentConfig: {},
11
- recommendationsConfig: {},
12
11
  sessionConfig: {},
13
12
  localStorage: null,
14
13
  isMA: false,
@@ -50,10 +49,6 @@ const excludeFromGeneratedIndex = []
50
49
  * userId: 'current-user-id',
51
50
  * authToken 'your-auth-token',
52
51
  * },
53
- * recommendationsConfig: {
54
- * token: 'your-user-api-token',
55
- * baseUrl: 'https://MusoraProductDepartment-PWGenerator.hf.space',
56
- * },
57
52
  * baseUrl: 'https://web-staging-one.musora.com',
58
53
  * localStorage: localStorage,
59
54
  * isMA: false,
@@ -67,5 +62,4 @@ export function initializeService(config) {
67
62
  globalConfig.localStorage = config.localStorage
68
63
  globalConfig.isMA = config.isMA || false
69
64
  globalConfig.localTimezoneString = config.localTimezoneString || null
70
- globalConfig.recommendationsConfig = config.recommendationsConfig
71
65
  }
File without changes
File without changes
@@ -8,6 +8,16 @@
8
8
  * @property {string} brand - Brand identifier for the playlist.
9
9
  */
10
10
 
11
+ /**
12
+ * @typedef UpdatePlaylistDTO
13
+ * @property {string} name - The name of the new playlist. (required, max 255 characters)
14
+ * @property {string} description - A description of the playlist. (optional, max 1000 characters)
15
+ * @property {string} category - The category of the playlist. (optional, max 255 characters)
16
+ * @property {boolean} is_private - Whether the playlist is private. (optional, defaults to false)
17
+ * @property {Array<number>} deleted_items - List of playlist items to be deleted. (optional)
18
+ * @property {Array<number>} item_order - List of all remaining playlist item ids (not content_ids) provided in the new order. (optional)
19
+ */
20
+
11
21
  /**
12
22
  * @typedef DuplicatePlaylistDTO
13
23
  * @property {string} name - The name of the new playlist. (required, max 255 characters)