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.
- 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 +49 -0
- package/README.md +0 -0
- package/babel.config.cjs +0 -0
- package/docs/ContentOrganization.html +0 -0
- package/docs/Gamification.html +0 -0
- package/docs/UserManagementSystem.html +0 -0
- package/docs/api_types.js.html +0 -0
- package/docs/config.js.html +0 -0
- package/docs/content-org_content-org.js.html +0 -0
- package/docs/content-org_playlists-types.js.html +0 -0
- package/docs/content-org_playlists.js.html +0 -0
- package/docs/content.js.html +0 -0
- 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/gamification_awards.js.html +0 -0
- package/docs/gamification_gamification.js.html +0 -0
- package/docs/gamification_types.js.html +0 -0
- package/docs/global.html +0 -0
- package/docs/index.html +0 -0
- package/docs/module-Awards.html +0 -0
- package/docs/module-Config.html +0 -0
- package/docs/module-Content-Services-V2.html +0 -0
- package/docs/module-Interests.html +0 -0
- package/docs/module-Permissions.html +0 -0
- package/docs/module-Playlists.html +0 -0
- package/docs/module-Railcontent-Services.html +0 -0
- package/docs/module-Sanity-Services.html +0 -0
- package/docs/module-Sessions.html +0 -0
- package/docs/module-UserActivity.html +0 -0
- package/docs/module-UserChat.html +0 -0
- package/docs/module-UserManagement.html +0 -0
- package/docs/module-UserNotifications.html +0 -0
- package/docs/module-UserProfile.html +0 -0
- package/docs/railcontent.js.html +0 -0
- package/docs/sanity.js.html +0 -0
- 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 +0 -0
- package/docs/user_chat.js.html +0 -0
- package/docs/user_interests.js.html +0 -0
- package/docs/user_management.js.html +0 -0
- package/docs/user_notifications.js.html +0 -0
- package/docs/user_permissions.js.html +0 -0
- package/docs/user_profile.js.html +0 -0
- package/docs/user_sessions.js.html +0 -0
- package/docs/user_types.js.html +0 -0
- package/docs/user_user-management-system.js.html +0 -0
- package/jest.config.js +0 -0
- package/jsdoc.json +0 -0
- package/link_mcs.sh +0 -0
- package/package.json +1 -1
- package/src/contentMetaData.js +0 -0
- package/src/contentTypeConfig.js +69 -50
- 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/config.js +0 -6
- 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 +10 -0
- package/src/services/content-org/playlists.js +14 -14
- package/src/services/content.js +8 -9
- package/src/services/contentAggregator.js +45 -7
- package/src/services/contentLikes.js +0 -0
- package/src/services/contentProgress.js +122 -26
- package/src/services/dataContext.js +0 -0
- package/src/services/dateUtils.js +0 -0
- package/src/services/forum.js +0 -0
- package/src/services/gamification/awards.js +52 -33
- package/src/services/gamification/gamification.js +0 -0
- package/src/services/gamification/types.js +5 -23
- package/src/services/imageSRCBuilder.js +0 -0
- package/src/services/imageSRCVerify.js +0 -0
- package/src/services/railcontent.js +25 -36
- package/src/services/recommendations.js +20 -18
- package/src/services/sanity.js +27 -57
- package/src/services/types.js +0 -8
- 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/notifications.js +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 +340 -419
- 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 -4
- 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/.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
|
package/docs/Gamification.html
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/api_types.js.html
CHANGED
|
File without changes
|
package/docs/config.js.html
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/content.js.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
|
package/docs/global.html
CHANGED
|
File without changes
|
package/docs/index.html
CHANGED
|
File without changes
|
package/docs/module-Awards.html
CHANGED
|
File without changes
|
package/docs/module-Config.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
|
package/docs/railcontent.js.html
CHANGED
|
File without changes
|
package/docs/sanity.js.html
CHANGED
|
File without changes
|
package/docs/scripts/collapse.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/scripts/nav.js
CHANGED
|
File without changes
|
package/docs/scripts/polyfill.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/scripts/search.js
CHANGED
|
File without changes
|
package/docs/styles/jsdoc.css
CHANGED
|
File without changes
|
package/docs/styles/prettify.css
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/user_chat.js.html
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/user_types.js.html
CHANGED
|
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
package/src/contentMetaData.js
CHANGED
|
File without changes
|
package/src/contentTypeConfig.js
CHANGED
|
@@ -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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
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: [...
|
|
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',
|
package/src/filterBuilder.js
CHANGED
|
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
|
|
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
|
package/src/services/config.js
CHANGED
|
@@ -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)
|