pmcf 1.82.0 → 1.84.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": "1.82.0",
3
+ "version": "1.84.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -38,7 +38,7 @@
38
38
  "lint:typescript": "tsc --allowJs --checkJs --noEmit --resolveJsonModule --target es2024 --lib esnext -m esnext --module nodenext --moduleResolution nodenext ./src**/*.mjs"
39
39
  },
40
40
  "dependencies": {
41
- "npm-pkgbuild": "^17.4.0",
41
+ "npm-pkgbuild": "^17.5.1",
42
42
  "pacc": "^3.3.0",
43
43
  "pkg-dir": "^8.0.0"
44
44
  },
package/src/base.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import { join } from "node:path";
2
- import { createReadStream } from "node:fs";
3
- import { allOutputs, extractFunctions } from "npm-pkgbuild";
2
+ import { allOutputs } from "npm-pkgbuild";
4
3
  import { getAttribute } from "pacc";
5
4
  import { addType, primitives } from "./types.mjs";
6
5
 
@@ -354,27 +353,6 @@ export class Base {
354
353
  return this.#packaging;
355
354
  }
356
355
 
357
- #packageHooks = {};
358
-
359
- get packageHooks() {
360
- return this.#packageHooks;
361
- }
362
-
363
- async loadPackageHooks(file) {
364
- for await (const f of extractFunctions(createReadStream(file, "utf8"))) {
365
- this.addPackageHook(f.name, f.body);
366
- }
367
- }
368
-
369
- addPackageHook(name, content) {
370
- const hook = this.#packageHooks[name];
371
- if (hook) {
372
- content = hook + "\n" + content;
373
- }
374
-
375
- this.#packageHooks[name] = content;
376
- }
377
-
378
356
  get outputs() {
379
357
  return new Set(allOutputs.filter(o => this.packaging.has(o.name)));
380
358
  }
package/src/dns.mjs CHANGED
@@ -29,6 +29,7 @@ const DNSServiceTypeDefinition = {
29
29
  },
30
30
  notify: { type: "boolean", collection: false, writeable: true },
31
31
  recordTTL: { type: "string", collection: false, writeable: true },
32
+ serial: { type: "number", collection: false, writeable: true },
32
33
  refresh: { type: "string", collection: false, writeable: true },
33
34
  retry: { type: "string", collection: false, writeable: true },
34
35
  expire: { type: "string", collection: false, writeable: true },
@@ -49,6 +50,7 @@ export class DNSService extends Base {
49
50
  #source = [];
50
51
  #trusted = [];
51
52
 
53
+ serial = Math.ceil(Date.now() / 1000);
52
54
  refresh = 36000;
53
55
  retry = 72000;
54
56
  expire = 600000;
@@ -73,7 +75,7 @@ export class DNSService extends Base {
73
75
  }
74
76
 
75
77
  get soaUpdates() {
76
- return [this.refresh, this.retry, this.expire, this.minimum];
78
+ return [this.serial, this.refresh, this.retry, this.expire, this.minimum];
77
79
  }
78
80
 
79
81
  set trusted(value) {
@@ -120,11 +122,11 @@ export class DNSService extends Base {
120
122
  ];
121
123
  }
122
124
 
123
- async *preparePackages(stagingDir) {
125
+ async *preparePackages(dir) {
124
126
  const name = this.owner.name;
125
- const p1 = join(stagingDir, "p1");
126
-
127
- const result = {
127
+ const p1 = join(dir, "p1");
128
+ const packageData = {
129
+ dir: p1,
128
130
  sources: [new FileContentProvider(p1 + "/")[Symbol.asyncIterator]()],
129
131
  outputs: this.outputs,
130
132
  properties: {
@@ -154,12 +156,12 @@ export class DNSService extends Base {
154
156
  );
155
157
 
156
158
  if (options.length > 2 || category.length > 2) {
157
- yield result;
159
+ yield packageData;
158
160
  }
159
161
 
160
- const p2 = join(stagingDir, "p2");
162
+ const p2 = (packageData.dir = join(dir, "p2"));
161
163
 
162
- result.properties = {
164
+ packageData.properties = {
163
165
  name: `named-zones-${name}`,
164
166
  description: `zone definitions for ${this.fullName}`,
165
167
  dependencies: ["mf-named"],
@@ -167,23 +169,28 @@ export class DNSService extends Base {
167
169
  access: "private"
168
170
  };
169
171
 
170
- result.sources = [
172
+ packageData.sources = [
171
173
  new FileContentProvider(p2 + "/", {
172
174
  mode: 0o644,
173
175
  owner: "named",
174
176
  group: "named"
175
- })[Symbol.asyncIterator]()
177
+ }, {
178
+ mode: 0o755,
179
+ owner: "named",
180
+ group: "named"
181
+ })[
182
+ Symbol.asyncIterator
183
+ ]()
176
184
  ];
177
185
 
178
- await generateZoneDefs(this, p2);
186
+ await generateZoneDefs(this, packageData);
179
187
 
180
- yield result;
188
+ yield packageData;
181
189
  }
182
190
  }
183
191
 
184
- async function generateZoneDefs(dns, targetDir) {
192
+ async function generateZoneDefs(dns, packageData) {
185
193
  const ttl = dns.recordTTL;
186
- const updates = [Math.ceil(Date.now() / 1000), ...dns.soaUpdates].join(" ");
187
194
  const nameService = dns.findService(DNS_SERVICE_FILTER);
188
195
  const rname = dns.administratorEmail.replace(/@/, ".");
189
196
 
@@ -192,7 +199,7 @@ async function generateZoneDefs(dns, targetDir) {
192
199
  "SOA",
193
200
  dnsFullName(nameService.domainName),
194
201
  dnsFullName(rname),
195
- `(${updates})`
202
+ `(${[...dns.soaUpdates].join(" ")})`
196
203
  );
197
204
 
198
205
  const NSRecord = DNSRecord(
@@ -372,14 +379,14 @@ async function generateZoneDefs(dns, targetDir) {
372
379
  }
373
380
 
374
381
  await writeLines(
375
- join(targetDir, "var/lib/named"),
382
+ join(packageData.dir, "var/lib/named"),
376
383
  zone.file,
377
384
  [...zone.records].map(r => r.toString(maxKeyLength, ttl))
378
385
  );
379
386
  }
380
387
 
381
388
  await writeLines(
382
- join(targetDir, "etc/named.d/zones"),
389
+ join(packageData.dir, "etc/named.d/zones"),
383
390
  config.name,
384
391
  content
385
392
  );
package/src/hooks.mjs ADDED
@@ -0,0 +1,21 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { extractFunctions } from "npm-pkgbuild";
3
+
4
+ export async function loadHooks(hooks, file) {
5
+ for await (const f of extractFunctions(createReadStream(file, "utf8"))) {
6
+ addHook(hooks, f.name, f.body);
7
+ }
8
+
9
+ return hooks;
10
+ }
11
+
12
+ export function addHook(hooks, name, content) {
13
+ const hook = hooks[name];
14
+ if (hook) {
15
+ content = hook + "\n" + content;
16
+ }
17
+
18
+ hooks[name] = content;
19
+
20
+ return hooks;
21
+ }
@@ -1,9 +1,10 @@
1
1
  import { writeFile, mkdir, copyFile, glob, chmod } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
3
  import { writeLines, sectionLines } from "../src/utils.mjs";
4
+ import { addHook } from "./hooks.mjs";
4
5
 
5
- export async function generateMachineInfo(host, dir) {
6
- const etcDir = join(dir, "etc");
6
+ export async function generateMachineInfo(host, packageData) {
7
+ const etcDir = join(packageData.dir, "etc");
7
8
  await writeLines(
8
9
  etcDir,
9
10
  "machine-info",
@@ -20,8 +21,8 @@ export async function generateMachineInfo(host, dir) {
20
21
  await writeLines(etcDir, "hostname", host.hostName);
21
22
  }
22
23
 
23
- export async function generateNetworkDefs(host, dir) {
24
- const networkDir = join(dir, "etc/systemd/network");
24
+ export async function generateNetworkDefs(host, packageData) {
25
+ const networkDir = join(packageData.dir, "etc/systemd/network");
25
26
 
26
27
  for (const ni of host.networkInterfaces.values()) {
27
28
  if (ni.name !== "eth0" && ni.hwaddr) {
@@ -100,7 +101,7 @@ export async function generateNetworkDefs(host, dir) {
100
101
  }
101
102
  break;
102
103
  case "wifi": {
103
- const d = join(dir, "etc/wpa_supplicant");
104
+ const d = join(packageData.dir, "etc/wpa_supplicant");
104
105
  await mkdir(d, { recursive: true });
105
106
  writeFile(
106
107
  join(d, `wpa_supplicant-${ni.name}.conf`),
@@ -116,7 +117,8 @@ network={
116
117
  "utf8"
117
118
  );
118
119
 
119
- host.addPackageHook(
120
+ addHook(
121
+ packageData.properties.hooks,
120
122
  "post_install",
121
123
  `systemctl enable wpa_supplicant@${ni.name}.service`
122
124
  );
@@ -125,8 +127,8 @@ network={
125
127
  }
126
128
  }
127
129
 
128
- export async function copySshKeys(host, dir) {
129
- const sshDir = join(dir, "etc", "ssh");
130
+ export async function copySshKeys(host, packageData) {
131
+ const sshDir = join(packageData.dir, "etc", "ssh");
130
132
 
131
133
  await mkdir(sshDir, { recursive: true });
132
134
 
package/src/host.mjs CHANGED
@@ -18,6 +18,7 @@ import {
18
18
  } from "./utils.mjs";
19
19
  import { objectFilter } from "./filter.mjs";
20
20
  import { addType, types } from "./types.mjs";
21
+ import { loadHooks } from "./hooks.mjs";
21
22
  import {
22
23
  generateNetworkDefs,
23
24
  generateMachineInfo,
@@ -47,6 +48,7 @@ const HostTypeDefinition = {
47
48
  serial: { type: "string", collection: false, writeable: true },
48
49
  vendor: { type: "string", collection: false, writeable: true },
49
50
  chassis: { type: "string", collection: false, writeable: true },
51
+ architecture: { type: "string", collection: false, writeable: true },
50
52
  priority: { type: "number", collection: false, writeable: true },
51
53
  replaces: { type: "string", collection: true, writeable: true },
52
54
  depends: { type: "string", collection: true, writeable: true },
@@ -73,6 +75,7 @@ export class Host extends Base {
73
75
  #deployment;
74
76
  #chassis;
75
77
  #vendor;
78
+ #architecture;
76
79
 
77
80
  static {
78
81
  addType(this);
@@ -149,6 +152,16 @@ export class Host extends Base {
149
152
  return this.#vendor || this.extends.find(e => e.vendor)?.vendor;
150
153
  }
151
154
 
155
+ set architecture(value) {
156
+ this.#architecture = value;
157
+ }
158
+
159
+ get architecture() {
160
+ return (
161
+ this.#architecture || this.extends.find(e => e.architecture)?.architecture
162
+ );
163
+ }
164
+
152
165
  get derivedPackaging() {
153
166
  return this.extends.reduce((a, c) => a.union(c.packaging), new Set());
154
167
  }
@@ -380,36 +393,39 @@ export class Host extends Base {
380
393
  return readFile(join(this.directory, `ssh_host_${type}_key.pub`), "utf8");
381
394
  }
382
395
 
383
- async *preparePackages(stagingDir) {
384
- await this.loadPackageHooks(
385
- new URL("host.install", import.meta.url).pathname
396
+ async *preparePackages(dir) {
397
+ const packageData = {
398
+ dir,
399
+ sources: [
400
+ new FileContentProvider(dir + "/")[Symbol.asyncIterator]()
401
+ ],
402
+ outputs: this.outputs,
403
+ properties: {
404
+ name: `${this.typeName}-${this.owner.name}-${this.name}`,
405
+ description: `${this.typeName} definitions for ${this.fullName}`,
406
+ access: "private",
407
+ dependencies: [
408
+ `${this.location.typeName}-${this.location.name}`,
409
+ ...this.depends
410
+ ],
411
+ provides: [...this.provides],
412
+ replaces: [`mf-${this.hostName}`, ...this.replaces],
413
+ backup: "root/.ssh/known_hosts",
414
+ hooks: await loadHooks({},
415
+ new URL("host.install", import.meta.url).pathname
416
+ )
417
+ }
418
+ };
419
+
420
+ await generateNetworkDefs(this, packageData);
421
+ await generateMachineInfo(this, packageData);
422
+ await copySshKeys(this, packageData);
423
+ await generateKnownHosts(
424
+ this.owner.hosts(),
425
+ join(dir, "root", ".ssh")
386
426
  );
387
427
 
388
- for await (const result of super.preparePackages(stagingDir)) {
389
- await generateNetworkDefs(this, stagingDir);
390
- await generateMachineInfo(this, stagingDir);
391
- await copySshKeys(this, stagingDir);
392
- await generateKnownHosts(
393
- this.owner.hosts(),
394
- join(stagingDir, "root", ".ssh")
395
- );
396
-
397
- result.properties.name = `${this.typeName}-${this.owner.name}-${this.name}`;
398
- result.properties.dependencies = [
399
- `${this.location.typeName}-${this.location.name}`,
400
- ...this.depends
401
- ];
402
- result.properties.provides = [...this.provides];
403
- result.properties.replaces = [`mf-${this.hostName}`, ...this.replaces];
404
- result.properties.backup = "root/.ssh/known_hosts";
405
- result.properties.hooks = this.packageHooks;
406
-
407
- result.sources.push(
408
- new FileContentProvider(stagingDir + "/")[Symbol.asyncIterator]()
409
- );
410
-
411
- yield result;
412
- }
428
+ yield packageData;
413
429
  }
414
430
  }
415
431
 
package/src/location.mjs CHANGED
@@ -4,6 +4,7 @@ import { FileContentProvider } from "npm-pkgbuild";
4
4
  import { Owner } from "./owner.mjs";
5
5
  import { addType } from "./types.mjs";
6
6
  import { writeLines, sectionLines } from "./utils.mjs";
7
+ import { loadHooks } from "./hooks.mjs";
7
8
 
8
9
  const LocationTypeDefinition = {
9
10
  name: "location",
@@ -45,56 +46,56 @@ export class Location extends Owner {
45
46
  return [...this.typeList("network")][0] || super.network;
46
47
  }
47
48
 
48
- async *preparePackages(stagingDir) {
49
- await this.loadPackageHooks(
50
- new URL("location.install", import.meta.url).pathname
49
+ async *preparePackages(dir) {
50
+ const packageData = {
51
+ dir,
52
+ sources: [new FileContentProvider(dir + "/")[Symbol.asyncIterator]()],
53
+ outputs: this.outputs,
54
+ properties: {
55
+ name: `${this.typeName}-${this.name}`,
56
+ description: `${this.typeName} definitions for ${this.fullName}`,
57
+ access: "private",
58
+ dependencies: { jq: ">=1.6" },
59
+ provides: ["location", "mf-location"],
60
+ replaces: [`mf-location-${this.name}`],
61
+ hooks: await loadHooks(
62
+ {},
63
+ new URL("location.install", import.meta.url).pathname
64
+ )
65
+ }
66
+ };
67
+
68
+ await writeLines(
69
+ join(dir, "etc/systemd/resolved.conf.d"),
70
+ `${this.name}.conf`,
71
+ sectionLines(...this.dns.systemdConfig)
51
72
  );
52
73
 
53
- for await (const result of super.preparePackages(stagingDir)) {
54
- await writeLines(
55
- join(stagingDir, "etc/systemd/resolved.conf.d"),
56
- `${this.name}.conf`,
57
- sectionLines(...this.dns.systemdConfig)
58
- );
59
-
60
- await writeLines(
61
- join(stagingDir, "etc/systemd/journald.conf.d"),
62
- `${this.name}.conf`,
63
- sectionLines("Journal", {
64
- Compress: "yes",
65
- SystemMaxUse: "500M",
66
- SyncIntervalSec: "15m"
67
- })
68
- );
69
-
70
- await writeLines(
71
- join(stagingDir, "etc/systemd/timesyncd.conf.d"),
72
- `${this.name}.conf`,
73
- sectionLines(...this.ntp.systemdConfig)
74
- );
75
-
76
- const locationDir = join(stagingDir, "etc", "location");
77
-
78
- await mkdir(locationDir, { recursive: true });
79
-
80
- await copyFile(
81
- join(this.directory, "location.json"),
82
- join(locationDir, "location.json")
83
- );
74
+ await writeLines(
75
+ join(dir, "etc/systemd/journald.conf.d"),
76
+ `${this.name}.conf`,
77
+ sectionLines("Journal", {
78
+ Compress: "yes",
79
+ SystemMaxUse: "500M",
80
+ SyncIntervalSec: "15m"
81
+ })
82
+ );
84
83
 
85
- result.properties.name = `${this.typeName}-${this.name}`;
84
+ await writeLines(
85
+ join(dir, "etc/systemd/timesyncd.conf.d"),
86
+ `${this.name}.conf`,
87
+ sectionLines(...this.ntp.systemdConfig)
88
+ );
86
89
 
87
- result.properties.provides = ["location", "mf-location"];
88
- result.properties.depends = { jq: ">=1.6" };
89
- result.properties.replaces = [`mf-location-${this.name}`];
90
+ const locationDir = join(dir, "etc", "location");
90
91
 
91
- result.sources.push(
92
- new FileContentProvider(stagingDir + "/")[Symbol.asyncIterator]()
93
- );
92
+ await mkdir(locationDir, { recursive: true });
94
93
 
95
- result.properties.hooks = this.packageHooks;
94
+ await copyFile(
95
+ join(this.directory, "location.json"),
96
+ join(locationDir, "location.json")
97
+ );
96
98
 
97
- yield result;
98
- }
99
+ yield packageData;
99
100
  }
100
101
  }
package/src/owner.mjs CHANGED
@@ -30,6 +30,7 @@ const OwnerTypeDefinition = {
30
30
  domain: { type: "string", collection: false, writeable: true },
31
31
  domains: { type: "string", collection: true, writeable: true },
32
32
  timezone: { type: "string", collection: false, writeable: true },
33
+ architectures: { type: "string", collection: true, writeable: true },
33
34
  locales: { type: "string", collection: true, writeable: true },
34
35
  administratorEmail: { type: "string", collection: false, writeable: true }
35
36
  }
@@ -396,25 +397,38 @@ export class Owner extends Base {
396
397
  return this.domain ? new Set([this.domain]) : new Set();
397
398
  }
398
399
 
399
- /*
400
- get localDomains() {
401
- let domains = new Set();
400
+ get domainNames() {
401
+ let names = new Set();
402
402
 
403
- for (const object of this.hosts()) {
404
- domains = domains.union(object.localDomains);
403
+ for (const host of this.hosts()) {
404
+ names = names.union(new Set(host.domainNames));
405
405
  }
406
406
 
407
- return domains;
407
+ return names;
408
408
  }
409
- */
410
409
 
411
- get domainNames() {
412
- let names = new Set();
410
+ #architectures;
411
+
412
+ set architectures(value)
413
+ {
414
+ if (value instanceof Set) {
415
+ this.#architectures = this.#architectures ? this.#architectures.union(value) : value;
416
+ } else {
417
+ this.#architectures = new Set(value);
418
+ }
419
+ }
420
+
421
+ get architectures() {
422
+ if(this.#architectures) {
423
+ return this.#architectures;
424
+ }
425
+
426
+ const architectures = new Set();
413
427
 
414
428
  for (const host of this.hosts()) {
415
- names = names.union(new Set(host.domainNames));
429
+ architectures.add(host.architecture);
416
430
  }
417
431
 
418
- return names;
432
+ return architectures;
419
433
  }
420
434
  }
package/types/base.d.mts CHANGED
@@ -73,9 +73,6 @@ export class Base {
73
73
  set packaging(value: Set<any>);
74
74
  get packaging(): Set<any>;
75
75
  get derivedPackaging(): any;
76
- get packageHooks(): {};
77
- loadPackageHooks(file: any): Promise<void>;
78
- addPackageHook(name: any, content: any): void;
79
76
  get outputs(): Set<typeof import("npm-pkgbuild").ARCH | typeof import("npm-pkgbuild").DOCKER>;
80
77
  preparePackages(stagingDir: any): AsyncGenerator<{
81
78
  sources: any[];
@@ -127,6 +127,11 @@ export class Cluster extends Host {
127
127
  collection: boolean;
128
128
  writeable: boolean;
129
129
  };
130
+ serial: {
131
+ type: string;
132
+ collection: boolean;
133
+ writeable: boolean;
134
+ };
130
135
  refresh: {
131
136
  type: string;
132
137
  collection: boolean;
@@ -193,6 +198,11 @@ export class Cluster extends Host {
193
198
  collection: boolean;
194
199
  writeable: boolean;
195
200
  };
201
+ architectures: {
202
+ type: string;
203
+ collection: boolean;
204
+ writeable: boolean;
205
+ };
196
206
  locales: {
197
207
  type: string;
198
208
  collection: boolean;
@@ -303,6 +313,11 @@ export class Cluster extends Host {
303
313
  collection: boolean;
304
314
  writeable: boolean;
305
315
  };
316
+ architecture: {
317
+ type: string;
318
+ collection: boolean;
319
+ writeable: boolean;
320
+ };
306
321
  priority: {
307
322
  type: string;
308
323
  collection: boolean;
@@ -390,7 +405,7 @@ export class Cluster extends Host {
390
405
  get backups(): Set<any>;
391
406
  get members(): Set<any>;
392
407
  preparePackages(stagingDir: any): AsyncGenerator<{
393
- sources: AsyncGenerator<any, void, unknown>[];
408
+ sources: AsyncIterable<import("content-entry").ContentEntry>[];
394
409
  outputs: any;
395
410
  properties: {
396
411
  name: string;
package/types/dns.d.mts CHANGED
@@ -41,6 +41,11 @@ export class DNSService extends Base {
41
41
  collection: boolean;
42
42
  writeable: boolean;
43
43
  };
44
+ serial: {
45
+ type: string;
46
+ collection: boolean;
47
+ writeable: boolean;
48
+ };
44
49
  refresh: {
45
50
  type: string;
46
51
  collection: boolean;
@@ -74,6 +79,7 @@ export class DNSService extends Base {
74
79
  hasCatalog: boolean;
75
80
  hasLinkLocalAdresses: boolean;
76
81
  notify: boolean;
82
+ serial: number;
77
83
  refresh: number;
78
84
  retry: number;
79
85
  expire: number;
@@ -91,8 +97,9 @@ export class DNSService extends Base {
91
97
  MulticastDNS: string;
92
98
  LLMNR: string;
93
99
  })[];
94
- preparePackages(stagingDir: any): AsyncGenerator<{
95
- sources: AsyncGenerator<any, void, unknown>[];
100
+ preparePackages(dir: any): AsyncGenerator<{
101
+ dir: string;
102
+ sources: AsyncIterable<import("content-entry").ContentEntry>[];
96
103
  outputs: Set<typeof import("npm-pkgbuild").ARCH | typeof import("npm-pkgbuild").DOCKER>;
97
104
  properties: {
98
105
  name: string;
@@ -0,0 +1,2 @@
1
+ export function loadHooks(hooks: any, file: any): Promise<any>;
2
+ export function addHook(hooks: any, name: any, content: any): any;
@@ -1,4 +1,4 @@
1
- export function generateMachineInfo(host: any, dir: any): Promise<void>;
2
- export function generateNetworkDefs(host: any, dir: any): Promise<void>;
3
- export function copySshKeys(host: any, dir: any): Promise<void>;
1
+ export function generateMachineInfo(host: any, packageData: any): Promise<void>;
2
+ export function generateNetworkDefs(host: any, packageData: any): Promise<void>;
3
+ export function copySshKeys(host: any, packageData: any): Promise<void>;
4
4
  export function generateKnownHosts(hosts: any, dir: any): Promise<void>;
package/types/host.d.mts CHANGED
@@ -96,6 +96,11 @@ export class Host extends Base {
96
96
  collection: boolean;
97
97
  writeable: boolean;
98
98
  };
99
+ architecture: {
100
+ type: string;
101
+ collection: boolean;
102
+ writeable: boolean;
103
+ };
99
104
  priority: {
100
105
  type: string;
101
106
  collection: boolean;
@@ -170,6 +175,8 @@ export class Host extends Base {
170
175
  get chassis(): any;
171
176
  set vendor(value: any);
172
177
  get vendor(): any;
178
+ set architecture(value: any);
179
+ get architecture(): any;
173
180
  get isTemplate(): true | RegExpMatchArray;
174
181
  get isModel(): boolean;
175
182
  get model(): any;
@@ -205,6 +212,21 @@ export class Host extends Base {
205
212
  get cidrAddress(): any;
206
213
  get cidrAddresses(): any[];
207
214
  publicKey(type?: string): Promise<string>;
215
+ preparePackages(dir: any): AsyncGenerator<{
216
+ dir: any;
217
+ sources: AsyncIterable<import("content-entry").ContentEntry>[];
218
+ outputs: Set<typeof import("npm-pkgbuild").ARCH | typeof import("npm-pkgbuild").DOCKER>;
219
+ properties: {
220
+ name: string;
221
+ description: string;
222
+ access: string;
223
+ dependencies: any[];
224
+ provides: any[];
225
+ replaces: any[];
226
+ backup: string;
227
+ hooks: any;
228
+ };
229
+ }, void, unknown>;
208
230
  #private;
209
231
  }
210
232
  export class NetworkInterface extends Base {
@@ -127,6 +127,11 @@ export class Location extends Owner {
127
127
  collection: boolean;
128
128
  writeable: boolean;
129
129
  };
130
+ serial: {
131
+ type: string;
132
+ collection: boolean;
133
+ writeable: boolean;
134
+ };
130
135
  refresh: {
131
136
  type: string;
132
137
  collection: boolean;
@@ -193,6 +198,11 @@ export class Location extends Owner {
193
198
  collection: boolean;
194
199
  writeable: boolean;
195
200
  };
201
+ architectures: {
202
+ type: string;
203
+ collection: boolean;
204
+ writeable: boolean;
205
+ };
196
206
  locales: {
197
207
  type: string;
198
208
  collection: boolean;
@@ -332,6 +342,11 @@ export class Location extends Owner {
332
342
  collection: boolean;
333
343
  writeable: boolean;
334
344
  };
345
+ serial: {
346
+ type: string;
347
+ collection: boolean;
348
+ writeable: boolean;
349
+ };
335
350
  refresh: {
336
351
  type: string;
337
352
  collection: boolean;
@@ -398,6 +413,11 @@ export class Location extends Owner {
398
413
  collection: boolean;
399
414
  writeable: boolean;
400
415
  };
416
+ architectures: {
417
+ type: string;
418
+ collection: boolean;
419
+ writeable: boolean;
420
+ };
401
421
  locales: {
402
422
  type: string;
403
423
  collection: boolean;
@@ -419,5 +439,21 @@ export class Location extends Owner {
419
439
  };
420
440
  };
421
441
  get location(): this;
442
+ preparePackages(dir: any): AsyncGenerator<{
443
+ dir: any;
444
+ sources: AsyncIterable<import("content-entry").ContentEntry>[];
445
+ outputs: Set<typeof import("npm-pkgbuild").ARCH | typeof import("npm-pkgbuild").DOCKER>;
446
+ properties: {
447
+ name: string;
448
+ description: string;
449
+ access: string;
450
+ dependencies: {
451
+ jq: string;
452
+ };
453
+ provides: string[];
454
+ replaces: string[];
455
+ hooks: any;
456
+ };
457
+ }, void, unknown>;
422
458
  }
423
459
  import { Owner } from "./owner.mjs";
@@ -129,6 +129,11 @@ export class Network extends Owner {
129
129
  collection: boolean;
130
130
  writeable: boolean;
131
131
  };
132
+ serial: {
133
+ type: string;
134
+ collection: boolean;
135
+ writeable: boolean;
136
+ };
132
137
  refresh: {
133
138
  type: string;
134
139
  collection: boolean;
@@ -195,6 +200,11 @@ export class Network extends Owner {
195
200
  collection: boolean;
196
201
  writeable: boolean;
197
202
  };
203
+ architectures: {
204
+ type: string;
205
+ collection: boolean;
206
+ writeable: boolean;
207
+ };
198
208
  locales: {
199
209
  type: string;
200
210
  collection: boolean;
package/types/owner.d.mts CHANGED
@@ -125,6 +125,11 @@ export class Owner extends Base {
125
125
  collection: boolean;
126
126
  writeable: boolean;
127
127
  };
128
+ serial: {
129
+ type: string;
130
+ collection: boolean;
131
+ writeable: boolean;
132
+ };
128
133
  refresh: {
129
134
  type: string;
130
135
  collection: boolean;
@@ -191,6 +196,11 @@ export class Owner extends Base {
191
196
  collection: boolean;
192
197
  writeable: boolean;
193
198
  };
199
+ architectures: {
200
+ type: string;
201
+ collection: boolean;
202
+ writeable: boolean;
203
+ };
194
204
  locales: {
195
205
  type: string;
196
206
  collection: boolean;
@@ -238,6 +248,8 @@ export class Owner extends Base {
238
248
  get domains(): Set<any>;
239
249
  get localDomains(): Set<any>;
240
250
  get domainNames(): Set<any>;
251
+ set architectures(value: any);
252
+ get architectures(): any;
241
253
  #private;
242
254
  }
243
255
  import { Base } from "./base.mjs";
package/types/root.d.mts CHANGED
@@ -131,6 +131,11 @@ export class Root extends Location {
131
131
  collection: boolean;
132
132
  writeable: boolean;
133
133
  };
134
+ serial: {
135
+ type: string;
136
+ collection: boolean;
137
+ writeable: boolean;
138
+ };
134
139
  refresh: {
135
140
  type: string;
136
141
  collection: boolean;
@@ -197,6 +202,11 @@ export class Root extends Location {
197
202
  collection: boolean;
198
203
  writeable: boolean;
199
204
  };
205
+ architectures: {
206
+ type: string;
207
+ collection: boolean;
208
+ writeable: boolean;
209
+ };
200
210
  locales: {
201
211
  type: string;
202
212
  collection: boolean;
@@ -336,6 +346,11 @@ export class Root extends Location {
336
346
  collection: boolean;
337
347
  writeable: boolean;
338
348
  };
349
+ serial: {
350
+ type: string;
351
+ collection: boolean;
352
+ writeable: boolean;
353
+ };
339
354
  refresh: {
340
355
  type: string;
341
356
  collection: boolean;
@@ -402,6 +417,11 @@ export class Root extends Location {
402
417
  collection: boolean;
403
418
  writeable: boolean;
404
419
  };
420
+ architectures: {
421
+ type: string;
422
+ collection: boolean;
423
+ writeable: boolean;
424
+ };
405
425
  locales: {
406
426
  type: string;
407
427
  collection: boolean;