pmcf 4.25.24 → 4.26.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": "4.25.24",
3
+ "version": "4.26.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -53,8 +53,8 @@
53
53
  "aggregated-map": "^1.0.4",
54
54
  "content-entry-transform": "^1.6.9",
55
55
  "ip-utilties": "^3.0.4",
56
- "npm-pkgbuild": "^20.7.2",
57
- "pacc": "^9.2.14",
56
+ "npm-pkgbuild": "^20.7.3",
57
+ "pacc": "^9.3.0",
58
58
  "package-directory": "^8.2.0"
59
59
  },
60
60
  "devDependencies": {
package/src/base.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import { join } from "node:path";
2
2
  import { stat } from "node:fs/promises";
3
+ import { AggregatedMap } from "aggregated-map";
3
4
  import { allOutputs } from "npm-pkgbuild";
4
5
  import {
5
6
  createExpressionTransformer,
@@ -14,7 +15,7 @@ import {
14
15
  expand,
15
16
  toExternal,
16
17
  filterPublic,
17
- attributeIterator,
18
+ extendingAttributeIterator,
18
19
  default_attribute,
19
20
  name_attribute_writable,
20
21
  string_attribute,
@@ -24,7 +25,6 @@ import {
24
25
  description_attribute_writable,
25
26
  boolean_attribute_writable
26
27
  } from "pacc";
27
- import { AggregatedMap } from "aggregated-map";
28
28
  import { union } from "./utils.mjs";
29
29
 
30
30
  /**
@@ -229,14 +229,12 @@ export class Base {
229
229
  * @return {Iterable<[string,any]>} values
230
230
  */
231
231
  *attributeIterator(filter) {
232
- for (let type = this.constructor; type; type = type.extends) {
233
- for (const [path, def] of attributeIterator(type.attributes, filter)) {
234
- const name = path.join(".");
235
- const value = this.attribute(name);
232
+ for (const [path, def] of extendingAttributeIterator(this.constructor, filter)) {
233
+ const name = path.join(".");
234
+ const value = this.attribute(name);
236
235
 
237
- if (value !== undefined) {
238
- yield [def.externalName ?? name, toExternal(value, def), path, def];
239
- }
236
+ if (value !== undefined) {
237
+ yield [def.externalName ?? name, toExternal(value, def), path, def];
240
238
  }
241
239
  }
242
240
  }
@@ -571,61 +569,56 @@ export function extractFrom(object, type = object?.constructor) {
571
569
 
572
570
  const json = {};
573
571
 
574
- for (; type; type = type.extends) {
575
- for (const [path, def] of attributeIterator(
576
- type.attributes,
577
- filterPublic
578
- )) {
579
- const name = path.join(".");
580
- let value = object[name];
572
+ for (const [path, def] of extendingAttributeIterator(type, filterPublic)) {
573
+ const name = path.join(".");
574
+ let value = object[name];
581
575
 
582
- switch (typeof value) {
583
- case "function":
584
- {
585
- value = object[name]();
576
+ switch (typeof value) {
577
+ case "function":
578
+ {
579
+ value = object[name]();
586
580
 
587
- if (typeof value?.next === "function") {
588
- value = [...value];
589
- }
581
+ if (typeof value?.next === "function") {
582
+ value = [...value];
583
+ }
584
+
585
+ value = extractFrom(value, def.type);
586
+ if (value !== undefined) {
587
+ json[name] = value;
588
+ }
589
+ }
590
+ break;
591
+ case "object":
592
+ if (value instanceof Base) {
593
+ json[name] = { type: value.typeName };
594
+ if (value.name) {
595
+ json[name].name = value.name;
596
+ }
597
+ } else {
598
+ if (typeof value[Symbol.iterator] === "function") {
599
+ value = extractFrom(value);
590
600
 
591
- value = extractFrom(value, def.type);
592
601
  if (value !== undefined) {
593
602
  json[name] = value;
594
603
  }
595
- }
596
- break;
597
- case "object":
598
- if (value instanceof Base) {
599
- json[name] = { type: value.typeName };
600
- if (value.name) {
601
- json[name].name = value.name;
602
- }
603
604
  } else {
604
- if (typeof value[Symbol.iterator] === "function") {
605
- value = extractFrom(value);
606
-
607
- if (value !== undefined) {
608
- json[name] = value;
609
- }
610
- } else {
611
- const resultObject = Object.fromEntries(
612
- Object.entries(value).map(([k, v]) => [
613
- k,
614
- v // extractFrom(v, def.type)
615
- ])
616
- );
617
- if (Object.keys(resultObject).length > 0) {
618
- json[name] = resultObject;
619
- }
605
+ const resultObject = Object.fromEntries(
606
+ Object.entries(value).map(([k, v]) => [
607
+ k,
608
+ v // extractFrom(v, def.type)
609
+ ])
610
+ );
611
+ if (Object.keys(resultObject).length > 0) {
612
+ json[name] = resultObject;
620
613
  }
621
614
  }
622
- break;
623
- case "undefined":
624
- break;
615
+ }
616
+ break;
617
+ case "undefined":
618
+ break;
625
619
 
626
- default:
627
- json[name] = value;
628
- }
620
+ default:
621
+ json[name] = value;
629
622
  }
630
623
  }
631
624
 
package/src/endpoint.mjs CHANGED
@@ -1,4 +1,18 @@
1
+ import { addType } from "pacc";
2
+ import { endpointAttributes, Service } from "./service.mjs";
3
+
1
4
  class BaseEndpoint {
5
+ static name = "endpoint";
6
+ static priority = 1.1;
7
+ static owners = [Service, "network_interface"];
8
+ static specializations = {};
9
+ static key = "type";
10
+ attributes = endpointAttributes;
11
+
12
+ static {
13
+ addType(this);
14
+ }
15
+
2
16
  _type;
3
17
 
4
18
  constructor(service, data) {
@@ -13,8 +27,7 @@ class BaseEndpoint {
13
27
  return this._type?.name ?? this.service.type;
14
28
  }
15
29
 
16
- get priority()
17
- {
30
+ get priority() {
18
31
  return this.service.priority;
19
32
  }
20
33
 
@@ -115,12 +128,11 @@ export class DomainNameEndpoint extends PortEndpoint {
115
128
  * Endpoint based on http
116
129
  */
117
130
  export class HTTPEndpoint extends BaseEndpoint {
118
-
119
131
  /**
120
- *
121
- * @param {Service} service
122
- * @param {*} address
123
- * @param {object} data
132
+ *
133
+ * @param {Service} service
134
+ * @param {*} address
135
+ * @param {object} data
124
136
  * @param {number} data.port
125
137
  * @param {string} data.pathname
126
138
  */
@@ -197,9 +209,8 @@ export class UnixEndpoint extends BaseEndpoint {
197
209
  return this.path;
198
210
  }
199
211
 
200
- get url()
201
- {
202
- if(this.scheme) {
212
+ get url() {
213
+ if (this.scheme) {
203
214
  return `${this.scheme}://${this.path}`;
204
215
  }
205
216
  }
@@ -259,9 +259,10 @@ export class InitializationContext {
259
259
  data.name = name;
260
260
  }
261
261
 
262
- //console.log("LOAD", [name, owner.fullName, data.name]);
263
-
264
262
  const object = this.typeFactory(type, owner, data);
263
+
264
+ //console.log("LOAD", [name, type.name, owner.fullName, data.name, object.fullName]);
265
+
265
266
  this.root.addTypeObject(type.name, name, object);
266
267
 
267
268
  return object;
package/src/service.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  string_attribute_writable,
3
- string_set_attribute,
4
3
  number_attribute_writable,
5
- boolean_attribute_false,
4
+ string_set_attribute,
6
5
  default_attribute_writable,
6
+ boolean_attribute_false,
7
7
  addType
8
8
  } from "pacc";
9
9
  import {
@@ -40,15 +40,6 @@ export const endpointAttributes = {
40
40
  tls: boolean_attribute_false
41
41
  };
42
42
 
43
- export const EndpointTypeDefinition = {
44
- name: "endpoint",
45
- priority: 1.1,
46
- owners: ["service", "network_interface"],
47
- specializations: {},
48
- key: "type",
49
- attributes: endpointAttributes
50
- };
51
-
52
43
  export class Service extends Base {
53
44
  static name = "service";
54
45
  static priority = 1.1;