comty.js 0.66.1 → 0.68.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.
- package/dist/hooks/useRequest/index.js +36 -25
- package/dist/models/follows/index.js +52 -54
- package/dist/models/music/getters/releaseData.js +37 -9
- package/dist/models/music/getters/trackLyrics.js +2 -17
- package/dist/remotes.js +4 -8
- package/package.json +26 -26
- package/dist/helpers/measurePing.js +0 -62
- package/dist/models/index.js +0 -38
- package/dist/models/music/getters/favouriteFolder.js +0 -42
- package/dist/models/music/getters/featuredPlaylists.js +0 -11
- package/dist/models/music/getters/isItemFavourited.js +0 -33
- package/dist/models/music/getters/playlistData.js +0 -11
- package/dist/models/music/getters/playlistItem.js +0 -11
- package/dist/models/music/getters/playlists.js +0 -29
- package/dist/models/music/setters/toggleItemFavourite.js +0 -36
- package/dist/models/payments/index.js +0 -17
- package/dist/models/sync/index.js +0 -59
- package/dist/models/sync/services/spotify.js +0 -87
- package/dist/models/sync/services/tidal.js +0 -172
- package/dist/remote.js +0 -35
- package/dist/rtclient.js +0 -131
- package/dist/utils/generateRequest.js +0 -52
|
@@ -1,31 +1,42 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
2
2
|
|
|
3
3
|
exports. default = (method, ...args) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const [loading, setLoading] = _react2.default.useState(true)
|
|
5
|
+
const [result, setResult] = _react2.default.useState(null)
|
|
6
|
+
const [error, setError] = _react2.default.useState(null)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const makeRequest = (...newArgs) => {
|
|
12
|
-
method(...newArgs)
|
|
13
|
-
.then((data) => {
|
|
14
|
-
setResult(data)
|
|
15
|
-
setLoading(false)
|
|
16
|
-
})
|
|
17
|
-
.catch((err) => {
|
|
18
|
-
setError(err)
|
|
19
|
-
setLoading(false)
|
|
20
|
-
})
|
|
21
|
-
}
|
|
8
|
+
if (typeof method !== "function") {
|
|
9
|
+
return [() => {}, null, new Error("Method is not a function"), () => {}]
|
|
10
|
+
}
|
|
22
11
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
const makeRequest = (...newArgs) => {
|
|
13
|
+
method(...newArgs)
|
|
14
|
+
.then((data) => {
|
|
15
|
+
setResult(data)
|
|
16
|
+
setLoading(false)
|
|
17
|
+
})
|
|
18
|
+
.catch((err) => {
|
|
19
|
+
console.error(err)
|
|
20
|
+
setError(err)
|
|
21
|
+
setLoading(false)
|
|
22
|
+
})
|
|
23
|
+
}
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
_react2.default.useEffect(() => {
|
|
26
|
+
makeRequest(...args)
|
|
27
|
+
}, [])
|
|
28
|
+
|
|
29
|
+
return [
|
|
30
|
+
loading,
|
|
31
|
+
result,
|
|
32
|
+
error,
|
|
33
|
+
(...newArgs) => {
|
|
34
|
+
setLoading(true)
|
|
35
|
+
makeRequest(...newArgs)
|
|
36
|
+
},
|
|
37
|
+
() => {
|
|
38
|
+
setLoading(true)
|
|
39
|
+
makeRequest(...args)
|
|
40
|
+
},
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -2,65 +2,63 @@
|
|
|
2
2
|
var _request = require('../../request'); var _request2 = _interopRequireDefault(_request);
|
|
3
3
|
|
|
4
4
|
class FollowsModel {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Checks if the current user is following the specified user.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} user_id - The ID of the user to check if the current user is following.
|
|
9
|
+
* @return {Promise<Object>} A promise that resolves with the response data indicating if the current user is following the specified user.
|
|
10
|
+
* @throws {Error} If the user_id parameter is not provided.
|
|
11
|
+
*/
|
|
12
|
+
static async imFollowing(user_id) {
|
|
13
|
+
if (!user_id) {
|
|
14
|
+
throw new Error("user_id is required")
|
|
15
|
+
}
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const response = await _request2.default.call(void 0, {
|
|
18
|
+
method: "GET",
|
|
19
|
+
url: `/users/${user_id}/following`,
|
|
20
|
+
})
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
return response.data
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Retrieves the list of followers for a given user.
|
|
27
|
+
*
|
|
28
|
+
* @param {string} user_id - The ID of the user. If not provided, the current user ID will be used.
|
|
29
|
+
* @param {object} params - Additional parameters to pass to the API.
|
|
30
|
+
* @return {Promise<Object>} A promise that resolves with the list of followers and their data.
|
|
31
|
+
*/
|
|
32
|
+
static async getFollowers(user_id, params) {
|
|
33
|
+
if (!user_id) {
|
|
34
|
+
user_id = _session2.default.user_id
|
|
35
|
+
}
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
})
|
|
37
|
+
const response = await _request2.default.call(void 0, {
|
|
38
|
+
method: "GET",
|
|
39
|
+
url: `/users/${user_id}/followers`,
|
|
40
|
+
params: params,
|
|
41
|
+
})
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
return response.data
|
|
44
|
+
}
|
|
47
45
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Toggles the follow status for a user.
|
|
48
|
+
*
|
|
49
|
+
* @param {Object} user_id - The ID of the user to toggle follow status.
|
|
50
|
+
* @return {Promise} The response data after toggling follow status.
|
|
51
|
+
*/
|
|
52
|
+
static async toggleFollow({ user_id }) {
|
|
53
|
+
if (!user_id) {
|
|
54
|
+
throw new Error("user_id is required")
|
|
55
|
+
}
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
const response = await _request2.default.call(void 0, {
|
|
58
|
+
method: "POST",
|
|
59
|
+
url: `/users/${user_id}/follow`,
|
|
60
|
+
})
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} exports.default = FollowsModel;
|
|
62
|
+
return response.data
|
|
63
|
+
}
|
|
64
|
+
} exports.default = FollowsModel;
|
|
@@ -1,11 +1,39 @@
|
|
|
1
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
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports. default = async (id, params) => {
|
|
14
|
+
if (params && params.service) {
|
|
15
|
+
const service = __comty_shared_state.addons.get(params.service)
|
|
16
|
+
|
|
17
|
+
if (!service) {
|
|
18
|
+
throw new Error(
|
|
19
|
+
`Service ${params.service} not found. Maybe is loading yet...`,
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (typeof service.getReleaseData !== "function") {
|
|
24
|
+
throw new Error(
|
|
25
|
+
`Service ${params.service} does not support "getReleaseData" operation`,
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return await service.getReleaseData(id, params)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const { data } = await _request2.default.call(void 0, {
|
|
33
|
+
method: "GET",
|
|
34
|
+
url: `/music/releases/${id}/data`,
|
|
35
|
+
params: params,
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
return data
|
|
39
|
+
}
|
|
@@ -4,26 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
exports. default = async (
|
|
12
|
-
id,
|
|
13
|
-
options = {
|
|
14
|
-
preferTranslation: false,
|
|
15
|
-
},
|
|
16
|
-
) => {
|
|
17
|
-
const requestParams = Object()
|
|
18
|
-
|
|
19
|
-
if (options.preferTranslation) {
|
|
20
|
-
requestParams.translate_lang = app.cores.settings.get("app:language")
|
|
21
|
-
}
|
|
22
|
-
|
|
7
|
+
exports. default = async (id, options = {}) => {
|
|
23
8
|
const response = await _request2.default.call(void 0, {
|
|
24
9
|
method: "GET",
|
|
25
10
|
url: `/music/tracks/${id}/lyrics`,
|
|
26
|
-
params:
|
|
11
|
+
params: options,
|
|
27
12
|
})
|
|
28
13
|
|
|
29
14
|
// @ts-ignore
|
package/dist/remotes.js
CHANGED
|
@@ -14,13 +14,9 @@ exports. default = {
|
|
|
14
14
|
path: "/posts",
|
|
15
15
|
ng: true,
|
|
16
16
|
},
|
|
17
|
-
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
namespace: "chats",
|
|
23
|
-
path: "/chats",
|
|
24
|
-
},
|
|
17
|
+
// {
|
|
18
|
+
// namespace: "chats",
|
|
19
|
+
// path: "/chats",
|
|
20
|
+
// },
|
|
25
21
|
],
|
|
26
22
|
}
|
package/package.json
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
"name": "comty.js",
|
|
3
|
+
"version": "0.68.0",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"description": "Official Comty API for JavaScript",
|
|
6
|
+
"homepage": "https://github.com/ragestudio/comty.js",
|
|
7
|
+
"author": "RageStudio <support@ragestudio.net>",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "hermes build"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@foxify/events": "^2.1.0",
|
|
17
|
+
"axios": "^1.8.4",
|
|
18
|
+
"js-cookie": "^3.0.5",
|
|
19
|
+
"jsonwebtoken": "^9.0.0",
|
|
20
|
+
"jwt-decode": "^4.0.0",
|
|
21
|
+
"linebridge-client": "^1.1.1",
|
|
22
|
+
"luxon": "^3.6.0",
|
|
23
|
+
"socket.io-client": "^4.8.1"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@ragestudio/hermes": "^1.0.1"
|
|
27
|
+
}
|
|
28
28
|
}
|
|
@@ -1,62 +0,0 @@
|
|
|
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
|
-
const fetchers = {
|
|
4
|
-
http: () => new Promise(async (resolve) => {
|
|
5
|
-
const start = Date.now()
|
|
6
|
-
|
|
7
|
-
const failTimeout = setTimeout(() => {
|
|
8
|
-
resolve("timeout")
|
|
9
|
-
}, 5000)
|
|
10
|
-
|
|
11
|
-
_request2.default.call(void 0, {
|
|
12
|
-
method: "GET",
|
|
13
|
-
url: "/ping",
|
|
14
|
-
})
|
|
15
|
-
.then(() => {
|
|
16
|
-
clearTimeout(failTimeout)
|
|
17
|
-
resolve(Date.now() - start)
|
|
18
|
-
})
|
|
19
|
-
.catch((err) => {
|
|
20
|
-
console.log(err)
|
|
21
|
-
clearTimeout(failTimeout)
|
|
22
|
-
resolve("failed")
|
|
23
|
-
})
|
|
24
|
-
}),
|
|
25
|
-
ws: () => new Promise((resolve) => {
|
|
26
|
-
const start = Date.now()
|
|
27
|
-
|
|
28
|
-
const failTimeout = setTimeout(() => {
|
|
29
|
-
resolve("failed")
|
|
30
|
-
}, 5000)
|
|
31
|
-
|
|
32
|
-
globalThis.__comty_shared_state.sockets["main"].on("pong", () => {
|
|
33
|
-
failTimeout && clearTimeout(failTimeout)
|
|
34
|
-
|
|
35
|
-
resolve(Date.now() - start)
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
globalThis.__comty_shared_state.sockets["main"].emit("ping")
|
|
39
|
-
})
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
exports. default = async ({ select } = {}) => {
|
|
43
|
-
let selectedPromises = []
|
|
44
|
-
|
|
45
|
-
if (Array.isArray(select)) {
|
|
46
|
-
select.forEach((item) => {
|
|
47
|
-
if (!fetchers[item]) {
|
|
48
|
-
return
|
|
49
|
-
}
|
|
50
|
-
selectedPromises.push(fetchers[item]())
|
|
51
|
-
})
|
|
52
|
-
} else {
|
|
53
|
-
selectedPromises = [
|
|
54
|
-
fetchers["http"](),
|
|
55
|
-
fetchers["ws"](),
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const result = await Promise.all(selectedPromises)
|
|
60
|
-
|
|
61
|
-
return result
|
|
62
|
-
}
|
package/dist/models/index.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _auth = require('./auth'); var _auth2 = _interopRequireDefault(_auth);
|
|
2
|
-
var _feed = require('./feed'); var _feed2 = _interopRequireDefault(_feed);
|
|
3
|
-
var _follows = require('./follows'); var _follows2 = _interopRequireDefault(_follows);
|
|
4
|
-
var _post = require('./post'); var _post2 = _interopRequireDefault(_post);
|
|
5
|
-
var _session = require('./session'); var _session2 = _interopRequireDefault(_session);
|
|
6
|
-
var _sync = require('./sync'); var _sync2 = _interopRequireDefault(_sync);
|
|
7
|
-
var _user = require('./user'); var _user2 = _interopRequireDefault(_user);
|
|
8
|
-
|
|
9
|
-
function getEndpointsFromModel(model) {
|
|
10
|
-
return Object.entries(model).reduce((acc, [key, value]) => {
|
|
11
|
-
acc[key] = value
|
|
12
|
-
|
|
13
|
-
return acc
|
|
14
|
-
}, {})
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function createHandlers() {
|
|
18
|
-
return {
|
|
19
|
-
auth: getEndpointsFromModel(_auth2.default),
|
|
20
|
-
feed: getEndpointsFromModel(_feed2.default),
|
|
21
|
-
follows: getEndpointsFromModel(_follows2.default),
|
|
22
|
-
post: getEndpointsFromModel(_post2.default),
|
|
23
|
-
session: getEndpointsFromModel(_session2.default),
|
|
24
|
-
sync: getEndpointsFromModel(_sync2.default),
|
|
25
|
-
user: getEndpointsFromModel(_user2.default),
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
exports.AuthModel = _auth2.default; exports.FeedModel = _feed2.default; exports.FollowsModel = _follows2.default; exports.PostModel = _post2.default; exports.SessionModel = _session2.default; exports.SyncModel = _sync2.default; exports.UserModel = _user2.default; exports.createHandlers = createHandlers;
|
|
@@ -1,42 +0,0 @@
|
|
|
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 _processWithAddons = require('../../../helpers/processWithAddons'); var _processWithAddons2 = _interopRequireDefault(_processWithAddons);
|
|
3
|
-
var _standartListMerge = require('../../../utils/standartListMerge'); var _standartListMerge2 = _interopRequireDefault(_standartListMerge);
|
|
4
|
-
|
|
5
|
-
exports. default = async ({ limit = 100, offset = 0, order = "desc" }) => {
|
|
6
|
-
const addons =
|
|
7
|
-
__comty_shared_state.addons.getByOperation("getFavoriteFolder")
|
|
8
|
-
|
|
9
|
-
const dividedLimit = limit / (addons.length + 1)
|
|
10
|
-
|
|
11
|
-
const { data } = await _request2.default.call(void 0, {
|
|
12
|
-
method: "GET",
|
|
13
|
-
url: "/music/my/folder",
|
|
14
|
-
params: {
|
|
15
|
-
limit: dividedLimit,
|
|
16
|
-
offset: offset,
|
|
17
|
-
order: order,
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
let results = await _processWithAddons2.default.call(void 0, {
|
|
22
|
-
operation: "getFavoriteFolder",
|
|
23
|
-
initialData: data,
|
|
24
|
-
fnArguments: [{ limit: dividedLimit, offset: offset, order: order }],
|
|
25
|
-
normalizeAddonResult: ({ currentData, addonResult }) => {
|
|
26
|
-
return _standartListMerge2.default.call(void 0, currentData, addonResult)
|
|
27
|
-
},
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
// sort by liked_at
|
|
31
|
-
results.tracks.items.sort((a, b) => {
|
|
32
|
-
if (a.liked_at > b.liked_at) {
|
|
33
|
-
return -1
|
|
34
|
-
}
|
|
35
|
-
if (a.liked_at < b.liked_at) {
|
|
36
|
-
return 1
|
|
37
|
-
}
|
|
38
|
-
return 0
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
return results
|
|
42
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
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 () => {
|
|
4
|
-
const response = await _request2.default.call(void 0, {
|
|
5
|
-
method: "GET",
|
|
6
|
-
url: "/music/playlists/featured",
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
return response.data
|
|
11
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
-
const typeToNamespace = {
|
|
4
|
-
track: "tracks",
|
|
5
|
-
//playlist: "playlists",
|
|
6
|
-
//release: "releases",
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
exports. default = async (type, track_id) => {
|
|
10
|
-
if (!type) {
|
|
11
|
-
throw new Error("type is required")
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (!track_id) {
|
|
15
|
-
throw new Error("track_id is required")
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type = type.toLowerCase()
|
|
19
|
-
|
|
20
|
-
type = typeToNamespace[type]
|
|
21
|
-
|
|
22
|
-
if (!type) {
|
|
23
|
-
throw new Error(`Unsupported type: ${type}`)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const response = await _request2.default.call(void 0, {
|
|
27
|
-
method: "GET",
|
|
28
|
-
url: `/music/${type}/${track_id}/is_favourite`,
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
// @ts-ignore
|
|
32
|
-
return response.data
|
|
33
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
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 (id) => {
|
|
4
|
-
const response = await _request2.default.call(void 0, {
|
|
5
|
-
method: "GET",
|
|
6
|
-
url: `/music/playlists/${id}/data`,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
return response.data
|
|
11
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
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 (id) => {
|
|
4
|
-
const response = await _request2.default.call(void 0, {
|
|
5
|
-
method: "GET",
|
|
6
|
-
url: `/music/playlists/${id}/items`,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
return response.data
|
|
11
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports. default = async ({
|
|
11
|
-
keywords,
|
|
12
|
-
user_id,
|
|
13
|
-
limit,
|
|
14
|
-
offset,
|
|
15
|
-
}) => {
|
|
16
|
-
const response = await _request2.default.call(void 0, {
|
|
17
|
-
method: "GET",
|
|
18
|
-
url: "/music/playlists",
|
|
19
|
-
params: {
|
|
20
|
-
keywords: keywords,
|
|
21
|
-
user_id: user_id,
|
|
22
|
-
limit: limit,
|
|
23
|
-
offset: offset,
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
// @ts-ignore
|
|
28
|
-
return response.data
|
|
29
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
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
|
-
const typeToNamespace = {
|
|
4
|
-
track: "tracks",
|
|
5
|
-
//playlist: "playlists",
|
|
6
|
-
//release: "releases",
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
exports. default = async (type, track_id, to) => {
|
|
10
|
-
if (!type) {
|
|
11
|
-
throw new Error("type is required")
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (!track_id) {
|
|
15
|
-
throw new Error("track_id is required")
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type = type.toLowerCase()
|
|
19
|
-
|
|
20
|
-
type = typeToNamespace[type]
|
|
21
|
-
|
|
22
|
-
if (!type) {
|
|
23
|
-
throw new Error(`Unsupported type: ${type}`)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const response = await _request2.default.call(void 0, {
|
|
27
|
-
method: "post",
|
|
28
|
-
url: `/music/${type}/${track_id}/favourite`,
|
|
29
|
-
data: {
|
|
30
|
-
to: to,
|
|
31
|
-
}
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
return response.data
|
|
36
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
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;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _spotify = require('./services/spotify'); var _spotify2 = _interopRequireDefault(_spotify);
|
|
2
|
-
var _tidal = require('./services/tidal'); var _tidal2 = _interopRequireDefault(_tidal);
|
|
3
|
-
|
|
4
|
-
var _request = require('../../request'); var _request2 = _interopRequireDefault(_request);
|
|
5
|
-
|
|
6
|
-
const namespacesServices = {
|
|
7
|
-
spotify: _spotify2.default,
|
|
8
|
-
tidal: _tidal2.default
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
class SyncModel {
|
|
12
|
-
static get spotifyCore() {
|
|
13
|
-
return namespacesServices.spotify
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
static get tidalCore() {
|
|
17
|
-
return namespacesServices.tidal
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
static async linkService(namespace) {
|
|
21
|
-
const service = namespacesServices[namespace]
|
|
22
|
-
|
|
23
|
-
if (!service || typeof service.linkAccount !== "function") {
|
|
24
|
-
throw new Error(`Service ${namespace} not found or not accepting linking.`)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return await service.linkAccount()
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
static async unlinkService(namespace) {
|
|
31
|
-
const service = namespacesServices[namespace]
|
|
32
|
-
|
|
33
|
-
if (!service || typeof service.unlinkAccount !== "function") {
|
|
34
|
-
throw new Error(`Service ${namespace} not found or not accepting unlinking.`)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return await service.unlinkAccount()
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
static async hasServiceLinked(namespace) {
|
|
41
|
-
const service = namespacesServices[namespace]
|
|
42
|
-
|
|
43
|
-
if (!service || typeof service.isActive !== "function") {
|
|
44
|
-
throw new Error(`Service ${namespace} not found or not accepting linking.`)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return await service.isActive()
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
static async getLinkedServices() {
|
|
51
|
-
const response = await _request2.default.call(void 0, {
|
|
52
|
-
instance: globalThis.__comty_shared_state.instances["sync"],
|
|
53
|
-
method: "GET",
|
|
54
|
-
url: "/active_services",
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
return response.data
|
|
58
|
-
}
|
|
59
|
-
} exports.default = SyncModel;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); class SpotifySyncModel {
|
|
2
|
-
static get spotify_redirect_uri() {
|
|
3
|
-
return window.location.origin + "/callbacks/sync/spotify"
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
static get spotify_authorize_endpoint() {
|
|
7
|
-
return "https://accounts.spotify.com/authorize?response_type=code&client_id={{client_id}}&scope={{scope}}&redirect_uri={{redirect_uri}}&response_type=code"
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
static async authorizeAccount() {
|
|
11
|
-
const scopes = [
|
|
12
|
-
"user-read-private",
|
|
13
|
-
"user-modify-playback-state",
|
|
14
|
-
"user-read-currently-playing",
|
|
15
|
-
"user-read-playback-state",
|
|
16
|
-
"streaming",
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
const { client_id } = await SpotifySyncModel.get_client_id()
|
|
20
|
-
|
|
21
|
-
const parsedUrl = SpotifySyncModel.spotify_authorize_endpoint
|
|
22
|
-
.replace("{{client_id}}", client_id)
|
|
23
|
-
.replace("{{scope}}", scopes.join(" "))
|
|
24
|
-
.replace("{{redirect_uri}}", SpotifySyncModel.spotify_redirect_uri)
|
|
25
|
-
|
|
26
|
-
// open on a new tab
|
|
27
|
-
window.open(parsedUrl, "_blank")
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
static async get_client_id() {
|
|
31
|
-
const { data } = await app.cores.api.customRequest({
|
|
32
|
-
method: "GET",
|
|
33
|
-
url: `/sync/spotify/client_id`,
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
return data
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static async syncAuthCode(code) {
|
|
40
|
-
const { data } = await app.cores.api.customRequest({
|
|
41
|
-
method: "POST",
|
|
42
|
-
url: `/sync/spotify/auth`,
|
|
43
|
-
data: {
|
|
44
|
-
redirect_uri: SpotifySyncModel.spotify_redirect_uri,
|
|
45
|
-
code,
|
|
46
|
-
},
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
return data
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
static async unlinkAccount() {
|
|
53
|
-
const { data } = await app.cores.api.customRequest({
|
|
54
|
-
method: "POST",
|
|
55
|
-
url: `/sync/spotify/unlink`,
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
return data
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
static async isAuthorized() {
|
|
62
|
-
const { data } = await app.cores.api.customRequest({
|
|
63
|
-
method: "GET",
|
|
64
|
-
url: `/sync/spotify/is_authorized`,
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
return data
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
static async getData() {
|
|
71
|
-
const { data } = await app.cores.api.customRequest({
|
|
72
|
-
method: "GET",
|
|
73
|
-
url: `/sync/spotify/data`,
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
return data
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
static async getCurrentPlaying() {
|
|
80
|
-
const { data } = await app.cores.api.customRequest({
|
|
81
|
-
method: "GET",
|
|
82
|
-
url: `/sync/spotify/currently_playing`,
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
return data
|
|
86
|
-
}
|
|
87
|
-
} exports.default = SpotifySyncModel;
|
|
@@ -1,172 +0,0 @@
|
|
|
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 TidalService {
|
|
4
|
-
static get api_instance() {
|
|
5
|
-
return globalThis.__comty_shared_state.instances["sync"]
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
static async linkAccount() {
|
|
9
|
-
if (!window) {
|
|
10
|
-
throw new Error("This method is only available in the browser.")
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const { data } = await _request2.default.call(void 0, {
|
|
14
|
-
instance: TidalService.api_instance,
|
|
15
|
-
method: "GET",
|
|
16
|
-
url: `/services/tidal/create_link`,
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
if (data.auth_url) {
|
|
20
|
-
window.open(data.auth_url, "_blank")
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return data
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
static async unlinkAccount() {
|
|
27
|
-
if (!window) {
|
|
28
|
-
throw new Error("This method is only available in the browser.")
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const { data } = await _request2.default.call(void 0, {
|
|
32
|
-
instance: TidalService.api_instance,
|
|
33
|
-
method: "POST",
|
|
34
|
-
url: `/services/tidal/delete_link`,
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
return data
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
static async isActive() {
|
|
41
|
-
if (!window) {
|
|
42
|
-
throw new Error("This method is only available in the browser.")
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const { data } = await _request2.default.call(void 0, {
|
|
46
|
-
instance: TidalService.api_instance,
|
|
47
|
-
method: "GET",
|
|
48
|
-
url: `/services/tidal/is_active`,
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
return data
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
static async getCurrentUser() {
|
|
55
|
-
const { data } = await _request2.default.call(void 0, {
|
|
56
|
-
instance: TidalService.api_instance,
|
|
57
|
-
method: "GET",
|
|
58
|
-
url: `/services/tidal/current`,
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
return data
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static async getPlaybackUrl(track_id) {
|
|
65
|
-
const { data } = await _request2.default.call(void 0, {
|
|
66
|
-
instance: TidalService.api_instance,
|
|
67
|
-
method: "GET",
|
|
68
|
-
url: `/services/tidal/playback/${track_id}`,
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
return data
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
static async getTrackManifest(track_id) {
|
|
75
|
-
const { data } = await _request2.default.call(void 0, {
|
|
76
|
-
instance: TidalService.api_instance,
|
|
77
|
-
method: "GET",
|
|
78
|
-
url: `/services/tidal/manifest/${track_id}`,
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
return data
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
static async getMyFavoriteTracks({
|
|
85
|
-
limit = 50,
|
|
86
|
-
offset = 0,
|
|
87
|
-
} = {}) {
|
|
88
|
-
const { data } = await _request2.default.call(void 0, {
|
|
89
|
-
instance: TidalService.api_instance,
|
|
90
|
-
method: "GET",
|
|
91
|
-
url: `/services/tidal/favorites/tracks`,
|
|
92
|
-
params: {
|
|
93
|
-
limit,
|
|
94
|
-
offset,
|
|
95
|
-
},
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
return data
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static async getMyFavoritePlaylists({
|
|
102
|
-
limit = 50,
|
|
103
|
-
offset = 0,
|
|
104
|
-
} = {}) {
|
|
105
|
-
const { data } = await _request2.default.call(void 0, {
|
|
106
|
-
instance: TidalService.api_instance,
|
|
107
|
-
method: "GET",
|
|
108
|
-
url: `/services/tidal/favorites/playlists`,
|
|
109
|
-
params: {
|
|
110
|
-
limit,
|
|
111
|
-
offset,
|
|
112
|
-
},
|
|
113
|
-
})
|
|
114
|
-
|
|
115
|
-
return data
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
static async getPlaylistData({
|
|
119
|
-
playlist_id,
|
|
120
|
-
|
|
121
|
-
resolve_items = false,
|
|
122
|
-
limit = 50,
|
|
123
|
-
offset = 0,
|
|
124
|
-
}) {
|
|
125
|
-
const { data } = await _request2.default.call(void 0, {
|
|
126
|
-
instance: TidalService.api_instance,
|
|
127
|
-
method: "GET",
|
|
128
|
-
url: `/services/tidal/playlist/${playlist_id}/data`,
|
|
129
|
-
params: {
|
|
130
|
-
limit,
|
|
131
|
-
offset,
|
|
132
|
-
resolve_items,
|
|
133
|
-
},
|
|
134
|
-
})
|
|
135
|
-
|
|
136
|
-
return data
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
static async getPlaylistItems({
|
|
140
|
-
playlist_id,
|
|
141
|
-
|
|
142
|
-
resolve_items = false,
|
|
143
|
-
limit = 50,
|
|
144
|
-
offset = 0,
|
|
145
|
-
}) {
|
|
146
|
-
const { data } = await _request2.default.call(void 0, {
|
|
147
|
-
instance: TidalService.api_instance,
|
|
148
|
-
method: "GET",
|
|
149
|
-
url: `/services/tidal/playlist/${playlist_id}/items`,
|
|
150
|
-
params: {
|
|
151
|
-
limit,
|
|
152
|
-
offset,
|
|
153
|
-
resolve_items,
|
|
154
|
-
},
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
return data
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
static async toggleTrackLike({
|
|
161
|
-
track_id,
|
|
162
|
-
to,
|
|
163
|
-
}) {
|
|
164
|
-
const { data } = await _request2.default.call(void 0, {
|
|
165
|
-
instance: TidalService.api_instance,
|
|
166
|
-
method: to ? "POST" : "DELETE",
|
|
167
|
-
url: `/services/tidal/track/${track_id}/like`,
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
return data
|
|
171
|
-
}
|
|
172
|
-
} exports.default = TidalService;
|
package/dist/remote.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }const envOrigins = {
|
|
2
|
-
"development": `https://fr01.ragestudio.net:9000`,//`${location.origin}/api`,
|
|
3
|
-
"indev": "https://indev.comty.app/api",
|
|
4
|
-
"production": "https://api.comty.app",
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
exports. default = {
|
|
8
|
-
origin: envOrigins[_nullishCoalesce(process.env.NODE_ENV, () => ( "production"))],
|
|
9
|
-
websockets: [
|
|
10
|
-
{
|
|
11
|
-
namespace: "posts",
|
|
12
|
-
path: "/posts",
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
namespace: "main",
|
|
16
|
-
path: "/main",
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
namespace: "notifications",
|
|
20
|
-
path: "/notifications",
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
namespace: "chats",
|
|
24
|
-
path: "/chats",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
namespace: "music",
|
|
28
|
-
path: "/music",
|
|
29
|
-
}
|
|
30
|
-
// {
|
|
31
|
-
// namespace: "payments",
|
|
32
|
-
// path: "/payments",
|
|
33
|
-
// }
|
|
34
|
-
]
|
|
35
|
-
}
|
package/dist/rtclient.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); class RTEngineClient {
|
|
2
|
-
constructor(params = {}) {;RTEngineClient.prototype.__init.call(this);RTEngineClient.prototype.__init2.call(this);RTEngineClient.prototype.__init3.call(this);RTEngineClient.prototype.__init4.call(this);RTEngineClient.prototype.__init5.call(this);RTEngineClient.prototype.__init6.call(this);RTEngineClient.prototype.__init7.call(this);RTEngineClient.prototype.__init8.call(this);RTEngineClient.prototype.__init9.call(this);
|
|
3
|
-
this.params = params
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
__init() {this.socket = null}
|
|
7
|
-
|
|
8
|
-
__init2() {this.stateSubscribers = []}
|
|
9
|
-
|
|
10
|
-
__init3() {this.joinedTopics = new Set()}
|
|
11
|
-
__init4() {this.handlers = new Set()}
|
|
12
|
-
|
|
13
|
-
async connect() {
|
|
14
|
-
return new Promise((resolve, reject) => {
|
|
15
|
-
if (this.socket) {
|
|
16
|
-
this.disconnect()
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
let url = `${this.params.url}`
|
|
20
|
-
|
|
21
|
-
if (this.params.token) {
|
|
22
|
-
url += `?token=${this.params.token}`
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
this.socket = new WebSocket(url)
|
|
26
|
-
|
|
27
|
-
this.socket.onopen = () => {
|
|
28
|
-
resolve()
|
|
29
|
-
this._emit("connect")
|
|
30
|
-
}
|
|
31
|
-
this.socket.onclose = () => {
|
|
32
|
-
this._emit("disconnect")
|
|
33
|
-
}
|
|
34
|
-
this.socket.onerror = () => {
|
|
35
|
-
reject()
|
|
36
|
-
this._emit("error")
|
|
37
|
-
}
|
|
38
|
-
this.socket.onmessage = (event) => this.handleMessage(event)
|
|
39
|
-
})
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async disconnect() {
|
|
43
|
-
if (!this.socket) {
|
|
44
|
-
return false
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
for await (const topic of this.joinedTopics) {
|
|
48
|
-
this.leaveTopic(topic)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
this.socket.close()
|
|
52
|
-
this.socket = null
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
_emit(event, data) {
|
|
56
|
-
for (const handler of this.handlers) {
|
|
57
|
-
if (handler.event === event) {
|
|
58
|
-
handler.handler(data)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
__init5() {this.on = (event, handler) => {
|
|
64
|
-
this.handlers.add({
|
|
65
|
-
event,
|
|
66
|
-
handler,
|
|
67
|
-
})
|
|
68
|
-
}}
|
|
69
|
-
|
|
70
|
-
__init6() {this.off = (event, handler) => {
|
|
71
|
-
this.handlers.delete({
|
|
72
|
-
event,
|
|
73
|
-
handler,
|
|
74
|
-
})
|
|
75
|
-
}}
|
|
76
|
-
|
|
77
|
-
__init7() {this.emit = (event, data) => {
|
|
78
|
-
if (!this.socket) {
|
|
79
|
-
throw new Error("Failed to send, socket not connected")
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
this.socket.send(JSON.stringify({ event, data }))
|
|
83
|
-
}}
|
|
84
|
-
|
|
85
|
-
__init8() {this.joinTopic = (topic) => {
|
|
86
|
-
this.emit("topic:join", topic)
|
|
87
|
-
this.joinedTopics.add(topic)
|
|
88
|
-
}}
|
|
89
|
-
|
|
90
|
-
__init9() {this.leaveTopic = (topic) => {
|
|
91
|
-
this.emit("topic:leave", topic)
|
|
92
|
-
this.joinedTopics.delete(topic)
|
|
93
|
-
}}
|
|
94
|
-
|
|
95
|
-
updateState(state) {
|
|
96
|
-
this.stateSubscribers.forEach((callback) => callback(state))
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
//* HANDLERS
|
|
100
|
-
handleMessage(event) {
|
|
101
|
-
try {
|
|
102
|
-
const payload = JSON.parse(event.data)
|
|
103
|
-
|
|
104
|
-
if (typeof payload.event !== "string") {
|
|
105
|
-
return false
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (payload.event === "error") {
|
|
109
|
-
console.error(payload.data)
|
|
110
|
-
return false
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
this._emit(payload.event, payload.data)
|
|
114
|
-
} catch (error) {
|
|
115
|
-
console.error("Error handling message:", error)
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// UPDATERS
|
|
120
|
-
onStateChange(callback) {
|
|
121
|
-
this.stateSubscribers.push(callback)
|
|
122
|
-
|
|
123
|
-
return () => {
|
|
124
|
-
this.stateSubscribers = this.stateSubscribers.filter(
|
|
125
|
-
(cb) => cb !== callback,
|
|
126
|
-
)
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
} exports.RTEngineClient = RTEngineClient;
|
|
130
|
-
|
|
131
|
-
exports. default = RTEngineClient
|
|
@@ -1,52 +0,0 @@
|
|
|
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
|
-
// create a regex to detect params with %% symbol, from the url
|
|
4
|
-
const paramMatchRegex = /(%[0-9a-f]{2}%)/g
|
|
5
|
-
|
|
6
|
-
exports. default = (method = "GET", url = "/", params, data) => {
|
|
7
|
-
return async function generatedRequest(arg0, arg1) {
|
|
8
|
-
const requestObj = {
|
|
9
|
-
method: method,
|
|
10
|
-
url: url,
|
|
11
|
-
params: params,
|
|
12
|
-
data: data,
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// search url for params
|
|
16
|
-
// example: /namespace/search/[0]/data => /namespace/search/${arguments[0]}/data
|
|
17
|
-
// if no url matches, merge params with arg0 and override data in requestObj
|
|
18
|
-
if (url.match(paramMatchRegex)) {
|
|
19
|
-
requestObj.url = url.replace(paramMatchRegex, (match) => {
|
|
20
|
-
console.log(match)
|
|
21
|
-
|
|
22
|
-
// replace with arguments
|
|
23
|
-
const fnArgumentIndex = ""
|
|
24
|
-
|
|
25
|
-
return match
|
|
26
|
-
})
|
|
27
|
-
} else {
|
|
28
|
-
requestObj.params = {
|
|
29
|
-
...requestObj.params,
|
|
30
|
-
...arg0
|
|
31
|
-
}
|
|
32
|
-
requestObj.data = {
|
|
33
|
-
...requestObj.data,
|
|
34
|
-
...arg1
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (typeof requestObj.params === "object" && requestObj.params) {
|
|
39
|
-
Object.keys(requestObj.params).forEach((key) => {
|
|
40
|
-
if (requestObj.params && typeof requestObj.params[key] === "string") {
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
})
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const response = await _request2.default.call(void 0, requestObj)
|
|
48
|
-
|
|
49
|
-
// @ts-ignore
|
|
50
|
-
return response.data
|
|
51
|
-
}
|
|
52
|
-
}
|