musora-content-services 2.167.2 → 2.167.4
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/.agent/decisions/2026-07-20-mu2-1724-songs-lessons-counts.md +33 -0
- package/.agent/decisions/2026-07-20-query-builder-tostring.md +37 -0
- package/.idea/codeStyles/Project.xml +61 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/modules.xml +8 -0
- package/.idea/musora-content-services.iml +8 -0
- package/.idea/php.xml +19 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +7 -0
- package/.yarn/install-state.gz +0 -0
- package/CHANGELOG.md +10 -0
- package/package.json +2 -1
- package/src/contentTypeConfig.js +1 -0
- package/src/lib/sanity/query.ts +5 -0
- package/src/services/config.js +15 -0
- package/src/services/content/artist.ts +1 -3
- package/src/services/content/counts.ts +47 -0
- package/src/services/content/genre.ts +1 -3
- package/src/services/content/instructor.ts +1 -3
- package/src/services/multi-user-accounts/multi-user-accounts.ts +1 -0
- package/src/services/userActivity.js +2 -0
- package/src/version-info.js +1 -0
- package/.claude/settings.local.json +0 -53
- package/test/initializeTests.js +0 -60
- package/test/integration/awards/award-exclusion-handling.test.ts +0 -275
- package/test/integration/awards/internal/image-utils.test.ts +0 -86
- package/test/integration/content-progress/__mocks__/mocks.ts +0 -104
- package/test/integration/content-progress/contentProgress.test.ts +0 -335
- package/test/integration/content-progress/e2eOfflineProgress.test.ts +0 -352
- package/test/integration/content-progress/e2eProgress.test.ts +0 -612
- package/test/integration/content-progress/getters.test.ts +0 -334
- package/test/integration/content-progress/helpers.test.ts +0 -263
- package/test/integration/content-progress/offlineContentProgress.test.ts +0 -226
- package/test/integration/forums.test.ts +0 -209
- package/test/integration/infrastructure/FetchRequestExecutor.test.ts +0 -88
- package/test/integration/initializeTestDB.ts +0 -80
- package/test/integration/learning-paths.test.ts +0 -854
- package/test/integration/notifications.test.ts +0 -178
- package/test/integration/progress-row/content-card.test.ts +0 -283
- package/test/integration/sync/adapters/idb-errors.test.ts +0 -144
- package/test/integration/sync/adapters/sqlite-errors.test.ts +0 -173
- package/test/integration/sync/fetch.test.ts +0 -224
- package/test/integration/sync/repositories/content-likes.test.ts +0 -99
- package/test/integration/sync/repositories/practices.test.ts +0 -179
- package/test/integration/sync/repositories/progress.test.ts +0 -245
- package/test/integration/sync/repositories/user-award-progress.static.test.ts +0 -68
- package/test/integration/sync/repositories/user-award-progress.test.ts +0 -387
- package/test/integration/sync/store/cross-user-protection.test.ts +0 -217
- package/test/integration/sync/store/store-idb.test.ts +0 -180
- package/test/integration/sync/store/store.test.ts +0 -361
- package/test/integration/user/permissions.test.js +0 -20
- package/test/integration/userActivity.test.ts +0 -102
- package/test/live/README.md +0 -29
- package/test/live/content.test.js +0 -116
- package/test/localStorageMock.js +0 -21
- package/test/log.js +0 -5
- package/test/mockData/award-definitions.js +0 -171
- package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -35
- package/test/mockData/mockData_progress_content.json +0 -182
- package/test/mockData/mockData_sanity_progress_content.json +0 -1451
- package/test/mockData/mockData_user_practices.json +0 -9
- package/test/setupConsole.js +0 -6
- package/test/setupNetworkGuard.js +0 -3
- package/test/setupTimers.js +0 -13
- package/test/unit/HttpClient.test.ts +0 -267
- package/test/unit/awards/award-alacarte-observer.test.ts +0 -199
- package/test/unit/awards/award-auto-refresh.test.ts +0 -84
- package/test/unit/awards/award-calculations.test.ts +0 -34
- package/test/unit/awards/award-callbacks.test.ts +0 -144
- package/test/unit/awards/award-certificate-display.test.ts +0 -330
- package/test/unit/awards/award-collection-edge-cases.test.ts +0 -212
- package/test/unit/awards/award-collection-filtering.test.ts +0 -287
- package/test/unit/awards/award-completion-flow.test.ts +0 -306
- package/test/unit/awards/award-multi-lesson.test.ts +0 -243
- package/test/unit/awards/award-observer-integration.test.ts +0 -327
- package/test/unit/awards/award-query-messages.test.ts +0 -448
- package/test/unit/awards/award-user-collection.test.ts +0 -416
- package/test/unit/awards/duplicate-prevention.test.ts +0 -120
- package/test/unit/awards/helpers/completion-mock.ts +0 -56
- package/test/unit/awards/helpers/index.ts +0 -3
- package/test/unit/awards/helpers/mock-setup.ts +0 -79
- package/test/unit/awards/helpers/progress-emitter.ts +0 -45
- package/test/unit/awards/message-generator.test.ts +0 -162
- package/test/unit/content-progress/bubbleTrickle.test.ts +0 -322
- package/test/unit/content-progress/helpers.test.ts +0 -329
- package/test/unit/content-progress/navigateTo.test.ts +0 -392
- package/test/unit/contentLikes.test.ts +0 -62
- package/test/unit/contentMetaData.test.ts +0 -58
- package/test/unit/dataContext.test.ts +0 -38
- package/test/unit/dateUtils.test.ts +0 -188
- package/test/unit/endScreen.test.js +0 -712
- package/test/unit/eventsAPI.test.ts +0 -159
- package/test/unit/imageSRCBuilder.test.ts +0 -37
- package/test/unit/imageSRCVerify.test.ts +0 -155
- package/test/unit/infrastructure/DefaultHeaderProvider.test.ts +0 -39
- package/test/unit/infrastructure/sanity/ContentClient.test.ts +0 -168
- package/test/unit/infrastructure/sanity/DefaultConfigProvider.test.ts +0 -93
- package/test/unit/infrastructure/sanity/FetchQueryExecutor.test.ts +0 -174
- package/test/unit/infrastructure/sanity/SanityClient.test.ts +0 -140
- package/test/unit/lib/__snapshots__/filter.test.ts.snap +0 -5
- package/test/unit/lib/filter.test.ts +0 -1154
- package/test/unit/lib/lastUpdated.test.ts +0 -21
- package/test/unit/lib/query.test.ts +0 -1469
- package/test/unit/lib/sanity/decorators/base.test.ts +0 -368
- package/test/unit/lib/sanity/decorators/navigate-to.test.ts +0 -361
- package/test/unit/lib/sanity/decorators/need-access.test.ts +0 -89
- package/test/unit/lib/sanity/decorators/need-lifetime-upgrade.test.ts +0 -85
- package/test/unit/lib/sanity/decorators/page-type.test.ts +0 -81
- package/test/unit/playerSettings.test.ts +0 -73
- package/test/unit/progress-row/content-card.test.ts +0 -314
- package/test/unit/progress-row/playlist-card.test.ts +0 -104
- package/test/unit/progressRows.test.ts +0 -243
- package/test/unit/recommendations.test.js +0 -47
- package/test/unit/sanityQueryService.test.ts +0 -200
- package/test/unit/search.test.ts +0 -44
- package/test/unit/sentry.test.ts +0 -62
- package/test/unit/services/progress-internal/bubble.test.ts +0 -279
- package/test/unit/services/progress.test.ts +0 -396
- package/test/unit/streakMessage.test.ts +0 -251
- package/test/unit/sync/context.test.ts +0 -51
- package/test/unit/sync/effects/logout-warning.test.ts +0 -158
- package/test/unit/sync/effects/push-failure-notification.test.ts +0 -196
- package/test/unit/sync/errors/sync-errors.test.ts +0 -106
- package/test/unit/sync/errors/validators.test.ts +0 -61
- package/test/unit/sync/helpers/TestModel.ts +0 -44
- package/test/unit/sync/helpers/index.ts +0 -172
- package/test/unit/sync/manager.test.ts +0 -303
- package/test/unit/sync/models/user-award-progress.test.ts +0 -82
- package/test/unit/sync/resolver.test.ts +0 -229
- package/test/unit/sync/retry.test.ts +0 -314
- package/test/unit/sync/run-scope.test.ts +0 -23
- package/test/unit/sync/stale-record-cleanup.test.ts +0 -107
- package/test/unit/sync/store/push-coalescer.test.ts +0 -156
- package/test/unit/sync/store-configs.test.ts +0 -37
- package/test/unit/sync/telemetry/sync-telemetry.test.ts +0 -118
- package/test/unit/sync/utils/event-emitter.test.ts +0 -64
- package/test/unit/sync/utils/throttle.test.ts +0 -245
- package/test/unit/url-builder.test.ts +0 -72
- package/test/unit/user/account.test.ts +0 -66
- package/test/unit/user/permissions.test.js +0 -191
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
export const mockAwardDefinitions = [
|
|
2
|
-
{
|
|
3
|
-
_id: '0238b1e5-ebee-42b3-9390-91467d113575',
|
|
4
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/309b154d38165788c47674e5c7607d66944d5dde.png',
|
|
5
|
-
award_custom_text: null,
|
|
6
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/309b154d38165788c47674e5c7607d66944d5dde.png',
|
|
7
|
-
brand: 'drumeo',
|
|
8
|
-
child_ids: [416448],
|
|
9
|
-
content_id: 416446,
|
|
10
|
-
content_title: 'Adrian Guided Course Test',
|
|
11
|
-
content_type: 'guided-course',
|
|
12
|
-
instructor_name: 'Aaron Graham',
|
|
13
|
-
instructor_signature: 'https://cdn.sanity.io/files/4032r8py/staging/2e89dcaea7b76bba8c499e80d660e45fe2c06a16.png',
|
|
14
|
-
is_active: true,
|
|
15
|
-
logo: null,
|
|
16
|
-
name: 'Adrian Guided Course Test Award',
|
|
17
|
-
type: 'content-award'
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
_id: '0f49cb6a-1b23-4628-968e-15df02ffad7f',
|
|
21
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/d9bdc3a9a7ac688a114264b5804a7add117d6a0f.png',
|
|
22
|
-
award_custom_text: 'Huzzah congratz',
|
|
23
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/8fb18f7645f9b1820629f7ee643bdeb771da7e28.png',
|
|
24
|
-
brand: 'pianote',
|
|
25
|
-
child_ids: [417045, 417046, 417047, 417048],
|
|
26
|
-
content_id: 417049,
|
|
27
|
-
content_title: 'Enrolling w/ Kickoff, has product GC (EC)',
|
|
28
|
-
content_type: 'guided-course',
|
|
29
|
-
instructor_name: 'Lisa Witt',
|
|
30
|
-
instructor_signature: null,
|
|
31
|
-
is_active: true,
|
|
32
|
-
logo: 'https://cdn.sanity.io/images/4032r8py/staging/dca075e5107fddb33b78778d67f6fce03501f579-2000x1033.svg',
|
|
33
|
-
name: 'Enrolling w/ Kickoff, has product GC (EC)',
|
|
34
|
-
type: 'content-award'
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
_id: '1575d0df-63ff-4611-a472-230e3e688660',
|
|
38
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/ac68a54931fd8952b8c86844ed341d76ebdc079c.png',
|
|
39
|
-
award_custom_text: null,
|
|
40
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/f3df910730c5722f52e777c8fc63d6a53bda91ec.png',
|
|
41
|
-
brand: 'drumeo',
|
|
42
|
-
child_ids: [
|
|
43
|
-
416467, 416468, 416469, 416470, 416471, 416472, 416473,
|
|
44
|
-
416474, 416475, 416476, 416477, 416478, 416479, 416480, 416481,
|
|
45
|
-
416482, 416483, 416484, 416485, 416486, 416487, 416488, 416489
|
|
46
|
-
],
|
|
47
|
-
content_id: 416464,
|
|
48
|
-
content_title: '30-Day Drummer GC',
|
|
49
|
-
content_type: 'guided-course',
|
|
50
|
-
instructor_name: 'Domino Santantonio',
|
|
51
|
-
instructor_signature: null,
|
|
52
|
-
is_active: true,
|
|
53
|
-
logo: null,
|
|
54
|
-
name: '30 day drummer awardzz',
|
|
55
|
-
type: 'content-award'
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
_id: '361f3034-c6c9-45f7-bbfb-0d58dbe14411',
|
|
59
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/20e9a8258d00818074f472700d2ca97d91956e80.png',
|
|
60
|
-
award_custom_text: 'AN AWARD!',
|
|
61
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/da59100c0b16e446700c9285e827b4545766a7b3.png',
|
|
62
|
-
brand: 'drumeo',
|
|
63
|
-
child_ids: [
|
|
64
|
-
417105, 417111, 417117, 417106, 417112, 417118, 417107, 417113,
|
|
65
|
-
417119, 416951, 417108, 416952, 417114, 416953, 417121, 416954,
|
|
66
|
-
417109, 416955, 417115, 416956, 417122, 416957
|
|
67
|
-
],
|
|
68
|
-
content_id: 417140,
|
|
69
|
-
content_title: 'Learn To Play The Drums',
|
|
70
|
-
content_type: 'learning-path-v2',
|
|
71
|
-
instructor_name: null,
|
|
72
|
-
instructor_signature: null,
|
|
73
|
-
is_active: true,
|
|
74
|
-
logo: null,
|
|
75
|
-
name: 'Learning Path 1 Award',
|
|
76
|
-
type: 'content-award'
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
_id: '7e54cfbd-1543-462f-944a-19f3efb96aa0',
|
|
80
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/d20959255e9dbc5d955214b86b7dfe8db4cccde3.png',
|
|
81
|
-
award_custom_text: 'asadadsafaafafafad yay',
|
|
82
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/fdb15efdc07061a6ff54fdf7dd1b6101d4d6dd54.png',
|
|
83
|
-
brand: 'pianote',
|
|
84
|
-
child_ids: [417035, 417036, 417038],
|
|
85
|
-
content_id: 417039,
|
|
86
|
-
content_title: 'Enrolling w/o Kickoff, no product GC (LS101)',
|
|
87
|
-
content_type: 'course',
|
|
88
|
-
instructor_name: 'Lisa Witt',
|
|
89
|
-
instructor_signature: null,
|
|
90
|
-
is_active: true,
|
|
91
|
-
logo: 'https://cdn.sanity.io/images/4032r8py/staging/6ad3b1671d072e866233ee6b471d12c69afff0d0-469x177.png',
|
|
92
|
-
name: 'Enrolling w/o Kickoff, no product GC (LS101)',
|
|
93
|
-
type: 'content-award'
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
_id: 'cae0d533-faeb-4a96-a6b5-07ef8c7861ab',
|
|
97
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/2e791954fcf7b0fcf32b55bf194395ccdd7228f6.png',
|
|
98
|
-
award_custom_text: null,
|
|
99
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/1cef6272cc2fd7d1b948c80a995c29cf2a8b47b2.png',
|
|
100
|
-
brand: 'drumeo',
|
|
101
|
-
child_ids: [416451, 416453, 416454, 416456, 416457, 416458, 416459, 416460, 416461, 416463],
|
|
102
|
-
content_id: 416450,
|
|
103
|
-
content_title: '10-Day Fills GC',
|
|
104
|
-
content_type: 'guided-course',
|
|
105
|
-
instructor_name: 'Domino Santantonio',
|
|
106
|
-
instructor_signature: null,
|
|
107
|
-
is_active: true,
|
|
108
|
-
logo: null,
|
|
109
|
-
name: 'The Chris award',
|
|
110
|
-
type: 'content-award'
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
_id: 'f7743699-13e0-4c4e-bfec-94a816cfec3e',
|
|
114
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/d20959255e9dbc5d955214b86b7dfe8db4cccde3.png',
|
|
115
|
-
award_custom_text: 'You did it!! Yaaay',
|
|
116
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/ccb12884b7acf0c2a1b0f5dc69be6e93d95228ed.png',
|
|
117
|
-
brand: 'drumeo',
|
|
118
|
-
child_ids: [416444, 416445],
|
|
119
|
-
content_id: 416442,
|
|
120
|
-
content_title: 'Development GC 1',
|
|
121
|
-
content_type: 'guided-course',
|
|
122
|
-
instructor_name: 'BABY BOY DRUMMER',
|
|
123
|
-
instructor_signature: 'https://cdn.sanity.io/files/4032r8py/staging/da66880e96fb8288e6d54ed0de3e7be4564c7989.pdf',
|
|
124
|
-
is_active: true,
|
|
125
|
-
logo: 'https://cdn.sanity.io/images/4032r8py/staging/d20959255e9dbc5d955214b86b7dfe8db4cccde3-722x834.png',
|
|
126
|
-
name: "Adrian's cool award",
|
|
127
|
-
type: 'content-award'
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
_id: 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
|
|
131
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/test-skill-pack-award.png',
|
|
132
|
-
award_custom_text: null,
|
|
133
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/test-skill-pack-badge.png',
|
|
134
|
-
brand: 'drumeo',
|
|
135
|
-
child_ids: [418001, 418002, 418003],
|
|
136
|
-
content_id: 418000,
|
|
137
|
-
content_title: 'Drum Rudiments Pack',
|
|
138
|
-
content_type: 'skill-pack',
|
|
139
|
-
instructor_name: 'Domino Santantonio',
|
|
140
|
-
instructor_signature: null,
|
|
141
|
-
is_active: true,
|
|
142
|
-
logo: null,
|
|
143
|
-
name: 'Drum Rudiments Pack Award',
|
|
144
|
-
type: 'content-award'
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
_id: 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
|
|
148
|
-
award: 'https://cdn.sanity.io/files/4032r8py/staging/test-learning-path-award.png',
|
|
149
|
-
award_custom_text: null,
|
|
150
|
-
badge: 'https://cdn.sanity.io/files/4032r8py/staging/test-learning-path-badge.png',
|
|
151
|
-
brand: 'drumeo',
|
|
152
|
-
child_ids: [418003, 418004, 418005],
|
|
153
|
-
content_id: 418010,
|
|
154
|
-
content_title: 'Beginner Drum Journey',
|
|
155
|
-
content_type: 'learning-path-v2',
|
|
156
|
-
instructor_name: 'Domino Santantonio',
|
|
157
|
-
instructor_signature: null,
|
|
158
|
-
is_active: true,
|
|
159
|
-
logo: null,
|
|
160
|
-
name: 'Beginner Drum Journey Award',
|
|
161
|
-
type: 'content-award'
|
|
162
|
-
}
|
|
163
|
-
]
|
|
164
|
-
|
|
165
|
-
export const getAwardByContentId = (contentId) => {
|
|
166
|
-
return mockAwardDefinitions.find(award => award.content_id === contentId)
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export const getAwardById = (awardId) => {
|
|
170
|
-
return mockAwardDefinitions.find(award => award._id === awardId)
|
|
171
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"permission_id": [
|
|
4
|
-
78,
|
|
5
|
-
89,
|
|
6
|
-
91,
|
|
7
|
-
92,
|
|
8
|
-
88,
|
|
9
|
-
90
|
|
10
|
-
],
|
|
11
|
-
"thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/5f15b20b428c06263fd39599fc310ab00eb05fee-1920x1080.jpg",
|
|
12
|
-
"difficulty_string": "Beginner",
|
|
13
|
-
"url": "/drumeo/quick-tips/how-to-play-drums/415183",
|
|
14
|
-
"lesson_count": null,
|
|
15
|
-
"id": 415183,
|
|
16
|
-
"image": "https://cdn.sanity.io/images/4032r8py/staging/5f15b20b428c06263fd39599fc310ab00eb05fee-1920x1080.jpg",
|
|
17
|
-
"web_url_path": "/drumeo/quick-tips/how-to-play-drums/415183",
|
|
18
|
-
"type": "quick-tips",
|
|
19
|
-
"brand": "drumeo",
|
|
20
|
-
"genre": null,
|
|
21
|
-
"status": "published",
|
|
22
|
-
"xp": 100,
|
|
23
|
-
"railcontent_id": 415183,
|
|
24
|
-
"artist": null,
|
|
25
|
-
"progress_percent": null,
|
|
26
|
-
"child_count": null,
|
|
27
|
-
"sanity_id": "quick-tips_415183",
|
|
28
|
-
"artist_name": "Brandon Toews",
|
|
29
|
-
"title": "How To Play Drums",
|
|
30
|
-
"difficulty": 3,
|
|
31
|
-
"published_on": "2024-12-13T12:00:00.000000Z",
|
|
32
|
-
"length_in_seconds": 576,
|
|
33
|
-
"slug": "how-to-play-drums"
|
|
34
|
-
}
|
|
35
|
-
]
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"257242": {
|
|
3
|
-
"last_update": 1747657503,
|
|
4
|
-
"progress": 13,
|
|
5
|
-
"status": "started",
|
|
6
|
-
"brand": "drumeo"
|
|
7
|
-
},
|
|
8
|
-
"257243": {
|
|
9
|
-
"last_update": 1747657502,
|
|
10
|
-
"progress": 52,
|
|
11
|
-
"status": "started",
|
|
12
|
-
"brand": "drumeo"
|
|
13
|
-
},
|
|
14
|
-
"257245": {
|
|
15
|
-
"last_update": 1747657470,
|
|
16
|
-
"progress": 62,
|
|
17
|
-
"status": "started",
|
|
18
|
-
"brand": "drumeo"
|
|
19
|
-
},
|
|
20
|
-
"257249": {
|
|
21
|
-
"last_update": 1747657493,
|
|
22
|
-
"progress": 100,
|
|
23
|
-
"status": "completed",
|
|
24
|
-
"brand": "drumeo"
|
|
25
|
-
},
|
|
26
|
-
"257250": {
|
|
27
|
-
"last_update": 1747657502,
|
|
28
|
-
"progress": 100,
|
|
29
|
-
"status": "completed",
|
|
30
|
-
"brand": "drumeo"
|
|
31
|
-
},
|
|
32
|
-
"259238": {
|
|
33
|
-
"last_update": 1747657495,
|
|
34
|
-
"progress": 100,
|
|
35
|
-
"status": "completed",
|
|
36
|
-
"brand": "drumeo"
|
|
37
|
-
},
|
|
38
|
-
"259240": {
|
|
39
|
-
"last_update": 1747657505,
|
|
40
|
-
"progress": 100,
|
|
41
|
-
"status": "completed",
|
|
42
|
-
"brand": "drumeo"
|
|
43
|
-
},
|
|
44
|
-
"260677": {
|
|
45
|
-
"last_update": 1747318330,
|
|
46
|
-
"progress": 100,
|
|
47
|
-
"status": "completed",
|
|
48
|
-
"brand": "drumeo"
|
|
49
|
-
},
|
|
50
|
-
"274368": {
|
|
51
|
-
"last_update": 1747211391,
|
|
52
|
-
"progress": 20,
|
|
53
|
-
"status": "started",
|
|
54
|
-
"brand": "drumeo"
|
|
55
|
-
},
|
|
56
|
-
"274889": {
|
|
57
|
-
"last_update": 1747211391,
|
|
58
|
-
"progress": 100,
|
|
59
|
-
"status": "completed",
|
|
60
|
-
"brand": "drumeo"
|
|
61
|
-
},
|
|
62
|
-
"280498": {
|
|
63
|
-
"last_update": 1747726731,
|
|
64
|
-
"progress": 60,
|
|
65
|
-
"status": "started",
|
|
66
|
-
"brand": "drumeo"
|
|
67
|
-
},
|
|
68
|
-
"287853": {
|
|
69
|
-
"last_update": 1747647688,
|
|
70
|
-
"progress": 100,
|
|
71
|
-
"status": "completed",
|
|
72
|
-
"brand": "drumeo"
|
|
73
|
-
},
|
|
74
|
-
"287855": {
|
|
75
|
-
"last_update": 1747726731,
|
|
76
|
-
"progress": 100,
|
|
77
|
-
"status": "completed",
|
|
78
|
-
"brand": "drumeo"
|
|
79
|
-
},
|
|
80
|
-
"287858": {
|
|
81
|
-
"last_update": 1747653734,
|
|
82
|
-
"progress": 100,
|
|
83
|
-
"status": "completed",
|
|
84
|
-
"brand": "drumeo"
|
|
85
|
-
},
|
|
86
|
-
"316732": {
|
|
87
|
-
"last_update": 1747319258,
|
|
88
|
-
"progress": 0,
|
|
89
|
-
"status": "started",
|
|
90
|
-
"brand": "drumeo"
|
|
91
|
-
},
|
|
92
|
-
"316752": {
|
|
93
|
-
"last_update": 1747402511,
|
|
94
|
-
"progress": 80,
|
|
95
|
-
"status": "started",
|
|
96
|
-
"brand": "drumeo"
|
|
97
|
-
},
|
|
98
|
-
"316772": {
|
|
99
|
-
"last_update": 1747319687,
|
|
100
|
-
"progress": 100,
|
|
101
|
-
"status": "completed",
|
|
102
|
-
"brand": "drumeo"
|
|
103
|
-
},
|
|
104
|
-
"325826": {
|
|
105
|
-
"last_update": 1747324670,
|
|
106
|
-
"progress": 41,
|
|
107
|
-
"status": "started",
|
|
108
|
-
"brand": "drumeo"
|
|
109
|
-
},
|
|
110
|
-
"335025": {
|
|
111
|
-
"last_update": 1747315549,
|
|
112
|
-
"progress": 0,
|
|
113
|
-
"status": "started",
|
|
114
|
-
"brand": "drumeo"
|
|
115
|
-
},
|
|
116
|
-
"373171": {
|
|
117
|
-
"last_update": 1747211114,
|
|
118
|
-
"progress": 100,
|
|
119
|
-
"status": "completed",
|
|
120
|
-
"brand": "drumeo"
|
|
121
|
-
},
|
|
122
|
-
"373172": {
|
|
123
|
-
"last_update": 1747211114,
|
|
124
|
-
"progress": 100,
|
|
125
|
-
"status": "completed",
|
|
126
|
-
"brand": "drumeo"
|
|
127
|
-
},
|
|
128
|
-
"402009": {
|
|
129
|
-
"last_update": 1747293447,
|
|
130
|
-
"progress": 100,
|
|
131
|
-
"status": "completed",
|
|
132
|
-
"brand": "drumeo"
|
|
133
|
-
},
|
|
134
|
-
"402021": {
|
|
135
|
-
"last_update": 1747318769,
|
|
136
|
-
"progress": 100,
|
|
137
|
-
"status": "completed",
|
|
138
|
-
"brand": "drumeo"
|
|
139
|
-
},
|
|
140
|
-
"402199": {
|
|
141
|
-
"last_update": 1747318734,
|
|
142
|
-
"progress": 0,
|
|
143
|
-
"status": "started",
|
|
144
|
-
"brand": "drumeo"
|
|
145
|
-
},
|
|
146
|
-
"410255": {
|
|
147
|
-
"last_update": 1747211224,
|
|
148
|
-
"progress": 100,
|
|
149
|
-
"status": "completed",
|
|
150
|
-
"brand": "drumeo"
|
|
151
|
-
},
|
|
152
|
-
"410478": {
|
|
153
|
-
"last_update": 1747657306,
|
|
154
|
-
"progress": 22,
|
|
155
|
-
"status": "started",
|
|
156
|
-
"brand": "drumeo"
|
|
157
|
-
},
|
|
158
|
-
"410480": {
|
|
159
|
-
"last_update": 1747657295,
|
|
160
|
-
"progress": 100,
|
|
161
|
-
"status": "completed",
|
|
162
|
-
"brand": "drumeo"
|
|
163
|
-
},
|
|
164
|
-
"410481": {
|
|
165
|
-
"last_update": 1747657306,
|
|
166
|
-
"progress": 100,
|
|
167
|
-
"status": "completed",
|
|
168
|
-
"brand": "drumeo"
|
|
169
|
-
},
|
|
170
|
-
"411091": {
|
|
171
|
-
"last_update": 1747318457,
|
|
172
|
-
"progress": 100,
|
|
173
|
-
"status": "completed",
|
|
174
|
-
"brand": "drumeo"
|
|
175
|
-
},
|
|
176
|
-
"415585": {
|
|
177
|
-
"last_update": 1747319147,
|
|
178
|
-
"progress": 100,
|
|
179
|
-
"status": "completed",
|
|
180
|
-
"brand": "drumeo"
|
|
181
|
-
}
|
|
182
|
-
}
|