musora-content-services 2.134.2 → 2.134.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 (220) hide show
  1. package/.claude/settings.local.json +4 -11
  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 +7 -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/constants/membership-permissions.ts +0 -0
  19. package/src/contentMetaData.js +0 -0
  20. package/src/index.d.ts +0 -0
  21. package/src/index.js +0 -0
  22. package/src/infrastructure/http/HttpClient.ts +0 -0
  23. package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
  24. package/src/infrastructure/http/index.ts +0 -0
  25. package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
  26. package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
  27. package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
  28. package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
  29. package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
  30. package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +0 -0
  31. package/src/lib/ads/monoid.ts +0 -0
  32. package/src/lib/ads/semigroup.ts +0 -0
  33. package/src/lib/brands.ts +0 -0
  34. package/src/lib/lastUpdated.js +0 -0
  35. package/src/lib/sanity/field-access.ts +0 -0
  36. package/src/lib/sanity/filter.ts +0 -0
  37. package/src/lib/sanity/query.ts +0 -0
  38. package/src/services/api/types.js +0 -0
  39. package/src/services/api/types.ts +0 -0
  40. package/src/services/awards/award-callbacks.js +0 -0
  41. package/src/services/awards/award-query.js +0 -0
  42. package/src/services/awards/internal/.indexignore +0 -0
  43. package/src/services/awards/internal/award-definitions.js +0 -0
  44. package/src/services/awards/internal/award-events.js +0 -0
  45. package/src/services/awards/internal/award-manager.js +0 -0
  46. package/src/services/awards/internal/certificate-builder.js +0 -0
  47. package/src/services/awards/internal/completion-data-generator.js +0 -0
  48. package/src/services/awards/internal/content-progress-observer.js +0 -0
  49. package/src/services/awards/internal/image-utils.js +0 -0
  50. package/src/services/awards/internal/message-generator.js +0 -0
  51. package/src/services/awards/internal/types.js +0 -0
  52. package/src/services/awards/types.d.ts +0 -0
  53. package/src/services/awards/types.js +0 -0
  54. package/src/services/config.js +0 -0
  55. package/src/services/content/artist.ts +0 -0
  56. package/src/services/content/content.ts +0 -0
  57. package/src/services/content/genre.ts +0 -0
  58. package/src/services/content/instructor.ts +0 -0
  59. package/src/services/content-org/content-org.js +0 -0
  60. package/src/services/content-org/guided-courses.ts +0 -0
  61. package/src/services/content-org/learning-paths.ts +17 -13
  62. package/src/services/content-org/playlists-types.js +0 -0
  63. package/src/services/content-org/playlists.js +0 -0
  64. package/src/services/content.js +0 -0
  65. package/src/services/contentAggregator.js +0 -0
  66. package/src/services/contentLikes.js +0 -0
  67. package/src/services/dataContext.js +0 -0
  68. package/src/services/dateUtils.js +0 -0
  69. package/src/services/eventsAPI.js +0 -0
  70. package/src/services/forums/categories.ts +0 -0
  71. package/src/services/forums/forums.ts +0 -0
  72. package/src/services/forums/posts.ts +0 -0
  73. package/src/services/forums/threads.ts +0 -0
  74. package/src/services/forums/types.ts +0 -0
  75. package/src/services/gamification/awards.ts +0 -0
  76. package/src/services/gamification/gamification.js +0 -0
  77. package/src/services/imageSRCBuilder.js +0 -0
  78. package/src/services/imageSRCVerify.js +0 -0
  79. package/src/services/liveTesting.ts +0 -0
  80. package/src/services/permissions/PermissionsAdapter.ts +0 -0
  81. package/src/services/permissions/PermissionsAdapterFactory.ts +0 -0
  82. package/src/services/permissions/PermissionsV1Adapter.ts +0 -0
  83. package/src/services/permissions/PermissionsV2Adapter.ts +0 -0
  84. package/src/services/permissions/README.md +0 -0
  85. package/src/services/permissions/index.ts +0 -0
  86. package/src/services/progress-events.js +0 -0
  87. package/src/services/progress-row/base.js +0 -0
  88. package/src/services/progress-row/rows/.indexignore +0 -0
  89. package/src/services/progress-row/rows/method-card.js +0 -0
  90. package/src/services/progress-row/rows/playlist-card.js +0 -0
  91. package/src/services/railcontent.js +0 -0
  92. package/src/services/recommendations.js +0 -0
  93. package/src/services/reporting/README.md +0 -0
  94. package/src/services/reporting/reporting.ts +0 -0
  95. package/src/services/reporting/types.ts +0 -0
  96. package/src/services/sentry/.indexignore +0 -0
  97. package/src/services/state.ts +0 -0
  98. package/src/services/sync/.indexignore +0 -0
  99. package/src/services/sync/adapters/factory.ts +0 -0
  100. package/src/services/sync/adapters/lokijs.ts +0 -0
  101. package/src/services/sync/adapters/sqlite.ts +0 -0
  102. package/src/services/sync/context/index.ts +0 -0
  103. package/src/services/sync/context/providers/base.ts +0 -0
  104. package/src/services/sync/context/providers/connectivity.ts +0 -0
  105. package/src/services/sync/context/providers/durability.ts +0 -0
  106. package/src/services/sync/context/providers/index.ts +0 -0
  107. package/src/services/sync/context/providers/session.ts +0 -0
  108. package/src/services/sync/context/providers/tabs.ts +0 -0
  109. package/src/services/sync/context/providers/visibility.ts +0 -0
  110. package/src/services/sync/database/factory.ts +0 -0
  111. package/src/services/sync/effects/index.ts +0 -0
  112. package/src/services/sync/effects/logout-warning.ts +0 -0
  113. package/src/services/sync/effects/push-failure-notification.ts +0 -0
  114. package/src/services/sync/errors/boundary.ts +0 -0
  115. package/src/services/sync/errors/index.ts +0 -0
  116. package/src/services/sync/errors/validators.ts +0 -0
  117. package/src/services/sync/index.ts +0 -0
  118. package/src/services/sync/manager.ts +0 -0
  119. package/src/services/sync/models/Base.ts +0 -0
  120. package/src/services/sync/models/ContentLike.ts +0 -0
  121. package/src/services/sync/models/ContentProgress.ts +0 -0
  122. package/src/services/sync/models/Practice.ts +0 -0
  123. package/src/services/sync/models/PracticeDayNote.ts +0 -0
  124. package/src/services/sync/models/UserAwardProgress.ts +0 -0
  125. package/src/services/sync/models/index.ts +0 -0
  126. package/src/services/sync/repositories/base.ts +0 -0
  127. package/src/services/sync/repositories/content-likes.ts +0 -0
  128. package/src/services/sync/repositories/index.ts +0 -0
  129. package/src/services/sync/repositories/practice-day-notes.ts +0 -0
  130. package/src/services/sync/repositories/practices.ts +0 -0
  131. package/src/services/sync/repositories/user-award-progress.ts +0 -0
  132. package/src/services/sync/repository-proxy.ts +0 -0
  133. package/src/services/sync/resolver.ts +0 -0
  134. package/src/services/sync/retry.ts +0 -0
  135. package/src/services/sync/run-scope.ts +0 -0
  136. package/src/services/sync/schema/index.ts +0 -0
  137. package/src/services/sync/serializers/index.ts +0 -0
  138. package/src/services/sync/serializers/model.ts +0 -0
  139. package/src/services/sync/serializers/raw.ts +0 -0
  140. package/src/services/sync/store/push-coalescer.ts +0 -0
  141. package/src/services/sync/store-configs.ts +0 -0
  142. package/src/services/sync/strategies/base.ts +0 -0
  143. package/src/services/sync/strategies/index.ts +0 -0
  144. package/src/services/sync/strategies/initial.ts +0 -0
  145. package/src/services/sync/strategies/polling.ts +0 -0
  146. package/src/services/sync/telemetry/flood-prevention.ts +0 -0
  147. package/src/services/sync/telemetry/index.ts +0 -0
  148. package/src/services/sync/utils/event-emitter.ts +0 -0
  149. package/src/services/sync/utils/index.ts +0 -0
  150. package/src/services/sync/utils/throttle.ts +0 -0
  151. package/src/services/sync/utils/timers.ts +0 -0
  152. package/src/services/types.js +0 -0
  153. package/src/services/urlBuilder.ts +0 -0
  154. package/src/services/user/account.ts +0 -0
  155. package/src/services/user/chat.js +0 -0
  156. package/src/services/user/interests.js +0 -0
  157. package/src/services/user/management.js +0 -0
  158. package/src/services/user/memberships.ts +0 -0
  159. package/src/services/user/notifications.js +0 -0
  160. package/src/services/user/onboarding.ts +0 -0
  161. package/src/services/user/payments.ts +0 -0
  162. package/src/services/user/permissions.js +0 -0
  163. package/src/services/user/profile.js +0 -0
  164. package/src/services/user/sessions.js +0 -0
  165. package/src/services/user/streakCalculator.ts +0 -0
  166. package/src/services/user/types.d.ts +0 -0
  167. package/src/services/user/types.js +0 -0
  168. package/src/services/user/user-management-system.js +0 -0
  169. package/src/services/userActivity.js +0 -0
  170. package/test/HttpClient.test.js +0 -0
  171. package/test/awards/award-alacarte-observer.test.js +0 -0
  172. package/test/awards/award-auto-refresh.test.js +0 -0
  173. package/test/awards/award-calculations.test.js +0 -0
  174. package/test/awards/award-certificate-display.test.js +0 -0
  175. package/test/awards/award-collection-edge-cases.test.js +0 -0
  176. package/test/awards/award-collection-filtering.test.js +0 -0
  177. package/test/awards/award-completion-flow.test.js +0 -0
  178. package/test/awards/award-exclusion-handling.test.js +0 -0
  179. package/test/awards/award-multi-lesson.test.js +0 -0
  180. package/test/awards/award-observer-integration.test.js +0 -0
  181. package/test/awards/award-query-messages.test.js +0 -0
  182. package/test/awards/award-user-collection.test.js +0 -0
  183. package/test/awards/duplicate-prevention.test.js +0 -0
  184. package/test/awards/helpers/completion-mock.js +0 -0
  185. package/test/awards/helpers/index.js +0 -0
  186. package/test/awards/helpers/mock-setup.js +0 -0
  187. package/test/awards/helpers/progress-emitter.js +0 -0
  188. package/test/awards/message-generator.test.js +0 -0
  189. package/test/content.test.js +0 -0
  190. package/test/contentLikes.test.js +0 -0
  191. package/test/contentProgress.test.js +0 -0
  192. package/test/dataContext.test.js +0 -0
  193. package/test/forum.test.js +0 -0
  194. package/test/imageSRCBuilder.test.js +0 -0
  195. package/test/imageSRCVerify.test.js +0 -0
  196. package/test/initializeTests.js +0 -0
  197. package/test/learningPaths.test.js +0 -0
  198. package/test/lib/__snapshots__/filter.test.ts.snap +0 -0
  199. package/test/lib/filter.test.ts +0 -0
  200. package/test/lib/lastUpdated.test.js +0 -0
  201. package/test/lib/query.test.ts +0 -0
  202. package/test/live/contentProgressLive.test.js +0 -0
  203. package/test/live/railcontentLive.test.js +0 -0
  204. package/test/localStorageMock.js +0 -0
  205. package/test/log.js +0 -0
  206. package/test/mockData/award-definitions.js +0 -0
  207. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  208. package/test/mockData/mockData_progress_content.json +0 -0
  209. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  210. package/test/mockData/mockData_user_practices.json +0 -0
  211. package/test/notifications.test.js +0 -0
  212. package/test/progressRows.test.js +0 -0
  213. package/test/sanityQueryService.test.js +0 -0
  214. package/test/streakMessage.test.js +0 -0
  215. package/test/sync/adapter.ts +0 -0
  216. package/test/sync/initialize-sync-manager.js +0 -0
  217. package/test/sync/models/award-database-integration.test.js +0 -0
  218. package/test/user/permissions.test.js +0 -0
  219. package/test/userActivity.test.js +0 -0
  220. package/tools/generate-index.cjs +0 -0
@@ -1,16 +1,9 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(tree:*)",
5
- "Bash(find:*)",
6
- "Bash(docker exec:*)",
7
- "Bash(node:*)",
8
- "Bash(npm run build-index:*)",
9
- "Bash(npm run link_mcs:*)",
10
- "Bash(./link_mcs.sh:*)",
11
- "Bash(curl:*)",
12
- "Bash(php artisan:*)",
13
- "Bash(git checkout:*)"
14
- ]
4
+ "Bash(rg:*)",
5
+ "Bash(npm run lint:*)"
6
+ ],
7
+ "deny": []
15
8
  }
16
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,13 @@
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.134.3](https://github.com/railroadmedia/musora-content-services/compare/v2.134.2...v2.134.3) (2026-02-13)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **T3PS-2270:** fixes create Daily Session calling when no daily session exists ([#806](https://github.com/railroadmedia/musora-content-services/issues/806)) ([63f502a](https://github.com/railroadmedia/musora-content-services/commit/63f502a374b84100b82d95582c31f564b62db12b))
11
+
5
12
  ### [2.134.2](https://github.com/railroadmedia/musora-content-services/compare/v2.134.0...v2.134.2) (2026-02-13)
6
13
 
7
14
 
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.134.2",
3
+ "version": "2.134.3",
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
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -27,8 +27,8 @@ import { LEARNING_PATH_LESSON } from "../../contentTypeConfig";
27
27
 
28
28
  const BASE_PATH: string = `/api/content-org`
29
29
  const LEARNING_PATHS_PATH = `${BASE_PATH}/v1/user/learning-paths`
30
- let dailySessionPromise: Promise<DailySessionResponse> | null = null
31
- let activePathPromise: Promise<ActiveLearningPathResponse> | null = null
30
+ let dailySessionPromise: Promise<DailySessionResponse|""> | null = null
31
+ let activePathPromise: Promise<ActiveLearningPathResponse|""> | null = null
32
32
 
33
33
  interface ActiveLearningPathResponse {
34
34
  user_id: number
@@ -70,16 +70,15 @@ export async function getDailySession(
70
70
  const dateWithTimezone = formatLocalDateTime(userDate)
71
71
  const url: string = `${LEARNING_PATHS_PATH}/daily-session/get?brand=${brand}&userDate=${encodeURIComponent(dateWithTimezone)}`
72
72
  try {
73
- const response = (await dataPromiseGET(url, forceRefresh)) as DailySessionResponse
73
+ const response = (await dataPromiseGET(url, forceRefresh)) as DailySessionResponse|""
74
+ dailySessionPromise = null
75
+
74
76
  if (!response) {
75
77
  return await updateDailySession(brand, userDate, false)
76
78
  }
77
- dailySessionPromise = null // reset promise after successful fetch
78
79
  return response as DailySessionResponse
80
+
79
81
  } catch (error: any) {
80
- if (error.status === 204) {
81
- return await updateDailySession(brand, userDate, false)
82
- }
83
82
  throw error
84
83
  }
85
84
  }
@@ -105,9 +104,12 @@ export async function updateDailySession(
105
104
  try {
106
105
  const response = (await POST(url, body)) as DailySessionResponse
107
106
 
108
- if (response) {
107
+ if (response) { // refresh cached value
109
108
  const urlGet: string = `${LEARNING_PATHS_PATH}/daily-session/get?brand=${brand}&userDate=${encodeURIComponent(dateWithTimezone)}`
110
- dataPromiseGET(urlGet, true) // refresh cache
109
+ dataPromiseGET(urlGet, true).then(() => {
110
+ dailySessionPromise = null
111
+ })
112
+
111
113
  }
112
114
 
113
115
  return response
@@ -128,8 +130,8 @@ function formatLocalDateTime(date: Date): string {
128
130
  export async function getActivePath(brand: string, forceRefresh: boolean = false) {
129
131
  const url: string = `${LEARNING_PATHS_PATH}/active-path/get?brand=${brand}`
130
132
 
131
- const response = (await dataPromiseGET(url, forceRefresh)) as ActiveLearningPathResponse
132
- activePathPromise = null // reset promise after successful fetch
133
+ const response = await dataPromiseGET(url, forceRefresh) as ActiveLearningPathResponse
134
+ activePathPromise = null
133
135
 
134
136
  return response
135
137
  }
@@ -148,7 +150,9 @@ export async function startLearningPath(brand: string, learningPathId: number) {
148
150
  // manual BE call to avoid recursive POST<->GET calls
149
151
  if (response) {
150
152
  const urlGet: string = `${LEARNING_PATHS_PATH}/active-path/get?brand=${brand}`
151
- dataPromiseGET(urlGet, true) // refresh cache
153
+ dataPromiseGET(urlGet, true).then(() => {
154
+ activePathPromise = null
155
+ })
152
156
  }
153
157
 
154
158
  return response
@@ -157,7 +161,7 @@ export async function startLearningPath(brand: string, learningPathId: number) {
157
161
  async function dataPromiseGET(
158
162
  url: string,
159
163
  forceRefresh: boolean
160
- ): Promise<DailySessionResponse | ActiveLearningPathResponse> {
164
+ ): Promise<DailySessionResponse | ActiveLearningPathResponse | ""> {
161
165
  if (url.includes('daily-session')) {
162
166
  if (!dailySessionPromise || forceRefresh) {
163
167
  dailySessionPromise = GET(url, {
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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
File without changes
File without changes
File without changes