comty.js 0.60.3 → 0.60.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.
Files changed (37) hide show
  1. package/dist/helpers/handleAfterRequest.js +0 -0
  2. package/dist/helpers/handleBeforeRequest.js +0 -0
  3. package/dist/helpers/withSettings.js +0 -0
  4. package/dist/helpers/withStorage.js +0 -0
  5. package/dist/hooks/useRequest/index.js +0 -0
  6. package/dist/index.js +0 -0
  7. package/dist/models/api/index.js +78 -0
  8. package/dist/models/auth/index.js +0 -0
  9. package/dist/models/feed/index.js +0 -0
  10. package/dist/models/follows/index.js +0 -0
  11. package/dist/models/index.js +0 -0
  12. package/dist/models/music/index.js +35 -310
  13. package/dist/models/music/setters/deleteRelease.js +11 -0
  14. package/dist/models/music/setters/index.js +36 -0
  15. package/dist/models/music/setters/putRelease.js +12 -0
  16. package/dist/models/music/setters/putTrack.js +12 -0
  17. package/dist/models/nfc/index.js +16 -3
  18. package/dist/models/payments/index.js +17 -0
  19. package/dist/models/post/index.js +11 -3
  20. package/dist/models/search/index.js +0 -0
  21. package/dist/models/session/index.js +9 -7
  22. package/dist/models/spectrum/index.js +96 -0
  23. package/dist/models/sync/index.js +0 -0
  24. package/dist/models/sync/services/spotify.js +0 -0
  25. package/dist/models/sync/services/tidal.js +0 -0
  26. package/dist/models/user/index.js +0 -0
  27. package/dist/remote.js +5 -1
  28. package/package.json +2 -2
  29. package/dist/handlers/measurePing.js +0 -58
  30. package/dist/handlers/request.js +0 -51
  31. package/dist/helpers/handleRegenerationEvent.js +0 -43
  32. package/dist/models/livestream/index.js +0 -84
  33. package/dist/models/playlists/index.js +0 -124
  34. package/dist/models/sync/cores/spotifyCore.js +0 -87
  35. package/dist/models/sync/services/vrc.js +0 -121
  36. package/dist/models/widget/index.js +0 -18
  37. package/dist/remotes.js +0 -20
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.js CHANGED
File without changes
@@ -0,0 +1,78 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _request = require('../../request'); var _request2 = _interopRequireDefault(_request);
2
+
3
+ class API {
4
+ /**
5
+ * Retrieves the server keys associated with the current user.
6
+ *
7
+ * @return {object} The server keys data
8
+ */
9
+ static async getMyServerKeys() {
10
+ const response = await _request2.default.call(void 0, {
11
+ method: "GET",
12
+ url: "/server-keys/my",
13
+ })
14
+
15
+ return response.data
16
+ }
17
+
18
+ /**
19
+ * Creates a new server key.
20
+ *
21
+ * @param {object} options - Options for the new server key.
22
+ * @param {string} options.name - The name of the server key.
23
+ * @param {string} options.description - The description of the server key.
24
+ * @param {string} options.access - The access level of the server key.
25
+ * @return {object} The newly created server key data.
26
+ */
27
+ static async createNewServerKey({
28
+ name,
29
+ description,
30
+ access,
31
+ } = {}) {
32
+ const response = await _request2.default.call(void 0, {
33
+ method: "POST",
34
+ url: "/server-keys/generate",
35
+ data: {
36
+ name,
37
+ description,
38
+ access
39
+ }
40
+ })
41
+
42
+ return response.data
43
+ }
44
+
45
+ /**
46
+ * Regenerates a secret token for a server key.
47
+ *
48
+ * @param {object} options - Options for regenerating the secret token.
49
+ * @param {string} access_id - The ID of the server key to regenerate the secret token for.
50
+ * @return {object} The regenerated secret token data.
51
+ */
52
+ static async regenerateSecretToken(access_id) {
53
+ const response = await _request2.default.call(void 0, {
54
+ method: "POST",
55
+ url: `/server-keys/${access_id}/regenerate`,
56
+ })
57
+
58
+ return response.data
59
+ }
60
+
61
+ /**
62
+ * Deletes a server key by its access ID.
63
+ *
64
+ * @param {string} access_id - The ID of the server key to delete.
65
+ * @return {Promise<object>} - A promise that resolves to the response data.
66
+ */
67
+ static async deleteServerKey(access_id) {
68
+ const response = await _request2.default.call(void 0, {
69
+ method: "DELETE",
70
+ url: `/server-keys/${access_id}`,
71
+ data: {
72
+ access_id
73
+ }
74
+ })
75
+
76
+ return response.data
77
+ }
78
+ } exports.default = API;
File without changes
File without changes
File without changes
File without changes
@@ -1,8 +1,5 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _request = require('../../request'); var _request2 = _interopRequireDefault(_request);
2
- var _pmap = require('p-map'); var _pmap2 = _interopRequireDefault(_pmap);
3
- var _sync = require('../sync'); var _sync2 = _interopRequireDefault(_sync);
4
-
5
- var _getters = require('./getters'); var _getters2 = _interopRequireDefault(_getters);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _getters = require('./getters'); var _getters2 = _interopRequireDefault(_getters);
2
+ var _setters = require('./setters'); var _setters2 = _interopRequireDefault(_setters);
6
3
 
7
4
  class MusicModel {
8
5
  /**
@@ -95,322 +92,50 @@ var _getters = require('./getters'); var _getters2 = _interopRequireDefault(_get
95
92
  */
96
93
  static __initStatic9() {this.getTrackLyrics = _getters2.default.trackLyrics}
97
94
 
98
-
99
-
100
- //!INCOMPLETE
101
-
102
-
103
-
104
-
105
- /**
106
- * Retrieves favorite tracks based on specified parameters.
107
- *
108
- * @param {Object} options - The options for retrieving favorite tracks.
109
- * @param {boolean} options.useTidal - Whether to use Tidal for retrieving tracks. Defaults to false.
110
- * @param {number} options.limit - The maximum number of tracks to retrieve.
111
- * @param {number} options.offset - The offset from which to start retrieving tracks.
112
- * @return {Promise<Object>} - An object containing the total length of the tracks and the retrieved tracks.
113
- */
114
- static async getFavoriteTracks({ useTidal = false, limit, offset }) {
115
- let result = []
116
-
117
- let limitPerRequesters = limit
118
-
119
- if (useTidal) {
120
- limitPerRequesters = limitPerRequesters / 2
121
- }
122
-
123
- const requesters = [
124
- async () => {
125
- let { data } = await _request2.default.call(void 0, {
126
- method: "GET",
127
- url: `/music/tracks/liked`,
128
- params: {
129
- limit: limitPerRequesters,
130
- offset,
131
- },
132
- })
133
-
134
- return data
135
- },
136
- async () => {
137
- if (!useTidal) {
138
- return {
139
- total_length: 0,
140
- tracks: [],
141
- }
142
- }
143
-
144
- const tidalResult = await _sync2.default.tidalCore.getMyFavoriteTracks({
145
- limit: limitPerRequesters,
146
- offset,
147
- })
148
-
149
- return tidalResult
150
- },
151
- ]
152
-
153
- result = await _pmap2.default.call(void 0,
154
- requesters,
155
- async requester => {
156
- const data = await requester()
157
-
158
- return data
159
- },
160
- {
161
- concurrency: 3,
162
- },
163
- )
164
-
165
- let total_length = 0
166
-
167
- result.forEach(result => {
168
- total_length += result.total_length
169
- })
170
-
171
- let tracks = result.reduce((acc, cur) => {
172
- return [...acc, ...cur.tracks]
173
- }, [])
174
-
175
- tracks = tracks.sort((a, b) => {
176
- return b.liked_at - a.liked_at
177
- })
178
-
179
- return {
180
- total_length,
181
- tracks,
182
- }
183
- }
184
-
185
-
186
-
187
- /**
188
- * Retrieves favorite playlists based on the specified parameters.
189
- *
190
- * @param {Object} options - The options for retrieving favorite playlists.
191
- * @param {number} options.limit - The maximum number of playlists to retrieve. Default is 50.
192
- * @param {number} options.offset - The offset of playlists to retrieve. Default is 0.
193
- * @param {Object} options.services - The services to include for retrieving playlists. Default is an empty object.
194
- * @param {string} options.keywords - The keywords to filter playlists by.
195
- * @return {Promise<Object>} - An object containing the total length of the playlists and the playlist items.
196
- */
197
- static async getFavoritePlaylists({ limit = 50, offset = 0, services = {}, keywords } = {}) {
198
- let result = []
199
-
200
- let limitPerRequesters = limit
201
-
202
- const requesters = [
203
- async () => {
204
- return await MusicModel.getMyReleases(keywords)
205
- },
206
- ]
207
-
208
- if (services["tidal"] === true) {
209
- limitPerRequesters = limitPerRequesters / (requesters.length + 1)
210
-
211
- requesters.push(async () => {
212
- const _result = await _sync2.default.tidalCore.getMyFavoritePlaylists({
213
- limit: limitPerRequesters,
214
- offset,
215
- })
216
-
217
- return _result
218
- })
219
- }
220
-
221
- result = await _pmap2.default.call(void 0,
222
- requesters,
223
- async requester => {
224
- const data = await requester()
225
-
226
- return data
227
- },
228
- {
229
- concurrency: 3,
230
- },
231
- )
232
-
233
- // calculate total length
234
- let total_length = 0
235
-
236
- result.forEach(result => {
237
- total_length += result.total_length
238
- })
239
-
240
- // reduce items
241
- let items = result.reduce((acc, cur) => {
242
- return [...acc, ...cur.items]
243
- }, [])
244
-
245
-
246
- // sort by created_at
247
- items = items.sort((a, b) => {
248
- return new Date(b.created_at) - new Date(a.created_at)
249
- })
250
-
251
- return {
252
- total_length: total_length,
253
- items,
254
- }
255
- }
256
-
257
-
258
-
259
-
260
-
261
95
  /**
262
- * Creates a new playlist.
263
- *
264
- * @param {object} payload - The payload containing the data for the new playlist.
265
- * @return {Promise<Object>} The new playlist data.
266
- */
267
- static async newPlaylist(payload) {
268
- const { data } = await _request2.default.call(void 0, {
269
- method: "POST",
270
- url: `/playlists/new`,
271
- data: payload,
272
- })
273
-
274
- return data
275
- }
276
-
277
- /**
278
- * Updates a playlist item in the specified playlist.
279
- *
280
- * @param {string} playlist_id - The ID of the playlist to update.
281
- * @param {object} item - The updated playlist item to be added.
282
- * @return {Promise<Object>} - The updated playlist item.
283
- */
284
- static async putPlaylistItem(playlist_id, item) {
285
- const response = await _request2.default.call(void 0, {
286
- method: "PUT",
287
- url: `/playlists/${playlist_id}/items`,
288
- data: item,
289
- })
290
-
291
- return response.data
292
- }
293
-
294
- /**
295
- * Delete a playlist item.
296
- *
297
- * @param {string} playlist_id - The ID of the playlist.
298
- * @param {string} item_id - The ID of the item to delete.
299
- * @return {Promise<Object>} The data returned by the server after the item is deleted.
300
- */
301
- static async deletePlaylistItem(playlist_id, item_id) {
302
- const response = await _request2.default.call(void 0, {
303
- method: "DELETE",
304
- url: `/playlists/${playlist_id}/items/${item_id}`,
305
- })
306
-
307
- return response.data
308
- }
96
+ * Create or modify a track.
97
+ *
98
+ * @param {object} TrackManifest - The track manifest.
99
+ * @return {Promise<Object>} The result track data.
100
+ */
101
+ static __initStatic10() {this.putTrack = _setters2.default.putTrack}
309
102
 
310
103
  /**
311
- * Deletes a playlist.
312
- *
313
- * @param {number} playlist_id - The ID of the playlist to be deleted.
314
- * @return {Promise<Object>} The response data from the server.
315
- */
316
- static async deletePlaylist(playlist_id) {
317
- const response = await _request2.default.call(void 0, {
318
- method: "DELETE",
319
- url: `/playlists/${playlist_id}`,
320
- })
321
-
322
- return response.data
323
- }
104
+ * Create or modify a release.
105
+ *
106
+ * @param {object} ReleaseManifest - The release manifest.
107
+ * @return {Promise<Object>} The result release data.
108
+ */
109
+ static __initStatic11() {this.putRelease = _setters2.default.putRelease}
324
110
 
325
111
  /**
326
- * Execute a PUT request to update or create a release.
327
- *
328
- * @param {object} payload - The payload data.
329
- * @return {Promise<Object>} The response data from the server.
330
- */
331
- static async putRelease(payload) {
332
- const response = await _request2.default.call(void 0, {
333
- method: "PUT",
334
- url: `/releases/release`,
335
- data: payload
336
- })
337
-
338
- return response.data
339
- }
340
-
112
+ * Deletes a release by its ID.
113
+ *
114
+ * @param {string} id - The ID of the release to delete.
115
+ * @return {Promise<Object>} - A Promise that resolves to the data returned by the API.
116
+ */
117
+ static __initStatic12() {this.deleteRelease = _setters2.default.deleteRelease}
341
118
 
342
119
  /**
343
- * Deletes a release by its ID.
344
- *
345
- * @param {string} id - The ID of the release to delete.
346
- * @return {Promise<Object>} - A Promise that resolves to the data returned by the API.
120
+ * Retrieves the favorite tracks of the current user.
121
+ *
122
+ * @return {Promise<Object>} The favorite tracks data.
347
123
  */
348
- static async deleteRelease(id) {
349
- const response = await _request2.default.call(void 0, {
350
- method: "DELETE",
351
- url: `/releases/${id}`
352
- })
353
-
354
- return response.data
355
- }
124
+ static __initStatic13() {this.getFavoriteTracks = null}
356
125
 
357
126
  /**
358
- * Refreshes the track cache for a given track ID.
359
- *
360
- * @param {string} track_id - The ID of the track to refresh the cache for.
361
- * @throws {Error} If track_id is not provided.
362
- * @return {Promise<Object>} The response data from the API call.
127
+ * Retrieves the favorite tracks/playlists/releases of the current user.
128
+ *
129
+ * @return {Promise<Object>} The favorite playlists data.
363
130
  */
364
- static async refreshTrackCache(track_id) {
365
- if (!track_id) {
366
- throw new Error("Track ID is required")
367
- }
368
-
369
- const response = await _request2.default.call(void 0, {
370
- method: "POST",
371
- url: `/tracks/${track_id}/refresh-cache`,
372
- })
373
-
374
- return response.data
375
- }
131
+ static __initStatic14() {this.getFavoriteFolder = null}
376
132
 
377
133
  /**
378
- * Toggles the like status of a track.
379
- *
380
- * @param {Object} manifest - The manifest object containing track information.
381
- * @param {boolean} to - The like status to toggle (true for like, false for unlike).
382
- * @throws {Error} Throws an error if the manifest is missing.
383
- * @return {Object} The response data from the API.
134
+ * Toggles the favorite status of a track, playlist or folder.
135
+ *
136
+ * @param {string} track_id - The ID of the track to toggle the favorite status.
137
+ * @throws {Error} If the track_id is not provided.
138
+ * @return {Promise<Object>} The response data after toggling the favorite status.
384
139
  */
385
- static async toggleTrackLike(manifest, to) {
386
- if (!manifest) {
387
- throw new Error("Manifest is required")
388
- }
389
-
390
- console.log(`Toggling track ${manifest._id} like status to ${to}`)
391
-
392
- const track_id = manifest._id
393
-
394
- switch (manifest.service) {
395
- case "tidal": {
396
- const response = await _sync2.default.tidalCore.toggleTrackLike({
397
- track_id,
398
- to,
399
- })
400
-
401
- return response
402
- }
403
- default: {
404
- const response = await _request2.default.call(void 0, {
405
- method: to ? "POST" : "DELETE",
406
- url: `/tracks/${track_id}/like`,
407
- params: {
408
- service: manifest.service
409
- }
410
- })
411
-
412
- return response.data
413
- }
414
- }
415
- }
416
- } MusicModel.__initStatic(); MusicModel.__initStatic2(); MusicModel.__initStatic3(); MusicModel.__initStatic4(); MusicModel.__initStatic5(); MusicModel.__initStatic6(); MusicModel.__initStatic7(); MusicModel.__initStatic8(); MusicModel.__initStatic9(); exports.default = MusicModel;
140
+ static __initStatic15() {this.toggleItemFavorite = null}
141
+ } MusicModel.__initStatic(); MusicModel.__initStatic2(); MusicModel.__initStatic3(); MusicModel.__initStatic4(); MusicModel.__initStatic5(); MusicModel.__initStatic6(); MusicModel.__initStatic7(); MusicModel.__initStatic8(); MusicModel.__initStatic9(); MusicModel.__initStatic10(); MusicModel.__initStatic11(); MusicModel.__initStatic12(); MusicModel.__initStatic13(); MusicModel.__initStatic14(); MusicModel.__initStatic15(); exports.default = MusicModel;
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _request = require('../../../request'); var _request2 = _interopRequireDefault(_request);
2
+
3
+ exports. default = async (release_id) => {
4
+ const response = await _request2.default.call(void 0, {
5
+ method: "delete",
6
+ url: `/music/releases/${release_id}`,
7
+ })
8
+
9
+ // @ts-ignore
10
+ return response.data
11
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});async function exportObjs() {
2
+ if (window) {
3
+ let paths = {
4
+ ...import.meta.glob("./**.ts"),
5
+ ...import.meta.glob("./**.js"),
6
+ }
7
+
8
+ let fns = {}
9
+
10
+ for (const path in paths) {
11
+ const name = path.split("/").pop().replace(".ts", "").replace(".js", "")
12
+ const fn = await paths[path]()
13
+
14
+ fns[name] = fn.default
15
+ }
16
+
17
+ return fns
18
+ } else {
19
+ let objs = {}
20
+
21
+ const dirs = fs.readdirSync(__dirname).filter(file => file !== "index.js")
22
+
23
+ const fs = require("fs")
24
+ const path = require("path")
25
+
26
+ dirs.forEach((file) => {
27
+ const model = require(path.join(__dirname, file)).default
28
+
29
+ objs[file.replace(".js", "")] = model
30
+ })
31
+
32
+ return objs
33
+ }
34
+ }
35
+
36
+ exports. default = await exportObjs()
@@ -0,0 +1,12 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _request = require('../../../request'); var _request2 = _interopRequireDefault(_request);
2
+
3
+ exports. default = async (release) => {
4
+ const response = await _request2.default.call(void 0, {
5
+ method: "PUT",
6
+ url: "/music/releases",
7
+ data: release,
8
+ })
9
+
10
+ // @ts-ignore
11
+ return response.data
12
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _request = require('../../../request'); var _request2 = _interopRequireDefault(_request);
2
+
3
+ exports. default = async (track) => {
4
+ const response = await _request2.default.call(void 0, {
5
+ method: "PUT",
6
+ url: "/music/tracks",
7
+ data: track,
8
+ })
9
+
10
+ // @ts-ignore
11
+ return response.data
12
+ }
@@ -9,7 +9,7 @@
9
9
  static async getOwnTags() {
10
10
  const { data } = await _request2.default.call(void 0, {
11
11
  method: "GET",
12
- url: `/nfc/tags`
12
+ url: `/nfc/tag/my`
13
13
  })
14
14
 
15
15
  return data
@@ -28,7 +28,7 @@
28
28
 
29
29
  const { data } = await _request2.default.call(void 0, {
30
30
  method: "GET",
31
- url: `/nfc/tags/${id}`
31
+ url: `/nfc/tag/id/${id}`
32
32
  })
33
33
 
34
34
  return data
@@ -73,10 +73,23 @@
73
73
 
74
74
  const { data } = await _request2.default.call(void 0, {
75
75
  method: "POST",
76
- url: `/nfc/tag/${serial}`,
76
+ url: `/nfc/tag/register/${serial}`,
77
77
  data: payload
78
78
  })
79
79
 
80
80
  return data
81
81
  }
82
+
83
+ static async deleteTag(id) {
84
+ if (!id) {
85
+ throw new Error("ID is required")
86
+ }
87
+
88
+ const { data } = await _request2.default.call(void 0, {
89
+ method: "DELETE",
90
+ url: `/nfc/tag/id/${id}`
91
+ })
92
+
93
+ return data
94
+ }
82
95
  } exports.default = NFCModel;
@@ -0,0 +1,17 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _request = require('../../request'); var _request2 = _interopRequireDefault(_request);
2
+
3
+ class PaymentsModel {
4
+ /**
5
+ * Fetches the current balance from the server.
6
+ *
7
+ * @return {object} The balance data received from the server.
8
+ */
9
+ static async fetchBalance() {
10
+ const response = await _request2.default.call(void 0, {
11
+ method: "GET",
12
+ url: "/payments/balance",
13
+ })
14
+
15
+ return response.data.balance
16
+ }
17
+ } exports.default = PaymentsModel;
@@ -42,7 +42,7 @@ var _withSettings = require('../../helpers/withSettings'); var _withSettings2 =
42
42
  * @throws {Error} If the post_id is not provided.
43
43
  * @return {Promise<Object>} The data of the post.
44
44
  */
45
- static async getPost({ post_id }) {
45
+ static async post({ post_id }) {
46
46
  if (!post_id) {
47
47
  throw new Error("Post ID is required")
48
48
  }
@@ -55,6 +55,8 @@ var _withSettings = require('../../helpers/withSettings'); var _withSettings2 =
55
55
  return data
56
56
  }
57
57
 
58
+ static __initStatic() {this.getPost = Post.post}
59
+
58
60
  /**
59
61
  * Retrieves the replies of a post by its ID.
60
62
  *
@@ -206,6 +208,8 @@ var _withSettings = require('../../helpers/withSettings'); var _withSettings2 =
206
208
  return data
207
209
  }
208
210
 
211
+ static __initStatic2() {this.createPost = Post.create}
212
+
209
213
  /**
210
214
  * Updates a post with the given post ID and update payload.
211
215
  *
@@ -228,13 +232,15 @@ var _withSettings = require('../../helpers/withSettings'); var _withSettings2 =
228
232
  return data
229
233
  }
230
234
 
235
+ static __initStatic3() {this.updatePost = Post.update}
236
+
231
237
  /**
232
238
  * Deletes a post with the given post ID.
233
239
  *
234
240
  * @param {string} post_id - The ID of the post to delete.
235
241
  * @return {Object} The response data after deleting the post.
236
242
  */
237
- static async deletePost({ post_id }) {
243
+ static async delete({ post_id }) {
238
244
  if (!post_id) {
239
245
  throw new Error("Post ID is required")
240
246
  }
@@ -246,4 +252,6 @@ var _withSettings = require('../../helpers/withSettings'); var _withSettings2 =
246
252
 
247
253
  return data
248
254
  }
249
- } exports.default = Post;
255
+
256
+ static __initStatic4() {this.deletePost = Post.delete}
257
+ } Post.__initStatic(); Post.__initStatic2(); Post.__initStatic3(); Post.__initStatic4(); exports.default = Post;
File without changes