node-opcua-alarm-condition 2.134.0 → 2.137.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.
|
@@ -8,11 +8,11 @@ const client_alarm_1 = require("./client_alarm");
|
|
|
8
8
|
class ClientAlarmList extends events_1.EventEmitter {
|
|
9
9
|
constructor() {
|
|
10
10
|
super();
|
|
11
|
-
this._map =
|
|
11
|
+
this._map = new Map();
|
|
12
12
|
}
|
|
13
13
|
[Symbol.iterator]() {
|
|
14
14
|
let pointer = 0;
|
|
15
|
-
const components =
|
|
15
|
+
const components = [...this._map.values()];
|
|
16
16
|
return {
|
|
17
17
|
next() {
|
|
18
18
|
if (pointer >= components.length) {
|
|
@@ -31,7 +31,7 @@ class ClientAlarmList extends events_1.EventEmitter {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
alarms() {
|
|
34
|
-
return
|
|
34
|
+
return [...this._map.values()];
|
|
35
35
|
}
|
|
36
36
|
update(eventField) {
|
|
37
37
|
// Spec says:
|
|
@@ -44,7 +44,7 @@ class ClientAlarmList extends events_1.EventEmitter {
|
|
|
44
44
|
if (!alarm) {
|
|
45
45
|
const key = this.makeKey(conditionId.value, eventType.value);
|
|
46
46
|
const newAlarm = new client_alarm_1.ClientAlarm(eventField);
|
|
47
|
-
this._map
|
|
47
|
+
this._map.set(key, newAlarm);
|
|
48
48
|
this.emit("newAlarm", newAlarm);
|
|
49
49
|
this.emit("alarmChanged", newAlarm);
|
|
50
50
|
}
|
|
@@ -62,7 +62,7 @@ class ClientAlarmList extends events_1.EventEmitter {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
get length() {
|
|
65
|
-
return
|
|
65
|
+
return this._map.size;
|
|
66
66
|
}
|
|
67
67
|
purgeUnusedAlarms() {
|
|
68
68
|
const alarms = this.alarms();
|
|
@@ -81,14 +81,14 @@ class ClientAlarmList extends events_1.EventEmitter {
|
|
|
81
81
|
}
|
|
82
82
|
findAlarm(conditionId, eventType) {
|
|
83
83
|
const key = this.makeKey(conditionId, eventType);
|
|
84
|
-
const _c = this._map
|
|
84
|
+
const _c = this._map.get(key);
|
|
85
85
|
return _c || null;
|
|
86
86
|
}
|
|
87
87
|
deleteAlarm(conditionId, eventType) {
|
|
88
88
|
const key = this.makeKey(conditionId, eventType);
|
|
89
|
-
const _c = this._map
|
|
89
|
+
const _c = this._map.has(key);
|
|
90
90
|
if (_c) {
|
|
91
|
-
|
|
91
|
+
this._map.delete(key);
|
|
92
92
|
return true;
|
|
93
93
|
}
|
|
94
94
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_alarm_list.js","sourceRoot":"","sources":["../source/client_alarm_list.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AACtC,yDAA2C;AAG3C,iDAA6C;AAW7C,4CAA4C;AAC5C,MAAa,eAAgB,SAAQ,qBAAY;
|
|
1
|
+
{"version":3,"file":"client_alarm_list.js","sourceRoot":"","sources":["../source/client_alarm_list.ts"],"names":[],"mappings":"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"}
|
package/dist/event_stuff.js
CHANGED
|
@@ -22,7 +22,7 @@ function fieldsToJson(fields, eventFields, flat) {
|
|
|
22
22
|
else {
|
|
23
23
|
for (let i = 0; i < f.length - 1; i++) {
|
|
24
24
|
name = (0, node_opcua_utils_1.lowerFirstLetter)(f[i]);
|
|
25
|
-
_data[name] = _data[name] ||
|
|
25
|
+
_data[name] = _data[name] || Object.create(null);
|
|
26
26
|
_data = _data[name];
|
|
27
27
|
}
|
|
28
28
|
name = (0, node_opcua_utils_1.lowerFirstLetter)(f[f.length - 1]);
|
|
@@ -37,7 +37,12 @@ function fieldsToJson(fields, eventFields, flat) {
|
|
|
37
37
|
if (fields.length > eventFields.length) {
|
|
38
38
|
warningLog("warning fields.length !== eventFields.length", fields.length, eventFields.length);
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
// use this Object.create(null) to construct an object with no prototype
|
|
41
|
+
// so that we immune from prototype pollution
|
|
42
|
+
const data = Object.create(null);
|
|
43
|
+
if (data.__proto__) {
|
|
44
|
+
throw new Error("expecting __proto__ to be undefined");
|
|
45
|
+
}
|
|
41
46
|
for (let index = 0; index < fields.length; index++) {
|
|
42
47
|
const variant = eventFields[index];
|
|
43
48
|
setProperty(data, fields[index], variant);
|
package/dist/event_stuff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event_stuff.js","sourceRoot":"","sources":["../source/event_stuff.ts"],"names":[],"mappings":";;AA4BA,
|
|
1
|
+
{"version":3,"file":"event_stuff.js","sourceRoot":"","sources":["../source/event_stuff.ts"],"names":[],"mappings":";;AA4BA,oCA2CC;AAtED,uDAAoD;AAGpD,uDAAmD;AACnD,MAAM,UAAU,GAAG,IAAA,kCAAe,EAAC,UAAU,CAAC,CAAC;AAoB/C;;GAEG;AACH,SAAgB,YAAY,CAAC,MAAgB,EAAE,WAAsB,EAAE,IAAc;IAEjF,SAAS,WAAW,CAAC,KAA8B,EAAE,SAAiB,EAAE,KAAc;QAClF,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,SAAS,GAAG,IAAA,mCAAgB,EAAC,SAAS,CAAC,CAAC;gBACxC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,IAAI,GAAG,IAAA,mCAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACjD,KAAK,GAAG,KAAK,CAAC,IAAI,CAA4B,CAAC;gBACnD,CAAC;gBACD,IAAI,GAAG,IAAA,mCAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,mCAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACrC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnG,CAAC;IAED,wEAAwE;IACxE,6CAA6C;IAC7C,MAAM,IAAI,GAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACnC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-alarm-condition",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.137.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module pseudo-session",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "npx rimraf node_modules dist *.tsbuildinfo",
|
|
7
7
|
"build": "tsc -b",
|
|
8
8
|
"lint": "eslint source/**/*.ts",
|
|
9
|
-
"test": "
|
|
9
|
+
"test": "mocha test"
|
|
10
10
|
},
|
|
11
11
|
"main": "./dist/index.js",
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
@@ -14,19 +14,19 @@
|
|
|
14
14
|
"node-opcua-assert": "2.120.0",
|
|
15
15
|
"node-opcua-basic-types": "2.134.0",
|
|
16
16
|
"node-opcua-constants": "2.125.0",
|
|
17
|
-
"node-opcua-data-model": "2.
|
|
17
|
+
"node-opcua-data-model": "2.137.0",
|
|
18
18
|
"node-opcua-debug": "2.133.0",
|
|
19
19
|
"node-opcua-nodeid": "2.133.0",
|
|
20
|
-
"node-opcua-pseudo-session": "2.
|
|
21
|
-
"node-opcua-service-browse": "2.
|
|
22
|
-
"node-opcua-service-filter": "2.
|
|
23
|
-
"node-opcua-service-read": "2.
|
|
24
|
-
"node-opcua-service-subscription": "2.
|
|
25
|
-
"node-opcua-service-translate-browse-path": "2.
|
|
20
|
+
"node-opcua-pseudo-session": "2.137.0",
|
|
21
|
+
"node-opcua-service-browse": "2.137.0",
|
|
22
|
+
"node-opcua-service-filter": "2.137.0",
|
|
23
|
+
"node-opcua-service-read": "2.137.0",
|
|
24
|
+
"node-opcua-service-subscription": "2.137.0",
|
|
25
|
+
"node-opcua-service-translate-browse-path": "2.137.0",
|
|
26
26
|
"node-opcua-status-code": "2.133.0",
|
|
27
|
-
"node-opcua-types": "2.
|
|
27
|
+
"node-opcua-types": "2.137.0",
|
|
28
28
|
"node-opcua-utils": "2.133.0",
|
|
29
|
-
"node-opcua-variant": "2.
|
|
29
|
+
"node-opcua-variant": "2.137.0",
|
|
30
30
|
"thenify": "^3.3.1"
|
|
31
31
|
},
|
|
32
32
|
"author": "Etienne Rossignon",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"internet of things"
|
|
45
45
|
],
|
|
46
46
|
"homepage": "http://node-opcua.github.io/",
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "e88e4f20d5436dd68084d2a6d447f170330b373d",
|
|
48
48
|
"files": [
|
|
49
49
|
"dist",
|
|
50
50
|
"source"
|
|
@@ -15,15 +15,14 @@ export interface ClientAlarmList {
|
|
|
15
15
|
}
|
|
16
16
|
// maintain a set of alarm list for a client
|
|
17
17
|
export class ClientAlarmList extends EventEmitter implements Iterable<ClientAlarm> {
|
|
18
|
-
private _map:
|
|
19
|
-
|
|
18
|
+
private _map: Map<string,ClientAlarm> = new Map();
|
|
20
19
|
public constructor() {
|
|
21
20
|
super();
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
public [Symbol.iterator](): Iterator<ClientAlarm> {
|
|
25
24
|
let pointer = 0;
|
|
26
|
-
const components =
|
|
25
|
+
const components = [...this._map.values()];
|
|
27
26
|
return {
|
|
28
27
|
next(): IteratorResult<ClientAlarm> {
|
|
29
28
|
if (pointer >= components.length) {
|
|
@@ -42,7 +41,7 @@ export class ClientAlarmList extends EventEmitter implements Iterable<ClientAlar
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
public alarms(): ClientAlarm[] {
|
|
45
|
-
return
|
|
44
|
+
return [...this._map.values()];
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
public update(eventField: EventStuff): void {
|
|
@@ -58,7 +57,7 @@ export class ClientAlarmList extends EventEmitter implements Iterable<ClientAlar
|
|
|
58
57
|
if (!alarm) {
|
|
59
58
|
const key = this.makeKey(conditionId.value, eventType.value);
|
|
60
59
|
const newAlarm = new ClientAlarm(eventField);
|
|
61
|
-
this._map
|
|
60
|
+
this._map.set(key,newAlarm);
|
|
62
61
|
this.emit("newAlarm", newAlarm);
|
|
63
62
|
this.emit("alarmChanged", newAlarm);
|
|
64
63
|
} else {
|
|
@@ -76,7 +75,7 @@ export class ClientAlarmList extends EventEmitter implements Iterable<ClientAlar
|
|
|
76
75
|
}
|
|
77
76
|
|
|
78
77
|
public get length(): number {
|
|
79
|
-
return
|
|
78
|
+
return this._map.size;
|
|
80
79
|
}
|
|
81
80
|
public purgeUnusedAlarms(): void {
|
|
82
81
|
const alarms = this.alarms();
|
|
@@ -97,14 +96,14 @@ export class ClientAlarmList extends EventEmitter implements Iterable<ClientAlar
|
|
|
97
96
|
}
|
|
98
97
|
private findAlarm(conditionId: NodeId, eventType: NodeId): ClientAlarm | null {
|
|
99
98
|
const key = this.makeKey(conditionId, eventType);
|
|
100
|
-
const _c = this._map
|
|
99
|
+
const _c = this._map.get(key);
|
|
101
100
|
return _c || null;
|
|
102
101
|
}
|
|
103
102
|
private deleteAlarm(conditionId: NodeId, eventType: NodeId): boolean {
|
|
104
103
|
const key = this.makeKey(conditionId, eventType);
|
|
105
|
-
const _c = this._map
|
|
104
|
+
const _c = this._map.has(key);
|
|
106
105
|
if (_c) {
|
|
107
|
-
|
|
106
|
+
this._map.delete(key);
|
|
108
107
|
return true;
|
|
109
108
|
}
|
|
110
109
|
return false;
|
package/source/event_stuff.ts
CHANGED
|
@@ -41,7 +41,7 @@ export function fieldsToJson(fields: string[], eventFields: Variant[], flat?: bo
|
|
|
41
41
|
} else {
|
|
42
42
|
for (let i = 0; i < f.length - 1; i++) {
|
|
43
43
|
name = lowerFirstLetter(f[i]);
|
|
44
|
-
_data[name] = _data[name] ||
|
|
44
|
+
_data[name] = _data[name] || Object.create(null);
|
|
45
45
|
_data = _data[name] as Record<string, unknown>;
|
|
46
46
|
}
|
|
47
47
|
name = lowerFirstLetter(f[f.length - 1]);
|
|
@@ -55,7 +55,14 @@ export function fieldsToJson(fields: string[], eventFields: Variant[], flat?: bo
|
|
|
55
55
|
if (fields.length > eventFields.length) {
|
|
56
56
|
warningLog("warning fields.length !== eventFields.length", fields.length, eventFields.length);
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
|
|
59
|
+
// use this Object.create(null) to construct an object with no prototype
|
|
60
|
+
// so that we immune from prototype pollution
|
|
61
|
+
const data: any = Object.create(null);
|
|
62
|
+
if (data.__proto__) {
|
|
63
|
+
throw new Error("expecting __proto__ to be undefined");
|
|
64
|
+
}
|
|
65
|
+
|
|
59
66
|
for (let index = 0; index < fields.length; index++) {
|
|
60
67
|
const variant = eventFields[index];
|
|
61
68
|
setProperty(data, fields[index], variant);
|