pmcf 1.94.2 → 1.94.4

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.94.2",
3
+ "version": "1.94.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/base.mjs CHANGED
@@ -386,7 +386,15 @@ export class Base {
386
386
  }
387
387
  }
388
388
 
389
+ get isTemplate() {
390
+ return false;
391
+ }
392
+
389
393
  expand(object) {
394
+ if (this.isTemplate) {
395
+ return object;
396
+ }
397
+
390
398
  switch (typeof object) {
391
399
  case "string":
392
400
  return object.replaceAll(/\$\{([^\}]*)\}/g, (match, m1) => {
@@ -474,7 +482,17 @@ export function extractFrom(
474
482
  object,
475
483
  typeDefinition = object?.constructor?.typeDefinition
476
484
  ) {
477
- if (Array.isArray(object)) {
485
+ switch (typeof object) {
486
+ case "undefined":
487
+ case "string":
488
+ case "number":
489
+ case "boolean":
490
+ return object;
491
+ }
492
+
493
+ if (typeof object[Symbol.iterator] === "function") {
494
+ object = [...object];
495
+
478
496
  if (object.length === 0) {
479
497
  return undefined;
480
498
  }
@@ -490,11 +508,7 @@ export function extractFrom(
490
508
  );
491
509
  }
492
510
 
493
- return object.map(o => extractFrom(o));
494
- }
495
-
496
- if (!typeDefinition || object === undefined) {
497
- return object;
511
+ return object.length ? object : undefined;
498
512
  }
499
513
 
500
514
  const json = {};
@@ -525,8 +539,11 @@ export function extractFrom(
525
539
  json[name].name = value.name;
526
540
  }
527
541
  } else {
528
- if (Array.isArray(value)) {
529
- json[name] = extractFrom(value);
542
+ if (typeof value[Symbol.iterator] === "function") {
543
+ value = extractFrom(value);
544
+ if (value !== undefined) {
545
+ json[name] = value;
546
+ }
530
547
  } else {
531
548
  const resultObject = Object.fromEntries(
532
549
  Object.entries(value).map(([k, v]) => [
package/src/host.mjs CHANGED
@@ -60,7 +60,6 @@ const HostTypeDefinition = {
60
60
  };
61
61
 
62
62
  export class Host extends Base {
63
- serial;
64
63
  priority = 1;
65
64
  #services = [];
66
65
  #extends = [];
@@ -76,6 +75,7 @@ export class Host extends Base {
76
75
  #chassis;
77
76
  #vendor;
78
77
  #architecture;
78
+ #serial;
79
79
 
80
80
  static {
81
81
  addType(this);
@@ -104,12 +104,6 @@ export class Host extends Base {
104
104
  this.services = service.forOwner(this);
105
105
  }
106
106
  }
107
-
108
- if (!this.isTemplate) {
109
- this.#depends = this.expand(this.depends);
110
- this.#provides = this.expand(this.provides);
111
- this.#replaces = this.expand(this.replaces);
112
- }
113
107
  });
114
108
  }
115
109
  }
@@ -128,6 +122,14 @@ export class Host extends Base {
128
122
  return false;
129
123
  }
130
124
 
125
+ set serial(value) {
126
+ this.#serial = value;
127
+ }
128
+
129
+ get serial() {
130
+ return this.#serial || this.extends.find(e => e.serial)?.serial;
131
+ }
132
+
131
133
  set deployment(value) {
132
134
  this.#deployment = value;
133
135
  }
@@ -207,7 +209,9 @@ export class Host extends Base {
207
209
  }
208
210
 
209
211
  get provides() {
210
- return this.#provides;
212
+ return this.expand(
213
+ this.extends.reduce((a, c) => a.union(c.provides), this.#provides)
214
+ );
211
215
  }
212
216
 
213
217
  set replaces(value) {
@@ -219,7 +223,9 @@ export class Host extends Base {
219
223
  }
220
224
 
221
225
  get replaces() {
222
- return this.#replaces;
226
+ return this.expand(
227
+ this.extends.reduce((a, c) => a.union(c.replaces), this.#replaces)
228
+ );
223
229
  }
224
230
 
225
231
  set depends(value) {
@@ -231,7 +237,9 @@ export class Host extends Base {
231
237
  }
232
238
 
233
239
  get depends() {
234
- return this.#depends;
240
+ return this.expand(
241
+ this.extends.reduce((a, c) => a.union(c.depends), this.#depends)
242
+ );
235
243
  }
236
244
 
237
245
  set master(value) {
@@ -247,7 +255,7 @@ export class Host extends Base {
247
255
  }
248
256
 
249
257
  get os() {
250
- return this.#os || this.extends.find(e => e.os);
258
+ return this.#os || this.extends.find(e => e.os)?.os
251
259
  }
252
260
 
253
261
  set distribution(value) {
package/src/utils.mjs CHANGED
@@ -2,11 +2,6 @@ import { writeFile, mkdir } from "node:fs/promises";
2
2
  import { join, dirname, basename } from "node:path";
3
3
 
4
4
  export function domainName(name, defaultDomain) {
5
-
6
- if(typeof name != "string") {
7
- console.log(name);
8
- }
9
-
10
5
  const dcs = name.split(".");
11
6
  return defaultDomain === undefined || dcs.length > 1
12
7
  ? name
package/types/base.d.mts CHANGED
@@ -89,6 +89,7 @@ export class Base {
89
89
  }, void, unknown>;
90
90
  set tags(value: Set<any>);
91
91
  get tags(): Set<any>;
92
+ get isTemplate(): boolean;
92
93
  expand(object: any): any;
93
94
  finalize(action: any): void;
94
95
  execFinalize(): void;
package/types/host.d.mts CHANGED
@@ -163,17 +163,18 @@ export class Host extends Base {
163
163
  };
164
164
  };
165
165
  };
166
- serial: any;
167
166
  priority: number;
168
- set depends(value: Set<any>);
169
- get depends(): Set<any>;
170
- set provides(value: Set<any>);
171
- get provides(): Set<any>;
172
- set replaces(value: Set<any>);
173
- get replaces(): Set<any>;
167
+ set depends(value: any);
168
+ get depends(): any;
169
+ set provides(value: any);
170
+ get provides(): any;
171
+ set replaces(value: any);
172
+ get replaces(): any;
174
173
  set services(service: any[]);
175
174
  get services(): any[];
176
175
  _traverse(...args: any[]): boolean;
176
+ set serial(value: any);
177
+ get serial(): any;
177
178
  set deployment(value: any);
178
179
  get deployment(): any;
179
180
  set chassis(value: any);