@vessel-dsp/core 0.6.26 → 0.6.28

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
- export const VERSION = "0.6.26";
1
+ export const VERSION = "0.6.28";
2
2
  export { applyDocumentCommand, applyEditorCommand, buildComponent, canRedo, canUndo, createEditorState, resetEditorState, tidyDocumentLayout, } from "./editor/index.js";
3
3
  export { parseCircuitJsonDocument, serializeCircuitJsonDocument, validateCircuitJsonDocument, } from "./formats/circuit-json/serializer.js";
4
4
  export { convertCircuitDocumentFile, convertCircuitDocumentFileWithReport, detectCircuitDocumentFileFormat, detectCircuitFormat, isVdspFilename, parseCircuitDocument, parseCircuitDocumentFile, parseVdspCircuitDocument, parseVdspCircuitDocumentWithTopology, serializeCircuitDocumentFile, serializeVdspCircuitDocument, validateVdspCircuitDocumentSchema, vdspFileExtension, vdspFilenameFromName, } from "./formats/document.js";
5
5
  export { INTERCHANGE_CONTRACT_VERSION } from "./formats/interchange/contract.js";
6
6
  export { AMBIGUOUS_POTENTIOMETER_END_TOKENS, POTENTIOMETER_TERMINAL_ROLE_ALIASES, POTENTIOMETER_TERMINAL_ROLES, classifyPotentiometerTerminalRole, resolveDocumentPotentiometerTerminalRoles, resolvePotentiometerTerminalRoles, } from "./model/terminal-roles.js";
7
+ export { AMBIGUOUS_DEVICE_TERMINAL_TOKENS, DEVICE_TERMINAL_ROLES, TERMINAL_ROLES_BY_KIND, collectTerminalRoleWarnings, isLegalTerminalRole, terminalRolesFor, INDEXABLE_DEVICE_TERMINAL_ROLES, classifyDeviceTerminalRole, isRoledDeviceKind, resolveComponentTerminalRoles, } from "./model/device-terminal-roles.js";
7
8
  export { parseInterchangeYaml, parseInterchangeYamlWithTopology, } from "./formats/interchange/parser.js";
8
9
  export { serializeInterchangeYaml } from "./formats/interchange/serializer.js";
9
10
  export { parseLtspiceAsc } from "./formats/ltspice/parser.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import type { ComponentKind } from "./types";
2
+ /**
3
+ * Electrode concepts across the covered kinds.
4
+ *
5
+ * One union rather than one type per kind, because `plate` on a triode and `plate` on a tube
6
+ * rectifier are the same electrode. Which subset is legal for a given kind is
7
+ * `DEVICE_TERMINAL_ROLES`.
8
+ */
9
+ export type DeviceTerminalRole = "grid" | "screen" | "suppressor" | "plate" | "cathode" | "heater" | "base" | "collector" | "emitter" | "gate" | "drain" | "source" | "bulk";
10
+ /** Kinds this module covers. Every other `ComponentKind` classifies as `out-of-scope`. */
11
+ export type RoledDeviceKind = "triode" | "pentode" | "tube-diode" | "bjt" | "jfet" | "mosfet";
12
+ /** Is this kind covered here? Narrows `ComponentKind` to {@link RoledDeviceKind}. */
13
+ export declare function isRoledDeviceKind(kind: string): kind is RoledDeviceKind;
14
+ /**
15
+ * The roles each kind may carry.
16
+ *
17
+ * `heater` is listed for every vacuum device because a heater is a real electrode that a
18
+ * document may declare; it carries no signal current, so a consumer is free to read it and do
19
+ * nothing with it. What a consumer must not do is fail to recognise it -- that is how a declared
20
+ * heater ends up bound as a signal electrode.
21
+ */
22
+ export declare const DEVICE_TERMINAL_ROLES: Readonly<Record<RoledDeviceKind, readonly DeviceTerminalRole[]>>;
23
+ /**
24
+ * Electrodes that may legitimately appear more than once on one component, and therefore need an
25
+ * index in the terminal name.
26
+ *
27
+ * **This is forced by the format, not a spelling preference.** A terminal name is the pin's
28
+ * identity -- the `nodes:` ledger references it as `<component>.<terminal>` -- so core rejects two
29
+ * terminals sharing a name (`pin "V1.plate" already belongs to node 1`). Every tube rectifier in
30
+ * the survey is a dual, two plates on one directly heated cathode, so it *cannot* name both plates
31
+ * `plate`. `plate_a`/`plate_b` are the canonical indexed form of one role, not two spellings of it.
32
+ *
33
+ * A heater is listed for the same reason: its two ends are one electrode. Whether a repetition is
34
+ * meaningful is the consuming device law's question; this only says the name is well-formed.
35
+ */
36
+ export declare const INDEXABLE_DEVICE_TERMINAL_ROLES: ReadonlySet<DeviceTerminalRole>;
37
+ /**
38
+ * Tokens that name a terminal without naming an electrode.
39
+ *
40
+ * Same principle as the potentiometer module's ambiguous ends: there is nothing to correct in
41
+ * `a`, it is simply under-specified, so it resolves to no role rather than to a guessed one. An
42
+ * author fixes one by writing which electrode it is.
43
+ *
44
+ * `a` matters here beyond the general case: it is standard notation for a tube's anode *and* the
45
+ * first of two unordered ends, and a two-terminal component in this corpus is routinely spelled
46
+ * `a`/`b`. Resolving it to `plate` would silently orient every device that used it positionally.
47
+ *
48
+ * Note these are whole tokens. `plate-a` is not ambiguous: its head names the electrode and the
49
+ * `a` is an index, which is a different thing from `a` standing alone.
50
+ */
51
+ export declare const AMBIGUOUS_DEVICE_TERMINAL_TOKENS: ReadonlySet<string>;
52
+ export type DeviceTerminalRoleVerdict = {
53
+ readonly status: "canonical";
54
+ readonly role: DeviceTerminalRole;
55
+ /** Set when the name carried an index, as a dual rectifier's plates must. */
56
+ readonly index?: string;
57
+ } | {
58
+ readonly status: "ambiguous";
59
+ } | {
60
+ readonly status: "package-pin";
61
+ readonly pin: number;
62
+ } | {
63
+ readonly status: "unrecognized";
64
+ } | {
65
+ readonly status: "out-of-scope";
66
+ };
67
+ /**
68
+ * Classify one terminal name against a device kind's vocabulary.
69
+ *
70
+ * A kind this module does not cover returns `out-of-scope` rather than `unrecognized`: the two
71
+ * mean different things to a caller, and conflating them would report every resistor as a defect.
72
+ */
73
+ export declare function classifyDeviceTerminalRole(kind: ComponentKind | string, terminalName: string): DeviceTerminalRoleVerdict;
74
+ /**
75
+ * Every role a component's terminals resolve to, keyed by the raw name the document used.
76
+ *
77
+ * Deliberately **not** a completeness verdict. The potentiometer resolver can say `complete`
78
+ * because a pot has exactly three roles exactly once; these kinds do not share one arity -- a
79
+ * dual rectifier carries two plates, a ganged tube envelope carries two grids, and a MOSFET's
80
+ * substrate is optional. Whether a given component's set is sufficient is the consuming device
81
+ * law's question, and answering it here would bake one law's expectations into the format.
82
+ */
83
+ export declare function resolveComponentTerminalRoles(kind: ComponentKind | string, terminalNames: readonly string[]): ReadonlyMap<string, DeviceTerminalRole>;
84
+ /** Every role a terminal may declare, across every component kind. */
85
+ export type TerminalRole = "end" | "positive" | "negative" | "anode" | "cathode" | "base" | "collector" | "emitter" | "gate" | "drain" | "source" | "bulk" | "grid" | "screen" | "suppressor" | "plate" | "heater" | "nonInverting" | "inverting" | "output" | "supplyPositive" | "supplyNegative" | "bias" | "compensation" | "balance" | "ccw" | "wiper" | "cw" | "tip" | "ring" | "sleeve" | "send" | "return" | "switchContact" | "winding" | "windingTap" | "shield" | "common" | "throw" | "coil" | "ground" | "pin";
86
+ /**
87
+ * Which roles each kind may declare.
88
+ *
89
+ * **`transformer` and `switch` are deliberately coarse.** A transformer terminal's role is that it
90
+ * is a winding end or a tap; *which* winding it belongs to is membership, which a flat role cannot
91
+ * express and which the 107 spellings in the survey are currently carrying inside names
92
+ * (`hv_red_a_345vac`). That needs a winding construct; until it exists, `winding`/`windingTap`
93
+ * states what is true without pretending to state the grouping. `switch` is the same shape: 232
94
+ * spellings naming what each contact connects to.
95
+ *
96
+ * Kinds that are not electrical devices (`label`, `named-wire`, `port`, `unsupported`) take `pin`,
97
+ * since their terminals are attachment points rather than electrodes.
98
+ */
99
+ export declare const TERMINAL_ROLES_BY_KIND: Readonly<Record<string, readonly TerminalRole[]>>;
100
+ /** Is `role` a legal declaration for a component of `kind`? */
101
+ export declare function isLegalTerminalRole(kind: ComponentKind | string, role: string): role is TerminalRole;
102
+ /** The roles `kind` accepts, or an empty list for a kind with no declared vocabulary. */
103
+ export declare function terminalRolesFor(kind: ComponentKind | string): readonly TerminalRole[];
104
+ /**
105
+ * Diagnostics for the `role` field: one for a role a kind cannot carry, one for a terminal that
106
+ * declares none.
107
+ *
108
+ * **Both are warnings, and the missing-role one is the whole migration.** The format requires a
109
+ * role on every terminal, but 26,016 terminals were written before the field existed, so refusing
110
+ * a document without one would refuse the entire corpus. Reporting instead makes the backfill
111
+ * measurable — the warning count is the work remaining — and lets it proceed document by
112
+ * document. Tighten to a refusal once the count reaches zero.
113
+ *
114
+ * An **illegal** role is a different thing and is always the document's error: `screen` on a
115
+ * triode, or `wiper` on a diode, is a claim the kind cannot support.
116
+ */
117
+ export declare function collectTerminalRoleWarnings(components: readonly {
118
+ readonly id: string;
119
+ readonly kind: string;
120
+ readonly terminals: readonly {
121
+ readonly name: string;
122
+ readonly role?: string;
123
+ }[];
124
+ }[]): readonly {
125
+ readonly code: "terminal-role-illegal" | "terminal-role-missing";
126
+ readonly message: string;
127
+ readonly componentId: string;
128
+ }[];
129
+ //# sourceMappingURL=device-terminal-roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-terminal-roles.d.ts","sourceRoot":"","sources":["../../src/model/device-terminal-roles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ // Canonical terminal roles for the active devices whose electrodes are asymmetric, and the
2
+ // spellings that resolve to them.
3
+ //
4
+ // **Why this exists.** A resistor's two ends are interchangeable, so a consumer that reads them
5
+ // in the wrong order is still right. A transistor's are not: exchange a BJT's base and collector
6
+ // and the stage never turns on, exchange a triode's plate and cathode and a gain stage becomes a
7
+ // cathode follower, reverse a rectifier and it conducts on the wrong half-cycle. Each of those
8
+ // still *solves*, so the wrong answer is silent. The role therefore has to come from the
9
+ // document, and a consumer needs one declared vocabulary to read it by -- otherwise every
10
+ // consumer grows its own, and they drift. That is not hypothetical: the audio-engine consumer
11
+ // had accumulated roughly thirty private spelling sets for these same electrodes, two of which
12
+ // had already diverged from each other.
13
+ //
14
+ // **Per kind, not one flat table.** The same token means different electrodes on different
15
+ // devices, so a single global map would mis-bind. `c` is a BJT's collector and a tube's cathode.
16
+ // `plate` is a triode's anode and, on a `diode`-kind tube rectifier, its own thing. `input` and
17
+ // `output` name a FET's channel ends in one corpus convention and mean nothing on a tube. Keying
18
+ // the vocabulary by `ComponentKind` is what makes those coexist.
19
+ //
20
+ // **Survey this vocabulary was built from** -- 142 project documents, 26,016 terminals, counted
21
+ // by declaration:
22
+ //
23
+ // triode 3 spellings grid(136) plate(136) cathode(136)
24
+ // pentode 6 grid(58) plate(58) screen(58) cathode(58) suppressor(12) heater(4)
25
+ // tube-diode 6 plate_a(6) plate_b(6) heater_a(6) heater_b(6)
26
+ // cathode_filament(3) cathode(3)
27
+ // jfet 6 gate(146) drain(146) source(146) input(2) control(2) output(2)
28
+ // mosfet 5 drain(4) gate(4) source(4) bulk(2) body(1)
29
+ // bjt 34 base(356) collector(356) emitter(357), then 31 singletons
30
+ //
31
+ // A triode uses exactly three spellings across 408 declarations: the vocabulary was already an
32
+ // enum, it just was not declared anywhere. The BJT tail is the informative part -- see
33
+ // `BJT_TERMINAL_ROLE_ALIASES` for what those 31 turn out to be, because none of them is a
34
+ // spelling of an electrode.
35
+ //
36
+ // **Canonical only -- there is deliberately no alias table.** An earlier draft of this module
37
+ // carried one, and it was wrong twice over. It accommodated spellings that a document should
38
+ // simply be corrected to stop using, which is the accretion channel this vocabulary exists to
39
+ // close rather than relocate; and most of its entries (`g`, `k`, `p`, `anode`, `g2`, `substrate`,
40
+ // ...) were exercised by nothing in the survey, which is speculative vocabulary against
41
+ // unexercised data. What the survey actually needs beyond the canonical tokens is **twelve
42
+ // declarations across five spellings**, every one of which is a document to fix:
43
+ //
44
+ // jfet input(2) control(2) output(2) -> drain / gate / source
45
+ // mosfet body(1) -> bulk
46
+ // diode cathode_filament(3) -> cathode
47
+ //
48
+ // An unrecognized verdict is therefore a **work item, not an accommodation**. That is what makes
49
+ // the vocabulary normative: a consumer reads one spelling per role, and a document that does not
50
+ // use it is reported rather than quietly translated.
51
+ //
52
+ // Like the potentiometer vocabulary next door, this never rewrites a document: a resolved role is
53
+ // always reported alongside the raw token the source used.
54
+ import { normalizeToken } from "./tokens.js";
55
+ const ROLED_DEVICE_KINDS = new Set([
56
+ "triode",
57
+ "pentode",
58
+ "tube-diode",
59
+ "bjt",
60
+ "jfet",
61
+ "mosfet",
62
+ ]);
63
+ /** Is this kind covered here? Narrows `ComponentKind` to {@link RoledDeviceKind}. */
64
+ export function isRoledDeviceKind(kind) {
65
+ return ROLED_DEVICE_KINDS.has(kind);
66
+ }
67
+ /**
68
+ * The roles each kind may carry.
69
+ *
70
+ * `heater` is listed for every vacuum device because a heater is a real electrode that a
71
+ * document may declare; it carries no signal current, so a consumer is free to read it and do
72
+ * nothing with it. What a consumer must not do is fail to recognise it -- that is how a declared
73
+ * heater ends up bound as a signal electrode.
74
+ */
75
+ export const DEVICE_TERMINAL_ROLES = {
76
+ triode: ["grid", "cathode", "plate", "heater"],
77
+ pentode: ["grid", "screen", "suppressor", "cathode", "plate", "heater"],
78
+ "tube-diode": ["plate", "cathode", "heater"],
79
+ bjt: ["base", "collector", "emitter"],
80
+ jfet: ["gate", "drain", "source"],
81
+ mosfet: ["gate", "drain", "source", "bulk"],
82
+ };
83
+ /**
84
+ * Electrodes that may legitimately appear more than once on one component, and therefore need an
85
+ * index in the terminal name.
86
+ *
87
+ * **This is forced by the format, not a spelling preference.** A terminal name is the pin's
88
+ * identity -- the `nodes:` ledger references it as `<component>.<terminal>` -- so core rejects two
89
+ * terminals sharing a name (`pin "V1.plate" already belongs to node 1`). Every tube rectifier in
90
+ * the survey is a dual, two plates on one directly heated cathode, so it *cannot* name both plates
91
+ * `plate`. `plate_a`/`plate_b` are the canonical indexed form of one role, not two spellings of it.
92
+ *
93
+ * A heater is listed for the same reason: its two ends are one electrode. Whether a repetition is
94
+ * meaningful is the consuming device law's question; this only says the name is well-formed.
95
+ */
96
+ export const INDEXABLE_DEVICE_TERMINAL_ROLES = new Set(["plate", "heater", "grid", "cathode"]);
97
+ /** A one-token index suffix: `a`..`d` or `1`..`9`. Anything else is not an index. */
98
+ const INDEX_PATTERN = /^(?:[a-d]|[1-9])$/;
99
+ /**
100
+ * Tokens that name a terminal without naming an electrode.
101
+ *
102
+ * Same principle as the potentiometer module's ambiguous ends: there is nothing to correct in
103
+ * `a`, it is simply under-specified, so it resolves to no role rather than to a guessed one. An
104
+ * author fixes one by writing which electrode it is.
105
+ *
106
+ * `a` matters here beyond the general case: it is standard notation for a tube's anode *and* the
107
+ * first of two unordered ends, and a two-terminal component in this corpus is routinely spelled
108
+ * `a`/`b`. Resolving it to `plate` would silently orient every device that used it positionally.
109
+ *
110
+ * Note these are whole tokens. `plate-a` is not ambiguous: its head names the electrode and the
111
+ * `a` is an index, which is a different thing from `a` standing alone.
112
+ */
113
+ export const AMBIGUOUS_DEVICE_TERMINAL_TOKENS = new Set([
114
+ "a",
115
+ "b",
116
+ "x",
117
+ "y",
118
+ "end",
119
+ "end1",
120
+ "end2",
121
+ "lead1",
122
+ "lead2",
123
+ "left",
124
+ "right",
125
+ "top",
126
+ "bottom",
127
+ "one",
128
+ "two",
129
+ "three",
130
+ // A heater tap and a directly heated cathode are both "the filament"; which one a bare
131
+ // `filament` means is exactly what a consumer must not guess.
132
+ "filament",
133
+ ]);
134
+ /**
135
+ * A bare physical pin number, carrying position and no semantics.
136
+ *
137
+ * `pin7` of an unknown package names where a wire lands, not what the electrode does, so it is
138
+ * neither a role nor a misspelling of one -- a distinct verdict rather than `unrecognized`,
139
+ * because a document that numbers its pins is doing something legitimate that a consumer may be
140
+ * able to use via the package's pinout. Matches `pin7`, `p7`, `terminal4`, `lug2`, `7`.
141
+ */
142
+ const PACKAGE_PIN_PATTERN = /^(?:pin|p|terminal|lug|t)?-?\d{1,3}$/;
143
+ /**
144
+ * Classify one terminal name against a device kind's vocabulary.
145
+ *
146
+ * A kind this module does not cover returns `out-of-scope` rather than `unrecognized`: the two
147
+ * mean different things to a caller, and conflating them would report every resistor as a defect.
148
+ */
149
+ export function classifyDeviceTerminalRole(kind, terminalName) {
150
+ if (!isRoledDeviceKind(kind)) {
151
+ return { status: "out-of-scope" };
152
+ }
153
+ const token = normalizeToken(terminalName);
154
+ const legal = DEVICE_TERMINAL_ROLES[kind];
155
+ if (legal.includes(token)) {
156
+ return { status: "canonical", role: token };
157
+ }
158
+ // An indexed electrode: `plate-a` is one role plus a distinguishing suffix, which the format
159
+ // forces because a pin name must be unique within its component.
160
+ const split = token.lastIndexOf("-");
161
+ if (split > 0) {
162
+ const head = token.slice(0, split);
163
+ const index = token.slice(split + 1);
164
+ if (legal.includes(head) &&
165
+ INDEXABLE_DEVICE_TERMINAL_ROLES.has(head) &&
166
+ INDEX_PATTERN.test(index)) {
167
+ return { status: "canonical", role: head, index };
168
+ }
169
+ }
170
+ // Ambiguity is checked before the pin pattern so a token that is both (`a`, `b`) reports the
171
+ // more informative verdict: it names an end, it just does not say which.
172
+ if (AMBIGUOUS_DEVICE_TERMINAL_TOKENS.has(token)) {
173
+ return { status: "ambiguous" };
174
+ }
175
+ if (PACKAGE_PIN_PATTERN.test(token)) {
176
+ const digits = /\d{1,3}$/.exec(token);
177
+ return { status: "package-pin", pin: Number(digits?.[0] ?? "0") };
178
+ }
179
+ return { status: "unrecognized" };
180
+ }
181
+ /**
182
+ * Every role a component's terminals resolve to, keyed by the raw name the document used.
183
+ *
184
+ * Deliberately **not** a completeness verdict. The potentiometer resolver can say `complete`
185
+ * because a pot has exactly three roles exactly once; these kinds do not share one arity -- a
186
+ * dual rectifier carries two plates, a ganged tube envelope carries two grids, and a MOSFET's
187
+ * substrate is optional. Whether a given component's set is sufficient is the consuming device
188
+ * law's question, and answering it here would bake one law's expectations into the format.
189
+ */
190
+ export function resolveComponentTerminalRoles(kind, terminalNames) {
191
+ const resolved = new Map();
192
+ for (const name of terminalNames) {
193
+ const verdict = classifyDeviceTerminalRole(kind, name);
194
+ if (verdict.status === "canonical") {
195
+ resolved.set(name, verdict.role);
196
+ }
197
+ }
198
+ return resolved;
199
+ }
200
+ const TWO_TERMINAL = ["end", "positive", "negative"];
201
+ const SUPPLY = [
202
+ "positive",
203
+ "negative",
204
+ "ground",
205
+ "end",
206
+ ];
207
+ const OPAMP = [
208
+ "nonInverting",
209
+ "inverting",
210
+ "output",
211
+ "supplyPositive",
212
+ "supplyNegative",
213
+ "bias",
214
+ "compensation",
215
+ "balance",
216
+ "pin",
217
+ ];
218
+ /**
219
+ * Which roles each kind may declare.
220
+ *
221
+ * **`transformer` and `switch` are deliberately coarse.** A transformer terminal's role is that it
222
+ * is a winding end or a tap; *which* winding it belongs to is membership, which a flat role cannot
223
+ * express and which the 107 spellings in the survey are currently carrying inside names
224
+ * (`hv_red_a_345vac`). That needs a winding construct; until it exists, `winding`/`windingTap`
225
+ * states what is true without pretending to state the grouping. `switch` is the same shape: 232
226
+ * spellings naming what each contact connects to.
227
+ *
228
+ * Kinds that are not electrical devices (`label`, `named-wire`, `port`, `unsupported`) take `pin`,
229
+ * since their terminals are attachment points rather than electrodes.
230
+ */
231
+ export const TERMINAL_ROLES_BY_KIND = {
232
+ resistor: TWO_TERMINAL,
233
+ "variable-resistor": [...TWO_TERMINAL, "wiper"],
234
+ capacitor: TWO_TERMINAL,
235
+ inductor: TWO_TERMINAL,
236
+ diode: [...TWO_TERMINAL, "anode", "cathode", "plate", "heater"],
237
+ led: ["anode", "cathode", "end"],
238
+ bjt: ["base", "collector", "emitter", "pin"],
239
+ jfet: ["gate", "drain", "source", "pin"],
240
+ mosfet: ["gate", "drain", "source", "bulk", "pin"],
241
+ triode: ["grid", "cathode", "plate", "heater"],
242
+ pentode: ["grid", "screen", "suppressor", "cathode", "plate", "heater"],
243
+ "tube-diode": ["plate", "cathode", "heater"],
244
+ opamp: OPAMP,
245
+ ota: OPAMP,
246
+ comparator: OPAMP,
247
+ potentiometer: ["ccw", "wiper", "cw", "end"],
248
+ jack: [
249
+ "tip",
250
+ "ring",
251
+ "sleeve",
252
+ "send",
253
+ "return",
254
+ "switchContact",
255
+ "ground",
256
+ "positive",
257
+ "negative",
258
+ "pin",
259
+ ],
260
+ transformer: ["winding", "windingTap", "shield"],
261
+ switch: ["common", "throw", "coil", "pin"],
262
+ selector: ["common", "throw", "coil", "pin"],
263
+ "analog-switch": ["common", "throw", "coil", "pin"],
264
+ optocoupler: ["anode", "cathode", "end", "pin"],
265
+ "voltage-source": SUPPLY,
266
+ "current-source": SUPPLY,
267
+ battery: SUPPLY,
268
+ rail: SUPPLY,
269
+ ground: ["ground"],
270
+ // Opaque parts: pins are data, and which subset carries executable meaning is a separate
271
+ // declared interface rather than a role.
272
+ ic: ["pin"],
273
+ bbd: ["pin"],
274
+ "delay-ic": ["pin"],
275
+ regulator: ["pin", "positive", "negative", "ground"],
276
+ "power-converter": ["pin", "positive", "negative", "ground"],
277
+ "power-amp": ["pin", "nonInverting", "inverting", "output"],
278
+ flipflop: ["pin"],
279
+ // Not electrical devices; their terminals are attachment points.
280
+ label: ["pin"],
281
+ "named-wire": ["pin"],
282
+ port: ["pin", "end"],
283
+ unsupported: ["pin"],
284
+ };
285
+ /** Is `role` a legal declaration for a component of `kind`? */
286
+ export function isLegalTerminalRole(kind, role) {
287
+ return (TERMINAL_ROLES_BY_KIND[kind] ?? []).includes(role);
288
+ }
289
+ /** The roles `kind` accepts, or an empty list for a kind with no declared vocabulary. */
290
+ export function terminalRolesFor(kind) {
291
+ return TERMINAL_ROLES_BY_KIND[kind] ?? [];
292
+ }
293
+ /**
294
+ * Diagnostics for the `role` field: one for a role a kind cannot carry, one for a terminal that
295
+ * declares none.
296
+ *
297
+ * **Both are warnings, and the missing-role one is the whole migration.** The format requires a
298
+ * role on every terminal, but 26,016 terminals were written before the field existed, so refusing
299
+ * a document without one would refuse the entire corpus. Reporting instead makes the backfill
300
+ * measurable — the warning count is the work remaining — and lets it proceed document by
301
+ * document. Tighten to a refusal once the count reaches zero.
302
+ *
303
+ * An **illegal** role is a different thing and is always the document's error: `screen` on a
304
+ * triode, or `wiper` on a diode, is a claim the kind cannot support.
305
+ */
306
+ export function collectTerminalRoleWarnings(components) {
307
+ const warnings = [];
308
+ for (const component of components) {
309
+ const legal = terminalRolesFor(component.kind);
310
+ for (const terminal of component.terminals) {
311
+ if (terminal.role === undefined) {
312
+ warnings.push({
313
+ code: "terminal-role-missing",
314
+ message: `terminal "${terminal.name}" declares no role; ${component.kind} terminals must declare one of: ${legal.join(", ") || "(no vocabulary for this kind)"}`,
315
+ componentId: component.id,
316
+ });
317
+ continue;
318
+ }
319
+ if (!isLegalTerminalRole(component.kind, terminal.role)) {
320
+ warnings.push({
321
+ code: "terminal-role-illegal",
322
+ message: `terminal "${terminal.name}" declares role "${terminal.role}", which a ${component.kind} cannot carry; legal roles: ${legal.join(", ") || "(none)"}`,
323
+ componentId: component.id,
324
+ });
325
+ }
326
+ }
327
+ }
328
+ return warnings;
329
+ }
330
+ //# sourceMappingURL=device-terminal-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-terminal-roles.js","sourceRoot":"","sources":["../../src/model/device-terminal-roles.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,29 @@ export type ParsedQuantity = Readonly<{
10
10
  }>;
11
11
  export type ComponentKind = "resistor" | "capacitor" | "inductor" | "diode" | "led" | "display" | "bjt" | "jfet" | "mosfet" | "opamp" | "ota" | "triode" | "pentode" | "tube-diode" | "transformer" | "potentiometer" | "variable-resistor" | "switch" | "optocoupler" | "voltage-source" | "current-source" | "battery" | "ground" | "rail" | "jack" | "bbd" | "delay-ic" | "power-amp" | "regulator" | "power-converter" | "analog-switch" | "flipflop" | "ic" | "label" | "named-wire" | "port" | "unsupported";
12
12
  export type Terminal = Readonly<{
13
+ /**
14
+ * The pin's identity. Referenced as `<componentId>.<name>` by the `nodes` ledger, so it must
15
+ * be unique within its component -- which is why it cannot also be the role: a dual rectifier
16
+ * has two plates and can only name one of them `plate`.
17
+ *
18
+ * Free text on purpose. It is what the source printed, and nothing infers behaviour from it.
19
+ */
13
20
  name: string;
21
+ /**
22
+ * Which electrode this is. See `TERMINAL_ROLES_BY_KIND` for the roles each component kind may
23
+ * declare.
24
+ *
25
+ * Optional in the *type* only so that documents written before 0.6.28 still parse; the format
26
+ * requires it, and a terminal without one is reported by
27
+ * `collectMissingTerminalRoleWarnings`. Treat `undefined` as "this document predates the
28
+ * field", never as "this terminal has no role".
29
+ */
30
+ role?: string;
31
+ /**
32
+ * Distinguishes two terminals sharing a role, as a dual rectifier's plates do. Meaningful only
33
+ * with `role`; the consuming device law decides whether a repetition is significant.
34
+ */
35
+ index?: string;
14
36
  position: Point;
15
37
  }>;
16
38
  export type PropertyObject = Readonly<{