pmcf 4.25.25 → 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 +2 -2
- package/src/base.mjs +47 -54
- package/src/endpoint.mjs +21 -10
- package/src/initialization-context.mjs +3 -2
- package/src/service.mjs +2 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmcf",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.26.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"content-entry-transform": "^1.6.9",
|
|
55
55
|
"ip-utilties": "^3.0.4",
|
|
56
56
|
"npm-pkgbuild": "^20.7.3",
|
|
57
|
-
"pacc": "^9.
|
|
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
|
-
|
|
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 (
|
|
233
|
-
|
|
234
|
-
|
|
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
|
-
|
|
238
|
-
|
|
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 (
|
|
575
|
-
|
|
576
|
-
|
|
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
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
576
|
+
switch (typeof value) {
|
|
577
|
+
case "function":
|
|
578
|
+
{
|
|
579
|
+
value = object[name]();
|
|
586
580
|
|
|
587
|
-
|
|
588
|
-
|
|
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
|
-
|
|
605
|
-
value
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
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
|
-
|
|
623
|
-
|
|
624
|
-
|
|
615
|
+
}
|
|
616
|
+
break;
|
|
617
|
+
case "undefined":
|
|
618
|
+
break;
|
|
625
619
|
|
|
626
|
-
|
|
627
|
-
|
|
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
|
-
|
|
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;
|