pmcf 2.73.12 → 2.74.1

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.73.12",
3
+ "version": "2.74.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -52,7 +52,7 @@
52
52
  "dependencies": {
53
53
  "ip-utilties": "^1.4.7",
54
54
  "npm-pkgbuild": "^18.2.12",
55
- "pacc": "^3.11.1",
55
+ "pacc": "^3.13.0",
56
56
  "package-directory": "^8.1.0"
57
57
  },
58
58
  "devDependencies": {
package/src/base.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { join } from "node:path";
2
2
  import { allOutputs } from "npm-pkgbuild";
3
- import { getAttribute } from "pacc";
3
+ import { getAttribute, default_attribute, description_attribute } from "pacc";
4
4
  import { addType, primitives, typeFactory } from "./types.mjs";
5
5
  import { asArray } from "./utils.mjs";
6
6
 
@@ -16,17 +16,17 @@ const BaseTypeDefinition = {
16
16
  identifier: true,
17
17
  writeable: true
18
18
  },
19
- description: { type: "string", collection: false, writeable: true },
19
+ description: { ...description_attribute, writeable: true },
20
20
  priority: { type: "number", collection: false, writeable: true },
21
- directory: { type: "string", collection: false, writeable: false },
22
- packaging: { type: "string", collection: false, writeable: true },
21
+ directory: { ...default_attribute, writeable: false },
22
+ packaging: { ...default_attribute, writeable: true },
23
23
  disabled: {
24
24
  type: "boolean",
25
25
  collection: false,
26
26
  writeable: true,
27
27
  default: false
28
28
  },
29
- tags: { type: "string", collection: true, writeable: true }
29
+ tags: { ...default_attribute, collection: true, writeable: true }
30
30
  }
31
31
  };
32
32
 
package/src/host.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
3
  import { FileContentProvider } from "npm-pkgbuild";
4
+ import { default_attribute } from "pacc";
4
5
  import { ServiceOwner, Base, addresses } from "pmcf";
5
6
  import { networkAddressProperties } from "./network-support.mjs";
6
7
  import { addHook } from "./hooks.mjs";
@@ -32,26 +33,23 @@ const HostTypeDefinition = {
32
33
  services: { type: "service", collection: true, writeable: true },
33
34
  aliases: { type: "string", collection: true, writeable: true },
34
35
  os: {
35
- type: "string",
36
- collection: false,
36
+ ...default_attribute,
37
37
  writeable: true,
38
38
  values: ["osx", "windows", "linux"]
39
39
  },
40
- "machine-id": { type: "string", collection: false, writeable: true },
41
- distribution: { type: "string", collection: false, writeable: true },
40
+ "machine-id": { ...default_attribute, writeable: true },
41
+ distribution: { ...default_attribute, writeable: true },
42
42
  deployment: {
43
- type: "string",
44
- collection: false,
43
+ ...default_attribute,
45
44
  writeable: true,
46
45
  values: ["production", "development"]
47
46
  },
48
47
  weight: { type: "number", collection: false, writeable: true },
49
- serial: { type: "string", collection: false, writeable: true },
50
- vendor: { type: "string", collection: false, writeable: true },
51
- keymap: { type: "string", collection: false, writeable: true },
48
+ serial: { ...default_attribute, writeable: true },
49
+ vendor: { ...default_attribute, writeable: true },
50
+ keymap: { ...default_attribute, writeable: true },
52
51
  chassis: {
53
- type: "string",
54
- collection: false,
52
+ ...default_attribute,
55
53
  writeable: true,
56
54
  values: [
57
55
  "phone",
@@ -69,8 +67,7 @@ const HostTypeDefinition = {
69
67
  ]
70
68
  },
71
69
  architecture: {
72
- type: "string",
73
- collection: false,
70
+ ...default_attribute,
74
71
  writeable: true,
75
72
  values: ["x86", "x86_64", "aarch64", "armv7"]
76
73
  },
@@ -516,11 +513,9 @@ export class Host extends ServiceOwner {
516
513
 
517
514
  for (const service of this.services) {
518
515
  if (service.systemdConfigs) {
519
- for (const {
520
- serviceName,
521
- configFileName,
522
- content
523
- } of asArray(service.systemdConfigs(this.name))) {
516
+ for (const { serviceName, configFileName, content } of asArray(
517
+ service.systemdConfigs(this.name)
518
+ )) {
524
519
  await writeLines(dir, configFileName, sectionLines(...content));
525
520
 
526
521
  addHook(
package/src/owner.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import { normalizeCIDR, familyIP } from "ip-utilties";
2
+ import { default_attribute, email_attribute } from "pacc";
2
3
  import { asIterator } from "./utils.mjs";
3
4
  import { Base } from "./base.mjs";
4
5
  import { Subnet, SUBNET_GLOBAL_IPV4, SUBNET_GLOBAL_IPV6 } from "./subnet.mjs";
@@ -14,14 +15,13 @@ const OwnerTypeDefinition = {
14
15
  hosts: { type: "host", collection: true, writeable: true },
15
16
  clusters: { type: "cluster", collection: true, writeable: true },
16
17
  subnets: { type: Subnet.typeDefinition, collection: true, writeable: true },
17
-
18
- country: { type: "string", collection: false, writeable: true },
19
- domain: { type: "string", collection: false, writeable: true },
18
+ country: { ...default_attribute, writeable: true },
19
+ domain: { ...default_attribute, writeable: true },
20
20
  domains: { type: "string", collection: true, writeable: true },
21
21
  timezone: { type: "string", collection: false, writeable: true },
22
22
  architectures: { type: "string", collection: true, writeable: true },
23
23
  locales: { type: "string", collection: true, writeable: true },
24
- administratorEmail: { type: "string", collection: false, writeable: true }
24
+ administratorEmail: { ...email_attribute, writeable: true }
25
25
  }
26
26
  };
27
27
 
@@ -94,7 +94,7 @@ const KeaServiceTypeDefinition = {
94
94
  };
95
95
 
96
96
  const keaVersion = 3.0;
97
- export const fetureHasHTTPEndpoints = keaVersion > 2.7;
97
+ export const fetureHasHTTPEndpoints = keaVersion >= 3.0;
98
98
 
99
99
  export class KeaService extends Service {
100
100
  static {
package/src/subnet.mjs CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  familyIP,
7
7
  matchPrefixIP
8
8
  } from "ip-utilties";
9
+ import { default_attribute } from "pacc";
9
10
  import { Base } from "./base.mjs";
10
11
  import { addType } from "./types.mjs";
11
12
 
@@ -16,9 +17,7 @@ const SubnetTypeDefinition = {
16
17
  constructWithIdentifierOnly: true,
17
18
  properties: {
18
19
  address: {
19
- type: "string",
20
- collection: false,
21
- writeable: false,
20
+ ...default_attribute,
22
21
  identifier: true
23
22
  },
24
23
  networks: { type: "network", collection: true, writeable: true },
package/types/base.d.mts CHANGED
@@ -25,9 +25,20 @@ export class Base {
25
25
  writeable: boolean;
26
26
  };
27
27
  description: {
28
+ writeable: boolean;
28
29
  type: string;
30
+ isKey: boolean;
31
+ writable: boolean;
32
+ mandatory: boolean;
29
33
  collection: boolean;
30
- writeable: boolean;
34
+ private?: boolean;
35
+ depends?: string;
36
+ additionalAttributes: string[];
37
+ description?: string;
38
+ default?: any;
39
+ set?: Function;
40
+ get?: Function;
41
+ env?: string[] | string;
31
42
  };
32
43
  priority: {
33
44
  type: string;
@@ -35,14 +46,36 @@ export class Base {
35
46
  writeable: boolean;
36
47
  };
37
48
  directory: {
49
+ writeable: boolean;
38
50
  type: string;
51
+ isKey: boolean;
52
+ writable: boolean;
53
+ mandatory: boolean;
39
54
  collection: boolean;
40
- writeable: boolean;
55
+ private?: boolean;
56
+ depends?: string;
57
+ additionalAttributes: string[];
58
+ description?: string;
59
+ default?: any;
60
+ set?: Function;
61
+ get?: Function;
62
+ env?: string[] | string;
41
63
  };
42
64
  packaging: {
65
+ writeable: boolean;
43
66
  type: string;
67
+ isKey: boolean;
68
+ writable: boolean;
69
+ mandatory: boolean;
44
70
  collection: boolean;
45
- writeable: boolean;
71
+ private?: boolean;
72
+ depends?: string;
73
+ additionalAttributes: string[];
74
+ description?: string;
75
+ default?: any;
76
+ set?: Function;
77
+ get?: Function;
78
+ env?: string[] | string;
46
79
  };
47
80
  disabled: {
48
81
  type: string;
@@ -51,9 +84,20 @@ export class Base {
51
84
  default: boolean;
52
85
  };
53
86
  tags: {
54
- type: string;
55
87
  collection: boolean;
56
88
  writeable: boolean;
89
+ type: string;
90
+ isKey: boolean;
91
+ writable: boolean;
92
+ mandatory: boolean;
93
+ private?: boolean;
94
+ depends?: string;
95
+ additionalAttributes: string[];
96
+ description?: string;
97
+ default?: any;
98
+ set?: Function;
99
+ get?: Function;
100
+ env?: string[] | string;
57
101
  };
58
102
  };
59
103
  };
@@ -26,9 +26,20 @@ export class Cluster extends Host {
26
26
  writeable: boolean;
27
27
  };
28
28
  description: {
29
+ writeable: boolean;
29
30
  type: string;
31
+ isKey: boolean;
32
+ writable: boolean;
33
+ mandatory: boolean;
30
34
  collection: boolean;
31
- writeable: boolean;
35
+ private?: boolean;
36
+ depends?: string;
37
+ additionalAttributes: string[];
38
+ description?: string;
39
+ default?: any;
40
+ set?: Function;
41
+ get?: Function;
42
+ env?: string[] | string;
32
43
  };
33
44
  priority: {
34
45
  type: string;
@@ -36,14 +47,36 @@ export class Cluster extends Host {
36
47
  writeable: boolean;
37
48
  };
38
49
  directory: {
50
+ writeable: boolean;
39
51
  type: string;
52
+ isKey: boolean;
53
+ writable: boolean;
54
+ mandatory: boolean;
40
55
  collection: boolean;
41
- writeable: boolean;
56
+ private?: boolean;
57
+ depends?: string;
58
+ additionalAttributes: string[];
59
+ description?: string;
60
+ default?: any;
61
+ set?: Function;
62
+ get?: Function;
63
+ env?: string[] | string;
42
64
  };
43
65
  packaging: {
66
+ writeable: boolean;
44
67
  type: string;
68
+ isKey: boolean;
69
+ writable: boolean;
70
+ mandatory: boolean;
45
71
  collection: boolean;
46
- writeable: boolean;
72
+ private?: boolean;
73
+ depends?: string;
74
+ additionalAttributes: string[];
75
+ description?: string;
76
+ default?: any;
77
+ set?: Function;
78
+ get?: Function;
79
+ env?: string[] | string;
47
80
  };
48
81
  disabled: {
49
82
  type: string;
@@ -52,9 +85,20 @@ export class Cluster extends Host {
52
85
  default: boolean;
53
86
  };
54
87
  tags: {
55
- type: string;
56
88
  collection: boolean;
57
89
  writeable: boolean;
90
+ type: string;
91
+ isKey: boolean;
92
+ writable: boolean;
93
+ mandatory: boolean;
94
+ private?: boolean;
95
+ depends?: string;
96
+ additionalAttributes: string[];
97
+ description?: string;
98
+ default?: any;
99
+ set?: Function;
100
+ get?: Function;
101
+ env?: string[] | string;
58
102
  };
59
103
  };
60
104
  };
@@ -82,10 +126,20 @@ export class Cluster extends Host {
82
126
  constructWithIdentifierOnly: boolean;
83
127
  properties: {
84
128
  address: {
129
+ identifier: boolean;
85
130
  type: string;
131
+ isKey: boolean;
132
+ writable: boolean;
133
+ mandatory: boolean;
86
134
  collection: boolean;
87
- writeable: boolean;
88
- identifier: boolean;
135
+ private?: boolean;
136
+ depends?: string;
137
+ additionalAttributes: string[];
138
+ description?: string;
139
+ default?: any;
140
+ set?: Function;
141
+ get?: Function;
142
+ env?: string[] | string;
89
143
  };
90
144
  networks: {
91
145
  type: string;
@@ -103,14 +157,36 @@ export class Cluster extends Host {
103
157
  writeable: boolean;
104
158
  };
105
159
  country: {
160
+ writeable: boolean;
106
161
  type: string;
162
+ isKey: boolean;
163
+ writable: boolean;
164
+ mandatory: boolean;
107
165
  collection: boolean;
108
- writeable: boolean;
166
+ private?: boolean;
167
+ depends?: string;
168
+ additionalAttributes: string[];
169
+ description?: string;
170
+ default?: any;
171
+ set?: Function;
172
+ get?: Function;
173
+ env?: string[] | string;
109
174
  };
110
175
  domain: {
176
+ writeable: boolean;
111
177
  type: string;
178
+ isKey: boolean;
179
+ writable: boolean;
180
+ mandatory: boolean;
112
181
  collection: boolean;
113
- writeable: boolean;
182
+ private?: boolean;
183
+ depends?: string;
184
+ additionalAttributes: string[];
185
+ description?: string;
186
+ default?: any;
187
+ set?: Function;
188
+ get?: Function;
189
+ env?: string[] | string;
114
190
  };
115
191
  domains: {
116
192
  type: string;
@@ -133,9 +209,20 @@ export class Cluster extends Host {
133
209
  writeable: boolean;
134
210
  };
135
211
  administratorEmail: {
212
+ writeable: boolean;
136
213
  type: string;
214
+ isKey: boolean;
215
+ writable: boolean;
216
+ mandatory: boolean;
137
217
  collection: boolean;
138
- writeable: boolean;
218
+ private?: boolean;
219
+ depends?: string;
220
+ additionalAttributes: string[];
221
+ description?: string;
222
+ default?: any;
223
+ set?: Function;
224
+ get?: Function;
225
+ env?: string[] | string;
139
226
  };
140
227
  };
141
228
  })[];
@@ -165,9 +252,20 @@ export class Cluster extends Host {
165
252
  writeable: boolean;
166
253
  };
167
254
  description: {
255
+ writeable: boolean;
168
256
  type: string;
257
+ isKey: boolean;
258
+ writable: boolean;
259
+ mandatory: boolean;
169
260
  collection: boolean;
170
- writeable: boolean;
261
+ private?: boolean;
262
+ depends?: string;
263
+ additionalAttributes: string[];
264
+ description?: string;
265
+ default?: any;
266
+ set?: Function;
267
+ get?: Function;
268
+ env?: string[] | string;
171
269
  };
172
270
  priority: {
173
271
  type: string;
@@ -175,14 +273,36 @@ export class Cluster extends Host {
175
273
  writeable: boolean;
176
274
  };
177
275
  directory: {
276
+ writeable: boolean;
178
277
  type: string;
278
+ isKey: boolean;
279
+ writable: boolean;
280
+ mandatory: boolean;
179
281
  collection: boolean;
180
- writeable: boolean;
282
+ private?: boolean;
283
+ depends?: string;
284
+ additionalAttributes: string[];
285
+ description?: string;
286
+ default?: any;
287
+ set?: Function;
288
+ get?: Function;
289
+ env?: string[] | string;
181
290
  };
182
291
  packaging: {
292
+ writeable: boolean;
183
293
  type: string;
294
+ isKey: boolean;
295
+ writable: boolean;
296
+ mandatory: boolean;
184
297
  collection: boolean;
185
- writeable: boolean;
298
+ private?: boolean;
299
+ depends?: string;
300
+ additionalAttributes: string[];
301
+ description?: string;
302
+ default?: any;
303
+ set?: Function;
304
+ get?: Function;
305
+ env?: string[] | string;
186
306
  };
187
307
  disabled: {
188
308
  type: string;
@@ -191,9 +311,20 @@ export class Cluster extends Host {
191
311
  default: boolean;
192
312
  };
193
313
  tags: {
194
- type: string;
195
314
  collection: boolean;
196
315
  writeable: boolean;
316
+ type: string;
317
+ isKey: boolean;
318
+ writable: boolean;
319
+ mandatory: boolean;
320
+ private?: boolean;
321
+ depends?: string;
322
+ additionalAttributes: string[];
323
+ description?: string;
324
+ default?: any;
325
+ set?: Function;
326
+ get?: Function;
327
+ env?: string[] | string;
197
328
  };
198
329
  };
199
330
  };
@@ -214,26 +345,70 @@ export class Cluster extends Host {
214
345
  writeable: boolean;
215
346
  };
216
347
  os: {
217
- type: string;
218
- collection: boolean;
219
348
  writeable: boolean;
220
349
  values: string[];
350
+ type: string;
351
+ isKey: boolean;
352
+ writable: boolean;
353
+ mandatory: boolean;
354
+ collection: boolean;
355
+ private?: boolean;
356
+ depends?: string;
357
+ additionalAttributes: string[];
358
+ description?: string;
359
+ default?: any;
360
+ set?: Function;
361
+ get?: Function;
362
+ env?: string[] | string;
221
363
  };
222
364
  "machine-id": {
365
+ writeable: boolean;
223
366
  type: string;
367
+ isKey: boolean;
368
+ writable: boolean;
369
+ mandatory: boolean;
224
370
  collection: boolean;
225
- writeable: boolean;
371
+ private?: boolean;
372
+ depends?: string;
373
+ additionalAttributes: string[];
374
+ description?: string;
375
+ default?: any;
376
+ set?: Function;
377
+ get?: Function;
378
+ env?: string[] | string;
226
379
  };
227
380
  distribution: {
381
+ writeable: boolean;
228
382
  type: string;
383
+ isKey: boolean;
384
+ writable: boolean;
385
+ mandatory: boolean;
229
386
  collection: boolean;
230
- writeable: boolean;
387
+ private?: boolean;
388
+ depends?: string;
389
+ additionalAttributes: string[];
390
+ description?: string;
391
+ default?: any;
392
+ set?: Function;
393
+ get?: Function;
394
+ env?: string[] | string;
231
395
  };
232
396
  deployment: {
233
- type: string;
234
- collection: boolean;
235
397
  writeable: boolean;
236
398
  values: string[];
399
+ type: string;
400
+ isKey: boolean;
401
+ writable: boolean;
402
+ mandatory: boolean;
403
+ collection: boolean;
404
+ private?: boolean;
405
+ depends?: string;
406
+ additionalAttributes: string[];
407
+ description?: string;
408
+ default?: any;
409
+ set?: Function;
410
+ get?: Function;
411
+ env?: string[] | string;
237
412
  };
238
413
  weight: {
239
414
  type: string;
@@ -241,31 +416,86 @@ export class Cluster extends Host {
241
416
  writeable: boolean;
242
417
  };
243
418
  serial: {
419
+ writeable: boolean;
244
420
  type: string;
421
+ isKey: boolean;
422
+ writable: boolean;
423
+ mandatory: boolean;
245
424
  collection: boolean;
246
- writeable: boolean;
425
+ private?: boolean;
426
+ depends?: string;
427
+ additionalAttributes: string[];
428
+ description?: string;
429
+ default?: any;
430
+ set?: Function;
431
+ get?: Function;
432
+ env?: string[] | string;
247
433
  };
248
434
  vendor: {
435
+ writeable: boolean;
249
436
  type: string;
437
+ isKey: boolean;
438
+ writable: boolean;
439
+ mandatory: boolean;
250
440
  collection: boolean;
251
- writeable: boolean;
441
+ private?: boolean;
442
+ depends?: string;
443
+ additionalAttributes: string[];
444
+ description?: string;
445
+ default?: any;
446
+ set?: Function;
447
+ get?: Function;
448
+ env?: string[] | string;
252
449
  };
253
450
  keymap: {
451
+ writeable: boolean;
254
452
  type: string;
453
+ isKey: boolean;
454
+ writable: boolean;
455
+ mandatory: boolean;
255
456
  collection: boolean;
256
- writeable: boolean;
457
+ private?: boolean;
458
+ depends?: string;
459
+ additionalAttributes: string[];
460
+ description?: string;
461
+ default?: any;
462
+ set?: Function;
463
+ get?: Function;
464
+ env?: string[] | string;
257
465
  };
258
466
  chassis: {
259
- type: string;
260
- collection: boolean;
261
467
  writeable: boolean;
262
468
  values: string[];
263
- };
264
- architecture: {
265
469
  type: string;
470
+ isKey: boolean;
471
+ writable: boolean;
472
+ mandatory: boolean;
266
473
  collection: boolean;
474
+ private?: boolean;
475
+ depends?: string;
476
+ additionalAttributes: string[];
477
+ description?: string;
478
+ default?: any;
479
+ set?: Function;
480
+ get?: Function;
481
+ env?: string[] | string;
482
+ };
483
+ architecture: {
267
484
  writeable: boolean;
268
485
  values: string[];
486
+ type: string;
487
+ isKey: boolean;
488
+ writable: boolean;
489
+ mandatory: boolean;
490
+ collection: boolean;
491
+ private?: boolean;
492
+ depends?: string;
493
+ additionalAttributes: string[];
494
+ description?: string;
495
+ default?: any;
496
+ set?: Function;
497
+ get?: Function;
498
+ env?: string[] | string;
269
499
  };
270
500
  replaces: {
271
501
  type: string;