@amityco/ts-sdk 0.0.1-beta.8 → 0.0.1-beta.9
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/@types/core/events.d.ts +63 -17
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/transport.d.ts +15 -0
- package/dist/@types/core/transport.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +3 -0
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/comment.d.ts +1 -1
- package/dist/@types/domains/comment.d.ts.map +1 -1
- package/dist/@types/domains/community.d.ts +1 -1
- package/dist/@types/domains/community.d.ts.map +1 -1
- package/dist/@types/domains/group.d.ts +2 -2
- package/dist/@types/domains/group.d.ts.map +1 -1
- package/dist/@types/domains/partials.d.ts +3 -0
- package/dist/@types/domains/partials.d.ts.map +1 -1
- package/dist/@types/domains/post.d.ts +1 -1
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/@types/domains/user.d.ts +2 -1
- package/dist/@types/domains/user.d.ts.map +1 -1
- package/dist/client/api/connectClient.d.ts.map +1 -1
- package/dist/client/api/createClient.d.ts +2 -1
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/disconnectClient.d.ts.map +1 -1
- package/dist/client/api/getToken.d.ts +3 -1
- package/dist/client/api/getToken.d.ts.map +1 -1
- package/dist/comment/api/deleteComment.d.ts +1 -0
- package/dist/comment/api/deleteComment.d.ts.map +1 -1
- package/dist/comment/events/index.d.ts +4 -0
- package/dist/comment/events/index.d.ts.map +1 -1
- package/dist/comment/events/onCommentCreated.d.ts +1 -1
- package/dist/comment/events/onCommentCreated.d.ts.map +1 -1
- package/dist/comment/events/onCommentDeleted.d.ts +1 -1
- package/dist/comment/events/onCommentDeleted.d.ts.map +1 -1
- package/dist/comment/events/onCommentFlagged.d.ts +17 -0
- package/dist/comment/events/onCommentFlagged.d.ts.map +1 -0
- package/dist/comment/events/onCommentReactionAdded.d.ts +17 -0
- package/dist/comment/events/onCommentReactionAdded.d.ts.map +1 -0
- package/dist/comment/events/onCommentReactionRemoved.d.ts +17 -0
- package/dist/comment/events/onCommentReactionRemoved.d.ts.map +1 -0
- package/dist/comment/events/onCommentUnflagged.d.ts +17 -0
- package/dist/comment/events/onCommentUnflagged.d.ts.map +1 -0
- package/dist/comment/events/onCommentUpdated.d.ts +1 -1
- package/dist/comment/events/onCommentUpdated.d.ts.map +1 -1
- package/dist/comment/events/utils.d.ts +2 -0
- package/dist/comment/events/utils.d.ts.map +1 -0
- package/dist/comment/observers/observeComment.d.ts +1 -1
- package/dist/comment/observers/observeComment.d.ts.map +1 -1
- package/dist/comment/observers/observeComments.d.ts +5 -1
- package/dist/comment/observers/observeComments.d.ts.map +1 -1
- package/dist/community/events/index.d.ts +4 -0
- package/dist/community/events/index.d.ts.map +1 -1
- package/dist/community/events/onCommunityCreated.d.ts +2 -2
- package/dist/community/events/onCommunityCreated.d.ts.map +1 -1
- package/dist/community/events/onCommunityDeleted.d.ts +2 -2
- package/dist/community/events/onCommunityDeleted.d.ts.map +1 -1
- package/dist/community/events/onCommunityJoined.d.ts +3 -3
- package/dist/community/events/onCommunityJoined.d.ts.map +1 -1
- package/dist/community/events/onCommunityLeft.d.ts +3 -3
- package/dist/community/events/onCommunityLeft.d.ts.map +1 -1
- package/dist/community/events/onCommunityUpdated.d.ts +2 -2
- package/dist/community/events/onCommunityUpdated.d.ts.map +1 -1
- package/dist/community/events/onCommunityUserAdded.d.ts +17 -0
- package/dist/community/events/onCommunityUserAdded.d.ts.map +1 -0
- package/dist/community/events/onCommunityUserBanned.d.ts +17 -0
- package/dist/community/events/onCommunityUserBanned.d.ts.map +1 -0
- package/dist/community/events/onCommunityUserRemoved.d.ts +17 -0
- package/dist/community/events/onCommunityUserRemoved.d.ts.map +1 -0
- package/dist/community/events/onCommunityUserUnbanned.d.ts +17 -0
- package/dist/community/events/onCommunityUserUnbanned.d.ts.map +1 -0
- package/dist/community/events/utils.d.ts +3 -0
- package/dist/community/events/utils.d.ts.map +1 -0
- package/dist/community/observers/observeCommunity.d.ts +1 -1
- package/dist/community/observers/observeCommunity.d.ts.map +1 -1
- package/dist/core/cache/ingest.d.ts.map +1 -1
- package/dist/core/events.d.ts +4 -2
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/model/index.d.ts +1 -0
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/core/model/isMatch.d.ts +3 -0
- package/dist/core/model/isMatch.d.ts.map +1 -0
- package/dist/core/network.d.ts +11 -0
- package/dist/core/network.d.ts.map +1 -0
- package/dist/core/subscription.d.ts +14 -0
- package/dist/core/subscription.d.ts.map +1 -0
- package/dist/core/transports/http.d.ts +11 -0
- package/dist/core/transports/http.d.ts.map +1 -0
- package/dist/core/transports/index.d.ts +4 -0
- package/dist/core/transports/index.d.ts.map +1 -0
- package/dist/core/transports/mqtt.d.ts +17 -0
- package/dist/core/transports/mqtt.d.ts.map +1 -0
- package/dist/core/transports/utils.d.ts +13 -0
- package/dist/core/transports/utils.d.ts.map +1 -0
- package/dist/core/transports/ws.d.ts +27 -0
- package/dist/core/transports/ws.d.ts.map +1 -0
- package/dist/index.cjs.js +1208 -514
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1185 -515
- package/dist/index.umd.js +5 -3
- package/dist/post/api/deletePost.d.ts +1 -0
- package/dist/post/api/deletePost.d.ts.map +1 -1
- package/dist/post/events/index.d.ts +6 -0
- package/dist/post/events/index.d.ts.map +1 -1
- package/dist/post/events/onPostApproved.d.ts +17 -0
- package/dist/post/events/onPostApproved.d.ts.map +1 -0
- package/dist/post/events/onPostCreated.d.ts +1 -1
- package/dist/post/events/onPostCreated.d.ts.map +1 -1
- package/dist/post/events/onPostDeclined.d.ts +17 -0
- package/dist/post/events/onPostDeclined.d.ts.map +1 -0
- package/dist/post/events/onPostDeleted.d.ts +1 -1
- package/dist/post/events/onPostDeleted.d.ts.map +1 -1
- package/dist/post/events/onPostFlagged.d.ts +17 -0
- package/dist/post/events/onPostFlagged.d.ts.map +1 -0
- package/dist/post/events/onPostReactionAdded.d.ts +17 -0
- package/dist/post/events/onPostReactionAdded.d.ts.map +1 -0
- package/dist/post/events/onPostReactionRemoved.d.ts +17 -0
- package/dist/post/events/onPostReactionRemoved.d.ts.map +1 -0
- package/dist/post/events/onPostUnflagged.d.ts +17 -0
- package/dist/post/events/onPostUnflagged.d.ts.map +1 -0
- package/dist/post/events/onPostUpdated.d.ts +1 -1
- package/dist/post/events/onPostUpdated.d.ts.map +1 -1
- package/dist/post/events/utils.d.ts +2 -0
- package/dist/post/events/utils.d.ts.map +1 -0
- package/dist/post/observers/observePost.d.ts +1 -1
- package/dist/post/observers/observePost.d.ts.map +1 -1
- package/dist/post/observers/observePosts.d.ts +1 -1
- package/dist/post/observers/observePosts.d.ts.map +1 -1
- package/dist/reaction/events/onReactionAdded.d.ts +4 -2
- package/dist/reaction/events/onReactionAdded.d.ts.map +1 -1
- package/dist/reaction/events/onReactionRemoved.d.ts +4 -2
- package/dist/reaction/events/onReactionRemoved.d.ts.map +1 -1
- package/dist/reaction/utils/index.d.ts +1 -0
- package/dist/reaction/utils/index.d.ts.map +1 -1
- package/dist/reaction/utils/preparePayloadForCache.d.ts +3 -0
- package/dist/reaction/utils/preparePayloadForCache.d.ts.map +1 -0
- package/dist/report/api/createReport.d.ts.map +1 -1
- package/dist/report/api/deleteReport.d.ts.map +1 -1
- package/dist/user/events/index.d.ts +3 -0
- package/dist/user/events/index.d.ts.map +1 -1
- package/dist/user/events/onUserFlagCleared.d.ts +17 -0
- package/dist/user/events/onUserFlagCleared.d.ts.map +1 -0
- package/dist/user/events/onUserFlagged.d.ts +17 -0
- package/dist/user/events/onUserFlagged.d.ts.map +1 -0
- package/dist/user/events/onUserUnflagged.d.ts +17 -0
- package/dist/user/events/onUserUnflagged.d.ts.map +1 -0
- package/dist/user/events/onUserUpdated.d.ts +1 -1
- package/dist/user/events/onUserUpdated.d.ts.map +1 -1
- package/dist/user/events/utils.d.ts +2 -0
- package/dist/user/events/utils.d.ts.map +1 -0
- package/dist/user/observers/observeUser.d.ts +1 -1
- package/dist/user/observers/observeUser.d.ts.map +1 -1
- package/package.json +4 -1
- package/rollup.config.js +2 -2
- package/src/@types/core/events.ts +64 -23
- package/src/@types/core/transport.ts +14 -0
- package/src/@types/domains/client.ts +3 -0
- package/src/@types/domains/comment.ts +1 -0
- package/src/@types/domains/community.ts +1 -0
- package/src/@types/domains/group.ts +2 -2
- package/src/@types/domains/partials.ts +4 -0
- package/src/@types/domains/post.ts +1 -0
- package/src/@types/domains/user.ts +2 -0
- package/src/client/api/connectClient.ts +12 -2
- package/src/client/api/createClient.ts +7 -7
- package/src/client/api/disconnectClient.ts +5 -0
- package/src/client/api/getToken.ts +1 -1
- package/src/client/events/onConnectionError.ts +1 -1
- package/src/comment/api/createComment.ts +2 -2
- package/src/comment/api/deleteComment.ts +2 -2
- package/src/comment/api/updateComment.ts +1 -1
- package/src/comment/events/index.ts +6 -0
- package/src/comment/events/onCommentCreated.ts +4 -22
- package/src/comment/events/onCommentDeleted.ts +4 -22
- package/src/comment/events/onCommentFlagged.ts +21 -0
- package/src/comment/events/onCommentReactionAdded.ts +52 -0
- package/src/comment/events/onCommentReactionRemoved.ts +52 -0
- package/src/comment/events/onCommentUnflagged.ts +21 -0
- package/src/comment/events/onCommentUpdated.ts +4 -22
- package/src/comment/events/utils.ts +34 -0
- package/src/comment/observers/observeComment.ts +21 -7
- package/src/comment/observers/observeComments.ts +11 -3
- package/src/community/api/addCommunityMembers.ts +1 -1
- package/src/community/api/createCommunity.ts +1 -1
- package/src/community/api/deleteCommunity.ts +1 -1
- package/src/community/api/joinCommunity.ts +1 -1
- package/src/community/api/leaveCommunity.ts +1 -1
- package/src/community/api/removeCommunityMembers.ts +1 -1
- package/src/community/api/updateCommunity.ts +1 -1
- package/src/community/events/index.ts +5 -0
- package/src/community/events/onCommunityCreated.ts +5 -23
- package/src/community/events/onCommunityDeleted.ts +5 -23
- package/src/community/events/onCommunityJoined.ts +5 -23
- package/src/community/events/onCommunityLeft.ts +5 -23
- package/src/community/events/onCommunityUpdated.ts +5 -23
- package/src/community/events/onCommunityUserAdded.ts +19 -0
- package/src/community/events/onCommunityUserBanned.ts +19 -0
- package/src/community/events/onCommunityUserRemoved.ts +19 -0
- package/src/community/events/onCommunityUserUnbanned.ts +19 -0
- package/src/community/events/utils.ts +108 -0
- package/src/community/observers/observeCommunity.ts +23 -9
- package/src/core/cache/ingest.ts +19 -3
- package/src/core/events.ts +45 -4
- package/src/core/model/index.ts +1 -0
- package/src/core/model/isMatch.ts +12 -0
- package/src/core/network.ts +14 -0
- package/src/core/subscription.ts +75 -0
- package/src/core/transports/http.ts +63 -0
- package/src/core/transports/index.ts +3 -0
- package/src/core/transports/mqtt.ts +141 -0
- package/src/core/transports/utils.ts +25 -0
- package/src/core/transports/ws.ts +61 -0
- package/src/index.ts +1 -0
- package/src/post/api/createPost.ts +2 -2
- package/src/post/api/deletePost.ts +2 -2
- package/src/post/api/updatePost.ts +1 -1
- package/src/post/events/index.ts +9 -0
- package/src/post/events/onPostApproved.ts +19 -0
- package/src/post/events/onPostCreated.ts +4 -24
- package/src/post/events/onPostDeclined.ts +19 -0
- package/src/post/events/onPostDeleted.ts +4 -24
- package/src/post/events/onPostFlagged.ts +19 -0
- package/src/post/events/onPostReactionAdded.ts +50 -0
- package/src/post/events/onPostReactionRemoved.ts +50 -0
- package/src/post/events/onPostUnflagged.ts +19 -0
- package/src/post/events/onPostUpdated.ts +4 -24
- package/src/post/events/utils.ts +40 -0
- package/src/post/observers/observePost.ts +25 -7
- package/src/post/observers/observePosts.ts +12 -2
- package/src/reaction/events/onReactionAdded.ts +36 -15
- package/src/reaction/events/onReactionRemoved.ts +37 -14
- package/src/reaction/utils/dispatchReactable.ts +2 -2
- package/src/reaction/utils/index.ts +1 -0
- package/src/reaction/utils/preparePayloadForCache.ts +45 -0
- package/src/report/api/createReport.ts +5 -1
- package/src/report/api/deleteReport.ts +5 -1
- package/src/user/events/index.ts +4 -0
- package/src/user/events/onUserFlagCleared.ts +19 -0
- package/src/user/events/onUserFlagged.ts +19 -0
- package/src/user/events/onUserUnflagged.ts +19 -0
- package/src/user/events/onUserUpdated.ts +4 -24
- package/src/user/events/utils.ts +24 -0
- package/src/user/observers/observeUser.ts +11 -3
- package/dist/core/transports.d.ts +0 -49
- package/dist/core/transports.d.ts.map +0 -1
- package/src/core/transports.ts +0 -151
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createEventSubscriber } from '~/core/events'
|
|
3
|
-
|
|
4
|
-
import { decoratePayload } from '~/core/query'
|
|
5
|
-
import { ingestInCache } from '~/core/cache'
|
|
1
|
+
import { createUserEventSubscriber } from './utils'
|
|
6
2
|
|
|
7
3
|
/**
|
|
8
4
|
* ```js
|
|
@@ -12,28 +8,12 @@ import { ingestInCache } from '~/core/cache'
|
|
|
12
8
|
* })
|
|
13
9
|
* ```
|
|
14
10
|
*
|
|
15
|
-
* Fired when
|
|
11
|
+
* Fired when a {@link Amity.User} has been updated
|
|
16
12
|
*
|
|
17
13
|
* @param callback The function to call when the event was fired
|
|
18
14
|
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19
15
|
*
|
|
20
16
|
* @category User Events
|
|
21
17
|
*/
|
|
22
|
-
export const onUserUpdated = (
|
|
23
|
-
callback
|
|
24
|
-
) => {
|
|
25
|
-
const client = getActiveClient()
|
|
26
|
-
|
|
27
|
-
const filter = (payload: Amity.UserPayload) => {
|
|
28
|
-
decoratePayload(payload)
|
|
29
|
-
ingestInCache(payload)
|
|
30
|
-
callback(payload.users[0])
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return createEventSubscriber(
|
|
34
|
-
client,
|
|
35
|
-
'user/onUserUpdate',
|
|
36
|
-
'v3.user.didUpdate',
|
|
37
|
-
filter
|
|
38
|
-
)
|
|
39
|
-
}
|
|
18
|
+
export const onUserUpdated = (callback: Amity.Listener<Amity.User>) =>
|
|
19
|
+
createUserEventSubscriber('user.updated', callback)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api'
|
|
2
|
+
import { decoratePayload } from '~/core/query'
|
|
3
|
+
import { ingestInCache } from '~/core/cache'
|
|
4
|
+
import { createEventSubscriber } from '~/core/events'
|
|
5
|
+
|
|
6
|
+
export const createUserEventSubscriber = (
|
|
7
|
+
event: keyof Amity.MqttUserMessageEvents,
|
|
8
|
+
callback: Amity.Listener<Amity.User>
|
|
9
|
+
) => {
|
|
10
|
+
const client = getActiveClient()
|
|
11
|
+
|
|
12
|
+
const filter = (payload: Amity.UserPayload) => {
|
|
13
|
+
decoratePayload(payload)
|
|
14
|
+
ingestInCache(payload)
|
|
15
|
+
callback(payload.users[0])
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return createEventSubscriber(
|
|
19
|
+
client,
|
|
20
|
+
event,
|
|
21
|
+
event,
|
|
22
|
+
filter
|
|
23
|
+
)
|
|
24
|
+
}
|
|
@@ -3,7 +3,12 @@ import { createQuery, runQuery } from '~/core/query/query'
|
|
|
3
3
|
import { getActiveClient } from '~/client/api'
|
|
4
4
|
|
|
5
5
|
import { getUser } from '../api'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
onUserUpdated,
|
|
8
|
+
onUserFlagged,
|
|
9
|
+
onUserUnflagged,
|
|
10
|
+
onUserFlagCleared,
|
|
11
|
+
} from '../events'
|
|
7
12
|
|
|
8
13
|
/**
|
|
9
14
|
* ```js
|
|
@@ -20,7 +25,7 @@ import { onUserUpdated } from '../events'
|
|
|
20
25
|
* Observe all mutation on a given {@link Amity.User}
|
|
21
26
|
* @category User Observer
|
|
22
27
|
*/
|
|
23
|
-
export const observeUser = <Events extends ['onFetch', 'onUpdate']>(
|
|
28
|
+
export const observeUser = <Events extends ['onFetch', 'onUpdate', 'onFlagged', 'onUnflagged', 'onFlagCleared']>(
|
|
24
29
|
userId: string,
|
|
25
30
|
callback: Amity.ObjectListener<Amity.QueryResult<Amity.User>, Events>,
|
|
26
31
|
): Amity.Unsubscriber => {
|
|
@@ -49,7 +54,10 @@ export const observeUser = <Events extends ['onFetch', 'onUpdate']>(
|
|
|
49
54
|
const disposers: Amity.Unsubscriber[] = []
|
|
50
55
|
|
|
51
56
|
disposers.push(
|
|
52
|
-
onUserUpdated(data => router({ data }, 'onUpdate'))
|
|
57
|
+
onUserUpdated(data => router({ data }, 'onUpdate')),
|
|
58
|
+
onUserFlagged(data => router({ data }, 'onFlagged')),
|
|
59
|
+
onUserUnflagged(data => router({ data }, 'onUnflagged')),
|
|
60
|
+
onUserFlagCleared(data => router({ data }, 'onFlagCleared'))
|
|
53
61
|
)
|
|
54
62
|
|
|
55
63
|
runQuery(
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/// <reference types="socket.io-client" />
|
|
2
|
-
/**
|
|
3
|
-
* Creates a pre-configured axios instance
|
|
4
|
-
*
|
|
5
|
-
* @param endpoint The ASC rest api server's URL
|
|
6
|
-
* @returns A pre-configured axios instance
|
|
7
|
-
*
|
|
8
|
-
* @category Transport
|
|
9
|
-
* @hidden
|
|
10
|
-
*/
|
|
11
|
-
export declare const createHttpTransport: (endpoint?: string) => import("axios").AxiosInstance;
|
|
12
|
-
/**
|
|
13
|
-
* Creates a pre-configured socket.io instance
|
|
14
|
-
*
|
|
15
|
-
* @param endpoint The socket.io server's URL
|
|
16
|
-
* @returns A pre-configured (non-connected) socket.io client instance
|
|
17
|
-
*
|
|
18
|
-
* @category Transport
|
|
19
|
-
* @hidden
|
|
20
|
-
*/
|
|
21
|
-
export declare const createWebsocketTransport: (endpoint?: string) => SocketIOClient.Socket;
|
|
22
|
-
/**
|
|
23
|
-
* Unwraps v3 server payload (for error handling and type extraction)
|
|
24
|
-
*
|
|
25
|
-
* @param response A typical "v3" response (related to backend's service strategy)
|
|
26
|
-
*
|
|
27
|
-
* @returns The data returned by the backend
|
|
28
|
-
* @throws An error related to backend's rejection
|
|
29
|
-
*
|
|
30
|
-
* @category Transport
|
|
31
|
-
* @hidden
|
|
32
|
-
*/
|
|
33
|
-
export declare const unwrapPayload: <T>(response: Amity.Response<T>) => T;
|
|
34
|
-
/**
|
|
35
|
-
* Promisify a websocket event emission - resulting in a synchronous http-like XHR (ws legacy)
|
|
36
|
-
*
|
|
37
|
-
* @param client The current client for which to send the event with
|
|
38
|
-
* @param event The websocket event name
|
|
39
|
-
* @param data The event's payload
|
|
40
|
-
*
|
|
41
|
-
* @returns The data returned by the backend
|
|
42
|
-
* @throws An error related to backend's rejection
|
|
43
|
-
*
|
|
44
|
-
* @category Transport
|
|
45
|
-
* @async
|
|
46
|
-
* @hidden
|
|
47
|
-
*/
|
|
48
|
-
export declare const synchronousWSCall: <T>(client: Amity.Client, event: string, data?: Object | undefined) => Promise<T | undefined>;
|
|
49
|
-
//# sourceMappingURL=transports.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/core/transports.ts"],"names":[],"mappings":";AAgCA;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,cAAc,MAAM,kCA2BnD,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,cAAc,MAAM,0BAaxD,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,uCAWzB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,cACpB,MAAM,MAAM,SACb,MAAM,sDAgBd,CAAA"}
|
package/src/core/transports.ts
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import axios from 'axios'
|
|
2
|
-
import HttpAgent, { HttpsAgent } from 'agentkeepalive'
|
|
3
|
-
|
|
4
|
-
import io from 'socket.io-client'
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
ASCApiError,
|
|
8
|
-
ASCUnknownError,
|
|
9
|
-
ASCConnectionError,
|
|
10
|
-
} from './errors'
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Axios param serializer (for querystring)
|
|
14
|
-
* @hidden
|
|
15
|
-
*/
|
|
16
|
-
const stringify = (params: object, prefix?: string): string => {
|
|
17
|
-
return Object.entries(params)
|
|
18
|
-
.filter(([, value]) => value !== undefined)
|
|
19
|
-
.map(([name, value]) => {
|
|
20
|
-
const key = prefix ? `${prefix}[${name}]` : name
|
|
21
|
-
|
|
22
|
-
if (Array.isArray(value)) {
|
|
23
|
-
return value.map(item => `${key}[]=${item}`).join('&')
|
|
24
|
-
} else if (typeof value !== 'object') {
|
|
25
|
-
return `${key}=${value}`
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return stringify(value, prefix ?? name)
|
|
29
|
-
})
|
|
30
|
-
.join('&')
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Creates a pre-configured axios instance
|
|
35
|
-
*
|
|
36
|
-
* @param endpoint The ASC rest api server's URL
|
|
37
|
-
* @returns A pre-configured axios instance
|
|
38
|
-
*
|
|
39
|
-
* @category Transport
|
|
40
|
-
* @hidden
|
|
41
|
-
*/
|
|
42
|
-
export const createHttpTransport = (endpoint: string = 'https://api.amity.co') => {
|
|
43
|
-
const options = {
|
|
44
|
-
maxSockets: 100,
|
|
45
|
-
maxFreeSockets: 10,
|
|
46
|
-
timeout: 60000,
|
|
47
|
-
freeSocketTimeout: 30000,
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const instance = axios.create({
|
|
51
|
-
baseURL: endpoint,
|
|
52
|
-
httpAgent: new HttpAgent(options),
|
|
53
|
-
httpsAgent: new HttpsAgent(options),
|
|
54
|
-
paramsSerializer: stringify,
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
instance.interceptors.response.use(
|
|
58
|
-
(response) => response,
|
|
59
|
-
(error) => {
|
|
60
|
-
const { response } = error
|
|
61
|
-
console.error(response?.data ?? error)
|
|
62
|
-
|
|
63
|
-
if (response)
|
|
64
|
-
unwrapPayload(response.data)
|
|
65
|
-
}
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
return instance
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Creates a pre-configured socket.io instance
|
|
73
|
-
*
|
|
74
|
-
* @param endpoint The socket.io server's URL
|
|
75
|
-
* @returns A pre-configured (non-connected) socket.io client instance
|
|
76
|
-
*
|
|
77
|
-
* @category Transport
|
|
78
|
-
* @hidden
|
|
79
|
-
*/
|
|
80
|
-
export const createWebsocketTransport = (endpoint: string = 'https://api.ekomedia.technology') => {
|
|
81
|
-
const socket = io(endpoint, {
|
|
82
|
-
autoConnect: false,
|
|
83
|
-
reconnectionDelay: 2000,
|
|
84
|
-
transports: ['websocket'],
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
socket.on('disconnect', (reason: string) => {
|
|
88
|
-
if (reason === 'io server disconnect')
|
|
89
|
-
socket.connect()
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
return socket
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Unwraps v3 server payload (for error handling and type extraction)
|
|
97
|
-
*
|
|
98
|
-
* @param response A typical "v3" response (related to backend's service strategy)
|
|
99
|
-
*
|
|
100
|
-
* @returns The data returned by the backend
|
|
101
|
-
* @throws An error related to backend's rejection
|
|
102
|
-
*
|
|
103
|
-
* @category Transport
|
|
104
|
-
* @hidden
|
|
105
|
-
*/
|
|
106
|
-
export const unwrapPayload = <T>(response: Amity.Response<T>): T => {
|
|
107
|
-
if (response.status === 'success') {
|
|
108
|
-
return response.data
|
|
109
|
-
} else if (response.status === 'fail') {
|
|
110
|
-
throw new ASCUnknownError(response.code)
|
|
111
|
-
} else if (response.status === 'error') {
|
|
112
|
-
throw new ASCApiError(response.message, response.code, Amity.ErrorLevel.ERROR)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// unjust, but helps force uncast "T | undefined" to allow deconstruction without warnings
|
|
116
|
-
return undefined as unknown as T
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Promisify a websocket event emission - resulting in a synchronous http-like XHR (ws legacy)
|
|
121
|
-
*
|
|
122
|
-
* @param client The current client for which to send the event with
|
|
123
|
-
* @param event The websocket event name
|
|
124
|
-
* @param data The event's payload
|
|
125
|
-
*
|
|
126
|
-
* @returns The data returned by the backend
|
|
127
|
-
* @throws An error related to backend's rejection
|
|
128
|
-
*
|
|
129
|
-
* @category Transport
|
|
130
|
-
* @async
|
|
131
|
-
* @hidden
|
|
132
|
-
*/
|
|
133
|
-
export const synchronousWSCall = async <T>(
|
|
134
|
-
client: Amity.Client,
|
|
135
|
-
event: string,
|
|
136
|
-
data?: Object,
|
|
137
|
-
)=> {
|
|
138
|
-
const { ws } = client
|
|
139
|
-
|
|
140
|
-
const value = await new Promise<T | undefined>((resolve, reject) => {
|
|
141
|
-
ws.emit(event, data, (response: Amity.Response<T>) => {
|
|
142
|
-
try {
|
|
143
|
-
resolve(unwrapPayload(response))
|
|
144
|
-
} catch (error) {
|
|
145
|
-
reject(error)
|
|
146
|
-
}
|
|
147
|
-
})
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
return value
|
|
151
|
-
}
|