@vessel-dsp/core 0.6.0 → 0.6.2

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 (238) hide show
  1. package/dist/editor/commands.d.ts +48 -0
  2. package/dist/editor/commands.d.ts.map +1 -0
  3. package/{src/editor/commands.ts → dist/editor/commands.js} +44 -91
  4. package/dist/editor/commands.js.map +1 -0
  5. package/dist/editor/factory.d.ts +10 -0
  6. package/dist/editor/factory.d.ts.map +1 -0
  7. package/{src/editor/factory.ts → dist/editor/factory.js} +11 -27
  8. package/dist/editor/factory.js.map +1 -0
  9. package/dist/editor/history.d.ts +29 -0
  10. package/dist/editor/history.d.ts.map +1 -0
  11. package/{src/editor/history.ts → dist/editor/history.js} +12 -42
  12. package/dist/editor/history.js.map +1 -0
  13. package/{src/editor/index.ts → dist/editor/index.d.ts} +1 -3
  14. package/dist/editor/index.d.ts.map +1 -0
  15. package/dist/editor/index.js +5 -0
  16. package/dist/editor/index.js.map +1 -0
  17. package/dist/editor/layout.d.ts +8 -0
  18. package/dist/editor/layout.d.ts.map +1 -0
  19. package/{src/editor/layout.ts → dist/editor/layout.js} +36 -90
  20. package/dist/editor/layout.js.map +1 -0
  21. package/dist/formats/circuit-json/serializer.d.ts +101 -0
  22. package/dist/formats/circuit-json/serializer.d.ts.map +1 -0
  23. package/{src/formats/circuit-json/serializer.ts → dist/formats/circuit-json/serializer.js} +352 -418
  24. package/dist/formats/circuit-json/serializer.js.map +1 -0
  25. package/dist/formats/document.d.ts +64 -0
  26. package/dist/formats/document.d.ts.map +1 -0
  27. package/{src/formats/document.ts → dist/formats/document.js} +43 -159
  28. package/dist/formats/document.js.map +1 -0
  29. package/dist/formats/interchange/parser.d.ts +3 -0
  30. package/dist/formats/interchange/parser.d.ts.map +1 -0
  31. package/{src/formats/interchange/parser.ts → dist/formats/interchange/parser.js} +157 -463
  32. package/dist/formats/interchange/parser.js.map +1 -0
  33. package/dist/formats/interchange/serializer.d.ts +9 -0
  34. package/dist/formats/interchange/serializer.d.ts.map +1 -0
  35. package/{src/formats/interchange/serializer.ts → dist/formats/interchange/serializer.js} +84 -186
  36. package/dist/formats/interchange/serializer.js.map +1 -0
  37. package/dist/formats/ltspice/catalog.d.ts +19 -0
  38. package/dist/formats/ltspice/catalog.d.ts.map +1 -0
  39. package/{src/formats/ltspice/catalog.ts → dist/formats/ltspice/catalog.js} +18 -52
  40. package/dist/formats/ltspice/catalog.js.map +1 -0
  41. package/dist/formats/ltspice/encoding.d.ts +2 -0
  42. package/dist/formats/ltspice/encoding.d.ts.map +1 -0
  43. package/{src/formats/ltspice/encoding.ts → dist/formats/ltspice/encoding.js} +17 -41
  44. package/dist/formats/ltspice/encoding.js.map +1 -0
  45. package/dist/formats/ltspice/parser.d.ts +3 -0
  46. package/dist/formats/ltspice/parser.d.ts.map +1 -0
  47. package/{src/formats/ltspice/parser.ts → dist/formats/ltspice/parser.js} +39 -141
  48. package/dist/formats/ltspice/parser.js.map +1 -0
  49. package/dist/formats/ltspice/serializer.d.ts +7 -0
  50. package/dist/formats/ltspice/serializer.d.ts.map +1 -0
  51. package/{src/formats/ltspice/serializer.ts → dist/formats/ltspice/serializer.js} +18 -45
  52. package/dist/formats/ltspice/serializer.js.map +1 -0
  53. package/dist/formats/schx/catalog.d.ts +19 -0
  54. package/dist/formats/schx/catalog.d.ts.map +1 -0
  55. package/{src/formats/schx/catalog.ts → dist/formats/schx/catalog.js} +48 -101
  56. package/dist/formats/schx/catalog.js.map +1 -0
  57. package/dist/formats/schx/parser.d.ts +3 -0
  58. package/dist/formats/schx/parser.d.ts.map +1 -0
  59. package/{src/formats/schx/parser.ts → dist/formats/schx/parser.js} +31 -86
  60. package/dist/formats/schx/parser.js.map +1 -0
  61. package/dist/formats/schx/runtime-descriptors.d.ts +3 -0
  62. package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -0
  63. package/{src/formats/schx/runtime-descriptors.ts → dist/formats/schx/runtime-descriptors.js} +36 -123
  64. package/dist/formats/schx/runtime-descriptors.js.map +1 -0
  65. package/dist/formats/schx/serializer.d.ts +5 -0
  66. package/dist/formats/schx/serializer.d.ts.map +1 -0
  67. package/{src/formats/schx/serializer.ts → dist/formats/schx/serializer.js} +17 -42
  68. package/dist/formats/schx/serializer.js.map +1 -0
  69. package/dist/formats/schx/transforms.d.ts +4 -0
  70. package/dist/formats/schx/transforms.d.ts.map +1 -0
  71. package/{src/formats/schx/transforms.ts → dist/formats/schx/transforms.js} +6 -10
  72. package/dist/formats/schx/transforms.js.map +1 -0
  73. package/dist/formats/spice/parser.d.ts +3 -0
  74. package/dist/formats/spice/parser.d.ts.map +1 -0
  75. package/{src/formats/spice/parser.ts → dist/formats/spice/parser.js} +50 -96
  76. package/dist/formats/spice/parser.js.map +1 -0
  77. package/dist/formats/spice/serializer.d.ts +3 -0
  78. package/dist/formats/spice/serializer.d.ts.map +1 -0
  79. package/{src/formats/spice/serializer.ts → dist/formats/spice/serializer.js} +20 -16
  80. package/dist/formats/spice/serializer.js.map +1 -0
  81. package/dist/index.d.ts +47 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +32 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/model/connectivity.d.ts +16 -0
  86. package/dist/model/connectivity.d.ts.map +1 -0
  87. package/{src/model/connectivity.ts → dist/model/connectivity.js} +28 -63
  88. package/dist/model/connectivity.js.map +1 -0
  89. package/dist/model/netlist.d.ts +24 -0
  90. package/dist/model/netlist.d.ts.map +1 -0
  91. package/{src/model/netlist.ts → dist/model/netlist.js} +42 -110
  92. package/dist/model/netlist.js.map +1 -0
  93. package/dist/model/properties.d.ts +9 -0
  94. package/dist/model/properties.d.ts.map +1 -0
  95. package/{src/model/properties.ts → dist/model/properties.js} +10 -18
  96. package/dist/model/properties.js.map +1 -0
  97. package/dist/model/quantity.d.ts +3 -0
  98. package/dist/model/quantity.d.ts.map +1 -0
  99. package/{src/model/quantity.ts → dist/model/quantity.js} +7 -30
  100. package/dist/model/quantity.js.map +1 -0
  101. package/{src/model/types.ts → dist/model/types.d.ts} +17 -196
  102. package/dist/model/types.d.ts.map +1 -0
  103. package/dist/model/types.js +10 -0
  104. package/dist/model/types.js.map +1 -0
  105. package/dist/model/validation.d.ts +32 -0
  106. package/dist/model/validation.d.ts.map +1 -0
  107. package/{src/model/validation.ts → dist/model/validation.js} +172 -653
  108. package/dist/model/validation.js.map +1 -0
  109. package/dist/model/wires.d.ts +3 -0
  110. package/dist/model/wires.d.ts.map +1 -0
  111. package/{src/model/wires.ts → dist/model/wires.js} +10 -16
  112. package/dist/model/wires.js.map +1 -0
  113. package/dist/panel/extract.d.ts +5 -0
  114. package/dist/panel/extract.d.ts.map +1 -0
  115. package/{src/panel/extract.ts → dist/panel/extract.js} +146 -235
  116. package/dist/panel/extract.js.map +1 -0
  117. package/dist/panel/index.d.ts +6 -0
  118. package/dist/panel/index.d.ts.map +1 -0
  119. package/dist/panel/index.js +5 -0
  120. package/dist/panel/index.js.map +1 -0
  121. package/dist/panel/knobs.d.ts +7 -0
  122. package/dist/panel/knobs.d.ts.map +1 -0
  123. package/{src/panel/knobs.ts → dist/panel/knobs.js} +7 -18
  124. package/dist/panel/knobs.js.map +1 -0
  125. package/dist/panel/protocol.d.ts +9 -0
  126. package/dist/panel/protocol.d.ts.map +1 -0
  127. package/{src/panel/protocol.ts → dist/panel/protocol.js} +10 -26
  128. package/dist/panel/protocol.js.map +1 -0
  129. package/{src/panel/types.ts → dist/panel/types.d.ts} +50 -89
  130. package/dist/panel/types.d.ts.map +1 -0
  131. package/dist/panel/types.js +2 -0
  132. package/dist/panel/types.js.map +1 -0
  133. package/dist/preview/bounds.d.ts +12 -0
  134. package/dist/preview/bounds.d.ts.map +1 -0
  135. package/{src/preview/bounds.ts → dist/preview/bounds.js} +15 -29
  136. package/dist/preview/bounds.js.map +1 -0
  137. package/dist/preview/box-layout.d.ts +4 -0
  138. package/dist/preview/box-layout.d.ts.map +1 -0
  139. package/{src/preview/box-layout.ts → dist/preview/box-layout.js} +2 -6
  140. package/dist/preview/box-layout.js.map +1 -0
  141. package/dist/preview/colors.d.ts +3 -0
  142. package/dist/preview/colors.d.ts.map +1 -0
  143. package/{src/preview/colors.ts → dist/preview/colors.js} +3 -5
  144. package/dist/preview/colors.js.map +1 -0
  145. package/dist/preview/hanging.d.ts +8 -0
  146. package/dist/preview/hanging.d.ts.map +1 -0
  147. package/{src/preview/hanging.ts → dist/preview/hanging.js} +9 -28
  148. package/dist/preview/hanging.js.map +1 -0
  149. package/dist/preview/junctions.d.ts +3 -0
  150. package/dist/preview/junctions.d.ts.map +1 -0
  151. package/{src/preview/junctions.ts → dist/preview/junctions.js} +9 -24
  152. package/dist/preview/junctions.js.map +1 -0
  153. package/dist/preview/label-layout.d.ts +12 -0
  154. package/dist/preview/label-layout.d.ts.map +1 -0
  155. package/{src/preview/label-layout.ts → dist/preview/label-layout.js} +15 -36
  156. package/dist/preview/label-layout.js.map +1 -0
  157. package/dist/preview/ports.d.ts +17 -0
  158. package/dist/preview/ports.d.ts.map +1 -0
  159. package/{src/preview/ports.ts → dist/preview/ports.js} +10 -37
  160. package/dist/preview/ports.js.map +1 -0
  161. package/dist/preview/renderable-wires.d.ts +3 -0
  162. package/dist/preview/renderable-wires.d.ts.map +1 -0
  163. package/{src/preview/renderable-wires.ts → dist/preview/renderable-wires.js} +12 -29
  164. package/dist/preview/renderable-wires.js.map +1 -0
  165. package/dist/preview/routing.d.ts +4 -0
  166. package/dist/preview/routing.d.ts.map +1 -0
  167. package/dist/preview/routing.js +13 -0
  168. package/dist/preview/routing.js.map +1 -0
  169. package/dist/preview/snap.d.ts +9 -0
  170. package/dist/preview/snap.d.ts.map +1 -0
  171. package/{src/preview/snap.ts → dist/preview/snap.js} +9 -31
  172. package/dist/preview/snap.js.map +1 -0
  173. package/dist/preview/symbols/svg-content.d.ts +7 -0
  174. package/dist/preview/symbols/svg-content.d.ts.map +1 -0
  175. package/{src/preview/symbols/svg-content.ts → dist/preview/symbols/svg-content.js} +3 -6
  176. package/dist/preview/symbols/svg-content.js.map +1 -0
  177. package/dist/preview/symbols.d.ts +7 -0
  178. package/dist/preview/symbols.d.ts.map +1 -0
  179. package/{src/preview/symbols.ts → dist/preview/symbols.js} +18 -43
  180. package/dist/preview/symbols.js.map +1 -0
  181. package/dist/preview/wire-chains.d.ts +4 -0
  182. package/dist/preview/wire-chains.d.ts.map +1 -0
  183. package/{src/preview/wire-chains.ts → dist/preview/wire-chains.js} +37 -37
  184. package/dist/preview/wire-chains.js.map +1 -0
  185. package/package.json +3 -3
  186. package/src/index.ts +0 -255
  187. package/src/panel/index.ts +0 -39
  188. package/src/preview/routing.ts +0 -15
  189. package/src/preview/symbols/analog-switch.svg +0 -17
  190. package/src/preview/symbols/battery.svg +0 -16
  191. package/src/preview/symbols/bbd.svg +0 -21
  192. package/src/preview/symbols/bjt-npn.svg +0 -16
  193. package/src/preview/symbols/bjt-pnp.svg +0 -17
  194. package/src/preview/symbols/capacitor-electrolytic.svg +0 -13
  195. package/src/preview/symbols/capacitor.svg +0 -12
  196. package/src/preview/symbols/current-source.svg +0 -14
  197. package/src/preview/symbols/delay-ic.svg +0 -22
  198. package/src/preview/symbols/diode-schottky.svg +0 -12
  199. package/src/preview/symbols/diode-zener.svg +0 -12
  200. package/src/preview/symbols/diode.svg +0 -13
  201. package/src/preview/symbols/flipflop.svg +0 -20
  202. package/src/preview/symbols/ground.svg +0 -12
  203. package/src/preview/symbols/ic-block.svg +0 -20
  204. package/src/preview/symbols/ic.svg +0 -19
  205. package/src/preview/symbols/inductor.svg +0 -11
  206. package/src/preview/symbols/jack-input.svg +0 -16
  207. package/src/preview/symbols/jack-output.svg +0 -16
  208. package/src/preview/symbols/jfet-junction-n.svg +0 -17
  209. package/src/preview/symbols/jfet-n.svg +0 -17
  210. package/src/preview/symbols/jfet-p.svg +0 -17
  211. package/src/preview/symbols/label.svg +0 -8
  212. package/src/preview/symbols/led.svg +0 -18
  213. package/src/preview/symbols/mosfet-n.svg +0 -21
  214. package/src/preview/symbols/mosfet-p.svg +0 -21
  215. package/src/preview/symbols/named-wire.svg +0 -11
  216. package/src/preview/symbols/opamp.svg +0 -21
  217. package/src/preview/symbols/optocoupler.svg +0 -30
  218. package/src/preview/symbols/ota.svg +0 -20
  219. package/src/preview/symbols/pentode.svg +0 -25
  220. package/src/preview/symbols/photoresistor.svg +0 -19
  221. package/src/preview/symbols/port.svg +0 -8
  222. package/src/preview/symbols/potentiometer.svg +0 -15
  223. package/src/preview/symbols/power-amp.svg +0 -20
  224. package/src/preview/symbols/rail.svg +0 -11
  225. package/src/preview/symbols/regulator.svg +0 -13
  226. package/src/preview/symbols/relay.svg +0 -20
  227. package/src/preview/symbols/resistor.svg +0 -11
  228. package/src/preview/symbols/switch-3pdt.svg +0 -32
  229. package/src/preview/symbols/switch-rotary.svg +0 -23
  230. package/src/preview/symbols/switch-spdt.svg +0 -16
  231. package/src/preview/symbols/switch-spst.svg +0 -14
  232. package/src/preview/symbols/switch-toggle.svg +0 -14
  233. package/src/preview/symbols/transformer.svg +0 -17
  234. package/src/preview/symbols/triode.svg +0 -17
  235. package/src/preview/symbols/tube-diode.svg +0 -13
  236. package/src/preview/symbols/unsupported.svg +0 -8
  237. package/src/preview/symbols/variable-resistor.svg +0 -13
  238. package/src/preview/symbols/voltage-source.svg +0 -15
@@ -1,43 +1,8 @@
1
- import { parseQuantity } from '../../model/quantity';
2
- import type {
3
- CircuitDocument,
4
- Component,
5
- DocumentMetadata,
6
- Point,
7
- PropertyValue,
8
- Warning,
9
- Wire,
10
- } from '../../model/types';
11
- import { splitWiresAtJunctions } from '../../model/wires';
12
- import {
13
- extractModelFromSymbolPath,
14
- lookupLtspiceSymbolDef,
15
- LTSPICE_COORD_SCALE,
16
- mapLtspiceTerminal,
17
- normalizeLtspiceSymbolName,
18
- type LtspiceSymbolDef,
19
- } from './catalog';
20
- import { decodeLtspiceBytes } from './encoding';
21
-
22
- type MutableLtspiceSymbol = {
23
- readonly sourceName: string;
24
- readonly placement: Point;
25
- readonly orientation: string;
26
- readonly index: number;
27
- readonly attrs: Map<string, string>;
28
- };
29
-
30
- type LtspiceFlag = Readonly<{
31
- point: Point;
32
- name: string;
33
- }>;
34
-
35
- type LtspiceText = Readonly<{
36
- point: Point;
37
- text: string;
38
- }>;
39
-
40
- const IGNORED_KEYWORDS = new Set<string>([
1
+ import { parseQuantity } from '../../model/quantity.js';
2
+ import { splitWiresAtJunctions } from '../../model/wires.js';
3
+ import { extractModelFromSymbolPath, lookupLtspiceSymbolDef, LTSPICE_COORD_SCALE, mapLtspiceTerminal, normalizeLtspiceSymbolName, } from './catalog.js';
4
+ import { decodeLtspiceBytes } from './encoding.js';
5
+ const IGNORED_KEYWORDS = new Set([
41
6
  'WINDOW',
42
7
  'LINE',
43
8
  'RECTANGLE',
@@ -46,8 +11,7 @@ const IGNORED_KEYWORDS = new Set<string>([
46
11
  'DATAFLAG',
47
12
  'BUSTAP',
48
13
  ]);
49
-
50
- export function parseLtspiceAsc(source: string | Uint8Array): CircuitDocument {
14
+ export function parseLtspiceAsc(source) {
51
15
  const text = typeof source === 'string' ? source : decodeLtspiceBytes(source);
52
16
  const normalized = text.replace(/^/, '').replace(/\r\n/g, '\n');
53
17
  const lines = normalized.split('\n');
@@ -55,27 +19,23 @@ export function parseLtspiceAsc(source: string | Uint8Array): CircuitDocument {
55
19
  if (!firstLine.toUpperCase().startsWith('VERSION ')) {
56
20
  throw new Error('not an LTspice ASC schematic: missing Version header');
57
21
  }
58
-
59
- const warnings: Warning[] = [];
60
- const wires: Wire[] = [];
61
- const symbols: MutableLtspiceSymbol[] = [];
62
- const flags: LtspiceFlag[] = [];
63
- const iopins = new Map<string, string>();
64
- const directives: string[] = [];
65
- const texts: LtspiceText[] = [];
66
- let currentSymbol: MutableLtspiceSymbol | null = null;
22
+ const warnings = [];
23
+ const wires = [];
24
+ const symbols = [];
25
+ const flags = [];
26
+ const iopins = new Map();
27
+ const directives = [];
28
+ const texts = [];
29
+ let currentSymbol = null;
67
30
  let version = '';
68
31
  let sheet = '';
69
-
70
32
  lines.forEach((line, lineIndex) => {
71
33
  const trimmed = line.trim();
72
34
  if (trimmed.length === 0) {
73
35
  return;
74
36
  }
75
-
76
37
  const tokens = trimmed.split(/\s+/);
77
38
  const keyword = (tokens[0] ?? '').toUpperCase();
78
-
79
39
  switch (keyword) {
80
40
  case 'VERSION':
81
41
  version = tokens.slice(1).join(' ');
@@ -129,15 +89,13 @@ export function parseLtspiceAsc(source: string | Uint8Array): CircuitDocument {
129
89
  break;
130
90
  }
131
91
  });
132
-
133
- const usedIds = new Map<string, number>();
92
+ const usedIds = new Map();
134
93
  const components = [
135
94
  ...symbols.map((symbol) => buildSymbolComponent(symbol, usedIds, warnings)),
136
95
  ...flags.map((flag) => buildFlagComponent(flag, iopins.get(pointKey(flag.point)), usedIds)),
137
96
  ...texts.map((text, index) => buildTextComponent(text, index, usedIds)),
138
97
  ];
139
- const metadata: DocumentMetadata = { name: '', description: '', partNumber: '' };
140
-
98
+ const metadata = { name: '', description: '', partNumber: '' };
141
99
  return {
142
100
  metadata,
143
101
  components,
@@ -147,13 +105,7 @@ export function parseLtspiceAsc(source: string | Uint8Array): CircuitDocument {
147
105
  rawAttributes: buildRawAttributes(version, sheet),
148
106
  };
149
107
  }
150
-
151
- function parseWire(
152
- tokens: readonly string[],
153
- wireCount: number,
154
- lineIndex: number,
155
- warnings: Warning[],
156
- ): Wire | null {
108
+ function parseWire(tokens, wireCount, lineIndex, warnings) {
157
109
  if (tokens.length < 5) {
158
110
  warnings.push({ code: 'invalid-wire', message: `Line ${lineIndex + 1}: WIRE requires four coordinates` });
159
111
  return null;
@@ -166,8 +118,7 @@ function parseWire(
166
118
  }
167
119
  return { id: `wire-${wireCount + 1}`, endpoints: [a, b] };
168
120
  }
169
-
170
- function parseFlag(tokens: readonly string[], lineIndex: number, warnings: Warning[]): LtspiceFlag | null {
121
+ function parseFlag(tokens, lineIndex, warnings) {
171
122
  if (tokens.length < 4) {
172
123
  warnings.push({ code: 'invalid-flag', message: `Line ${lineIndex + 1}: FLAG requires x, y, and name` });
173
124
  return null;
@@ -179,12 +130,7 @@ function parseFlag(tokens: readonly string[], lineIndex: number, warnings: Warni
179
130
  }
180
131
  return { point, name: tokens.slice(3).join(' ') };
181
132
  }
182
-
183
- function parseIoPin(
184
- tokens: readonly string[],
185
- lineIndex: number,
186
- warnings: Warning[],
187
- ): Readonly<{ point: Point; polarity: string }> | null {
133
+ function parseIoPin(tokens, lineIndex, warnings) {
188
134
  if (tokens.length < 4) {
189
135
  warnings.push({ code: 'invalid-iopin', message: `Line ${lineIndex + 1}: IOPIN requires x, y, and polarity` });
190
136
  return null;
@@ -196,13 +142,7 @@ function parseIoPin(
196
142
  }
197
143
  return { point, polarity: tokens.slice(3).join(' ') };
198
144
  }
199
-
200
- function parseSymbol(
201
- tokens: readonly string[],
202
- symbolCount: number,
203
- lineIndex: number,
204
- warnings: Warning[],
205
- ): MutableLtspiceSymbol | null {
145
+ function parseSymbol(tokens, symbolCount, lineIndex, warnings) {
206
146
  if (tokens.length < 5) {
207
147
  warnings.push({ code: 'invalid-symbol', message: `Line ${lineIndex + 1}: SYMBOL requires name, x, y, and orientation` });
208
148
  return null;
@@ -217,16 +157,10 @@ function parseSymbol(
217
157
  placement,
218
158
  orientation: tokens[4] ?? 'R0',
219
159
  index: symbolCount,
220
- attrs: new Map<string, string>(),
160
+ attrs: new Map(),
221
161
  };
222
162
  }
223
-
224
- function parseSymbolAttribute(
225
- tokens: readonly string[],
226
- currentSymbol: MutableLtspiceSymbol | null,
227
- lineIndex: number,
228
- warnings: Warning[],
229
- ): void {
163
+ function parseSymbolAttribute(tokens, currentSymbol, lineIndex, warnings) {
230
164
  if (currentSymbol === null) {
231
165
  warnings.push({ code: 'orphan-symbol-attribute', message: `Line ${lineIndex + 1}: SYMATTR without preceding SYMBOL` });
232
166
  return;
@@ -237,14 +171,7 @@ function parseSymbolAttribute(
237
171
  }
238
172
  currentSymbol.attrs.set(tokens[1] ?? '', tokens.slice(2).join(' '));
239
173
  }
240
-
241
- function parseText(
242
- tokens: readonly string[],
243
- lineIndex: number,
244
- warnings: Warning[],
245
- directives: string[],
246
- texts: LtspiceText[],
247
- ): void {
174
+ function parseText(tokens, lineIndex, warnings, directives, texts) {
248
175
  if (tokens.length < 6) {
249
176
  warnings.push({ code: 'invalid-text', message: `Line ${lineIndex + 1}: TEXT requires x, y, alignment, size, and text` });
250
177
  return;
@@ -261,12 +188,7 @@ function parseText(
261
188
  }
262
189
  texts.push({ point, text: decodeText(raw.startsWith(';') ? raw.slice(1).trim() : raw) });
263
190
  }
264
-
265
- function buildSymbolComponent(
266
- symbol: MutableLtspiceSymbol,
267
- usedIds: Map<string, number>,
268
- warnings: Warning[],
269
- ): Component {
191
+ function buildSymbolComponent(symbol, usedIds, warnings) {
270
192
  const normalizedName = normalizeLtspiceSymbolName(symbol.sourceName);
271
193
  const def = lookupLtspiceSymbolDef(symbol.sourceName);
272
194
  const baseName = getAttr(symbol.attrs, 'InstName') ?? `${normalizedName}${symbol.index + 1}`;
@@ -275,7 +197,6 @@ function buildSymbolComponent(
275
197
  name: terminal.name,
276
198
  position: mapLtspiceTerminal(terminal.local, symbol.placement, symbol.orientation),
277
199
  }));
278
-
279
200
  if (def === undefined) {
280
201
  warnings.push({
281
202
  code: 'unknown-ltspice-symbol',
@@ -283,7 +204,6 @@ function buildSymbolComponent(
283
204
  componentId: id,
284
205
  });
285
206
  }
286
-
287
207
  return {
288
208
  id,
289
209
  kind: def?.kind ?? 'unsupported',
@@ -296,21 +216,15 @@ function buildSymbolComponent(
296
216
  sourceTypeName: `ltspice:${normalizedName}`,
297
217
  };
298
218
  }
299
-
300
- function buildFlagComponent(
301
- flag: LtspiceFlag,
302
- polarity: string | undefined,
303
- usedIds: Map<string, number>,
304
- ): Component {
219
+ function buildFlagComponent(flag, polarity, usedIds) {
305
220
  const isGround = flag.name === '0';
306
221
  const isJack = polarity !== undefined;
307
222
  const baseName = isGround ? 'GND' : flag.name;
308
- const properties: Record<string, PropertyValue> = { Name: flag.name };
223
+ const properties = { Name: flag.name };
309
224
  if (polarity !== undefined) {
310
225
  properties.polarity = polarity;
311
226
  properties.connector = '1/4" TS jack';
312
227
  }
313
-
314
228
  return {
315
229
  id: uniqueId(baseName, usedIds),
316
230
  kind: isJack ? 'jack' : isGround ? 'ground' : 'named-wire',
@@ -323,12 +237,10 @@ function buildFlagComponent(
323
237
  sourceTypeName: isJack ? ltspiceJackSourceType(polarity) : 'ltspice:FLAG',
324
238
  };
325
239
  }
326
-
327
- function ltspiceJackSourceType(polarity: string | undefined): string {
240
+ function ltspiceJackSourceType(polarity) {
328
241
  return polarity?.toLowerCase() === 'out' ? 'ltspice:OutputJack' : 'ltspice:InputJack';
329
242
  }
330
-
331
- function buildTextComponent(text: LtspiceText, index: number, usedIds: Map<string, number>): Component {
243
+ function buildTextComponent(text, index, usedIds) {
332
244
  const id = uniqueId(`TEXT${index + 1}`, usedIds);
333
245
  return {
334
246
  id,
@@ -342,17 +254,11 @@ function buildTextComponent(text: LtspiceText, index: number, usedIds: Map<strin
342
254
  sourceTypeName: 'ltspice:TEXT',
343
255
  };
344
256
  }
345
-
346
- function buildProperties(
347
- attrs: ReadonlyMap<string, string>,
348
- def: LtspiceSymbolDef | undefined,
349
- rawSymbolName: string,
350
- ): Readonly<Record<string, PropertyValue>> {
351
- const properties: Record<string, PropertyValue> = {};
257
+ function buildProperties(attrs, def, rawSymbolName) {
258
+ const properties = {};
352
259
  for (const [key, value] of attrs) {
353
260
  properties[key] = value;
354
261
  }
355
-
356
262
  const value = getAttr(attrs, 'Value');
357
263
  if (value !== null && def !== undefined) {
358
264
  if (def.valueProperty !== null) {
@@ -362,15 +268,12 @@ function buildProperties(
362
268
  properties.model = value;
363
269
  }
364
270
  }
365
-
366
271
  if (def?.modelFromSymbolPath === true && properties.model === undefined) {
367
272
  properties.model = extractModelFromSymbolPath(rawSymbolName);
368
273
  }
369
-
370
274
  return properties;
371
275
  }
372
-
373
- function getAttr(attrs: ReadonlyMap<string, string>, wanted: string): string | null {
276
+ function getAttr(attrs, wanted) {
374
277
  for (const [key, value] of attrs) {
375
278
  if (key.toLowerCase() === wanted.toLowerCase()) {
376
279
  return value;
@@ -378,9 +281,8 @@ function getAttr(attrs: ReadonlyMap<string, string>, wanted: string): string | n
378
281
  }
379
282
  return null;
380
283
  }
381
-
382
- function buildRawAttributes(version: string, sheet: string): Readonly<Record<string, string>> {
383
- const attrs: Record<string, string> = { format: 'ltspice-asc' };
284
+ function buildRawAttributes(version, sheet) {
285
+ const attrs = { format: 'ltspice-asc' };
384
286
  if (version.length > 0) {
385
287
  attrs.version = version;
386
288
  }
@@ -389,8 +291,7 @@ function buildRawAttributes(version: string, sheet: string): Readonly<Record<str
389
291
  }
390
292
  return attrs;
391
293
  }
392
-
393
- function parsePoint(xText: string | undefined, yText: string | undefined): Point | null {
294
+ function parsePoint(xText, yText) {
394
295
  const x = Number.parseInt(xText ?? '', 10);
395
296
  const y = Number.parseInt(yText ?? '', 10);
396
297
  if (!Number.isFinite(x) || !Number.isFinite(y)) {
@@ -400,24 +301,20 @@ function parsePoint(xText: string | undefined, yText: string | undefined): Point
400
301
  // of the library — see LTSPICE_COORD_SCALE in catalog.ts for the rationale.
401
302
  return { x: x * LTSPICE_COORD_SCALE, y: y * LTSPICE_COORD_SCALE };
402
303
  }
403
-
404
- function pointKey(point: Point): string {
304
+ function pointKey(point) {
405
305
  return `${point.x},${point.y}`;
406
306
  }
407
-
408
- function uniqueId(baseName: string, usedIds: Map<string, number>): string {
307
+ function uniqueId(baseName, usedIds) {
409
308
  const sanitized = baseName.replace(/\s+/g, '-').replace(/[^A-Za-z0-9_-]/g, '');
410
309
  const base = sanitized.length > 0 ? sanitized : 'component';
411
310
  const count = usedIds.get(base) ?? 0;
412
311
  usedIds.set(base, count + 1);
413
312
  return count === 0 ? base : `${base}-${count + 1}`;
414
313
  }
415
-
416
- function decodeText(text: string): string {
314
+ function decodeText(text) {
417
315
  return text.replaceAll('\\n', '\n');
418
316
  }
419
-
420
- function rotationFromLtspiceOrientation(orientation: string): Component['rotation'] {
317
+ function rotationFromLtspiceOrientation(orientation) {
421
318
  const match = orientation.toUpperCase().match(/[MR](0|90|180|270)$/);
422
319
  if (match?.[1] === '90') {
423
320
  return 1;
@@ -430,3 +327,4 @@ function rotationFromLtspiceOrientation(orientation: string): Component['rotatio
430
327
  }
431
328
  return 0;
432
329
  }
330
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/formats/ltspice/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CircuitDocument } from '../../model/types';
2
+ export type SerializeLtspiceAscOptions = Readonly<{
3
+ version?: string;
4
+ sheet?: string;
5
+ }>;
6
+ export declare function serializeLtspiceAsc(doc: CircuitDocument, options?: SerializeLtspiceAscOptions): string;
7
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../src/formats/ltspice/serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAmD,MAAM,mBAAmB,CAAC;AAG1G,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAeH,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,0BAA+B,GACzC,MAAM,CAkBR"}
@@ -1,13 +1,6 @@
1
- import { propertyValueForSourceAttribute } from '../../model/properties';
2
- import type { CircuitDocument, Component, Point, PropertyValue, Rotation, Wire } from '../../model/types';
3
- import { LTSPICE_COORD_SCALE, normalizeLtspiceSymbolName } from './catalog';
4
-
5
- export type SerializeLtspiceAscOptions = Readonly<{
6
- version?: string;
7
- sheet?: string;
8
- }>;
9
-
10
- const KIND_TO_SYMBOL: Readonly<Record<string, string>> = {
1
+ import { propertyValueForSourceAttribute } from '../../model/properties.js';
2
+ import { LTSPICE_COORD_SCALE, normalizeLtspiceSymbolName } from './catalog.js';
3
+ const KIND_TO_SYMBOL = {
11
4
  resistor: 'res',
12
5
  capacitor: 'cap',
13
6
  inductor: 'ind',
@@ -19,31 +12,22 @@ const KIND_TO_SYMBOL: Readonly<Record<string, string>> = {
19
12
  jfet: 'njf',
20
13
  mosfet: 'nmos',
21
14
  };
22
-
23
- export function serializeLtspiceAsc(
24
- doc: CircuitDocument,
25
- options: SerializeLtspiceAscOptions = {},
26
- ): string {
15
+ export function serializeLtspiceAsc(doc, options = {}) {
27
16
  const version = options.version ?? doc.rawAttributes.version ?? '4';
28
17
  const sheet = options.sheet ?? doc.rawAttributes.sheet ?? '1 880 680';
29
- const lines: string[] = [`Version ${version}`, `SHEET ${sheet}`];
30
-
18
+ const lines = [`Version ${version}`, `SHEET ${sheet}`];
31
19
  for (const wire of doc.wires) {
32
20
  lines.push(wireLine(wire));
33
21
  }
34
-
35
22
  for (const component of doc.components) {
36
23
  lines.push(...componentLines(component));
37
24
  }
38
-
39
25
  for (const directive of doc.directives) {
40
26
  lines.push(`TEXT 0 0 Left 2 !${encodeText(directive)}`);
41
27
  }
42
-
43
28
  return `${lines.join('\n')}\n`;
44
29
  }
45
-
46
- function componentLines(component: Component): readonly string[] {
30
+ function componentLines(component) {
47
31
  if (component.kind === 'ground' || component.kind === 'named-wire') {
48
32
  return flagLines(component);
49
33
  }
@@ -53,7 +37,6 @@ function componentLines(component: Component): readonly string[] {
53
37
  if (component.kind === 'label') {
54
38
  return labelLines(component);
55
39
  }
56
-
57
40
  const symbolName = ltspiceSymbolName(component);
58
41
  const lines = [
59
42
  `SYMBOL ${symbolName} ${scaledCoordinate(component.origin.x)} ${scaledCoordinate(component.origin.y)} ${orientation(component.rotation, component.flipped)}`,
@@ -74,8 +57,7 @@ function componentLines(component: Component): readonly string[] {
74
57
  }
75
58
  return lines;
76
59
  }
77
-
78
- function flagLines(component: Component): readonly string[] {
60
+ function flagLines(component) {
79
61
  const terminal = component.terminals[0];
80
62
  const point = terminal?.position ?? component.origin;
81
63
  const name = component.kind === 'ground'
@@ -83,8 +65,7 @@ function flagLines(component: Component): readonly string[] {
83
65
  : propertyText(component.properties.Name) ?? component.name;
84
66
  return [`FLAG ${scaledCoordinate(point.x)} ${scaledCoordinate(point.y)} ${name}`];
85
67
  }
86
-
87
- function jackLines(component: Component): readonly string[] {
68
+ function jackLines(component) {
88
69
  const terminal = component.terminals[0];
89
70
  const point = terminal?.position ?? component.origin;
90
71
  const name = propertyText(component.properties.Name) ?? component.name;
@@ -95,13 +76,11 @@ function jackLines(component: Component): readonly string[] {
95
76
  `IOPIN ${scaledCoordinate(point.x)} ${scaledCoordinate(point.y)} ${polarity}`,
96
77
  ];
97
78
  }
98
-
99
- function labelLines(component: Component): readonly string[] {
79
+ function labelLines(component) {
100
80
  const text = propertyText(component.properties.Text) ?? component.name;
101
81
  return [`TEXT ${scaledCoordinate(component.origin.x)} ${scaledCoordinate(component.origin.y)} Left 2 ;${encodeText(text)}`];
102
82
  }
103
-
104
- function wireLine(wire: Wire): string {
83
+ function wireLine(wire) {
105
84
  return [
106
85
  'WIRE',
107
86
  scaledCoordinate(wire.endpoints[0].x),
@@ -110,8 +89,7 @@ function wireLine(wire: Wire): string {
110
89
  scaledCoordinate(wire.endpoints[1].y),
111
90
  ].join(' ');
112
91
  }
113
-
114
- function ltspiceSymbolName(component: Component): string {
92
+ function ltspiceSymbolName(component) {
115
93
  if (component.sourceTypeName?.startsWith('ltspice:') === true) {
116
94
  const source = component.sourceTypeName.slice('ltspice:'.length);
117
95
  if (source !== 'flag' && source !== 'text' && source.length > 0) {
@@ -120,8 +98,7 @@ function ltspiceSymbolName(component: Component): string {
120
98
  }
121
99
  return KIND_TO_SYMBOL[component.kind] ?? 'unknown';
122
100
  }
123
-
124
- function componentValue(component: Component): string | null {
101
+ function componentValue(component) {
125
102
  const keys = ['Value', 'R', 'Resistance', 'C', 'Capacitance', 'L', 'Inductance', 'V', 'Voltage', 'I', 'Current', 'model', 'Model'];
126
103
  for (const key of keys) {
127
104
  const value = component.properties[key];
@@ -132,13 +109,11 @@ function componentValue(component: Component): string | null {
132
109
  }
133
110
  return null;
134
111
  }
135
-
136
- function propertyText(value: PropertyValue | undefined): string | null {
112
+ function propertyText(value) {
137
113
  const serialized = value === undefined ? null : propertyValueForSourceAttribute(value);
138
114
  return serialized === null || serialized.trim().length === 0 ? null : serialized;
139
115
  }
140
-
141
- function shouldSkipSymattr(key: string): boolean {
116
+ function shouldSkipSymattr(key) {
142
117
  return new Set([
143
118
  'Name',
144
119
  'Value',
@@ -154,16 +129,14 @@ function shouldSkipSymattr(key: string): boolean {
154
129
  'Current',
155
130
  ]).has(key);
156
131
  }
157
-
158
- function orientation(rotation: Rotation, flipped: boolean): string {
132
+ function orientation(rotation, flipped) {
159
133
  const prefix = flipped ? 'M' : 'R';
160
134
  return `${prefix}${rotation * 90}`;
161
135
  }
162
-
163
- function scaledCoordinate(value: number): number {
136
+ function scaledCoordinate(value) {
164
137
  return Math.round(value / LTSPICE_COORD_SCALE);
165
138
  }
166
-
167
- function encodeText(text: string): string {
139
+ function encodeText(text) {
168
140
  return text.replaceAll('\n', '\\n');
169
141
  }
142
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/formats/ltspice/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ComponentKind, Point } from '../../model/types';
2
+ export type SchxTerminalLocal = Readonly<{
3
+ name: string;
4
+ local: Point;
5
+ }>;
6
+ export type SchxComponentDef = Readonly<{
7
+ shortType: string;
8
+ kind: ComponentKind;
9
+ terminals: readonly SchxTerminalLocal[];
10
+ quantityProps: readonly string[];
11
+ }>;
12
+ export declare function shortenSchxType(fullType: string): string;
13
+ export declare function lookupSchxDef(shortType: string): SchxComponentDef | undefined;
14
+ export declare function isSchxRuntimeDescriptor(shortType: string): boolean;
15
+ export declare function defaultDefForKind(kind: ComponentKind): SchxComponentDef | undefined;
16
+ export declare const SCHX_SYMBOL_ELEMENT_TYPE = "Circuit.Symbol, Circuit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
17
+ export declare const SCHX_WIRE_ELEMENT_TYPE = "Circuit.Wire, Circuit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
18
+ export declare function fullSchxType(shortType: string): string;
19
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/formats/schx/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEzE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC,CAAC;AAqXH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAI7E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAEnF;AAGD,eAAO,MAAM,wBAAwB,mFAAwC,CAAC;AAC9E,eAAO,MAAM,sBAAsB,iFAAsC,CAAC;AAE1E,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMtD"}