musora-content-services 2.60.2 → 2.61.1
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 +19 -0
- package/README.md +0 -0
- package/babel.config.cjs +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/forums_discussions.js.html +0 -0
- package/docs/forums_forum.js.html +0 -0
- package/docs/gamification_awards.js.html +0 -0
- package/docs/gamification_types.js.html +0 -0
- package/docs/module-Categories.html +0 -0
- package/docs/module-ForumCategories.html +0 -0
- package/docs/module-ForumDiscussions.html +0 -0
- package/docs/module-Threads.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/user_memberships.js.html +0 -0
- package/jest.config.js +0 -0
- package/jsdoc.json +0 -0
- package/package.json +1 -1
- package/src/contentMetaData.js +0 -0
- package/src/contentTypeConfig.js +53 -1
- 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 +4 -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/forums/categories.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/railcontent.js +0 -0
- package/src/services/recommendations.js +0 -0
- package/src/services/sanity.js +16 -10
- 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.ts +0 -0
- package/src/services/user/notifications.js +0 -0
- package/src/services/user/onboarding.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 +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
- package/.claude/settings.local.json +0 -11
- package/.yarnrc.yml +0 -1
- package/image-20250923-212426.png +0 -0
- package/tsconfig.json +0 -22
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,25 @@
|
|
|
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.61.1](https://github.com/railroadmedia/musora-content-services/compare/v2.61.0...v2.61.1) (2025-10-29)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **MU2-1008:** Update set query to fetch children if no contentType ([82f03ef](https://github.com/railroadmedia/musora-content-services/commit/82f03ef4c0257a10f41b2b336ac80476252cfbb2))
|
|
11
|
+
|
|
12
|
+
## [2.61.0](https://github.com/railroadmedia/musora-content-services/compare/v2.60.2...v2.61.0) (2025-10-29)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **BEH-1358:** Fetch all methods ([#511](https://github.com/railroadmedia/musora-content-services/issues/511)) ([4778770](https://github.com/railroadmedia/musora-content-services/commit/47787704ef8c835ac05ecee88313f0f02cf01109))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* add client platform header for mobile requests ([#512](https://github.com/railroadmedia/musora-content-services/issues/512)) ([23e0eaa](https://github.com/railroadmedia/musora-content-services/commit/23e0eaab439aba231ff04b41b13c5440704779a2))
|
|
23
|
+
|
|
5
24
|
### [2.60.2](https://github.com/railroadmedia/musora-content-services/compare/v2.60.0...v2.60.2) (2025-10-27)
|
|
6
25
|
|
|
7
26
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/module-Threads.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/jest.config.js
CHANGED
|
File without changes
|
package/jsdoc.json
CHANGED
|
File without changes
|
package/package.json
CHANGED
package/src/contentMetaData.js
CHANGED
|
File without changes
|
package/src/contentTypeConfig.js
CHANGED
|
@@ -579,9 +579,56 @@ export let contentTypeConfig = {
|
|
|
579
579
|
`quarter_removed`,
|
|
580
580
|
'"thumbnail": thumbnail.asset->url',
|
|
581
581
|
]
|
|
582
|
-
}
|
|
582
|
+
},
|
|
583
|
+
"method-v2": [
|
|
584
|
+
`"id":_id`,
|
|
585
|
+
`"type":_type`,
|
|
586
|
+
"brand",
|
|
587
|
+
`"intro_video": intro_video->{ ${getIntroVideoFields().join(", ")} }`,
|
|
588
|
+
`child[]->{
|
|
589
|
+
"resource": ${resourcesField},
|
|
590
|
+
total_skills,
|
|
591
|
+
"difficulty":difficulty,
|
|
592
|
+
"published_on":published_on,
|
|
593
|
+
"type":_type,
|
|
594
|
+
brand,
|
|
595
|
+
title,
|
|
596
|
+
"description": ${descriptionField},
|
|
597
|
+
"thumbnail": thumbnail.asset->url,
|
|
598
|
+
length_in_seconds,
|
|
599
|
+
"intro_video": intro_video->{
|
|
600
|
+
external_id,
|
|
601
|
+
hlsManifestUrl,
|
|
602
|
+
video_playback_endpoints
|
|
603
|
+
},
|
|
604
|
+
lp_lessons[]->{
|
|
605
|
+
${DEFAULT_FIELDS.join(',')}
|
|
606
|
+
}
|
|
607
|
+
}`,
|
|
608
|
+
],
|
|
609
|
+
"method-v2-intro-video": getIntroVideoFields(),
|
|
583
610
|
}
|
|
584
611
|
|
|
612
|
+
export function getIntroVideoFields() {
|
|
613
|
+
return [
|
|
614
|
+
"brand",
|
|
615
|
+
`"description": ${descriptionField}`,
|
|
616
|
+
`"thumbnail": thumbnail.asset->url`,
|
|
617
|
+
"length_in_seconds",
|
|
618
|
+
`video_desktop {
|
|
619
|
+
external_id,
|
|
620
|
+
hlsManifestUrl,
|
|
621
|
+
video_playback_endpoints
|
|
622
|
+
}`,
|
|
623
|
+
`video_mobile {
|
|
624
|
+
external_id,
|
|
625
|
+
hlsManifestUrl,
|
|
626
|
+
video_playback_endpoints
|
|
627
|
+
}`
|
|
628
|
+
];
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
|
|
585
632
|
export const plusMembershipPermissions = 92
|
|
586
633
|
|
|
587
634
|
export function getNewReleasesTypes(brand) {
|
|
@@ -713,6 +760,11 @@ export async function getFieldsForContentTypeWithFilteredChildren(contentType, a
|
|
|
713
760
|
|
|
714
761
|
export function getChildFieldsForContentType(contentType, asQueryString = true)
|
|
715
762
|
{
|
|
763
|
+
// When contentType is undefined/null, return DEFAULT_CHILD_FIELDS to support mixed-type queries (e.g., from Algolia)
|
|
764
|
+
if (!contentType) {
|
|
765
|
+
return asQueryString ? DEFAULT_CHILD_FIELDS.toString() + ',' : DEFAULT_CHILD_FIELDS
|
|
766
|
+
}
|
|
767
|
+
|
|
716
768
|
if (contentTypeConfig[contentType]?.childFields || contentTypeConfig[contentType]?.includeChildFields) {
|
|
717
769
|
const childFields = contentType
|
|
718
770
|
? DEFAULT_CHILD_FIELDS.concat(contentTypeConfig?.[contentType]?.childFields ?? [])
|
package/src/index.d.ts
CHANGED
|
@@ -213,6 +213,7 @@ import {
|
|
|
213
213
|
fetchCommentModContentData,
|
|
214
214
|
fetchContentRows,
|
|
215
215
|
fetchFoundation,
|
|
216
|
+
fetchFullMethodV2StructureFor,
|
|
216
217
|
fetchGenreLessons,
|
|
217
218
|
fetchHierarchy,
|
|
218
219
|
fetchLeaving,
|
|
@@ -436,6 +437,7 @@ declare module 'musora-content-services' {
|
|
|
436
437
|
fetchFollowedThreads,
|
|
437
438
|
fetchForumCategories,
|
|
438
439
|
fetchFoundation,
|
|
440
|
+
fetchFullMethodV2StructureFor,
|
|
439
441
|
fetchGenreLessons,
|
|
440
442
|
fetchHandler,
|
|
441
443
|
fetchHierarchy,
|
package/src/index.js
CHANGED
|
@@ -213,6 +213,7 @@ import {
|
|
|
213
213
|
fetchCommentModContentData,
|
|
214
214
|
fetchContentRows,
|
|
215
215
|
fetchFoundation,
|
|
216
|
+
fetchFullMethodV2StructureFor,
|
|
216
217
|
fetchGenreLessons,
|
|
217
218
|
fetchHierarchy,
|
|
218
219
|
fetchLeaving,
|
|
@@ -435,6 +436,7 @@ export {
|
|
|
435
436
|
fetchFollowedThreads,
|
|
436
437
|
fetchForumCategories,
|
|
437
438
|
fetchFoundation,
|
|
439
|
+
fetchFullMethodV2StructureFor,
|
|
438
440
|
fetchGenreLessons,
|
|
439
441
|
fetchHandler,
|
|
440
442
|
fetchHierarchy,
|
|
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
|
|
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
|
|
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/services/sanity.js
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
descriptionField,
|
|
10
10
|
resourcesField,
|
|
11
11
|
contentTypeConfig,
|
|
12
|
+
getIntroVideoFields,
|
|
12
13
|
DEFAULT_FIELDS,
|
|
13
14
|
getFieldsForContentType,
|
|
14
15
|
filtersToGroq,
|
|
@@ -2277,17 +2278,22 @@ export async function fetchShows(brand, type, sort = 'sort') {
|
|
|
2277
2278
|
return fetchSanity(query, true)
|
|
2278
2279
|
}
|
|
2279
2280
|
|
|
2281
|
+
|
|
2280
2282
|
export async function fetchMethodV2IntroVideo(brand) {
|
|
2281
|
-
const _type =
|
|
2283
|
+
const _type = "method-intro";
|
|
2282
2284
|
const filter = `_type == '${_type}' && brand == '${brand}'`;
|
|
2283
|
-
const
|
|
2284
|
-
brand,
|
|
2285
|
-
'description': ${descriptionField},
|
|
2286
|
-
'thumbnail': thumbnail.asset->url,
|
|
2287
|
-
video_desktop{external_id, hlsManifestUrl, video_playback_endpoints},
|
|
2288
|
-
video_mobile{external_id, hlsManifestUrl, video_playback_endpoints},
|
|
2289
|
-
length_in_seconds,
|
|
2290
|
-
}`
|
|
2285
|
+
const fields = getIntroVideoFields();
|
|
2291
2286
|
|
|
2292
|
-
|
|
2287
|
+
const query = `*[${filter}] { ${fields.join(", ")} }`;
|
|
2288
|
+
return fetchSanity(query, false);
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
export async function fetchFullMethodV2StructureFor(brand) {
|
|
2292
|
+
const _type = "method-v2";
|
|
2293
|
+
const filter = `_type == '${_type}' && brand == '${brand}'`;
|
|
2294
|
+
|
|
2295
|
+
const fields = contentTypeConfig[_type];
|
|
2296
|
+
const query = `*[${filter}] { ${fields.join(",")} }`;
|
|
2297
|
+
|
|
2298
|
+
return await fetchSanity(query, true);
|
|
2293
2299
|
}
|
package/src/services/types.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
|
|
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
|
package/.yarnrc.yml
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
nodeLinker: node-modules
|
|
Binary file
|
package/tsconfig.json
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2020",
|
|
4
|
-
"module": "ES2020",
|
|
5
|
-
"lib": ["ES2020"],
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"outDir": "./dist",
|
|
8
|
-
"rootDir": "./src",
|
|
9
|
-
"declaration": true,
|
|
10
|
-
"declarationMap": true,
|
|
11
|
-
"sourceMap": true,
|
|
12
|
-
"esModuleInterop": true,
|
|
13
|
-
"allowSyntheticDefaultImports": true,
|
|
14
|
-
"strict": false,
|
|
15
|
-
"skipLibCheck": true,
|
|
16
|
-
"resolveJsonModule": true,
|
|
17
|
-
"allowJs": true,
|
|
18
|
-
"noEmit": false
|
|
19
|
-
},
|
|
20
|
-
"include": ["src/**/*"],
|
|
21
|
-
"exclude": ["node_modules", "dist", "test", "**/*.test.ts", "**/*.test.js"]
|
|
22
|
-
}
|