@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,5 +1,3 @@
1
- import type { ComponentKind, Point } from '../../model/types';
2
-
3
1
  // LTspice's native grid uses pin spacings of ~32–64 units per component
4
2
  // (resistor pins 64 apart, BJT pins 64 apart). The schematic renderer assumes
5
3
  // components fit within a ±20 box centered on origin, so we scale every LTspice
@@ -9,71 +7,47 @@ import type { ComponentKind, Point } from '../../model/types';
9
7
  // local offsets here and to all parsed Points in the parser; connectivity is
10
8
  // preserved because both sides are scaled identically.
11
9
  export const LTSPICE_COORD_SCALE = 0.5;
12
-
13
- export type LtspiceTerminalDef = Readonly<{ name: string; local: Point }>;
14
-
15
- export type LtspiceSymbolDef = Readonly<{
16
- symbolName: string;
17
- kind: ComponentKind;
18
- terminals: readonly LtspiceTerminalDef[];
19
- valueProperty: string | null;
20
- modelFromValue: boolean;
21
- // When true, derive `properties.model` from the basename of the symbol path
22
- // (e.g. SYMBOL Opamps\LM308 → model = "LM308") instead of from SYMATTR Value.
23
- // LTspice manufacturer-specific opamp symbols encode the model in the path,
24
- // not in a Value attribute, so this is how we capture the part number.
25
- modelFromSymbolPath?: boolean;
26
- }>;
27
-
28
10
  // Per-symbol pin layouts derived empirically from the cushychicken corpus
29
11
  // (and confirmed against LTspice's bundled .asy files).
30
12
  // Each layout matches the actual PIN positions in res.asy / cap.asy / etc.,
31
13
  // so wires drawn by LTspice land exactly on our computed terminal positions.
32
- const RES_PINS: readonly LtspiceTerminalDef[] = [
14
+ const RES_PINS = [
33
15
  { name: 'a', local: { x: 16, y: 16 } },
34
16
  { name: 'b', local: { x: 16, y: 96 } },
35
17
  ];
36
-
37
- const CAP_PINS: readonly LtspiceTerminalDef[] = [
18
+ const CAP_PINS = [
38
19
  { name: 'a', local: { x: 16, y: 0 } },
39
20
  { name: 'b', local: { x: 16, y: 64 } },
40
21
  ];
41
-
42
- const IND_PINS: readonly LtspiceTerminalDef[] = [
22
+ const IND_PINS = [
43
23
  { name: 'a', local: { x: 16, y: 0 } },
44
24
  { name: 'b', local: { x: 16, y: 80 } },
45
25
  ];
46
-
47
- const DIODE_PINS: readonly LtspiceTerminalDef[] = [
26
+ const DIODE_PINS = [
48
27
  { name: 'anode', local: { x: 16, y: 0 } },
49
28
  { name: 'cathode', local: { x: 16, y: 64 } },
50
29
  ];
51
-
52
- const VOLTAGE_SOURCE_PINS: readonly LtspiceTerminalDef[] = [
30
+ const VOLTAGE_SOURCE_PINS = [
53
31
  { name: '+', local: { x: 0, y: 16 } },
54
32
  { name: '-', local: { x: 0, y: 96 } },
55
33
  ];
56
-
57
- const BJT_PINS: readonly LtspiceTerminalDef[] = [
34
+ const BJT_PINS = [
58
35
  { name: 'collector', local: { x: 64, y: 0 } },
59
36
  { name: 'base', local: { x: 0, y: 48 } },
60
37
  { name: 'emitter', local: { x: 64, y: 96 } },
61
38
  ];
62
-
63
- const JFET_PINS: readonly LtspiceTerminalDef[] = [
39
+ const JFET_PINS = [
64
40
  { name: 'drain', local: { x: 64, y: 0 } },
65
41
  { name: 'gate', local: { x: 0, y: 32 } },
66
42
  { name: 'source', local: { x: 64, y: 64 } },
67
43
  ];
68
-
69
- const MOSFET_PINS: readonly LtspiceTerminalDef[] = [
44
+ const MOSFET_PINS = [
70
45
  { name: 'drain', local: { x: 64, y: 0 } },
71
46
  { name: 'gate', local: { x: 0, y: 32 } },
72
47
  { name: 'source', local: { x: 64, y: 64 } },
73
48
  { name: 'body', local: { x: 32, y: 32 } },
74
49
  ];
75
-
76
- const DEFS: readonly LtspiceSymbolDef[] = [
50
+ const DEFS = [
77
51
  { symbolName: 'res', kind: 'resistor', terminals: RES_PINS, valueProperty: 'R', modelFromValue: false },
78
52
  { symbolName: 'res2', kind: 'resistor', terminals: RES_PINS, valueProperty: 'R', modelFromValue: false },
79
53
  { symbolName: 'cap', kind: 'capacitor', terminals: CAP_PINS, valueProperty: 'C', modelFromValue: false },
@@ -92,15 +66,13 @@ const DEFS: readonly LtspiceSymbolDef[] = [
92
66
  { symbolName: 'nmos', kind: 'mosfet', terminals: MOSFET_PINS, valueProperty: null, modelFromValue: true },
93
67
  { symbolName: 'pmos', kind: 'mosfet', terminals: MOSFET_PINS, valueProperty: null, modelFromValue: true },
94
68
  ];
95
-
96
- const BY_SYMBOL = new Map<string, LtspiceSymbolDef>(DEFS.map((def) => [def.symbolName, def]));
97
-
69
+ const BY_SYMBOL = new Map(DEFS.map((def) => [def.symbolName, def]));
98
70
  // LTspice manufacturer opamps live under `Opamps\<model>` or `OpAmps/<model>` paths
99
71
  // (mixed case, both separators). Without the corresponding .asy files we don't know
100
72
  // per-model pin geometry, so the generic fallback uses an empty terminal list and
101
73
  // records the model name via modelFromSymbolPath. Wire-snapping for opamp pins is
102
74
  // best-effort until a future change parses .asy pin positions.
103
- const GENERIC_OPAMP_DEF: LtspiceSymbolDef = {
75
+ const GENERIC_OPAMP_DEF = {
104
76
  symbolName: '_generic-opamp',
105
77
  kind: 'opamp',
106
78
  terminals: [],
@@ -108,27 +80,23 @@ const GENERIC_OPAMP_DEF: LtspiceSymbolDef = {
108
80
  modelFromValue: false,
109
81
  modelFromSymbolPath: true,
110
82
  };
111
-
112
- export function normalizeLtspiceSymbolName(symbolName: string): string {
83
+ export function normalizeLtspiceSymbolName(symbolName) {
113
84
  const pathParts = symbolName.replaceAll('\\', '/').split('/');
114
85
  const base = pathParts[pathParts.length - 1] ?? symbolName;
115
86
  return base.replace(/\.asy$/i, '').toLowerCase();
116
87
  }
117
-
118
88
  // Returns the model name from a path-style symbol identifier, preserving the
119
89
  // original case. e.g. "Opamps\\LM308" -> "LM308", "OpAmps/AD820.asy" -> "AD820".
120
- export function extractModelFromSymbolPath(symbolName: string): string {
90
+ export function extractModelFromSymbolPath(symbolName) {
121
91
  const parts = symbolName.replaceAll('\\', '/').split('/');
122
92
  const last = parts[parts.length - 1] ?? symbolName;
123
93
  return last.replace(/\.asy$/i, '');
124
94
  }
125
-
126
- function isOpampPath(symbolName: string): boolean {
95
+ function isOpampPath(symbolName) {
127
96
  const normalized = symbolName.replaceAll('\\', '/').toLowerCase();
128
97
  return /(^|\/)opamps\//.test(normalized);
129
98
  }
130
-
131
- export function lookupLtspiceSymbolDef(symbolName: string): LtspiceSymbolDef | undefined {
99
+ export function lookupLtspiceSymbolDef(symbolName) {
132
100
  const direct = BY_SYMBOL.get(normalizeLtspiceSymbolName(symbolName));
133
101
  if (direct !== undefined) {
134
102
  return direct;
@@ -138,8 +106,7 @@ export function lookupLtspiceSymbolDef(symbolName: string): LtspiceSymbolDef | u
138
106
  }
139
107
  return undefined;
140
108
  }
141
-
142
- export function mapLtspiceTerminal(local: Point, placement: Point, orientation: string): Point {
109
+ export function mapLtspiceTerminal(local, placement, orientation) {
143
110
  // Scale the per-symbol local offset; placement is scaled upstream by the parser.
144
111
  const sx = local.x * LTSPICE_COORD_SCALE;
145
112
  const sy = local.y * LTSPICE_COORD_SCALE;
@@ -147,7 +114,6 @@ export function mapLtspiceTerminal(local: Point, placement: Point, orientation:
147
114
  const degrees = parseOrientationDegrees(orientation);
148
115
  const x = mirrored ? -sx : sx;
149
116
  const y = sy;
150
-
151
117
  // LTspice's R90 rotates the symbol 90° clockwise on screen. Because the
152
118
  // screen y axis points down in LTspice, on-screen-CW corresponds to the
153
119
  // math transform (x, y) → (-y, x), and R270 (CCW on screen) is (y, -x).
@@ -165,8 +131,7 @@ export function mapLtspiceTerminal(local: Point, placement: Point, orientation:
165
131
  return { x: placement.x + y, y: placement.y - x };
166
132
  }
167
133
  }
168
-
169
- function parseOrientationDegrees(orientation: string): 0 | 90 | 180 | 270 {
134
+ function parseOrientationDegrees(orientation) {
170
135
  const match = orientation.toUpperCase().match(/[MR](0|90|180|270)$/);
171
136
  if (match?.[1] === '90') {
172
137
  return 90;
@@ -179,3 +144,4 @@ function parseOrientationDegrees(orientation: string): 0 | 90 | 180 | 270 {
179
144
  }
180
145
  return 0;
181
146
  }
147
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/formats/ltspice/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function decodeLtspiceBytes(bytes: Uint8Array): string;
2
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/formats/ltspice/encoding.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAM5D"}
@@ -2,15 +2,15 @@
2
2
  // 0xB5 (µ) appear that aren't valid UTF-8. Strict UTF-8 decoding throws on those;
3
3
  // fall back to Windows-1252 (a superset of Latin-1 within the printable range we
4
4
  // care about). This is the same heuristic many cross-platform parsers use.
5
- export function decodeLtspiceBytes(bytes: Uint8Array): string {
5
+ export function decodeLtspiceBytes(bytes) {
6
6
  try {
7
7
  return decodeUtf8Strict(bytes);
8
- } catch {
8
+ }
9
+ catch {
9
10
  return decodeWindows1252(bytes);
10
11
  }
11
12
  }
12
-
13
- const WINDOWS_1252_CONTROL_CODEPOINTS: readonly number[] = [
13
+ const WINDOWS_1252_CONTROL_CODEPOINTS = [
14
14
  0x20ac,
15
15
  0x0081,
16
16
  0x201a,
@@ -44,108 +44,84 @@ const WINDOWS_1252_CONTROL_CODEPOINTS: readonly number[] = [
44
44
  0x017e,
45
45
  0x0178,
46
46
  ];
47
-
48
- function decodeWindows1252(bytes: Uint8Array): string {
49
- const codePoints: number[] = [];
50
-
47
+ function decodeWindows1252(bytes) {
48
+ const codePoints = [];
51
49
  for (const byte of bytes) {
52
50
  if (byte >= 0x80 && byte <= 0x9f) {
53
51
  codePoints.push(WINDOWS_1252_CONTROL_CODEPOINTS[byte - 0x80] ?? byte);
54
- } else {
52
+ }
53
+ else {
55
54
  codePoints.push(byte);
56
55
  }
57
56
  }
58
-
59
57
  return codePointsToString(codePoints);
60
58
  }
61
-
62
- function decodeUtf8Strict(bytes: Uint8Array): string {
63
- const codePoints: number[] = [];
64
-
65
- for (let index = 0; index < bytes.length; ) {
59
+ function decodeUtf8Strict(bytes) {
60
+ const codePoints = [];
61
+ for (let index = 0; index < bytes.length;) {
66
62
  const first = requireByte(bytes, index);
67
-
68
63
  if (first <= 0x7f) {
69
64
  codePoints.push(first);
70
65
  index += 1;
71
66
  continue;
72
67
  }
73
-
74
68
  if (first >= 0xc2 && first <= 0xdf) {
75
69
  const second = continuationBits(requireByte(bytes, index + 1));
76
70
  codePoints.push(((first & 0x1f) << 6) | second);
77
71
  index += 2;
78
72
  continue;
79
73
  }
80
-
81
74
  if (first >= 0xe0 && first <= 0xef) {
82
75
  const secondByte = requireByte(bytes, index + 1);
83
76
  const second = continuationBits(secondByte);
84
77
  const third = continuationBits(requireByte(bytes, index + 2));
85
-
86
78
  if (first === 0xe0 && secondByte < 0xa0) {
87
79
  throw new Error('Overlong UTF-8 sequence');
88
80
  }
89
-
90
81
  if (first === 0xed && secondByte >= 0xa0) {
91
82
  throw new Error('UTF-8 surrogate sequence');
92
83
  }
93
-
94
84
  codePoints.push(((first & 0x0f) << 12) | (second << 6) | third);
95
85
  index += 3;
96
86
  continue;
97
87
  }
98
-
99
88
  if (first >= 0xf0 && first <= 0xf4) {
100
89
  const secondByte = requireByte(bytes, index + 1);
101
90
  const second = continuationBits(secondByte);
102
91
  const third = continuationBits(requireByte(bytes, index + 2));
103
92
  const fourth = continuationBits(requireByte(bytes, index + 3));
104
-
105
93
  if (first === 0xf0 && secondByte < 0x90) {
106
94
  throw new Error('Overlong UTF-8 sequence');
107
95
  }
108
-
109
96
  if (first === 0xf4 && secondByte > 0x8f) {
110
97
  throw new Error('UTF-8 code point out of range');
111
98
  }
112
-
113
- codePoints.push(
114
- ((first & 0x07) << 18) | (second << 12) | (third << 6) | fourth,
115
- );
99
+ codePoints.push(((first & 0x07) << 18) | (second << 12) | (third << 6) | fourth);
116
100
  index += 4;
117
101
  continue;
118
102
  }
119
-
120
103
  throw new Error('Invalid UTF-8 sequence');
121
104
  }
122
-
123
105
  return codePointsToString(codePoints);
124
106
  }
125
-
126
- function requireByte(bytes: Uint8Array, index: number): number {
107
+ function requireByte(bytes, index) {
127
108
  const byte = bytes[index];
128
109
  if (byte === undefined) {
129
110
  throw new Error('Truncated byte sequence');
130
111
  }
131
-
132
112
  return byte;
133
113
  }
134
-
135
- function continuationBits(byte: number): number {
114
+ function continuationBits(byte) {
136
115
  if ((byte & 0xc0) !== 0x80) {
137
116
  throw new Error('Invalid UTF-8 continuation byte');
138
117
  }
139
-
140
118
  return byte & 0x3f;
141
119
  }
142
-
143
- function codePointsToString(codePoints: readonly number[]): string {
144
- const chunks: string[] = [];
145
-
120
+ function codePointsToString(codePoints) {
121
+ const chunks = [];
146
122
  for (let index = 0; index < codePoints.length; index += 8192) {
147
123
  chunks.push(String.fromCodePoint(...codePoints.slice(index, index + 8192)));
148
124
  }
149
-
150
125
  return chunks.join('');
151
126
  }
127
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../../src/formats/ltspice/encoding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CircuitDocument } from '../../model/types';
2
+ export declare function parseLtspiceAsc(source: string | Uint8Array): CircuitDocument;
3
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/ltspice/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,eAAe,EAOlB,MAAM,mBAAmB,CAAC;AAwC3B,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,eAAe,CAmG5E"}