@vessel-dsp/core 0.6.19 → 0.6.21
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/README.md +40 -0
- package/dist/formats/document.d.ts +2 -0
- package/dist/formats/document.d.ts.map +1 -1
- package/dist/formats/document.js +4 -1
- package/dist/formats/document.js.map +1 -1
- package/dist/formats/interchange/parser.d.ts +9 -0
- package/dist/formats/interchange/parser.d.ts.map +1 -1
- package/dist/formats/interchange/parser.js +305 -2
- package/dist/formats/interchange/parser.js.map +1 -1
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/model/trace-plausibility.d.ts +15 -6
- package/dist/model/trace-plausibility.d.ts.map +1 -1
- package/dist/model/trace-plausibility.js +444 -14
- package/dist/model/trace-plausibility.js.map +1 -1
- package/dist/model/types.d.ts +2 -0
- package/dist/model/types.d.ts.map +1 -1
- package/dist/model/types.js.map +1 -1
- package/dist/model/validation.d.ts +1 -1
- package/dist/model/validation.d.ts.map +1 -1
- package/dist/model/validation.js +154 -3
- package/dist/model/validation.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,3 +29,43 @@ schematics; unknown roles warn by default and become errors when callers pass
|
|
|
29
29
|
`validateDocument(document, { playbackClaim: true })`. Hosts can add
|
|
30
30
|
lowering-specific diagnostics with `validateDocument(document, { rules: [...] })`
|
|
31
31
|
without embedding runtime policy in core.
|
|
32
|
+
|
|
33
|
+
## Advisory trace warnings
|
|
34
|
+
|
|
35
|
+
Trace plausibility checks are warnings for source review, not import gates or
|
|
36
|
+
proof of circuit correctness. Structural checks run by default and fail closed
|
|
37
|
+
when connectivity is incomplete. Role-aware audio checks are opt-in:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import {
|
|
41
|
+
parseVdspCircuitDocumentWithTopology,
|
|
42
|
+
validateTracePlausibility,
|
|
43
|
+
} from "@vessel-dsp/core";
|
|
44
|
+
|
|
45
|
+
const parsed = parseVdspCircuitDocumentWithTopology(source);
|
|
46
|
+
const issues = validateTracePlausibility(parsed.document, {
|
|
47
|
+
connectivity: parsed.connectivity,
|
|
48
|
+
nodeRoles: parsed.nodeRoles,
|
|
49
|
+
includeAudioTopology: true,
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The audio checks warn about destructive signal-path RC shunts, extreme direct
|
|
54
|
+
input loading, and explicitly declared audio buffers without a passive
|
|
55
|
+
negative-feedback path. They require unique audio input/output roles and
|
|
56
|
+
locally connected boundary nodes; unavailable coverage is reported explicitly.
|
|
57
|
+
|
|
58
|
+
## Supply-rail ownership
|
|
59
|
+
|
|
60
|
+
Every modeled supply voltage must have a single owner. A mains PSU (a referenced
|
|
61
|
+
`transformer`) owns the voltages it produces, a battery/DC-adapter owns a direct
|
|
62
|
+
DC boundary, and a converter/regulator/divider owns its produced output. A
|
|
63
|
+
`kind: rail` that asserts an ideal source on top of an already-owned voltage is a
|
|
64
|
+
`power-rail-fixed-owner-conflict` error from `validateDocument`. Declare the
|
|
65
|
+
boundary with the optional `CircuitPowerDomain.sourceKind`
|
|
66
|
+
(`mains-ac` | `external-dc`); when absent it is inferred from the domain's source
|
|
67
|
+
components. The check is power-model driven and connectivity-independent — it
|
|
68
|
+
never reads wires, node identity, or component voltage properties, so it produces
|
|
69
|
+
the same verdict for `wires: []` and a fully connected drawing. Represent a
|
|
70
|
+
produced/derived node as `kind: port` (a named net) with its `rails[]` binding
|
|
71
|
+
instead of a second ideal source.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CircuitDocument, DocumentSource } from "../model/types";
|
|
2
|
+
import { type InterchangeTopologyParseResult } from "./interchange/parser";
|
|
2
3
|
export type CircuitFormat = "schx" | "spice" | "ltspice-asc";
|
|
3
4
|
export type CircuitDocumentFileFormat = CircuitFormat | "vdsp" | "yaml" | "circuit-json";
|
|
4
5
|
export type ParseCircuitDocumentOptions = Readonly<{
|
|
@@ -55,6 +56,7 @@ export declare function isVdspFilename(filename: string): boolean;
|
|
|
55
56
|
export declare function detectCircuitDocumentFileFormat(filename: string): CircuitDocumentFileFormat | null;
|
|
56
57
|
export declare function vdspFilenameFromName(name: string): string;
|
|
57
58
|
export declare function parseVdspCircuitDocument(source: string): CircuitDocument;
|
|
59
|
+
export declare function parseVdspCircuitDocumentWithTopology(source: string): InterchangeTopologyParseResult;
|
|
58
60
|
export declare function validateVdspCircuitDocumentSchema(source: string): VdspSchemaValidationResult;
|
|
59
61
|
export declare function parseCircuitDocumentFile(source: string, options: ParseCircuitDocumentFileOptions): CircuitDocument;
|
|
60
62
|
export declare function serializeCircuitDocumentFile(document: CircuitDocument, options: SerializeCircuitDocumentFileOptions): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOtE,OAAO,EAGN,KAAK,8BAA8B,EACnC,MAAM,sBAAsB,CAAC;AAO9B,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAE7D,MAAM,MAAM,yBAAyB,GAClC,aAAa,GACb,MAAM,GACN,MAAM,GACN,cAAc,CAAC;AAElB,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAAG,QAAQ,CAAC;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAAG,QAAQ,CAAC;IAC1D,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,yBAAyB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAC5C,OAAO,GACP,uBAAuB,CAAC;AAE3B,MAAM,MAAM,mCAAmC,GAAG,QAAQ,CAAC;IAC1D,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,2CAA2C,GACtD,iCAAiC,GAChC,QAAQ,CAAC;IACR,UAAU,CAAC,EAAE,mCAAmC,CAAC;CACjD,CAAC,CAAC;AAEL,MAAM,MAAM,mCAAmC,GAAG,QAAQ,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,mCAAmC,EAAE,CAAC;IAC5D,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAChD,IAAI,EAAE,qBAAqB,GAAG,eAAe,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GACnC,QAAQ,CAAC;IACT,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;CACnB,CAAC,GACF,QAAQ,CAAC;IACT,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC5C,CAAC,CAAC;AAEN,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgB1E;AAED,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,2BAAgC,GACvC,eAAe,CAgBjB;AA4BD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,+BAA+B,CAC9C,QAAQ,EAAE,MAAM,GACd,yBAAyB,GAAG,IAAI,CAYlC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAExE;AAED,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,MAAM,GACZ,8BAA8B,CAEhC;AAED,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,MAAM,GACZ,0BAA0B,CAuB5B;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,+BAA+B,GACtC,eAAe,CAqBjB;AAED,wBAAgB,4BAA4B,CAC3C,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,mCAAmC,GAC1C,MAAM,CAmBR;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iCAAiC,GACxC,MAAM,CAER;AAED,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,2CAA2C,GAClD,mCAAmC,CAwCrC;AAED,wBAAgB,4BAA4B,CAC3C,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,mCAAwC,GAC/C,MAAM,CAIR"}
|
package/dist/formats/document.js
CHANGED
|
@@ -4,7 +4,7 @@ import { parseSchx } from "./schx/parser.js";
|
|
|
4
4
|
import { serializeSchx } from "./schx/serializer.js";
|
|
5
5
|
import { parseSpiceNetlist } from "./spice/parser.js";
|
|
6
6
|
import { serializeSpiceNetlist } from "./spice/serializer.js";
|
|
7
|
-
import { parseInterchangeYaml } from "./interchange/parser.js";
|
|
7
|
+
import { parseInterchangeYaml, parseInterchangeYamlWithTopology, } from "./interchange/parser.js";
|
|
8
8
|
import { serializeInterchangeYaml } from "./interchange/serializer.js";
|
|
9
9
|
import { parseCircuitJsonDocument, serializeCircuitJsonDocument, } from "./circuit-json/serializer.js";
|
|
10
10
|
export const vdspFileExtension = ".vdsp";
|
|
@@ -85,6 +85,9 @@ export function vdspFilenameFromName(name) {
|
|
|
85
85
|
export function parseVdspCircuitDocument(source) {
|
|
86
86
|
return parseInterchangeYaml(source);
|
|
87
87
|
}
|
|
88
|
+
export function parseVdspCircuitDocumentWithTopology(source) {
|
|
89
|
+
return parseInterchangeYamlWithTopology(source);
|
|
90
|
+
}
|
|
88
91
|
export function validateVdspCircuitDocumentSchema(source) {
|
|
89
92
|
try {
|
|
90
93
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { type Connectivity, type NodeId } from "../../model/connectivity";
|
|
1
2
|
import type { CircuitDocument } from "../../model/types";
|
|
3
|
+
export type InterchangeTopologyParseResult = Readonly<{
|
|
4
|
+
document: CircuitDocument;
|
|
5
|
+
connectivity: Connectivity;
|
|
6
|
+
nodeRoles: ReadonlyMap<NodeId, string>;
|
|
7
|
+
connectivitySource: "declared" | "geometric";
|
|
8
|
+
}>;
|
|
2
9
|
export declare function parseInterchangeYaml(source: string): CircuitDocument;
|
|
10
|
+
/** Parse a document together with source-declared node membership and roles. */
|
|
11
|
+
export declare function parseInterchangeYamlWithTopology(source: string): InterchangeTopologyParseResult;
|
|
3
12
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/interchange/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/interchange/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,MAAM,EAIX,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAwBX,eAAe,EA4Df,MAAM,mBAAmB,CAAC;AAoC3B,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACrD,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,UAAU,GAAG,WAAW,CAAC;CAC7C,CAAC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA4DpE;AAED,gFAAgF;AAChF,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,MAAM,GACZ,8BAA8B,CAkBhC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pinKey, resolveConnectivity, } from "../../model/connectivity.js";
|
|
1
2
|
import { isParsedQuantity } from "../../model/properties.js";
|
|
2
3
|
const INTERCHANGE_SCHEMA_V2 = "circuit-interchange/v2";
|
|
3
4
|
const INTERCHANGE_SCHEMA_V3 = "circuit-interchange/v3";
|
|
@@ -72,6 +73,271 @@ export function parseInterchangeYaml(source) {
|
|
|
72
73
|
rawAttributes: parseStringRecord(root.rawAttributes, "rawAttributes"),
|
|
73
74
|
};
|
|
74
75
|
}
|
|
76
|
+
/** Parse a document together with source-declared node membership and roles. */
|
|
77
|
+
export function parseInterchangeYamlWithTopology(source) {
|
|
78
|
+
const document = parseInterchangeYaml(source);
|
|
79
|
+
const root = expectObject(parseYamlSubset(source), "root");
|
|
80
|
+
const declared = parseDeclaredTopology(root, document);
|
|
81
|
+
if (declared)
|
|
82
|
+
return { document, ...declared, connectivitySource: "declared" };
|
|
83
|
+
const connectivity = resolveConnectivity(document);
|
|
84
|
+
return {
|
|
85
|
+
document,
|
|
86
|
+
connectivity,
|
|
87
|
+
nodeRoles: new Map([...connectivity.nodeMembers.keys()].map((nodeId) => [
|
|
88
|
+
nodeId,
|
|
89
|
+
nodeId === connectivity.groundNodeId ? "ground" : "signal",
|
|
90
|
+
])),
|
|
91
|
+
connectivitySource: "geometric",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function parseDeclaredTopology(root, document) {
|
|
95
|
+
const rawComponents = optionalArray(root.components, "components");
|
|
96
|
+
const rawNodes = optionalArray(root.nodes, "nodes");
|
|
97
|
+
const nodeKeys = new Set();
|
|
98
|
+
let declaredTerminalCount = 0;
|
|
99
|
+
for (const [componentIndex, rawComponent] of rawComponents.entries()) {
|
|
100
|
+
const component = expectObject(rawComponent, `components[${componentIndex}]`);
|
|
101
|
+
for (const [terminalIndex, rawTerminal] of optionalArray(component.terminals, `components[${componentIndex}].terminals`).entries()) {
|
|
102
|
+
const terminal = expectObject(rawTerminal, `components[${componentIndex}].terminals[${terminalIndex}]`);
|
|
103
|
+
const key = declaredNodeKey(terminal.node);
|
|
104
|
+
if (key === null)
|
|
105
|
+
continue;
|
|
106
|
+
nodeKeys.add(key);
|
|
107
|
+
declaredTerminalCount += 1;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
for (const [index, rawNode] of rawNodes.entries()) {
|
|
111
|
+
const node = expectObject(rawNode, `nodes[${index}]`);
|
|
112
|
+
const key = declaredNodeKey(node.id);
|
|
113
|
+
if (key !== null)
|
|
114
|
+
nodeKeys.add(key);
|
|
115
|
+
}
|
|
116
|
+
if (declaredTerminalCount === 0 && rawNodes.length === 0)
|
|
117
|
+
return null;
|
|
118
|
+
const nodeIds = declaredNodeIds(nodeKeys);
|
|
119
|
+
const pinToNode = new Map();
|
|
120
|
+
const nodeMembers = new Map([...nodeIds.values()].map((nodeId) => [nodeId, []]));
|
|
121
|
+
const nodeRoles = new Map();
|
|
122
|
+
for (const [index, rawNode] of rawNodes.entries()) {
|
|
123
|
+
const node = expectObject(rawNode, `nodes[${index}]`);
|
|
124
|
+
const key = declaredNodeKey(node.id);
|
|
125
|
+
const nodeId = key === null ? undefined : nodeIds.get(key);
|
|
126
|
+
if (nodeId === undefined)
|
|
127
|
+
continue;
|
|
128
|
+
if (typeof node.role === "string" && node.role.trim()) {
|
|
129
|
+
nodeRoles.set(nodeId, node.role.trim());
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (declaredTerminalCount > 0) {
|
|
133
|
+
for (const [componentIndex, rawComponent] of rawComponents.entries()) {
|
|
134
|
+
const component = expectObject(rawComponent, `components[${componentIndex}]`);
|
|
135
|
+
const componentId = expectString(component.id, `components[${componentIndex}].id`);
|
|
136
|
+
for (const [terminalIndex, rawTerminal] of optionalArray(component.terminals, `components[${componentIndex}].terminals`).entries()) {
|
|
137
|
+
const path = `components[${componentIndex}].terminals[${terminalIndex}]`;
|
|
138
|
+
const terminal = expectObject(rawTerminal, path);
|
|
139
|
+
const key = declaredNodeKey(terminal.node);
|
|
140
|
+
const nodeId = key === null ? undefined : nodeIds.get(key);
|
|
141
|
+
if (nodeId === undefined)
|
|
142
|
+
continue;
|
|
143
|
+
addDeclaredPin(pinToNode, nodeMembers, nodeId, {
|
|
144
|
+
componentId,
|
|
145
|
+
terminalName: expectString(terminal.name, `${path}.name`),
|
|
146
|
+
}, path);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
parseDeclaredNodeMembers(rawNodes, document, nodeIds, pinToNode, nodeMembers);
|
|
152
|
+
}
|
|
153
|
+
let groundNodeId = null;
|
|
154
|
+
for (const [nodeId, role] of nodeRoles) {
|
|
155
|
+
if (role.toLowerCase() === "ground") {
|
|
156
|
+
groundNodeId = nodeId;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (groundNodeId === null) {
|
|
161
|
+
for (const component of document.components) {
|
|
162
|
+
if (component.kind !== "ground")
|
|
163
|
+
continue;
|
|
164
|
+
const terminal = component.terminals[0];
|
|
165
|
+
if (!terminal)
|
|
166
|
+
continue;
|
|
167
|
+
const nodeId = pinToNode.get(pinKey({ componentId: component.id, terminalName: terminal.name }));
|
|
168
|
+
if (nodeId !== undefined) {
|
|
169
|
+
groundNodeId = nodeId;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (const nodeId of nodeMembers.keys()) {
|
|
175
|
+
if (!nodeRoles.has(nodeId)) {
|
|
176
|
+
nodeRoles.set(nodeId, nodeId === groundNodeId ? "ground" : "signal");
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
connectivity: {
|
|
181
|
+
pinToNode,
|
|
182
|
+
nodeMembers,
|
|
183
|
+
groundNodeId,
|
|
184
|
+
nodeCount: nodeMembers.size,
|
|
185
|
+
},
|
|
186
|
+
nodeRoles,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function declaredNodeKey(value) {
|
|
190
|
+
if (typeof value === "number" && Number.isInteger(value) && value >= 0) {
|
|
191
|
+
return String(value);
|
|
192
|
+
}
|
|
193
|
+
if (typeof value === "string" && value.trim())
|
|
194
|
+
return value.trim();
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
function declaredNodeIds(keys) {
|
|
198
|
+
const out = new Map();
|
|
199
|
+
const used = new Set();
|
|
200
|
+
for (const key of keys) {
|
|
201
|
+
if (!/^\d+$/.test(key))
|
|
202
|
+
continue;
|
|
203
|
+
const nodeId = Number(key);
|
|
204
|
+
if (!Number.isSafeInteger(nodeId))
|
|
205
|
+
continue;
|
|
206
|
+
out.set(key, nodeId);
|
|
207
|
+
used.add(nodeId);
|
|
208
|
+
}
|
|
209
|
+
let nextId = 0;
|
|
210
|
+
for (const key of keys) {
|
|
211
|
+
if (out.has(key))
|
|
212
|
+
continue;
|
|
213
|
+
while (used.has(nextId))
|
|
214
|
+
nextId += 1;
|
|
215
|
+
out.set(key, nextId);
|
|
216
|
+
used.add(nextId);
|
|
217
|
+
}
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
220
|
+
function addDeclaredPin(pinToNode, nodeMembers, nodeId, pin, path) {
|
|
221
|
+
const key = pinKey(pin);
|
|
222
|
+
const previousNode = pinToNode.get(key);
|
|
223
|
+
if (previousNode !== undefined) {
|
|
224
|
+
throw new Error(`${path}: pin "${pin.componentId}.${pin.terminalName}" already belongs to node ${previousNode}`);
|
|
225
|
+
}
|
|
226
|
+
pinToNode.set(key, nodeId);
|
|
227
|
+
const members = nodeMembers.get(nodeId);
|
|
228
|
+
if (!members)
|
|
229
|
+
throw new Error(`${path}: unknown declared node ${nodeId}`);
|
|
230
|
+
members.push(pin);
|
|
231
|
+
}
|
|
232
|
+
function parseDeclaredNodeMembers(rawNodes, document, nodeIds, pinToNode, nodeMembers) {
|
|
233
|
+
const componentTerminals = new Map(document.components.map((component) => [
|
|
234
|
+
component.id,
|
|
235
|
+
new Set(component.terminals.map((terminal) => terminal.name)),
|
|
236
|
+
]));
|
|
237
|
+
const seenNodeKeys = new Set();
|
|
238
|
+
for (const [index, rawNode] of rawNodes.entries()) {
|
|
239
|
+
const path = `nodes[${index}]`;
|
|
240
|
+
const node = expectObject(rawNode, path);
|
|
241
|
+
const key = declaredNodeKey(node.id);
|
|
242
|
+
if (key === null)
|
|
243
|
+
throw new Error(`${path}.id: expected node identifier`);
|
|
244
|
+
if (seenNodeKeys.has(key))
|
|
245
|
+
throw new Error(`${path}.id: duplicate node id ${key}`);
|
|
246
|
+
seenNodeKeys.add(key);
|
|
247
|
+
const nodeId = nodeIds.get(key);
|
|
248
|
+
if (nodeId === undefined)
|
|
249
|
+
throw new Error(`${path}.id: unknown node identifier`);
|
|
250
|
+
for (const [memberIndex, rawMember] of optionalArray(node.members, `${path}.members`).entries()) {
|
|
251
|
+
const memberPath = `${path}.members[${memberIndex}]`;
|
|
252
|
+
const member = declaredNodeMemberObject(rawMember, memberPath);
|
|
253
|
+
const componentId = expectString(member.componentId, `${memberPath}.componentId`);
|
|
254
|
+
const terminalName = expectString(member.terminalName, `${memberPath}.terminalName`);
|
|
255
|
+
const terminals = componentTerminals.get(componentId);
|
|
256
|
+
if (!terminals) {
|
|
257
|
+
throw new Error(`${memberPath}.componentId: unknown component "${componentId}"`);
|
|
258
|
+
}
|
|
259
|
+
if (!terminals.has(terminalName)) {
|
|
260
|
+
throw new Error(`${memberPath}.terminalName: unknown terminal "${componentId}.${terminalName}"`);
|
|
261
|
+
}
|
|
262
|
+
addDeclaredPin(pinToNode, nodeMembers, nodeId, { componentId, terminalName }, memberPath);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function declaredNodeMemberObject(value, path) {
|
|
267
|
+
if (isYamlObject(value) && value.componentId !== undefined)
|
|
268
|
+
return value;
|
|
269
|
+
let flowText = typeof value === "string" ? value : null;
|
|
270
|
+
if (isYamlObject(value)) {
|
|
271
|
+
const entries = Object.entries(value);
|
|
272
|
+
const first = entries[0];
|
|
273
|
+
if (entries.length === 1 && first?.[0].trimStart().startsWith("{")) {
|
|
274
|
+
flowText = `${first[0]}: ${scalarText(first[1], path)}`;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (!flowText?.trim().startsWith("{") || !flowText.trim().endsWith("}")) {
|
|
278
|
+
return expectObject(value, path);
|
|
279
|
+
}
|
|
280
|
+
const body = flowText.trim().slice(1, -1);
|
|
281
|
+
const out = {};
|
|
282
|
+
for (const field of splitFlowFields(body, path)) {
|
|
283
|
+
const colon = field.indexOf(":");
|
|
284
|
+
if (colon <= 0)
|
|
285
|
+
throw new Error(`${path}: invalid flow mapping member`);
|
|
286
|
+
const key = field.slice(0, colon).trim();
|
|
287
|
+
const rawValue = field.slice(colon + 1).trim();
|
|
288
|
+
if (!key || !rawValue)
|
|
289
|
+
throw new Error(`${path}: invalid flow mapping member`);
|
|
290
|
+
let parsedValue;
|
|
291
|
+
if (rawValue.startsWith('"')) {
|
|
292
|
+
try {
|
|
293
|
+
const parsed = JSON.parse(rawValue);
|
|
294
|
+
if (typeof parsed !== "string")
|
|
295
|
+
throw new Error();
|
|
296
|
+
parsedValue = parsed;
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
throw new Error(`${path}: invalid quoted flow mapping value`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else if (rawValue.startsWith("'") && rawValue.endsWith("'")) {
|
|
303
|
+
parsedValue = rawValue.slice(1, -1).replace(/''/g, "'");
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
parsedValue = rawValue;
|
|
307
|
+
}
|
|
308
|
+
assignUniqueKey(out, key, parsedValue);
|
|
309
|
+
}
|
|
310
|
+
return out;
|
|
311
|
+
}
|
|
312
|
+
function splitFlowFields(value, path) {
|
|
313
|
+
const fields = [];
|
|
314
|
+
let start = 0;
|
|
315
|
+
let quote = null;
|
|
316
|
+
let escaped = false;
|
|
317
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
318
|
+
const char = value[index];
|
|
319
|
+
if (escaped) {
|
|
320
|
+
escaped = false;
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (quote === '"' && char === "\\") {
|
|
324
|
+
escaped = true;
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
if (char === '"' || char === "'") {
|
|
328
|
+
quote = quote === null ? char : quote === char ? null : quote;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
if (char === "," && quote === null) {
|
|
332
|
+
fields.push(value.slice(start, index).trim());
|
|
333
|
+
start = index + 1;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (quote !== null)
|
|
337
|
+
throw new Error(`${path}: unterminated quoted flow mapping`);
|
|
338
|
+
fields.push(value.slice(start).trim());
|
|
339
|
+
return fields.filter(Boolean);
|
|
340
|
+
}
|
|
75
341
|
function rejectV3OnlyTopLevelFields(root) {
|
|
76
342
|
for (const field of V3_ONLY_TOP_LEVEL_FIELDS) {
|
|
77
343
|
if (root[field] !== undefined) {
|
|
@@ -528,8 +794,17 @@ function parsePower(value) {
|
|
|
528
794
|
}
|
|
529
795
|
function parsePowerDomain(value, path) {
|
|
530
796
|
const domain = expectObject(value, path);
|
|
531
|
-
|
|
797
|
+
// sourceKind and the provisional powerSourceKind alias are normalized into the
|
|
798
|
+
// typed field below; drop both from the build-data passthrough so the parser is
|
|
799
|
+
// the single normalization boundary and only canonical sourceKind round-trips.
|
|
800
|
+
const buildData = {
|
|
532
801
|
...parseBuildDataObject(domain, path),
|
|
802
|
+
};
|
|
803
|
+
delete buildData.sourceKind;
|
|
804
|
+
delete buildData.powerSourceKind;
|
|
805
|
+
const sourceKind = parsePowerSourceKind(domain.sourceKind, domain.powerSourceKind, path);
|
|
806
|
+
return {
|
|
807
|
+
...buildData,
|
|
533
808
|
id: expectString(domain.id, `${path}.id`),
|
|
534
809
|
sourceComponentIds: optionalArray(domain.sourceComponentIds, `${path}.sourceComponentIds`).map((id, index) => expectString(id, `${path}.sourceComponentIds[${index}]`)),
|
|
535
810
|
...(domain.ratedVoltage === undefined
|
|
@@ -538,9 +813,37 @@ function parsePowerDomain(value, path) {
|
|
|
538
813
|
ratedVoltage: parseQuantity(domain.ratedVoltage, `${path}.ratedVoltage`),
|
|
539
814
|
}),
|
|
540
815
|
groundPolarity: parseCircuitPowerGroundPolarity(domain.groundPolarity, `${path}.groundPolarity`),
|
|
816
|
+
...(sourceKind === undefined ? {} : { sourceKind }),
|
|
541
817
|
rails: optionalArray(domain.rails, `${path}.rails`).map((rail, index) => parsePowerRailBinding(rail, `${path}.rails[${index}]`)),
|
|
542
818
|
};
|
|
543
819
|
}
|
|
820
|
+
// Resolves the canonical `sourceKind` and the provisional `powerSourceKind`
|
|
821
|
+
// build-data alias into one typed value: canonical wins, a same-valued alias is
|
|
822
|
+
// accepted, and disagreeing keys are rejected.
|
|
823
|
+
function parsePowerSourceKind(canonical, legacy, path) {
|
|
824
|
+
const canonicalKind = canonical === undefined
|
|
825
|
+
? undefined
|
|
826
|
+
: coercePowerSourceKind(canonical, `${path}.sourceKind`);
|
|
827
|
+
const legacyKind = legacy === undefined
|
|
828
|
+
? undefined
|
|
829
|
+
: coercePowerSourceKind(legacy, `${path}.powerSourceKind`);
|
|
830
|
+
if (canonicalKind !== undefined &&
|
|
831
|
+
legacyKind !== undefined &&
|
|
832
|
+
canonicalKind !== legacyKind) {
|
|
833
|
+
throw new Error(`${path}: sourceKind "${canonicalKind}" conflicts with powerSourceKind "${legacyKind}"`);
|
|
834
|
+
}
|
|
835
|
+
return canonicalKind ?? legacyKind;
|
|
836
|
+
}
|
|
837
|
+
function coercePowerSourceKind(value, path) {
|
|
838
|
+
const kind = expectString(value, path);
|
|
839
|
+
switch (kind) {
|
|
840
|
+
case "mains-ac":
|
|
841
|
+
case "external-dc":
|
|
842
|
+
return kind;
|
|
843
|
+
default:
|
|
844
|
+
throw new Error(`${path}: expected mains-ac or external-dc`);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
544
847
|
function parsePowerRailBinding(value, path) {
|
|
545
848
|
const rail = expectObject(value, path);
|
|
546
849
|
return {
|
|
@@ -1251,7 +1554,7 @@ function parseBlock(lines, cursor, indent) {
|
|
|
1251
1554
|
return parseObject(lines, cursor, indent);
|
|
1252
1555
|
}
|
|
1253
1556
|
function assignUniqueKey(out, key, value) {
|
|
1254
|
-
if (Object.
|
|
1557
|
+
if (Object.hasOwn(out, key)) {
|
|
1255
1558
|
throw new Error(`duplicate mapping key "${key}"`);
|
|
1256
1559
|
}
|
|
1257
1560
|
out[key] = value;
|