node-opcua-client 2.98.0 → 2.98.2

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/dist/alarms_and_conditions/client_alarm.d.ts +49 -0
  2. package/dist/alarms_and_conditions/client_alarm.js +110 -0
  3. package/dist/alarms_and_conditions/client_alarm.js.map +1 -0
  4. package/dist/alarms_and_conditions/client_alarm_list.d.ts +25 -0
  5. package/dist/alarms_and_conditions/client_alarm_list.js +98 -0
  6. package/dist/alarms_and_conditions/client_alarm_list.js.map +1 -0
  7. package/dist/alarms_and_conditions/client_alarm_tools.d.ts +4 -0
  8. package/dist/alarms_and_conditions/client_alarm_tools.js +157 -0
  9. package/dist/alarms_and_conditions/client_alarm_tools.js.map +1 -0
  10. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.d.ts +18 -0
  11. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js +193 -0
  12. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js.map +1 -0
  13. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.d.ts +9 -0
  14. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js +73 -0
  15. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js.map +1 -0
  16. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.d.ts +3 -0
  17. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js +119 -0
  18. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js.map +1 -0
  19. package/dist/alarms_and_conditions/client_tools.d.ts +7 -0
  20. package/dist/alarms_and_conditions/client_tools.js +180 -0
  21. package/dist/alarms_and_conditions/client_tools.js.map +1 -0
  22. package/dist/client_base.d.ts +277 -0
  23. package/dist/client_base.js +15 -0
  24. package/dist/client_base.js.map +1 -0
  25. package/dist/client_monitored_item.d.ts +21 -0
  26. package/dist/client_monitored_item.js +12 -0
  27. package/dist/client_monitored_item.js.map +1 -0
  28. package/dist/client_monitored_item_base.d.ts +39 -0
  29. package/dist/client_monitored_item_base.js +3 -0
  30. package/dist/client_monitored_item_base.js.map +1 -0
  31. package/dist/client_monitored_item_group.d.ts +21 -0
  32. package/dist/client_monitored_item_group.js +14 -0
  33. package/dist/client_monitored_item_group.js.map +1 -0
  34. package/dist/client_monitored_item_toolbox.d.ts +15 -0
  35. package/dist/client_monitored_item_toolbox.js +117 -0
  36. package/dist/client_monitored_item_toolbox.js.map +1 -0
  37. package/dist/client_session.d.ts +529 -0
  38. package/dist/client_session.js +11 -0
  39. package/dist/client_session.js.map +1 -0
  40. package/dist/client_session_keepalive_manager.d.ts +34 -0
  41. package/dist/client_session_keepalive_manager.js +150 -0
  42. package/dist/client_session_keepalive_manager.js.map +1 -0
  43. package/dist/client_subscription.d.ts +241 -0
  44. package/dist/client_subscription.js +15 -0
  45. package/dist/client_subscription.js.map +1 -0
  46. package/dist/client_utils.d.ts +22 -0
  47. package/dist/client_utils.js +88 -0
  48. package/dist/client_utils.js.map +1 -0
  49. package/dist/common.d.ts +17 -0
  50. package/dist/common.js +6 -0
  51. package/dist/common.js.map +1 -0
  52. package/dist/index.d.ts +56 -0
  53. package/dist/index.js +95 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/opcua_client.d.ts +118 -0
  56. package/dist/opcua_client.js +34 -0
  57. package/dist/opcua_client.js.map +1 -0
  58. package/dist/private/client_base_impl.d.ts +160 -0
  59. package/dist/private/client_base_impl.js +1349 -0
  60. package/dist/private/client_base_impl.js.map +1 -0
  61. package/dist/private/client_monitored_item_base_impl.d.ts +3 -0
  62. package/dist/private/client_monitored_item_base_impl.js +5 -0
  63. package/dist/private/client_monitored_item_base_impl.js.map +1 -0
  64. package/dist/private/client_monitored_item_group_impl.d.ts +53 -0
  65. package/dist/private/client_monitored_item_group_impl.js +162 -0
  66. package/dist/private/client_monitored_item_group_impl.js.map +1 -0
  67. package/dist/private/client_monitored_item_impl.d.ts +93 -0
  68. package/dist/private/client_monitored_item_impl.js +305 -0
  69. package/dist/private/client_monitored_item_impl.js.map +1 -0
  70. package/dist/private/client_publish_engine.d.ts +62 -0
  71. package/dist/private/client_publish_engine.js +409 -0
  72. package/dist/private/client_publish_engine.js.map +1 -0
  73. package/dist/private/client_session_impl.d.ts +631 -0
  74. package/dist/private/client_session_impl.js +1349 -0
  75. package/dist/private/client_session_impl.js.map +1 -0
  76. package/dist/private/client_subscription_impl.d.ts +93 -0
  77. package/dist/private/client_subscription_impl.js +780 -0
  78. package/dist/private/client_subscription_impl.js.map +1 -0
  79. package/dist/private/i_private_client.d.ts +21 -0
  80. package/dist/private/i_private_client.js +3 -0
  81. package/dist/private/i_private_client.js.map +1 -0
  82. package/dist/private/opcua_client_impl.d.ts +166 -0
  83. package/dist/private/opcua_client_impl.js +1001 -0
  84. package/dist/private/opcua_client_impl.js.map +1 -0
  85. package/dist/private/performance.d.ts +1 -0
  86. package/dist/private/performance.js +19 -0
  87. package/dist/private/performance.js.map +1 -0
  88. package/dist/reconnection.d.ts +9 -0
  89. package/dist/reconnection.js +382 -0
  90. package/dist/reconnection.js.map +1 -0
  91. package/dist/tools/findservers.d.ts +20 -0
  92. package/dist/tools/findservers.js +62 -0
  93. package/dist/tools/findservers.js.map +1 -0
  94. package/dist/tools/read_history_server_capabilities.d.ts +6 -0
  95. package/dist/tools/read_history_server_capabilities.js +99 -0
  96. package/dist/tools/read_history_server_capabilities.js.map +1 -0
  97. package/dist/user_identity_info.d.ts +1 -0
  98. package/dist/user_identity_info.js +3 -0
  99. package/dist/user_identity_info.js.map +1 -0
  100. package/dist/verify.d.ts +5 -0
  101. package/dist/verify.js +135 -0
  102. package/dist/verify.js.map +1 -0
  103. package/package.json +48 -44
  104. package/.nycrc.json +0 -14
  105. package/test_helpers/create_certificates.js +0 -1
  106. package/typedoc.js +0 -20
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientMonitoredItemImpl = void 0;
4
+ /**
5
+ * @module node-opcua-client-private
6
+ */
7
+ // tslint:disable:unified-signatures
8
+ // tslint:disable:no-empty
9
+ const events_1 = require("events");
10
+ const node_opcua_assert_1 = require("node-opcua-assert");
11
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
12
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
13
+ const node_opcua_debug_1 = require("node-opcua-debug");
14
+ const node_opcua_service_filter_1 = require("node-opcua-service-filter");
15
+ const node_opcua_service_read_1 = require("node-opcua-service-read");
16
+ const node_opcua_service_subscription_1 = require("node-opcua-service-subscription");
17
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
18
+ const client_monitored_item_1 = require("../client_monitored_item");
19
+ const client_monitored_item_toolbox_1 = require("../client_monitored_item_toolbox");
20
+ const client_subscription_impl_1 = require("./client_subscription_impl");
21
+ const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
22
+ const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
23
+ const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
24
+ /**
25
+ * ClientMonitoredItem
26
+ * @class ClientMonitoredItem
27
+ * @extends ClientMonitoredItemBase
28
+ *
29
+ * event:
30
+ * "initialized"
31
+ * "err"
32
+ * "changed"
33
+ *
34
+ * note: this.monitoringMode = subscription_service.MonitoringMode.Reporting;
35
+ */
36
+ class ClientMonitoredItemImpl extends events_1.EventEmitter {
37
+ constructor(subscription, itemToMonitor, monitoringParameters, timestampsToReturn, monitoringMode = node_opcua_service_subscription_1.MonitoringMode.Reporting) {
38
+ super();
39
+ this.statusCode = node_opcua_status_code_1.StatusCodes.BadDataUnavailable;
40
+ (0, node_opcua_assert_1.assert)(subscription.constructor.name === "ClientSubscriptionImpl");
41
+ this.subscription = subscription;
42
+ this.itemToMonitor = new node_opcua_service_read_1.ReadValueId(itemToMonitor);
43
+ this.monitoringParameters = new node_opcua_service_subscription_1.MonitoringParameters(monitoringParameters);
44
+ this.monitoringMode = monitoringMode;
45
+ (0, node_opcua_assert_1.assert)(this.monitoringParameters.clientHandle === 0xffffffff, "should not have a client handle yet");
46
+ (0, node_opcua_assert_1.assert)(subscription.session, "expecting session");
47
+ timestampsToReturn = (0, node_opcua_data_value_1.coerceTimestampsToReturn)(timestampsToReturn);
48
+ (0, node_opcua_assert_1.assert)(subscription.constructor.name === "ClientSubscriptionImpl");
49
+ this.timestampsToReturn = timestampsToReturn;
50
+ }
51
+ toString() {
52
+ var _a, _b;
53
+ let ret = "";
54
+ ret += "itemToMonitor: " + this.itemToMonitor.toString() + "\n";
55
+ ret += "monitoringParameters: " + this.monitoringParameters.toString() + "\n";
56
+ ret += "timestampsToReturn: " + this.timestampsToReturn.toString() + "\n";
57
+ ret += "itemToMonitor " + this.itemToMonitor.nodeId + "\n";
58
+ ret += "statusCode " + ((_a = this.statusCode) === null || _a === void 0 ? void 0 : _a.toString()) + "\n";
59
+ ret += "result =" + ((_b = this.result) === null || _b === void 0 ? void 0 : _b.toString()) + "\n";
60
+ return ret;
61
+ }
62
+ terminate(...args) {
63
+ const done = args[0];
64
+ (0, node_opcua_assert_1.assert)(typeof done === "function");
65
+ const subscription = this.subscription;
66
+ subscription._delete_monitored_items([this], (err) => {
67
+ if (done) {
68
+ done(err);
69
+ }
70
+ });
71
+ }
72
+ modify(...args) {
73
+ if (args.length === 2) {
74
+ return this.modify(args[0], null, args[1]);
75
+ }
76
+ const parameters = args[0];
77
+ const timestampsToReturn = args[1];
78
+ const callback = args[2];
79
+ this.timestampsToReturn = timestampsToReturn || this.timestampsToReturn;
80
+ client_monitored_item_toolbox_1.ClientMonitoredItemToolbox._toolbox_modify(this.subscription, [this], parameters, this.timestampsToReturn, (err, results) => {
81
+ if (err) {
82
+ return callback(err);
83
+ }
84
+ if (!results) {
85
+ return callback(new Error("internal error"));
86
+ }
87
+ (0, node_opcua_assert_1.assert)(results.length === 1);
88
+ callback(null, results[0]);
89
+ });
90
+ }
91
+ setMonitoringMode(...args) {
92
+ const monitoringMode = args[0];
93
+ const callback = args[1];
94
+ client_monitored_item_toolbox_1.ClientMonitoredItemToolbox._toolbox_setMonitoringMode(this.subscription, [this], monitoringMode, (err, statusCodes) => {
95
+ callback(err ? err : null, statusCodes[0]);
96
+ });
97
+ }
98
+ /**
99
+ * @internal
100
+ * @param value
101
+ * @private
102
+ */
103
+ _notify_value_change(value) {
104
+ var _a;
105
+ // it is possible that the first notification arrives before the CreateMonitoredItemsRequest is fully proceed
106
+ // in this case we need to put the dataValue aside so we can send the notification changed after
107
+ // the node-opcua client had time to fully install the on("changed") event handler
108
+ if (((_a = this.statusCode) === null || _a === void 0 ? void 0 : _a.value) === node_opcua_status_code_1.StatusCodes.BadDataUnavailable.value) {
109
+ this._pendingDataValue = this._pendingDataValue || [];
110
+ this._pendingDataValue.push(value);
111
+ return;
112
+ }
113
+ /**
114
+ * Notify the observers that the MonitoredItem value has changed on the server side.
115
+ * @event changed
116
+ * @param value
117
+ */
118
+ try {
119
+ this.emit("changed", value);
120
+ }
121
+ catch (err) {
122
+ warningLog("[NODE-OPCUA-W28] Exception raised inside the event handler called by ClientMonitoredItem.on('change')", err);
123
+ warningLog(" Please verify the application using this node-opcua client");
124
+ }
125
+ }
126
+ /**
127
+ * @internal
128
+ * @param eventFields
129
+ * @private
130
+ */
131
+ _notify_event(eventFields) {
132
+ var _a;
133
+ if (((_a = this.statusCode) === null || _a === void 0 ? void 0 : _a.value) === node_opcua_status_code_1.StatusCodes.BadDataUnavailable.value) {
134
+ this._pendingEvents = this._pendingEvents || [];
135
+ this._pendingEvents.push(eventFields);
136
+ return;
137
+ }
138
+ /**
139
+ * Notify the observers that the MonitoredItem value has changed on the server side.
140
+ * @event changed
141
+ * @param value
142
+ */
143
+ try {
144
+ this.emit("changed", eventFields);
145
+ }
146
+ catch (err) {
147
+ warningLog("[NODE-OPCUA-W29] Exception raised inside the event handler called by ClientMonitoredItem.on('change')", err);
148
+ warningLog(" Please verify the application using this node-opcua client");
149
+ }
150
+ }
151
+ /**
152
+ * @internal
153
+ * @private
154
+ */
155
+ _prepare_for_monitoring() {
156
+ (0, node_opcua_assert_1.assert)(this.monitoringParameters.clientHandle === 4294967295, "should not have a client handle yet");
157
+ const subscription = this.subscription;
158
+ this.monitoringParameters.clientHandle = subscription.nextClientHandle();
159
+ (0, node_opcua_assert_1.assert)(this.monitoringParameters.clientHandle > 0 && this.monitoringParameters.clientHandle !== 4294967295);
160
+ // If attributeId is EventNotifier then monitoring parameters need a filter.
161
+ // The filter must then either be DataChangeFilter, EventFilter or AggregateFilter.
162
+ // todo can be done in another way?
163
+ // todo implement AggregateFilter
164
+ // todo support DataChangeFilter
165
+ // todo support whereClause
166
+ if (this.itemToMonitor.attributeId === node_opcua_data_model_1.AttributeIds.EventNotifier) {
167
+ //
168
+ // see OPCUA Spec 1.02 part 4 page 65 : 5.12.1.4 Filter
169
+ // see part 4 page 130: 7.16.3 EventFilter
170
+ // part 3 page 11 : 4.6 Event Model
171
+ // To monitor for Events, the attributeId element of the ReadValueId structure is the
172
+ // the id of the EventNotifierAttribute
173
+ // OPC Unified Architecture 1.02, Part 4 5.12.1.2 Sampling interval page 64:
174
+ // "A Client shall define a sampling interval of 0 if it subscribes for Events."
175
+ // toDO
176
+ // note : the EventFilter is used when monitoring Events.
177
+ this.monitoringParameters.filter = this.monitoringParameters.filter || new node_opcua_service_filter_1.EventFilter({});
178
+ const filter = this.monitoringParameters.filter;
179
+ // istanbul ignore next
180
+ if (!filter) {
181
+ return { error: "Internal Error" };
182
+ }
183
+ if (filter.schema.name !== "EventFilter") {
184
+ return {
185
+ error: "Mismatch between attributeId and filter in monitoring parameters : " +
186
+ "Got a " +
187
+ filter.schema.name +
188
+ " but a EventFilter object is required " +
189
+ "when itemToMonitor.attributeId== AttributeIds.EventNotifier"
190
+ };
191
+ }
192
+ }
193
+ else if (this.itemToMonitor.attributeId === node_opcua_data_model_1.AttributeIds.Value) {
194
+ // the DataChangeFilter and the AggregateFilter are used when monitoring Variable Values
195
+ // The Value Attribute is used when monitoring Variables. Variable values are monitored for a change
196
+ // in value or a change in their status. The filters defined in this standard (see 7.16.2) and in Part 8 are
197
+ // used to determine if the value change is large enough to cause a Notification to be generated for the
198
+ // to do : check 'DataChangeFilter' && 'AggregateFilter'
199
+ }
200
+ else {
201
+ if (this.monitoringParameters.filter) {
202
+ return {
203
+ error: "Mismatch between attributeId and filter in monitoring parameters : " +
204
+ "no filter expected when attributeId is not Value or EventNotifier"
205
+ };
206
+ }
207
+ }
208
+ return {
209
+ itemToMonitor: this.itemToMonitor,
210
+ monitoringMode: this.monitoringMode,
211
+ requestedParameters: this.monitoringParameters
212
+ };
213
+ }
214
+ /**
215
+ * @internal
216
+ * @param monitoredItemResult
217
+ * @private
218
+ */
219
+ _applyResult(monitoredItemResult) {
220
+ this.statusCode = monitoredItemResult.statusCode;
221
+ /* istanbul ignore else */
222
+ if (monitoredItemResult.statusCode.isGood()) {
223
+ this.result = monitoredItemResult;
224
+ this.monitoredItemId = monitoredItemResult.monitoredItemId;
225
+ this.monitoringParameters.samplingInterval = monitoredItemResult.revisedSamplingInterval;
226
+ this.monitoringParameters.queueSize = monitoredItemResult.revisedQueueSize;
227
+ this.filterResult = monitoredItemResult.filterResult || undefined;
228
+ }
229
+ // some PublishRequest with DataNotificationChange might have been sent by the server, before the monitored
230
+ // item has been fully initialized it is time to process now any pending notification that were put on hold.
231
+ if (this._pendingDataValue) {
232
+ const dataValues = this._pendingDataValue;
233
+ this._pendingDataValue = undefined;
234
+ setImmediate(() => {
235
+ dataValues.map((dataValue) => this._notify_value_change(dataValue));
236
+ });
237
+ }
238
+ if (this._pendingEvents) {
239
+ const events = this._pendingEvents;
240
+ this._pendingEvents = undefined;
241
+ setImmediate(() => {
242
+ events.map((event) => this._notify_event(event));
243
+ });
244
+ }
245
+ }
246
+ _before_create() {
247
+ const subscription = this.subscription;
248
+ subscription._add_monitored_item(this.monitoringParameters.clientHandle, this);
249
+ }
250
+ /**
251
+ * @internal
252
+ * @param monitoredItemResult
253
+ * @private
254
+ */
255
+ _after_create(monitoredItemResult) {
256
+ this._applyResult(monitoredItemResult);
257
+ if (this.statusCode.isGood()) {
258
+ /**
259
+ * Notify the observers that the monitored item is now fully initialized.
260
+ * @event initialized
261
+ */
262
+ this.emit("initialized");
263
+ }
264
+ else {
265
+ /**
266
+ * Notify the observers that the monitored item has failed to initialize.
267
+ * @event err
268
+ * @param statusCode {StatusCode}
269
+ */
270
+ const err = new Error(monitoredItemResult.statusCode.toString());
271
+ this._terminate_and_emit(err);
272
+ }
273
+ }
274
+ _terminate_and_emit(err) {
275
+ if (this._terminated) {
276
+ return; // already terminated
277
+ }
278
+ if (err) {
279
+ this.emit("err", err.message);
280
+ }
281
+ (0, node_opcua_assert_1.assert)(!this._terminated);
282
+ this._terminated = true;
283
+ /**
284
+ * Notify the observer that this monitored item has been terminated.
285
+ * @event terminated
286
+ */
287
+ this.emit("terminated", err);
288
+ this.removeAllListeners();
289
+ // also remove from subscription
290
+ const clientHandle = this.monitoringParameters.clientHandle;
291
+ delete this.subscription.monitoredItems[clientHandle];
292
+ }
293
+ }
294
+ exports.ClientMonitoredItemImpl = ClientMonitoredItemImpl;
295
+ // tslint:disable:no-var-requires
296
+ // tslint:disable:max-line-length
297
+ const thenify = require("thenify");
298
+ const opts = { multiArgs: false };
299
+ ClientMonitoredItemImpl.prototype.terminate = thenify.withCallback(ClientMonitoredItemImpl.prototype.terminate);
300
+ ClientMonitoredItemImpl.prototype.setMonitoringMode = thenify.withCallback(ClientMonitoredItemImpl.prototype.setMonitoringMode);
301
+ ClientMonitoredItemImpl.prototype.modify = thenify.withCallback(ClientMonitoredItemImpl.prototype.modify);
302
+ client_monitored_item_1.ClientMonitoredItem.create = (subscription, itemToMonitor, monitoringParameters, timestampsToReturn, monitoringMode = node_opcua_service_subscription_1.MonitoringMode.Reporting) => {
303
+ return (0, client_subscription_impl_1.ClientMonitoredItem_create)(subscription, itemToMonitor, monitoringParameters, timestampsToReturn, monitoringMode);
304
+ };
305
+ //# sourceMappingURL=client_monitored_item_impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client_monitored_item_impl.js","sourceRoot":"","sources":["../../source/private/client_monitored_item_impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { ClientSession, SubscriptionId } from "../client_session";
2
+ import { ClientSubscription } from "../client_subscription";
3
+ /**
4
+ * A client side implementation to deal with publish service.
5
+ *
6
+ * @class ClientSidePublishEngine
7
+ * The ClientSidePublishEngine encapsulates the mechanism to
8
+ * deal with a OPCUA Server and constantly sending PublishRequest
9
+ * The ClientSidePublishEngine also performs notification acknowledgements.
10
+ * Finally, ClientSidePublishEngine dispatch PublishResponse to the correct
11
+ * Subscription id callback
12
+ *
13
+ * @param session {ClientSession} - the client session
14
+ *
15
+ *
16
+ * @constructor
17
+ */
18
+ export declare class ClientSidePublishEngine {
19
+ static publishRequestCountInPipeline: number;
20
+ timeoutHint: number;
21
+ activeSubscriptionCount: number;
22
+ nbPendingPublishRequests: number;
23
+ nbMaxPublishRequestsAcceptedByServer: number;
24
+ isSuspended: boolean;
25
+ session: ClientSession | null;
26
+ private subscriptionAcknowledgements;
27
+ private readonly subscriptionMap;
28
+ constructor(session: ClientSession);
29
+ /**
30
+ * the number of active subscriptions managed by this publish engine.
31
+ * @property subscriptionCount
32
+ * @type {Number}
33
+ */
34
+ get subscriptionCount(): number;
35
+ suspend(suspendedState: boolean): void;
36
+ acknowledge_notification(subscriptionId: SubscriptionId, sequenceNumber: number): void;
37
+ cleanup_acknowledgment_for_subscription(subscriptionId: SubscriptionId): void;
38
+ /**
39
+ * @method send_publish_request
40
+ */
41
+ send_publish_request(): void;
42
+ terminate(): void;
43
+ registerSubscription(subscription: ClientSubscription): void;
44
+ replenish_publish_request_queue(): void;
45
+ /**
46
+ * @method unregisterSubscription
47
+ *
48
+ * @param subscriptionId
49
+ */
50
+ unregisterSubscription(subscriptionId: SubscriptionId): void;
51
+ getSubscriptionIds(): SubscriptionId[];
52
+ /***
53
+ * get the client subscription from Id
54
+ */
55
+ getSubscription(subscriptionId: SubscriptionId): ClientSubscription;
56
+ hasSubscription(subscriptionId: SubscriptionId): boolean;
57
+ republish(callback: () => void): void;
58
+ internalSendPublishRequest(): void;
59
+ private _receive_publish_response;
60
+ private _republish;
61
+ private __repairSubscription;
62
+ }