@rocket.chat/ddp-client 0.0.2-rc.0 → 0.0.2-rc.1

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 (106) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/ClientStream.d.ts +27 -0
  3. package/dist/ClientStream.d.ts.map +1 -0
  4. package/dist/ClientStream.js +154 -0
  5. package/dist/ClientStream.js.map +1 -0
  6. package/dist/Connection.d.ts +55 -0
  7. package/dist/Connection.d.ts.map +1 -0
  8. package/dist/Connection.js +124 -0
  9. package/dist/Connection.js.map +1 -0
  10. package/dist/DDPDispatcher.d.ts +23 -0
  11. package/dist/DDPDispatcher.d.ts.map +1 -0
  12. package/dist/DDPDispatcher.js +82 -0
  13. package/dist/DDPDispatcher.js.map +1 -0
  14. package/dist/DDPSDK.d.ts +54 -0
  15. package/dist/DDPSDK.d.ts.map +1 -0
  16. package/dist/DDPSDK.js +126 -0
  17. package/dist/DDPSDK.js.map +1 -0
  18. package/dist/MinimalDDPClient.d.ts +80 -0
  19. package/dist/MinimalDDPClient.d.ts.map +1 -0
  20. package/dist/MinimalDDPClient.js +170 -0
  21. package/dist/MinimalDDPClient.js.map +1 -0
  22. package/dist/TimeoutControl.d.ts +26 -0
  23. package/dist/TimeoutControl.d.ts.map +1 -0
  24. package/dist/TimeoutControl.js +55 -0
  25. package/dist/TimeoutControl.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +20 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/legacy/RocketchatSDKLegacy.d.ts +107 -0
  31. package/dist/legacy/RocketchatSDKLegacy.d.ts.map +1 -0
  32. package/dist/legacy/RocketchatSDKLegacy.js +219 -0
  33. package/dist/legacy/RocketchatSDKLegacy.js.map +1 -0
  34. package/dist/legacy/types/SDKLegacy.d.ts +105 -0
  35. package/dist/legacy/types/SDKLegacy.d.ts.map +1 -0
  36. package/dist/legacy/types/SDKLegacy.js +3 -0
  37. package/dist/legacy/types/SDKLegacy.js.map +1 -0
  38. package/dist/livechat/LivechatClientImpl.d.ts +117 -0
  39. package/dist/livechat/LivechatClientImpl.d.ts.map +1 -0
  40. package/dist/livechat/LivechatClientImpl.js +275 -0
  41. package/dist/livechat/LivechatClientImpl.js.map +1 -0
  42. package/dist/livechat/types/LivechatSDK.d.ts +61 -0
  43. package/dist/livechat/types/LivechatSDK.d.ts.map +1 -0
  44. package/dist/livechat/types/LivechatSDK.js +3 -0
  45. package/dist/livechat/types/LivechatSDK.js.map +1 -0
  46. package/dist/types/Account.d.ts +39 -0
  47. package/dist/types/Account.d.ts.map +1 -0
  48. package/dist/types/Account.js +70 -0
  49. package/dist/types/Account.js.map +1 -0
  50. package/dist/types/ClientStream.d.ts +113 -0
  51. package/dist/types/ClientStream.d.ts.map +1 -0
  52. package/dist/types/ClientStream.js +3 -0
  53. package/dist/types/ClientStream.js.map +1 -0
  54. package/dist/types/DDPClient.d.ts +112 -0
  55. package/dist/types/DDPClient.d.ts.map +1 -0
  56. package/dist/types/DDPClient.js +3 -0
  57. package/dist/types/DDPClient.js.map +1 -0
  58. package/dist/types/IncomingPayload.d.ts +9 -0
  59. package/dist/types/IncomingPayload.d.ts.map +1 -0
  60. package/dist/types/IncomingPayload.js +3 -0
  61. package/dist/types/IncomingPayload.js.map +1 -0
  62. package/dist/types/OutgoingPayload.d.ts +9 -0
  63. package/dist/types/OutgoingPayload.d.ts.map +1 -0
  64. package/dist/types/OutgoingPayload.js +3 -0
  65. package/dist/types/OutgoingPayload.js.map +1 -0
  66. package/dist/types/RemoveListener.d.ts +2 -0
  67. package/dist/types/RemoveListener.d.ts.map +1 -0
  68. package/dist/types/RemoveListener.js +3 -0
  69. package/dist/types/RemoveListener.js.map +1 -0
  70. package/dist/types/SDK.d.ts +14 -0
  71. package/dist/types/SDK.d.ts.map +1 -0
  72. package/dist/types/SDK.js +3 -0
  73. package/dist/types/SDK.js.map +1 -0
  74. package/dist/types/Subscription.d.ts +12 -0
  75. package/dist/types/Subscription.d.ts.map +1 -0
  76. package/dist/types/Subscription.js +3 -0
  77. package/dist/types/Subscription.js.map +1 -0
  78. package/dist/types/connectionPayloads.d.ts +29 -0
  79. package/dist/types/connectionPayloads.d.ts.map +1 -0
  80. package/dist/types/connectionPayloads.js +3 -0
  81. package/dist/types/connectionPayloads.js.map +1 -0
  82. package/dist/types/heartbeatsPayloads.d.ts +23 -0
  83. package/dist/types/heartbeatsPayloads.d.ts.map +1 -0
  84. package/dist/types/heartbeatsPayloads.js +3 -0
  85. package/dist/types/heartbeatsPayloads.js.map +1 -0
  86. package/dist/types/methods.d.ts +13 -0
  87. package/dist/types/methods.d.ts.map +1 -0
  88. package/dist/types/methods.js +3 -0
  89. package/dist/types/methods.js.map +1 -0
  90. package/dist/types/methodsPayloads.d.ts +43 -0
  91. package/dist/types/methodsPayloads.d.ts.map +1 -0
  92. package/dist/types/methodsPayloads.js +3 -0
  93. package/dist/types/methodsPayloads.js.map +1 -0
  94. package/dist/types/publicationPayloads.d.ts +110 -0
  95. package/dist/types/publicationPayloads.d.ts.map +1 -0
  96. package/dist/types/publicationPayloads.js +3 -0
  97. package/dist/types/publicationPayloads.js.map +1 -0
  98. package/dist/types/streams.d.ts +571 -0
  99. package/dist/types/streams.d.ts.map +1 -0
  100. package/dist/types/streams.js +3 -0
  101. package/dist/types/streams.js.map +1 -0
  102. package/dist/wrapOnceEventIntoPromise.d.ts +13 -0
  103. package/dist/wrapOnceEventIntoPromise.d.ts.map +1 -0
  104. package/dist/wrapOnceEventIntoPromise.js +27 -0
  105. package/dist/wrapOnceEventIntoPromise.js.map +1 -0
  106. package/package.json +3 -3
package/dist/DDPSDK.js ADDED
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DDPSDK = void 0;
13
+ const api_client_1 = require("@rocket.chat/api-client");
14
+ const ClientStream_1 = require("./ClientStream");
15
+ const Connection_1 = require("./Connection");
16
+ const DDPDispatcher_1 = require("./DDPDispatcher");
17
+ const TimeoutControl_1 = require("./TimeoutControl");
18
+ const Account_1 = require("./types/Account");
19
+ const isValidPayload = (data) => {
20
+ if (typeof data !== 'object' && (data !== null || data !== undefined)) {
21
+ return false;
22
+ }
23
+ return true;
24
+ };
25
+ class DDPSDK {
26
+ constructor(connection, client, account, timeoutControl, rest) {
27
+ this.connection = connection;
28
+ this.client = client;
29
+ this.account = account;
30
+ this.timeoutControl = timeoutControl;
31
+ this.rest = rest;
32
+ }
33
+ call(method, ...params) {
34
+ return this.client.callAsync(method, ...params);
35
+ }
36
+ stream(name, data, cb) {
37
+ const [key, args] = Array.isArray(data) ? data : [data];
38
+ const subscription = this.client.subscribe(`stream-${name}`, key, { useCollection: false, args: [args] });
39
+ const stop = subscription.stop.bind(subscription);
40
+ const cancel = [
41
+ () => stop(),
42
+ this.client.onCollection(`stream-${name}`, (data) => {
43
+ if (!isValidPayload(data)) {
44
+ return;
45
+ }
46
+ if (data.collection !== `stream-${name}`) {
47
+ return;
48
+ }
49
+ if (data.msg !== 'changed') {
50
+ return;
51
+ }
52
+ if (data.fields.eventName === key) {
53
+ cb(...data.fields.args);
54
+ }
55
+ }),
56
+ ];
57
+ return Object.assign(subscription, {
58
+ stop: () => {
59
+ cancel.forEach((fn) => fn());
60
+ },
61
+ });
62
+ }
63
+ /**
64
+ * Compounds the Objects responsible for the SDK and returns it through
65
+ * SDK interface
66
+ *
67
+ * @param url - The URL of the server to connect to
68
+ * @param retryOptions - The options for the retry strategy of the connection
69
+ * @param retryOptions.retryCount - The number of times to retry the connection
70
+ * @param retryOptions.retryTime - The time to wait between retries
71
+ * @returns The SDK interface
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * const sdk = DDPSDK.create('wss://open.rocket.chat/websocket');
76
+ * sdk.connection.connect();
77
+ * ```
78
+ */
79
+ static create(url, retryOptions = { retryCount: 1, retryTime: 100 }) {
80
+ const ddp = new DDPDispatcher_1.DDPDispatcher();
81
+ const connection = Connection_1.ConnectionImpl.create(url, WebSocket, ddp, retryOptions);
82
+ const stream = new ClientStream_1.ClientStreamImpl(ddp, ddp);
83
+ const account = new Account_1.AccountImpl(stream);
84
+ const timeoutControl = TimeoutControl_1.TimeoutControl.create(ddp, connection);
85
+ const rest = new (class RestApiClient extends api_client_1.RestClient {
86
+ getCredentials() {
87
+ var _a, _b;
88
+ if (!account.uid || !((_a = account.user) === null || _a === void 0 ? void 0 : _a.token)) {
89
+ return;
90
+ }
91
+ return {
92
+ 'X-User-Id': account.uid,
93
+ 'X-Auth-Token': (_b = account.user) === null || _b === void 0 ? void 0 : _b.token,
94
+ };
95
+ }
96
+ })({ baseUrl: url });
97
+ const sdk = new DDPSDK(connection, stream, account, timeoutControl, rest);
98
+ connection.on('connected', () => {
99
+ [...stream.subscriptions.entries()].forEach(([, sub]) => {
100
+ ddp.subscribeWithId(sub.id, sub.name, sub.params);
101
+ });
102
+ });
103
+ return sdk;
104
+ }
105
+ /**
106
+ * Same as `DDPSDK.create`, but also connects to the server and waits for the connection to be established
107
+ * @param url - The URL of the server to connect to
108
+ * @param retryOptions - The options for the retry strategy of the connection
109
+ * @param retryOptions.retryCount - The number of times to retry the connection
110
+ * @param retryOptions.retryTime - The time to wait between retries
111
+ * @returns A promise that resolves to the SDK interface
112
+ * @example
113
+ * ```ts
114
+ * const sdk = await DDPSDK.createAndConnect('wss://open.rocket.chat/websocket');
115
+ * ```
116
+ */
117
+ static createAndConnect(url, retryOptions = { retryCount: 1, retryTime: 100 }) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const sdk = DDPSDK.create(url, retryOptions);
120
+ yield sdk.connection.connect();
121
+ return sdk;
122
+ });
123
+ }
124
+ }
125
+ exports.DDPSDK = DDPSDK;
126
+ //# sourceMappingURL=DDPSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DDPSDK.js","sourceRoot":"","sources":["../src/DDPSDK.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { Emitter } from '@rocket.chat/emitter';
2
+ import type { ConnectedPayload, FailedPayload } from './types/connectionPayloads';
3
+ import type { MethodPayload, ResultPayload, UpdatedPayload } from './types/methodsPayloads';
4
+ import type { AddedPayload, ChangedPayload, NosubPayload, PublicationPayloads, ReadyPayload, RemovedPayload, ServerPublicationPayloads } from './types/publicationPayloads';
5
+ import type { OutgoingPayload } from './types/OutgoingPayload';
6
+ import type { IncomingPayload } from './types/IncomingPayload';
7
+ import type { DDPClient } from './types/DDPClient';
8
+ import type { RemoveListener } from './types/RemoveListener';
9
+ import type { PongPayload } from './types/heartbeatsPayloads';
10
+ export interface DDPDispatchOptions {
11
+ wait?: boolean;
12
+ }
13
+ interface MinimalDDPClientEvents {
14
+ pong: PongPayload;
15
+ connection: ConnectedPayload | FailedPayload;
16
+ message: IncomingPayload;
17
+ send: OutgoingPayload;
18
+ [x: `publication/${string}`]: NosubPayload | ReadyPayload;
19
+ [x: `nosub/${string}`]: NosubPayload;
20
+ [x: `collection/${string}`]: AddedPayload | ChangedPayload | RemovedPayload;
21
+ [x: `result/${string}`]: ResultPayload;
22
+ [x: `updated/${string}`]: UpdatedPayload;
23
+ }
24
+ /**
25
+ * This class was created to be used together with the `WebSocket` class.
26
+ * It is responsible for low-level communication with the server.
27
+ * It is responsible for sending and receiving messages.
28
+ * It does not provide any procedures for connecting or reconnecting.
29
+ * It does not provide any procedure to handle collections.
30
+ * @example
31
+ * ```ts
32
+ * const socket = new WebSocket('ws://localhost:3000/websocket');
33
+ * const ddp = new MinimalDDPClient(socket.send.bind(socket));
34
+ * ddp.on('message', (data) => {
35
+ * console.log('Received message', data);
36
+ * });
37
+ * socket.onmessage = ({ data }) => {
38
+ * ddp.handleMessage(data);
39
+ * };
40
+ * ```
41
+ */
42
+ export declare class MinimalDDPClient extends Emitter<MinimalDDPClientEvents> implements DDPClient {
43
+ readonly encode: {
44
+ (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string;
45
+ (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string;
46
+ };
47
+ readonly decode: (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any;
48
+ constructor(send?: (params: string) => void, encode?: {
49
+ (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string;
50
+ (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string;
51
+ }, decode?: (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any);
52
+ /**
53
+ * @remarks
54
+ * if the received message is a valid DDP message, it will be emitted as an event.
55
+ *
56
+ * @param payload - The incoming message as a string.
57
+ * @throws {Error} - If the message is not a string.
58
+ * @throws {Error} - If the message is not a valid JSON.
59
+ */
60
+ handleMessage(payload: string): void;
61
+ onDispatchMessage(callback: (msg: string) => void): RemoveListener;
62
+ protected dispatch(payload: OutgoingPayload): void;
63
+ call(method: string, params?: any[]): MethodPayload;
64
+ subscribe(name: string, params?: any[]): string;
65
+ subscribeWithId(id: string, name: string, params?: any[]): string;
66
+ unsubscribe(id: string): void;
67
+ connect(): void;
68
+ onPublish(name: string, callback: (payload: ServerPublicationPayloads) => void): RemoveListener;
69
+ onResult(id: string, callback: (payload: ResultPayload) => void): RemoveListener;
70
+ onUpdate(id: string, callback: (payload: UpdatedPayload) => void): RemoveListener;
71
+ onNoSub(id: string, callback: (payload: NosubPayload) => void): RemoveListener;
72
+ onCollection(name: string, callback: (payload: PublicationPayloads) => void): RemoveListener;
73
+ onConnection(callback: (payload: ConnectedPayload | FailedPayload) => void): RemoveListener;
74
+ onceMessage(callback: (payload: IncomingPayload) => void): RemoveListener;
75
+ onMessage(callback: (payload: IncomingPayload) => void): RemoveListener;
76
+ ping(id?: string): void;
77
+ private pong;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=MinimalDDPClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimalDDPClient.d.ts","sourceRoot":"","sources":["../src/MinimalDDPClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MinimalDDPClient = void 0;
4
+ const emitter_1 = require("@rocket.chat/emitter");
5
+ /**
6
+ * Creates a unique id for a DDP client.
7
+ * @returns {string} - A unique id for a DDP client.
8
+ */
9
+ const getUniqueId = (() => {
10
+ let id = 0;
11
+ return () => `rc-ddp-client-${++id}`;
12
+ })();
13
+ const SUPPORTED_DDP_VERSIONS = ['1', 'pre2', 'pre1'];
14
+ /**
15
+ * This class was created to be used together with the `WebSocket` class.
16
+ * It is responsible for low-level communication with the server.
17
+ * It is responsible for sending and receiving messages.
18
+ * It does not provide any procedures for connecting or reconnecting.
19
+ * It does not provide any procedure to handle collections.
20
+ * @example
21
+ * ```ts
22
+ * const socket = new WebSocket('ws://localhost:3000/websocket');
23
+ * const ddp = new MinimalDDPClient(socket.send.bind(socket));
24
+ * ddp.on('message', (data) => {
25
+ * console.log('Received message', data);
26
+ * });
27
+ * socket.onmessage = ({ data }) => {
28
+ * ddp.handleMessage(data);
29
+ * };
30
+ * ```
31
+ */
32
+ class MinimalDDPClient extends emitter_1.Emitter {
33
+ constructor(send, encode = JSON.stringify, decode = JSON.parse) {
34
+ super();
35
+ this.encode = encode;
36
+ this.decode = decode;
37
+ if (send) {
38
+ this.onDispatchMessage(send);
39
+ }
40
+ }
41
+ /**
42
+ * @remarks
43
+ * if the received message is a valid DDP message, it will be emitted as an event.
44
+ *
45
+ * @param payload - The incoming message as a string.
46
+ * @throws {Error} - If the message is not a string.
47
+ * @throws {Error} - If the message is not a valid JSON.
48
+ */
49
+ handleMessage(payload) {
50
+ const data = this.decode(payload);
51
+ Object.freeze(data);
52
+ switch (data.msg) {
53
+ case 'ping':
54
+ this.pong(data.id);
55
+ break;
56
+ case 'pong':
57
+ this.emit('pong', data);
58
+ break;
59
+ // Streamer related messages
60
+ case 'nosub':
61
+ this.emit(`publication/${data.id}`, data);
62
+ this.emit(`nosub/${data.id}`, data);
63
+ break;
64
+ case 'ready':
65
+ data.subs.forEach((id) => {
66
+ // this.emit(`publication/${id}`, { msg: 'ready', id });
67
+ this.emit(`publication/${id}`, { msg: 'ready', subs: [id] });
68
+ });
69
+ break;
70
+ case 'added':
71
+ case 'changed':
72
+ case 'removed':
73
+ this.emit(`collection/${data.collection}`, data);
74
+ break;
75
+ // DDP/RCP related messages
76
+ case 'result':
77
+ this.emit(`result/${data.id}`, data);
78
+ break;
79
+ case 'updated':
80
+ data.methods.forEach((id) => {
81
+ this.emit(`updated/${id}`, data);
82
+ });
83
+ break;
84
+ case 'connected':
85
+ case 'failed':
86
+ this.emit('connection', data);
87
+ break;
88
+ }
89
+ this.emit('message', data);
90
+ }
91
+ onDispatchMessage(callback) {
92
+ return this.on('send', (payload) => {
93
+ callback(this.encode(payload));
94
+ });
95
+ }
96
+ dispatch(payload) {
97
+ this.emit('send', payload);
98
+ }
99
+ call(method, params = []) {
100
+ const id = getUniqueId();
101
+ const payload = {
102
+ msg: 'method',
103
+ method,
104
+ params,
105
+ id,
106
+ };
107
+ return payload;
108
+ }
109
+ subscribe(name, params) {
110
+ const id = getUniqueId();
111
+ return this.subscribeWithId(id, name, params);
112
+ }
113
+ subscribeWithId(id, name, params) {
114
+ const payload = {
115
+ msg: 'sub',
116
+ id,
117
+ name,
118
+ params,
119
+ };
120
+ this.dispatch(payload);
121
+ return id;
122
+ }
123
+ unsubscribe(id) {
124
+ const payload = {
125
+ msg: 'unsub',
126
+ id,
127
+ };
128
+ this.dispatch(payload);
129
+ }
130
+ connect() {
131
+ const payload = {
132
+ msg: 'connect',
133
+ version: '1',
134
+ support: SUPPORTED_DDP_VERSIONS,
135
+ };
136
+ this.dispatch(payload);
137
+ }
138
+ onPublish(name, callback) {
139
+ return this.once(`publication/${name}`, callback);
140
+ }
141
+ onResult(id, callback) {
142
+ return this.once(`result/${id}`, callback);
143
+ }
144
+ onUpdate(id, callback) {
145
+ return this.on(`updated/${id}`, callback);
146
+ }
147
+ onNoSub(id, callback) {
148
+ return this.once(`nosub/${id}`, callback);
149
+ }
150
+ onCollection(name, callback) {
151
+ return this.on(`collection/${name}`, callback);
152
+ }
153
+ onConnection(callback) {
154
+ return this.once('connection', callback);
155
+ }
156
+ onceMessage(callback) {
157
+ return this.once('message', callback);
158
+ }
159
+ onMessage(callback) {
160
+ return this.on('message', callback);
161
+ }
162
+ ping(id) {
163
+ this.dispatch(Object.assign({ msg: 'ping' }, (id && { id })));
164
+ }
165
+ pong(id) {
166
+ this.dispatch(Object.assign({ msg: 'pong' }, (id && { id })));
167
+ }
168
+ }
169
+ exports.MinimalDDPClient = MinimalDDPClient;
170
+ //# sourceMappingURL=MinimalDDPClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimalDDPClient.js","sourceRoot":"","sources":["../src/MinimalDDPClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Emitter } from '@rocket.chat/emitter';
2
+ import type { DDPClient } from './types/DDPClient';
3
+ import type { Connection } from './Connection';
4
+ export interface TimeoutControlEvents extends Emitter<{
5
+ timeout: void;
6
+ heartbeat: void;
7
+ }> {
8
+ reset(): void;
9
+ stop(): void;
10
+ readonly timeout: number;
11
+ readonly heartbeat: number;
12
+ }
13
+ export declare class TimeoutControl extends Emitter<{
14
+ timeout: void;
15
+ heartbeat: void;
16
+ }> implements TimeoutControlEvents {
17
+ readonly timeout: number;
18
+ readonly heartbeat: number;
19
+ private timeoutId;
20
+ private heartbeatId;
21
+ constructor(timeout?: number, heartbeat?: number);
22
+ reset(): void;
23
+ stop(): void;
24
+ static create(ddp: DDPClient, connection: Connection, timeout?: number, heartbeat?: number): TimeoutControl;
25
+ }
26
+ //# sourceMappingURL=TimeoutControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeoutControl.d.ts","sourceRoot":"","sources":["../src/TimeoutControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,oBAChB,SAAQ,OAAO,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CAChB,CAAC;IACF,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,cACZ,SAAQ,OAAO,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CAChB,CACD,YAAW,oBAAoB;IAMnB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAW,QAAQ,CAAC,SAAS,EAAE,MAAM;IAJzE,OAAO,CAAC,SAAS,CAA4C;IAE7D,OAAO,CAAC,WAAW,CAA4C;gBAE1C,OAAO,GAAE,MAAe,EAAW,SAAS,GAAE,MAAoB;IAQvF,KAAK;IAWL,IAAI;IASJ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc;CA2B3G"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeoutControl = void 0;
4
+ const emitter_1 = require("@rocket.chat/emitter");
5
+ class TimeoutControl extends emitter_1.Emitter {
6
+ constructor(timeout = 60000, heartbeat = timeout / 2) {
7
+ super();
8
+ this.timeout = timeout;
9
+ this.heartbeat = heartbeat;
10
+ /* istanbul ignore next */
11
+ if (this.heartbeat >= this.timeout) {
12
+ throw new Error('Heartbeat must be less than timeout');
13
+ }
14
+ }
15
+ reset() {
16
+ if (this.timeoutId) {
17
+ clearTimeout(this.timeoutId);
18
+ }
19
+ if (this.heartbeatId) {
20
+ clearTimeout(this.heartbeatId);
21
+ }
22
+ this.timeoutId = setTimeout(() => this.emit('timeout'), this.timeout);
23
+ this.heartbeatId = setTimeout(() => this.emit('heartbeat'), this.heartbeat);
24
+ }
25
+ stop() {
26
+ if (this.timeoutId) {
27
+ clearTimeout(this.timeoutId);
28
+ }
29
+ if (this.heartbeatId) {
30
+ clearTimeout(this.heartbeatId);
31
+ }
32
+ }
33
+ static create(ddp, connection, timeout, heartbeat) {
34
+ const timeoutControl = new TimeoutControl(timeout, heartbeat);
35
+ timeoutControl.on('heartbeat', () => {
36
+ ddp.ping();
37
+ });
38
+ timeoutControl.on('timeout', () => {
39
+ connection.close();
40
+ });
41
+ ddp.onMessage(() => timeoutControl.reset());
42
+ connection.on('close', () => {
43
+ timeoutControl.stop();
44
+ });
45
+ connection.on('disconnected', () => {
46
+ timeoutControl.stop();
47
+ });
48
+ connection.on('connected', () => {
49
+ timeoutControl.reset();
50
+ });
51
+ return timeoutControl;
52
+ }
53
+ }
54
+ exports.TimeoutControl = TimeoutControl;
55
+ //# sourceMappingURL=TimeoutControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeoutControl.js","sourceRoot":"","sources":["../src/TimeoutControl.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAgB/C,MAAa,cACZ,SAAQ,iBAGN;IAOF,YAAqB,UAAkB,KAAM,EAAW,YAAoB,OAAO,GAAG,CAAC;QACtF,KAAK,EAAE,CAAC;QADY,YAAO,GAAP,OAAO,CAAiB;QAAW,cAAS,GAAT,SAAS,CAAsB;QAEtF,0BAA0B;QAC1B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACvD;IACF,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI;QACH,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/B;IACF,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAc,EAAE,UAAsB,EAAE,OAAgB,EAAE,SAAkB;QACzF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE9D,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YACnC,GAAG,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACjC,UAAU,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,cAAc,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAClC,cAAc,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC/B,cAAc,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IACvB,CAAC;CACD;AAlED,wCAkEC"}
@@ -0,0 +1,4 @@
1
+ export * from './DDPSDK';
2
+ export * from './legacy/RocketchatSDKLegacy';
3
+ export * from './livechat/LivechatClientImpl';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DDPSDK"), exports);
18
+ __exportStar(require("./legacy/RocketchatSDKLegacy"), exports);
19
+ __exportStar(require("./livechat/LivechatClientImpl"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+DAA6C;AAC7C,gEAA8C"}
@@ -0,0 +1,107 @@
1
+ import type { IMessage, Serialized } from '@rocket.chat/core-typings';
2
+ import type { OperationParams, OperationResult } from '@rocket.chat/rest-typings';
3
+ import { DDPSDK } from '../DDPSDK';
4
+ import type { APILegacy, DPPLegacy, RocketchatSdkLegacyEventsKeys, RocketchatSdkLegacyEventsValues } from './types/SDKLegacy';
5
+ import type { DDPDispatchOptions } from '../types/DDPClient';
6
+ import type { ClientStream } from '../types/ClientStream';
7
+ import type { ServerMethodReturn, ServerMethods } from '../types/methods';
8
+ import type { StreamNames, StreamKeys, StreamerCallbackArgs } from '../types/streams';
9
+ declare module '../ClientStream' {
10
+ interface ClientStream {
11
+ callAsync<MethodName extends keyof ServerMethods>(methodName: MethodName, ...params: Parameters<ServerMethods[MethodName]>): Promise<ServerMethodReturn<MethodName>>;
12
+ callAsyncWithOptions<MethodName extends keyof ServerMethods>(methodName: MethodName, options: DDPDispatchOptions, ...params: Parameters<ServerMethods[MethodName]>): Promise<ServerMethodReturn<MethodName>>;
13
+ }
14
+ }
15
+ declare module '../types/SDK' {
16
+ interface SDK {
17
+ stream<N extends StreamNames, K extends StreamKeys<N>>(streamName: N, key: K, callback: (...args: StreamerCallbackArgs<N, K>) => void): ReturnType<ClientStream['subscribe']>;
18
+ }
19
+ }
20
+ interface RocketchatSDKLegacy extends APILegacy, DPPLegacy {
21
+ }
22
+ export declare class RocketchatSdkLegacyImpl extends DDPSDK implements RocketchatSDKLegacy {
23
+ private ev;
24
+ get url(): string;
25
+ get users(): {
26
+ all(fields?: {
27
+ name: 1;
28
+ username: 1;
29
+ status: 1;
30
+ type: 1;
31
+ }): Promise<Serialized<OperationResult<'GET', '/v1/users.list'>>>;
32
+ allNames(): Promise<Serialized<OperationResult<'GET', '/v1/users.list'>>>;
33
+ allIDs(): Promise<Serialized<OperationResult<'GET', '/v1/users.list'>>>;
34
+ online(fields?: {
35
+ name: 1;
36
+ username: 1;
37
+ status: 1;
38
+ type: 1;
39
+ }): Promise<Serialized<OperationResult<'GET', '/v1/users.list'>>>;
40
+ onlineNames(): Promise<Serialized<OperationResult<'GET', '/v1/users.list'>>>;
41
+ onlineIds(): Promise<Serialized<OperationResult<'GET', '/v1/users.list'>>>;
42
+ info(username: string): Promise<Serialized<OperationResult<'GET', '/v1/users.info'>>>;
43
+ };
44
+ get rooms(): {
45
+ info: (args: {
46
+ roomId: string;
47
+ } | {
48
+ roomName: string;
49
+ }) => Promise<Serialized<OperationResult<'GET', '/v1/rooms.info'>>>;
50
+ join: (rid: string) => Promise<Serialized<OperationResult<'POST', '/v1/channels.join'>>>;
51
+ load: (rid: string, lastUpdate: Date) => Promise<Serialized<OperationResult<'GET', '/v1/chat.syncMessages'>>>;
52
+ leave: (rid: string) => Promise<Serialized<OperationResult<'POST', '/v1/channels.leave'>>>;
53
+ };
54
+ joinRoom(args: {
55
+ rid: string;
56
+ }): Promise<Serialized<OperationResult<'POST', '/v1/channels.join'>>>;
57
+ loadHistory(rid: string, lastUpdate: Date): Promise<Serialized<OperationResult<'GET', '/v1/chat.syncMessages'>>>;
58
+ leaveRoom(rid: string): Promise<Serialized<OperationResult<'POST', '/v1/channels.leave'>>>;
59
+ get dm(): {
60
+ create(username: string): Promise<Serialized<OperationResult<'POST', '/v1/im.create'>>>;
61
+ };
62
+ channelInfo(args: {
63
+ roomName: string;
64
+ } | {
65
+ roomId: string;
66
+ }): Promise<Serialized<OperationResult<'GET', '/v1/channels.info'>>>;
67
+ privateInfo(args: {
68
+ roomName: string;
69
+ } | {
70
+ roomId: string;
71
+ }): Promise<Serialized<OperationResult<'GET', '/v1/groups.info'>>>;
72
+ editMessage(args: OperationParams<'POST', '/v1/chat.update'>): Promise<Serialized<OperationResult<'POST', '/v1/chat.update'>>>;
73
+ setReaction(emoji: string, messageId: string): Promise<Serialized<OperationResult<'POST', '/v1/chat.react'>>>;
74
+ createDirectMessage(username: string): Promise<Serialized<OperationResult<'POST', '/v1/im.create'>>>;
75
+ sendMessage(message: IMessage | string, rid: string): Promise<Serialized<OperationResult<'POST', '/v1/chat.sendMessage'>>>;
76
+ resume({ token }: {
77
+ token: string;
78
+ }): Promise<unknown>;
79
+ login(credentials: {
80
+ username: string;
81
+ password: string;
82
+ }): Promise<unknown>;
83
+ onMessage(cb: (data: any) => void): import("@rocket.chat/emitter").OffCallbackHandler;
84
+ methodCall(method: string, ...args: any[]): Promise<any> & {
85
+ id: string;
86
+ };
87
+ subscribe(topic: string, ...args: any[]): Promise<void>;
88
+ subscribeRoom(rid: string): Promise<unknown>;
89
+ subscribeNotifyAll(): Promise<any>;
90
+ subscribeLoggedNotify(): Promise<any>;
91
+ subscribeNotifyUser: () => Promise<any>;
92
+ onStreamData<E extends RocketchatSdkLegacyEventsKeys>(event: E, cb: (...data: RocketchatSdkLegacyEventsValues<E>) => void): () => void;
93
+ disconnect(): Promise<unknown>;
94
+ connect(_options: {
95
+ useSsl: boolean;
96
+ host: string;
97
+ port: number;
98
+ }): Promise<boolean>;
99
+ unsubscribe(subscription: string): Promise<unknown>;
100
+ unsubscribeAll(): Promise<unknown>;
101
+ static create(url: string, retryOptions?: {
102
+ retryCount: number;
103
+ retryTime: number;
104
+ }): RocketchatSdkLegacyImpl;
105
+ }
106
+ export {};
107
+ //# sourceMappingURL=RocketchatSDKLegacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RocketchatSDKLegacy.d.ts","sourceRoot":"","sources":["../../src/legacy/RocketchatSDKLegacy.ts"],"names":[],"mappings":"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"}