p3x-systemd-manager 2026.4.108 → 2026.4.113

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.
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- # ⌚ SystemD Manager, watchdog, notifier and service v2026.4.108
9
+ # ⌚ SystemD Manager, watchdog, notifier and service v2026.4.113
10
10
 
11
11
 
12
12
 
@@ -22,7 +22,7 @@
22
22
  ### 🛠️ Built on NodeJs version
23
23
 
24
24
  ```txt
25
- v24.14.1
25
+ v24.16.0
26
26
  ```
27
27
 
28
28
 
@@ -352,7 +352,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
352
352
  **🚨 Important Changes:** Any breaking changes are prominently noted in the readme to keep you informed.
353
353
 
354
354
 
355
- [**P3X-SYSTEMD-MANAGER**](https://corifeus.com/systemd-manager) Build v2026.4.108
355
+ [**P3X-SYSTEMD-MANAGER**](https://corifeus.com/systemd-manager) Build v2026.4.113
356
356
 
357
357
  [![NPM](https://img.shields.io/npm/v/p3x-systemd-manager.svg)](https://www.npmjs.com/package/p3x-systemd-manager) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
358
358
 
package/package.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "publish": true,
7
7
  "type": "p3x",
8
8
  "code": "Breaking",
9
- "nodejs": "v24.14.1",
9
+ "nodejs": "v24.16.0",
10
10
  "opencollective": false,
11
11
  "reponame": "systemd-manager",
12
12
  "build": true
13
13
  },
14
- "version": "2026.4.108",
14
+ "version": "2026.4.113",
15
15
  "description": "⌚ SystemD Manager, watchdog, notifier and service",
16
16
  "main": "index.js",
17
17
  "saved-dependencies": {
@@ -20,19 +20,19 @@
20
20
  "fix-repo": "git+https://github.com/p3x-robot/node-dbus.git"
21
21
  },
22
22
  "dependencies": {
23
- "corifeus-utils": "^2026.4.135",
23
+ "corifeus-utils": "^2026.4.140",
24
24
  "dbus": "^1.0.7",
25
25
  "lodash": "^4.18.1",
26
26
  "millisecond": "^0.1.2",
27
27
  "moment": "^2.30.1",
28
- "nan": "^2.26.2",
29
- "nodemailer": "^8.0.6"
28
+ "nan": "^2.27.0",
29
+ "nodemailer": "^8.0.10"
30
30
  },
31
31
  "resolutions": {
32
32
  "nan": "2.23.0"
33
33
  },
34
34
  "devDependencies": {
35
- "corifeus-builder": "^2026.4.154"
35
+ "corifeus-builder": "^2026.4.161"
36
36
  },
37
37
  "scripts": {
38
38
  "test": "grunt",
package/src/notifier.js CHANGED
@@ -41,51 +41,55 @@ module.exports = async (settings) => {
41
41
  const propertyInterfaces = [];
42
42
  let unitDictionary = await managerInterface.listUnits;
43
43
 
44
- Object.keys(unitDictionary).forEach(async (unitId) => {
45
- if (filter.isValid(unitId)) {
46
- const unit = await managerInterface.getUnit(unitId);
47
- const properties = await unit.props;
48
- const propertyInterface = await interfaces.properties.factory(unit.node, settings);
49
-
50
- /*
51
- let lastSubStates = {};
52
- Object.keys(settings.filter.status).forEach((state) => {
53
- lastSubStates[state] = properties[state];
54
- });
55
- */
56
- propertyInterfaces.push(propertyInterface);
57
-
58
- propertyInterface.on('PropertiesChanged', async function (changedInterface, props, names) {
59
- if (changedInterface === interfaces.unit.interfaceName) {
60
- let trigger = false;
61
- Object.keys(settings.filter.trigger).forEach((state) => {
62
- if (settings.filter.trigger[state].includes(props[state])) {
63
- trigger = true;
64
- }
65
- /*
66
- if (props[state] !== lastSubStates[state]) {
67
- }
68
- */
69
- })
70
- if (!trigger) {
71
- return;
44
+ // Sequential: forEach(async) was firing every getUnit / props / interface
45
+ // factory call in parallel, which on Reloading bursts blew past
46
+ // dbus-daemon's max_replies_per_connection=128 cap and produced ~90+
47
+ // "max replies reached" warnings per burst.
48
+ for (const unitId of Object.keys(unitDictionary)) {
49
+ if (!filter.isValid(unitId)) {
50
+ continue;
51
+ }
52
+ const unit = await managerInterface.getUnit(unitId);
53
+ const properties = await unit.props;
54
+ const propertyInterface = await interfaces.properties.factory(unit.node, settings);
55
+
56
+ /*
57
+ let lastSubStates = {};
58
+ Object.keys(settings.filter.status).forEach((state) => {
59
+ lastSubStates[state] = properties[state];
60
+ });
61
+ */
62
+ propertyInterfaces.push(propertyInterface);
63
+
64
+ propertyInterface.on('PropertiesChanged', async function (changedInterface, props, names) {
65
+ if (changedInterface === interfaces.unit.interfaceName) {
66
+ let trigger = false;
67
+ Object.keys(settings.filter.trigger).forEach((state) => {
68
+ if (settings.filter.trigger[state].includes(props[state])) {
69
+ trigger = true;
72
70
  }
73
71
  /*
74
- Object.keys(settings.filter.trigger).forEach((state) => {
75
- lastSubStates[state] = props[state];
76
- })
72
+ if (props[state] !== lastSubStates[state]) {
73
+ }
77
74
  */
78
-
79
- mail.send(unitId, {
80
- summary: await unit.summary,
81
- detailed: await unit.props
82
- });
83
-
75
+ })
76
+ if (!trigger) {
77
+ return;
84
78
  }
85
- })
86
- }
87
- ;
88
- })
79
+ /*
80
+ Object.keys(settings.filter.trigger).forEach((state) => {
81
+ lastSubStates[state] = props[state];
82
+ })
83
+ */
84
+
85
+ mail.send(unitId, {
86
+ summary: await unit.summary,
87
+ detailed: await unit.props
88
+ });
89
+
90
+ }
91
+ })
92
+ }
89
93
  return () => {
90
94
  propertyInterfaces.forEach((propertyInterface) => {
91
95
  propertyInterface.manager.removeAllListeners('PropertiesChanged');