pmcf 2.44.0 → 2.46.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcf",
3
- "version": "2.44.0",
3
+ "version": "2.46.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -35,14 +35,14 @@
35
35
  },
36
36
  "scripts": {
37
37
  "prepare": "node --run prepare:typescript",
38
- "prepare:typescript": "tsc --allowJs --declaration --emitDeclarationOnly --declarationDir types --resolveJsonModule --target es2024 --lib esnext -m esnext --module nodenext --moduleResolution nodenext --rootDir src ./src**/*.mjs",
38
+ "prepare:typescript": "tsc --allowJs --declaration --emitDeclarationOnly --declarationDir types --resolveJsonModule --target esnext -m esnext --module nodenext --moduleResolution nodenext --rootDir src ./src**/*.mjs",
39
39
  "test": "node --run test:ava",
40
40
  "test:ava": "ava --timeout 4m tests/*-ava.mjs tests/*-ava-node.mjs",
41
41
  "cover": "c8 -x 'tests/**/*' --temp-directory build/tmp ava --timeout 4m tests/*-ava.mjs tests/*-ava-node.mjs && c8 report -r lcov -o build/coverage --temp-directory build/tmp",
42
42
  "docs": "documentation readme --section=API ./src**/*.mjs",
43
43
  "lint": "node --run lint:docs && node --run lint:typescript",
44
44
  "lint:docs": "documentation lint ./src**/*.mjs",
45
- "lint:typescript": "tsc --allowJs --checkJs --noEmit --resolveJsonModule --target es2024 --lib esnext -m esnext --module nodenext --moduleResolution nodenext ./src**/*.mjs"
45
+ "lint:typescript": "tsc --allowJs --checkJs --noEmit --resolveJsonModule --target esnext -m esnext --module nodenext --moduleResolution nodenext ./src**/*.mjs"
46
46
  },
47
47
  "dependencies": {
48
48
  "ip-utilties": "^1.3.1",
package/src/host.mjs CHANGED
@@ -47,6 +47,7 @@ const HostTypeDefinition = {
47
47
  weight: { type: "number", collection: false, writeable: true },
48
48
  serial: { type: "string", collection: false, writeable: true },
49
49
  vendor: { type: "string", collection: false, writeable: true },
50
+ keymap: { type: "string", collection: false, writeable: true },
50
51
  chassis: {
51
52
  type: "string",
52
53
  collection: false,
@@ -95,6 +96,7 @@ export class Host extends ServiceOwner {
95
96
  _vendor;
96
97
  _architecture;
97
98
  _serial;
99
+ _keymap;
98
100
 
99
101
  static {
100
102
  addType(this);
@@ -187,6 +189,14 @@ export class Host extends ServiceOwner {
187
189
  return this.extendedProperty("_vendor");
188
190
  }
189
191
 
192
+ set keymap(value) {
193
+ this._keymap = value;
194
+ }
195
+
196
+ get keymap() {
197
+ return this.extendedProperty("_keymap");
198
+ }
199
+
190
200
  set architecture(value) {
191
201
  this._architecture = value;
192
202
  }
@@ -490,6 +500,10 @@ export class Host extends ServiceOwner {
490
500
  await ni.systemdDefinitions(packageData);
491
501
  }
492
502
 
503
+ if (this.keymap) {
504
+ await writeLines(dir, "etc/vconsole.conf", `KEYMAP=${this.keymap}`);
505
+ }
506
+
493
507
  await generateMachineInfo(this, packageData);
494
508
  await generateKnownHosts(this.owner.hosts(), join(dir, "root", ".ssh"));
495
509
 
package/src/service.mjs CHANGED
@@ -184,10 +184,6 @@ export class Service extends Base {
184
184
  return this.host.domainName;
185
185
  }
186
186
 
187
- get ipAddressOrDomainName() {
188
- return this.address ?? this.domainName;
189
- }
190
-
191
187
  get networks() {
192
188
  return this.host.networks;
193
189
  }
@@ -209,7 +205,14 @@ export class Service extends Base {
209
205
  return filter ? result.filter(filter) : result;
210
206
  }
211
207
 
212
- address(options = { select: e => e.address, limit: 1 }) {
208
+ address(
209
+ options = {
210
+ endpoints: e => e.networkInterface?.kind !== "loopbak",
211
+ select: e => e.domainName||e.address,
212
+ limit: 1,
213
+ join: ""
214
+ }
215
+ ) {
213
216
  const all = this.endpoints(options.endpoints);
214
217
  const res = [...new Set(options.select ? all.map(options.select) : all)];
215
218
 
@@ -217,7 +220,7 @@ export class Service extends Base {
217
220
  res.length = options.limit;
218
221
  }
219
222
 
220
- return options.join ? res.join(options.join) : res;
223
+ return options.join !== undefined ? res.join(options.join) : res;
221
224
  }
222
225
 
223
226
  set alias(value) {
@@ -527,20 +527,19 @@ export class BINDService extends ExtraSourceService {
527
527
 
528
528
  get defaultRecords() {
529
529
  const nameService = this.findService({ type: "dns", priority: "<10" });
530
- const rname = this.administratorEmail.replace(/@/, ".");
531
530
 
532
531
  const SOARecord = DNSRecord(
533
532
  "@",
534
533
  "SOA",
535
534
  dnsFullName(nameService.domainName),
536
- dnsFullName(rname),
535
+ dnsFullName(this.administratorEmail.replace(/@/, ".")),
537
536
  `(${[...this.soaUpdates].join(" ")})`
538
537
  );
539
538
 
540
539
  const NSRecord = DNSRecord(
541
540
  "@",
542
541
  "NS",
543
- dnsFullName(nameService.ipAddressOrDomainName)
542
+ dnsFullName(nameService.address())
544
543
  );
545
544
 
546
545
  return [SOARecord, NSRecord];
@@ -238,6 +238,11 @@ export class Cluster extends Host {
238
238
  collection: boolean;
239
239
  writeable: boolean;
240
240
  };
241
+ keymap: {
242
+ type: string;
243
+ collection: boolean;
244
+ writeable: boolean;
245
+ };
241
246
  chassis: {
242
247
  type: string;
243
248
  collection: boolean;
package/types/host.d.mts CHANGED
@@ -103,6 +103,11 @@ export class Host extends ServiceOwner {
103
103
  collection: boolean;
104
104
  writeable: boolean;
105
105
  };
106
+ keymap: {
107
+ type: string;
108
+ collection: boolean;
109
+ writeable: boolean;
110
+ };
106
111
  chassis: {
107
112
  type: string;
108
113
  collection: boolean;
@@ -185,6 +190,7 @@ export class Host extends ServiceOwner {
185
190
  _vendor: any;
186
191
  _architecture: any;
187
192
  _serial: any;
193
+ _keymap: any;
188
194
  extra: any;
189
195
  _applyExtends(host: any): void;
190
196
  set serial(value: any);
@@ -195,6 +201,8 @@ export class Host extends ServiceOwner {
195
201
  get chassis(): any;
196
202
  set vendor(value: any);
197
203
  get vendor(): any;
204
+ set keymap(value: any);
205
+ get keymap(): any;
198
206
  set architecture(value: any);
199
207
  get architecture(): any;
200
208
  get isTemplate(): true | RegExpMatchArray;
@@ -313,12 +313,13 @@ export class Service extends Base {
313
313
  get host(): Host;
314
314
  hosts(): Generator<any, void, any>;
315
315
  get domainName(): any;
316
- get ipAddressOrDomainName(): any;
317
316
  get networks(): Set<any>;
318
317
  endpoints(filter: any): any[];
319
318
  address(options?: {
319
+ endpoints: (e: any) => boolean;
320
320
  select: (e: any) => any;
321
321
  limit: number;
322
+ join: string;
322
323
  }): string | any[];
323
324
  set alias(value: any);
324
325
  get alias(): any;