pmcf 1.57.2 → 1.58.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.57.2",
3
+ "version": "1.58.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/base.mjs CHANGED
@@ -271,6 +271,23 @@ export class Base {
271
271
  return this.owner?.timezone;
272
272
  }
273
273
 
274
+ findService(filter) {
275
+ let best;
276
+ for (const service of this.findServices(filter)) {
277
+ if (!best || service.priority < best.priority) {
278
+ best = service;
279
+ }
280
+ }
281
+
282
+ return best;
283
+ }
284
+
285
+ *findServices(filter) {
286
+ if (this.owner) {
287
+ yield* this.owner?.findServices(filter);
288
+ }
289
+ }
290
+
274
291
  #directory;
275
292
  set directory(directory) {
276
293
  this.#directory = directory;
package/src/dns.mjs CHANGED
@@ -22,6 +22,8 @@ const DNSServiceTypeDefinition = {
22
22
  }
23
23
  };
24
24
 
25
+ const DNS_SERVICE_FILTER = { type: DNSServiceTypeDefinition.name };
26
+
25
27
  export class DNSService extends Base {
26
28
  allowedUpdates = [];
27
29
  recordTTL = "1W";
@@ -65,9 +67,7 @@ export class DNSService extends Base {
65
67
  return this.#forwardsTo;
66
68
  }
67
69
 
68
- async *findServices() {
69
- const filter = { type: DNSServiceTypeDefinition.name };
70
-
70
+ *findServices(filter) {
71
71
  yield* this.owner.findServices(filter);
72
72
 
73
73
  for (const s of this.forwardsTo) {
@@ -80,17 +80,17 @@ export class DNSService extends Base {
80
80
  }
81
81
 
82
82
  async resolvedConfig() {
83
- const dnsServices = (await Array.fromAsync(this.findServices())).sort(
83
+ const dnsServices = Array.from(this.findServices(DNS_SERVICE_FILTER)).sort(
84
84
  (a, b) => a.priority - b.priority
85
85
  );
86
86
 
87
87
  const master = dnsServices
88
88
  .filter(s => s.priority < 10)
89
- .map(s => s.ipAddresses)
89
+ .map(s => s.rawAddresses)
90
90
  .flat();
91
91
  const fallback = dnsServices
92
92
  .filter(s => s.priority >= 10)
93
- .map(s => s.ipAddresses)
93
+ .map(s => s.rawAddresses)
94
94
  .flat();
95
95
 
96
96
  return {
@@ -131,7 +131,7 @@ async function generateNamedDefs(dns, targetDir) {
131
131
  const zones = [];
132
132
  const records = new Set();
133
133
 
134
- const nameserver = (await dns.owner.findService({ type: "dns" }))?.owner;
134
+ const nameService = dns.findService(DNS_SERVICE_FILTER);
135
135
  const rname = dns.administratorEmail.replace(/@/, ".");
136
136
 
137
137
  let maxKeyLength;
@@ -157,18 +157,18 @@ async function generateNamedDefs(dns, targetDir) {
157
157
  );
158
158
  }
159
159
 
160
- console.log(dns.owner.fullName, domain, nameserver?.hostName, rname);
160
+ console.log(dns.owner.fullName, domain, nameService.domainName, rname);
161
161
  const reverseZones = new Map();
162
162
 
163
163
  const SOARecord = createRecord(
164
164
  "@",
165
165
  "SOA",
166
- fullName(nameserver?.domainName),
166
+ fullName(nameService.domainName),
167
167
  fullName(rname),
168
168
  `(${updates})`
169
169
  );
170
170
 
171
- const NSRecord = createRecord("@", "NS", fullName(nameserver?.rawAddress));
171
+ const NSRecord = createRecord("@", "NS", fullName(nameService.rawAddress));
172
172
 
173
173
  const catalogZone = {
174
174
  id: `catalog.${domain}`,
@@ -290,7 +290,11 @@ async function generateNamedDefs(dns, targetDir) {
290
290
  }
291
291
  }
292
292
 
293
- await writeLines(join(targetDir, "var/lib/named"), zone.file, zone.records);
293
+ await writeLines(
294
+ join(targetDir, "var/lib/named"),
295
+ zone.file,
296
+ zone.records
297
+ );
294
298
  }
295
299
 
296
300
  await writeLines(
package/src/host.mjs CHANGED
@@ -109,7 +109,7 @@ export class Host extends Base {
109
109
  for (const ni of this.networkInterfaces.values()) {
110
110
  ni._traverse(...args);
111
111
  }
112
- for (const service of this.findServices()) {
112
+ for (const service of this.#services) {
113
113
  service._traverse(...args);
114
114
  }
115
115
 
package/src/owner.mjs CHANGED
@@ -121,17 +121,6 @@ export class Owner extends Base {
121
121
  this.addTypeObject(object.typeName, object.name, object);
122
122
  }
123
123
 
124
- findService(filter) {
125
- let best;
126
- for (const service of this.findServices(filter)) {
127
- if (!best || service.priority < best.priority) {
128
- best = service;
129
- }
130
- }
131
-
132
- return best;
133
- }
134
-
135
124
  *findServices(filter) {
136
125
  for (const host of this.hosts()) {
137
126
  for (const service of host.findServices(filter)) {
package/src/service.mjs CHANGED
@@ -79,16 +79,31 @@ export class Service extends Base {
79
79
  return this;
80
80
  }
81
81
 
82
+ get server()
83
+ {
84
+ return this.owner;
85
+ }
86
+
87
+ get domainName()
88
+ {
89
+ return this.server.domainName;
90
+ }
91
+
92
+ get rawAddress()
93
+ {
94
+ return this.#ipAddresses?.[0] || this.server.rawAddress;
95
+ }
96
+
82
97
  set ipAddresses(value) {
83
98
  this.#ipAddresses = value;
84
99
  }
85
100
 
86
- get ipAddresses() {
101
+ get rawAddresses() {
87
102
  return this.#ipAddresses || this.owner.rawAddresses;
88
103
  }
89
104
 
90
105
  get addresses() {
91
- return this.ipAddresses.map(a => `${a}:${this.port}`);
106
+ return this.rawAddresses.map(a => `${a}:${this.port}`);
92
107
  }
93
108
 
94
109
  set port(value) {
package/types/base.d.mts CHANGED
@@ -61,6 +61,8 @@ export class Base {
61
61
  get locales(): any;
62
62
  get country(): any;
63
63
  get timezone(): any;
64
+ findService(filter: any): any;
65
+ findServices(filter: any): Generator<any, void, any>;
64
66
  set directory(directory: any);
65
67
  get directory(): any;
66
68
  get fullName(): any;
package/types/dns.d.mts CHANGED
@@ -70,7 +70,6 @@ export class DNSService extends Base {
70
70
  get soaUpdates(): number[];
71
71
  set forwardsTo(value: any[]);
72
72
  get forwardsTo(): any[];
73
- findServices(): AsyncGenerator<any, void, any>;
74
73
  get domains(): any[];
75
74
  resolvedConfig(): Promise<{
76
75
  DNS: string;
package/types/owner.d.mts CHANGED
@@ -184,7 +184,6 @@ export class Owner extends Base {
184
184
  typeList(typeName: any): any;
185
185
  addTypeObject(typeName: any, name: any, object: any): void;
186
186
  addObject(object: any): void;
187
- findService(filter: any): any;
188
187
  findServices(filter: any): Generator<any, void, unknown>;
189
188
  locationNamed(name: any): any;
190
189
  locations(): any;
@@ -89,8 +89,11 @@ export class Service extends Base {
89
89
  };
90
90
  };
91
91
  alias: any;
92
+ get server(): any;
93
+ get domainName(): any;
94
+ get rawAddress(): any;
92
95
  set ipAddresses(value: any);
93
- get ipAddresses(): any;
96
+ get rawAddresses(): any;
94
97
  get addresses(): any;
95
98
  set port(value: any);
96
99
  get port(): any;