node-opcua-alarm-condition 2.134.0 → 2.138.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 = Object.values(this._map);
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 Object.values(this._map);
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[key] = newAlarm;
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 Object.keys(this._map).length;
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[key];
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[key];
89
+ const _c = this._map.has(key);
90
90
  if (_c) {
91
- delete this._map[key];
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":"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"}
1
+ {"version":3,"file":"client_alarm_list.js","sourceRoot":"","sources":["../source/client_alarm_list.ts"],"names":[],"mappings":"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"}
@@ -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
- const data = {};
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);
@@ -1 +1 @@
1
- {"version":3,"file":"event_stuff.js","sourceRoot":"","sources":["../source/event_stuff.ts"],"names":[],"mappings":";;AA4BA,oCAoCC;AA/DD,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,EAAE,CAAC;oBAChC,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;IACD,MAAM,IAAI,GAAQ,EAAE,CAAC;IACrB,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"}
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.134.0",
3
+ "version": "2.138.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": "echo mocha 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.134.0",
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.134.0",
21
- "node-opcua-service-browse": "2.134.0",
22
- "node-opcua-service-filter": "2.134.0",
23
- "node-opcua-service-read": "2.134.0",
24
- "node-opcua-service-subscription": "2.134.0",
25
- "node-opcua-service-translate-browse-path": "2.134.0",
20
+ "node-opcua-pseudo-session": "2.138.0",
21
+ "node-opcua-service-browse": "2.137.0",
22
+ "node-opcua-service-filter": "2.138.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.134.0",
27
+ "node-opcua-types": "2.137.0",
28
28
  "node-opcua-utils": "2.133.0",
29
- "node-opcua-variant": "2.134.0",
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": "ccb34926a3c195f6a7e66fca58a2f101858e78be",
47
+ "gitHead": "383bbe814f9261b2bc01a5d0fe476813153bb110",
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: { [key: string]: ClientAlarm } = {};
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 = Object.values(this._map);
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 Object.values(this._map);
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[key] = newAlarm;
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 Object.keys(this._map).length;
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[key];
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[key];
104
+ const _c = this._map.has(key);
106
105
  if (_c) {
107
- delete this._map[key];
106
+ this._map.delete(key);
108
107
  return true;
109
108
  }
110
109
  return false;
@@ -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
- const data: any = {};
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);