@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,3 +1,4 @@
1
+ /// <reference types="socket.io-client" />
1
2
  import { AxiosInstance } from 'axios';
2
3
  import { Emitter } from 'mitt';
3
4
  export declare const enum MembershipAcceptanceTypeEnum {
@@ -26,6 +27,7 @@ declare global {
26
27
  http: AxiosInstance;
27
28
  upload: AxiosInstance;
28
29
  mqtt?: Amity.MqttClient;
30
+ ws?: SocketIOClient.Socket;
29
31
  emitter: Emitter<Amity.Events>;
30
32
  hasPermission: (permission: string) => Amity.PermissionChecker;
31
33
  validateUrls: (urls: string[]) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAc,MAAM,0BAA0B,CAAC;AAsBnE;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,YAAY,WACf,MAAM,cACH,CAAA,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;;;;;;;;;MAYtD,MAAM,MA6FR,CAAC"}
1
+ {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAc,MAAM,0BAA0B,CAAC;AAsBnE;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,YAAY,WACf,MAAM,cACH,CAAA,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;;;;;;;;;MAYtD,MAAM,MA8FR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"isConnected.d.ts","sourceRoot":"","sources":["../../../src/client/api/isConnected.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,QAAO,OAK9B,CAAC"}
1
+ {"version":3,"file":"isConnected.d.ts","sourceRoot":"","sources":["../../../src/client/api/isConnected.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,QAAO,OAY9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/client/api/login.ts"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,WACR,MAAM,mBAAmB,kBACjB,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,CAyIjB,CAAC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/client/api/login.ts"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,WACR,MAAM,mBAAmB,kBACjB,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,CA+IjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/client/api/logout.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM,QAAa,QAAQ,OAAO,CAkD9C,CAAC"}
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/client/api/logout.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM,QAAa,QAAQ,OAAO,CAyD9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resumeSession.d.ts","sourceRoot":"","sources":["../../../src/client/api/resumeSession.ts"],"names":[],"mappings":"AA0CA,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA4DD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa,WAChB,MAAM,kBACE,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,CAsIjB,CAAC"}
1
+ {"version":3,"file":"resumeSession.d.ts","sourceRoot":"","sources":["../../../src/client/api/resumeSession.ts"],"names":[],"mappings":"AA0CA,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA+DD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa,WAChB,MAAM,kBACE,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,CA+IjB,CAAC"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
package/dist/index.cjs.js CHANGED
@@ -7,6 +7,7 @@ var mitt = require('mitt');
7
7
  var debug = require('debug');
8
8
  var axios = require('axios');
9
9
  var HttpAgent = require('agentkeepalive');
10
+ var io = require('socket.io-client');
10
11
  var uuid$1 = require('react-native-uuid');
11
12
  var jwtDecode = require('jwt-decode');
12
13
  var hash = require('object-hash');
@@ -18,6 +19,7 @@ var mitt__default = /*#__PURE__*/_interopDefaultLegacy(mitt);
18
19
  var debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);
19
20
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
20
21
  var HttpAgent__default = /*#__PURE__*/_interopDefaultLegacy(HttpAgent);
22
+ var io__default = /*#__PURE__*/_interopDefaultLegacy(io);
21
23
  var uuid__default = /*#__PURE__*/_interopDefaultLegacy(uuid$1);
22
24
  var jwtDecode__default = /*#__PURE__*/_interopDefaultLegacy(jwtDecode);
23
25
  var hash__default = /*#__PURE__*/_interopDefaultLegacy(hash);
@@ -1381,6 +1383,17 @@ const scheduleTask = (task) => {
1381
1383
  };
1382
1384
 
1383
1385
  /* eslint-disable @typescript-eslint/no-unused-vars */
1386
+ // need to sync up the list
1387
+ const WS_EVENTS = [
1388
+ 'disconnected',
1389
+ 'error',
1390
+ 'connect_error',
1391
+ 'reconnect_error',
1392
+ 'reconnect_failed',
1393
+ 'sessionStateChange',
1394
+ // for internal use by accessTokenExpiryWatcher
1395
+ 'tokenExpired',
1396
+ ];
1384
1397
  const MQTT_EVENTS = [
1385
1398
  'connect',
1386
1399
  'message',
@@ -1402,6 +1415,23 @@ const MQTT_EVENTS = [
1402
1415
  const createEventEmitter = () => {
1403
1416
  return mitt__default["default"]();
1404
1417
  };
1418
+ /**
1419
+ * Wraps the websocket events into the client's event emitter for
1420
+ * abstraction of transport.
1421
+ *
1422
+ * @param ws A websocket connection to listen from
1423
+ * @param emitter An event emitter to wire the events to
1424
+ *
1425
+ * @category Transport
1426
+ * @hidden
1427
+ */
1428
+ const proxyWebsocketEvents = (ws, emitter) => {
1429
+ WS_EVENTS.forEach(event => {
1430
+ ws === null || ws === void 0 ? void 0 : ws.on(event, (param) => {
1431
+ emitter.emit(event, param);
1432
+ });
1433
+ });
1434
+ };
1405
1435
  const proxyMqttEvents = (mqttClient, emitter) => {
1406
1436
  MQTT_EVENTS.forEach(event => {
1407
1437
  mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.on(event, (...params) => {
@@ -1832,6 +1862,29 @@ const createHttpTransport = (endpoint) => {
1832
1862
  return instance;
1833
1863
  };
1834
1864
 
1865
+ /**
1866
+ * Creates a pre-configured socket.io instance
1867
+ *
1868
+ * @param endpoint The socket.io server's URL
1869
+ * @returns A pre-configured (non-connected) socket.io client instance
1870
+ *
1871
+ * @category Transport
1872
+ * @hidden
1873
+ */
1874
+ const createWebsocketTransport = (endpoint) => {
1875
+ const socket = io__default["default"](endpoint, {
1876
+ autoConnect: false,
1877
+ reconnectionDelay: 2000,
1878
+ transports: ['websocket'],
1879
+ });
1880
+ // FIXME: disconnectClient removes this listener and client can get global ban event
1881
+ socket.on('disconnect', (reason) => {
1882
+ if (reason === 'io server disconnect')
1883
+ socket.connect();
1884
+ });
1885
+ return socket;
1886
+ };
1887
+
1835
1888
  function ownKeys(object, enumerableOnly) {
1836
1889
  var keys = Object.keys(object);
1837
1890
 
@@ -7247,6 +7300,9 @@ const setClientToken = async (params) => {
7247
7300
  isGlobalBanned: false,
7248
7301
  isUserDeleted: false,
7249
7302
  };
7303
+ // manually setup the token for ws transport
7304
+ if (client.ws)
7305
+ client.ws.io.opts.query = { token: accessToken };
7250
7306
  client.token = { accessToken, issuedAt, expiresAt };
7251
7307
  setSessionState("established" /* Amity.SessionStates.ESTABLISHED */);
7252
7308
  return { accessToken, users };
@@ -8516,12 +8572,15 @@ var reactionSyncEngineOnLoginHandler = () => {
8516
8572
  * @async
8517
8573
  */
8518
8574
  const logout = async () => {
8519
- var _a;
8575
+ var _a, _b;
8520
8576
  const client = getActiveClient();
8521
8577
  client.log('client/api/disconnectClient');
8522
8578
  if (client.mqtt && client.mqtt.connected) {
8523
8579
  client.mqtt.disconnect();
8524
8580
  }
8581
+ if (client.ws && client.ws.connected) {
8582
+ client.ws.disconnect();
8583
+ }
8525
8584
  /*
8526
8585
  * for cases when session state is terminated (example on ban) or token expired,
8527
8586
  * the terminating block will set session state to terminated or for the or
@@ -8537,7 +8596,9 @@ const logout = async () => {
8537
8596
  if (client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */)
8538
8597
  setSessionState("notLoggedIn" /* Amity.SessionStates.NOT_LOGGED_IN */);
8539
8598
  client.emitter.all.clear();
8540
- (_a = client.mqtt) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
8599
+ // FIXME: it removes listener in ws.ts, it breaks global ban event
8600
+ (_a = client.ws) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
8601
+ (_b = client.mqtt) === null || _b === void 0 ? void 0 : _b.removeAllListeners();
8541
8602
  client.userId = undefined;
8542
8603
  client.token = undefined;
8543
8604
  client.http.defaults.headers.common.Authorization = '';
@@ -8546,6 +8607,8 @@ const logout = async () => {
8546
8607
  isGlobalBanned: false,
8547
8608
  isUserDeleted: false,
8548
8609
  };
8610
+ if (client.ws)
8611
+ client.ws.io.opts.query = { token: '' };
8549
8612
  if (typeof document !== 'undefined') {
8550
8613
  document.cookie = '_ascSession=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
8551
8614
  }
@@ -8743,6 +8806,7 @@ async function runMqtt$1() {
8743
8806
  * @async
8744
8807
  */
8745
8808
  const login = async (params, sessionHandler, config) => {
8809
+ var _a;
8746
8810
  const client = getActiveClient();
8747
8811
  let unsubWatcher;
8748
8812
  client.log('client/api/connectClient', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
@@ -8774,6 +8838,10 @@ const login = async (params, sessionHandler, config) => {
8774
8838
  terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
8775
8839
  return false;
8776
8840
  }
8841
+ // FIXME: events are duplicated if connectClient is called few times without disconnectClient
8842
+ // wire websocket events to our event emitter
8843
+ proxyWebsocketEvents(client.ws, client.emitter);
8844
+ (_a = client.ws) === null || _a === void 0 ? void 0 : _a.open();
8777
8845
  client.userId = user.userId;
8778
8846
  client.sessionHandler = sessionHandler;
8779
8847
  /*
@@ -9401,6 +9469,7 @@ const createClient = (apiKey, apiRegion = API_REGIONS.SG, { debugSession = DEFAU
9401
9469
  let ws;
9402
9470
  let mqtt;
9403
9471
  if (rteEnabled) {
9472
+ ws = createWebsocketTransport(httpEndpoint);
9404
9473
  mqtt = createMqttTransport(mqttEndpoint);
9405
9474
  }
9406
9475
  const emitter = createEventEmitter();
@@ -9527,6 +9596,9 @@ const validateAccessToken = async ({ token, userId }) => {
9527
9596
  isGlobalBanned: false,
9528
9597
  isUserDeleted: false,
9529
9598
  };
9599
+ // manually setup the token for ws transport
9600
+ if (client.ws)
9601
+ client.ws.io.opts.query = { token: token.accessToken };
9530
9602
  client.token = token;
9531
9603
  setSessionState("established" /* Amity.SessionStates.ESTABLISHED */);
9532
9604
  return user;
@@ -9556,6 +9628,7 @@ const validateAccessToken = async ({ token, userId }) => {
9556
9628
  * @async
9557
9629
  */
9558
9630
  const resumeSession = async (params, sessionHandler, config) => {
9631
+ var _a;
9559
9632
  const client = getActiveClient();
9560
9633
  let unsubWatcher;
9561
9634
  client.log('client/api/resumeSession', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
@@ -9566,6 +9639,9 @@ const resumeSession = async (params, sessionHandler, config) => {
9566
9639
  if (client.mqtt && client.mqtt.connected) {
9567
9640
  client.mqtt.disconnect();
9568
9641
  }
9642
+ if (client.ws && client.ws.connected) {
9643
+ client.ws.disconnect();
9644
+ }
9569
9645
  // Clear existing subscriptions
9570
9646
  subscriptions.forEach(fn => fn());
9571
9647
  subscriptions = [];
@@ -9591,6 +9667,10 @@ const resumeSession = async (params, sessionHandler, config) => {
9591
9667
  terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
9592
9668
  return false;
9593
9669
  }
9670
+ // FIXME: events are duplicated if connectClient is called few times without disconnectClient
9671
+ // wire websocket events to our event emitter
9672
+ proxyWebsocketEvents(client.ws, client.emitter);
9673
+ (_a = client.ws) === null || _a === void 0 ? void 0 : _a.open();
9594
9674
  client.userId = user.userId;
9595
9675
  client.sessionHandler = sessionHandler;
9596
9676
  /*
@@ -9665,7 +9745,11 @@ const isConnected = () => {
9665
9745
  var _a, _b;
9666
9746
  const client = getActiveClient();
9667
9747
  client.log('client/api/isConnected', client);
9668
- return !!(client.userId && ((_b = String((_a = client.http.defaults.headers.common) === null || _a === void 0 ? void 0 : _a.Authorization)) === null || _b === void 0 ? void 0 : _b.length));
9748
+ // if client is connected to ws, it means client is connected. If ws is undefined, it means ws is not used.
9749
+ const isWsConnected = (client.ws && client.ws.connected) || !!client.ws;
9750
+ return !!(client.userId &&
9751
+ ((_b = String((_a = client.http.defaults.headers.common) === null || _a === void 0 ? void 0 : _a.Authorization)) === null || _b === void 0 ? void 0 : _b.length) &&
9752
+ isWsConnected);
9669
9753
  };
9670
9754
 
9671
9755
  const enableUnreadCount = () => {
package/dist/index.esm.js CHANGED
@@ -3,6 +3,7 @@ import mitt from 'mitt';
3
3
  import debug from 'debug';
4
4
  import axios from 'axios';
5
5
  import HttpAgent, { HttpsAgent } from 'agentkeepalive';
6
+ import io from 'socket.io-client';
6
7
  import uuid$1 from 'react-native-uuid';
7
8
  import jwtDecode from 'jwt-decode';
8
9
  import hash from 'object-hash';
@@ -1366,6 +1367,17 @@ const scheduleTask = (task) => {
1366
1367
  };
1367
1368
 
1368
1369
  /* eslint-disable @typescript-eslint/no-unused-vars */
1370
+ // need to sync up the list
1371
+ const WS_EVENTS = [
1372
+ 'disconnected',
1373
+ 'error',
1374
+ 'connect_error',
1375
+ 'reconnect_error',
1376
+ 'reconnect_failed',
1377
+ 'sessionStateChange',
1378
+ // for internal use by accessTokenExpiryWatcher
1379
+ 'tokenExpired',
1380
+ ];
1369
1381
  const MQTT_EVENTS = [
1370
1382
  'connect',
1371
1383
  'message',
@@ -1387,6 +1399,23 @@ const MQTT_EVENTS = [
1387
1399
  const createEventEmitter = () => {
1388
1400
  return mitt();
1389
1401
  };
1402
+ /**
1403
+ * Wraps the websocket events into the client's event emitter for
1404
+ * abstraction of transport.
1405
+ *
1406
+ * @param ws A websocket connection to listen from
1407
+ * @param emitter An event emitter to wire the events to
1408
+ *
1409
+ * @category Transport
1410
+ * @hidden
1411
+ */
1412
+ const proxyWebsocketEvents = (ws, emitter) => {
1413
+ WS_EVENTS.forEach(event => {
1414
+ ws === null || ws === void 0 ? void 0 : ws.on(event, (param) => {
1415
+ emitter.emit(event, param);
1416
+ });
1417
+ });
1418
+ };
1390
1419
  const proxyMqttEvents = (mqttClient, emitter) => {
1391
1420
  MQTT_EVENTS.forEach(event => {
1392
1421
  mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.on(event, (...params) => {
@@ -1817,6 +1846,29 @@ const createHttpTransport = (endpoint) => {
1817
1846
  return instance;
1818
1847
  };
1819
1848
 
1849
+ /**
1850
+ * Creates a pre-configured socket.io instance
1851
+ *
1852
+ * @param endpoint The socket.io server's URL
1853
+ * @returns A pre-configured (non-connected) socket.io client instance
1854
+ *
1855
+ * @category Transport
1856
+ * @hidden
1857
+ */
1858
+ const createWebsocketTransport = (endpoint) => {
1859
+ const socket = io(endpoint, {
1860
+ autoConnect: false,
1861
+ reconnectionDelay: 2000,
1862
+ transports: ['websocket'],
1863
+ });
1864
+ // FIXME: disconnectClient removes this listener and client can get global ban event
1865
+ socket.on('disconnect', (reason) => {
1866
+ if (reason === 'io server disconnect')
1867
+ socket.connect();
1868
+ });
1869
+ return socket;
1870
+ };
1871
+
1820
1872
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
1821
1873
 
1822
1874
  function getDefaultExportFromCjs (x) {
@@ -23339,6 +23391,9 @@ const setClientToken = async (params) => {
23339
23391
  isGlobalBanned: false,
23340
23392
  isUserDeleted: false,
23341
23393
  };
23394
+ // manually setup the token for ws transport
23395
+ if (client.ws)
23396
+ client.ws.io.opts.query = { token: accessToken };
23342
23397
  client.token = { accessToken, issuedAt, expiresAt };
23343
23398
  setSessionState("established" /* Amity.SessionStates.ESTABLISHED */);
23344
23399
  return { accessToken, users };
@@ -24608,12 +24663,15 @@ var reactionSyncEngineOnLoginHandler = () => {
24608
24663
  * @async
24609
24664
  */
24610
24665
  const logout = async () => {
24611
- var _a;
24666
+ var _a, _b;
24612
24667
  const client = getActiveClient();
24613
24668
  client.log('client/api/disconnectClient');
24614
24669
  if (client.mqtt && client.mqtt.connected) {
24615
24670
  client.mqtt.disconnect();
24616
24671
  }
24672
+ if (client.ws && client.ws.connected) {
24673
+ client.ws.disconnect();
24674
+ }
24617
24675
  /*
24618
24676
  * for cases when session state is terminated (example on ban) or token expired,
24619
24677
  * the terminating block will set session state to terminated or for the or
@@ -24629,7 +24687,9 @@ const logout = async () => {
24629
24687
  if (client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */)
24630
24688
  setSessionState("notLoggedIn" /* Amity.SessionStates.NOT_LOGGED_IN */);
24631
24689
  client.emitter.all.clear();
24632
- (_a = client.mqtt) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
24690
+ // FIXME: it removes listener in ws.ts, it breaks global ban event
24691
+ (_a = client.ws) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
24692
+ (_b = client.mqtt) === null || _b === void 0 ? void 0 : _b.removeAllListeners();
24633
24693
  client.userId = undefined;
24634
24694
  client.token = undefined;
24635
24695
  client.http.defaults.headers.common.Authorization = '';
@@ -24638,6 +24698,8 @@ const logout = async () => {
24638
24698
  isGlobalBanned: false,
24639
24699
  isUserDeleted: false,
24640
24700
  };
24701
+ if (client.ws)
24702
+ client.ws.io.opts.query = { token: '' };
24641
24703
  if (typeof document !== 'undefined') {
24642
24704
  document.cookie = '_ascSession=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
24643
24705
  }
@@ -24835,6 +24897,7 @@ async function runMqtt$1() {
24835
24897
  * @async
24836
24898
  */
24837
24899
  const login = async (params, sessionHandler, config) => {
24900
+ var _a;
24838
24901
  const client = getActiveClient();
24839
24902
  let unsubWatcher;
24840
24903
  client.log('client/api/connectClient', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
@@ -24866,6 +24929,10 @@ const login = async (params, sessionHandler, config) => {
24866
24929
  terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
24867
24930
  return false;
24868
24931
  }
24932
+ // FIXME: events are duplicated if connectClient is called few times without disconnectClient
24933
+ // wire websocket events to our event emitter
24934
+ proxyWebsocketEvents(client.ws, client.emitter);
24935
+ (_a = client.ws) === null || _a === void 0 ? void 0 : _a.open();
24869
24936
  client.userId = user.userId;
24870
24937
  client.sessionHandler = sessionHandler;
24871
24938
  /*
@@ -25493,6 +25560,7 @@ const createClient = (apiKey, apiRegion = API_REGIONS.SG, { debugSession = DEFAU
25493
25560
  let ws;
25494
25561
  let mqtt;
25495
25562
  if (rteEnabled) {
25563
+ ws = createWebsocketTransport(httpEndpoint);
25496
25564
  mqtt = createMqttTransport(mqttEndpoint);
25497
25565
  }
25498
25566
  const emitter = createEventEmitter();
@@ -25619,6 +25687,9 @@ const validateAccessToken = async ({ token, userId }) => {
25619
25687
  isGlobalBanned: false,
25620
25688
  isUserDeleted: false,
25621
25689
  };
25690
+ // manually setup the token for ws transport
25691
+ if (client.ws)
25692
+ client.ws.io.opts.query = { token: token.accessToken };
25622
25693
  client.token = token;
25623
25694
  setSessionState("established" /* Amity.SessionStates.ESTABLISHED */);
25624
25695
  return user;
@@ -25648,6 +25719,7 @@ const validateAccessToken = async ({ token, userId }) => {
25648
25719
  * @async
25649
25720
  */
25650
25721
  const resumeSession = async (params, sessionHandler, config) => {
25722
+ var _a;
25651
25723
  const client = getActiveClient();
25652
25724
  let unsubWatcher;
25653
25725
  client.log('client/api/resumeSession', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
@@ -25658,6 +25730,9 @@ const resumeSession = async (params, sessionHandler, config) => {
25658
25730
  if (client.mqtt && client.mqtt.connected) {
25659
25731
  client.mqtt.disconnect();
25660
25732
  }
25733
+ if (client.ws && client.ws.connected) {
25734
+ client.ws.disconnect();
25735
+ }
25661
25736
  // Clear existing subscriptions
25662
25737
  subscriptions.forEach(fn => fn());
25663
25738
  subscriptions = [];
@@ -25683,6 +25758,10 @@ const resumeSession = async (params, sessionHandler, config) => {
25683
25758
  terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
25684
25759
  return false;
25685
25760
  }
25761
+ // FIXME: events are duplicated if connectClient is called few times without disconnectClient
25762
+ // wire websocket events to our event emitter
25763
+ proxyWebsocketEvents(client.ws, client.emitter);
25764
+ (_a = client.ws) === null || _a === void 0 ? void 0 : _a.open();
25686
25765
  client.userId = user.userId;
25687
25766
  client.sessionHandler = sessionHandler;
25688
25767
  /*
@@ -25757,7 +25836,11 @@ const isConnected = () => {
25757
25836
  var _a, _b;
25758
25837
  const client = getActiveClient();
25759
25838
  client.log('client/api/isConnected', client);
25760
- return !!(client.userId && ((_b = String((_a = client.http.defaults.headers.common) === null || _a === void 0 ? void 0 : _a.Authorization)) === null || _b === void 0 ? void 0 : _b.length));
25839
+ // if client is connected to ws, it means client is connected. If ws is undefined, it means ws is not used.
25840
+ const isWsConnected = (client.ws && client.ws.connected) || !!client.ws;
25841
+ return !!(client.userId &&
25842
+ ((_b = String((_a = client.http.defaults.headers.common) === null || _a === void 0 ? void 0 : _a.Authorization)) === null || _b === void 0 ? void 0 : _b.length) &&
25843
+ isWsConnected);
25761
25844
  };
25762
25845
 
25763
25846
  const enableUnreadCount = () => {