node-opcua-server 2.166.0 → 2.168.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 (111) hide show
  1. package/dist/addressSpace_accessor.d.ts +6 -6
  2. package/dist/addressSpace_accessor.js +2 -2
  3. package/dist/addressSpace_accessor.js.map +1 -1
  4. package/dist/base_server.d.ts +14 -3
  5. package/dist/base_server.js +64 -44
  6. package/dist/base_server.js.map +1 -1
  7. package/dist/extract_password_from_blob.js +1 -3
  8. package/dist/extract_password_from_blob.js.map +1 -1
  9. package/dist/factory.d.ts +2 -3
  10. package/dist/factory.js.map +1 -1
  11. package/dist/filter/check_where_clause_on_address_space.d.ts +2 -2
  12. package/dist/filter/check_where_clause_on_address_space.js +1 -2
  13. package/dist/filter/check_where_clause_on_address_space.js.map +1 -1
  14. package/dist/filter/extract_event_fields.d.ts +3 -3
  15. package/dist/filter/extract_event_fields.js +1 -2
  16. package/dist/filter/extract_event_fields.js.map +1 -1
  17. package/dist/helper.d.ts +3 -3
  18. package/dist/helper.js +4 -8
  19. package/dist/helper.js.map +1 -1
  20. package/dist/i_address_space_accessor.d.ts +4 -4
  21. package/dist/i_channel_data.d.ts +1 -1
  22. package/dist/i_register_server_manager.d.ts +1 -1
  23. package/dist/i_server_side_publish_engine.d.ts +8 -6
  24. package/dist/i_server_side_publish_engine.js +7 -2
  25. package/dist/i_server_side_publish_engine.js.map +1 -1
  26. package/dist/index.d.ts +8 -7
  27. package/dist/index.js +8 -7
  28. package/dist/index.js.map +1 -1
  29. package/dist/invalidate_server_certificate_cache.d.ts +16 -0
  30. package/dist/invalidate_server_certificate_cache.js +28 -0
  31. package/dist/invalidate_server_certificate_cache.js.map +1 -0
  32. package/dist/monitored_item.d.ts +10 -11
  33. package/dist/monitored_item.js +38 -39
  34. package/dist/monitored_item.js.map +1 -1
  35. package/dist/node_sampler.d.ts +1 -1
  36. package/dist/node_sampler.js +2 -4
  37. package/dist/node_sampler.js.map +1 -1
  38. package/dist/opcua_server.d.ts +57 -62
  39. package/dist/opcua_server.js +10 -10
  40. package/dist/opcua_server.js.map +1 -1
  41. package/dist/register_server_manager.d.ts +8 -8
  42. package/dist/register_server_manager.js +40 -40
  43. package/dist/register_server_manager.js.map +1 -1
  44. package/dist/register_server_manager_hidden.d.ts +1 -1
  45. package/dist/register_server_manager_hidden.js +2 -4
  46. package/dist/register_server_manager_hidden.js.map +1 -1
  47. package/dist/register_server_manager_mdns_only.d.ts +1 -1
  48. package/dist/register_server_manager_mdns_only.js.map +1 -1
  49. package/dist/sampling_func.d.ts +2 -2
  50. package/dist/server_capabilities.d.ts +3 -3
  51. package/dist/server_capabilities.js.map +1 -1
  52. package/dist/server_end_point.d.ts +47 -4
  53. package/dist/server_end_point.js +133 -42
  54. package/dist/server_end_point.js.map +1 -1
  55. package/dist/server_engine.js +29 -25
  56. package/dist/server_engine.js.map +1 -1
  57. package/dist/server_publish_engine.d.ts +5 -5
  58. package/dist/server_publish_engine.js +29 -23
  59. package/dist/server_publish_engine.js.map +1 -1
  60. package/dist/server_publish_engine_for_orphan_subscriptions.d.ts +2 -2
  61. package/dist/server_publish_engine_for_orphan_subscriptions.js.map +1 -1
  62. package/dist/server_session.d.ts +9 -10
  63. package/dist/server_session.js +11 -12
  64. package/dist/server_session.js.map +1 -1
  65. package/dist/server_subscription.d.ts +13 -13
  66. package/dist/server_subscription.js +100 -79
  67. package/dist/server_subscription.js.map +1 -1
  68. package/dist/sessions_compatible_for_transfer.d.ts +1 -1
  69. package/dist/sessions_compatible_for_transfer.js +1 -1
  70. package/dist/sessions_compatible_for_transfer.js.map +1 -1
  71. package/dist/user_manager.d.ts +4 -4
  72. package/dist/user_manager.js +1 -1
  73. package/dist/user_manager.js.map +1 -1
  74. package/dist/user_manager_ua.d.ts +2 -2
  75. package/dist/user_manager_ua.js +2 -2
  76. package/dist/user_manager_ua.js.map +1 -1
  77. package/dist/validate_filter.d.ts +7 -4
  78. package/dist/validate_filter.js +5 -6
  79. package/dist/validate_filter.js.map +1 -1
  80. package/package.json +51 -50
  81. package/source/addressSpace_accessor.ts +24 -24
  82. package/source/base_server.ts +75 -63
  83. package/source/extract_password_from_blob.ts +3 -11
  84. package/source/factory.ts +2 -4
  85. package/source/filter/check_where_clause_on_address_space.ts +4 -7
  86. package/source/filter/extract_event_fields.ts +4 -5
  87. package/source/helper.ts +9 -13
  88. package/source/i_address_space_accessor.ts +13 -4
  89. package/source/i_channel_data.ts +1 -1
  90. package/source/i_register_server_manager.ts +2 -4
  91. package/source/i_server_side_publish_engine.ts +16 -9
  92. package/source/index.ts +10 -9
  93. package/source/invalidate_server_certificate_cache.ts +26 -0
  94. package/source/monitored_item.ts +44 -42
  95. package/source/node_sampler.ts +9 -11
  96. package/source/opcua_server.ts +86 -99
  97. package/source/register_server_manager.ts +75 -72
  98. package/source/register_server_manager_hidden.ts +3 -5
  99. package/source/register_server_manager_mdns_only.ts +1 -3
  100. package/source/sampling_func.ts +2 -2
  101. package/source/server_capabilities.ts +9 -6
  102. package/source/server_end_point.ts +143 -50
  103. package/source/server_engine.ts +22 -22
  104. package/source/server_publish_engine.ts +35 -30
  105. package/source/server_publish_engine_for_orphan_subscriptions.ts +3 -3
  106. package/source/server_session.ts +36 -33
  107. package/source/server_subscription.ts +182 -184
  108. package/source/sessions_compatible_for_transfer.ts +9 -9
  109. package/source/user_manager.ts +7 -7
  110. package/source/user_manager_ua.ts +3 -5
  111. package/source/validate_filter.ts +9 -11
@@ -1,3 +1,3 @@
1
- import { MonitoredItem } from "./monitored_item";
1
+ import type { MonitoredItem } from "./monitored_item";
2
2
  export declare function appendToTimer(monitoredItem: MonitoredItem): string;
3
3
  export declare function removeFromTimer(monitoredItem: MonitoredItem): void;
@@ -37,7 +37,7 @@ function appendToTimer(monitoredItem) {
37
37
  const start = doDebug ? (0, node_opcua_utils_1.hrtime)() : undefined;
38
38
  let counter = 0;
39
39
  for (const m in _t.monitoredItems) {
40
- if (Object.prototype.hasOwnProperty.call(_t.monitoredItems, m)) {
40
+ if (Object.hasOwn(_t.monitoredItems, m)) {
41
41
  sampleMonitoredItem(_t.monitoredItems[m]);
42
42
  counter++;
43
43
  }
@@ -45,9 +45,7 @@ function appendToTimer(monitoredItem) {
45
45
  // c8 ignore next
46
46
  if (doDebug) {
47
47
  const elapsed = (0, node_opcua_utils_1.hrtime)(start);
48
- debugLog(`Sampler ${samplingInterval} ms : Benchmark took ${((elapsed[0] * NS_PER_SEC + elapsed[1]) /
49
- 1000 /
50
- 1000.0).toFixed(3)} milliseconds for ${counter} elements`);
48
+ debugLog(`Sampler ${samplingInterval} ms : Benchmark took ${((elapsed[0] * NS_PER_SEC + elapsed[1]) / 1000 / 1000.0).toFixed(3)} milliseconds for ${counter} elements`);
51
49
  }
52
50
  }, samplingInterval);
53
51
  timers[key] = _t;
@@ -1 +1 @@
1
- {"version":3,"file":"node_sampler.js","sourceRoot":"","sources":["../source/node_sampler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node_sampler.js","sourceRoot":"","sources":["../source/node_sampler.ts"],"names":[],"mappings":"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"}
@@ -237,10 +237,63 @@ export interface OPCUAServerOptions extends OPCUABaseServerOptions, OPCUAServerE
237
237
  skipOwnNamespace?: boolean;
238
238
  transportSettings?: IServerTransportSettings;
239
239
  }
240
- /**
241
- *
242
- */
243
- export declare class OPCUAServer extends OPCUABaseServer {
240
+ export interface OPCUAServerEvents {
241
+ /** event raised when a new session is created */
242
+ create_session: [session: ServerSession];
243
+ /** event raised when a session is activated */
244
+ session_activated: [session: ServerSession, userIdentityToken: UserIdentityToken];
245
+ /** event raised when a session is closed */
246
+ session_closed: [session: ServerSession, deleteSubscriptions: boolean];
247
+ /** event raised after the server address space has been initialized */
248
+ post_initialize: [];
249
+ /**
250
+ * emitted when the server is trying to register with the LDS
251
+ * but the connection has failed (backoff signal)
252
+ */
253
+ serverRegistrationPending: [];
254
+ /** event raised when server has been successfully registered on the LDS */
255
+ serverRegistered: [];
256
+ /** event raised when server registration has been successfully renewed on the LDS */
257
+ serverRegistrationRenewed: [];
258
+ /** event raised when server has been successfully unregistered from the LDS */
259
+ serverUnregistered: [];
260
+ /** event raised after the server has raised an OPCUA event toward a client */
261
+ event: [eventData: unknown];
262
+ /**
263
+ * event raised when the server receives a request from a connected client.
264
+ * Useful for trace/diagnostics.
265
+ */
266
+ request: [request: Request, channel: ServerSecureChannelLayer];
267
+ /**
268
+ * event raised when the server sends a response to a connected client.
269
+ * Useful for trace/diagnostics.
270
+ */
271
+ response: [response: Response, channel: ServerSecureChannelLayer];
272
+ /**
273
+ * event raised when a new secure channel transport is initialized (HEL/ACK complete).
274
+ * Note: securityPolicy and securityMode are NOT yet established at this point.
275
+ * Use "channelSecured" for post-handshake notifications.
276
+ */
277
+ newChannel: [channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint];
278
+ /**
279
+ * event raised when a secure channel has completed the OpenSecureChannel handshake.
280
+ * At this point securityPolicy, securityMode, and clientCertificate are available.
281
+ */
282
+ channelSecured: [channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint];
283
+ /** event raised when a secure channel is closed */
284
+ closeChannel: [channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint];
285
+ /**
286
+ * event raised when the server refused a TCP connection from a client
287
+ * (for instance because too many connections)
288
+ */
289
+ connectionRefused: [socketData: ISocketData, endpoint: OPCUAServerEndPoint];
290
+ /**
291
+ * event raised when an OpenSecureChannel has failed,
292
+ * e.g. invalid certificate or malformed message
293
+ */
294
+ openSecureChannelFailure: [socketData: ISocketData, channelData: IChannelData, endpoint: OPCUAServerEndPoint];
295
+ }
296
+ export declare class OPCUAServer extends OPCUABaseServer<OPCUAServerEvents> {
244
297
  engine: ServerEngine;
245
298
  registerServerMethod: RegisterServerMethod;
246
299
  discoveryServerEndpointUrl: string;
@@ -601,64 +654,6 @@ export declare class OPCUAServer extends OPCUABaseServer {
601
654
  private createEndpoint;
602
655
  private createEndpointDescriptions;
603
656
  initializeCM(): Promise<void>;
604
- on(event: "create_session", eventHandler: (session: ServerSession) => void): this;
605
- on(event: "session_activated", eventHandler: (session: ServerSession) => void): this;
606
- on(event: "session_closed", eventHandler: (session: ServerSession, reason: string) => void): this;
607
- on(event: "post_initialize", eventHandler: () => void): this;
608
- /**
609
- * emitted when the server is trying to registered the LDS
610
- * but when the connection to the lds has failed
611
- * serverRegistrationPending is sent when the backoff signal of the
612
- * connection process is raised
613
- * @event serverRegistrationPending
614
- */
615
- on(event: "serverRegistrationPending", eventHandler: () => void): this;
616
- /**
617
- * event raised when server has been successfully registered on the local discovery server
618
- * @event serverRegistered
619
- */
620
- on(event: "serverRegistered", eventHandler: () => void): this;
621
- /**
622
- * event raised when server registration has been successfully renewed on the local discovery server
623
- * @event serverRegistered
624
- */
625
- on(event: "serverRegistrationRenewed", eventHandler: () => void): this;
626
- /**
627
- * event raised when server has been successfully unregistered from the local discovery server
628
- * @event serverUnregistered
629
- */
630
- on(event: "serverUnregistered", eventHandler: () => void): this;
631
- /**
632
- * event raised after the server has raised an OPCUA event toward a client
633
- */
634
- on(event: "event", eventHandler: (eventData: unknown) => void): this;
635
- /**
636
- * event raised when the server received a request from one of its connected client.
637
- * useful for trace purpose.
638
- */
639
- on(event: "request", eventHandler: (request: Request, channel: ServerSecureChannelLayer) => void): this;
640
- /**
641
- * event raised when the server send an response to a request to one of its connected client.
642
- * useful for trace purpose.
643
- */
644
- on(event: "response", eventHandler: (request: Response, channel: ServerSecureChannelLayer) => void): this;
645
- /**
646
- * event raised when a new secure channel is opened
647
- */
648
- on(event: "newChannel", eventHandler: (channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint) => void): this;
649
- /**
650
- * event raised when a new secure channel is closed
651
- */
652
- on(event: "closeChannel", eventHandler: (channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint) => void): this;
653
- /**
654
- * event raised when the server refused a tcp connection from a client. ( for instance because too any connections)
655
- */
656
- on(event: "connectionRefused", eventHandler: (socketData: ISocketData, endpoint: OPCUAServerEndPoint) => void): this;
657
- /**
658
- * event raised when a OpenSecureChannel has failed, it could be a invalid certificate or malformed message
659
- */
660
- on(event: "openSecureChannelFailure", eventHandler: (socketData: ISocketData, channelData: IChannelData, endpoint: OPCUAServerEndPoint) => void): this;
661
- on(event: string, eventHandler: (...args: unknown[]) => void): this;
662
657
  }
663
658
  export interface RaiseEventAuditEventData extends RaiseEventData {
664
659
  actionTimeStamp: PseudoVariantDateTime;
@@ -41,12 +41,12 @@ const node_opcua_utils_1 = require("node-opcua-utils");
41
41
  const node_opcua_variant_1 = require("node-opcua-variant");
42
42
  const thenify_ex_1 = require("thenify-ex");
43
43
  const base_server_1 = require("./base_server");
44
+ const extract_password_from_blob_1 = require("./extract_password_from_blob");
44
45
  const factory_1 = require("./factory");
45
46
  const monitored_item_1 = require("./monitored_item");
46
47
  const register_server_manager_1 = require("./register_server_manager");
47
48
  const register_server_manager_hidden_1 = require("./register_server_manager_hidden");
48
49
  const register_server_manager_mdns_only_1 = require("./register_server_manager_mdns_only");
49
- const extract_password_from_blob_1 = require("./extract_password_from_blob");
50
50
  const server_end_point_1 = require("./server_end_point");
51
51
  const server_engine_1 = require("./server_engine");
52
52
  const user_manager_1 = require("./user_manager");
@@ -484,9 +484,6 @@ var RegisterServerMethod;
484
484
  RegisterServerMethod[RegisterServerMethod["LDS"] = 3] = "LDS"; // the server registers itself to the LDS or LDS-ME (Local Discovery Server)
485
485
  })(RegisterServerMethod || (exports.RegisterServerMethod = RegisterServerMethod = {}));
486
486
  const g_requestExactEndpointUrl = !!process.env.NODEOPCUA_SERVER_REQUEST_EXACT_ENDPOINT_URL;
487
- /**
488
- *
489
- */
490
487
  class OPCUAServer extends base_server_1.OPCUABaseServer {
491
488
  engine;
492
489
  registerServerMethod;
@@ -1397,7 +1394,7 @@ class OPCUAServer extends base_server_1.OPCUABaseServer {
1397
1394
  // If the securityPolicyUri is None and none of the UserTokenPolicies requires
1398
1395
  // encryption, the Server shall not send an ApplicationInstanceCertificate and the Client
1399
1396
  // shall ignore the ApplicationInstanceCertificate.
1400
- serverCertificate: hasEncryption ? serverCertificateChain : undefined,
1397
+ serverCertificate: hasEncryption && serverCertificateChain.length > 0 ? (0, web_1.combine_der)(serverCertificateChain) : undefined,
1401
1398
  // The endpoints provided by the server.
1402
1399
  // The Server shall return a set of EndpointDescriptions available for the serverUri
1403
1400
  // specified in the request.[...]
@@ -2587,6 +2584,13 @@ class OPCUAServer extends base_server_1.OPCUABaseServer {
2587
2584
  serverInfo: this.serverInfo,
2588
2585
  transportSettings: serverOptions.transportSettings
2589
2586
  });
2587
+ // SecretHolder reads certificateFile/privateKeyFile from `this`
2588
+ // on each access, so it follows Object.defineProperty redirects
2589
+ // (e.g. from push cert management) automatically.
2590
+ // Note: creates a cycle (server → endpoint → SecretHolder → server)
2591
+ // which is harmless — V8 mark-and-sweep handles it, and
2592
+ // endpoint.dispose() breaks it by replacing #certProvider.
2593
+ endPoint.setCertificateProvider(new node_opcua_common_1.SecretHolder(this));
2590
2594
  return endPoint;
2591
2595
  }
2592
2596
  createEndpointDescriptions(serverOption, endpointOptions) {
@@ -2619,7 +2623,7 @@ class OPCUAServer extends base_server_1.OPCUABaseServer {
2619
2623
  disableDiscovery: !!endpointOptions.disableDiscovery,
2620
2624
  // xx hostname,
2621
2625
  resourcePath: serverOption.resourcePath || "",
2622
- advertisedEndpoints: endpointOptions.advertisedEndpoints,
2626
+ advertisedEndpoints: endpointOptions.advertisedEndpoints
2623
2627
  // TODO userTokenTypes: endpointOptions.userTokenTypes || undefined,
2624
2628
  // TODO allowUnsecurePassword: endpointOptions.allowUnsecurePassword || false
2625
2629
  });
@@ -2629,10 +2633,6 @@ class OPCUAServer extends base_server_1.OPCUABaseServer {
2629
2633
  await super.initializeCM();
2630
2634
  await this.userCertificateManager.initialize();
2631
2635
  }
2632
- // biome-ignore lint/suspicious/noExplicitAny: must match EventEmitter.on() signature
2633
- on(event, eventHandler) {
2634
- return super.on(event, eventHandler);
2635
- }
2636
2636
  }
2637
2637
  exports.OPCUAServer = OPCUAServer;
2638
2638
  const userIdentityTokenPasswordRemoved = (userIdentityToken) => {