musora-content-services 2.129.3 → 2.131.0

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 (225) 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 +14 -0
  10. package/CLAUDE.md +0 -0
  11. package/README.md +0 -0
  12. package/babel.config.cjs +0 -0
  13. package/jest.config.js +0 -0
  14. package/jsdoc.json +0 -0
  15. package/package.json +2 -1
  16. package/src/constants/award-assets.js +0 -0
  17. package/src/constants/membership-permissions.ts +0 -0
  18. package/src/contentMetaData.js +0 -0
  19. package/src/filterBuilder.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/filter.ts +0 -0
  36. package/src/lib/sanity/query.ts +0 -0
  37. package/src/services/api/types.js +0 -0
  38. package/src/services/api/types.ts +0 -0
  39. package/src/services/awards/award-callbacks.js +0 -0
  40. package/src/services/awards/award-query.js +0 -0
  41. package/src/services/awards/internal/.indexignore +0 -0
  42. package/src/services/awards/internal/award-definitions.js +0 -0
  43. package/src/services/awards/internal/award-events.js +0 -0
  44. package/src/services/awards/internal/award-manager.js +0 -0
  45. package/src/services/awards/internal/certificate-builder.js +0 -0
  46. package/src/services/awards/internal/completion-data-generator.js +0 -0
  47. package/src/services/awards/internal/content-progress-observer.js +0 -0
  48. package/src/services/awards/internal/image-utils.js +0 -0
  49. package/src/services/awards/internal/message-generator.js +0 -0
  50. package/src/services/awards/internal/types.js +0 -0
  51. package/src/services/awards/types.d.ts +0 -0
  52. package/src/services/awards/types.js +0 -0
  53. package/src/services/config.js +0 -0
  54. package/src/services/content/artist.ts +0 -0
  55. package/src/services/content/content.ts +0 -0
  56. package/src/services/content/genre.ts +0 -0
  57. package/src/services/content/instructor.ts +0 -0
  58. package/src/services/content-org/content-org.js +0 -0
  59. package/src/services/content-org/guided-courses.ts +0 -0
  60. package/src/services/content-org/learning-paths.ts +0 -0
  61. package/src/services/content-org/playlists-types.js +0 -0
  62. package/src/services/content-org/playlists.js +0 -0
  63. package/src/services/contentAggregator.js +0 -0
  64. package/src/services/contentLikes.js +0 -0
  65. package/src/services/contentProgress.js +0 -0
  66. package/src/services/dataContext.js +0 -0
  67. package/src/services/dateUtils.js +0 -0
  68. package/src/services/eventsAPI.js +0 -0
  69. package/src/services/forums/categories.ts +0 -0
  70. package/src/services/forums/posts.ts +0 -0
  71. package/src/services/forums/threads.ts +0 -0
  72. package/src/services/forums/types.ts +0 -0
  73. package/src/services/gamification/awards.ts +0 -0
  74. package/src/services/gamification/gamification.js +0 -0
  75. package/src/services/imageSRCBuilder.js +0 -0
  76. package/src/services/imageSRCVerify.js +0 -0
  77. package/src/services/liveTesting.ts +0 -0
  78. package/src/services/permissions/PermissionsAdapter.ts +0 -0
  79. package/src/services/permissions/PermissionsAdapterFactory.ts +0 -0
  80. package/src/services/permissions/PermissionsV1Adapter.ts +0 -0
  81. package/src/services/permissions/PermissionsV2Adapter.ts +0 -0
  82. package/src/services/permissions/README.md +0 -0
  83. package/src/services/permissions/index.ts +0 -0
  84. package/src/services/progress-events.js +0 -0
  85. package/src/services/progress-row/base.js +0 -0
  86. package/src/services/progress-row/rows/.indexignore +0 -0
  87. package/src/services/progress-row/rows/content-card.js +0 -0
  88. package/src/services/progress-row/rows/method-card.js +0 -0
  89. package/src/services/progress-row/rows/playlist-card.js +0 -0
  90. package/src/services/railcontent.js +0 -0
  91. package/src/services/recommendations.js +0 -0
  92. package/src/services/reporting/README.md +0 -0
  93. package/src/services/reporting/reporting.ts +0 -0
  94. package/src/services/reporting/types.ts +0 -0
  95. package/src/services/sanity.js +1 -1
  96. package/src/services/sentry/.indexignore +0 -0
  97. package/src/services/sentry/index.ts +0 -0
  98. package/src/services/sync/.indexignore +0 -0
  99. package/src/services/sync/adapters/factory.ts +1 -1
  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/fetch.ts +23 -3
  118. package/src/services/sync/index.ts +0 -0
  119. package/src/services/sync/manager.ts +0 -0
  120. package/src/services/sync/models/Base.ts +0 -0
  121. package/src/services/sync/models/ContentLike.ts +0 -0
  122. package/src/services/sync/models/ContentProgress.ts +0 -0
  123. package/src/services/sync/models/Practice.ts +0 -0
  124. package/src/services/sync/models/PracticeDayNote.ts +0 -0
  125. package/src/services/sync/models/UserAwardProgress.ts +0 -0
  126. package/src/services/sync/models/index.ts +0 -0
  127. package/src/services/sync/repositories/base.ts +0 -0
  128. package/src/services/sync/repositories/content-likes.ts +0 -0
  129. package/src/services/sync/repositories/content-progress.ts +0 -0
  130. package/src/services/sync/repositories/index.ts +0 -0
  131. package/src/services/sync/repositories/practice-day-notes.ts +0 -0
  132. package/src/services/sync/repositories/practices.ts +0 -0
  133. package/src/services/sync/repositories/user-award-progress.ts +0 -0
  134. package/src/services/sync/repository-proxy.ts +1 -1
  135. package/src/services/sync/resolver.ts +0 -0
  136. package/src/services/sync/retry.ts +0 -0
  137. package/src/services/sync/run-scope.ts +0 -0
  138. package/src/services/sync/schema/index.ts +0 -0
  139. package/src/services/sync/serializers/index.ts +0 -0
  140. package/src/services/sync/serializers/model.ts +0 -0
  141. package/src/services/sync/serializers/raw.ts +0 -0
  142. package/src/services/sync/store/index.ts +0 -0
  143. package/src/services/sync/store/push-coalescer.ts +0 -0
  144. package/src/services/sync/store-configs.ts +0 -0
  145. package/src/services/sync/strategies/base.ts +0 -0
  146. package/src/services/sync/strategies/index.ts +0 -0
  147. package/src/services/sync/strategies/initial.ts +0 -0
  148. package/src/services/sync/strategies/polling.ts +0 -0
  149. package/src/services/sync/telemetry/flood-prevention.ts +0 -0
  150. package/src/services/sync/telemetry/index.ts +0 -0
  151. package/src/services/sync/telemetry/sampling.ts +0 -0
  152. package/src/services/sync/utils/event-emitter.ts +0 -0
  153. package/src/services/sync/utils/index.ts +0 -0
  154. package/src/services/sync/utils/throttle.ts +0 -0
  155. package/src/services/sync/utils/timers.ts +0 -0
  156. package/src/services/types.js +0 -0
  157. package/src/services/urlBuilder.ts +0 -0
  158. package/src/services/user/account.ts +0 -0
  159. package/src/services/user/chat.js +0 -0
  160. package/src/services/user/interests.js +0 -0
  161. package/src/services/user/management.js +0 -0
  162. package/src/services/user/memberships.ts +0 -0
  163. package/src/services/user/notifications.js +0 -0
  164. package/src/services/user/onboarding.ts +0 -0
  165. package/src/services/user/payments.ts +0 -0
  166. package/src/services/user/permissions.js +0 -0
  167. package/src/services/user/profile.js +0 -0
  168. package/src/services/user/sessions.js +0 -0
  169. package/src/services/user/streakCalculator.ts +0 -0
  170. package/src/services/user/types.d.ts +0 -0
  171. package/src/services/user/types.js +0 -0
  172. package/src/services/user/user-management-system.js +0 -0
  173. package/src/services/userActivity.js +0 -0
  174. package/test/HttpClient.test.js +0 -0
  175. package/test/awards/award-alacarte-observer.test.js +0 -0
  176. package/test/awards/award-auto-refresh.test.js +0 -0
  177. package/test/awards/award-calculations.test.js +0 -0
  178. package/test/awards/award-certificate-display.test.js +0 -0
  179. package/test/awards/award-collection-edge-cases.test.js +0 -0
  180. package/test/awards/award-collection-filtering.test.js +0 -0
  181. package/test/awards/award-completion-flow.test.js +0 -0
  182. package/test/awards/award-exclusion-handling.test.js +0 -0
  183. package/test/awards/award-multi-lesson.test.js +0 -0
  184. package/test/awards/award-observer-integration.test.js +0 -0
  185. package/test/awards/award-query-messages.test.js +0 -0
  186. package/test/awards/award-user-collection.test.js +0 -0
  187. package/test/awards/duplicate-prevention.test.js +0 -0
  188. package/test/awards/helpers/completion-mock.js +0 -0
  189. package/test/awards/helpers/index.js +0 -0
  190. package/test/awards/helpers/mock-setup.js +0 -0
  191. package/test/awards/helpers/progress-emitter.js +0 -0
  192. package/test/awards/message-generator.test.js +0 -0
  193. package/test/content.test.js +0 -0
  194. package/test/contentLikes.test.js +0 -0
  195. package/test/contentProgress.test.js +0 -0
  196. package/test/dataContext.test.js +0 -0
  197. package/test/forum.test.js +0 -0
  198. package/test/imageSRCBuilder.test.js +0 -0
  199. package/test/imageSRCVerify.test.js +0 -0
  200. package/test/initializeTests.js +0 -0
  201. package/test/learningPaths.test.js +0 -0
  202. package/test/lib/__snapshots__/filter.test.ts.snap +0 -0
  203. package/test/lib/filter.test.ts +0 -0
  204. package/test/lib/lastUpdated.test.js +0 -0
  205. package/test/lib/query.test.ts +0 -0
  206. package/test/live/contentProgressLive.test.js +0 -0
  207. package/test/live/railcontentLive.test.js +0 -0
  208. package/test/localStorageMock.js +0 -0
  209. package/test/log.js +0 -0
  210. package/test/mockData/award-definitions.js +0 -0
  211. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  212. package/test/mockData/mockData_progress_content.json +0 -0
  213. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  214. package/test/mockData/mockData_user_practices.json +0 -0
  215. package/test/notifications.test.js +0 -0
  216. package/test/progressRows.test.js +0 -0
  217. package/test/sanityQueryService.test.js +0 -0
  218. package/test/streakMessage.test.js +0 -0
  219. package/test/sync/adapter.ts +0 -0
  220. package/test/sync/initialize-sync-manager.js +0 -0
  221. package/test/sync/models/award-database-integration.test.js +0 -0
  222. package/test/user/permissions.test.js +0 -0
  223. package/test/userActivity.test.js +0 -0
  224. package/tools/generate-index.cjs +0 -0
  225. package/.claude/settings.local.json +0 -7
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,20 @@
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.131.0](https://github.com/railroadmedia/musora-content-services/compare/v2.130.0...v2.131.0) (2026-02-03)
6
+
7
+
8
+ ### Features
9
+
10
+ * decode gzip+base64'd responses ([#764](https://github.com/railroadmedia/musora-content-services/issues/764)) ([43c2a7c](https://github.com/railroadmedia/musora-content-services/commit/43c2a7cfb03992ac6bb89a46c7c09bcf478404ee))
11
+
12
+ ## [2.130.0](https://github.com/railroadmedia/musora-content-services/compare/v2.129.3...v2.130.0) (2026-02-03)
13
+
14
+
15
+ ### Features
16
+
17
+ * shows current events and global events ([#763](https://github.com/railroadmedia/musora-content-services/issues/763)) ([63c940c](https://github.com/railroadmedia/musora-content-services/commit/63c940cf4ddab78ea868557e8c9eeb14b1a8b9e6))
18
+
5
19
  ### [2.129.3](https://github.com/railroadmedia/musora-content-services/compare/v2.129.0...v2.129.3) (2026-02-03)
6
20
 
7
21
 
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.129.3",
3
+ "version": "2.131.0",
4
4
  "description": "A package for Musoras content services ",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -40,6 +40,7 @@
40
40
  "@sanity/client": "^5.4.2",
41
41
  "dayjs": "^1.11.13",
42
42
  "docdash": "^2.0.2",
43
+ "fflate": "^0.8.2",
43
44
  "groqd": "^0.15.12"
44
45
  },
45
46
  "peerDependencies": {
File without changes
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -381,7 +381,7 @@ export async function fetchUpcomingEvents(brand, { page = 1, limit = 10 } = {})
381
381
  live_event_end_time,
382
382
  "isLive": live_event_start_time <= '${now}' && live_event_end_time >= '${now}'`
383
383
  const query = buildRawQuery(
384
- `defined(live_event_start_time) && live_event_start_time >= '${now}' && (!defined(live_event_end_time) || live_event_end_time >= '${now}' ) && brand == '${brand}' && status == 'scheduled'`,
384
+ `defined(live_event_start_time) && (!defined(live_event_end_time) || live_event_end_time >= '${now}' ) && (brand == '${brand}' || brand == 'musora' && live_global_event) && status in ['scheduled']`,
385
385
  fields,
386
386
  {
387
387
  sortOrder: 'published_on asc',
File without changes
File without changes
File without changes
@@ -33,7 +33,7 @@ export default function syncAdapterFactory<T extends DatabaseAdapter>(
33
33
 
34
34
  return new AdapterClass({
35
35
  ...opts,
36
- dbName: `sync:${userScope.initialId}`,
36
+ dbName: `musora:sync:${userScope.initialId}`,
37
37
  schema,
38
38
  migrations: undefined
39
39
  })
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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,6 +1,6 @@
1
1
  import { SyncToken, SyncEntry, SyncSyncable } from "./index"
2
2
  import { EpochMs } from "."
3
-
3
+ import * as fflate from 'fflate'
4
4
  import { globalConfig } from '../config.js'
5
5
  import { RecordId } from "@nozbe/watermelondb"
6
6
  import BaseModel from "./models/Base"
@@ -164,7 +164,8 @@ export function makeFetchRequest(input: RequestInfo, init?: RequestInit): (userI
164
164
  ...(context.session.getSessionId() ? {
165
165
  'X-Sync-Client-Session-Id': context.session.getSessionId()!
166
166
  } : {}),
167
- 'X-Sync-Intended-User-Id': userId.toString()
167
+ 'X-Sync-Intended-User-Id': userId.toString(),
168
+ 'X-Sync-Accept-Encoding': 'gzip-base64'
168
169
  }
169
170
  })
170
171
  }
@@ -216,7 +217,26 @@ export function handlePull(callback: (userId: number, context: SyncContext) => R
216
217
  }
217
218
  const intendedUserId = +response.headers.get('X-Sync-Intended-User-Id')!
218
219
 
219
- const json = await response.json() as RawPullResponse
220
+ const contentEncoding = response.headers.get('X-Sync-Content-Encoding');
221
+ let json: RawPullResponse;
222
+
223
+ if (contentEncoding === 'gzip-base64') {
224
+ const base64Data = await response.text();
225
+
226
+ const binaryString = atob(base64Data);
227
+ const bytes = new Uint8Array(binaryString.length);
228
+ for (let i = 0; i < binaryString.length; i++) {
229
+ bytes[i] = binaryString.charCodeAt(i);
230
+ }
231
+
232
+ const decompressed = fflate.gunzipSync(bytes);
233
+
234
+ const jsonString = fflate.strFromU8(decompressed);
235
+ json = JSON.parse(jsonString) as RawPullResponse;
236
+ } else {
237
+ json = await response.json() as RawPullResponse;
238
+ }
239
+
220
240
  const data = deserializePullResponse(json)
221
241
 
222
242
  // if no max_updated_at, at least use the server's timestamp
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -32,7 +32,7 @@ const repoCache: Record<string, Partial<SyncRepositories>> = {};
32
32
  const proxy = new Proxy({} as SyncRepositories, {
33
33
  get(_target, prop: keyof SyncRepositories) {
34
34
  // @ts-ignore - funny stuff in RN dev env that calls manager instance too early?
35
- if (typeof prop === '$$typeof') return
35
+ if (prop === '$$typeof') return
36
36
 
37
37
  const manager = SyncManager.getInstance();
38
38
  const managerId = manager.getId();
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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
@@ -1,7 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(tree:*)"
5
- ]
6
- }
7
- }