@amityco/ts-sdk 0.0.1-beta.5 → 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 +4 -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 +37 -1
- package/dist/comment/api/deleteComment.d.ts.map +1 -1
- package/dist/comment/api/getComment.d.ts.map +1 -1
- package/dist/comment/api/queryComments.d.ts +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/query/paging.d.ts.map +1 -1
- 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/feed/api/queryGlobalFeed.d.ts +1 -1
- package/dist/file/api/deleteFile.d.ts +3 -1
- package/dist/file/api/deleteFile.d.ts.map +1 -1
- package/dist/index.cjs.js +1292 -526
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1268 -527
- package/dist/index.umd.js +19 -5144
- package/dist/post/api/deletePost.d.ts +40 -1
- package/dist/post/api/deletePost.d.ts.map +1 -1
- package/dist/post/api/getPost.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/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +7 -2
- package/rollup.config.js +63 -23
- package/src/@types/core/events.ts +64 -23
- package/src/@types/core/transport.ts +14 -0
- package/src/@types/domains/client.ts +5 -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 +23 -15
- package/src/client/api/disconnectClient.ts +5 -0
- package/src/client/api/getToken.ts +3 -2
- package/src/client/events/onConnectionError.ts +1 -1
- package/src/comment/api/createComment.ts +2 -2
- package/src/comment/api/deleteComment.ts +25 -5
- package/src/comment/api/getComment.ts +17 -5
- package/src/comment/api/queryComments.ts +9 -8
- 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/query/paging.ts +4 -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/feed/api/queryGlobalFeed.ts +1 -1
- package/src/file/api/deleteFile.ts +5 -6
- package/src/index.ts +3 -0
- package/src/post/api/createPost.ts +2 -2
- package/src/post/api/deletePost.ts +29 -8
- package/src/post/api/getPost.ts +17 -5
- 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/src/version.ts +2 -0
- package/tsconfig.json +1 -0
- package/dist/core/transports.d.ts +0 -49
- package/dist/core/transports.d.ts.map +0 -1
- package/src/core/transports.ts +0 -151
package/rollup.config.js
CHANGED
|
@@ -2,40 +2,80 @@ import chalk from 'chalk'
|
|
|
2
2
|
import commonjs from '@rollup/plugin-commonjs'
|
|
3
3
|
import resolve from '@rollup/plugin-node-resolve'
|
|
4
4
|
import typescript from 'rollup-plugin-typescript2'
|
|
5
|
+
import replace from '@rollup/plugin-replace'
|
|
6
|
+
import { terser } from 'rollup-plugin-terser'
|
|
5
7
|
|
|
6
8
|
import pkg from './package.json'
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
const config = {
|
|
9
11
|
input: 'src/index.ts',
|
|
10
|
-
output: [
|
|
11
|
-
{
|
|
12
|
-
file: pkg.main,
|
|
13
|
-
format: 'cjs',
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
file: pkg.module,
|
|
17
|
-
format: 'es',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
file: pkg.unpkg,
|
|
21
|
-
format: 'iife',
|
|
22
|
-
name: 'Amity',
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
external: Object.keys(pkg.dependencies),
|
|
27
12
|
plugins: [
|
|
28
|
-
resolve(
|
|
13
|
+
resolve({
|
|
14
|
+
jsnext: true,
|
|
15
|
+
main: true,
|
|
16
|
+
builtins: false,
|
|
17
|
+
browser: true,
|
|
18
|
+
}),
|
|
29
19
|
commonjs(),
|
|
30
20
|
typescript({
|
|
31
21
|
useTsconfigDeclarationDir: true,
|
|
32
22
|
}),
|
|
33
23
|
],
|
|
34
24
|
onwarn: warning => {
|
|
35
|
-
// we don't allow circular dependencies
|
|
36
|
-
if (warning.code === 'CIRCULAR_DEPENDENCY') {
|
|
25
|
+
// we don't allow circular dependencies other than those that we can not fix such as node_modules
|
|
26
|
+
if (warning.code === 'CIRCULAR_DEPENDENCY' && !warning.importer.includes('node_modules')) {
|
|
37
27
|
console.log(chalk.red('error'), warning.message)
|
|
38
28
|
process.exit(1)
|
|
39
29
|
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default [
|
|
34
|
+
{
|
|
35
|
+
...config,
|
|
36
|
+
output: [
|
|
37
|
+
{
|
|
38
|
+
format: 'es',
|
|
39
|
+
file: pkg.module,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
external: Object.keys(pkg.dependencies),
|
|
43
|
+
plugins: [
|
|
44
|
+
...config.plugins,
|
|
45
|
+
replace({
|
|
46
|
+
'process.env.VERSION': `'v${pkg.version}-esm'`,
|
|
47
|
+
}),
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
...config,
|
|
52
|
+
output: [
|
|
53
|
+
{
|
|
54
|
+
format: 'cjs',
|
|
55
|
+
file: pkg.main,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
external: Object.keys(pkg.dependencies),
|
|
59
|
+
plugins: [
|
|
60
|
+
...config.plugins,
|
|
61
|
+
replace({
|
|
62
|
+
'process.env.VERSION': `'v${pkg.version}-cjs'`,
|
|
63
|
+
}),
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
...config,
|
|
68
|
+
output: {
|
|
69
|
+
format: 'iife',
|
|
70
|
+
name: 'Amity',
|
|
71
|
+
file: pkg.unpkg,
|
|
72
|
+
},
|
|
73
|
+
plugins: [
|
|
74
|
+
...config.plugins,
|
|
75
|
+
replace({
|
|
76
|
+
'process.env.VERSION': `'v${pkg.version}-umd'`,
|
|
77
|
+
}),
|
|
78
|
+
terser(),
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
]
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { IConnectPacket, IDisconnectPacket, IPublishPacket } from 'mqtt'
|
|
2
|
+
|
|
1
3
|
export {}
|
|
2
4
|
|
|
3
5
|
declare global {
|
|
4
6
|
namespace Amity {
|
|
5
7
|
type Listener<T = any> = (params: T) => void
|
|
6
8
|
|
|
7
|
-
type ObjectListener<T, K extends string[]> =
|
|
9
|
+
type ObjectListener<T, K extends string[]> = {
|
|
8
10
|
onEvent?: (event: K[number], params: T) => void
|
|
9
11
|
} & {
|
|
10
12
|
[P in K[number]]?: Listener<T>
|
|
@@ -14,15 +16,13 @@ declare global {
|
|
|
14
16
|
|
|
15
17
|
type Subscriber<T = any> = (fn: Amity.Listener<T>) => Unsubscriber
|
|
16
18
|
|
|
17
|
-
type
|
|
19
|
+
type WsEvents = {
|
|
18
20
|
disconnected: Amity.ErrorResponse | undefined
|
|
19
21
|
error: Amity.ErrorResponse | undefined,
|
|
20
22
|
connect_error: Amity.ErrorResponse | undefined,
|
|
21
23
|
reconnect_error: Amity.ErrorResponse | undefined,
|
|
22
24
|
reconnect_failed: Amity.ErrorResponse | undefined,
|
|
23
25
|
|
|
24
|
-
'v3.user.didUpdate': Amity.UserPayload
|
|
25
|
-
|
|
26
26
|
'v3.channel.didCreate': Amity.ChannelPayload
|
|
27
27
|
'v3.channel.didUpdate': Amity.ChannelPayload
|
|
28
28
|
'v3.channel.didDelete': Amity.ChannelPayload
|
|
@@ -40,26 +40,67 @@ declare global {
|
|
|
40
40
|
'video-streaming.didRecord': Amity.StreamPayload
|
|
41
41
|
'video-streaming.didStart': Amity.StreamPayload
|
|
42
42
|
'video-streaming.didStop': Amity.StreamPayload
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type MqttEvents = {
|
|
46
|
+
connect: IConnectPacket,
|
|
47
|
+
message: [topic: string, payload: Buffer, packet: IPublishPacket]
|
|
48
|
+
disconnect: IDisconnectPacket,
|
|
49
|
+
error: Error,
|
|
50
|
+
close: Error,
|
|
51
|
+
end: undefined,
|
|
52
|
+
reconnect: undefined,
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
type MqttCommunityUserMessageEvents = {
|
|
56
|
+
'community.joined': Amity.CommunityPayload
|
|
57
|
+
'community.left': Amity.CommunityPayload
|
|
58
|
+
'community.userAdded': Amity.CommunityPayload
|
|
59
|
+
'community.userRemoved': Amity.CommunityPayload
|
|
60
|
+
'community.userBanned': Amity.CommunityPayload
|
|
61
|
+
'community.userUnbanned': Amity.CommunityPayload
|
|
62
|
+
}
|
|
43
63
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
type MqttCommunityMessageEvents = {
|
|
65
|
+
'community.created': Amity.CommunityPayload,
|
|
66
|
+
'community.updated': Amity.CommunityPayload
|
|
67
|
+
'community.deleted': Amity.CommunityPayload
|
|
68
|
+
} & MqttCommunityUserMessageEvents
|
|
69
|
+
|
|
70
|
+
type MqttPostMessageEvents = {
|
|
71
|
+
'post.created': Amity.PostPayload
|
|
72
|
+
'post.updated': Amity.PostPayload
|
|
73
|
+
'post.deleted': Amity.PostPayload
|
|
74
|
+
'post.approved': Amity.PostPayload
|
|
75
|
+
'post.declined': Amity.PostPayload
|
|
76
|
+
'post.flagged': Amity.PostPayload
|
|
77
|
+
'post.unflagged': Amity.PostPayload
|
|
78
|
+
'post.addReaction': Amity.PostPayload & { reactor: Amity.Reaction }
|
|
79
|
+
'post.removeReaction': Amity.PostPayload & { reactor: Amity.Reaction }
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
type MqttCommentMessageEvents = {
|
|
83
|
+
'comment.created': Amity.CommentPayload
|
|
84
|
+
'comment.updated': Amity.CommentPayload
|
|
85
|
+
'comment.deleted': Amity.CommentPayload
|
|
86
|
+
'comment.flagged': Amity.CommentPayload
|
|
87
|
+
'comment.unflagged': Amity.CommentPayload
|
|
88
|
+
'comment.addReaction': Amity.CommentPayload & { reactor: Amity.Reaction }
|
|
89
|
+
'comment.removeReaction': Amity.CommentPayload & { reactor: Amity.Reaction }
|
|
63
90
|
}
|
|
91
|
+
|
|
92
|
+
type MqttUserMessageEvents = {
|
|
93
|
+
'user.updated': Amity.UserPayload
|
|
94
|
+
'user.flagged': Amity.UserPayload
|
|
95
|
+
'user.unflagged': Amity.UserPayload
|
|
96
|
+
'user.flagCleared': Amity.UserPayload
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
type MqttMessageEvents = MqttCommunityMessageEvents
|
|
100
|
+
& MqttPostMessageEvents
|
|
101
|
+
& MqttCommentMessageEvents
|
|
102
|
+
& MqttUserMessageEvents
|
|
103
|
+
|
|
104
|
+
type Events = WsEvents & MqttEvents & MqttMessageEvents
|
|
64
105
|
}
|
|
65
106
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ASCError } from '~/core/errors'
|
|
2
|
+
|
|
1
3
|
export {}
|
|
2
4
|
|
|
3
5
|
declare global {
|
|
@@ -28,5 +30,17 @@ declare global {
|
|
|
28
30
|
next?: Token
|
|
29
31
|
}
|
|
30
32
|
}
|
|
33
|
+
|
|
34
|
+
type MqttClient = {
|
|
35
|
+
connect: (params: { accessToken: string, userId: string }) => Promise<void>
|
|
36
|
+
disconnect: () => Promise<void>
|
|
37
|
+
get connected(): boolean
|
|
38
|
+
on: <T extends keyof Amity.MqttEvents>(event: T, handler: (payload: Amity.MqttEvents[T]) => void) => void
|
|
39
|
+
once: <T extends keyof Amity.MqttEvents>(event: T, handler: (payload: Amity.MqttEvents[T]) => void) => void
|
|
40
|
+
off: <T extends keyof Amity.MqttEvents>(event: T, handler?: (payload: Amity.MqttEvents[T]) => void) => void
|
|
41
|
+
removeAllListeners: () => void
|
|
42
|
+
subscribe: (topic: string, callback?: Amity.Listener<ASCError | void>) => Amity.Unsubscriber
|
|
43
|
+
unsubscribe: (topic: string) => void
|
|
44
|
+
}
|
|
31
45
|
}
|
|
32
46
|
}
|
|
@@ -6,8 +6,11 @@ declare global {
|
|
|
6
6
|
type Logger = (topic: string, ...args: any[]) => void
|
|
7
7
|
|
|
8
8
|
type Client = {
|
|
9
|
+
version: string
|
|
10
|
+
|
|
9
11
|
log: Logger
|
|
10
12
|
http: AxiosInstance
|
|
13
|
+
mqtt: Amity.MqttClient
|
|
11
14
|
ws: SocketIOClient.Socket
|
|
12
15
|
emitter: Emitter<Amity.Events>
|
|
13
16
|
|
|
@@ -15,6 +18,8 @@ declare global {
|
|
|
15
18
|
|
|
16
19
|
apiKey?: string
|
|
17
20
|
userId?: string
|
|
21
|
+
user?: Amity.User
|
|
22
|
+
accessToken?: string
|
|
18
23
|
|
|
19
24
|
use: () => void
|
|
20
25
|
}
|
|
@@ -13,12 +13,12 @@ declare global {
|
|
|
13
13
|
} & (
|
|
14
14
|
T extends 'channel' ? {
|
|
15
15
|
channelId: Amity.Channel['channelId']
|
|
16
|
-
membership: 'member' | '
|
|
16
|
+
membership: 'member' | 'none' | 'banned'
|
|
17
17
|
readToSegment: number
|
|
18
18
|
} :
|
|
19
19
|
T extends 'community' ? {
|
|
20
20
|
communityId: Amity.Community['communityId']
|
|
21
|
-
communityMembership: 'member' | '
|
|
21
|
+
communityMembership: 'member' | 'none' | 'banned'
|
|
22
22
|
} :
|
|
23
23
|
never
|
|
24
24
|
)
|
|
@@ -3,6 +3,7 @@ export {}
|
|
|
3
3
|
declare global {
|
|
4
4
|
namespace Amity {
|
|
5
5
|
type User = {
|
|
6
|
+
_id: string
|
|
6
7
|
userId: string
|
|
7
8
|
displayName?: string
|
|
8
9
|
avatarFileId?: Amity.File<'image'>['fileId']
|
|
@@ -14,5 +15,6 @@ declare global {
|
|
|
14
15
|
& Amity.Accredited
|
|
15
16
|
& Amity.Timestamps
|
|
16
17
|
& Amity.Syncable
|
|
18
|
+
& Amity.Subscribable
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { disconnectClient } from '~/client/api/disconnectClient'
|
|
1
2
|
import { getDeviceId } from '~/core/device'
|
|
2
|
-
import { proxyWebsocketEvents } from '~/core/events'
|
|
3
|
+
import { proxyMqttEvents, proxyWebsocketEvents } from '~/core/events'
|
|
3
4
|
|
|
4
5
|
import { getActiveClient } from './activeClient'
|
|
5
6
|
|
|
6
7
|
import { getToken } from './getToken'
|
|
8
|
+
import { onClientBanned } from '../events'
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* ```js
|
|
@@ -39,7 +41,7 @@ export const connectClient = async (params: {
|
|
|
39
41
|
|
|
40
42
|
// @ts-ignore: in that particular case, typing can be
|
|
41
43
|
// ignored since we enforce default values just before.
|
|
42
|
-
const { accessToken } = await getToken(params)
|
|
44
|
+
const { accessToken, users } = await getToken(params)
|
|
43
45
|
|
|
44
46
|
// manually setup the token for http transport
|
|
45
47
|
client.http.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`
|
|
@@ -47,6 +49,7 @@ export const connectClient = async (params: {
|
|
|
47
49
|
// manually setup the token for ws transport
|
|
48
50
|
client.ws.io.opts.query = {token: accessToken}
|
|
49
51
|
|
|
52
|
+
// FIXME: events are duplicated if connectClient is called few times without disconnectClient
|
|
50
53
|
// wire websocket events to our event emitter
|
|
51
54
|
proxyWebsocketEvents(client.ws, client.emitter)
|
|
52
55
|
|
|
@@ -57,7 +60,14 @@ export const connectClient = async (params: {
|
|
|
57
60
|
client.ws.open()
|
|
58
61
|
})
|
|
59
62
|
|
|
63
|
+
const unsubscribe = onClientBanned(() => {
|
|
64
|
+
disconnectClient()
|
|
65
|
+
unsubscribe()
|
|
66
|
+
})
|
|
67
|
+
|
|
60
68
|
client.userId = params.userId
|
|
69
|
+
client.user = users[0]
|
|
70
|
+
client.accessToken = accessToken
|
|
61
71
|
|
|
62
72
|
return client.ws.connected
|
|
63
73
|
}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
+
import { VERSION } from '~/version'
|
|
2
|
+
|
|
1
3
|
import { createLogger } from '~/core/debug'
|
|
2
4
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
createWebsocketTransport,
|
|
6
|
-
} from '~/core/transports'
|
|
5
|
+
import { API_ENDPOINT, getUrlFromTemplate, UrlTemplate } from '~/core/network'
|
|
6
|
+
import { createHttpTransport, createMqttTransport, createWebsocketTransport } from '~/core/transports'
|
|
7
7
|
|
|
8
8
|
import { createEventEmitter } from '~/core/events'
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
getActiveClient,
|
|
12
|
-
setActiveClient,
|
|
13
|
-
} from './activeClient'
|
|
10
|
+
import { getActiveClient, setActiveClient } from './activeClient'
|
|
14
11
|
|
|
15
12
|
/**
|
|
16
13
|
* ```js
|
|
@@ -29,8 +26,8 @@ import {
|
|
|
29
26
|
**/
|
|
30
27
|
export const createClient = (
|
|
31
28
|
apiKey: string,
|
|
32
|
-
apiEndpoint: string =
|
|
33
|
-
debugSession: string = 'amity'
|
|
29
|
+
apiEndpoint: typeof API_ENDPOINT[keyof typeof API_ENDPOINT]|string = API_ENDPOINT.SG,
|
|
30
|
+
debugSession: string = 'amity'
|
|
34
31
|
): Amity.Client => {
|
|
35
32
|
const log = createLogger(debugSession)
|
|
36
33
|
|
|
@@ -39,18 +36,29 @@ export const createClient = (
|
|
|
39
36
|
apiEndpoint,
|
|
40
37
|
})
|
|
41
38
|
|
|
42
|
-
const http = createHttpTransport(apiEndpoint)
|
|
43
|
-
const ws = createWebsocketTransport(apiEndpoint)
|
|
39
|
+
const http = createHttpTransport(getUrlFromTemplate(UrlTemplate.HTTP, apiEndpoint))
|
|
40
|
+
const ws = createWebsocketTransport(getUrlFromTemplate(UrlTemplate.HTTP, apiEndpoint))
|
|
41
|
+
const mqtt = createMqttTransport(getUrlFromTemplate(UrlTemplate.MQTT, apiEndpoint));
|
|
44
42
|
|
|
45
43
|
const emitter = createEventEmitter()
|
|
46
44
|
|
|
47
45
|
const client = {
|
|
48
|
-
|
|
46
|
+
version: `${VERSION}`,
|
|
47
|
+
|
|
48
|
+
apiKey,
|
|
49
|
+
log,
|
|
50
|
+
http,
|
|
51
|
+
ws,
|
|
52
|
+
mqtt,
|
|
53
|
+
emitter,
|
|
49
54
|
use: () => setActiveClient(client),
|
|
50
55
|
}
|
|
51
56
|
|
|
52
|
-
try {
|
|
53
|
-
|
|
57
|
+
try {
|
|
58
|
+
getActiveClient()
|
|
59
|
+
} catch {
|
|
60
|
+
setActiveClient(client)
|
|
61
|
+
}
|
|
54
62
|
|
|
55
63
|
return client
|
|
56
64
|
}
|
|
@@ -21,11 +21,16 @@ export const disconnectClient = async (): Promise<boolean> => {
|
|
|
21
21
|
await new Promise(resolve => {
|
|
22
22
|
client.ws.once('disconnect', resolve)
|
|
23
23
|
client.ws.disconnect()
|
|
24
|
+
client.mqtt.disconnect()
|
|
24
25
|
})
|
|
25
26
|
|
|
26
27
|
client.emitter.all.clear()
|
|
28
|
+
// FIXME: it removes listener in ws.ts, it breaks global ban event
|
|
27
29
|
client.ws.removeAllListeners()
|
|
30
|
+
client.mqtt.removeAllListeners()
|
|
28
31
|
client.userId = undefined
|
|
32
|
+
client.user = undefined
|
|
33
|
+
client.accessToken = undefined
|
|
29
34
|
|
|
30
35
|
return !client.ws.connected
|
|
31
36
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getActiveClient } from './activeClient'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getDeviceInfo } from '~/core/device'
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Retrieves a pair of {@link Amity.Tokens} necessary for connection
|
|
@@ -25,9 +25,10 @@ export const getToken = async (params: {
|
|
|
25
25
|
|
|
26
26
|
const deviceInfo = await getDeviceInfo()
|
|
27
27
|
|
|
28
|
-
const { data } = await client.http.post<Amity.Tokens>('/v1/device', {
|
|
28
|
+
const { data } = await client.http.post<Amity.Tokens & { users: Amity.User[] }>('/v1/device', {
|
|
29
29
|
...params, deviceInfo,
|
|
30
30
|
} , {
|
|
31
|
+
//@ts-ignore
|
|
31
32
|
headers: { 'X-API-Key': client.apiKey }
|
|
32
33
|
})
|
|
33
34
|
|
|
@@ -35,8 +35,8 @@ export const createComment = async <T extends Amity.CommentContentType>(
|
|
|
35
35
|
|
|
36
36
|
const post = await getPost(bundle.referenceId)
|
|
37
37
|
|
|
38
|
-
fireEvent('
|
|
39
|
-
fireEvent('
|
|
38
|
+
fireEvent('post.updated', { posts: [post] })
|
|
39
|
+
fireEvent('comment.created', data)
|
|
40
40
|
|
|
41
41
|
const { comments } = data
|
|
42
42
|
return comments[0]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api'
|
|
2
2
|
import { fireEvent } from '~/core/events'
|
|
3
|
+
import { dropFromCache, mergeInCache } from '~/core/cache'
|
|
3
4
|
|
|
4
5
|
import { getComment } from './getComment'
|
|
5
6
|
|
|
@@ -21,20 +22,39 @@ import { getPost } from '~/post/api/getPost'
|
|
|
21
22
|
*/
|
|
22
23
|
export const deleteComment = async (
|
|
23
24
|
commentId: Amity.Comment['commentId'],
|
|
25
|
+
permanent: boolean = false,
|
|
24
26
|
) => {
|
|
25
27
|
const client = getActiveClient()
|
|
26
28
|
client.log('comment/deleteComment', commentId)
|
|
27
29
|
|
|
30
|
+
const comment = await getComment(commentId)
|
|
31
|
+
|
|
28
32
|
// API-FIX: This endpoint has not been implemented yet.
|
|
29
33
|
await client.http.delete<{ success: boolean }>(
|
|
30
|
-
`/api/
|
|
34
|
+
`/api/v4/comments/${commentId}`, {
|
|
35
|
+
params: {
|
|
36
|
+
commentId,
|
|
37
|
+
permanent,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
31
40
|
)
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
const
|
|
42
|
+
// to support hard deletion
|
|
43
|
+
const deleted = { ...comment, isDeleted: true }
|
|
44
|
+
|
|
45
|
+
const post = await getPost(comment.referenceId)
|
|
46
|
+
|
|
47
|
+
fireEvent('post.updated', { posts: [post] })
|
|
48
|
+
fireEvent('comment.deleted', { comments: [deleted] })
|
|
49
|
+
|
|
35
50
|
|
|
36
|
-
|
|
37
|
-
|
|
51
|
+
if (permanent) {
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
dropFromCache('comment', {commentId})
|
|
54
|
+
}, 0)
|
|
55
|
+
} else {
|
|
56
|
+
mergeInCache('comment', {commentId, isDeleted: true})
|
|
57
|
+
}
|
|
38
58
|
|
|
39
59
|
return deleted
|
|
40
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api'
|
|
2
2
|
|
|
3
|
-
import { ingestInCache, pullFromCache } from '~/core/cache'
|
|
3
|
+
import { ingestInCache, pullFromCache, dropFromCache } from '~/core/cache'
|
|
4
4
|
import { decoratePayload } from '~/core/query'
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -23,10 +23,22 @@ export const getComment = async (
|
|
|
23
23
|
const client = getActiveClient()
|
|
24
24
|
client.log('comment/getComment', commentId)
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
let data: Amity.CommentPayload;
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
// API-FIX: endpoint should not be /list, parameters should be querystring.
|
|
30
|
+
const response = await client.http.get<Amity.CommentPayload>(
|
|
31
|
+
`/api/v3/comments/${commentId}`,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
data = response.data;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
if ((error as Amity.ErrorResponse)?.code === Amity.ServerError.ITEM_NOT_FOUND) {
|
|
37
|
+
dropFromCache('comment', {commentId})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
30
42
|
|
|
31
43
|
decoratePayload(data)
|
|
32
44
|
ingestInCache(data)
|
|
@@ -94,8 +94,6 @@ queryComments.locally = (
|
|
|
94
94
|
page = { before: 0, limit: 5 },
|
|
95
95
|
} = query
|
|
96
96
|
|
|
97
|
-
if (isNaN(page.after!) && isNaN(page.before!))
|
|
98
|
-
page.before = 0;
|
|
99
97
|
|
|
100
98
|
if (isNaN(page.limit))
|
|
101
99
|
page.limit = 5
|
|
@@ -140,8 +138,8 @@ queryComments.locally = (
|
|
|
140
138
|
beforeIndex !== -1 ? beforeIndex : undefined,
|
|
141
139
|
)
|
|
142
140
|
|
|
143
|
-
//
|
|
144
|
-
if (
|
|
141
|
+
// check if slice data is correct (complete)
|
|
142
|
+
if (slice.length < page.limit)
|
|
145
143
|
return
|
|
146
144
|
|
|
147
145
|
if (!isNaN(page.after!) && !isNaN(page.before!)) {
|
|
@@ -150,6 +148,8 @@ queryComments.locally = (
|
|
|
150
148
|
slice = slice.slice(0, page.limit)
|
|
151
149
|
} else if (!isNaN(page.before!)) {
|
|
152
150
|
slice = slice.slice(-page.limit)
|
|
151
|
+
} else {
|
|
152
|
+
slice = slice.slice(-page.limit)
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
for (let i = 0; i < slice.length - 1; i++)
|
|
@@ -160,10 +160,11 @@ queryComments.locally = (
|
|
|
160
160
|
? { before: slice[0].segmentNumber, limit: page.limit }
|
|
161
161
|
: undefined
|
|
162
162
|
|
|
163
|
-
const nextPage =
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
const nextPage = slice[slice.length - 1].segmentNumber < comments[comments.length - 1].segmentNumber
|
|
164
|
+
? {
|
|
165
|
+
after: slice[slice.length - 1].segmentNumber,
|
|
166
|
+
limit: page.limit,
|
|
167
|
+
} : undefined
|
|
167
168
|
|
|
168
169
|
return { data: toRecord(slice), nextPage, prevPage }
|
|
169
170
|
}
|
|
@@ -34,7 +34,7 @@ export const updateComment = async (
|
|
|
34
34
|
|
|
35
35
|
decoratePayload(data)
|
|
36
36
|
ingestInCache(data)
|
|
37
|
-
fireEvent('
|
|
37
|
+
fireEvent('comment.updated', data)
|
|
38
38
|
|
|
39
39
|
const { comments } = data
|
|
40
40
|
return comments.find(comment => comment.commentId === commentId)!
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export * from './onCommentCreated'
|
|
2
2
|
export * from './onCommentUpdated'
|
|
3
3
|
export * from './onCommentDeleted'
|
|
4
|
+
|
|
5
|
+
export * from './onCommentFlagged'
|
|
6
|
+
export * from './onCommentUnflagged'
|
|
7
|
+
|
|
8
|
+
export * from './onCommentReactionAdded'
|
|
9
|
+
export * from './onCommentReactionRemoved'
|