node-opcua-client 2.132.0 → 2.134.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 (80) hide show
  1. package/dist/client_base.d.ts +6 -20
  2. package/dist/client_base.js.map +1 -1
  3. package/dist/client_session.d.ts +11 -76
  4. package/dist/client_session.js.map +1 -1
  5. package/dist/client_session_keepalive_manager.d.ts +1 -3
  6. package/dist/client_session_keepalive_manager.js +1 -3
  7. package/dist/client_session_keepalive_manager.js.map +1 -1
  8. package/dist/client_subscription.d.ts +0 -9
  9. package/dist/client_subscription.js.map +1 -1
  10. package/dist/client_utils.d.ts +1 -4
  11. package/dist/client_utils.js +1 -4
  12. package/dist/client_utils.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/private/client_base_impl.d.ts +4 -5
  17. package/dist/private/client_base_impl.js +11 -11
  18. package/dist/private/client_base_impl.js.map +1 -1
  19. package/dist/private/client_monitored_item_base_impl.d.ts +1 -0
  20. package/dist/private/client_monitored_item_base_impl.js +1 -0
  21. package/dist/private/client_monitored_item_base_impl.js.map +1 -1
  22. package/dist/private/client_monitored_item_group_impl.d.ts +2 -4
  23. package/dist/private/client_monitored_item_group_impl.js +1 -1
  24. package/dist/private/client_monitored_item_group_impl.js.map +1 -1
  25. package/dist/private/client_monitored_item_impl.d.ts +5 -6
  26. package/dist/private/client_monitored_item_impl.js +4 -4
  27. package/dist/private/client_monitored_item_impl.js.map +1 -1
  28. package/dist/private/client_publish_engine.d.ts +12 -6
  29. package/dist/private/client_publish_engine.js +12 -6
  30. package/dist/private/client_publish_engine.js.map +1 -1
  31. package/dist/private/client_session_impl.d.ts +12 -77
  32. package/dist/private/client_session_impl.js +7 -32
  33. package/dist/private/client_session_impl.js.map +1 -1
  34. package/dist/private/client_subscription_impl.d.ts +1 -1
  35. package/dist/private/client_subscription_impl.js +1 -1
  36. package/dist/private/opcua_client_impl.d.ts +2 -8
  37. package/dist/private/opcua_client_impl.js +8 -14
  38. package/dist/private/opcua_client_impl.js.map +1 -1
  39. package/dist/private/reconnection/client_subscription_reconnection.d.ts +1 -1
  40. package/dist/private/reconnection/client_subscription_reconnection.js +1 -1
  41. package/dist/tools/findservers.d.ts +0 -4
  42. package/dist/tools/findservers.js.map +1 -1
  43. package/dist/verify.d.ts +1 -1
  44. package/dist/verify.js +4 -4
  45. package/dist/verify.js.map +1 -1
  46. package/package.json +43 -43
  47. package/source/client_base.ts +8 -20
  48. package/source/client_session.ts +20 -90
  49. package/source/client_session_keepalive_manager.ts +1 -3
  50. package/source/client_subscription.ts +0 -9
  51. package/source/client_utils.ts +1 -4
  52. package/source/index.ts +1 -1
  53. package/source/private/client_base_impl.ts +4 -5
  54. package/source/private/client_monitored_item_group_impl.ts +2 -4
  55. package/source/private/client_monitored_item_impl.ts +5 -6
  56. package/source/private/client_publish_engine.ts +12 -6
  57. package/source/private/client_session_impl.ts +49 -102
  58. package/source/private/client_subscription_impl.ts +1 -1
  59. package/source/private/opcua_client_impl.ts +6 -17
  60. package/source/private/reconnection/client_subscription_reconnection.ts +1 -1
  61. package/source/tools/findservers.ts +0 -4
  62. package/source/verify.ts +1 -1
  63. package/dist/alarms_and_conditions/client_alarm.d.ts +0 -49
  64. package/dist/alarms_and_conditions/client_alarm.js +0 -97
  65. package/dist/alarms_and_conditions/client_alarm.js.map +0 -1
  66. package/dist/alarms_and_conditions/client_alarm_list.d.ts +0 -25
  67. package/dist/alarms_and_conditions/client_alarm_list.js +0 -98
  68. package/dist/alarms_and_conditions/client_alarm_list.js.map +0 -1
  69. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.d.ts +0 -18
  70. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js +0 -175
  71. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js.map +0 -1
  72. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.d.ts +0 -9
  73. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js +0 -60
  74. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js.map +0 -1
  75. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.d.ts +0 -3
  76. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js +0 -15
  77. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js.map +0 -1
  78. package/dist/reconnection.d.ts +0 -9
  79. package/dist/reconnection.js +0 -453
  80. package/dist/reconnection.js.map +0 -1
@@ -5,7 +5,7 @@ import { EventEmitter } from "events";
5
5
  import { LocaleId } from "node-opcua-basic-types";
6
6
  import { OPCUACertificateManager } from "node-opcua-certificate-manager";
7
7
  import { OPCUASecureObject } from "node-opcua-common";
8
- import { Certificate } from "node-opcua-crypto";
8
+ import { Certificate } from "node-opcua-crypto/web";
9
9
  import { ObjectRegistry } from "node-opcua-object-registry";
10
10
  import { ClientSecureChannelLayer, ConnectionStrategy, ConnectionStrategyOptions, SecurityPolicy } from "node-opcua-secure-channel";
11
11
  import { FindServersOnNetworkRequestOptions, FindServersRequestOptions, ServerOnNetwork } from "node-opcua-service-discovery";
@@ -111,9 +111,13 @@ export interface OPCUAClientBaseOptions {
111
111
  */
112
112
  discoveryUrl?: string;
113
113
  /**
114
- * @advanced
114
+ * specify some transport settings that will override
115
+ * the default transport settings for the end point.
115
116
  */
116
117
  transportSettings?: TransportSettings;
118
+ /**
119
+ * transport timeout
120
+ */
117
121
  transportTimeout?: number;
118
122
  /**
119
123
  * defaultTransactionTimeout
@@ -195,28 +199,20 @@ export interface OPCUAClientBase extends EventEmitter {
195
199
  on(eventName: "after_reconnection", eventHandler: (err?: Error) => void): this;
196
200
  /**
197
201
  * the event is raised when the connection has been aborted by the remote OPCUA Server
198
- * @param event
199
- * @param eventHandler
200
202
  */
201
203
  on(eventName: "abort", eventHandler: () => void): this;
202
204
  /**
203
205
  * this event is raised when the connection is closed
204
- * @param event
205
- * @param eventHandler
206
206
  */
207
207
  on(eventName: "close", eventHandler: () => void): this;
208
208
  /**
209
209
  * this event is raised when the client is sending a message chunk to the server
210
210
  * (advanced use only)
211
- * @param event
212
- * @param eventHandler
213
211
  */
214
212
  on(eventName: "send_chunk", eventHandler: (chunk: Buffer) => void): this;
215
213
  /**
216
214
  * this event is raised when the client has received a new message chunk from the servers
217
215
  * (advanced use only)
218
- * @param event
219
- * @param eventHandler
220
216
  */
221
217
  on(eventName: "receive_chunk", eventHandler: (chunk: Buffer) => void): this;
222
218
  on(eventName: "send_request", eventHandler: (request: Request) => void): this;
@@ -224,34 +220,24 @@ export interface OPCUAClientBase extends EventEmitter {
224
220
  /**
225
221
  * this event is raised when the current security token has reached 75% of its lifetime and is therefore
226
222
  * about to expired.
227
- * @param event
228
- * @param eventHandler
229
223
  */
230
224
  on(eventName: "lifetime_75", eventHandler: (token: ChannelSecurityToken) => void): this;
231
225
  /**
232
226
  * this event is raised after the (about ) security token as been renewed
233
227
  * and renegotiated with the server.to expire
234
- * @param event
235
- * @param eventHandler
236
228
  */
237
229
  on(eventName: "security_token_renewed", eventHandler: (channel: ClientSecureChannelLayer, token: ChannelSecurityToken) => void): this;
238
230
  /**
239
231
  * this event is raised when the connection has been broken
240
- * @param event
241
- * @param eventHandler
242
232
  */
243
233
  on(eventName: "connection_lost", eventHandler: () => void): this;
244
234
  /**
245
235
  * this event is raised when a broken connection with the remote Server has been reestablished
246
- * @param event
247
- * @param eventHandler
248
236
  */
249
237
  on(eventName: "connection_reestablished", eventHandler: () => void): this;
250
238
  /**
251
239
  * This event is raised when a request sent to the remote OPCUA server has reach it's timeout value without
252
240
  * a Response from the server.
253
- * @param event
254
- * @param eventHandler
255
241
  */
256
242
  on(eventName: "timed_out_request", eventHandler: (request: Request) => void): this;
257
243
  on(eventName: string | symbol, listener: (...args: any[]) => void): this;
@@ -1 +1 @@
1
- {"version":3,"file":"client_base.js","sourceRoot":"","sources":["../source/client_base.ts"],"names":[],"mappings":";;;AASA,2EAA4D;AA0U5D,MAAa,eAAe;IAIjB,MAAM,CAAC,MAAM,CAAC,OAA+B;QAChD,yBAAyB;QACzB,OAAO,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;;AARL,0CASC;AARiB,wBAAQ,GAAG,IAAI,2CAAc,EAAE,CAAC;AAChC,0BAAU,GAAG,IAAI,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"client_base.js","sourceRoot":"","sources":["../source/client_base.ts"],"names":[],"mappings":";;;AASA,2EAA4D;AA8T5D,MAAa,eAAe;IAIjB,MAAM,CAAC,MAAM,CAAC,OAA+B;QAChD,yBAAyB;QACzB,OAAO,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;;AARL,0CASC;AARiB,wBAAQ,GAAG,IAAI,2CAAc,EAAE,CAAC;AAChC,0BAAU,GAAG,IAAI,GAAG,CAAC,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import { EventEmitter } from "events";
5
5
  import { DateTime, UInt8 } from "node-opcua-basic-types";
6
6
  import { ServerState } from "node-opcua-common";
7
- import { Certificate } from "node-opcua-crypto";
7
+ import { Certificate } from "node-opcua-crypto/web";
8
8
  import { LocalizedTextLike } from "node-opcua-data-model";
9
9
  import { DataValue, TimestampsToReturn } from "node-opcua-data-value";
10
10
  import { NodeId, NodeIdLike } from "node-opcua-nodeid";
@@ -106,62 +106,6 @@ export interface ClientSessionQueryService {
106
106
  queryFirst(queryFirstRequest: QueryFirstRequestLike, callback: ResponseCallback<QueryFirstResponse>): void;
107
107
  }
108
108
  export interface ClientSessionCallService extends IBasicSessionCall {
109
- /**
110
- *
111
- * @method call
112
- *
113
- * @param methodToCall {CallMethodRequest} the call method request
114
- * @param callback
115
- *
116
- * @example :
117
- *
118
- * ```javascript
119
- * const methodToCall = {
120
- * objectId: "ns=2;i=12",
121
- * methodId: "ns=2;i=13",
122
- * inputArguments: [
123
- * new Variant({...}),
124
- * new Variant({...}),
125
- * ]
126
- * }
127
- * session.call(methodToCall,function(err,callResult) {
128
- * if (!err) {
129
- * console.log(" statusCode = ",callResult.statusCode);
130
- * console.log(" inputArgumentResults[0] = ",callResult.inputArgumentResults[0].toString());
131
- * console.log(" inputArgumentResults[1] = ",callResult.inputArgumentResults[1].toString());
132
- * console.log(" outputArgument[0] = ",callResult.outputArgument[0].toString()); // array of variant
133
- * }
134
- * });
135
- * ```
136
- *
137
- * @method call
138
- *
139
- * @param methodsToCall {CallMethodRequest[]} the call method request array
140
- * @param callback
141
- *
142
- *
143
- * @example :
144
- *
145
- * ```javascript
146
- * const methodsToCall = [ {
147
- * objectId: "ns=2;i=12",
148
- * methodId: "ns=2;i=13",
149
- * inputArguments: [
150
- * new Variant({...}),
151
- * new Variant({...}),
152
- * ]
153
- * }];
154
- * session.call(methodsToCall,function(err,callResults) {
155
- * if (!err) {
156
- * const callResult = callResults[0];
157
- * console.log(" statusCode = ",rep.statusCode);
158
- * console.log(" inputArgumentResults[0] = ",callResult.inputArgumentResults[0].toString());
159
- * console.log(" inputArgumentResults[1] = ",callResult.inputArgumentResults[1].toString());
160
- * console.log(" outputArgument[0] = ",callResult.outputArgument[0].toString()); // array of variant
161
- * }
162
- * });
163
- * ```
164
- */
165
109
  getArgumentDefinition(methodId: MethodId): Promise<ArgumentDefinition>;
166
110
  getArgumentDefinition(methodId: MethodId, callback: (err: Error | null, args?: ArgumentDefinition) => void): void;
167
111
  }
@@ -173,36 +117,34 @@ export interface ClientSessionRegisterService {
173
117
  }
174
118
  export interface ClientSessionReadService extends IBasicSessionRead {
175
119
  /**
176
- * @deprecated
120
+ * @deprecated use read() instead
177
121
  */
178
122
  readVariableValue(nodeId: NodeIdLike, callback: ResponseCallback<DataValue>): void;
179
123
  /**
180
- * @deprecated
124
+ * @deprecated use read() instead
181
125
  */
182
126
  readVariableValue(nodeId: NodeIdLike): Promise<DataValue>;
183
127
  /**
184
- * @deprecated
128
+ * @deprecated use read() instead
185
129
  */
186
130
  readVariableValue(nodeIds: NodeIdLike[], callback: ResponseCallback<DataValue[]>): void;
187
131
  /**
188
- * @deprecated
132
+ * @deprecated use read() instead
189
133
  */
190
134
  readVariableValue(nodeIds: NodeIdLike[]): Promise<DataValue[]>;
191
135
  }
192
136
  export interface ClientSessionWriteService extends IBasicSessionWrite {
193
137
  /**
194
- * @deprecated
138
+ * @deprecated use write() instead
195
139
  */
196
140
  writeSingleNode(nodeToWrite: NodeIdLike, value: Variant): Promise<StatusCode>;
197
141
  /**
198
- * @deprecated
142
+ * @deprecated use write() instead
199
143
  */
200
144
  writeSingleNode(nodeToWrite: NodeIdLike, value: Variant, callback: ResponseCallback<StatusCode>): void;
201
145
  }
202
146
  export interface ClientSessionRawSubscriptionService {
203
147
  /**
204
- * @method createSubscription
205
- * @async
206
148
  *
207
149
  * @example
208
150
  *
@@ -231,9 +173,7 @@ export interface ClientSessionRawSubscriptionService {
231
173
  deleteSubscriptions(options: DeleteSubscriptionsRequestLike, callback?: ResponseCallback<DeleteSubscriptionsResponse>): void;
232
174
  deleteSubscriptions(options: DeleteSubscriptionsRequestLike): Promise<DeleteSubscriptionsResponse>;
233
175
  /**
234
- *
235
- * @method modifyMonitoredItems
236
- * @async
176
+ * modify the monitored item parameters
237
177
  */
238
178
  modifyMonitoredItems(options: ModifyMonitoredItemsRequestLike, callback?: ResponseCallback<ModifyMonitoredItemsResponse>): void;
239
179
  modifyMonitoredItems(options: ModifyMonitoredItemsRequestLike): Promise<ModifyMonitoredItemsResponse>;
@@ -267,8 +207,6 @@ export interface ClientSessionReadHistoryService {
267
207
  readHistoryValue(nodeToRead: NodeIdLike | HistoryReadValueIdOptions2, start: DateTime, end: DateTime, options: ExtraReadHistoryValueParameters | undefined, callback: (err: Error | null, result?: HistoryReadResult) => void): void;
268
208
  readHistoryValue(nodeToRead: NodeIdLike | HistoryReadValueIdOptions2, start: DateTime, end: DateTime, options?: ExtraReadHistoryValueParameters): Promise<HistoryReadResult>;
269
209
  /**
270
- * @method readAggregateValue
271
- * @async
272
210
  *
273
211
  * @example
274
212
  *
@@ -291,7 +229,7 @@ export interface ClientSessionReadHistoryService {
291
229
  * new Date("2015-06-10T09:01:00.000Z"),
292
230
  * AggregateFunction.Average, 3600000);
293
231
  * ```
294
- * @param nodes the read value id
232
+ * @param nodesToRead the read value id
295
233
  * @param startTime the start time in UTC format
296
234
  * @param endTime the end time in UTC format
297
235
  * @param aggregateFn
@@ -353,7 +291,6 @@ export interface ClientSessionDataTypeService {
353
291
  *
354
292
  * this method is useful to determine which DataType to use when constructing a Variant
355
293
  * @param nodeId - the node id of the variable to query
356
- * @async
357
294
  *
358
295
  *
359
296
  * @example
@@ -381,7 +318,6 @@ export interface ClientSessionNamespaceService {
381
318
  export interface ClientSessionExtensionObjectService {
382
319
  constructExtensionObject(dataType: NodeId, pojo: Record<string, unknown>): Promise<ExtensionObject>;
383
320
  /**
384
- * @private
385
321
  */
386
322
  extractNamespaceDataType(): Promise<ExtraDataTypeManager>;
387
323
  }
@@ -391,7 +327,7 @@ export interface ClientSessionConditionService {
391
327
  /**
392
328
  * helper to add a comment to a condition
393
329
  *
394
- * The AddComment Method is used to apply a comment to a specific state of a Condition instance.
330
+ * The addComment Method is used to apply a comment to a specific state of a Condition instance.
395
331
  *
396
332
  * Normally, the NodeId of the object instance as the ObjectId is passed to the Call Service.
397
333
  *
@@ -472,7 +408,6 @@ export interface ClientSessionConditionService {
472
408
  acknowledgeCondition(conditionId: NodeId, eventId: Buffer, comment: LocalizedTextLike, callback: Callback<StatusCode>): void;
473
409
  acknowledgeCondition(conditionId: NodeId, eventId: Buffer, comment: LocalizedTextLike): Promise<StatusCode>;
474
410
  /**
475
- * @method findMethodId
476
411
  *
477
412
  * @param nodeId the nodeId of the parent Object
478
413
  * @param methodName the method name
@@ -485,7 +420,7 @@ export interface ClientSessionConditionService {
485
420
  * until it reaches the root type. and try to find the first method that matches the
486
421
  * provided name.
487
422
  *
488
- * @deprecated use global findMethodId(session, nodeId, methoName): Promise<NodeId> instead
423
+ * @deprecated use global findMethodId(session, nodeId, methodName): Promise<NodeId> instead
489
424
  */
490
425
  findMethodId(nodeId: NodeIdLike, methodName: string, callback: ResponseCallback<NodeId>): void;
491
426
  findMethodId(nodeId: NodeIdLike, methodName: string): Promise<NodeId>;
@@ -1 +1 @@
1
- {"version":3,"file":"client_session.js","sourceRoot":"","sources":["../source/client_session.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA+DH,yGAAkF;AAAzE,kJAAA,oBAAoB,OAAA;AAE7B,2EAA8D;AAArD,8HAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"client_session.js","sourceRoot":"","sources":["../source/client_session.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiEH,yGAAkF;AAAzE,kJAAA,oBAAoB,OAAA;AAE7B,2EAA8D;AAArD,8HAAA,eAAe,OAAA"}
@@ -21,13 +21,11 @@ export declare class ClientSessionKeepAliveManager extends EventEmitter implemen
21
21
  stop(): void;
22
22
  private ping_server;
23
23
  /**
24
- * @method ping_server
25
- * @internal
24
+ * @private
26
25
  * when a session is opened on a server, the client shall send request on a regular basis otherwise the server
27
26
  * session object might time out.
28
27
  * start_ping make sure that ping_server is called on a regular basis to prevent session to timeout.
29
28
  *
30
- * @param callback
31
29
  */
32
30
  private _ping_server;
33
31
  }
@@ -70,13 +70,11 @@ class ClientSessionKeepAliveManager extends events_1.EventEmitter {
70
70
  });
71
71
  }
72
72
  /**
73
- * @method ping_server
74
- * @internal
73
+ * @private
75
74
  * when a session is opened on a server, the client shall send request on a regular basis otherwise the server
76
75
  * session object might time out.
77
76
  * start_ping make sure that ping_server is called on a regular basis to prevent session to timeout.
78
77
  *
79
- * @param callback
80
78
  */
81
79
  async _ping_server() {
82
80
  const session = this.session;
@@ -1 +1 @@
1
- {"version":3,"file":"client_session_keepalive_manager.js","sourceRoot":"","sources":["../source/client_session_keepalive_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_session_keepalive_manager.js","sourceRoot":"","sources":["../source/client_session_keepalive_manager.ts"],"names":[],"mappings":"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"}
@@ -63,7 +63,6 @@ export interface ClientSubscription extends EventEmitter {
63
63
  /**
64
64
  * add a monitor item to the subscription
65
65
  *
66
- * @method monitor
67
66
  *
68
67
  * Monitoring a simple Value Change
69
68
  * ---------------------------------
@@ -162,21 +161,13 @@ export interface ClientSubscription extends EventEmitter {
162
161
  monitor(itemToMonitor: ReadValueIdOptions, requestedParameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn, monitoringMode?: MonitoringMode): Promise<ClientMonitoredItem>;
163
162
  monitor(itemToMonitor: ReadValueIdOptions, requestedParameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn, monitoringMode: MonitoringMode, callback: Callback<ClientMonitoredItem>): void;
164
163
  /**
165
- * @method monitorItems
166
164
  * @param itemsToMonitor
167
165
  * @param requestedParameters
168
166
  * @param timestampsToReturn
169
167
  * @return a ClientMonitoredItemGroup
170
- * @async
171
168
  */
172
169
  monitorItems(itemsToMonitor: ReadValueIdOptions[], requestedParameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn): Promise<ClientMonitoredItemGroup>;
173
170
  /**
174
- * @method monitorItems
175
- * @param itemsToMonitor
176
- * @param requestedParameters
177
- * @param timestampsToReturn
178
- * @param done
179
- * @async
180
171
  */
181
172
  monitorItems(itemsToMonitor: ReadValueIdOptions[], requestedParameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn, callback: Callback<ClientMonitoredItemGroup>): void;
182
173
  getMonitoredItems(): Promise<MonitoredItemData>;
@@ -1 +1 @@
1
- {"version":3,"file":"client_subscription.js","sourceRoot":"","sources":["../source/client_subscription.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiTH,MAAa,kBAAkB;IACpB,MAAM,CAAC,MAAM,CAAC,aAA4B,EAAE,OAAkC;QACjF,yBAAyB;QACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;;AAJL,gDAMC;AADiB,oCAAiB,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"client_subscription.js","sourceRoot":"","sources":["../source/client_subscription.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAwSH,MAAa,kBAAkB;IACpB,MAAM,CAAC,MAAM,CAAC,aAA4B,EAAE,OAAkC;QACjF,yBAAyB;QACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;;AAJL,gDAMC;AADiB,oCAAiB,GAAG,KAAK,CAAC"}
@@ -12,10 +12,7 @@ interface AnalogDataItemSnapshot {
12
12
  definition: Variant | null;
13
13
  }
14
14
  /**
15
- * @method readUAAnalogItem
16
- * @param session
17
- * @param nodeId
18
- * @param callback
15
+ *
19
16
  */
20
17
  export declare function readUAAnalogItem(session: IBasicSessionTranslateBrowsePathAsyncMultiple & IBasicSessionReadAsyncMultiple, nodeId: NodeIdLike): Promise<AnalogDataItemSnapshot>;
21
18
  export {};
@@ -25,10 +25,7 @@ function browsePathPropertyRequest(nodeId, propertyName) {
25
25
  });
26
26
  }
27
27
  /**
28
- * @method readUAAnalogItem
29
- * @param session
30
- * @param nodeId
31
- * @param callback
28
+ *
32
29
  */
33
30
  async function readUAAnalogItem(session, nodeId) {
34
31
  const browsePaths = [
@@ -1 +1 @@
1
- {"version":3,"file":"client_utils.js","sourceRoot":"","sources":["../source/client_utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA4CH,4CAmDC;AA7FD,iEAAqD;AAErD,yDAA8D;AAE9D,uGAAwF;AAIxF,MAAM,gBAAgB,GAAG,IAAA,iCAAa,EAAC,aAAa,CAAC,CAAC;AAEtD,sBAAsB;AAEtB,SAAS,yBAAyB,CAAC,MAAkB,EAAE,YAAoB;IACvE,OAAO,IAAI,qDAAU,CAAC;QAClB,YAAY,EAAE,oBAAoB,CAAC;YAC/B,QAAQ,EAAE,yBAAyB,CAAC;gBAChC;oBACI,eAAe,EAAE,KAAK;oBACtB,SAAS,EAAE,KAAK;oBAChB,eAAe,EAAE,gBAAgB;oBACjC,UAAU,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;iBACxD;aACJ;SACJ;QACD,YAAY,EAAE,aAAa,CAAC,MAAM;KACrC,CAAC,CAAC;AACP,CAAC;AAUD;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CAClC,OAAuF,EACvF,MAAkB;IAElB,MAAM,WAAW,GAAG;QAChB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,CAAC;QACrD,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC;QAC5C,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACpD,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,CAAC;QACnD,yBAAyB,CAAC,MAAM,EAAE,YAAY,CAAC;KAClD,CAAC;IAEF,MAAM,cAAc,GAA2B;QAC3C,UAAU,EAAE,IAAI;QAChB,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,IAAI;KACvB,CAAC;IAEF,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,SAAS,eAAe,CAAC,gBAAkC,EAAE,YAAoB;QAC7E,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1D,WAAW,CAAC,IAAI,CAAC;gBACb,WAAW,EAAE,oCAAY,CAAC,KAAK;gBAC/B,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;aAC/C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CACR,CAAC,UAAqB,EAAE,EAAE,CACtB,CAAE,cAAqD,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CACtG,CAAC;QACN,CAAC;IACL,CAAC;IAED,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC1D,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC/D,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACzD,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACxD,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnD,UAAU,CAAC,OAAO,CAAC,CAAC,MAAiB,EAAE,KAAa,EAAE,EAAE;QACpD,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"client_utils.js","sourceRoot":"","sources":["../source/client_utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAyCH,4CAmDC;AA1FD,iEAAqD;AAErD,yDAA8D;AAE9D,uGAAwF;AAIxF,MAAM,gBAAgB,GAAG,IAAA,iCAAa,EAAC,aAAa,CAAC,CAAC;AAEtD,sBAAsB;AAEtB,SAAS,yBAAyB,CAAC,MAAkB,EAAE,YAAoB;IACvE,OAAO,IAAI,qDAAU,CAAC;QAClB,YAAY,EAAE,oBAAoB,CAAC;YAC/B,QAAQ,EAAE,yBAAyB,CAAC;gBAChC;oBACI,eAAe,EAAE,KAAK;oBACtB,SAAS,EAAE,KAAK;oBAChB,eAAe,EAAE,gBAAgB;oBACjC,UAAU,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;iBACxD;aACJ;SACJ;QACD,YAAY,EAAE,aAAa,CAAC,MAAM;KACrC,CAAC,CAAC;AACP,CAAC;AAUD;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAClC,OAAuF,EACvF,MAAkB;IAElB,MAAM,WAAW,GAAG;QAChB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,CAAC;QACrD,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC;QAC5C,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACpD,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,CAAC;QACnD,yBAAyB,CAAC,MAAM,EAAE,YAAY,CAAC;KAClD,CAAC;IAEF,MAAM,cAAc,GAA2B;QAC3C,UAAU,EAAE,IAAI;QAChB,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,IAAI;KACvB,CAAC;IAEF,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,SAAS,eAAe,CAAC,gBAAkC,EAAE,YAAoB;QAC7E,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1D,WAAW,CAAC,IAAI,CAAC;gBACb,WAAW,EAAE,oCAAY,CAAC,KAAK;gBAC/B,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;aAC/C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CACR,CAAC,UAAqB,EAAE,EAAE,CACtB,CAAE,cAAqD,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CACtG,CAAC;QACN,CAAC;IACL,CAAC;IAED,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC1D,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC/D,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACzD,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACxD,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnD,UAAU,CAAC,OAAO,CAAC,CAAC,MAAiB,EAAE,KAAa,EAAE,EAAE;QACpD,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AAC1B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@ export { ServerState, ServiceCounterDataType } from "node-opcua-common";
24
24
  export { SecurityPolicy, ClientSecureChannelLayer, ConnectionStrategyOptions } from "node-opcua-secure-channel";
25
25
  import * as utils1 from "node-opcua-utils";
26
26
  export declare const utils: typeof utils1;
27
- import * as crypto_util1 from "node-opcua-crypto";
27
+ import * as crypto_util1 from "node-opcua-crypto/web";
28
28
  export declare const crypto_utils: typeof crypto_util1;
29
29
  export { hexDump, LogLevel, setLogLevel, setDebugLogger, setWarningLogger, setErrorLogger } from "node-opcua-debug";
30
30
  export { NodeId, resolveNodeId, makeNodeId, coerceNodeId, sameNodeId, ExpandedNodeId, makeExpandedNodeId, NodeIdLike, coerceExpandedNodeId } from "node-opcua-nodeid";
package/dist/index.js CHANGED
@@ -59,7 +59,7 @@ Object.defineProperty(exports, "SecurityPolicy", { enumerable: true, get: functi
59
59
  Object.defineProperty(exports, "ClientSecureChannelLayer", { enumerable: true, get: function () { return node_opcua_secure_channel_1.ClientSecureChannelLayer; } });
60
60
  const utils1 = __importStar(require("node-opcua-utils"));
61
61
  exports.utils = utils1;
62
- const crypto_util1 = __importStar(require("node-opcua-crypto"));
62
+ const crypto_util1 = __importStar(require("node-opcua-crypto/web"));
63
63
  exports.crypto_utils = crypto_util1;
64
64
  var node_opcua_debug_1 = require("node-opcua-debug");
65
65
  Object.defineProperty(exports, "hexDump", { enumerable: true, get: function () { return node_opcua_debug_1.hexDump; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gDAA8B;AAC9B,iDAA+B;AAC/B,mDAAiC;AACjC,wDAAsC;AACtC,+DAA6C;AAC7C,0DAAwC;AACxC,gEAA8C;AAC9C,uEAAqD;AACrD,sDAAoC;AACpC,2EAAyD;AACzD,iDAA+B;AAC/B,2CAAyB;AACzB,uDAAqC;AACrC,6EAA2D;AAC3D,uEAAqD;AACrD,6DAA2C;AAE3C,uDAA2C;AAAlC,2GAAA,MAAM,OAAA;AACf,mDAAiC;AAEjC,yEAA0E;AAAjE,gIAAA,uBAAuB,OAAA;AAEhC,uDAAwE;AAA/D,gHAAA,WAAW,OAAA;AAAE,2HAAA,sBAAsB,OAAA;AAE5C,uEAAgH;AAAvG,2HAAA,cAAc,OAAA;AAAE,qIAAA,wBAAwB,OAAA;AAEjD,yDAA2C;AAC9B,QAAA,KAAK,GAAG,MAAM,CAAC;AAE5B,gEAAkD;AACrC,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,qDAAoH;AAA3G,2GAAA,OAAO,OAAA;AAAE,4GAAA,QAAQ,OAAA;AAAE,+GAAA,WAAW,OAAA;AAAE,kHAAA,cAAc,OAAA;AAAE,oHAAA,gBAAgB,OAAA;AAAE,kHAAA,cAAc,OAAA;AAEzF,GAAG;AACH,uDAU2B;AATvB,2GAAA,MAAM,OAAA;AACN,kHAAA,aAAa,OAAA;AACb,+GAAA,UAAU,OAAA;AACV,iHAAA,YAAY,OAAA;AACZ,+GAAA,UAAU,OAAA;AACV,mHAAA,cAAc,OAAA;AACd,uHAAA,kBAAkB,OAAA;AAElB,yHAAA,oBAAoB,OAAA;AAExB,iEAAgF;AAAvE,oHAAA,UAAU,OAAA;AAAE,qHAAA,WAAW,OAAA;AAChC,qDAAmC;AACnC,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,uDAAuD;AAA9C,uHAAA,kBAAkB,OAAA;AAE3B,+DAA6C;AAC7C,4DAA0C;AAC1C,0DAAwC;AACxC,+DAA6C;AAC7C,+DAA6C;AAC7C,6DAA2C;AAC3C,2DAAyC;AACzC,0DAAwC;AACxC,oEAAkD;AAClD,6DAA2C;AAC3C,kEAAgD;AAChD,2EAAyD;AACzD,2DAAyC;AACzC,4DAA0C;AAC1C,4DAA0C;AAC1C,6EAA2D;AAC3D,qDAAsD;AAA7C,sHAAA,kBAAkB,OAAA;AAC3B,qDAAkF;AAAzE,kHAAA,cAAc,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAE,mHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gDAA8B;AAC9B,iDAA+B;AAC/B,mDAAiC;AACjC,wDAAsC;AACtC,+DAA6C;AAC7C,0DAAwC;AACxC,gEAA8C;AAC9C,uEAAqD;AACrD,sDAAoC;AACpC,2EAAyD;AACzD,iDAA+B;AAC/B,2CAAyB;AACzB,uDAAqC;AACrC,6EAA2D;AAC3D,uEAAqD;AACrD,6DAA2C;AAE3C,uDAA2C;AAAlC,2GAAA,MAAM,OAAA;AACf,mDAAiC;AAEjC,yEAA0E;AAAjE,gIAAA,uBAAuB,OAAA;AAEhC,uDAAwE;AAA/D,gHAAA,WAAW,OAAA;AAAE,2HAAA,sBAAsB,OAAA;AAE5C,uEAAgH;AAAvG,2HAAA,cAAc,OAAA;AAAE,qIAAA,wBAAwB,OAAA;AAEjD,yDAA2C;AAC9B,QAAA,KAAK,GAAG,MAAM,CAAC;AAE5B,oEAAsD;AACzC,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,qDAAoH;AAA3G,2GAAA,OAAO,OAAA;AAAE,4GAAA,QAAQ,OAAA;AAAE,+GAAA,WAAW,OAAA;AAAE,kHAAA,cAAc,OAAA;AAAE,oHAAA,gBAAgB,OAAA;AAAE,kHAAA,cAAc,OAAA;AAEzF,GAAG;AACH,uDAU2B;AATvB,2GAAA,MAAM,OAAA;AACN,kHAAA,aAAa,OAAA;AACb,+GAAA,UAAU,OAAA;AACV,iHAAA,YAAY,OAAA;AACZ,+GAAA,UAAU,OAAA;AACV,mHAAA,cAAc,OAAA;AACd,uHAAA,kBAAkB,OAAA;AAElB,yHAAA,oBAAoB,OAAA;AAExB,iEAAgF;AAAvE,oHAAA,UAAU,OAAA;AAAE,qHAAA,WAAW,OAAA;AAChC,qDAAmC;AACnC,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,uDAAuD;AAA9C,uHAAA,kBAAkB,OAAA;AAE3B,+DAA6C;AAC7C,4DAA0C;AAC1C,0DAAwC;AACxC,+DAA6C;AAC7C,+DAA6C;AAC7C,6DAA2C;AAC3C,2DAAyC;AACzC,0DAAwC;AACxC,oEAAkD;AAClD,6DAA2C;AAC3C,kEAAgD;AAChD,2EAAyD;AACzD,2DAAyC;AACzC,4DAA0C;AAC1C,4DAA0C;AAC1C,6EAA2D;AAC3D,qDAAsD;AAA7C,sHAAA,kBAAkB,OAAA;AAC3B,qDAAkF;AAAzE,kHAAA,cAAc,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAE,mHAAA,eAAe,OAAA"}
@@ -1,5 +1,5 @@
1
1
  import { OPCUASecureObject } from "node-opcua-common";
2
- import { Certificate } from "node-opcua-crypto";
2
+ import { Certificate } from "node-opcua-crypto/web";
3
3
  import { IBasicTransportSettings, ResponseCallback } from "node-opcua-pseudo-session";
4
4
  import { ClientSecureChannelLayer, ConnectionStrategy, ConnectionStrategyOptions, SecurityPolicy } from "node-opcua-secure-channel";
5
5
  import { ServerOnNetwork } from "node-opcua-service-discovery";
@@ -96,7 +96,6 @@ export declare class ClientBaseImpl extends OPCUASecureObject implements OPCUACl
96
96
  private _handleSuccessfulConnection;
97
97
  /**
98
98
  * connect the OPC-UA client to a server end point.
99
- * @async
100
99
  */
101
100
  connect(endpointUrl: string): Promise<void>;
102
101
  connect(endpointUrl: string, callback: ErrorCallback): void;
@@ -108,13 +107,13 @@ export declare class ClientBaseImpl extends OPCUASecureObject implements OPCUACl
108
107
  /**
109
108
  *
110
109
  * return the endpoint information matching security mode and security policy.
111
- * @method findEndpoint
110
+
112
111
  */
113
112
  findEndpointForSecurity(securityMode: MessageSecurityMode, securityPolicy: SecurityPolicy): EndpointDescription | undefined;
114
113
  /**
115
114
  *
116
115
  * return the endpoint information matching the specified url , security mode and security policy.
117
- * @method findEndpoint
116
+
118
117
  */
119
118
  findEndpoint(endpointUrl: string, securityMode: MessageSecurityMode, securityPolicy: SecurityPolicy): EndpointDescription | undefined;
120
119
  getEndpoints(options?: GetEndpointsOptions): Promise<EndpointDescription[]>;
@@ -125,7 +124,7 @@ export declare class ClientBaseImpl extends OPCUASecureObject implements OPCUACl
125
124
  */
126
125
  getEndpointsRequest(options: GetEndpointsOptions, callback: ResponseCallback<EndpointDescription[]>): void;
127
126
  /**
128
- * @method findServers
127
+
129
128
  */
130
129
  findServers(options?: FindServersRequestLike): Promise<ApplicationDescription[]>;
131
130
  findServers(options: FindServersRequestLike, callback: ResponseCallback<ApplicationDescription[]>): void;
@@ -27,7 +27,7 @@ const chalk_1 = __importDefault(require("chalk"));
27
27
  const global_mutex_1 = require("@ster5/global-mutex");
28
28
  const node_opcua_assert_1 = require("node-opcua-assert");
29
29
  const node_opcua_common_1 = require("node-opcua-common");
30
- const node_opcua_crypto_1 = require("node-opcua-crypto");
30
+ const web_1 = require("node-opcua-crypto/web");
31
31
  const node_opcua_date_time_1 = require("node-opcua-date-time");
32
32
  const node_opcua_debug_1 = require("node-opcua-debug");
33
33
  const node_opcua_common_2 = require("node-opcua-common");
@@ -177,7 +177,7 @@ function _verify_serverCertificate(certificateManager, serverCertificate, callba
177
177
  debugLog(status1);
178
178
  });
179
179
  }
180
- warningLog("serverCertificate = ", (0, node_opcua_crypto_1.makeSHA1Thumbprint)(serverCertificate).toString("hex"));
180
+ warningLog("serverCertificate = ", (0, web_1.makeSHA1Thumbprint)(serverCertificate).toString("hex"));
181
181
  warningLog("serverCertificate = ", serverCertificate.toString("base64"));
182
182
  return callback(new Error("server Certificate verification failed with err " + status?.toString()));
183
183
  }
@@ -437,7 +437,7 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
437
437
  err.message.match(/socket has been disconnected by third party/)) {
438
438
  warningLog("the server certificate has changed, we need to retrieve server certificate again: ", err.message);
439
439
  const oldServerCertificate = this.serverCertificate;
440
- warningLog("old server certificate ", oldServerCertificate ? (0, node_opcua_crypto_1.makeSHA1Thumbprint)(oldServerCertificate).toString("hex") : "undefined");
440
+ warningLog("old server certificate ", oldServerCertificate ? (0, web_1.makeSHA1Thumbprint)(oldServerCertificate).toString("hex") : "undefined");
441
441
  // the server may have shut down the channel because its certificate
442
442
  // has changed ....
443
443
  // let request the server certificate again ....
@@ -446,9 +446,9 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
446
446
  return _failAndRetry(err1, "Failing to fetch new server certificate", callback);
447
447
  }
448
448
  const newServerCertificate = this.serverCertificate;
449
- warningLog("new server certificate ", (0, node_opcua_crypto_1.makeSHA1Thumbprint)(newServerCertificate).toString("hex"));
450
- const sha1Old = oldServerCertificate ? (0, node_opcua_crypto_1.makeSHA1Thumbprint)(oldServerCertificate) : null;
451
- const sha1New = newServerCertificate ? (0, node_opcua_crypto_1.makeSHA1Thumbprint)(newServerCertificate) : null;
449
+ warningLog("new server certificate ", (0, web_1.makeSHA1Thumbprint)(newServerCertificate).toString("hex"));
450
+ const sha1Old = oldServerCertificate ? (0, web_1.makeSHA1Thumbprint)(oldServerCertificate) : null;
451
+ const sha1New = newServerCertificate ? (0, web_1.makeSHA1Thumbprint)(newServerCertificate) : null;
452
452
  if (sha1Old === sha1New) {
453
453
  warningLog("server certificate has not changed, but was expected to have changed");
454
454
  return _failAndRetry(new Error("Server Certificate not changed"), "Failing to fetch new server certificate", callback);
@@ -766,7 +766,7 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
766
766
  /**
767
767
  *
768
768
  * return the endpoint information matching security mode and security policy.
769
- * @method findEndpoint
769
+
770
770
  */
771
771
  findEndpointForSecurity(securityMode, securityPolicy) {
772
772
  securityMode = (0, node_opcua_service_secure_channel_1.coerceMessageSecurityMode)(securityMode);
@@ -779,7 +779,7 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
779
779
  /**
780
780
  *
781
781
  * return the endpoint information matching the specified url , security mode and security policy.
782
- * @method findEndpoint
782
+
783
783
  */
784
784
  findEndpoint(endpointUrl, securityMode, securityPolicy) {
785
785
  (0, node_opcua_assert_1.assert)(this.knowsServerEndpoint, "Server end point are not known yet");
@@ -1017,10 +1017,10 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
1017
1017
  str += " defaultSecureTokenLifetime.... " + this.defaultSecureTokenLifetime + "\n";
1018
1018
  str += " securityMode.................. " + node_opcua_service_secure_channel_1.MessageSecurityMode[this.securityMode] + "\n";
1019
1019
  str += " securityPolicy................ " + this.securityPolicy.toString() + "\n";
1020
- str += " certificate fingerprint....... " + (0, node_opcua_crypto_1.makeSHA1Thumbprint)(this.getCertificate()).toString("hex") + "\n";
1020
+ str += " certificate fingerprint....... " + (0, web_1.makeSHA1Thumbprint)(this.getCertificate()).toString("hex") + "\n";
1021
1021
  str +=
1022
1022
  " server certificate fingerprint " +
1023
- (this.serverCertificate ? (0, node_opcua_crypto_1.makeSHA1Thumbprint)(this.serverCertificate).toString("hex") : "") +
1023
+ (this.serverCertificate ? (0, web_1.makeSHA1Thumbprint)(this.serverCertificate).toString("hex") : "") +
1024
1024
  "\n";
1025
1025
  // this.serverCertificate = options.serverCertificate || null + "\n";
1026
1026
  str += " keepSessionAlive.............. " + this.keepSessionAlive + "\n";
@@ -1115,7 +1115,7 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
1115
1115
  warningLog("[NODE-OPCUA-W25] client's server certificate verification has failed ", err1.message);
1116
1116
  warningLog(" clientCertificateManager.rootDir = ", this.clientCertificateManager.rootDir);
1117
1117
  const f = (b) => " " + b.toString("base64").replace(/(.{80})/g, "$1\n ");
1118
- const chain = (0, node_opcua_crypto_1.split_der)(endpoint.serverCertificate);
1118
+ const chain = (0, web_1.split_der)(endpoint.serverCertificate);
1119
1119
  warningLog(` server certificate contains ${chain.length} elements`);
1120
1120
  for (let i = 0; i < chain.length; i++) {
1121
1121
  const c = chain[i];