musora-content-services 2.104.2 → 2.104.5

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 (176) hide show
  1. package/.claude/settings.local.json +3 -12
  2. package/.coderabbit.yaml +0 -0
  3. package/.editorconfig +0 -0
  4. package/.github/pull_request_template.md +0 -0
  5. package/.github/workflows/conventional-commits.yaml +0 -0
  6. package/.github/workflows/docs.js.yml +0 -0
  7. package/.github/workflows/node.js.yml +0 -0
  8. package/.prettierignore +0 -0
  9. package/.prettierrc +0 -0
  10. package/CHANGELOG.md +16 -0
  11. package/CLAUDE.md +0 -0
  12. package/README.md +0 -0
  13. package/babel.config.cjs +0 -0
  14. package/jest.config.js +0 -0
  15. package/jsdoc.json +0 -0
  16. package/package.json +1 -1
  17. package/src/constants/award-assets.js +0 -0
  18. package/src/contentMetaData.js +0 -0
  19. package/src/infrastructure/http/HttpClient.ts +0 -0
  20. package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
  21. package/src/infrastructure/http/index.ts +0 -0
  22. package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
  23. package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
  24. package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
  25. package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
  26. package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
  27. package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +0 -0
  28. package/src/lib/brands.ts +0 -0
  29. package/src/lib/lastUpdated.js +0 -0
  30. package/src/services/api/types.js +0 -0
  31. package/src/services/api/types.ts +0 -0
  32. package/src/services/awards/internal/.indexignore +0 -0
  33. package/src/services/awards/internal/award-definitions.js +0 -0
  34. package/src/services/awards/internal/award-events.js +0 -0
  35. package/src/services/awards/internal/certificate-builder.js +0 -0
  36. package/src/services/awards/internal/completion-data-generator.js +0 -0
  37. package/src/services/awards/internal/content-progress-observer.js +0 -0
  38. package/src/services/awards/internal/image-utils.js +0 -0
  39. package/src/services/awards/internal/message-generator.js +0 -0
  40. package/src/services/awards/internal/types.js +0 -0
  41. package/src/services/awards/types.js +0 -0
  42. package/src/services/config.js +0 -0
  43. package/src/services/content/content.ts +0 -0
  44. package/src/services/content-org/content-org.js +0 -0
  45. package/src/services/content-org/guided-courses.ts +0 -0
  46. package/src/services/content-org/learning-paths.ts +13 -1
  47. package/src/services/content-org/playlists-types.js +0 -0
  48. package/src/services/content-org/playlists.js +0 -0
  49. package/src/services/content.js +6 -1
  50. package/src/services/contentLikes.js +0 -0
  51. package/src/services/dataContext.js +0 -0
  52. package/src/services/dateUtils.js +0 -0
  53. package/src/services/eventsAPI.js +0 -0
  54. package/src/services/forums/categories.ts +0 -0
  55. package/src/services/forums/posts.ts +0 -0
  56. package/src/services/forums/types.ts +0 -0
  57. package/src/services/gamification/awards.ts +0 -0
  58. package/src/services/gamification/gamification.js +0 -0
  59. package/src/services/imageSRCBuilder.js +0 -0
  60. package/src/services/imageSRCVerify.js +0 -0
  61. package/src/services/liveTesting.ts +0 -0
  62. package/src/services/permissions/PermissionsAdapter.ts +0 -0
  63. package/src/services/permissions/PermissionsAdapterFactory.ts +0 -0
  64. package/src/services/permissions/PermissionsV1Adapter.ts +0 -0
  65. package/src/services/permissions/README.md +0 -0
  66. package/src/services/permissions/index.ts +0 -0
  67. package/src/services/progress-row/method-card.js +0 -0
  68. package/src/services/recommendations.js +0 -0
  69. package/src/services/reporting/README.md +0 -0
  70. package/src/services/reporting/reporting.ts +0 -0
  71. package/src/services/reporting/types.ts +0 -0
  72. package/src/services/sanity.js +2 -1
  73. package/src/services/sentry/.indexignore +0 -0
  74. package/src/services/sentry/index.ts +0 -0
  75. package/src/services/sync/.indexignore +0 -0
  76. package/src/services/sync/adapters/factory.ts +0 -0
  77. package/src/services/sync/adapters/lokijs.ts +0 -0
  78. package/src/services/sync/adapters/sqlite.ts +0 -0
  79. package/src/services/sync/concurrency-safety.ts +0 -0
  80. package/src/services/sync/context/index.ts +0 -0
  81. package/src/services/sync/context/providers/base.ts +0 -0
  82. package/src/services/sync/context/providers/connectivity.ts +0 -0
  83. package/src/services/sync/context/providers/durability.ts +0 -0
  84. package/src/services/sync/context/providers/index.ts +0 -0
  85. package/src/services/sync/context/providers/session.ts +0 -0
  86. package/src/services/sync/context/providers/tabs.ts +0 -0
  87. package/src/services/sync/context/providers/visibility.ts +0 -0
  88. package/src/services/sync/database/factory.ts +0 -0
  89. package/src/services/sync/errors/boundary.ts +0 -0
  90. package/src/services/sync/errors/index.ts +0 -0
  91. package/src/services/sync/index.ts +0 -0
  92. package/src/services/sync/models/Base.ts +0 -0
  93. package/src/services/sync/models/ContentLike.ts +0 -0
  94. package/src/services/sync/models/Practice.ts +0 -0
  95. package/src/services/sync/models/PracticeDayNote.ts +0 -0
  96. package/src/services/sync/models/UserAwardProgress.ts +0 -0
  97. package/src/services/sync/models/index.ts +0 -0
  98. package/src/services/sync/repositories/base.ts +0 -0
  99. package/src/services/sync/repositories/content-likes.ts +0 -0
  100. package/src/services/sync/repositories/index.ts +0 -0
  101. package/src/services/sync/repositories/practice-day-notes.ts +0 -0
  102. package/src/services/sync/repositories/practices.ts +0 -0
  103. package/src/services/sync/repository-proxy.ts +0 -0
  104. package/src/services/sync/resolver.ts +0 -0
  105. package/src/services/sync/retry.ts +0 -0
  106. package/src/services/sync/run-scope.ts +0 -0
  107. package/src/services/sync/schema/index.ts +0 -0
  108. package/src/services/sync/serializers/index.ts +0 -0
  109. package/src/services/sync/serializers/model.ts +0 -0
  110. package/src/services/sync/serializers/raw.ts +0 -0
  111. package/src/services/sync/store/push-coalescer.ts +0 -0
  112. package/src/services/sync/store-configs.ts +0 -0
  113. package/src/services/sync/strategies/base.ts +0 -0
  114. package/src/services/sync/strategies/index.ts +0 -0
  115. package/src/services/sync/strategies/initial.ts +0 -0
  116. package/src/services/sync/strategies/polling.ts +0 -0
  117. package/src/services/sync/telemetry/index.ts +0 -0
  118. package/src/services/sync/telemetry/sampling.ts +0 -0
  119. package/src/services/sync/utils/event-emitter.ts +0 -0
  120. package/src/services/sync/utils/index.ts +0 -0
  121. package/src/services/sync/utils/throttle.ts +0 -0
  122. package/src/services/sync/utils/timers.ts +0 -0
  123. package/src/services/types.js +0 -0
  124. package/src/services/user/account.ts +0 -0
  125. package/src/services/user/chat.js +0 -0
  126. package/src/services/user/interests.js +0 -0
  127. package/src/services/user/management.js +0 -0
  128. package/src/services/user/notifications.js +0 -0
  129. package/src/services/user/payments.ts +0 -0
  130. package/src/services/user/permissions.js +0 -0
  131. package/src/services/user/profile.js +0 -0
  132. package/src/services/user/types.d.ts +0 -0
  133. package/src/services/user/types.js +0 -0
  134. package/src/services/user/user-management-system.js +0 -0
  135. package/test/HttpClient.test.js +0 -0
  136. package/test/awards/award-alacarte-observer.test.js +0 -0
  137. package/test/awards/award-auto-refresh.test.js +0 -0
  138. package/test/awards/award-calculations.test.js +0 -0
  139. package/test/awards/award-certificate-display.test.js +0 -0
  140. package/test/awards/award-collection-edge-cases.test.js +0 -0
  141. package/test/awards/award-collection-filtering.test.js +0 -0
  142. package/test/awards/award-exclusion-handling.test.js +0 -0
  143. package/test/awards/award-multi-lesson.test.js +0 -0
  144. package/test/awards/award-observer-integration.test.js +0 -0
  145. package/test/awards/award-query-messages.test.js +0 -0
  146. package/test/awards/award-user-collection.test.js +0 -0
  147. package/test/awards/duplicate-prevention.test.js +0 -0
  148. package/test/awards/helpers/completion-mock.js +0 -0
  149. package/test/awards/helpers/index.js +0 -0
  150. package/test/awards/helpers/mock-setup.js +0 -0
  151. package/test/awards/helpers/progress-emitter.js +0 -0
  152. package/test/awards/message-generator.test.js +0 -0
  153. package/test/content.test.js +0 -0
  154. package/test/contentLikes.test.js +0 -0
  155. package/test/contentProgress.test.js +0 -0
  156. package/test/dataContext.test.js +0 -0
  157. package/test/forum.test.js +0 -0
  158. package/test/imageSRCBuilder.test.js +0 -0
  159. package/test/imageSRCVerify.test.js +0 -0
  160. package/test/lib/lastUpdated.test.js +0 -0
  161. package/test/live/contentProgressLive.test.js +0 -0
  162. package/test/live/railcontentLive.test.js +0 -0
  163. package/test/localStorageMock.js +0 -0
  164. package/test/log.js +0 -0
  165. package/test/mockData/award-definitions.js +0 -0
  166. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  167. package/test/mockData/mockData_progress_content.json +0 -0
  168. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  169. package/test/mockData/mockData_user_practices.json +0 -0
  170. package/test/notifications.test.js +0 -0
  171. package/test/progressRows.test.js +0 -0
  172. package/test/streakMessage.test.js +0 -0
  173. package/test/sync/models/award-database-integration.test.js +0 -0
  174. package/test/user/permissions.test.js +0 -0
  175. package/test/userActivity.test.js +0 -0
  176. package/tools/generate-index.cjs +0 -0
@@ -1,18 +1,9 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(find:*)",
5
- "Bash(docker exec:*)",
6
- "Bash(npm test:*)",
7
- "WebSearch",
8
- "WebFetch(domain:watermelondb.dev)",
9
- "WebFetch(domain:github.com)",
10
- "Bash(git checkout:*)",
11
- "Bash(npm run doc:*)",
12
- "Bash(cat:*)",
13
- "Bash(tr:*)"
4
+ "Bash(rg:*)",
5
+ "Bash(npm run lint:*)"
14
6
  ],
15
- "deny": [],
16
- "ask": []
7
+ "deny": []
17
8
  }
18
9
  }
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,22 @@
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.104.5](https://github.com/railroadmedia/musora-content-services/compare/v2.104.4...v2.104.5) (2025-12-12)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * conditionally update the active path ([#653](https://github.com/railroadmedia/musora-content-services/issues/653)) ([4775e89](https://github.com/railroadmedia/musora-content-services/commit/4775e89c375aedac310ded0effce4786d48ffcd2))
11
+
12
+ ### [2.104.4](https://github.com/railroadmedia/musora-content-services/compare/v2.104.3...v2.104.4) (2025-12-12)
13
+
14
+ ### [2.104.3](https://github.com/railroadmedia/musora-content-services/compare/v2.104.0...v2.104.3) (2025-12-12)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **MU2-1309:** navigateTo missing on owned contents ([9b12213](https://github.com/railroadmedia/musora-content-services/commit/9b12213ad8061d60eada1603c0384d36b7a955f3))
20
+
5
21
  ### [2.104.2](https://github.com/railroadmedia/musora-content-services/compare/v2.104.1...v2.104.2) (2025-12-12)
6
22
 
7
23
  ### [2.104.1](https://github.com/railroadmedia/musora-content-services/compare/v2.104.0...v2.104.1) (2025-12-12)
package/CLAUDE.md CHANGED
File without changes
package/README.md CHANGED
File without changes
package/babel.config.cjs CHANGED
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.104.2",
3
+ "version": "2.104.5",
4
4
  "description": "A package for Musoras content services ",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
File without changes
File without changes
File without changes
File without changes
File without changes
package/src/lib/brands.ts 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
@@ -341,12 +341,14 @@ interface completeLearningPathIntroVideo {
341
341
  intro_video_response: SyncWriteDTO<ContentProgress, any> | null
342
342
  learning_path_reset_response: SyncWriteDTO<ContentProgress, any> | null
343
343
  lesson_import_response: SyncWriteDTO<ContentProgress, any> | null
344
+ update_dailies_response: DailySessionResponse | null
344
345
  }
345
346
  /**
346
347
  * Handles completion of learning path intro video and other related actions.
347
348
  * @param introVideoId - The learning path intro video content ID.
348
349
  * @param learningPathId - The content_id of the learning path that this learning path intro video belongs to.
349
350
  * @param lessonsToImport - content ids for all lessons with progress found during intro video progress check. empty if user chose not to keep learning path progress.
351
+ * @param brand
350
352
  * @returns {Promise<Array>} response - The response object.
351
353
  * @returns {Promise<Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
352
354
  * @returns {Promise<void>} response.learning_path_reset_response - The reset learning path response.
@@ -355,7 +357,8 @@ interface completeLearningPathIntroVideo {
355
357
  export async function completeLearningPathIntroVideo(
356
358
  introVideoId: number,
357
359
  learningPathId: number,
358
- lessonsToImport: number[] | null
360
+ lessonsToImport: number[] | null,
361
+ brand: string | null
359
362
  ) {
360
363
  let response = {} as completeLearningPathIntroVideo
361
364
 
@@ -368,6 +371,15 @@ export async function completeLearningPathIntroVideo(
368
371
 
369
372
  } else {
370
373
  response.lesson_import_response = await contentStatusCompletedMany(lessonsToImport, collection)
374
+
375
+ const activePath = await getActivePath(brand)
376
+ if (activePath.active_learning_path_id === learningPathId) {
377
+ response.update_dailies_response = await updateDailySession(
378
+ brand,
379
+ getToday(),
380
+ true
381
+ )
382
+ }
371
383
  }
372
384
 
373
385
  return response
File without changes
File without changes
@@ -527,5 +527,10 @@ export async function getOwnedContent(brand, {
527
527
  };
528
528
  }
529
529
 
530
- return data;
530
+ return await addContextToContent(() => data, {
531
+ dataField: 'entity',
532
+ addNavigateTo: true,
533
+ addProgressPercentage: true,
534
+ addProgressStatus: true,
535
+ });
531
536
  }
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
@@ -2068,7 +2068,8 @@ export async function fetchOwnedContent(
2068
2068
  showOnlyOwnedContent: true, // Key parameter: exclude membership content
2069
2069
  }).buildFilter()
2070
2070
 
2071
- const fieldsString = DEFAULT_FIELDS.join(',')
2071
+ // Use 'tab-data' to include children field (needed for navigateTo calculation)
2072
+ const fieldsString = await getFieldsForContentTypeWithFilteredChildren('tab-data', true)
2072
2073
 
2073
2074
  const query = buildEntityAndTotalQuery(filterWithRestrictions, fieldsString, {
2074
2075
  sortOrder: sortOrder,
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
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
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