node-opcua-client 2.73.1 → 2.76.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 (83) hide show
  1. package/LICENSE +3 -1
  2. package/README.md +54 -0
  3. package/dist/alarms_and_conditions/client_alarm.d.ts +49 -45
  4. package/dist/alarms_and_conditions/client_alarm.js +109 -101
  5. package/dist/alarms_and_conditions/client_alarm.js.map +1 -1
  6. package/dist/alarms_and_conditions/client_alarm_list.d.ts +25 -25
  7. package/dist/alarms_and_conditions/client_alarm_list.js +97 -97
  8. package/dist/alarms_and_conditions/client_alarm_list.js.map +1 -1
  9. package/dist/alarms_and_conditions/client_alarm_tools.d.ts +4 -4
  10. package/dist/alarms_and_conditions/client_alarm_tools.js +156 -152
  11. package/dist/alarms_and_conditions/client_alarm_tools.js.map +1 -1
  12. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.d.ts +18 -18
  13. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js +192 -190
  14. package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js.map +1 -1
  15. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.d.ts +9 -9
  16. package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js +73 -73
  17. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.d.ts +3 -8
  18. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js +118 -120
  19. package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js.map +1 -1
  20. package/dist/alarms_and_conditions/client_tools.d.ts +7 -7
  21. package/dist/alarms_and_conditions/client_tools.js +180 -180
  22. package/dist/client_base.d.ts +277 -277
  23. package/dist/client_base.js +14 -14
  24. package/dist/client_monitored_item.d.ts +21 -21
  25. package/dist/client_monitored_item.js +11 -11
  26. package/dist/client_monitored_item_base.d.ts +39 -39
  27. package/dist/client_monitored_item_base.js +2 -2
  28. package/dist/client_monitored_item_group.d.ts +18 -18
  29. package/dist/client_monitored_item_group.js +13 -13
  30. package/dist/client_monitored_item_toolbox.d.ts +15 -15
  31. package/dist/client_monitored_item_toolbox.js +117 -117
  32. package/dist/client_session.d.ts +484 -484
  33. package/dist/client_session.js +10 -10
  34. package/dist/client_session_keepalive_manager.d.ts +34 -34
  35. package/dist/client_session_keepalive_manager.js +150 -150
  36. package/dist/client_subscription.d.ts +241 -241
  37. package/dist/client_subscription.js +14 -14
  38. package/dist/client_utils.d.ts +22 -22
  39. package/dist/client_utils.js +88 -88
  40. package/dist/common.d.ts +17 -17
  41. package/dist/common.js +5 -5
  42. package/dist/index.d.ts +55 -55
  43. package/dist/index.js +93 -93
  44. package/dist/opcua_client.d.ts +132 -132
  45. package/dist/opcua_client.js +33 -33
  46. package/dist/private/client_base_impl.d.ts +157 -157
  47. package/dist/private/client_base_impl.js +1337 -1337
  48. package/dist/private/client_monitored_item_base_impl.d.ts +3 -3
  49. package/dist/private/client_monitored_item_base_impl.js +4 -4
  50. package/dist/private/client_monitored_item_group_impl.d.ts +53 -53
  51. package/dist/private/client_monitored_item_group_impl.js +159 -159
  52. package/dist/private/client_monitored_item_impl.d.ts +93 -93
  53. package/dist/private/client_monitored_item_impl.js +305 -304
  54. package/dist/private/client_monitored_item_impl.js.map +1 -1
  55. package/dist/private/client_publish_engine.d.ts +62 -62
  56. package/dist/private/client_publish_engine.js +408 -408
  57. package/dist/private/client_session_impl.d.ts +621 -621
  58. package/dist/private/client_session_impl.js +1302 -1301
  59. package/dist/private/client_session_impl.js.map +1 -1
  60. package/dist/private/client_subscription_impl.d.ts +93 -93
  61. package/dist/private/client_subscription_impl.js +748 -743
  62. package/dist/private/client_subscription_impl.js.map +1 -1
  63. package/dist/private/i_private_client.d.ts +18 -18
  64. package/dist/private/i_private_client.js +2 -2
  65. package/dist/private/opcua_client_impl.d.ts +169 -169
  66. package/dist/private/opcua_client_impl.js +981 -981
  67. package/dist/reconnection.d.ts +9 -9
  68. package/dist/reconnection.js +408 -408
  69. package/dist/tools/findservers.d.ts +20 -20
  70. package/dist/tools/findservers.js +61 -61
  71. package/dist/tools/read_history_server_capabilities.d.ts +6 -6
  72. package/dist/tools/read_history_server_capabilities.js +99 -99
  73. package/dist/verify.d.ts +5 -5
  74. package/dist/verify.js +134 -134
  75. package/package.json +48 -48
  76. package/source/alarms_and_conditions/client_alarm.ts +28 -17
  77. package/source/alarms_and_conditions/client_alarm_list.ts +1 -0
  78. package/source/alarms_and_conditions/client_alarm_tools.ts +33 -23
  79. package/source/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.ts +10 -4
  80. package/source/alarms_and_conditions/client_alarm_tools_extractConditionFields.ts +11 -11
  81. package/source/private/client_monitored_item_impl.ts +4 -3
  82. package/source/private/client_session_impl.ts +10 -2
  83. package/source/private/client_subscription_impl.ts +6 -2
package/LICENSE CHANGED
@@ -1,6 +1,8 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2014-2021 Etienne Rossignon
3
+ Copyright (c) 2022 Sterfive SAS - 833264583 RCS ORLEANS - France (https://www.sterfive.com)
4
+
5
+ Copyright (c) 2014-2022 Etienne Rossignon
4
6
 
5
7
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
8
  this software and associated documentation files (the "Software"), to deal in
package/README.md CHANGED
@@ -6,3 +6,57 @@ an implementation of a OPC UA stack fully written in javascript and nodejs
6
6
 
7
7
  see http://node-opcua.github.io/
8
8
 
9
+
10
+ # Documentation
11
+
12
+ "NodeOPCUA by Example" (https://leanpub.com/node-opcuabyexample) provides a good starting point to understand and start using node-opcua.
13
+
14
+ More advanced interactive material & documentation is made available online for Registered members of the NodeOPCUA Subscription. Please visit https://support.sterfive.com to apply or contact Sterfive.
15
+
16
+
17
+ ## Sponsors & Backers
18
+
19
+ We appreciate that, once you have evaluated the software you consider supporting our effort by applying to our sponsor program:
20
+
21
+ - https://github.com/sponsors/node-opcua
22
+ - https://opencollective.com/node-opcua
23
+
24
+ Grants ensure the following:
25
+
26
+ - 🔨 Long term maintenance of the project
27
+ - ⚙️ maintain the website and continuous integration platform
28
+ - 🛣 Progress on the road-map
29
+ - 🐛 Quick responses to bug reports
30
+ - 🚀 New features & enhancements
31
+ - ⚖️ representing the node-opcua user community at the OPC Foundation
32
+
33
+ # Support
34
+
35
+ Technical Support is exclusively provided to registered members of the NodeOPCUA Subscription (https://support.sterfive.com) or through dedicated Professional Services.
36
+
37
+ # License
38
+
39
+ Node-OPCUA is made available to you under the MIT open source license.
40
+
41
+ See [LICENSE](./LICENSE) for details.
42
+
43
+
44
+ # value-added extensions
45
+
46
+ Contact Sterfive SAS (mailto:contact@sterfive.com) for additional companion modules that are available to registered members:
47
+
48
+ - node-opcua-pub-sub : Part 14 implementation to develop OPC UA PubSub over MQTT applications
49
+ - node-opcua-webproxy: to operate node-opcua from within a web browser
50
+ - node-opcua-optimized-client: super-charge OPC UA Client
51
+ - react-components: a collection of React UI components
52
+ - aggregator: a powerful OPC UA aggregator that can combine and monitored hundred of servers and millions of variables.
53
+ - node-opcua-gds: a Global Discovery Server (Part 12)
54
+ - node-opcua-modeler-ex: a powerful NO-GUI OPC UA modeler
55
+
56
+
57
+ # Copyright
58
+
59
+ Copyright (c) 2022 Sterfive SAS
60
+
61
+ Copyright (c) 2014-2022 Etienne Rossignon
62
+
@@ -1,45 +1,49 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { EventEmitter } from "events";
4
- import { NodeId } from "node-opcua-nodeid";
5
- import { StatusCode } from "node-opcua-status-code";
6
- import { Variant } from "node-opcua-variant";
7
- import { ClientSession } from "../client_session";
8
- export interface TVariant<T> extends Variant {
9
- value: T;
10
- }
11
- export interface TTwoStateStatus extends TVariant<string> {
12
- id: TVariant<boolean>;
13
- }
14
- export interface EventStuff {
15
- conditionId: TVariant<NodeId>;
16
- eventType: TVariant<NodeId>;
17
- eventId: TVariant<Buffer>;
18
- retain: TVariant<boolean>;
19
- activeState: TTwoStateStatus;
20
- ackedState: TTwoStateStatus;
21
- confirmedState: TTwoStateStatus;
22
- }
23
- export interface ClientAlarm {
24
- conditionId: NodeId;
25
- eventType: NodeId;
26
- fields: EventStuff;
27
- on(eventName: "changed", eventHandler: () => void): this;
28
- acknowledge(session: ClientSession, comment: string): Promise<StatusCode>;
29
- getField(fieldName: string): Variant | null;
30
- }
31
- /**
32
- * describes a OPCUA Alarm as seen in the client side
33
- */
34
- export declare class ClientAlarm extends EventEmitter {
35
- conditionId: NodeId;
36
- eventType: NodeId;
37
- eventId: Buffer;
38
- fields: EventStuff;
39
- constructor(eventFields: EventStuff);
40
- confirm(session: ClientSession, comment: string): Promise<StatusCode>;
41
- update(eventFields: EventStuff): void;
42
- getRetain(): boolean;
43
- toString(): string;
44
- }
45
- export declare function fieldsToJson(fields: string[], eventFields: Variant[]): EventStuff;
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { EventEmitter } from "events";
4
+ import { NodeId } from "node-opcua-nodeid";
5
+ import { StatusCode } from "node-opcua-status-code";
6
+ import { Variant } from "node-opcua-variant";
7
+ import { ClientSession } from "../client_session";
8
+ export interface TVariant<T> extends Variant {
9
+ value: T;
10
+ }
11
+ export interface TTwoStateStatus extends TVariant<string> {
12
+ id: TVariant<boolean>;
13
+ }
14
+ export interface EventStuff {
15
+ conditionId: TVariant<NodeId>;
16
+ eventType: TVariant<NodeId>;
17
+ eventId: TVariant<Buffer>;
18
+ retain: TVariant<boolean>;
19
+ activeState: TTwoStateStatus;
20
+ ackedState: TTwoStateStatus;
21
+ confirmedState: TTwoStateStatus;
22
+ conditionName?: TVariant<string>;
23
+ }
24
+ export interface ClientAlarm {
25
+ conditionId: NodeId;
26
+ eventType: NodeId;
27
+ fields: EventStuff;
28
+ on(eventName: "changed", eventHandler: () => void): this;
29
+ acknowledge(session: ClientSession, comment: string): Promise<StatusCode>;
30
+ getField(fieldName: string): Variant | null;
31
+ }
32
+ /**
33
+ * describes a OPCUA Alarm as seen in the client side
34
+ */
35
+ export declare class ClientAlarm extends EventEmitter {
36
+ conditionId: NodeId;
37
+ eventType: NodeId;
38
+ eventId: Buffer;
39
+ fields: EventStuff;
40
+ constructor(eventFields: EventStuff);
41
+ confirm(session: ClientSession, comment: string): Promise<StatusCode>;
42
+ update(eventFields: EventStuff): void;
43
+ getRetain(): boolean;
44
+ toString(): string;
45
+ }
46
+ /**
47
+ * @private
48
+ */
49
+ export declare function fieldsToJson(fields: string[], eventFields: Variant[], flat?: boolean): EventStuff;
@@ -1,102 +1,110 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.fieldsToJson = exports.ClientAlarm = void 0;
13
- const events_1 = require("events");
14
- const node_opcua_assert_1 = require("node-opcua-assert");
15
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
16
- const node_opcua_utils_1 = require("node-opcua-utils");
17
- const node_opcua_variant_1 = require("node-opcua-variant");
18
- /**
19
- * describes a OPCUA Alarm as seen in the client side
20
- */
21
- class ClientAlarm extends events_1.EventEmitter {
22
- constructor(eventFields) {
23
- super();
24
- this.conditionId = (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.conditionId.value);
25
- this.eventType = (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.eventType.value);
26
- this.eventId = eventFields.eventId.value;
27
- this.fields = eventFields;
28
- this.update(eventFields);
29
- }
30
- acknowledge(session, comment) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- return yield session.acknowledgeCondition(this.conditionId, this.eventId, comment);
33
- });
34
- }
35
- confirm(session, comment) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- return yield session.confirmCondition(this.conditionId, this.eventId, comment);
38
- });
39
- }
40
- update(eventFields) {
41
- (0, node_opcua_assert_1.assert)(this.conditionId.toString() === (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.conditionId.value).toString());
42
- (0, node_opcua_assert_1.assert)(this.eventType.toString() === (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.eventType.value).toString());
43
- this.eventId = eventFields.eventId.value;
44
- this.fields = eventFields;
45
- }
46
- getRetain() {
47
- return this.fields.retain.value;
48
- }
49
- toString() {
50
- return (this.constructor.name +
51
- ": " +
52
- this.conditionId.toString() +
53
- " " +
54
- this.eventType.toString() +
55
- " " +
56
- Object.entries(this.fields)
57
- .filter(([key, value]) => value.dataType !== node_opcua_variant_1.DataType.Null)
58
- .map(([key, value]) => key.padEnd(30) + "=" + value.toString())
59
- .join("\n") +
60
- "\n\n");
61
- }
62
- getField(fieldName) {
63
- return this.fields[fieldName] || null;
64
- }
65
- }
66
- exports.ClientAlarm = ClientAlarm;
67
- // ------------------------------------------------------------------------------------------------------------------------------
68
- function fieldsToJson(fields, eventFields) {
69
- function setProperty(_data, fieldName, value) {
70
- let name;
71
- if (!fieldName || value === null) {
72
- return;
73
- }
74
- const f = fieldName.split(".");
75
- if (f.length === 1) {
76
- fieldName = (0, node_opcua_utils_1.lowerFirstLetter)(fieldName);
77
- _data[fieldName] = value;
78
- }
79
- else {
80
- for (let i = 0; i < f.length - 1; i++) {
81
- name = (0, node_opcua_utils_1.lowerFirstLetter)(f[i]);
82
- _data[name] = _data[name] || {};
83
- _data = _data[name];
84
- }
85
- name = (0, node_opcua_utils_1.lowerFirstLetter)(f[f.length - 1]);
86
- _data[name] = value;
87
- }
88
- }
89
- if (fields.length > eventFields.length) {
90
- // tslint:disable-next-line: no-console
91
- console.log("warning fields.length !== eventFields.length", fields.length, eventFields.length);
92
- }
93
- const data = {};
94
- for (let index = 0; index < fields.length; index++) {
95
- const variant = eventFields[index];
96
- setProperty(data, fields[index], variant);
97
- }
98
- setProperty(data, "conditionId", eventFields[eventFields.length - 1]);
99
- return data;
100
- }
101
- exports.fieldsToJson = fieldsToJson;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.fieldsToJson = exports.ClientAlarm = void 0;
13
+ const events_1 = require("events");
14
+ const node_opcua_assert_1 = require("node-opcua-assert");
15
+ const node_opcua_debug_1 = require("node-opcua-debug");
16
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
17
+ const node_opcua_utils_1 = require("node-opcua-utils");
18
+ const node_opcua_variant_1 = require("node-opcua-variant");
19
+ const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
20
+ /**
21
+ * describes a OPCUA Alarm as seen in the client side
22
+ */
23
+ class ClientAlarm extends events_1.EventEmitter {
24
+ constructor(eventFields) {
25
+ super();
26
+ this.conditionId = (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.conditionId.value);
27
+ this.eventType = (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.eventType.value);
28
+ this.eventId = eventFields.eventId.value;
29
+ this.fields = eventFields;
30
+ this.update(eventFields);
31
+ }
32
+ acknowledge(session, comment) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ return yield session.acknowledgeCondition(this.conditionId, this.eventId, comment);
35
+ });
36
+ }
37
+ confirm(session, comment) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ return yield session.confirmCondition(this.conditionId, this.eventId, comment);
40
+ });
41
+ }
42
+ update(eventFields) {
43
+ (0, node_opcua_assert_1.assert)(this.conditionId.toString() === (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.conditionId.value).toString());
44
+ (0, node_opcua_assert_1.assert)(this.eventType.toString() === (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.eventType.value).toString());
45
+ this.eventId = eventFields.eventId.value;
46
+ this.fields = eventFields;
47
+ }
48
+ getRetain() {
49
+ return this.fields.retain.value;
50
+ }
51
+ toString() {
52
+ return (this.constructor.name +
53
+ ": " +
54
+ this.conditionId.toString() +
55
+ " " +
56
+ this.eventType.toString() +
57
+ " " +
58
+ Object.entries(this.fields)
59
+ .filter(([key, value]) => value.dataType !== node_opcua_variant_1.DataType.Null)
60
+ .map(([key, value]) => key.padEnd(30) + "=" + value.toString())
61
+ .join("\n") +
62
+ "\n\n");
63
+ }
64
+ getField(fieldName) {
65
+ return this.fields[fieldName] || null;
66
+ }
67
+ }
68
+ exports.ClientAlarm = ClientAlarm;
69
+ /**
70
+ * @private
71
+ */
72
+ function fieldsToJson(fields, eventFields, flat) {
73
+ function setProperty(_data, fieldName, value) {
74
+ let name;
75
+ if (!fieldName || value === null) {
76
+ return;
77
+ }
78
+ if (!flat) {
79
+ const f = fieldName.split(".");
80
+ if (f.length === 1) {
81
+ fieldName = (0, node_opcua_utils_1.lowerFirstLetter)(fieldName);
82
+ _data[fieldName] = value;
83
+ }
84
+ else {
85
+ for (let i = 0; i < f.length - 1; i++) {
86
+ name = (0, node_opcua_utils_1.lowerFirstLetter)(f[i]);
87
+ _data[name] = _data[name] || {};
88
+ _data = _data[name];
89
+ }
90
+ name = (0, node_opcua_utils_1.lowerFirstLetter)(f[f.length - 1]);
91
+ _data[name] = value;
92
+ }
93
+ }
94
+ else {
95
+ const name = fieldName.split(".").map(node_opcua_utils_1.lowerFirstLetter).join(".");
96
+ _data[name] = value;
97
+ }
98
+ }
99
+ if (fields.length > eventFields.length) {
100
+ warningLog("warning fields.length !== eventFields.length", fields.length, eventFields.length);
101
+ }
102
+ const data = {};
103
+ for (let index = 0; index < fields.length; index++) {
104
+ const variant = eventFields[index];
105
+ setProperty(data, fields[index], variant);
106
+ }
107
+ return data;
108
+ }
109
+ exports.fieldsToJson = fieldsToJson;
102
110
  //# sourceMappingURL=client_alarm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client_alarm.js","sourceRoot":"","sources":["../../source/alarms_and_conditions/client_alarm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_alarm.js","sourceRoot":"","sources":["../../source/alarms_and_conditions/client_alarm.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,25 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from "events";
3
- import { ClientAlarm, EventStuff } from "./client_alarm";
4
- export interface ClientAlarmList {
5
- on(eventName: "alarmChanged", handler: (alarm: ClientAlarm) => void): this;
6
- on(eventName: "alarmDeleted", handler: (alarm: ClientAlarm) => void): this;
7
- on(eventName: "newAlarm", handler: (alarm: ClientAlarm) => void): this;
8
- emit(eventName: "alarmChanged", alarm: ClientAlarm): boolean;
9
- emit(eventName: "newAlarm", alarm: ClientAlarm): boolean;
10
- emit(eventName: "alarmDeleted", alarm: ClientAlarm): boolean;
11
- }
12
- export declare class ClientAlarmList extends EventEmitter implements Iterable<ClientAlarm> {
13
- private _map;
14
- constructor();
15
- [Symbol.iterator](): Iterator<ClientAlarm>;
16
- alarms(): ClientAlarm[];
17
- update(eventField: EventStuff): void;
18
- removeAlarm(eventField: EventStuff): void;
19
- get length(): number;
20
- purgeUnusedAlarms(): void;
21
- private _removeAlarm;
22
- private makeKey;
23
- private findAlarm;
24
- private deleteAlarm;
25
- }
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from "events";
3
+ import { ClientAlarm, EventStuff } from "./client_alarm";
4
+ export interface ClientAlarmList {
5
+ on(eventName: "alarmChanged", handler: (alarm: ClientAlarm) => void): this;
6
+ on(eventName: "alarmDeleted", handler: (alarm: ClientAlarm) => void): this;
7
+ on(eventName: "newAlarm", handler: (alarm: ClientAlarm) => void): this;
8
+ emit(eventName: "alarmChanged", alarm: ClientAlarm): boolean;
9
+ emit(eventName: "newAlarm", alarm: ClientAlarm): boolean;
10
+ emit(eventName: "alarmDeleted", alarm: ClientAlarm): boolean;
11
+ }
12
+ export declare class ClientAlarmList extends EventEmitter implements Iterable<ClientAlarm> {
13
+ private _map;
14
+ constructor();
15
+ [Symbol.iterator](): Iterator<ClientAlarm>;
16
+ alarms(): ClientAlarm[];
17
+ update(eventField: EventStuff): void;
18
+ removeAlarm(eventField: EventStuff): void;
19
+ get length(): number;
20
+ purgeUnusedAlarms(): void;
21
+ private _removeAlarm;
22
+ private makeKey;
23
+ private findAlarm;
24
+ private deleteAlarm;
25
+ }
@@ -1,98 +1,98 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClientAlarmList = void 0;
4
- const events_1 = require("events");
5
- const node_opcua_assert_1 = require("node-opcua-assert");
6
- const client_alarm_1 = require("./client_alarm");
7
- // maintain a set of alarm list for a client
8
- class ClientAlarmList extends events_1.EventEmitter {
9
- constructor() {
10
- super();
11
- this._map = {};
12
- }
13
- [Symbol.iterator]() {
14
- let pointer = 0;
15
- const components = Object.values(this._map);
16
- return {
17
- next() {
18
- if (pointer >= components.length) {
19
- return {
20
- done: true,
21
- value: components[pointer++]
22
- };
23
- }
24
- else {
25
- return {
26
- done: false,
27
- value: components[pointer++]
28
- };
29
- }
30
- }
31
- };
32
- }
33
- alarms() {
34
- return Object.values(this._map);
35
- }
36
- update(eventField) {
37
- // Spec says:
38
- // Clients shall check for multiple Event Notifications for a ConditionBranch to avoid
39
- // overwriting a new state delivered together with an older state from the Refresh
40
- // process.
41
- const { conditionId, eventType } = eventField;
42
- (0, node_opcua_assert_1.assert)(conditionId, "must have a valid conditionId ( verify that event is a acknodweldgeable type");
43
- const alarm = this.findAlarm(conditionId.value, eventType.value);
44
- if (!alarm) {
45
- const key = this.makeKey(conditionId.value, eventType.value);
46
- const newAlarm = new client_alarm_1.ClientAlarm(eventField);
47
- this._map[key] = newAlarm;
48
- this.emit("newAlarm", newAlarm);
49
- this.emit("alarmChanged", newAlarm);
50
- }
51
- else {
52
- alarm.update(eventField);
53
- this.emit("alarmChanged", alarm);
54
- }
55
- }
56
- removeAlarm(eventField) {
57
- const { conditionId, eventType } = eventField;
58
- const alarm = this.findAlarm(conditionId.value, eventType.value);
59
- if (alarm) {
60
- alarm.update(eventField);
61
- this._removeAlarm(alarm);
62
- }
63
- }
64
- get length() {
65
- return Object.keys(this._map).length;
66
- }
67
- purgeUnusedAlarms() {
68
- const alarms = this.alarms();
69
- for (const alarm of alarms) {
70
- if (!alarm.getRetain()) {
71
- this._removeAlarm(alarm);
72
- }
73
- }
74
- }
75
- _removeAlarm(alarm) {
76
- this.emit("alarmDeleted", alarm);
77
- this.deleteAlarm(alarm.conditionId, alarm.eventType);
78
- }
79
- makeKey(conditionId, eventType) {
80
- return conditionId.toString() + "|" + eventType.toString();
81
- }
82
- findAlarm(conditionId, eventType) {
83
- const key = this.makeKey(conditionId, eventType);
84
- const _c = this._map[key];
85
- return _c || null;
86
- }
87
- deleteAlarm(conditionId, eventType) {
88
- const key = this.makeKey(conditionId, eventType);
89
- const _c = this._map[key];
90
- if (_c) {
91
- delete this._map[key];
92
- return true;
93
- }
94
- return false;
95
- }
96
- }
97
- exports.ClientAlarmList = ClientAlarmList;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientAlarmList = void 0;
4
+ const events_1 = require("events");
5
+ const node_opcua_assert_1 = require("node-opcua-assert");
6
+ const client_alarm_1 = require("./client_alarm");
7
+ // maintain a set of alarm list for a client
8
+ class ClientAlarmList extends events_1.EventEmitter {
9
+ constructor() {
10
+ super();
11
+ this._map = {};
12
+ }
13
+ [Symbol.iterator]() {
14
+ let pointer = 0;
15
+ const components = Object.values(this._map);
16
+ return {
17
+ next() {
18
+ if (pointer >= components.length) {
19
+ return {
20
+ done: true,
21
+ value: components[pointer++]
22
+ };
23
+ }
24
+ else {
25
+ return {
26
+ done: false,
27
+ value: components[pointer++]
28
+ };
29
+ }
30
+ }
31
+ };
32
+ }
33
+ alarms() {
34
+ return Object.values(this._map);
35
+ }
36
+ update(eventField) {
37
+ // Spec says:
38
+ // Clients shall check for multiple Event Notifications for a ConditionBranch to avoid
39
+ // overwriting a new state delivered together with an older state from the Refresh
40
+ // process.
41
+ const { conditionId, eventType } = eventField;
42
+ (0, node_opcua_assert_1.assert)(conditionId, "must have a valid conditionId ( verify that event is a acknodweldgeable type");
43
+ const alarm = this.findAlarm(conditionId.value, eventType.value);
44
+ if (!alarm) {
45
+ const key = this.makeKey(conditionId.value, eventType.value);
46
+ const newAlarm = new client_alarm_1.ClientAlarm(eventField);
47
+ this._map[key] = newAlarm;
48
+ this.emit("newAlarm", newAlarm);
49
+ this.emit("alarmChanged", newAlarm);
50
+ }
51
+ else {
52
+ alarm.update(eventField);
53
+ this.emit("alarmChanged", alarm);
54
+ }
55
+ }
56
+ removeAlarm(eventField) {
57
+ const { conditionId, eventType } = eventField;
58
+ const alarm = this.findAlarm(conditionId.value, eventType.value);
59
+ if (alarm) {
60
+ alarm.update(eventField);
61
+ this._removeAlarm(alarm);
62
+ }
63
+ }
64
+ get length() {
65
+ return Object.keys(this._map).length;
66
+ }
67
+ purgeUnusedAlarms() {
68
+ const alarms = this.alarms();
69
+ for (const alarm of alarms) {
70
+ if (!alarm.getRetain()) {
71
+ this._removeAlarm(alarm);
72
+ }
73
+ }
74
+ }
75
+ _removeAlarm(alarm) {
76
+ this.emit("alarmDeleted", alarm);
77
+ this.deleteAlarm(alarm.conditionId, alarm.eventType);
78
+ }
79
+ makeKey(conditionId, eventType) {
80
+ return conditionId.toString() + "|" + eventType.toString();
81
+ }
82
+ findAlarm(conditionId, eventType) {
83
+ const key = this.makeKey(conditionId, eventType);
84
+ const _c = this._map[key];
85
+ return _c || null;
86
+ }
87
+ deleteAlarm(conditionId, eventType) {
88
+ const key = this.makeKey(conditionId, eventType);
89
+ const _c = this._map[key];
90
+ if (_c) {
91
+ delete this._map[key];
92
+ return true;
93
+ }
94
+ return false;
95
+ }
96
+ }
97
+ exports.ClientAlarmList = ClientAlarmList;
98
98
  //# sourceMappingURL=client_alarm_list.js.map