@amityco/ts-sdk 0.0.1-beta.13 → 0.0.1-beta.16

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 (190) hide show
  1. package/README.md +3 -3
  2. package/dist/@types/core/cache.d.ts +2 -2
  3. package/dist/@types/core/cache.d.ts.map +1 -1
  4. package/dist/@types/core/events.d.ts +12 -3
  5. package/dist/@types/core/events.d.ts.map +1 -1
  6. package/dist/@types/core/model.d.ts +4 -0
  7. package/dist/@types/core/model.d.ts.map +1 -1
  8. package/dist/@types/core/paging.d.ts +22 -41
  9. package/dist/@types/core/paging.d.ts.map +1 -1
  10. package/dist/@types/core/payload.d.ts +10 -0
  11. package/dist/@types/core/payload.d.ts.map +1 -1
  12. package/dist/@types/core/query.d.ts +13 -4
  13. package/dist/@types/core/query.d.ts.map +1 -1
  14. package/dist/@types/domains/client.d.ts +0 -1
  15. package/dist/@types/domains/client.d.ts.map +1 -1
  16. package/dist/@types/domains/comment.d.ts +1 -2
  17. package/dist/@types/domains/comment.d.ts.map +1 -1
  18. package/dist/@types/domains/follow.d.ts +20 -0
  19. package/dist/@types/domains/follow.d.ts.map +1 -0
  20. package/dist/@types/domains/mention.d.ts +23 -0
  21. package/dist/@types/domains/mention.d.ts.map +1 -0
  22. package/dist/@types/domains/message.d.ts +1 -1
  23. package/dist/@types/domains/message.d.ts.map +1 -1
  24. package/dist/@types/domains/partials.d.ts +0 -10
  25. package/dist/@types/domains/partials.d.ts.map +1 -1
  26. package/dist/@types/domains/post.d.ts +1 -2
  27. package/dist/@types/domains/post.d.ts.map +1 -1
  28. package/dist/@types/index.d.ts +2 -0
  29. package/dist/@types/index.d.ts.map +1 -1
  30. package/dist/category/api/queryCategories.d.ts +2 -2
  31. package/dist/channel/api/createChannel.d.ts +1 -1
  32. package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
  33. package/dist/client/api/activeUser.d.ts +6 -0
  34. package/dist/client/api/activeUser.d.ts.map +1 -0
  35. package/dist/client/api/connectClient.d.ts.map +1 -1
  36. package/dist/client/api/createClient.d.ts +3 -3
  37. package/dist/client/api/createClient.d.ts.map +1 -1
  38. package/dist/client/utils/endpoints.d.ts +12 -0
  39. package/dist/client/utils/endpoints.d.ts.map +1 -0
  40. package/dist/community/api/getRecommendedCommunities.d.ts +32 -0
  41. package/dist/community/api/getRecommendedCommunities.d.ts.map +1 -0
  42. package/dist/community/api/getTopTrendingCommunities.d.ts +32 -0
  43. package/dist/community/api/getTopTrendingCommunities.d.ts.map +1 -0
  44. package/dist/community/api/index.d.ts +2 -0
  45. package/dist/community/api/index.d.ts.map +1 -1
  46. package/dist/core/debug.d.ts.map +1 -1
  47. package/dist/core/device.d.ts.map +1 -1
  48. package/dist/core/events.d.ts +3 -3
  49. package/dist/core/events.d.ts.map +1 -1
  50. package/dist/core/microtasks.d.ts +13 -0
  51. package/dist/core/microtasks.d.ts.map +1 -0
  52. package/dist/core/model/idResolvers.d.ts.map +1 -1
  53. package/dist/core/model/identifyModel.d.ts.map +1 -1
  54. package/dist/core/model/index.d.ts.map +1 -1
  55. package/dist/core/query/paging.d.ts +5 -16
  56. package/dist/core/query/paging.d.ts.map +1 -1
  57. package/dist/core/query/query.d.ts +1 -1
  58. package/dist/core/query/query.d.ts.map +1 -1
  59. package/dist/core/subscription.d.ts +2 -0
  60. package/dist/core/subscription.d.ts.map +1 -1
  61. package/dist/feed/api/queryGlobalFeed.d.ts +22 -4
  62. package/dist/feed/api/queryGlobalFeed.d.ts.map +1 -1
  63. package/dist/follow/api/acceptFollower.d.ts +16 -0
  64. package/dist/follow/api/acceptFollower.d.ts.map +1 -0
  65. package/dist/follow/api/declineFollower.d.ts +16 -0
  66. package/dist/follow/api/declineFollower.d.ts.map +1 -0
  67. package/dist/follow/api/follow.d.ts +16 -0
  68. package/dist/follow/api/follow.d.ts.map +1 -0
  69. package/dist/follow/api/getFollowInfo.d.ts +32 -0
  70. package/dist/follow/api/getFollowInfo.d.ts.map +1 -0
  71. package/dist/follow/api/index.d.ts +8 -0
  72. package/dist/follow/api/index.d.ts.map +1 -0
  73. package/dist/follow/api/queryFollowers.d.ts +36 -0
  74. package/dist/follow/api/queryFollowers.d.ts.map +1 -0
  75. package/dist/follow/api/queryFollowings.d.ts +36 -0
  76. package/dist/follow/api/queryFollowings.d.ts.map +1 -0
  77. package/dist/follow/api/unfollow.d.ts +16 -0
  78. package/dist/follow/api/unfollow.d.ts.map +1 -0
  79. package/dist/follow/api/utils.d.ts +9 -0
  80. package/dist/follow/api/utils.d.ts.map +1 -0
  81. package/dist/follow/events/index.d.ts +9 -0
  82. package/dist/follow/events/index.d.ts.map +1 -0
  83. package/dist/follow/events/onFollowInfoUpdated.d.ts +17 -0
  84. package/dist/follow/events/onFollowInfoUpdated.d.ts.map +1 -0
  85. package/dist/follow/events/onFollowRequestAccepted.d.ts +17 -0
  86. package/dist/follow/events/onFollowRequestAccepted.d.ts.map +1 -0
  87. package/dist/follow/events/onFollowRequestCanceled.d.ts +17 -0
  88. package/dist/follow/events/onFollowRequestCanceled.d.ts.map +1 -0
  89. package/dist/follow/events/onFollowRequestDeclined.d.ts +17 -0
  90. package/dist/follow/events/onFollowRequestDeclined.d.ts.map +1 -0
  91. package/dist/follow/events/onFollowerDeleted.d.ts +17 -0
  92. package/dist/follow/events/onFollowerDeleted.d.ts.map +1 -0
  93. package/dist/follow/events/onFollowerRequested.d.ts +17 -0
  94. package/dist/follow/events/onFollowerRequested.d.ts.map +1 -0
  95. package/dist/follow/events/onUserFollowed.d.ts +17 -0
  96. package/dist/follow/events/onUserFollowed.d.ts.map +1 -0
  97. package/dist/follow/events/onUserUnfollowed.d.ts +17 -0
  98. package/dist/follow/events/onUserUnfollowed.d.ts.map +1 -0
  99. package/dist/follow/events/utils.d.ts +2 -0
  100. package/dist/follow/events/utils.d.ts.map +1 -0
  101. package/dist/follow/observers/index.d.ts +4 -0
  102. package/dist/follow/observers/index.d.ts.map +1 -0
  103. package/dist/follow/observers/observeFollowInfo.d.ts +18 -0
  104. package/dist/follow/observers/observeFollowInfo.d.ts.map +1 -0
  105. package/dist/follow/observers/observeFollowers.d.ts +18 -0
  106. package/dist/follow/observers/observeFollowers.d.ts.map +1 -0
  107. package/dist/follow/observers/observeFollowings.d.ts +18 -0
  108. package/dist/follow/observers/observeFollowings.d.ts.map +1 -0
  109. package/dist/index.cjs.js +845 -74
  110. package/dist/index.d.ts +4 -0
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.esm.js +823 -74
  113. package/dist/index.umd.js +5 -5
  114. package/dist/message/api/createMessage.d.ts +2 -2
  115. package/dist/message/api/createMessage.d.ts.map +1 -1
  116. package/dist/message/api/updateMessage.d.ts +2 -2
  117. package/dist/message/api/updateMessage.d.ts.map +1 -1
  118. package/dist/post/api/queryPosts.d.ts +3 -3
  119. package/dist/post/api/queryPosts.d.ts.map +1 -1
  120. package/dist/utils/env.d.ts +5 -0
  121. package/dist/utils/env.d.ts.map +1 -0
  122. package/dist/version.d.ts.map +1 -1
  123. package/package.json +1 -1
  124. package/src/@types/core/cache.ts +2 -2
  125. package/src/@types/core/events.ts +12 -1
  126. package/src/@types/core/model.ts +6 -0
  127. package/src/@types/core/paging.ts +31 -46
  128. package/src/@types/core/payload.ts +14 -0
  129. package/src/@types/core/query.ts +11 -3
  130. package/src/@types/domains/client.ts +0 -1
  131. package/src/@types/domains/comment.ts +1 -3
  132. package/src/@types/domains/follow.ts +25 -0
  133. package/src/@types/domains/mention.ts +26 -0
  134. package/src/@types/domains/message.ts +1 -0
  135. package/src/@types/domains/partials.ts +0 -8
  136. package/src/@types/domains/post.ts +1 -3
  137. package/src/@types/index.ts +3 -0
  138. package/src/channel/api/createChannel.ts +1 -1
  139. package/src/channel/api/queryChannelMembers.ts +2 -1
  140. package/src/client/api/activeUser.ts +26 -0
  141. package/src/client/api/connectClient.ts +3 -1
  142. package/src/client/api/createClient.ts +7 -7
  143. package/src/client/utils/endpoints.ts +14 -0
  144. package/src/community/api/getRecommendedCommunities.ts +86 -0
  145. package/src/community/api/getTopTrendingCommunities.ts +86 -0
  146. package/src/community/api/index.ts +3 -0
  147. package/src/community/api/queryCommunityMembers.ts +1 -1
  148. package/src/core/debug.ts +3 -1
  149. package/src/core/device.ts +3 -2
  150. package/src/core/events.ts +3 -1
  151. package/src/core/microtasks.ts +27 -0
  152. package/src/core/model/idResolvers.ts +3 -0
  153. package/src/core/model/identifyModel.ts +2 -0
  154. package/src/core/model/index.ts +3 -0
  155. package/src/core/query/paging.ts +16 -51
  156. package/src/core/query/query.ts +5 -5
  157. package/src/core/subscription.ts +21 -3
  158. package/src/feed/api/queryGlobalFeed.ts +58 -5
  159. package/src/follow/api/acceptFollower.ts +32 -0
  160. package/src/follow/api/declineFollower.ts +32 -0
  161. package/src/follow/api/follow.ts +40 -0
  162. package/src/follow/api/getFollowInfo.ts +75 -0
  163. package/src/follow/api/index.ts +8 -0
  164. package/src/follow/api/queryFollowers.ts +42 -0
  165. package/src/follow/api/queryFollowings.ts +42 -0
  166. package/src/follow/api/unfollow.ts +32 -0
  167. package/src/follow/api/utils.ts +77 -0
  168. package/src/follow/events/index.ts +10 -0
  169. package/src/follow/events/onFollowInfoUpdated.ts +43 -0
  170. package/src/follow/events/onFollowRequestAccepted.ts +19 -0
  171. package/src/follow/events/onFollowRequestCanceled.ts +19 -0
  172. package/src/follow/events/onFollowRequestDeclined.ts +19 -0
  173. package/src/follow/events/onFollowerDeleted.ts +19 -0
  174. package/src/follow/events/onFollowerRequested.ts +19 -0
  175. package/src/follow/events/onUserFollowed.ts +19 -0
  176. package/src/follow/events/onUserUnfollowed.ts +19 -0
  177. package/src/follow/events/utils.ts +38 -0
  178. package/src/follow/observers/index.ts +3 -0
  179. package/src/follow/observers/observeFollowInfo.ts +68 -0
  180. package/src/follow/observers/observeFollowers.ts +78 -0
  181. package/src/follow/observers/observeFollowings.ts +78 -0
  182. package/src/index.ts +5 -0
  183. package/src/message/api/createMessage.ts +2 -2
  184. package/src/message/api/updateMessage.ts +2 -2
  185. package/src/post/api/queryPosts.ts +5 -5
  186. package/src/utils/env.ts +7 -0
  187. package/src/version.ts +3 -1
  188. package/dist/core/network.d.ts +0 -11
  189. package/dist/core/network.d.ts.map +0 -1
  190. package/src/core/network.ts +0 -14
@@ -0,0 +1,78 @@
1
+ import { getActiveClient } from '~/client/api'
2
+
3
+ import {
4
+ onFollowerRequested,
5
+ onFollowRequestAccepted,
6
+ onFollowRequestDeclined,
7
+ onFollowRequestCanceled,
8
+ onUserFollowed,
9
+ onUserUnfollowed,
10
+ onFollowerDeleted
11
+ } from '../events'
12
+
13
+ /**
14
+ * ```js
15
+ * import { observeFollowings } from '@amityco/ts-sdk'
16
+ *
17
+ * let followings = []
18
+ * const unsub = observeFollowers('userId', follower => merge(followings, following))
19
+ * ```
20
+ *
21
+ * Observe all mutations on a list of followings {@link Amity.FollowStatus} for a given user
22
+ *
23
+ * @param userId the ID of the {@link Amity.User}
24
+ * @param callback the function to call when new data are available
25
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
26
+ *
27
+ * @category Follow Observer
28
+ */
29
+ export const observeFollowings = <Events extends [
30
+ 'onRequested',
31
+ 'onAccepted',
32
+ 'onDeclined',
33
+ 'onCanceled',
34
+ 'onFollowed',
35
+ 'onUnfollowed',
36
+ 'onDeleted',
37
+ ]>(
38
+ userId: Amity.User['userId'],
39
+ callback: Amity.ObjectListener<Amity.FollowStatus, Events>
40
+ ): Amity.Unsubscriber => {
41
+ const { log } = getActiveClient()
42
+
43
+ const timestamp = Date.now()
44
+ log(`observeFollowings(tmpid: ${timestamp}) > listen`)
45
+
46
+ const disposers: Amity.Unsubscriber[] = []
47
+
48
+ const router = (
49
+ status: Amity.FollowStatus,
50
+ action: Events[number],
51
+ ) => {
52
+ if (status.to !== userId) {
53
+ return;
54
+ }
55
+
56
+ if (callback instanceof Function) {
57
+ return callback(status)
58
+ }
59
+
60
+ callback.onEvent?.(action, status)
61
+ callback[action]?.(status)
62
+ }
63
+
64
+ disposers.push(
65
+ onFollowerRequested(x => router(x, 'onRequested')),
66
+ onFollowRequestAccepted(x => router(x, 'onAccepted')),
67
+ onFollowRequestDeclined(x => router(x, 'onDeclined')),
68
+ onFollowRequestCanceled(x => router(x, 'onCanceled')),
69
+ onUserFollowed(x => router(x, 'onFollowed')),
70
+ onUserUnfollowed(x => router(x, 'onUnfollowed')),
71
+ onFollowerDeleted(x => router(x, 'onDeleted')),
72
+ )
73
+
74
+ return () => {
75
+ log(`observeFollowings(tmpid: ${timestamp}) > dispose`)
76
+ disposers.forEach(fn => fn())
77
+ }
78
+ }
package/src/index.ts CHANGED
@@ -10,6 +10,7 @@ export * from './cache/api'
10
10
 
11
11
  export * from './client/api'
12
12
  export * from './client/events'
13
+ export { API_REGIONS } from './client/utils/endpoints'
13
14
 
14
15
  // asc core
15
16
  export * from './user/api'
@@ -43,6 +44,10 @@ export * from './community/observers'
43
44
 
44
45
  export * from './feed/api'
45
46
 
47
+ export * from './follow/api'
48
+ export * from './follow/events'
49
+ export * from './follow/observers'
50
+
46
51
  export * from './post/api'
47
52
  export * from './post/events'
48
53
  export * from './post/observers'
@@ -24,7 +24,7 @@ import { fireEvent } from '~/core/events'
24
24
  * @async
25
25
  */
26
26
  export const createMessage = async <T extends Amity.MessageContentType>(
27
- bundle: Pick<Amity.Message<T>, 'channelId' | 'type' | 'data' | 'metadata'>
27
+ bundle: Pick<Amity.Message<T>, 'channelId' | 'type' | 'data' | 'metadata' | 'mentionees'>
28
28
  ): Promise<Amity.Cached<Amity.Message>> => {
29
29
  const client = getActiveClient()
30
30
  client.log('user/createMessage', bundle)
@@ -62,7 +62,7 @@ export const createMessage = async <T extends Amity.MessageContentType>(
62
62
  * @category Message API
63
63
  */
64
64
  createMessage.optimistically = (
65
- bundle: Pick<Amity.Message, 'channelId' | 'type' | 'data' | 'metadata'>
65
+ bundle: Pick<Amity.Message, 'channelId' | 'type' | 'data' | 'metadata' | 'mentionees'>
66
66
  ): Amity.Cached<Amity.Message> | undefined => {
67
67
  const client = getActiveClient()
68
68
  client.log('user/createMessage.locally', bundle)
@@ -23,7 +23,7 @@ import { fireEvent } from '~/core/events'
23
23
  */
24
24
  export const updateMessage = async (
25
25
  messageId: Amity.Message['messageId'],
26
- patch: Patch<Amity.Message, 'data' | 'metadata'>,
26
+ patch: Patch<Amity.Message, 'data' | 'metadata' | 'mentionees'>,
27
27
  ): Promise<Amity.Cached<Amity.Message>> => {
28
28
  const client = getActiveClient()
29
29
  client.log('user/updateMessage', patch)
@@ -61,7 +61,7 @@ export const updateMessage = async (
61
61
  */
62
62
  updateMessage.optimistically = (
63
63
  messageId: Amity.Message['messageId'],
64
- patch: Patch<Amity.Message, 'data' | 'metadata'>,
64
+ patch: Patch<Amity.Message, 'data' | 'metadata' | 'mentionees'>,
65
65
  ): Amity.Cached<Amity.Message> | undefined => {
66
66
  const client = getActiveClient()
67
67
  client.log('user/updateMessage', patch)
@@ -1,6 +1,6 @@
1
1
  import { getActiveClient } from '~/client/api'
2
2
 
3
- import { toPageRaw, toToken } from '~/core/query'
3
+ import { toToken, toPageRaw } from '~/core/query'
4
4
 
5
5
  import { pullFromCache, pushToCache } from '~/cache/api'
6
6
  import { ingestInCache } from '~/cache/api/ingestInCache'
@@ -31,9 +31,9 @@ export const queryPosts = async (
31
31
  feedType?: 'reviewing' | 'published'
32
32
  tags?: Amity.Taggable['tags'],
33
33
  matchingOnlyParentPost?: boolean
34
- page?: Amity.Page
34
+ page?: Amity.PageRaw
35
35
  }
36
- ): Promise<Amity.Cached<Amity.PagedRaw<Amity.Post>>> => {
36
+ ): Promise<Amity.Cached<Amity.Paged<Amity.Post, Amity.PageRaw>>> => {
37
37
  const client = getActiveClient()
38
38
  client.log('post/queryPosts', query)
39
39
 
@@ -41,7 +41,7 @@ export const queryPosts = async (
41
41
 
42
42
  // API-FIX: parameters should be querystring. (1)
43
43
  // API-FIX: backend should answer Amity.Response (2)
44
- // const { data } = await client.http.get<Amity.Response<Amity.PagedRawResponse<Amity.PostPayload>>>(
44
+ // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
45
45
  const { data } = await client.http.get<Amity.PostPayload & Amity.Pagination>(
46
46
  `/api/v4/posts`, { params: {
47
47
  ...params,
@@ -87,7 +87,7 @@ export const queryPosts = async (
87
87
  */
88
88
  queryPosts.locally = (
89
89
  query: Parameters<typeof queryPosts>[0],
90
- ): Amity.Cached<Amity.PagedRaw<Amity.Post>> | undefined => {
90
+ ): Amity.Cached<Amity.Paged<Amity.Post, Amity.PageRaw>> | undefined => {
91
91
  const client = getActiveClient()
92
92
  client.log('post/queryPosts.locally', query)
93
93
 
@@ -0,0 +1,7 @@
1
+ const theGlobal = globalThis || global || window;
2
+
3
+ export const { process: safeProcess = {} }: { process: Partial<NodeJS.Process> } = theGlobal
4
+
5
+ export function getEnv() { return safeProcess.env ?? {} }
6
+
7
+ export const isProduction = safeProcess.env?.NODE_ENV === 'production'
package/src/version.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  // used in createClient
2
- export const VERSION = process.env.VERSION ?? '__dev__'
2
+ import { safeProcess } from '~/utils/env'
3
+
4
+ export const VERSION = safeProcess.env?.VERSION ?? '__dev__'
@@ -1,11 +0,0 @@
1
- export declare const API_ENDPOINT: {
2
- readonly EU: "eu";
3
- readonly SG: "sg";
4
- readonly US: "us";
5
- };
6
- export declare enum UrlTemplate {
7
- HTTP = "https://api.{region}.amity.co",
8
- MQTT = "wss://sse.{region}.amity.co:443/mqtt"
9
- }
10
- export declare const getUrlFromTemplate: (template: UrlTemplate, region: string) => string;
11
- //# sourceMappingURL=network.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/core/network.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;CAIf,CAAA;AAEV,oBAAY,WAAW;IACrB,IAAI,kCAAkC;IACtC,IAAI,yCAAyC;CAC9C;AAED,eAAO,MAAM,kBAAkB,aAAe,WAAW,UAAU,MAAM,WAExE,CAAA"}
@@ -1,14 +0,0 @@
1
- export const API_ENDPOINT = {
2
- EU: 'eu',
3
- SG: 'sg',
4
- US: 'us',
5
- } as const
6
-
7
- export enum UrlTemplate {
8
- HTTP = 'https://api.{region}.amity.co',
9
- MQTT = 'wss://sse.{region}.amity.co:443/mqtt',
10
- }
11
-
12
- export const getUrlFromTemplate = ( template: UrlTemplate, region: string ) => {
13
- return template.replace( '{region}', region);
14
- }