@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.
Files changed (244) hide show
  1. package/dist/@types/core/events.d.ts +63 -17
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/transport.d.ts +15 -0
  4. package/dist/@types/core/transport.d.ts.map +1 -1
  5. package/dist/@types/domains/client.d.ts +3 -0
  6. package/dist/@types/domains/client.d.ts.map +1 -1
  7. package/dist/@types/domains/comment.d.ts +1 -1
  8. package/dist/@types/domains/comment.d.ts.map +1 -1
  9. package/dist/@types/domains/community.d.ts +1 -1
  10. package/dist/@types/domains/community.d.ts.map +1 -1
  11. package/dist/@types/domains/group.d.ts +2 -2
  12. package/dist/@types/domains/group.d.ts.map +1 -1
  13. package/dist/@types/domains/partials.d.ts +3 -0
  14. package/dist/@types/domains/partials.d.ts.map +1 -1
  15. package/dist/@types/domains/post.d.ts +1 -1
  16. package/dist/@types/domains/post.d.ts.map +1 -1
  17. package/dist/@types/domains/user.d.ts +2 -1
  18. package/dist/@types/domains/user.d.ts.map +1 -1
  19. package/dist/client/api/connectClient.d.ts.map +1 -1
  20. package/dist/client/api/createClient.d.ts +2 -1
  21. package/dist/client/api/createClient.d.ts.map +1 -1
  22. package/dist/client/api/disconnectClient.d.ts.map +1 -1
  23. package/dist/client/api/getToken.d.ts +3 -1
  24. package/dist/client/api/getToken.d.ts.map +1 -1
  25. package/dist/comment/api/deleteComment.d.ts +1 -0
  26. package/dist/comment/api/deleteComment.d.ts.map +1 -1
  27. package/dist/comment/events/index.d.ts +4 -0
  28. package/dist/comment/events/index.d.ts.map +1 -1
  29. package/dist/comment/events/onCommentCreated.d.ts +1 -1
  30. package/dist/comment/events/onCommentCreated.d.ts.map +1 -1
  31. package/dist/comment/events/onCommentDeleted.d.ts +1 -1
  32. package/dist/comment/events/onCommentDeleted.d.ts.map +1 -1
  33. package/dist/comment/events/onCommentFlagged.d.ts +17 -0
  34. package/dist/comment/events/onCommentFlagged.d.ts.map +1 -0
  35. package/dist/comment/events/onCommentReactionAdded.d.ts +17 -0
  36. package/dist/comment/events/onCommentReactionAdded.d.ts.map +1 -0
  37. package/dist/comment/events/onCommentReactionRemoved.d.ts +17 -0
  38. package/dist/comment/events/onCommentReactionRemoved.d.ts.map +1 -0
  39. package/dist/comment/events/onCommentUnflagged.d.ts +17 -0
  40. package/dist/comment/events/onCommentUnflagged.d.ts.map +1 -0
  41. package/dist/comment/events/onCommentUpdated.d.ts +1 -1
  42. package/dist/comment/events/onCommentUpdated.d.ts.map +1 -1
  43. package/dist/comment/events/utils.d.ts +2 -0
  44. package/dist/comment/events/utils.d.ts.map +1 -0
  45. package/dist/comment/observers/observeComment.d.ts +1 -1
  46. package/dist/comment/observers/observeComment.d.ts.map +1 -1
  47. package/dist/comment/observers/observeComments.d.ts +5 -1
  48. package/dist/comment/observers/observeComments.d.ts.map +1 -1
  49. package/dist/community/events/index.d.ts +4 -0
  50. package/dist/community/events/index.d.ts.map +1 -1
  51. package/dist/community/events/onCommunityCreated.d.ts +2 -2
  52. package/dist/community/events/onCommunityCreated.d.ts.map +1 -1
  53. package/dist/community/events/onCommunityDeleted.d.ts +2 -2
  54. package/dist/community/events/onCommunityDeleted.d.ts.map +1 -1
  55. package/dist/community/events/onCommunityJoined.d.ts +3 -3
  56. package/dist/community/events/onCommunityJoined.d.ts.map +1 -1
  57. package/dist/community/events/onCommunityLeft.d.ts +3 -3
  58. package/dist/community/events/onCommunityLeft.d.ts.map +1 -1
  59. package/dist/community/events/onCommunityUpdated.d.ts +2 -2
  60. package/dist/community/events/onCommunityUpdated.d.ts.map +1 -1
  61. package/dist/community/events/onCommunityUserAdded.d.ts +17 -0
  62. package/dist/community/events/onCommunityUserAdded.d.ts.map +1 -0
  63. package/dist/community/events/onCommunityUserBanned.d.ts +17 -0
  64. package/dist/community/events/onCommunityUserBanned.d.ts.map +1 -0
  65. package/dist/community/events/onCommunityUserRemoved.d.ts +17 -0
  66. package/dist/community/events/onCommunityUserRemoved.d.ts.map +1 -0
  67. package/dist/community/events/onCommunityUserUnbanned.d.ts +17 -0
  68. package/dist/community/events/onCommunityUserUnbanned.d.ts.map +1 -0
  69. package/dist/community/events/utils.d.ts +3 -0
  70. package/dist/community/events/utils.d.ts.map +1 -0
  71. package/dist/community/observers/observeCommunity.d.ts +1 -1
  72. package/dist/community/observers/observeCommunity.d.ts.map +1 -1
  73. package/dist/core/cache/ingest.d.ts.map +1 -1
  74. package/dist/core/events.d.ts +4 -2
  75. package/dist/core/events.d.ts.map +1 -1
  76. package/dist/core/model/index.d.ts +1 -0
  77. package/dist/core/model/index.d.ts.map +1 -1
  78. package/dist/core/model/isMatch.d.ts +3 -0
  79. package/dist/core/model/isMatch.d.ts.map +1 -0
  80. package/dist/core/network.d.ts +11 -0
  81. package/dist/core/network.d.ts.map +1 -0
  82. package/dist/core/subscription.d.ts +14 -0
  83. package/dist/core/subscription.d.ts.map +1 -0
  84. package/dist/core/transports/http.d.ts +11 -0
  85. package/dist/core/transports/http.d.ts.map +1 -0
  86. package/dist/core/transports/index.d.ts +4 -0
  87. package/dist/core/transports/index.d.ts.map +1 -0
  88. package/dist/core/transports/mqtt.d.ts +17 -0
  89. package/dist/core/transports/mqtt.d.ts.map +1 -0
  90. package/dist/core/transports/utils.d.ts +13 -0
  91. package/dist/core/transports/utils.d.ts.map +1 -0
  92. package/dist/core/transports/ws.d.ts +27 -0
  93. package/dist/core/transports/ws.d.ts.map +1 -0
  94. package/dist/index.cjs.js +1208 -514
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.esm.js +1185 -515
  98. package/dist/index.umd.js +5 -3
  99. package/dist/post/api/deletePost.d.ts +1 -0
  100. package/dist/post/api/deletePost.d.ts.map +1 -1
  101. package/dist/post/events/index.d.ts +6 -0
  102. package/dist/post/events/index.d.ts.map +1 -1
  103. package/dist/post/events/onPostApproved.d.ts +17 -0
  104. package/dist/post/events/onPostApproved.d.ts.map +1 -0
  105. package/dist/post/events/onPostCreated.d.ts +1 -1
  106. package/dist/post/events/onPostCreated.d.ts.map +1 -1
  107. package/dist/post/events/onPostDeclined.d.ts +17 -0
  108. package/dist/post/events/onPostDeclined.d.ts.map +1 -0
  109. package/dist/post/events/onPostDeleted.d.ts +1 -1
  110. package/dist/post/events/onPostDeleted.d.ts.map +1 -1
  111. package/dist/post/events/onPostFlagged.d.ts +17 -0
  112. package/dist/post/events/onPostFlagged.d.ts.map +1 -0
  113. package/dist/post/events/onPostReactionAdded.d.ts +17 -0
  114. package/dist/post/events/onPostReactionAdded.d.ts.map +1 -0
  115. package/dist/post/events/onPostReactionRemoved.d.ts +17 -0
  116. package/dist/post/events/onPostReactionRemoved.d.ts.map +1 -0
  117. package/dist/post/events/onPostUnflagged.d.ts +17 -0
  118. package/dist/post/events/onPostUnflagged.d.ts.map +1 -0
  119. package/dist/post/events/onPostUpdated.d.ts +1 -1
  120. package/dist/post/events/onPostUpdated.d.ts.map +1 -1
  121. package/dist/post/events/utils.d.ts +2 -0
  122. package/dist/post/events/utils.d.ts.map +1 -0
  123. package/dist/post/observers/observePost.d.ts +1 -1
  124. package/dist/post/observers/observePost.d.ts.map +1 -1
  125. package/dist/post/observers/observePosts.d.ts +1 -1
  126. package/dist/post/observers/observePosts.d.ts.map +1 -1
  127. package/dist/reaction/events/onReactionAdded.d.ts +4 -2
  128. package/dist/reaction/events/onReactionAdded.d.ts.map +1 -1
  129. package/dist/reaction/events/onReactionRemoved.d.ts +4 -2
  130. package/dist/reaction/events/onReactionRemoved.d.ts.map +1 -1
  131. package/dist/reaction/utils/index.d.ts +1 -0
  132. package/dist/reaction/utils/index.d.ts.map +1 -1
  133. package/dist/reaction/utils/preparePayloadForCache.d.ts +3 -0
  134. package/dist/reaction/utils/preparePayloadForCache.d.ts.map +1 -0
  135. package/dist/report/api/createReport.d.ts.map +1 -1
  136. package/dist/report/api/deleteReport.d.ts.map +1 -1
  137. package/dist/user/events/index.d.ts +3 -0
  138. package/dist/user/events/index.d.ts.map +1 -1
  139. package/dist/user/events/onUserFlagCleared.d.ts +17 -0
  140. package/dist/user/events/onUserFlagCleared.d.ts.map +1 -0
  141. package/dist/user/events/onUserFlagged.d.ts +17 -0
  142. package/dist/user/events/onUserFlagged.d.ts.map +1 -0
  143. package/dist/user/events/onUserUnflagged.d.ts +17 -0
  144. package/dist/user/events/onUserUnflagged.d.ts.map +1 -0
  145. package/dist/user/events/onUserUpdated.d.ts +1 -1
  146. package/dist/user/events/onUserUpdated.d.ts.map +1 -1
  147. package/dist/user/events/utils.d.ts +2 -0
  148. package/dist/user/events/utils.d.ts.map +1 -0
  149. package/dist/user/observers/observeUser.d.ts +1 -1
  150. package/dist/user/observers/observeUser.d.ts.map +1 -1
  151. package/package.json +4 -1
  152. package/rollup.config.js +2 -2
  153. package/src/@types/core/events.ts +64 -23
  154. package/src/@types/core/transport.ts +14 -0
  155. package/src/@types/domains/client.ts +3 -0
  156. package/src/@types/domains/comment.ts +1 -0
  157. package/src/@types/domains/community.ts +1 -0
  158. package/src/@types/domains/group.ts +2 -2
  159. package/src/@types/domains/partials.ts +4 -0
  160. package/src/@types/domains/post.ts +1 -0
  161. package/src/@types/domains/user.ts +2 -0
  162. package/src/client/api/connectClient.ts +12 -2
  163. package/src/client/api/createClient.ts +7 -7
  164. package/src/client/api/disconnectClient.ts +5 -0
  165. package/src/client/api/getToken.ts +1 -1
  166. package/src/client/events/onConnectionError.ts +1 -1
  167. package/src/comment/api/createComment.ts +2 -2
  168. package/src/comment/api/deleteComment.ts +2 -2
  169. package/src/comment/api/updateComment.ts +1 -1
  170. package/src/comment/events/index.ts +6 -0
  171. package/src/comment/events/onCommentCreated.ts +4 -22
  172. package/src/comment/events/onCommentDeleted.ts +4 -22
  173. package/src/comment/events/onCommentFlagged.ts +21 -0
  174. package/src/comment/events/onCommentReactionAdded.ts +52 -0
  175. package/src/comment/events/onCommentReactionRemoved.ts +52 -0
  176. package/src/comment/events/onCommentUnflagged.ts +21 -0
  177. package/src/comment/events/onCommentUpdated.ts +4 -22
  178. package/src/comment/events/utils.ts +34 -0
  179. package/src/comment/observers/observeComment.ts +21 -7
  180. package/src/comment/observers/observeComments.ts +11 -3
  181. package/src/community/api/addCommunityMembers.ts +1 -1
  182. package/src/community/api/createCommunity.ts +1 -1
  183. package/src/community/api/deleteCommunity.ts +1 -1
  184. package/src/community/api/joinCommunity.ts +1 -1
  185. package/src/community/api/leaveCommunity.ts +1 -1
  186. package/src/community/api/removeCommunityMembers.ts +1 -1
  187. package/src/community/api/updateCommunity.ts +1 -1
  188. package/src/community/events/index.ts +5 -0
  189. package/src/community/events/onCommunityCreated.ts +5 -23
  190. package/src/community/events/onCommunityDeleted.ts +5 -23
  191. package/src/community/events/onCommunityJoined.ts +5 -23
  192. package/src/community/events/onCommunityLeft.ts +5 -23
  193. package/src/community/events/onCommunityUpdated.ts +5 -23
  194. package/src/community/events/onCommunityUserAdded.ts +19 -0
  195. package/src/community/events/onCommunityUserBanned.ts +19 -0
  196. package/src/community/events/onCommunityUserRemoved.ts +19 -0
  197. package/src/community/events/onCommunityUserUnbanned.ts +19 -0
  198. package/src/community/events/utils.ts +108 -0
  199. package/src/community/observers/observeCommunity.ts +23 -9
  200. package/src/core/cache/ingest.ts +19 -3
  201. package/src/core/events.ts +45 -4
  202. package/src/core/model/index.ts +1 -0
  203. package/src/core/model/isMatch.ts +12 -0
  204. package/src/core/network.ts +14 -0
  205. package/src/core/subscription.ts +75 -0
  206. package/src/core/transports/http.ts +63 -0
  207. package/src/core/transports/index.ts +3 -0
  208. package/src/core/transports/mqtt.ts +141 -0
  209. package/src/core/transports/utils.ts +25 -0
  210. package/src/core/transports/ws.ts +61 -0
  211. package/src/index.ts +1 -0
  212. package/src/post/api/createPost.ts +2 -2
  213. package/src/post/api/deletePost.ts +2 -2
  214. package/src/post/api/updatePost.ts +1 -1
  215. package/src/post/events/index.ts +9 -0
  216. package/src/post/events/onPostApproved.ts +19 -0
  217. package/src/post/events/onPostCreated.ts +4 -24
  218. package/src/post/events/onPostDeclined.ts +19 -0
  219. package/src/post/events/onPostDeleted.ts +4 -24
  220. package/src/post/events/onPostFlagged.ts +19 -0
  221. package/src/post/events/onPostReactionAdded.ts +50 -0
  222. package/src/post/events/onPostReactionRemoved.ts +50 -0
  223. package/src/post/events/onPostUnflagged.ts +19 -0
  224. package/src/post/events/onPostUpdated.ts +4 -24
  225. package/src/post/events/utils.ts +40 -0
  226. package/src/post/observers/observePost.ts +25 -7
  227. package/src/post/observers/observePosts.ts +12 -2
  228. package/src/reaction/events/onReactionAdded.ts +36 -15
  229. package/src/reaction/events/onReactionRemoved.ts +37 -14
  230. package/src/reaction/utils/dispatchReactable.ts +2 -2
  231. package/src/reaction/utils/index.ts +1 -0
  232. package/src/reaction/utils/preparePayloadForCache.ts +45 -0
  233. package/src/report/api/createReport.ts +5 -1
  234. package/src/report/api/deleteReport.ts +5 -1
  235. package/src/user/events/index.ts +4 -0
  236. package/src/user/events/onUserFlagCleared.ts +19 -0
  237. package/src/user/events/onUserFlagged.ts +19 -0
  238. package/src/user/events/onUserUnflagged.ts +19 -0
  239. package/src/user/events/onUserUpdated.ts +4 -24
  240. package/src/user/events/utils.ts +24 -0
  241. package/src/user/observers/observeUser.ts +11 -3
  242. package/dist/core/transports.d.ts +0 -49
  243. package/dist/core/transports.d.ts.map +0 -1
  244. package/src/core/transports.ts +0 -151
@@ -1,8 +1,4 @@
1
- import { getActiveClient } from '~/client/api'
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 any {@link Amity.User} have been updated
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: Amity.Listener<Amity.User>
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 { onUserUpdated } from '../events'
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"}
@@ -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
- }