pmcf 1.6.1 → 1.6.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcf",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/model.mjs CHANGED
@@ -100,6 +100,10 @@ export class Base {
100
100
  return object;
101
101
  }
102
102
 
103
+ error(...args) {
104
+ console.error(`${this.toString()}:`, ...args);
105
+ }
106
+
103
107
  toString() {
104
108
  return this.typeName + ":" + (this.owner?.name || "") + "/" + this.name;
105
109
  }
@@ -144,43 +148,32 @@ export class Owner extends Base {
144
148
  }
145
149
 
146
150
  addBridge(network, destinationNetworks) {
147
- console.log(
148
- "BRIDGE",
149
- network.name,
150
- destinationNetworks.map(n => (this.network(n) ? n : `(${n})`))
151
- );
152
-
153
- let bridge;
154
-
155
- for (bridge of this.#bridges) {
156
- if (bridge.has(network.name)) {
157
- bridge.delete(network.name);
158
- bridge.add(network);
159
-
160
- console.log(
161
- "REPLACE",
162
- network.name,
163
- [...bridge].map(n => n.name||`(${n})`)
164
- );
165
-
166
- break;
151
+ if (destinationNetworks) {
152
+ let bridge;
153
+
154
+ for (bridge of this.#bridges) {
155
+ if (bridge.has(network.name)) {
156
+ bridge.delete(network.name);
157
+ bridge.add(network);
158
+ break;
159
+ }
160
+
161
+ if (bridge.has(network)) {
162
+ break;
163
+ }
167
164
  }
168
165
 
169
- if (bridge.has(network)) {
170
- break;
166
+ if (!bridge) {
167
+ bridge = new Set([network]);
168
+ this.#bridges.add(bridge);
171
169
  }
172
- }
173
170
 
174
- if (!bridge) {
175
- bridge = new Set([network]);
176
- this.#bridges.add(bridge);
177
- }
171
+ for (const name of destinationNetworks) {
172
+ bridge.add(this.network(name) || name);
173
+ }
178
174
 
179
- for (const name of destinationNetworks) {
180
- bridge.add(this.network(name) || name);
175
+ return bridge;
181
176
  }
182
-
183
- return bridge;
184
177
  }
185
178
 
186
179
  addSubnet(subnet) {
@@ -200,7 +193,7 @@ export class Owner extends Base {
200
193
  ...super.toJSON(),
201
194
  networks: [...this.#networks.keys()].sort(),
202
195
  subnets: [...this.#subnets.keys()].sort(),
203
- bridges: [...this.#bridges.keys()].sort(),
196
+ bridges: [...this.#bridges].map(b => bridgeToJSON(b)),
204
197
  hosts: [...this.#hosts.keys()].sort()
205
198
  };
206
199
  }
@@ -440,9 +433,7 @@ export class Network extends Owner {
440
433
 
441
434
  owner.addNetwork(this);
442
435
 
443
- if (bridges) {
444
- this.bridge = owner.addBridge(this, bridges);
445
- }
436
+ this.bridge = owner.addBridge(this, bridges);
446
437
  }
447
438
 
448
439
  get ipv4_netmask() {
@@ -557,11 +548,11 @@ export class Host extends Base {
557
548
  if (iface.network) {
558
549
  const network = owner.network(iface.network);
559
550
 
560
- if (!network) {
561
- console.error(`${this.toString()}: Missing network`, iface.network);
562
- } else {
551
+ if (network) {
563
552
  iface.network = network;
564
553
  network.addHost(this);
554
+ } else {
555
+ this.error("Missing network", iface.network);
565
556
  }
566
557
  }
567
558
  }
@@ -849,3 +840,7 @@ function extractFrom(object, propertyNames) {
849
840
  }
850
841
  return json;
851
842
  }
843
+
844
+ function bridgeToJSON(bridge) {
845
+ return [...bridge].map(n => n.name || `(${n})`).sort();
846
+ }
package/types/model.d.mts CHANGED
@@ -18,6 +18,7 @@ export class Base {
18
18
  set directory(directory: any);
19
19
  get directory(): any;
20
20
  expand(object: any): any;
21
+ error(...args: any[]): void;
21
22
  toString(): string;
22
23
  get propertyNames(): string[];
23
24
  toJSON(): {};
@@ -36,7 +37,7 @@ export class Owner extends Base {
36
37
  toJSON(): {
37
38
  networks: any[];
38
39
  subnets: any[];
39
- bridges: any[];
40
+ bridges: any[][];
40
41
  hosts: any[];
41
42
  };
42
43
  #private;