node-opcua-client 2.167.0 → 2.169.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 (41) hide show
  1. package/dist/client_monitored_item.d.ts +4 -4
  2. package/dist/client_monitored_item.js +6 -5
  3. package/dist/client_monitored_item.js.map +1 -1
  4. package/dist/client_monitored_item_base.d.ts +7 -7
  5. package/dist/client_monitored_item_toolbox.d.ts +5 -5
  6. package/dist/client_monitored_item_toolbox.js +26 -19
  7. package/dist/client_monitored_item_toolbox.js.map +1 -1
  8. package/dist/private/client_base_impl.js +116 -85
  9. package/dist/private/client_base_impl.js.map +1 -1
  10. package/dist/private/client_monitored_item_group_impl.d.ts +7 -6
  11. package/dist/private/client_monitored_item_group_impl.js +6 -8
  12. package/dist/private/client_monitored_item_group_impl.js.map +1 -1
  13. package/dist/private/client_monitored_item_impl.d.ts +10 -9
  14. package/dist/private/client_monitored_item_impl.js +40 -26
  15. package/dist/private/client_monitored_item_impl.js.map +1 -1
  16. package/dist/private/client_session_impl.d.ts +1 -0
  17. package/dist/private/client_session_impl.js +12 -0
  18. package/dist/private/client_session_impl.js.map +1 -1
  19. package/dist/private/client_subscription_impl.d.ts +7 -4
  20. package/dist/private/client_subscription_impl.js +101 -77
  21. package/dist/private/client_subscription_impl.js.map +1 -1
  22. package/dist/private/opcua_client_impl.d.ts +1 -0
  23. package/dist/private/opcua_client_impl.js +11 -0
  24. package/dist/private/opcua_client_impl.js.map +1 -1
  25. package/dist/private/reconnection/client_publish_engine_reconnection.js +54 -45
  26. package/dist/private/reconnection/client_publish_engine_reconnection.js.map +1 -1
  27. package/dist/private/reconnection/reconnection.d.ts +1 -1
  28. package/dist/private/reconnection/reconnection.js +199 -280
  29. package/dist/private/reconnection/reconnection.js.map +1 -1
  30. package/package.json +43 -44
  31. package/source/client_monitored_item.ts +5 -4
  32. package/source/client_monitored_item_base.ts +13 -8
  33. package/source/client_monitored_item_toolbox.ts +24 -20
  34. package/source/private/client_base_impl.ts +169 -199
  35. package/source/private/client_monitored_item_group_impl.ts +15 -16
  36. package/source/private/client_monitored_item_impl.ts +56 -38
  37. package/source/private/client_session_impl.ts +29 -14
  38. package/source/private/client_subscription_impl.ts +151 -91
  39. package/source/private/opcua_client_impl.ts +13 -0
  40. package/source/private/reconnection/client_publish_engine_reconnection.ts +67 -60
  41. package/source/private/reconnection/reconnection.ts +253 -344
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-client",
3
- "version": "2.167.0",
3
+ "version": "2.169.0",
4
4
  "description": "pure nodejs OPCUA SDK - module client",
5
5
  "scripts": {
6
6
  "clean": "npx rimraf -g node_modules dist *.tsbuildinfo certificates",
@@ -15,56 +15,55 @@
15
15
  "types": "./dist/index.d.ts",
16
16
  "dependencies": {
17
17
  "@ster5/global-mutex": "^3.3.0",
18
- "async": "^3.2.6",
19
18
  "chalk": "4.1.2",
20
- "node-opcua-alarm-condition": "2.167.0",
19
+ "node-opcua-alarm-condition": "2.169.0",
21
20
  "node-opcua-assert": "2.164.0",
22
- "node-opcua-basic-types": "2.167.0",
23
- "node-opcua-buffer-utils": "2.167.0",
24
- "node-opcua-certificate-manager": "2.167.0",
25
- "node-opcua-client-dynamic-extension-object": "2.167.0",
26
- "node-opcua-common": "2.167.0",
21
+ "node-opcua-basic-types": "2.169.0",
22
+ "node-opcua-buffer-utils": "2.169.0",
23
+ "node-opcua-certificate-manager": "2.169.0",
24
+ "node-opcua-client-dynamic-extension-object": "2.169.0",
25
+ "node-opcua-common": "2.169.0",
27
26
  "node-opcua-constants": "2.157.0",
28
- "node-opcua-crypto": "5.3.3",
29
- "node-opcua-data-model": "2.167.0",
30
- "node-opcua-data-value": "2.167.0",
31
- "node-opcua-date-time": "2.167.0",
32
- "node-opcua-debug": "2.165.0",
33
- "node-opcua-extension-object": "2.167.0",
27
+ "node-opcua-crypto": "5.3.5",
28
+ "node-opcua-data-model": "2.169.0",
29
+ "node-opcua-data-value": "2.169.0",
30
+ "node-opcua-date-time": "2.169.0",
31
+ "node-opcua-debug": "2.168.0",
32
+ "node-opcua-extension-object": "2.169.0",
34
33
  "node-opcua-hostname": "2.167.0",
35
- "node-opcua-nodeid": "2.167.0",
36
- "node-opcua-numeric-range": "2.167.0",
37
- "node-opcua-object-registry": "2.165.0",
38
- "node-opcua-pki": "6.12.0",
39
- "node-opcua-pseudo-session": "2.167.0",
40
- "node-opcua-schemas": "2.167.0",
41
- "node-opcua-secure-channel": "2.167.0",
42
- "node-opcua-service-browse": "2.167.0",
43
- "node-opcua-service-call": "2.167.0",
44
- "node-opcua-service-discovery": "2.167.0",
45
- "node-opcua-service-endpoints": "2.167.0",
46
- "node-opcua-service-filter": "2.167.0",
47
- "node-opcua-service-history": "2.167.0",
48
- "node-opcua-service-query": "2.167.0",
49
- "node-opcua-service-read": "2.167.0",
50
- "node-opcua-service-register-node": "2.167.0",
51
- "node-opcua-service-secure-channel": "2.167.0",
52
- "node-opcua-service-session": "2.167.0",
53
- "node-opcua-service-subscription": "2.167.0",
54
- "node-opcua-service-translate-browse-path": "2.167.0",
55
- "node-opcua-service-write": "2.167.0",
56
- "node-opcua-status-code": "2.167.0",
57
- "node-opcua-types": "2.167.0",
58
- "node-opcua-utils": "2.165.0",
59
- "node-opcua-variant": "2.167.0",
34
+ "node-opcua-nodeid": "2.169.0",
35
+ "node-opcua-numeric-range": "2.169.0",
36
+ "node-opcua-object-registry": "2.169.0",
37
+ "node-opcua-pki": "6.13.0",
38
+ "node-opcua-pseudo-session": "2.169.0",
39
+ "node-opcua-schemas": "2.169.0",
40
+ "node-opcua-secure-channel": "2.169.0",
41
+ "node-opcua-service-browse": "2.169.0",
42
+ "node-opcua-service-call": "2.169.0",
43
+ "node-opcua-service-discovery": "2.169.0",
44
+ "node-opcua-service-endpoints": "2.169.0",
45
+ "node-opcua-service-filter": "2.169.0",
46
+ "node-opcua-service-history": "2.169.0",
47
+ "node-opcua-service-query": "2.169.0",
48
+ "node-opcua-service-read": "2.169.0",
49
+ "node-opcua-service-register-node": "2.169.0",
50
+ "node-opcua-service-secure-channel": "2.169.0",
51
+ "node-opcua-service-session": "2.169.0",
52
+ "node-opcua-service-subscription": "2.169.0",
53
+ "node-opcua-service-translate-browse-path": "2.169.0",
54
+ "node-opcua-service-write": "2.169.0",
55
+ "node-opcua-status-code": "2.169.0",
56
+ "node-opcua-types": "2.169.0",
57
+ "node-opcua-utils": "2.169.0",
58
+ "node-opcua-variant": "2.169.0",
60
59
  "thenify-ex": "4.4.0"
61
60
  },
62
61
  "devDependencies": {
63
62
  "dequeue": "^1.0.5",
64
- "node-opcua-address-space": "2.167.0",
65
- "node-opcua-binary-stream": "2.167.0",
66
- "node-opcua-factory": "2.167.0",
67
- "node-opcua-leak-detector": "2.165.0",
63
+ "node-opcua-address-space": "2.169.0",
64
+ "node-opcua-binary-stream": "2.169.0",
65
+ "node-opcua-factory": "2.169.0",
66
+ "node-opcua-leak-detector": "2.169.0",
68
67
  "node-opcua-nodesets": "2.163.1"
69
68
  },
70
69
  "eslintConfig": {
@@ -87,7 +86,7 @@
87
86
  "internet of things"
88
87
  ],
89
88
  "homepage": "http://node-opcua.github.io/",
90
- "gitHead": "5decfa86ee53a36ecd3bb454e7bf6e3dd27c7a4e",
89
+ "gitHead": "82d570d3e95bea689cbbe30096279885c5282245",
91
90
  "files": [
92
91
  "dist",
93
92
  "source"
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @module node-opcua-client
3
3
  */
4
- import type { EventEmitter } from "events";
4
+ import type { EventEmitter } from "node:events";
5
5
 
6
6
  import { type DataValue, TimestampsToReturn } from "node-opcua-data-value";
7
7
  import type { ReadValueIdOptions } from "node-opcua-service-read";
8
- import { MonitoringMode, type MonitoringParametersOptions } from "node-opcua-types";
8
+ import type { MonitoringParametersOptions } from "node-opcua-types";
9
9
  import type { Variant } from "node-opcua-variant";
10
10
  import type { ClientMonitoredItemBase, ClientMonitoredItemOrGroupAction } from "./client_monitored_item_base";
11
11
  import type { ClientSubscription } from "./client_subscription";
@@ -22,8 +22,9 @@ export interface ClientMonitoredItem extends ClientMonitoredItemBase, ClientMoni
22
22
  on(event: "err", eventHandler: (message: string) => void): this;
23
23
  }
24
24
 
25
- export class ClientMonitoredItem {
26
- public static create(
25
+ // eslint-disable-next-line @typescript-eslint/no-namespace
26
+ export namespace ClientMonitoredItem {
27
+ export let create = function(
27
28
  subscription: ClientSubscription,
28
29
  itemToMonitor: ReadValueIdOptions,
29
30
  monitoringParameters: MonitoringParametersOptions,
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @module node-opcua-client
3
3
  */
4
- import type { EventEmitter } from "events";
5
- import { type AttributeIds, UInt32 } from "node-opcua-basic-types";
4
+ import type { EventEmitter } from "node:events";
5
+ import type { AttributeIds } from "node-opcua-basic-types";
6
6
  import type { QualifiedNameLike } from "node-opcua-data-model";
7
7
  import type { DataValue } from "node-opcua-data-value";
8
8
  import type { ExtensionObject } from "node-opcua-extension-object";
@@ -11,6 +11,7 @@ import type { NumericRange } from "node-opcua-numeric-range";
11
11
  import type { TimestampsToReturn } from "node-opcua-service-read";
12
12
  import type {
13
13
  MonitoredItemCreateResult,
14
+ MonitoredItemModifyResult,
14
15
  MonitoringMode,
15
16
  MonitoringParameters,
16
17
  MonitoringParametersOptions
@@ -20,14 +21,19 @@ import type { Variant } from "node-opcua-variant";
20
21
 
21
22
  import type { ClientSubscription } from "./client_subscription";
22
23
 
23
- // tslint:disable:unified-signatures
24
24
  export interface ClientMonitoredItemOrGroupAction {
25
- modify(parameters: MonitoringParametersOptions, timestampsToReturn?: TimestampsToReturn): Promise<StatusCode>;
26
- modify(parameters: MonitoringParametersOptions, callback: Callback<StatusCode>): void;
25
+ modify(
26
+ parameters: MonitoringParametersOptions,
27
+ timestampsToReturn?: TimestampsToReturn
28
+ ): Promise<MonitoredItemModifyResult>;
29
+ modify(
30
+ parameters: MonitoringParametersOptions,
31
+ callback: Callback<MonitoredItemModifyResult>
32
+ ): void;
27
33
  modify(
28
34
  parameters: MonitoringParametersOptions,
29
35
  timestampsToReturn: TimestampsToReturn | null,
30
- callback: Callback<StatusCode>
36
+ callback: Callback<MonitoredItemModifyResult>
31
37
  ): void;
32
38
 
33
39
  setMonitoringMode(monitoringMode: MonitoringMode): Promise<StatusCode>;
@@ -37,7 +43,6 @@ export interface ClientMonitoredItemOrGroupAction {
37
43
  terminate(done: ErrorCallback): void;
38
44
  }
39
45
 
40
- // tslint:disable:unified-signatures
41
46
  export interface ClientMonitoredItemBase extends EventEmitter, ClientMonitoredItemOrGroupAction {
42
47
  on(event: "changed", eventHandler: (dataValue: DataValue) => void): this;
43
48
  on(event: "changed", eventHandler: (values: Variant[]) => void): this;
@@ -60,7 +65,7 @@ export interface ClientMonitoredItemBase {
60
65
  readonly subscription: ClientSubscription;
61
66
  readonly monitoringMode: MonitoringMode;
62
67
  readonly statusCode: StatusCode;
63
- readonly monitoredItemId?: any;
68
+ readonly monitoredItemId?: number;
64
69
  readonly result?: MonitoredItemCreateResult;
65
70
  readonly filterResult?: ExtensionObject;
66
71
  }
@@ -4,6 +4,7 @@
4
4
  import chalk from "chalk";
5
5
 
6
6
  import { assert } from "node-opcua-assert";
7
+ import type { UInt32 } from "node-opcua-basic-types";
7
8
  import type { TimestampsToReturn } from "node-opcua-data-value";
8
9
  import { checkDebugFlag, make_debugLog } from "node-opcua-debug";
9
10
  import {
@@ -16,8 +17,7 @@ import {
16
17
  type MonitoringMode,
17
18
  type SetMonitoringModeResponse
18
19
  } from "node-opcua-service-subscription";
19
- import { type Callback, type ErrorCallback, type StatusCode, StatusCodes } from "node-opcua-status-code";
20
-
20
+ import type { Callback, ErrorCallback, StatusCode } from "node-opcua-status-code";
21
21
  import type { MonitoredItemCreateRequestOptions, MonitoringParametersOptions } from "node-opcua-types";
22
22
  import type { ClientMonitoredItemBase } from "./client_monitored_item_base";
23
23
  import type { SetMonitoringModeRequestLike } from "./client_session";
@@ -26,7 +26,7 @@ import type { ClientMonitoredItemImpl } from "./private/client_monitored_item_im
26
26
  import type { ClientSessionImpl } from "./private/client_session_impl";
27
27
 
28
28
  const debugLog = make_debugLog(__filename);
29
- const doDebug = checkDebugFlag(__filename);
29
+ const _doDebug = checkDebugFlag(__filename);
30
30
 
31
31
  export interface ClientMonitoredItemBaseEx extends ClientMonitoredItemBase {
32
32
  internalSetMonitoringMode(monitoringMode: MonitoringMode): void;
@@ -34,8 +34,8 @@ export interface ClientMonitoredItemBaseEx extends ClientMonitoredItemBase {
34
34
  /**
35
35
  * @internal
36
36
  */
37
- export class ClientMonitoredItemToolbox {
38
- public static _toolbox_monitor(
37
+ export namespace ClientMonitoredItemToolbox {
38
+ export function _toolbox_monitor(
39
39
  subscription: ClientSubscription,
40
40
  timestampsToReturn: TimestampsToReturn,
41
41
  monitoredItems: ClientMonitoredItemBase[],
@@ -46,18 +46,14 @@ export class ClientMonitoredItemToolbox {
46
46
  // we expect subscription to be valid and have a valid session
47
47
  if (!subscription.hasSession) {
48
48
  const err0 = new Error("Invalid subscription");
49
- if (done) {
50
- return done(err0);
51
- }
49
+ done(err0);
52
50
  return;
53
51
  }
54
52
 
55
53
  // may be the subscription has been terminated or is not fully initialize, in the meantime
56
54
  if (!subscription.isActive) {
57
55
  const err1 = new Error("Subscription has been terminated or is not fully initialized");
58
- if (done) {
59
- return done(err1);
60
- }
56
+ done(err1);
61
57
  return;
62
58
  }
63
59
 
@@ -66,7 +62,8 @@ export class ClientMonitoredItemToolbox {
66
62
  const monitoredItemI = monitoredItem as ClientMonitoredItemImpl;
67
63
  const itemToCreate = monitoredItemI._prepare_for_monitoring();
68
64
  if (typeof itemToCreate.error === "string") {
69
- return done(new Error(itemToCreate.error));
65
+ done(new Error(itemToCreate.error));
66
+ return;
70
67
  }
71
68
  itemsToCreate.push(itemToCreate as MonitoredItemCreateRequestOptions);
72
69
  }
@@ -107,7 +104,7 @@ export class ClientMonitoredItemToolbox {
107
104
  });
108
105
  }
109
106
 
110
- public static _toolbox_modify(
107
+ export function _toolbox_modify(
111
108
  subscription: ClientSubscription,
112
109
  monitoredItems: ClientMonitoredItemBase[],
113
110
  parameters: MonitoringParametersOptions,
@@ -139,10 +136,12 @@ export class ClientMonitoredItemToolbox {
139
136
  session.modifyMonitoredItems(modifyMonitoredItemsRequest, (err: Error | null, response?: ModifyMonitoredItemsResponse) => {
140
137
  /* c8 ignore next */
141
138
  if (err) {
142
- return callback(err);
139
+ callback(err);
140
+ return;
143
141
  }
144
142
  if (!response || !(response instanceof ModifyMonitoredItemsResponse)) {
145
- return callback(new Error("internal error"));
143
+ callback(new Error("internal error"));
144
+ return;
146
145
  }
147
146
 
148
147
  response.results = response.results || [];
@@ -153,19 +152,20 @@ export class ClientMonitoredItemToolbox {
153
152
 
154
153
  /* c8 ignore next */
155
154
  if (response.results.length === 1 && res.statusCode.isNotGood()) {
156
- return callback(new Error("Error" + res.statusCode.toString()));
155
+ callback(new Error(`Error${res.statusCode.toString()}`));
156
+ return;
157
157
  }
158
158
  callback(null, response.results);
159
159
  });
160
160
  }
161
161
 
162
- public static _toolbox_setMonitoringMode(
162
+ export function _toolbox_setMonitoringMode(
163
163
  subscription: ClientSubscription,
164
164
  monitoredItems: ClientMonitoredItemBaseEx[],
165
165
  monitoringMode: MonitoringMode,
166
166
  callback: Callback<StatusCode[]>
167
167
  ): void {
168
- const monitoredItemIds = monitoredItems.map((monitoredItem) => monitoredItem.monitoredItemId);
168
+ const monitoredItemIds = monitoredItems.map((monitoredItem) => monitoredItem.monitoredItemId as UInt32);
169
169
 
170
170
  const setMonitoringModeRequest: SetMonitoringModeRequestLike = {
171
171
  monitoredItemIds,
@@ -178,12 +178,16 @@ export class ClientMonitoredItemToolbox {
178
178
 
179
179
  session.setMonitoringMode(setMonitoringModeRequest, (err: Error | null, response?: SetMonitoringModeResponse) => {
180
180
  if (err) {
181
- return callback(err);
181
+ callback(err);
182
+ return;
183
+ }
184
+ if (!response) {
185
+ callback(new Error("internal error"));
186
+ return;
182
187
  }
183
188
  monitoredItems.forEach((monitoredItem) => {
184
189
  monitoredItem.internalSetMonitoringMode(monitoringMode);
185
190
  });
186
- response = response!;
187
191
  response.results = response.results || [];
188
192
  callback(null, response.results);
189
193
  });