@amityco/ts-sdk 7.8.3-1fdb2885.0 → 7.8.3-b5109db.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts +2 -0
  2. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts.map +1 -1
  3. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/client.js.map +1 -1
  4. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/createClient.d.ts.map +1 -1
  5. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/createClient.js +2 -1
  6. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/createClient.js.map +1 -1
  7. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/isConnected.d.ts.map +1 -1
  8. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/isConnected.js +5 -1
  9. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/isConnected.js.map +1 -1
  10. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/login.d.ts.map +1 -1
  11. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/login.js +6 -0
  12. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/login.js.map +1 -1
  13. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/logout.d.ts.map +1 -1
  14. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/logout.js +9 -2
  15. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/logout.js.map +1 -1
  16. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/resumeSession.d.ts.map +1 -1
  17. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/resumeSession.js +13 -0
  18. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/resumeSession.js.map +1 -1
  19. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/createClient.test.js +4 -0
  20. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/createClient.test.js.map +1 -1
  21. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/login.test.js +7 -1
  22. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/login.test.js.map +1 -1
  23. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/logout.test.js +8 -0
  24. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/logout.test.js.map +1 -1
  25. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/resumeSession.test.js +8 -1
  26. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/resumeSession.test.js.map +1 -1
  27. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/terminateClient.test.js +3 -0
  28. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/tests/terminateClient.test.js.map +1 -1
  29. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.d.ts.map +1 -1
  30. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.js +3 -0
  31. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.js.map +1 -1
  32. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/events.d.ts +11 -0
  33. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/events.d.ts.map +1 -1
  34. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/events.js +17 -0
  35. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/events.js.map +1 -1
  36. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/index.d.ts +1 -0
  37. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/index.d.ts.map +1 -1
  38. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/index.js +1 -0
  39. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/index.js.map +1 -1
  40. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/ws.d.ts +27 -0
  41. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/ws.d.ts.map +1 -0
  42. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/ws.js +53 -0
  43. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/core/transports/ws.js.map +1 -0
  44. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/tests/client.d.ts.map +1 -1
  45. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/tests/client.js +6 -1
  46. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/tests/client.js.map +1 -1
  47. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  48. package/dist/@types/domains/client.d.ts +2 -0
  49. package/dist/@types/domains/client.d.ts.map +1 -1
  50. package/dist/client/api/createClient.d.ts.map +1 -1
  51. package/dist/client/api/isConnected.d.ts.map +1 -1
  52. package/dist/client/api/login.d.ts.map +1 -1
  53. package/dist/client/api/logout.d.ts.map +1 -1
  54. package/dist/client/api/resumeSession.d.ts.map +1 -1
  55. package/dist/client/utils/setClientToken.d.ts.map +1 -1
  56. package/dist/core/events.d.ts +11 -0
  57. package/dist/core/events.d.ts.map +1 -1
  58. package/dist/core/transports/index.d.ts +1 -0
  59. package/dist/core/transports/index.d.ts.map +1 -1
  60. package/dist/core/transports/ws.d.ts +27 -0
  61. package/dist/core/transports/ws.d.ts.map +1 -0
  62. package/dist/index.cjs.js +87 -3
  63. package/dist/index.esm.js +86 -3
  64. package/dist/index.umd.js +4 -3
  65. package/dist/utils/tests/client.d.ts.map +1 -1
  66. package/package.json +4 -2
  67. package/src/@types/domains/client.ts +1 -0
  68. package/src/client/api/createClient.ts +1 -0
  69. package/src/client/api/isConnected.ts +8 -1
  70. package/src/client/api/login.ts +6 -0
  71. package/src/client/api/logout.ts +8 -1
  72. package/src/client/api/resumeSession.ts +12 -0
  73. package/src/client/api/tests/createClient.test.ts +6 -0
  74. package/src/client/api/tests/login.test.ts +51 -42
  75. package/src/client/api/tests/logout.test.ts +12 -1
  76. package/src/client/api/tests/resumeSession.test.ts +111 -102
  77. package/src/client/api/tests/terminateClient.test.ts +6 -0
  78. package/src/client/utils/setClientToken.ts +3 -0
  79. package/src/core/events.ts +18 -0
  80. package/src/core/transports/index.ts +1 -0
  81. package/src/core/transports/ws.ts +60 -0
  82. package/src/utils/tests/client.ts +7 -1
  83. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"resumeSession.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/resumeSession.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { ASCApiError } from '~/core/errors';\nimport { user11, disconnectClient } from '~/utils/tests';\nimport { resumeSession, createClient } from '..';\nimport { setActiveClient } from '../activeClient';\n\nlet client: Amity.Client;\n\nconst sessionHandler: Amity.SessionHandler = {\n sessionWillRenewAccessToken(_) {\n // do nothing\n },\n};\n\nconst mockToken = {\n accessToken: 'mock-access-token',\n issuedAt: '2023-01-01T00:00:00Z',\n expiresAt: '2025-01-01T00:00:00Z',\n};\n\nconst mockUserResponse = {\n data: {\n users: [user11],\n },\n};\n\nconst onConnect = () =>\n describe('resumeSession', () => {\n beforeEach(() => {\n client = createClient('key', 'sg');\n client.mqtt?.connect && (client.mqtt.connect = jest.fn());\n client.mqtt?.subscribe && (client.mqtt.subscribe = jest.fn());\n client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);\n\n setActiveClient(client);\n });\n\n afterEach(async () => {\n if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();\n });\n\n test('it should connect client with access token', async () => {\n onConnect().unref();\n\n const received = await resumeSession(\n { userId: user11.userId, token: mockToken },\n sessionHandler,\n );\n\n expect(received).toBe(true);\n });\n\n test('it should establish connection', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n const { sessionState } = client;\n\n expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n });\n\n test('it should have session state establishing while connecting client', () => {\n resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);\n });\n\n test('it should have session state notLoggedIn on failure', async () => {\n client.http.get = jest\n .fn()\n .mockRejectedValue(\n new ASCApiError('unauthorized', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),\n );\n\n await expect(\n resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler),\n ).rejects.toThrow('unauthorized');\n expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);\n });\n\n test('it should set authorization header with token', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.http.defaults.headers.common.Authorization).toBe(\n `Bearer ${mockToken.accessToken}`,\n );\n expect(client.upload.defaults.headers.common.Authorization).toBe(\n `Bearer ${mockToken.accessToken}`,\n );\n });\n\n test('it should set token metadata', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.token).toEqual(mockToken);\n expect(client.http.defaults.metadata).toEqual({\n tokenExpiry: mockToken.expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n });\n });\n\n test('it should call user endpoint to validate token', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.http.get).toHaveBeenCalledWith(`/api/v3/users/${user11.userId}`);\n });\n\n test('it should terminate session on ban', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n // ban user\n client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);\n\n expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);\n });\n\n test('it should reset client state when user is already connected with same userId', async () => {\n onConnect().unref();\n\n // First connection\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n expect(client.userId).toBe(user11.userId);\n\n // Mock the HTTP call for second connection\n client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);\n\n // Second connection with same userId should treat as token expiry (preserve cache)\n onConnect().unref();\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n // Verify that the client is properly reset and reconnected\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n expect(client.userId).toBe(user11.userId);\n });\n\n test('it should preserve cache when resuming session with same userId', async () => {\n onConnect().unref();\n\n // First connection - set some cache data\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n if (client.cache) {\n client.cache.data = { test: 'data' };\n }\n\n // Mock the HTTP call for second connection\n client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);\n\n // Second connection with same userId\n onConnect().unref();\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n // Cache should be preserved when same userId is used\n expect(client.cache?.data).toEqual({ test: 'data' });\n });\n });\n"]}
1
+ {"version":3,"file":"resumeSession.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/resumeSession.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { ASCApiError } from '~/core/errors';\nimport { user11, disconnectClient } from '~/utils/tests';\nimport { resumeSession, createClient } from '..';\nimport { setActiveClient } from '../activeClient';\n\nlet client: Amity.Client;\n\nconst sessionHandler: Amity.SessionHandler = {\n sessionWillRenewAccessToken(_) {\n // do nothing\n },\n};\n\nconst mockToken = {\n accessToken: 'mock-access-token',\n issuedAt: '2023-01-01T00:00:00Z',\n expiresAt: '2025-01-01T00:00:00Z',\n};\n\nconst mockUserResponse = {\n data: {\n users: [user11],\n },\n};\n\nconst onConnect = () =>\n setTimeout(() => {\n const CONNECT_PACKET = { type: 0, nsp: client.ws?.nsp };\n\n client.ws?.emit('connect');\n\n // simulate a connection ack packet from server\n client.ws?.io.emit('packet', CONNECT_PACKET);\n }, 50);\n\ndescribe('resumeSession', () => {\n beforeEach(() => {\n client = createClient('key', 'sg');\n client.mqtt?.connect && (client.mqtt.connect = jest.fn());\n client.mqtt?.subscribe && (client.mqtt.subscribe = jest.fn());\n client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);\n\n setActiveClient(client);\n });\n\n afterEach(async () => {\n if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();\n });\n\n test('it should connect client with access token', async () => {\n onConnect().unref();\n\n const received = await resumeSession(\n { userId: user11.userId, token: mockToken },\n sessionHandler,\n );\n\n expect(received).toBe(true);\n });\n\n test('it should establish connection', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n const { sessionState } = client;\n\n expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n });\n\n test('it should have session state establishing while connecting client', () => {\n resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);\n });\n\n test('it should have session state notLoggedIn on failure', async () => {\n client.http.get = jest\n .fn()\n .mockRejectedValue(\n new ASCApiError('unauthorized', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),\n );\n\n await expect(\n resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler),\n ).rejects.toThrow('unauthorized');\n expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);\n });\n\n test('it should set authorization header with token', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.http.defaults.headers.common.Authorization).toBe(\n `Bearer ${mockToken.accessToken}`,\n );\n expect(client.upload.defaults.headers.common.Authorization).toBe(\n `Bearer ${mockToken.accessToken}`,\n );\n });\n\n test('it should set token metadata', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.token).toEqual(mockToken);\n expect(client.http.defaults.metadata).toEqual({\n tokenExpiry: mockToken.expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n });\n });\n\n test('it should call user endpoint to validate token', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n expect(client.http.get).toHaveBeenCalledWith(`/api/v3/users/${user11.userId}`);\n });\n\n test('it should terminate session on ban', async () => {\n onConnect().unref();\n\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n // ban user\n client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);\n\n expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);\n });\n\n test('it should reset client state when user is already connected with same userId', async () => {\n onConnect().unref();\n\n // First connection\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n expect(client.userId).toBe(user11.userId);\n\n // Mock the HTTP call for second connection\n client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);\n\n // Second connection with same userId should treat as token expiry (preserve cache)\n onConnect().unref();\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n // Verify that the client is properly reset and reconnected\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n expect(client.userId).toBe(user11.userId);\n });\n\n test('it should preserve cache when resuming session with same userId', async () => {\n onConnect().unref();\n\n // First connection - set some cache data\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n if (client.cache) {\n client.cache.data = { test: 'data' };\n }\n\n // Mock the HTTP call for second connection\n client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);\n\n // Second connection with same userId\n onConnect().unref();\n await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);\n\n // Cache should be preserved when same userId is used\n expect(client.cache?.data).toEqual({ test: 'data' });\n });\n});\n"]}
@@ -1,15 +1,18 @@
1
1
  import { client, connectClient } from '~/utils/tests';
2
2
  import { terminateClient } from '../terminateClient';
3
+ const disconnect = () => setTimeout(() => client.ws.emit('disconnect'), 500);
3
4
  describe('terminateClient', () => {
4
5
  beforeAll(async () => {
5
6
  await connectClient();
6
7
  });
7
8
  test('it should terminate client session', async () => {
9
+ disconnect().unref();
8
10
  const expected = "terminated" /* Amity.SessionStates.TERMINATED */;
9
11
  terminateClient();
10
12
  expect(client.sessionState).toBe(expected);
11
13
  });
12
14
  test('it should clear sessionHandler', async () => {
15
+ disconnect().unref();
13
16
  terminateClient();
14
17
  expect(client.sessionHandler).toBeUndefined();
15
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"terminateClient.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/terminateClient.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,QAAQ,oDAAiC,CAAC;QAEhD,eAAe,EAAE,CAAC;QAElB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,eAAe,EAAE,CAAC;QAElB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { client, connectClient } from '~/utils/tests';\n\nimport { terminateClient } from '../terminateClient';\n\ndescribe('terminateClient', () => {\n beforeAll(async () => {\n await connectClient();\n });\n\n test('it should terminate client session', async () => {\n const expected = Amity.SessionStates.TERMINATED;\n\n terminateClient();\n\n expect(client.sessionState).toBe(expected);\n });\n\n test('it should clear sessionHandler', async () => {\n terminateClient();\n\n expect(client.sessionHandler).toBeUndefined();\n });\n});\n"]}
1
+ {"version":3,"file":"terminateClient.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/terminateClient.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;AAE7E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;QAErB,MAAM,QAAQ,oDAAiC,CAAC;QAEhD,eAAe,EAAE,CAAC;QAElB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;QAErB,eAAe,EAAE,CAAC;QAElB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { client, connectClient } from '~/utils/tests';\n\nimport { terminateClient } from '../terminateClient';\n\nconst disconnect = () => setTimeout(() => client.ws.emit('disconnect'), 500);\n\ndescribe('terminateClient', () => {\n beforeAll(async () => {\n await connectClient();\n });\n\n test('it should terminate client session', async () => {\n disconnect().unref();\n\n const expected = Amity.SessionStates.TERMINATED;\n\n terminateClient();\n\n expect(client.sessionState).toBe(expected);\n });\n\n test('it should clear sessionHandler', async () => {\n disconnect().unref();\n\n terminateClient();\n\n expect(client.sessionHandler).toBeUndefined();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"setClientToken.d.ts","sourceRoot":"","sources":["../../../src/client/utils/setClientToken.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,WAAkB,WAAW,eAAe,CAAC,CAAC,CAAC,CAAC;;;EA6B1E,CAAC"}
1
+ {"version":3,"file":"setClientToken.d.ts","sourceRoot":"","sources":["../../../src/client/utils/setClientToken.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,WAAkB,WAAW,eAAe,CAAC,CAAC,CAAC,CAAC;;;EAgC1E,CAAC"}
@@ -31,6 +31,9 @@ export const setClientToken = async (params) => {
31
31
  isGlobalBanned: false,
32
32
  isUserDeleted: false,
33
33
  };
34
+ // manually setup the token for ws transport
35
+ if (client.ws)
36
+ client.ws.io.opts.query = { token: accessToken };
34
37
  client.token = { accessToken, issuedAt, expiresAt };
35
38
  setSessionState("established" /* Amity.SessionStates.ESTABLISHED */);
36
39
  return { accessToken, users };
@@ -1 +1 @@
1
- {"version":3,"file":"setClientToken.js","sourceRoot":"","sources":["../../../src/client/utils/setClientToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,MAAsC,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,6BAA6B;IAC7B,eAAe,uDAAkC,CAAC;IAElD,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3E,8CAA8C;IAC9C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,WAAW,EAAE,CAAC;IAE5E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;QAC9B,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,WAAW,EAAE,CAAC;IAE9E,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG;QAChC,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEpD,eAAe,qDAAiC,CAAC;IAEjD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC,CAAC","sourcesContent":["import { getActiveClient } from '../api/activeClient';\nimport { setSessionState } from '../api/setSessionState';\nimport { getToken } from '../api/getToken';\n\n/**\n * A util to set or refresh client token\n *\n * @param params.userId the user ID for the current session\n * @param params.displayName the user's displayName for the current session\n * @param params.deviceId Manual override of the user's device id (for device management)\n * @param params.authToken The authentication token - necessary when network option is set to secure\n * @returns token & user info\n *\n * @category private\n * @async\n */\nexport const setClientToken = async (params: Parameters<typeof getToken>[0]) => {\n const client = getActiveClient();\n // begin establishing session\n setSessionState(Amity.SessionStates.ESTABLISHING);\n\n const { accessToken, users, expiresAt, issuedAt } = await getToken(params);\n\n // manually setup the token for http transport\n client.http.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\n\n client.http.defaults.metadata = {\n tokenExpiry: expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n client.upload.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\n\n client.upload.defaults.metadata = {\n tokenExpiry: expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n client.token = { accessToken, issuedAt, expiresAt };\n\n setSessionState(Amity.SessionStates.ESTABLISHED);\n\n return { accessToken, users };\n};\n"]}
1
+ {"version":3,"file":"setClientToken.js","sourceRoot":"","sources":["../../../src/client/utils/setClientToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,MAAsC,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,6BAA6B;IAC7B,eAAe,uDAAkC,CAAC;IAElD,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3E,8CAA8C;IAC9C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,WAAW,EAAE,CAAC;IAE5E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;QAC9B,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,WAAW,EAAE,CAAC;IAE9E,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG;QAChC,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,4CAA4C;IAC5C,IAAI,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAEhE,MAAM,CAAC,KAAK,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEpD,eAAe,qDAAiC,CAAC;IAEjD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC,CAAC","sourcesContent":["import { getActiveClient } from '../api/activeClient';\nimport { setSessionState } from '../api/setSessionState';\nimport { getToken } from '../api/getToken';\n\n/**\n * A util to set or refresh client token\n *\n * @param params.userId the user ID for the current session\n * @param params.displayName the user's displayName for the current session\n * @param params.deviceId Manual override of the user's device id (for device management)\n * @param params.authToken The authentication token - necessary when network option is set to secure\n * @returns token & user info\n *\n * @category private\n * @async\n */\nexport const setClientToken = async (params: Parameters<typeof getToken>[0]) => {\n const client = getActiveClient();\n // begin establishing session\n setSessionState(Amity.SessionStates.ESTABLISHING);\n\n const { accessToken, users, expiresAt, issuedAt } = await getToken(params);\n\n // manually setup the token for http transport\n client.http.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\n\n client.http.defaults.metadata = {\n tokenExpiry: expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n client.upload.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\n\n client.upload.defaults.metadata = {\n tokenExpiry: expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n // manually setup the token for ws transport\n if (client.ws) client.ws.io.opts.query = { token: accessToken };\n\n client.token = { accessToken, issuedAt, expiresAt };\n\n setSessionState(Amity.SessionStates.ESTABLISHED);\n\n return { accessToken, users };\n};\n"]}
@@ -1,5 +1,16 @@
1
1
  /** @hidden */
2
2
  export declare const createEventEmitter: () => import("mitt").Emitter<Amity.Events>;
3
+ /**
4
+ * Wraps the websocket events into the client's event emitter for
5
+ * abstraction of transport.
6
+ *
7
+ * @param ws A websocket connection to listen from
8
+ * @param emitter An event emitter to wire the events to
9
+ *
10
+ * @category Transport
11
+ * @hidden
12
+ */
13
+ export declare const proxyWebsocketEvents: (ws: Amity.Client['ws'], emitter: Amity.Client['emitter']) => void;
3
14
  export declare const proxyMqttEvents: (mqttClient: Amity.Client['mqtt'], emitter: Amity.Client['emitter']) => void;
4
15
  /**
5
16
  * Standardize the subscription of SSE through web sockets
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/core/events.ts"],"names":[],"mappings":"AAwCA,cAAc;AACd,eAAO,MAAM,kBAAkB,4CAE9B,CAAC;AAEF,eAAO,MAAM,eAAe,eACd,MAAM,MAAM,CAAC,MAAM,CAAC,WACvB,MAAM,MAAM,CAAC,SAAS,CAAC,SAajC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,u6HACxB,MAAM,MAAM,aACT,MAAM,oDAGhB,MAAM,YAsBR,CAAC;AAEF,eAAO,MAAM,2BAA2B,u6HAC9B,MAAM,MAAM,aACT,MAAM,yBAEJ,OAAO,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAC5C,MAAM,YAQR,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,08HAKrB,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/core/events.ts"],"names":[],"mappings":"AAwCA,cAAc;AACd,eAAO,MAAM,kBAAkB,4CAE9B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,OAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,MAAM,CAAC,SAAS,CAAC,SAM5F,CAAC;AAEF,eAAO,MAAM,eAAe,eACd,MAAM,MAAM,CAAC,MAAM,CAAC,WACvB,MAAM,MAAM,CAAC,SAAS,CAAC,SAajC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,u6HACxB,MAAM,MAAM,aACT,MAAM,oDAGhB,MAAM,YAsBR,CAAC;AAEF,eAAO,MAAM,2BAA2B,u6HAC9B,MAAM,MAAM,aACT,MAAM,yBAEJ,OAAO,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAC5C,MAAM,YAQR,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,08HAKrB,CAAC"}
@@ -34,6 +34,23 @@ const MQTT_EVENTS = [
34
34
  export const createEventEmitter = () => {
35
35
  return mitt();
36
36
  };
37
+ /**
38
+ * Wraps the websocket events into the client's event emitter for
39
+ * abstraction of transport.
40
+ *
41
+ * @param ws A websocket connection to listen from
42
+ * @param emitter An event emitter to wire the events to
43
+ *
44
+ * @category Transport
45
+ * @hidden
46
+ */
47
+ export const proxyWebsocketEvents = (ws, emitter) => {
48
+ WS_EVENTS.forEach(event => {
49
+ ws === null || ws === void 0 ? void 0 : ws.on(event, (param) => {
50
+ emitter.emit(event, param);
51
+ });
52
+ });
53
+ };
37
54
  export const proxyMqttEvents = (mqttClient, emitter) => {
38
55
  MQTT_EVENTS.forEach(event => {
39
56
  mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.on(event, (...params) => {
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/core/events.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,2BAA2B;AAC3B,MAAM,SAAS,GAAG;IAChB,cAAc;IACd,OAAO;IACP,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,+CAA+C;IAC/C,cAAc;CACN,CAAC;AAEX,MAAM,WAAW,GAAG;IAClB,SAAS;IACT,SAAS;IACT,YAAY;IACZ,OAAO;IACP,OAAO;IACP,KAAK;IACL,WAAW;IAEX,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,yBAAyB;IACzB,8BAA8B;IAE9B,8BAA8B;IAC9B,gCAAgC;IAEhC,sBAAsB;CACd,CAAC;AAEX,cAAc;AACd,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,OAAO,IAAI,EAAgB,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAAgC,EAChC,OAAgC,EAChC,EAAE;IACF,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC1B,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;YACzC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAoB,EACpB,SAAiB,EACjB,KAAQ,EACR,EAAmC,EACf,EAAE;IACtB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,GAAG,CAAC,GAAG,SAAS,WAAW,SAAS,YAAY,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,CAAC,GAAG,OAA8B,EAAE,EAAE;QACpD,GAAG,CAAC,GAAG,SAAS,WAAW,SAAS,aAAa,EAAE,OAAO,CAAC,CAAC;QAE5D,IAAI;YACF,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACV,GAAG,CAAC,GAAG,SAAS,WAAW,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC;SACrD;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE3B,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,GAAG,SAAS,WAAW,SAAS,aAAa,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,MAAoB,EACpB,SAAiB,EACjB,KAAQ,EACR,EAA6C,EACzB,EAAE;IACtB,OAAO,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE;YAC/B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAClB;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAA+B,KAAQ,EAAE,OAAwB,EAAE,EAAE;IAC5F,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,YAAY,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport mitt from 'mitt';\n\nimport { getActiveClient } from '~/client/api/activeClient';\n\nimport { scheduleTask } from './microtasks';\n\n// need to sync up the list\nconst WS_EVENTS = [\n 'disconnected',\n 'error',\n 'connect_error',\n 'reconnect_error',\n 'reconnect_failed',\n 'sessionStateChange',\n // for internal use by accessTokenExpiryWatcher\n 'tokenExpired',\n] as const;\n\nconst MQTT_EVENTS = [\n 'connect',\n 'message',\n 'disconnect',\n 'error',\n 'close',\n 'end',\n 'reconnect',\n\n 'video-streaming.didStart',\n 'video-streaming.didRecord',\n 'video-streaming.didStop',\n 'video-streaming.didFlag',\n 'video-streaming.didTerminate',\n\n 'video-streaming.viewerDidBan',\n 'video-streaming.viewerDidUnban',\n\n 'liveReaction.created',\n] as const;\n\n/** @hidden */\nexport const createEventEmitter = () => {\n return mitt<Amity.Events>();\n};\n\nexport const proxyMqttEvents = (\n mqttClient: Amity.Client['mqtt'],\n emitter: Amity.Client['emitter'],\n) => {\n MQTT_EVENTS.forEach(event => {\n mqttClient?.on(event, (...params: any[]) => {\n emitter.emit(event, params.length === 1 ? params[0] : params);\n });\n });\n\n // @ts-ignore\n mqttClient.on('message', (topic: string, payload: Buffer) => {\n const message = JSON.parse(payload.toString());\n emitter.emit(message.eventType, message.data);\n });\n};\n\n/**\n * Standardize the subscription of SSE through web sockets\n *\n * @param client The current client for which to subscribe the event to\n * @param namespace A unique name for the logger\n * @param event The websocket event name\n * @param fn A wrapper for the callback.\n * @returns A dispose function to unsubscribe to the event\n *\n * @category Transport\n * @hidden\n */\nexport const createEventSubscriber = <T extends keyof Amity.Events>(\n client: Amity.Client,\n namespace: string,\n event: T,\n fn: Amity.Listener<Amity.Events[T]>,\n): Amity.Unsubscriber => {\n const { log, emitter } = client;\n\n const timestamp = Date.now();\n log(`${namespace}(tmpid: ${timestamp}) > listen`);\n\n const handler = (...payload: Parameters<typeof fn>) => {\n log(`${namespace}(tmpid: ${timestamp}) > trigger`, payload);\n\n try {\n fn(...payload);\n } catch (e) {\n log(`${namespace}(tmpid: ${timestamp}) > error`, e);\n }\n };\n\n emitter.on(event, handler);\n\n return () => {\n log(`${namespace}(tmpid: ${timestamp}) > dispose`);\n emitter.off(event, handler);\n };\n};\n\nexport const createMqttMessageSubscriber = <T extends keyof Amity.Events>(\n client: Amity.Client,\n namespace: string,\n event: T,\n fn: (params: Record<string, unknown>) => void,\n): Amity.Unsubscriber => {\n return createEventSubscriber(client, namespace, 'message', ([topic, message]) => {\n const payload = JSON.parse(message.toString());\n\n if (payload.eventType === event) {\n fn(payload.data);\n }\n });\n};\n\n/**\n * Wrapper around dispatch event\n *\n * @hidden\n */\nexport const fireEvent = <T extends keyof Amity.Events>(event: T, payload: Amity.Events[T]) => {\n const { emitter } = getActiveClient();\n scheduleTask(() => {\n emitter.emit(event, payload);\n });\n};\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/core/events.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport mitt from 'mitt';\n\nimport { getActiveClient } from '~/client/api/activeClient';\n\nimport { scheduleTask } from './microtasks';\n\n// need to sync up the list\nconst WS_EVENTS = [\n 'disconnected',\n 'error',\n 'connect_error',\n 'reconnect_error',\n 'reconnect_failed',\n 'sessionStateChange',\n // for internal use by accessTokenExpiryWatcher\n 'tokenExpired',\n] as const;\n\nconst MQTT_EVENTS = [\n 'connect',\n 'message',\n 'disconnect',\n 'error',\n 'close',\n 'end',\n 'reconnect',\n\n 'video-streaming.didStart',\n 'video-streaming.didRecord',\n 'video-streaming.didStop',\n 'video-streaming.didFlag',\n 'video-streaming.didTerminate',\n\n 'video-streaming.viewerDidBan',\n 'video-streaming.viewerDidUnban',\n\n 'liveReaction.created',\n] as const;\n\n/** @hidden */\nexport const createEventEmitter = () => {\n return mitt<Amity.Events>();\n};\n\n/**\n * Wraps the websocket events into the client's event emitter for\n * abstraction of transport.\n *\n * @param ws A websocket connection to listen from\n * @param emitter An event emitter to wire the events to\n *\n * @category Transport\n * @hidden\n */\nexport const proxyWebsocketEvents = (ws: Amity.Client['ws'], emitter: Amity.Client['emitter']) => {\n WS_EVENTS.forEach(event => {\n ws?.on(event, (param: Amity.Events[typeof event]) => {\n emitter.emit(event, param);\n });\n });\n};\n\nexport const proxyMqttEvents = (\n mqttClient: Amity.Client['mqtt'],\n emitter: Amity.Client['emitter'],\n) => {\n MQTT_EVENTS.forEach(event => {\n mqttClient?.on(event, (...params: any[]) => {\n emitter.emit(event, params.length === 1 ? params[0] : params);\n });\n });\n\n // @ts-ignore\n mqttClient.on('message', (topic: string, payload: Buffer) => {\n const message = JSON.parse(payload.toString());\n emitter.emit(message.eventType, message.data);\n });\n};\n\n/**\n * Standardize the subscription of SSE through web sockets\n *\n * @param client The current client for which to subscribe the event to\n * @param namespace A unique name for the logger\n * @param event The websocket event name\n * @param fn A wrapper for the callback.\n * @returns A dispose function to unsubscribe to the event\n *\n * @category Transport\n * @hidden\n */\nexport const createEventSubscriber = <T extends keyof Amity.Events>(\n client: Amity.Client,\n namespace: string,\n event: T,\n fn: Amity.Listener<Amity.Events[T]>,\n): Amity.Unsubscriber => {\n const { log, emitter } = client;\n\n const timestamp = Date.now();\n log(`${namespace}(tmpid: ${timestamp}) > listen`);\n\n const handler = (...payload: Parameters<typeof fn>) => {\n log(`${namespace}(tmpid: ${timestamp}) > trigger`, payload);\n\n try {\n fn(...payload);\n } catch (e) {\n log(`${namespace}(tmpid: ${timestamp}) > error`, e);\n }\n };\n\n emitter.on(event, handler);\n\n return () => {\n log(`${namespace}(tmpid: ${timestamp}) > dispose`);\n emitter.off(event, handler);\n };\n};\n\nexport const createMqttMessageSubscriber = <T extends keyof Amity.Events>(\n client: Amity.Client,\n namespace: string,\n event: T,\n fn: (params: Record<string, unknown>) => void,\n): Amity.Unsubscriber => {\n return createEventSubscriber(client, namespace, 'message', ([topic, message]) => {\n const payload = JSON.parse(message.toString());\n\n if (payload.eventType === event) {\n fn(payload.data);\n }\n });\n};\n\n/**\n * Wrapper around dispatch event\n *\n * @hidden\n */\nexport const fireEvent = <T extends keyof Amity.Events>(event: T, payload: Amity.Events[T]) => {\n const { emitter } = getActiveClient();\n scheduleTask(() => {\n emitter.emit(event, payload);\n });\n};\n"]}
@@ -1,3 +1,4 @@
1
1
  export * from './http';
2
+ export * from './ws';
2
3
  export * from './mqtt';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './http';
2
+ export * from './ws';
2
3
  export * from './mqtt';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC","sourcesContent":["export * from './http';\nexport * from './mqtt';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC","sourcesContent":["export * from './http';\nexport * from './ws';\nexport * from './mqtt';\n"]}
@@ -0,0 +1,27 @@
1
+ /// <reference types="socket.io-client" />
2
+ /**
3
+ * Creates a pre-configured socket.io instance
4
+ *
5
+ * @param endpoint The socket.io server's URL
6
+ * @returns A pre-configured (non-connected) socket.io client instance
7
+ *
8
+ * @category Transport
9
+ * @hidden
10
+ */
11
+ export declare const createWebsocketTransport: (endpoint: string) => SocketIOClient.Socket;
12
+ /**
13
+ * Promisify a websocket event emission - resulting in a synchronous http-like XHR (ws legacy)
14
+ *
15
+ * @param client The current client for which to send the event with
16
+ * @param event The websocket event name
17
+ * @param data The event's payload
18
+ *
19
+ * @returns The data returned by the backend
20
+ * @throws An error related to backend's rejection
21
+ *
22
+ * @category Transport
23
+ * @async
24
+ * @hidden
25
+ */
26
+ export declare const synchronousWSCall: <T>(client: Amity.Client, event: string, data?: Record<string, unknown>) => Promise<T | undefined>;
27
+ //# sourceMappingURL=ws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/core/transports/ws.ts"],"names":[],"mappings":";AAGA;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,aAAc,MAAM,0BAaxD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,cACpB,MAAM,MAAM,SACb,MAAM,SACN,OAAO,MAAM,EAAE,OAAO,CAAC,2BAe/B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import io from 'socket.io-client';
2
+ import { unwrapPayload } from './utils';
3
+ /**
4
+ * Creates a pre-configured socket.io instance
5
+ *
6
+ * @param endpoint The socket.io server's URL
7
+ * @returns A pre-configured (non-connected) socket.io client instance
8
+ *
9
+ * @category Transport
10
+ * @hidden
11
+ */
12
+ export const createWebsocketTransport = (endpoint) => {
13
+ const socket = io(endpoint, {
14
+ autoConnect: false,
15
+ reconnectionDelay: 2000,
16
+ transports: ['websocket'],
17
+ });
18
+ // FIXME: disconnectClient removes this listener and client can get global ban event
19
+ socket.on('disconnect', (reason) => {
20
+ if (reason === 'io server disconnect')
21
+ socket.connect();
22
+ });
23
+ return socket;
24
+ };
25
+ /**
26
+ * Promisify a websocket event emission - resulting in a synchronous http-like XHR (ws legacy)
27
+ *
28
+ * @param client The current client for which to send the event with
29
+ * @param event The websocket event name
30
+ * @param data The event's payload
31
+ *
32
+ * @returns The data returned by the backend
33
+ * @throws An error related to backend's rejection
34
+ *
35
+ * @category Transport
36
+ * @async
37
+ * @hidden
38
+ */
39
+ export const synchronousWSCall = async (client, event, data) => {
40
+ const { ws } = client;
41
+ const value = await new Promise((resolve, reject) => {
42
+ ws === null || ws === void 0 ? void 0 : ws.emit(event, data, (response) => {
43
+ try {
44
+ resolve(unwrapPayload(response));
45
+ }
46
+ catch (error) {
47
+ reject(error);
48
+ }
49
+ });
50
+ });
51
+ return value;
52
+ };
53
+ //# sourceMappingURL=ws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/core/transports/ws.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC3D,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE;QAC1B,WAAW,EAAE,KAAK;QAClB,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,CAAC,WAAW,CAAC;KAC1B,CAAC,CAAC;IAEH,oFAAoF;IACpF,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;QACzC,IAAI,MAAM,KAAK,sBAAsB;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,MAAoB,EACpB,KAAa,EACb,IAA8B,EAC9B,EAAE;IACF,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAEtB,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjE,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,QAA2B,EAAE,EAAE;YACpD,IAAI;gBACF,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;aAClC;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,CAAC;aACf;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import io from 'socket.io-client';\nimport { unwrapPayload } from './utils';\n\n/**\n * Creates a pre-configured socket.io instance\n *\n * @param endpoint The socket.io server's URL\n * @returns A pre-configured (non-connected) socket.io client instance\n *\n * @category Transport\n * @hidden\n */\nexport const createWebsocketTransport = (endpoint: string) => {\n const socket = io(endpoint, {\n autoConnect: false,\n reconnectionDelay: 2000,\n transports: ['websocket'],\n });\n\n // FIXME: disconnectClient removes this listener and client can get global ban event\n socket.on('disconnect', (reason: string) => {\n if (reason === 'io server disconnect') socket.connect();\n });\n\n return socket;\n};\n\n/**\n * Promisify a websocket event emission - resulting in a synchronous http-like XHR (ws legacy)\n *\n * @param client The current client for which to send the event with\n * @param event The websocket event name\n * @param data The event's payload\n *\n * @returns The data returned by the backend\n * @throws An error related to backend's rejection\n *\n * @category Transport\n * @async\n * @hidden\n */\nexport const synchronousWSCall = async <T>(\n client: Amity.Client,\n event: string,\n data?: Record<string, unknown>,\n) => {\n const { ws } = client;\n\n const value = await new Promise<T | undefined>((resolve, reject) => {\n ws?.emit(event, data, (response: Amity.Response<T>) => {\n try {\n resolve(unwrapPayload(response));\n } catch (error) {\n reject(error);\n }\n });\n });\n\n return value;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/client.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,YAAS,CAAC;AAYjC,eAAO,MAAM,MAAM,cAA4B,CAAC;AAMhD,eAAO,MAAM,aAAa,qBAiBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAE5B,CAAC;;AAEF,wBAAkB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/client.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,YAAS,CAAC;AAYjC,eAAO,MAAM,MAAM,cAA4B,CAAC;AAMhD,eAAO,MAAM,aAAa,qBAuBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAE5B,CAAC;;AAEF,wBAAkB"}
@@ -29,10 +29,15 @@ export const connectClient = async () => {
29
29
  issuedAt: now.toISOString(),
30
30
  },
31
31
  });
32
+ // test will fail randomly if we have this
33
+ setTimeout(() => {
34
+ client.ws.io.emit('connect');
35
+ // fixes jest warning of open handles
36
+ }, 500).unref();
32
37
  await sdkConnectClient({ userId: client.userId }, sessionHandler);
33
38
  };
34
39
  export const disconnectClient = async () => {
35
- sdkDisconnectClient();
40
+ sdkDisconnectClient().then(() => client.ws.emit('disconnect'));
36
41
  };
37
42
  export default {};
38
43
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/utils/tests/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,IAAI,gBAAgB,EACzB,MAAM,IAAI,mBAAmB,GAC9B,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,qBAAqB,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAEjC,MAAM,cAAc,GAAyB;IAC3C,2BAA2B,CAAC,CAAC;QAC3B,aAAa;IACf,CAAC;CACF,CAAC;AAEF,IAAI;KACD,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;KACxD,iBAAiB,qGAA6D,CAAC;AAElF,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;IAC1C,EAAE;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC;QAC/C,IAAI,EAAE;YACJ,WAAW,EAAE,aAAa;YAC1B,KAAK,EAAE,CAAC,UAAU,CAAC;YACnB,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;SAC5B;KACF,CAAC,CAAC;IAEH,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IACzC,mBAAmB,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,eAAe,EAAE,CAAC","sourcesContent":["import {\n createClient,\n login as sdkConnectClient,\n logout as sdkDisconnectClient,\n} from '~/client/api';\n\nimport * as messagePreviewSetting from '~/client/utils/messagePreviewEngine';\n\nimport { user11 } from './dummy';\n\nexport const activeUser = user11;\n\nconst sessionHandler: Amity.SessionHandler = {\n sessionWillRenewAccessToken(_) {\n // do nothing\n },\n};\n\njest\n .spyOn(messagePreviewSetting, 'getMessagePreviewSetting')\n .mockResolvedValue(Amity.MessagePreviewSetting.MESSAGE_PREVIEW_INCLUDE_DELETED);\n\nexport const client = createClient('key', 'sg');\nclient.userId = 'test';\nclient.accessTokenExpiryWatcher = _ => () => {\n //\n};\n\nexport const connectClient = async () => {\n const now = new Date();\n const nextMonth = new Date();\n nextMonth.setDate(now.getDate() + 30);\n\n client.mqtt.connect = jest.fn();\n client.mqtt.subscribe = jest.fn();\n client.http.post = jest.fn().mockReturnValueOnce({\n data: {\n accessToken: 'accessToken',\n users: [activeUser],\n expiresAt: nextMonth.toISOString(),\n issuedAt: now.toISOString(),\n },\n });\n\n await sdkConnectClient({ userId: client.userId! }, sessionHandler);\n};\n\nexport const disconnectClient = async () => {\n sdkDisconnectClient();\n};\n\nexport default {};\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/utils/tests/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,IAAI,gBAAgB,EACzB,MAAM,IAAI,mBAAmB,GAC9B,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,qBAAqB,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAEjC,MAAM,cAAc,GAAyB;IAC3C,2BAA2B,CAAC,CAAC;QAC3B,aAAa;IACf,CAAC;CACF,CAAC;AAEF,IAAI;KACD,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;KACxD,iBAAiB,qGAA6D,CAAC;AAElF,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;IAC1C,EAAE;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC;QAC/C,IAAI,EAAE;YACJ,WAAW,EAAE,aAAa;YAC1B,KAAK,EAAE,CAAC,UAAU,CAAC;YACnB,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;SAC5B;KACF,CAAC,CAAC;IAEH,0CAA0C;IAC1C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,qCAAqC;IACvC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IACzC,mBAAmB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,eAAe,EAAE,CAAC","sourcesContent":["import {\n createClient,\n login as sdkConnectClient,\n logout as sdkDisconnectClient,\n} from '~/client/api';\n\nimport * as messagePreviewSetting from '~/client/utils/messagePreviewEngine';\n\nimport { user11 } from './dummy';\n\nexport const activeUser = user11;\n\nconst sessionHandler: Amity.SessionHandler = {\n sessionWillRenewAccessToken(_) {\n // do nothing\n },\n};\n\njest\n .spyOn(messagePreviewSetting, 'getMessagePreviewSetting')\n .mockResolvedValue(Amity.MessagePreviewSetting.MESSAGE_PREVIEW_INCLUDE_DELETED);\n\nexport const client = createClient('key', 'sg');\nclient.userId = 'test';\nclient.accessTokenExpiryWatcher = _ => () => {\n //\n};\n\nexport const connectClient = async () => {\n const now = new Date();\n const nextMonth = new Date();\n nextMonth.setDate(now.getDate() + 30);\n\n client.mqtt.connect = jest.fn();\n client.mqtt.subscribe = jest.fn();\n client.http.post = jest.fn().mockReturnValueOnce({\n data: {\n accessToken: 'accessToken',\n users: [activeUser],\n expiresAt: nextMonth.toISOString(),\n issuedAt: now.toISOString(),\n },\n });\n\n // test will fail randomly if we have this\n setTimeout(() => {\n client.ws.io.emit('connect');\n // fixes jest warning of open handles\n }, 500).unref();\n\n await sdkConnectClient({ userId: client.userId! }, sessionHandler);\n};\n\nexport const disconnectClient = async () => {\n sdkDisconnectClient().then(() => client.ws.emit('disconnect'));\n};\n\nexport default {};\n"]}