@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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @rocket.chat/ddp-client
2
2
 
3
+ ## 0.0.2-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @rocket.chat/rest-typings@6.3.0-rc.1
8
+ - @rocket.chat/api-client@0.1.0-rc.1
9
+
3
10
  ## 0.0.2-rc.0
4
11
 
5
12
  ### Patch Changes
@@ -0,0 +1,27 @@
1
+ import { Emitter } from '@rocket.chat/emitter';
2
+ import type { DDPClient } from './types/DDPClient';
3
+ import type { PublicationPayloads } from './types/publicationPayloads';
4
+ import type { DDPDispatchOptions } from './MinimalDDPClient';
5
+ import { DDPDispatcher } from './DDPDispatcher';
6
+ import type { Subscription } from './types/Subscription';
7
+ import type { ClientStream } from './types/ClientStream';
8
+ export declare class ClientStreamImpl extends Emitter implements ClientStream {
9
+ private ddp;
10
+ readonly dispatcher: DDPDispatcher;
11
+ subscriptions: Map<string, Subscription>;
12
+ constructor(ddp: DDPClient, dispatcher?: DDPDispatcher);
13
+ private apply;
14
+ call(method: string, ...params: any[]): string;
15
+ callWithOptions(method: string, options: DDPDispatchOptions, ...params: any[]): string;
16
+ callAsync(method: string, ...params: any[]): Promise<any> & {
17
+ id: string;
18
+ };
19
+ callAsyncWithOptions(method: string, options: DDPDispatchOptions, ...params: any[]): Promise<any> & {
20
+ id: string;
21
+ };
22
+ subscribe(name: string, ...params: any[]): Subscription;
23
+ unsubscribe(id: string): Promise<any>;
24
+ connect(): Promise<any>;
25
+ onCollection(id: string, callback: (data: PublicationPayloads) => void): import("./types/RemoveListener").RemoveListener;
26
+ }
27
+ //# sourceMappingURL=ClientStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientStream.d.ts","sourceRoot":"","sources":["../src/ClientStream.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,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,OAAQ,YAAW,YAAY;IAGxD,OAAO,CAAC,GAAG;IAAa,QAAQ,CAAC,UAAU,EAAE,aAAa;IAFtE,aAAa,4BAAmC;gBAE5B,GAAG,EAAE,SAAS,EAAW,UAAU,GAAE,aAAmC;IAI5F,OAAO,CAAC,KAAK;IAyBb,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM;IAK9C,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM;IAetF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;;;IAI1C,oBAAoB,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,GAAG,MAAM,EAAE,GAAG,EAAE,GACd,OAAO,CAAC,GAAG,CAAC,GAAG;QACjB,EAAE,EAAE,MAAM,CAAC;KACX;IAsBD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IA6DxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAcrC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAUvB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI;CAGtE"}
@@ -0,0 +1,154 @@
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.ClientStreamImpl = void 0;
13
+ const emitter_1 = require("@rocket.chat/emitter");
14
+ const DDPDispatcher_1 = require("./DDPDispatcher");
15
+ class ClientStreamImpl extends emitter_1.Emitter {
16
+ constructor(ddp, dispatcher = new DDPDispatcher_1.DDPDispatcher()) {
17
+ super();
18
+ this.ddp = ddp;
19
+ this.dispatcher = dispatcher;
20
+ this.subscriptions = new Map();
21
+ }
22
+ apply({ payload: ddpCallPayload, options, callback, }) {
23
+ this.dispatcher.dispatch(ddpCallPayload, options);
24
+ this.ddp.onResult(ddpCallPayload.id, (payload) => {
25
+ this.dispatcher.removeItem(ddpCallPayload);
26
+ if (typeof callback === 'function') {
27
+ if ('error' in payload) {
28
+ callback(payload.error);
29
+ }
30
+ else {
31
+ callback(null, payload.result);
32
+ }
33
+ }
34
+ });
35
+ return ddpCallPayload.id;
36
+ }
37
+ call(method, ...params) {
38
+ // get the last argument
39
+ return this.callWithOptions(method, {}, ...params);
40
+ }
41
+ callWithOptions(method, options, ...params) {
42
+ // get the last argument
43
+ const callback = params.pop();
44
+ // if it's not a function, then push it back
45
+ if (typeof callback !== 'function') {
46
+ params.push(callback);
47
+ }
48
+ const payload = this.ddp.call(method, params);
49
+ this.apply({ payload, callback, options });
50
+ return payload.id;
51
+ }
52
+ callAsync(method, ...params) {
53
+ return this.callAsyncWithOptions(method, {}, ...params);
54
+ }
55
+ callAsyncWithOptions(method, options, ...params) {
56
+ const payload = this.ddp.call(method, params);
57
+ return Object.assign(new Promise((resolve, reject) => {
58
+ this.apply({
59
+ payload,
60
+ options,
61
+ callback: (error, result) => {
62
+ if (error) {
63
+ reject(error);
64
+ }
65
+ else {
66
+ resolve(result);
67
+ }
68
+ },
69
+ });
70
+ }), {
71
+ id: payload.id,
72
+ });
73
+ }
74
+ subscribe(name, ...params) {
75
+ const id = this.ddp.subscribe(name, params);
76
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
77
+ const self = this;
78
+ const s = self.ddp.onPublish(id, (payload) => {
79
+ if ('error' in payload) {
80
+ result.error = payload.error;
81
+ this.subscriptions.delete(id);
82
+ return;
83
+ }
84
+ result.isReady = true;
85
+ this.subscriptions.set(id, Object.assign(Object.assign({}, result), { isReady: true }));
86
+ });
87
+ const stop = () => {
88
+ s();
89
+ self.unsubscribe(id);
90
+ };
91
+ const result = {
92
+ id,
93
+ name,
94
+ params,
95
+ ready() {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const subscription = self.subscriptions.get(id);
98
+ if (!subscription) {
99
+ return Promise.reject(result.error);
100
+ }
101
+ if (subscription.isReady) {
102
+ return Promise.resolve();
103
+ }
104
+ return new Promise((resolve, reject) => {
105
+ this.onChange((payload) => {
106
+ if ('error' in payload) {
107
+ reject(payload.error);
108
+ return;
109
+ }
110
+ resolve();
111
+ });
112
+ });
113
+ });
114
+ },
115
+ isReady: false,
116
+ onChange: (cb) => {
117
+ self.ddp.onPublish(id, cb);
118
+ },
119
+ stop,
120
+ };
121
+ this.subscriptions.set(id, result);
122
+ return result;
123
+ }
124
+ unsubscribe(id) {
125
+ return new Promise((resolve, reject) => {
126
+ this.subscriptions.delete(id);
127
+ this.ddp.unsubscribe(id);
128
+ this.ddp.onNoSub(id, (payload) => {
129
+ if ('error' in payload) {
130
+ reject(payload.error);
131
+ }
132
+ else {
133
+ resolve(payload);
134
+ }
135
+ });
136
+ });
137
+ }
138
+ connect() {
139
+ this.ddp.connect();
140
+ return new Promise((resolve, reject) => {
141
+ this.ddp.onConnection((data) => {
142
+ if (data.msg === 'failed')
143
+ reject(data);
144
+ else
145
+ resolve(data);
146
+ });
147
+ });
148
+ }
149
+ onCollection(id, callback) {
150
+ return this.ddp.onCollection(id, callback);
151
+ }
152
+ }
153
+ exports.ClientStreamImpl = ClientStreamImpl;
154
+ //# sourceMappingURL=ClientStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientStream.js","sourceRoot":"","sources":["../src/ClientStream.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA+C;AAK/C,mDAAgD;AAKhD,MAAa,gBAAiB,SAAQ,iBAAO;IAG5C,YAAoB,GAAc,EAAW,aAA4B,IAAI,6BAAa,EAAE;QAC3F,KAAK,EAAE,CAAC;QADW,QAAG,GAAH,GAAG,CAAW;QAAW,eAAU,GAAV,UAAU,CAAqC;QAF5F,kBAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;IAIhD,CAAC;IAEO,KAAK,CAAC,EACb,OAAO,EAAE,cAAc,EACvB,OAAO,EACP,QAAQ,GAKR;QACA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBACnC,IAAI,OAAO,IAAI,OAAO,EAAE;oBACvB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACxB;qBAAM;oBACN,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;iBAC/B;aACD;QACF,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,GAAG,MAAa;QACpC,wBAAwB;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,OAA2B,EAAE,GAAG,MAAa;QAC5E,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAC9B,4CAA4C;QAC5C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACtB;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAE3C,OAAO,OAAO,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,GAAG,MAAa;QACzC,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,oBAAoB,CACnB,MAAc,EACd,OAA2B,EAC3B,GAAG,MAAa;QAIhB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CACnB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC;gBACV,OAAO;gBACP,OAAO;gBACP,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;oBAC3B,IAAI,KAAK,EAAE;wBACV,MAAM,CAAC,KAAK,CAAC,CAAC;qBACd;yBAAM;wBACN,OAAO,CAAC,MAAM,CAAC,CAAC;qBAChB;gBACF,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,EACF;YACC,EAAE,EAAE,OAAO,CAAC,EAAE;SACd,CACD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,GAAG,MAAa;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5C,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,OAAO,IAAI,OAAO,EAAE;gBACvB,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9B,OAAO;aACP;YACD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,kCACrB,MAAM,KACT,OAAO,EAAE,IAAI,IACZ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,GAAG,EAAE;YACjB,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,MAAM,GAAiB;YAC5B,EAAE;YACF,IAAI;YACJ,MAAM;YACA,KAAK;;oBACV,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChD,IAAI,CAAC,YAAY,EAAE;wBAClB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACpC;oBAED,IAAI,YAAY,CAAC,OAAO,EAAE;wBACzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;qBACzB;oBAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;4BACzB,IAAI,OAAO,IAAI,OAAO,EAAE;gCACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gCACtB,OAAO;6BACP;4BACD,OAAO,EAAE,CAAC;wBACX,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACJ,CAAC;aAAA;YACD,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;gBAChB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI;SACJ,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEnC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,WAAW,CAAC,EAAU;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;gBAChC,IAAI,OAAO,IAAI,OAAO,EAAE;oBACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACtB;qBAAM;oBACN,OAAO,CAAC,OAAO,CAAC,CAAC;iBACjB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACN,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;oBACnC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,QAA6C;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;CACD;AA5KD,4CA4KC"}
@@ -0,0 +1,55 @@
1
+ /// <reference types="node" />
2
+ import { Emitter } from '@rocket.chat/emitter';
3
+ import type { DDPClient } from './types/DDPClient';
4
+ type RetryOptions = {
5
+ retryCount: number;
6
+ retryTimer?: NodeJS.Timeout;
7
+ retryTime: number;
8
+ };
9
+ type ConnectionStatus = 'idle' | 'connecting' | 'connected' | 'failed' | 'closed' | 'disconnected' | 'reconnecting';
10
+ export interface Connection extends Emitter<{
11
+ connection: ConnectionStatus;
12
+ connecting: void;
13
+ connected: string;
14
+ disconnected: void;
15
+ reconnecting: void;
16
+ close: void;
17
+ }> {
18
+ url: string;
19
+ ssl: boolean;
20
+ session?: string;
21
+ status: ConnectionStatus;
22
+ connect(): Promise<boolean>;
23
+ reconnect(): Promise<boolean>;
24
+ close(): void;
25
+ }
26
+ interface WebSocketConstructor {
27
+ new (url: string | URL, protocols?: string | string[]): WebSocket;
28
+ }
29
+ export declare class ConnectionImpl extends Emitter<{
30
+ connection: ConnectionStatus;
31
+ connecting: void;
32
+ connected: string;
33
+ disconnected: void;
34
+ reconnecting: void;
35
+ close: void;
36
+ }> implements Connection {
37
+ private WS;
38
+ private client;
39
+ readonly retryOptions: RetryOptions;
40
+ ssl: boolean;
41
+ url: string;
42
+ session?: string;
43
+ status: ConnectionStatus;
44
+ ws: WebSocket | undefined;
45
+ retryCount: number;
46
+ queue: Set<string>;
47
+ constructor(url: string, WS: WebSocketConstructor, client: DDPClient, retryOptions?: RetryOptions);
48
+ private emitStatus;
49
+ reconnect(): Promise<boolean>;
50
+ connect(): Promise<boolean>;
51
+ close(): void;
52
+ static create(url: string, WebSocketImpl: WebSocketConstructor, client: DDPClient, retryOptions?: RetryOptions): ConnectionImpl;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=Connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../src/Connection.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAgBnD,KAAK,YAAY,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AAEpH,MAAM,WAAW,UAChB,SAAQ,OAAO,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,YAAY,EAAE,IAAI,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACZ,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IAEb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,gBAAgB,CAAC;IAEzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B,KAAK,IAAI,IAAI,CAAC;CACd;AAED,UAAU,oBAAoB;IAC7B,KAAK,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CAClE;AAED,qBAAa,cACZ,SAAQ,OAAO,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,YAAY,EAAE,IAAI,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACZ,CACD,YAAW,UAAU;IAkBpB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IACd,QAAQ,CAAC,YAAY,EAAE,YAAY;IAlBpC,GAAG,EAAE,OAAO,CAAC;IAEb,GAAG,EAAE,MAAM,CAAC;IAEZ,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,gBAAgB,CAAU;IAElC,EAAE,EAAE,SAAS,GAAG,SAAS,CAAC;IAE1B,UAAU,SAAK;IAER,KAAK,cAAqB;gBAGhC,GAAG,EAAE,MAAM,EACH,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,SAAS,EAChB,YAAY,GAAE,YAAiD;IAwBzE,OAAO,CAAC,UAAU;IAIlB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAc7B,OAAO;IAkFP,KAAK;IAML,MAAM,CAAC,MAAM,CACZ,GAAG,EAAE,MAAM,EAEX,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,SAAS,EACjB,YAAY,GAAE,YAAiD,GAC7D,cAAc;CAGjB"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionImpl = void 0;
4
+ const emitter_1 = require("@rocket.chat/emitter");
5
+ class ConnectionImpl extends emitter_1.Emitter {
6
+ constructor(url, WS, client, retryOptions = { retryCount: 0, retryTime: 1000 }) {
7
+ super();
8
+ this.WS = WS;
9
+ this.client = client;
10
+ this.retryOptions = retryOptions;
11
+ this.status = 'idle';
12
+ this.retryCount = 0;
13
+ this.queue = new Set();
14
+ this.ssl = url.startsWith('https') || url.startsWith('wss');
15
+ this.url = url.replace(/^https?:\/\//, '').replace(/^wss?:\/\//, '');
16
+ this.client.onDispatchMessage((message) => {
17
+ if (this.ws && this.ws.readyState === this.ws.OPEN) {
18
+ this.ws.send(message);
19
+ return;
20
+ }
21
+ this.queue.add(message);
22
+ });
23
+ this.on('connected', () => {
24
+ this.queue.forEach((message) => {
25
+ var _a;
26
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(message);
27
+ });
28
+ this.queue.clear();
29
+ });
30
+ }
31
+ emitStatus() {
32
+ this.emit('connection', this.status);
33
+ }
34
+ reconnect() {
35
+ if (this.status === 'connecting' || this.status === 'connected') {
36
+ return Promise.reject(new Error('Connection in progress'));
37
+ }
38
+ clearTimeout(this.retryOptions.retryTimer);
39
+ this.emit('reconnecting');
40
+ this.emit('connection', 'reconnecting');
41
+ return this.connect();
42
+ }
43
+ connect() {
44
+ if (this.status === 'connecting' || this.status === 'connected') {
45
+ return Promise.reject(new Error('Connection in progress'));
46
+ }
47
+ this.status = 'connecting';
48
+ this.emit('connecting');
49
+ this.emitStatus();
50
+ const ws = new this.WS(`${this.ssl ? 'wss://' : 'ws://'}${this.url}/websocket`);
51
+ this.ws = ws;
52
+ return new Promise((resolve, reject) => {
53
+ ws.onopen = () => {
54
+ ws.onmessage = (event) => {
55
+ this.client.handleMessage(String(event.data));
56
+ };
57
+ // The server may send an initial message which is a JSON object lacking a msg key. If so, the client should ignore it. The client does not have to wait for this message.
58
+ // (The message was once used to help implement Meteor's hot code reload feature; it is now only included to force old clients to update).
59
+ // this.client.onceMessage((data) => {
60
+ // if (data.msg === undefined) {
61
+ // return;
62
+ // }
63
+ // if (data.msg === 'failed') {
64
+ // return;
65
+ // }
66
+ // if (data.msg === 'connected') {
67
+ // return;
68
+ // }
69
+ // this.close();
70
+ // });
71
+ // The client sends a connect message.
72
+ this.client.connect();
73
+ // If the server is willing to speak the version of the protocol specified in the connect message, it sends back a connected message.
74
+ // Otherwise the server sends back a failed message with a version of DDP it would rather speak, informed by the connect message's support field, and closes the underlying transport.
75
+ this.client.onConnection((payload) => {
76
+ if (payload.msg === 'connected') {
77
+ this.status = 'connected';
78
+ this.emitStatus();
79
+ this.emit('connected', payload.session);
80
+ this.session = payload.session;
81
+ return resolve(true);
82
+ }
83
+ if (payload.msg === 'failed') {
84
+ this.status = 'failed';
85
+ this.emitStatus();
86
+ this.emit('disconnected');
87
+ return reject(payload.version);
88
+ }
89
+ /* istanbul ignore next */
90
+ reject(new Error('Unknown message type'));
91
+ });
92
+ };
93
+ ws.onclose = () => {
94
+ clearTimeout(this.retryOptions.retryTimer);
95
+ if (this.status === 'closed') {
96
+ return;
97
+ }
98
+ this.status = 'disconnected';
99
+ this.emitStatus();
100
+ this.emit('disconnected');
101
+ if (this.retryCount >= this.retryOptions.retryCount) {
102
+ return;
103
+ }
104
+ this.retryCount += 1;
105
+ this.retryOptions.retryTimer = setTimeout(() => {
106
+ this.reconnect();
107
+ }, this.retryOptions.retryTime * this.retryCount);
108
+ };
109
+ });
110
+ }
111
+ close() {
112
+ var _a;
113
+ this.status = 'closed';
114
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
115
+ this.emitStatus();
116
+ }
117
+ static create(url,
118
+ // eslint-disable-next-line @typescript-eslint/naming-convention
119
+ WebSocketImpl, client, retryOptions = { retryCount: 0, retryTime: 1000 }) {
120
+ return new ConnectionImpl(url, WebSocketImpl, client, retryOptions);
121
+ }
122
+ }
123
+ exports.ConnectionImpl = ConnectionImpl;
124
+ //# sourceMappingURL=Connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../src/Connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A queue of ddp blocking methods that are waiting to be sent to the server.
3
+ */
4
+ import type { MethodPayload } from './types/methodsPayloads';
5
+ import { MinimalDDPClient } from './MinimalDDPClient';
6
+ type Blocks = {
7
+ wait: boolean;
8
+ items: MethodPayload[];
9
+ };
10
+ type Queue = Blocks[];
11
+ export declare class DDPDispatcher extends MinimalDDPClient {
12
+ queue: Queue;
13
+ dispatch(msg: MethodPayload, options?: {
14
+ wait?: boolean;
15
+ }): void;
16
+ wait(block: MethodPayload): void;
17
+ private pushItem;
18
+ private tail;
19
+ private sendOutstandingBlocks;
20
+ removeItem(item: MethodPayload): void;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=DDPDispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DDPDispatcher.d.ts","sourceRoot":"","sources":["../src/DDPDispatcher.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,KAAK,MAAM,GAAG;IACb,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,KAAK,GAAG,MAAM,EAAE,CAAC;AAEtB,qBAAa,aAAc,SAAQ,gBAAgB;IAClD,KAAK,EAAE,KAAK,CAAM;IAElB,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;IAQzD,IAAI,CAAC,KAAK,EAAE,aAAa;IAWzB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,qBAAqB;IAmB7B,UAAU,CAAC,IAAI,EAAE,aAAa;CAsB9B"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * A queue of ddp blocking methods that are waiting to be sent to the server.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DDPDispatcher = void 0;
7
+ const MinimalDDPClient_1 = require("./MinimalDDPClient");
8
+ class DDPDispatcher extends MinimalDDPClient_1.MinimalDDPClient {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.queue = [];
12
+ }
13
+ dispatch(msg, options) {
14
+ if (options === null || options === void 0 ? void 0 : options.wait) {
15
+ this.wait(msg);
16
+ return;
17
+ }
18
+ this.pushItem(msg);
19
+ }
20
+ wait(block) {
21
+ this.queue.push({
22
+ wait: true,
23
+ items: [block],
24
+ });
25
+ if (this.queue.length === 1) {
26
+ this.sendOutstandingBlocks();
27
+ }
28
+ }
29
+ pushItem(item) {
30
+ const block = this.tail();
31
+ if (!block || block.wait) {
32
+ this.queue.push({
33
+ wait: false,
34
+ items: [item],
35
+ });
36
+ }
37
+ if (!block) {
38
+ this.sendOutstandingBlocks();
39
+ return;
40
+ }
41
+ if (block.wait) {
42
+ return;
43
+ }
44
+ block.items.push(item);
45
+ }
46
+ tail() {
47
+ return this.queue[this.queue.length - 1];
48
+ }
49
+ sendOutstandingBlocks() {
50
+ const block = this.queue[0];
51
+ if (!block) {
52
+ return;
53
+ }
54
+ block.items.forEach((payload) => {
55
+ this.emit('send', payload);
56
+ });
57
+ if (block.wait) {
58
+ return;
59
+ }
60
+ this.queue.shift();
61
+ this.sendOutstandingBlocks();
62
+ }
63
+ removeItem(item) {
64
+ const block = this.queue[0];
65
+ if (!block) {
66
+ return;
67
+ // throw new Error('No block to remove item from');
68
+ }
69
+ const index = block.items.indexOf(item);
70
+ if (index === -1) {
71
+ return;
72
+ // throw new Error('Item not found in block');
73
+ }
74
+ block.items.splice(index, 1);
75
+ if (block.items.length === 0) {
76
+ this.queue.shift();
77
+ this.sendOutstandingBlocks();
78
+ }
79
+ }
80
+ }
81
+ exports.DDPDispatcher = DDPDispatcher;
82
+ //# sourceMappingURL=DDPDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DDPDispatcher.js","sourceRoot":"","sources":["../src/DDPDispatcher.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,yDAAsD;AAStD,MAAa,aAAc,SAAQ,mCAAgB;IAAnD;;QACC,UAAK,GAAU,EAAE,CAAC;IAsFnB,CAAC;IApFA,QAAQ,CAAC,GAAkB,EAAE,OAA4B;QACxD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,OAAO;SACP;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,KAAoB;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,CAAC,KAAK,CAAC;SACd,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC7B;IACF,CAAC;IAEO,QAAQ,CAAC,IAAmB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;YACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,CAAC,IAAI,CAAC;aACb,CAAC,CAAC;SACH;QACD,IAAI,CAAC,KAAK,EAAE;YACX,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,OAAO;SACP;QAED,IAAI,KAAK,CAAC,IAAI,EAAE;YACf,OAAO;SACP;QAED,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEO,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEO,qBAAqB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,CAAC,KAAK,EAAE;YACX,OAAO;SACP;QAED,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,IAAI,EAAE;YACf,OAAO;SACP;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,IAAmB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,CAAC,KAAK,EAAE;YACX,OAAO;YACP,mDAAmD;SACnD;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,OAAO;YACP,8CAA8C;SAC9C;QAED,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC7B;IACF,CAAC;CACD;AAvFD,sCAuFC"}
@@ -0,0 +1,54 @@
1
+ import { RestClient } from '@rocket.chat/api-client';
2
+ import type { ClientStream } from './types/ClientStream';
3
+ import type { Connection } from './Connection';
4
+ import { TimeoutControl } from './TimeoutControl';
5
+ import type { Account } from './types/Account';
6
+ import type { SDK } from './types/SDK';
7
+ export declare class DDPSDK implements SDK {
8
+ readonly connection: Connection;
9
+ readonly client: ClientStream;
10
+ readonly account: Account;
11
+ readonly timeoutControl: TimeoutControl;
12
+ readonly rest: RestClient;
13
+ constructor(connection: Connection, client: ClientStream, account: Account, timeoutControl: TimeoutControl, rest: RestClient);
14
+ call(method: string, ...params: unknown[]): Promise<any> & {
15
+ id: string;
16
+ };
17
+ /**
18
+ * Compounds the Objects responsible for the SDK and returns it through
19
+ * SDK interface
20
+ *
21
+ * @param url - The URL of the server to connect to
22
+ * @param retryOptions - The options for the retry strategy of the connection
23
+ * @param retryOptions.retryCount - The number of times to retry the connection
24
+ * @param retryOptions.retryTime - The time to wait between retries
25
+ * @returns The SDK interface
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const sdk = DDPSDK.create('wss://open.rocket.chat/websocket');
30
+ * sdk.connection.connect();
31
+ * ```
32
+ */
33
+ static create(url: string, retryOptions?: {
34
+ retryCount: number;
35
+ retryTime: number;
36
+ }): DDPSDK;
37
+ /**
38
+ * Same as `DDPSDK.create`, but also connects to the server and waits for the connection to be established
39
+ * @param url - The URL of the server to connect to
40
+ * @param retryOptions - The options for the retry strategy of the connection
41
+ * @param retryOptions.retryCount - The number of times to retry the connection
42
+ * @param retryOptions.retryTime - The time to wait between retries
43
+ * @returns A promise that resolves to the SDK interface
44
+ * @example
45
+ * ```ts
46
+ * const sdk = await DDPSDK.createAndConnect('wss://open.rocket.chat/websocket');
47
+ * ```
48
+ */
49
+ static createAndConnect(url: string, retryOptions?: {
50
+ retryCount: number;
51
+ retryTime: number;
52
+ }): Promise<DDPSDK>;
53
+ }
54
+ //# sourceMappingURL=DDPSDK.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DDPSDK.d.ts","sourceRoot":"","sources":["../src/DDPSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAmBvC,qBAAa,MAAO,YAAW,GAAG;IAEhC,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,MAAM,EAAE,YAAY;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,IAAI,EAAE,UAAU;gBAJhB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,UAAU;IAG1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE;;;IAmCzC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY;;;KAAoC,GAAG,MAAM;IAkCpF;;;;;;;;;;;OAWG;WAEU,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY;;;KAAoC,GAAG,OAAO,CAAC,MAAM,CAAC;CAO7G"}