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.
Files changed (135) 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 +19 -0
  10. package/README.md +0 -0
  11. package/babel.config.cjs +0 -0
  12. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  13. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  14. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  15. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  16. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  17. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  18. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  19. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  20. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  21. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
  22. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  23. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  24. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  25. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  26. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
  27. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  28. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  29. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  30. package/docs/forums_discussions.js.html +0 -0
  31. package/docs/forums_forum.js.html +0 -0
  32. package/docs/gamification_awards.js.html +0 -0
  33. package/docs/gamification_types.js.html +0 -0
  34. package/docs/module-Categories.html +0 -0
  35. package/docs/module-ForumCategories.html +0 -0
  36. package/docs/module-ForumDiscussions.html +0 -0
  37. package/docs/module-Threads.html +0 -0
  38. package/docs/scripts/collapse.js +0 -0
  39. package/docs/scripts/commonNav.js +0 -0
  40. package/docs/scripts/linenumber.js +0 -0
  41. package/docs/scripts/nav.js +0 -0
  42. package/docs/scripts/polyfill.js +0 -0
  43. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
  44. package/docs/scripts/prettify/lang-css.js +0 -0
  45. package/docs/scripts/prettify/prettify.js +0 -0
  46. package/docs/scripts/search.js +0 -0
  47. package/docs/styles/jsdoc.css +0 -0
  48. package/docs/styles/prettify.css +0 -0
  49. package/docs/user_memberships.js.html +0 -0
  50. package/jest.config.js +0 -0
  51. package/jsdoc.json +0 -0
  52. package/package.json +1 -1
  53. package/src/contentMetaData.js +0 -0
  54. package/src/contentTypeConfig.js +53 -1
  55. package/src/index.d.ts +2 -0
  56. package/src/index.js +2 -0
  57. package/src/infrastructure/http/HttpClient.ts +0 -0
  58. package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
  59. package/src/infrastructure/http/index.ts +0 -0
  60. package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
  61. package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
  62. package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
  63. package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
  64. package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
  65. package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +4 -0
  66. package/src/lib/httpHelper.js +0 -0
  67. package/src/lib/lastUpdated.js +0 -0
  68. package/src/services/api/types.js +0 -0
  69. package/src/services/api/types.ts +0 -0
  70. package/src/services/config.js +0 -0
  71. package/src/services/content-org/content-org.js +0 -0
  72. package/src/services/content-org/guided-courses.ts +0 -0
  73. package/src/services/content-org/playlists-types.js +0 -0
  74. package/src/services/content-org/playlists.js +0 -0
  75. package/src/services/content.js +0 -0
  76. package/src/services/contentAggregator.js +0 -0
  77. package/src/services/contentLikes.js +0 -0
  78. package/src/services/contentProgress.js +0 -0
  79. package/src/services/dataContext.js +0 -0
  80. package/src/services/dateUtils.js +0 -0
  81. package/src/services/eventsAPI.js +0 -0
  82. package/src/services/forums/categories.ts +0 -0
  83. package/src/services/forums/posts.ts +0 -0
  84. package/src/services/forums/threads.ts +0 -0
  85. package/src/services/forums/types.ts +0 -0
  86. package/src/services/gamification/awards.ts +0 -0
  87. package/src/services/gamification/gamification.js +0 -0
  88. package/src/services/imageSRCBuilder.js +0 -0
  89. package/src/services/imageSRCVerify.js +0 -0
  90. package/src/services/railcontent.js +0 -0
  91. package/src/services/recommendations.js +0 -0
  92. package/src/services/sanity.js +16 -10
  93. package/src/services/types.js +0 -0
  94. package/src/services/user/account.ts +0 -0
  95. package/src/services/user/chat.js +0 -0
  96. package/src/services/user/interests.js +0 -0
  97. package/src/services/user/management.js +0 -0
  98. package/src/services/user/memberships.ts +0 -0
  99. package/src/services/user/notifications.js +0 -0
  100. package/src/services/user/onboarding.ts +0 -0
  101. package/src/services/user/permissions.js +0 -0
  102. package/src/services/user/profile.js +0 -0
  103. package/src/services/user/sessions.js +0 -0
  104. package/src/services/user/types.js +0 -0
  105. package/src/services/user/user-management-system.js +0 -0
  106. package/src/services/userActivity.js +0 -0
  107. package/test/HttpClient.test.js +0 -0
  108. package/test/content.test.js +0 -0
  109. package/test/contentLikes.test.js +0 -0
  110. package/test/contentProgress.test.js +0 -0
  111. package/test/dataContext.test.js +0 -0
  112. package/test/forum.test.js +0 -0
  113. package/test/imageSRCBuilder.test.js +0 -0
  114. package/test/imageSRCVerify.test.js +0 -0
  115. package/test/initializeTests.js +0 -0
  116. package/test/lib/lastUpdated.test.js +0 -0
  117. package/test/live/contentProgressLive.test.js +0 -0
  118. package/test/live/railcontentLive.test.js +0 -0
  119. package/test/localStorageMock.js +0 -0
  120. package/test/log.js +0 -0
  121. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  122. package/test/mockData/mockData_progress_content.json +0 -0
  123. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  124. package/test/mockData/mockData_user_practices.json +0 -0
  125. package/test/notifications.test.js +0 -0
  126. package/test/progressRows.test.js +0 -0
  127. package/test/sanityQueryService.test.js +0 -0
  128. package/test/streakMessage.test.js +0 -0
  129. package/test/user/permissions.test.js +0 -0
  130. package/test/userActivity.test.js +0 -0
  131. package/tools/generate-index.cjs +0 -0
  132. package/.claude/settings.local.json +0 -11
  133. package/.yarnrc.yml +0 -1
  134. package/image-20250923-212426.png +0 -0
  135. 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
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "musora-content-services",
3
- "version": "2.60.2",
3
+ "version": "2.61.1",
4
4
  "description": "A package for Musoras content services ",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
File without changes
@@ -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
@@ -13,6 +13,10 @@ export class DefaultHeaderProvider implements HeaderProvider {
13
13
  headers['M-Client-Timezone'] = globalConfig.localTimezoneString
14
14
  }
15
15
 
16
+ if (globalConfig.isMA) {
17
+ headers['X-Client-Platform'] = 'mobile'
18
+ }
19
+
16
20
  return headers
17
21
  }
18
22
  }
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
@@ -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 = 'method-intro'
2283
+ const _type = "method-intro";
2282
2284
  const filter = `_type == '${_type}' && brand == '${brand}'`;
2283
- const query =`*[${filter}] {
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
- return fetchSanity(query, false)
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
  }
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/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
@@ -1,11 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Read(//app/musora-platform-backend/**)",
5
- "Read(//app/musora-platform-frontend/**)",
6
- "Bash(find:*)"
7
- ],
8
- "deny": [],
9
- "ask": []
10
- }
11
- }
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
- }