pmcf 3.13.5 → 3.13.7

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.
Files changed (61) hide show
  1. package/package.json +4 -4
  2. package/src/cluster.mjs +0 -1
  3. package/src/extra-source-service.mjs +2 -2
  4. package/src/host.mjs +0 -1
  5. package/src/location.mjs +0 -1
  6. package/src/module.mjs +1 -0
  7. package/src/network-interfaces/ethernet.mjs +1 -2
  8. package/src/network-interfaces/loopback.mjs +1 -2
  9. package/src/network-interfaces/network-interface.mjs +0 -1
  10. package/src/network-interfaces/tun.mjs +1 -2
  11. package/src/network-interfaces/wireguard.mjs +1 -2
  12. package/src/network-interfaces/wlan.mjs +1 -2
  13. package/src/network.mjs +0 -1
  14. package/src/owner.mjs +0 -1
  15. package/src/root.mjs +1 -2
  16. package/src/service.mjs +0 -2
  17. package/src/services/bind.mjs +22 -4
  18. package/src/services/chrony.mjs +2 -7
  19. package/src/services/headscale.mjs +3 -8
  20. package/src/services/influxdb.mjs +2 -2
  21. package/src/services/kea.mjs +1 -2
  22. package/src/services/mosquitto.mjs +1 -2
  23. package/src/services/openldap.mjs +1 -2
  24. package/src/services/systemd-journal-remote.mjs +1 -2
  25. package/src/services/systemd-journal-upload.mjs +1 -2
  26. package/src/services/systemd-journal.mjs +1 -2
  27. package/src/services/systemd-resolved.mjs +1 -2
  28. package/src/services/systemd-timesyncd.mjs +0 -1
  29. package/src/services/tailscale.mjs +24 -0
  30. package/src/subnet.mjs +0 -1
  31. package/src/types.mjs +2 -4
  32. package/types/cluster.d.mts +0 -4
  33. package/types/extra-source-service.d.mts +504 -206
  34. package/types/host.d.mts +0 -1
  35. package/types/location.d.mts +0 -5
  36. package/types/module.d.mts +1 -0
  37. package/types/network-interfaces/ethernet.d.mts +4 -14
  38. package/types/network-interfaces/loopback.d.mts +3 -12
  39. package/types/network-interfaces/network-interface.d.mts +0 -8
  40. package/types/network-interfaces/tun.d.mts +3 -12
  41. package/types/network-interfaces/wireguard.d.mts +3 -12
  42. package/types/network-interfaces/wlan.d.mts +854 -868
  43. package/types/network.d.mts +0 -6
  44. package/types/owner.d.mts +0 -2
  45. package/types/root.d.mts +0 -6
  46. package/types/service.d.mts +0 -6
  47. package/types/services/bind.d.mts +939 -644
  48. package/types/services/chrony.d.mts +939 -644
  49. package/types/services/headscale.d.mts +262 -492
  50. package/types/services/influxdb.d.mts +201 -207
  51. package/types/services/kea.d.mts +201 -207
  52. package/types/services/mosquitto.d.mts +201 -207
  53. package/types/services/openldap.d.mts +201 -207
  54. package/types/services/systemd-journal-remote.d.mts +201 -207
  55. package/types/services/systemd-journal-upload.d.mts +201 -207
  56. package/types/services/systemd-journal.d.mts +201 -207
  57. package/types/services/systemd-resolved.d.mts +939 -644
  58. package/types/services/systemd-timesyncd.d.mts +424 -129
  59. package/types/services/tailscale.d.mts +818 -0
  60. package/types/subnet.d.mts +0 -1
  61. package/types/types.d.mts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcf",
3
- "version": "3.13.5",
3
+ "version": "3.13.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -53,16 +53,16 @@
53
53
  "dependencies": {
54
54
  "ip-utilties": "^1.4.9",
55
55
  "npm-pkgbuild": "^18.3.9",
56
- "pacc": "^4.39.2",
56
+ "pacc": "^4.39.3",
57
57
  "package-directory": "^8.1.0"
58
58
  },
59
59
  "devDependencies": {
60
- "@types/node": "^24.6.0",
60
+ "@types/node": "^24.6.2",
61
61
  "ava": "^6.4.1",
62
62
  "c8": "^10.1.3",
63
63
  "documentation": "^14.0.3",
64
64
  "semantic-release": "^24.2.9",
65
- "typescript": "^5.9.2"
65
+ "typescript": "^5.9.3"
66
66
  },
67
67
  "engines": {
68
68
  "node": ">=22.20.0"
package/src/cluster.mjs CHANGED
@@ -14,7 +14,6 @@ import { writeLines } from "./utils.mjs";
14
14
  const ClusterTypeDefinition = {
15
15
  name: "cluster",
16
16
  owners: [Owner.typeDefinition, "network", "location", "root"],
17
- priority: 0.7,
18
17
  extends: Host.typeDefinition,
19
18
  key: "name",
20
19
  attributes: {
@@ -5,9 +5,9 @@ import { networkAddressType } from "pmcf";
5
5
 
6
6
  export const ExtraSourceServiceTypeDefinition = {
7
7
  name: "extra-source-service",
8
- owners: ServiceTypeDefinition.owners,
9
8
  extends: ServiceTypeDefinition,
10
- priority: 0.1,
9
+ specializationOf: ServiceTypeDefinition,
10
+ owners: ServiceTypeDefinition.owners,
11
11
  attributes: {
12
12
  source: {
13
13
  ...default_attribute_writable,
package/src/host.mjs CHANGED
@@ -26,7 +26,6 @@ import { NetworkInterfaceTypeDefinition } from "./network-interfaces/network-int
26
26
 
27
27
  const HostTypeDefinition = {
28
28
  name: "host",
29
- priority: 0.5,
30
29
  owners: ["owner", "network", "root"],
31
30
  extends: Base.typeDefinition,
32
31
  key: "name",
package/src/location.mjs CHANGED
@@ -7,7 +7,6 @@ import { loadHooks } from "./hooks.mjs";
7
7
  const LocationTypeDefinition = {
8
8
  name: "location",
9
9
  owners: [Owner.typeDefinition, "location", "root"],
10
- priority: 1.0,
11
10
  extends: Owner.typeDefinition,
12
11
  key: "name",
13
12
  attributes: {
package/src/module.mjs CHANGED
@@ -26,6 +26,7 @@ export * from "./services/openldap.mjs";
26
26
  export * from "./services/influxdb.mjs";
27
27
  export * from "./services/mosquitto.mjs";
28
28
  export * from "./services/headscale.mjs";
29
+ export * from "./services/tailscale.mjs";
29
30
  export * from "./services/systemd-journal.mjs";
30
31
  export * from "./services/systemd-journal-remote.mjs";
31
32
  export * from "./services/systemd-journal-upload.mjs";
@@ -7,10 +7,9 @@ import {
7
7
 
8
8
  export const EthernetNetworkInterfaceTypeDefinition = {
9
9
  name: "ethernet",
10
+ extends: NetworkInterfaceTypeDefinition,
10
11
  specializationOf: NetworkInterfaceTypeDefinition,
11
12
  owners: NetworkInterfaceTypeDefinition.owners,
12
- extends: NetworkInterfaceTypeDefinition,
13
- priority: 0.1,
14
13
  key: "name",
15
14
  attributes: {
16
15
  arpbridge: {
@@ -5,10 +5,9 @@ import { addType } from "../types.mjs";
5
5
 
6
6
  const LoopbackNetworkInterfaceTypeDefinition = {
7
7
  name: "loopback",
8
+ extends: NetworkInterfaceTypeDefinition,
8
9
  specializationOf: NetworkInterfaceTypeDefinition,
9
10
  owners: NetworkInterfaceTypeDefinition.owners,
10
- extends: NetworkInterfaceTypeDefinition,
11
- priority: 0.1,
12
11
  key: "name"
13
12
  };
14
13
 
@@ -17,7 +17,6 @@ import { Network } from "../network.mjs";
17
17
 
18
18
  export const NetworkInterfaceTypeDefinition = {
19
19
  name: "network_interface",
20
- priority: 0.4,
21
20
  owners: ["host"],
22
21
  extends: Base.typeDefinition,
23
22
  specializations: {},
@@ -4,10 +4,9 @@ import { addType } from "../types.mjs";
4
4
 
5
5
  const TUNdNetworkInterfaceTypeDefinition = {
6
6
  name: "tun",
7
+ extends: NetworkInterfaceTypeDefinition,
7
8
  specializationOf: NetworkInterfaceTypeDefinition,
8
9
  owners: NetworkInterfaceTypeDefinition.owners,
9
- extends: NetworkInterfaceTypeDefinition,
10
- priority: 0.1,
11
10
  key: "name"
12
11
  };
13
12
 
@@ -4,10 +4,9 @@ import { addType } from "../types.mjs";
4
4
 
5
5
  const WireguardNetworkInterfaceTypeDefinition = {
6
6
  name: "wireguard",
7
+ extends: NetworkInterfaceTypeDefinition,
7
8
  specializationOf: NetworkInterfaceTypeDefinition,
8
9
  owners: NetworkInterfaceTypeDefinition.owners,
9
- extends: NetworkInterfaceTypeDefinition,
10
- priority: 0.1,
11
10
  key: "name"
12
11
  };
13
12
 
@@ -11,10 +11,9 @@ import {
11
11
 
12
12
  const WLANNetworkInterfaceTypeDefinition = {
13
13
  name: "wlan",
14
+ extends: EthernetNetworkInterfaceTypeDefinition,
14
15
  specializationOf: NetworkInterfaceTypeDefinition,
15
16
  owners: EthernetNetworkInterfaceTypeDefinition.owners,
16
- extends: EthernetNetworkInterfaceTypeDefinition,
17
- priority: 0.1,
18
17
  key: "name",
19
18
  attributes: {
20
19
  ssid: string_attribute_writable,
package/src/network.mjs CHANGED
@@ -7,7 +7,6 @@ import { networkAttributes } from "./network-support.mjs";
7
7
  export const NetworkTypeDefinition = {
8
8
  name: "network",
9
9
  owners: ["location", "owner", "root"],
10
- priority: 0.8,
11
10
  extends: Owner.typeDefinition,
12
11
  key: "name",
13
12
  attributes: {
package/src/owner.mjs CHANGED
@@ -14,7 +14,6 @@ import { networks_attribute } from "./network-support.mjs";
14
14
  const OwnerTypeDefinition = {
15
15
  name: "owner",
16
16
  owners: ["location", "owner", "root"],
17
- priority: 0.9,
18
17
  extends: Base.typeDefinition,
19
18
  key: "name",
20
19
  attributes: {
package/src/root.mjs CHANGED
@@ -5,7 +5,6 @@ import { addType, types, resolveTypeLinks, typeFactory } from "./types.mjs";
5
5
 
6
6
  const RootTypeDefinition = {
7
7
  name: "root",
8
- priority: 1000,
9
8
  extends: Location.typeDefinition
10
9
  };
11
10
 
@@ -76,7 +75,7 @@ export class Root extends Location {
76
75
 
77
76
  async loadAll() {
78
77
  for (const type of Object.values(types).sort(
79
- (a, b) => b.priority - a.priority
78
+ (a, b) => (b.priority || 1.0) - (a.priority || 1.0)
80
79
  )) {
81
80
  if (type.clazz) {
82
81
  for await (const name of glob(type.clazz.fileNameGlob, {
package/src/service.mjs CHANGED
@@ -43,7 +43,6 @@ export const endpointAttributes = {
43
43
  export const EndpointTypeDefinition = {
44
44
  name: "endpoint",
45
45
  owners: ["service", "network_interface"],
46
- priority: 0.4,
47
46
  specializations: {},
48
47
  key: "type",
49
48
  attributes: endpointAttributes
@@ -52,7 +51,6 @@ export const EndpointTypeDefinition = {
52
51
  export const ServiceTypeDefinition = {
53
52
  name: "service",
54
53
  owners: [Host.typeDefinition, "cluster", "network_interface"],
55
- priority: 0.4,
56
54
  extends: Base.typeDefinition,
57
55
  specializations: {},
58
56
  factoryFor(owner, value) {
@@ -9,7 +9,8 @@ import {
9
9
  boolean_attribute_writable_true,
10
10
  boolean_attribute_writable_false,
11
11
  number_attribute_writable,
12
- string_collection_attribute_writable
12
+ string_collection_attribute_writable,
13
+ name_attribute_writable
13
14
  } from "pacc";
14
15
  import { writeLines, asArray } from "../utils.mjs";
15
16
  import {
@@ -25,18 +26,35 @@ import {
25
26
  networkAddressType
26
27
  } from "pmcf";
27
28
  import { addType } from "../types.mjs";
28
- import { Service, ServiceTypeDefinition } from "../service.mjs";
29
+ import { ServiceTypeDefinition } from "../service.mjs";
29
30
  import { ExtraSourceServiceTypeDefinition } from "../extra-source-service.mjs";
30
31
  import { addHook } from "../hooks.mjs";
31
32
 
33
+ const BindServiceViewTypeDefinition = {
34
+ name: "bind-view",
35
+ key: "name",
36
+ attributes: {
37
+ name: { ...name_attribute_writable },
38
+ access: {
39
+ type: networkAddressType,
40
+ collection: true,
41
+ writable: true
42
+ }
43
+ }
44
+ };
45
+
32
46
  const BindServiceTypeDefinition = {
33
47
  name: "bind",
48
+ extends: ExtraSourceServiceTypeDefinition,
34
49
  specializationOf: ServiceTypeDefinition,
35
50
  owners: ServiceTypeDefinition.owners,
36
- extends: ExtraSourceServiceTypeDefinition,
37
- priority: 0.1,
38
51
  key: "name",
39
52
  attributes: {
53
+ /*views: {
54
+ type: "object", //BindServiceViewTypeDefinition,
55
+ collection: true,
56
+ writable: true
57
+ },*/
40
58
  zones: {
41
59
  type: oneOfType([networkAddressType, "location", "owner"]),
42
60
  collection: true,
@@ -2,11 +2,7 @@ import { join } from "node:path";
2
2
  import { FileContentProvider } from "npm-pkgbuild";
3
3
  import { isLinkLocal } from "ip-utilties";
4
4
  import { addType } from "../types.mjs";
5
- import {
6
- Service,
7
- ServiceTypeDefinition,
8
- serviceEndpoints
9
- } from "../service.mjs";
5
+ import { ServiceTypeDefinition, serviceEndpoints } from "../service.mjs";
10
6
  import {
11
7
  ExtraSourceService,
12
8
  ExtraSourceServiceTypeDefinition
@@ -15,10 +11,9 @@ import { writeLines } from "../utils.mjs";
15
11
 
16
12
  const ChronyServiceTypeDefinition = {
17
13
  name: "chrony",
14
+ extends: ExtraSourceServiceTypeDefinition,
18
15
  specializationOf: ServiceTypeDefinition,
19
16
  owners: ServiceTypeDefinition.owners,
20
- extends: ExtraSourceServiceTypeDefinition,
21
- priority: 0.1,
22
17
  key: "name",
23
18
  service: {
24
19
  extends: ["ntp"],
@@ -1,16 +1,11 @@
1
1
  import { addType } from "../types.mjs";
2
- import { ServiceTypeDefinition } from "../service.mjs";
3
- import {
4
- ExtraSourceService,
5
- ExtraSourceServiceTypeDefinition
6
- } from "../extra-source-service.mjs";
2
+ import { ServiceTypeDefinition, Service } from "../service.mjs";
7
3
 
8
4
  const HeadscaleServiceTypeDefinition = {
9
5
  name: "headscale",
6
+ extends: ServiceTypeDefinition,
10
7
  specializationOf: ServiceTypeDefinition,
11
8
  owners: ServiceTypeDefinition.owners,
12
- extends: ExtraSourceServiceTypeDefinition,
13
- priority: 0.1,
14
9
  key: "name",
15
10
  service: {
16
11
  endpoints: [
@@ -30,7 +25,7 @@ const HeadscaleServiceTypeDefinition = {
30
25
  }
31
26
  };
32
27
 
33
- export class HeadscaleService extends ExtraSourceService {
28
+ export class HeadscaleService extends Service {
34
29
  static {
35
30
  addType(this);
36
31
  }
@@ -7,10 +7,10 @@ import { Service, ServiceTypeDefinition } from "../service.mjs";
7
7
 
8
8
  const InfluxdbServiceTypeDefinition = {
9
9
  name: "influxdb",
10
+ extends: ServiceTypeDefinition,
10
11
  specializationOf: ServiceTypeDefinition,
11
12
  owners: ServiceTypeDefinition.owners,
12
- extends: ServiceTypeDefinition,
13
- priority: 0.1,
13
+ //: 0.1,
14
14
  key: "name",
15
15
  attributes: {
16
16
  "metrics-disabled": {
@@ -19,10 +19,9 @@ import { writeLines } from "../utils.mjs";
19
19
 
20
20
  const KeaServiceTypeDefinition = {
21
21
  name: "kea",
22
+ extends: ServiceTypeDefinition,
22
23
  specializationOf: ServiceTypeDefinition,
23
24
  owners: ServiceTypeDefinition.owners,
24
- extends: ServiceTypeDefinition,
25
- priority: 0.1,
26
25
  key: "name",
27
26
  attributes: {
28
27
  "ddns-send-updates": {
@@ -7,10 +7,9 @@ import { Service, ServiceTypeDefinition } from "../service.mjs";
7
7
 
8
8
  const MosquittoServiceTypeDefinition = {
9
9
  name: "mosquitto",
10
+ extends: ServiceTypeDefinition,
10
11
  specializationOf: ServiceTypeDefinition,
11
12
  owners: ServiceTypeDefinition.owners,
12
- extends: ServiceTypeDefinition,
13
- priority: 0.1,
14
13
  key: "name",
15
14
  attributes: {
16
15
  log_timestamp: {
@@ -8,10 +8,9 @@ import { addHook } from "../hooks.mjs";
8
8
 
9
9
  const OpenLDAPServiceTypeDefinition = {
10
10
  name: "openldap",
11
+ extends: ServiceTypeDefinition,
11
12
  specializationOf: ServiceTypeDefinition,
12
13
  owners: ServiceTypeDefinition.owners,
13
- extends: ServiceTypeDefinition,
14
- priority: 0.1,
15
14
  key: "name",
16
15
  attributes: {
17
16
  baseDN: string_attribute_writable,
@@ -3,10 +3,9 @@ import { addType } from "../types.mjs";
3
3
 
4
4
  const SystemdJournalRemoteServiceTypeDefinition = {
5
5
  name: "systemd-journal-remote",
6
+ extends: ServiceTypeDefinition,
6
7
  specializationOf: ServiceTypeDefinition,
7
8
  owners: ServiceTypeDefinition.owners,
8
- extends: ServiceTypeDefinition,
9
- priority: 0.1,
10
9
  key: "name",
11
10
  service: {
12
11
  services: {
@@ -4,10 +4,9 @@ import { addType } from "../types.mjs";
4
4
 
5
5
  const SystemdJournalUploadServiceTypeDefinition = {
6
6
  name: "systemd-journal-upload",
7
+ extends: ServiceTypeDefinition,
7
8
  specializationOf: ServiceTypeDefinition,
8
9
  owners: ServiceTypeDefinition.owners,
9
- extends: ServiceTypeDefinition,
10
- priority: 0.1,
11
10
  key: "name",
12
11
  attributes: {
13
12
  url: string_attribute_writable
@@ -3,10 +3,9 @@ import { addType } from "../types.mjs";
3
3
 
4
4
  const SystemdJournalServiceTypeDefinition = {
5
5
  name: "systemd-journal",
6
+ extends: ServiceTypeDefinition,
6
7
  specializationOf: ServiceTypeDefinition,
7
8
  owners: ServiceTypeDefinition.owners,
8
- extends: ServiceTypeDefinition,
9
- priority: 0.1,
10
9
  key: "name"
11
10
  };
12
11
 
@@ -8,10 +8,9 @@ import { addType } from "../types.mjs";
8
8
 
9
9
  const SystemdResolvedServiceTypeDefinition = {
10
10
  name: "systemd-resolved",
11
+ extends: ExtraSourceServiceTypeDefinition,
11
12
  specializationOf: ServiceTypeDefinition,
12
13
  owners: ServiceTypeDefinition.owners,
13
- extends: ExtraSourceServiceTypeDefinition,
14
- priority: 0.1,
15
14
  key: "name"
16
15
  };
17
16
 
@@ -11,7 +11,6 @@ const SystemdTimesyncdServiceTypeDefinition = {
11
11
  extends: ExtraSourceServiceTypeDefinition,
12
12
  specializationOf: ServiceTypeDefinition,
13
13
  owners: ServiceTypeDefinition.owners,
14
- priority: 0.1
15
14
  };
16
15
 
17
16
  export class SystemdTimesyncdService extends ExtraSourceService {
@@ -0,0 +1,24 @@
1
+ import { addType } from "../types.mjs";
2
+ import { ServiceTypeDefinition, Service } from "../service.mjs";
3
+
4
+ export class TailscaleService extends Service {
5
+ static name = "tailscale";
6
+ static extends = ServiceTypeDefinition;
7
+ static specializationOf = ServiceTypeDefinition;
8
+ static owners = ServiceTypeDefinition.owners;
9
+ static key = "name";
10
+ static service = {
11
+ endpoints: [
12
+ {
13
+ family: "IPv4",
14
+ port: 41641,
15
+ protocol: "tcp",
16
+ tls: false
17
+ }
18
+ ]
19
+ };
20
+
21
+ /*static {
22
+ addType(TailscaleService);
23
+ }*/
24
+ }
package/src/subnet.mjs CHANGED
@@ -14,7 +14,6 @@ import { addType } from "./types.mjs";
14
14
  const SubnetTypeDefinition = {
15
15
  name: "subnet",
16
16
  owners: ["location", "owner", "network", "root"],
17
- priority: 0.6,
18
17
  constructWithIdentifierOnly: true,
19
18
  key: "address",
20
19
  attributes: {
package/src/types.mjs CHANGED
@@ -7,16 +7,14 @@ import {
7
7
  import { addServiceType } from "./service-types.mjs";
8
8
  export { types };
9
9
 
10
- export function addType(clazz) {
11
- const type = clazz.typeDefinition;
12
- type.clazz = clazz;
10
+ export function addType(type) {
11
+ type = paccAddType(type);
13
12
 
14
13
  if (type.specializationOf) {
15
14
  type.specializationOf.specializations[type.name] = type;
16
15
  }
17
16
 
18
17
  addServiceType(type.service, type.name);
19
- paccAddType(type);
20
18
  }
21
19
 
22
20
  export function resolveTypeLinks() {
@@ -4,7 +4,6 @@ export class Cluster extends Host {
4
4
  owners: (string | {
5
5
  name: string;
6
6
  owners: string[];
7
- priority: number;
8
7
  extends: {
9
8
  name: string;
10
9
  key: string;
@@ -97,7 +96,6 @@ export class Cluster extends Host {
97
96
  type: {
98
97
  name: string;
99
98
  owners: string[];
100
- priority: number;
101
99
  constructWithIdentifierOnly: boolean;
102
100
  key: string;
103
101
  attributes: {
@@ -166,10 +164,8 @@ export class Cluster extends Host {
166
164
  };
167
165
  };
168
166
  })[];
169
- priority: number;
170
167
  extends: {
171
168
  name: string;
172
- priority: number;
173
169
  owners: string[];
174
170
  extends: {
175
171
  name: string;