@vessel-dsp/core 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editor/commands.d.ts +48 -0
- package/dist/editor/commands.d.ts.map +1 -0
- package/{src/editor/commands.ts → dist/editor/commands.js} +44 -91
- package/dist/editor/commands.js.map +1 -0
- package/dist/editor/factory.d.ts +10 -0
- package/dist/editor/factory.d.ts.map +1 -0
- package/{src/editor/factory.ts → dist/editor/factory.js} +11 -27
- package/dist/editor/factory.js.map +1 -0
- package/dist/editor/history.d.ts +29 -0
- package/dist/editor/history.d.ts.map +1 -0
- package/{src/editor/history.ts → dist/editor/history.js} +12 -42
- package/dist/editor/history.js.map +1 -0
- package/{src/editor/index.ts → dist/editor/index.d.ts} +1 -3
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +5 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/layout.d.ts +8 -0
- package/dist/editor/layout.d.ts.map +1 -0
- package/{src/editor/layout.ts → dist/editor/layout.js} +36 -90
- package/dist/editor/layout.js.map +1 -0
- package/dist/formats/circuit-json/serializer.d.ts +86 -0
- package/dist/formats/circuit-json/serializer.d.ts.map +1 -0
- package/{src/formats/circuit-json/serializer.ts → dist/formats/circuit-json/serializer.js} +114 -414
- package/dist/formats/circuit-json/serializer.js.map +1 -0
- package/dist/formats/document.d.ts +64 -0
- package/dist/formats/document.d.ts.map +1 -0
- package/{src/formats/document.ts → dist/formats/document.js} +43 -159
- package/dist/formats/document.js.map +1 -0
- package/dist/formats/interchange/parser.d.ts +3 -0
- package/dist/formats/interchange/parser.d.ts.map +1 -0
- package/{src/formats/interchange/parser.ts → dist/formats/interchange/parser.js} +157 -463
- package/dist/formats/interchange/parser.js.map +1 -0
- package/dist/formats/interchange/serializer.d.ts +9 -0
- package/dist/formats/interchange/serializer.d.ts.map +1 -0
- package/{src/formats/interchange/serializer.ts → dist/formats/interchange/serializer.js} +84 -186
- package/dist/formats/interchange/serializer.js.map +1 -0
- package/dist/formats/ltspice/catalog.d.ts +19 -0
- package/dist/formats/ltspice/catalog.d.ts.map +1 -0
- package/{src/formats/ltspice/catalog.ts → dist/formats/ltspice/catalog.js} +18 -52
- package/dist/formats/ltspice/catalog.js.map +1 -0
- package/dist/formats/ltspice/encoding.d.ts +2 -0
- package/dist/formats/ltspice/encoding.d.ts.map +1 -0
- package/{src/formats/ltspice/encoding.ts → dist/formats/ltspice/encoding.js} +17 -41
- package/dist/formats/ltspice/encoding.js.map +1 -0
- package/dist/formats/ltspice/parser.d.ts +3 -0
- package/dist/formats/ltspice/parser.d.ts.map +1 -0
- package/{src/formats/ltspice/parser.ts → dist/formats/ltspice/parser.js} +39 -141
- package/dist/formats/ltspice/parser.js.map +1 -0
- package/dist/formats/ltspice/serializer.d.ts +7 -0
- package/dist/formats/ltspice/serializer.d.ts.map +1 -0
- package/{src/formats/ltspice/serializer.ts → dist/formats/ltspice/serializer.js} +18 -45
- package/dist/formats/ltspice/serializer.js.map +1 -0
- package/dist/formats/schx/catalog.d.ts +19 -0
- package/dist/formats/schx/catalog.d.ts.map +1 -0
- package/{src/formats/schx/catalog.ts → dist/formats/schx/catalog.js} +48 -101
- package/dist/formats/schx/catalog.js.map +1 -0
- package/dist/formats/schx/parser.d.ts +3 -0
- package/dist/formats/schx/parser.d.ts.map +1 -0
- package/{src/formats/schx/parser.ts → dist/formats/schx/parser.js} +31 -86
- package/dist/formats/schx/parser.js.map +1 -0
- package/dist/formats/schx/runtime-descriptors.d.ts +3 -0
- package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -0
- package/{src/formats/schx/runtime-descriptors.ts → dist/formats/schx/runtime-descriptors.js} +36 -123
- package/dist/formats/schx/runtime-descriptors.js.map +1 -0
- package/dist/formats/schx/serializer.d.ts +5 -0
- package/dist/formats/schx/serializer.d.ts.map +1 -0
- package/{src/formats/schx/serializer.ts → dist/formats/schx/serializer.js} +17 -42
- package/dist/formats/schx/serializer.js.map +1 -0
- package/dist/formats/schx/transforms.d.ts +4 -0
- package/dist/formats/schx/transforms.d.ts.map +1 -0
- package/{src/formats/schx/transforms.ts → dist/formats/schx/transforms.js} +6 -10
- package/dist/formats/schx/transforms.js.map +1 -0
- package/dist/formats/spice/parser.d.ts +3 -0
- package/dist/formats/spice/parser.d.ts.map +1 -0
- package/{src/formats/spice/parser.ts → dist/formats/spice/parser.js} +50 -96
- package/dist/formats/spice/parser.js.map +1 -0
- package/dist/formats/spice/serializer.d.ts +3 -0
- package/dist/formats/spice/serializer.d.ts.map +1 -0
- package/{src/formats/spice/serializer.ts → dist/formats/spice/serializer.js} +8 -13
- package/dist/formats/spice/serializer.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/model/connectivity.d.ts +16 -0
- package/dist/model/connectivity.d.ts.map +1 -0
- package/{src/model/connectivity.ts → dist/model/connectivity.js} +28 -63
- package/dist/model/connectivity.js.map +1 -0
- package/dist/model/netlist.d.ts +24 -0
- package/dist/model/netlist.d.ts.map +1 -0
- package/{src/model/netlist.ts → dist/model/netlist.js} +42 -110
- package/dist/model/netlist.js.map +1 -0
- package/dist/model/properties.d.ts +9 -0
- package/dist/model/properties.d.ts.map +1 -0
- package/{src/model/properties.ts → dist/model/properties.js} +10 -18
- package/dist/model/properties.js.map +1 -0
- package/dist/model/quantity.d.ts +3 -0
- package/dist/model/quantity.d.ts.map +1 -0
- package/{src/model/quantity.ts → dist/model/quantity.js} +7 -30
- package/dist/model/quantity.js.map +1 -0
- package/{src/model/types.ts → dist/model/types.d.ts} +17 -196
- package/dist/model/types.d.ts.map +1 -0
- package/dist/model/types.js +10 -0
- package/dist/model/types.js.map +1 -0
- package/dist/model/validation.d.ts +32 -0
- package/dist/model/validation.d.ts.map +1 -0
- package/{src/model/validation.ts → dist/model/validation.js} +172 -653
- package/dist/model/validation.js.map +1 -0
- package/dist/model/wires.d.ts +3 -0
- package/dist/model/wires.d.ts.map +1 -0
- package/{src/model/wires.ts → dist/model/wires.js} +10 -16
- package/dist/model/wires.js.map +1 -0
- package/dist/panel/extract.d.ts +5 -0
- package/dist/panel/extract.d.ts.map +1 -0
- package/{src/panel/extract.ts → dist/panel/extract.js} +146 -235
- package/dist/panel/extract.js.map +1 -0
- package/dist/panel/index.d.ts +6 -0
- package/dist/panel/index.d.ts.map +1 -0
- package/dist/panel/index.js +5 -0
- package/dist/panel/index.js.map +1 -0
- package/dist/panel/knobs.d.ts +7 -0
- package/dist/panel/knobs.d.ts.map +1 -0
- package/{src/panel/knobs.ts → dist/panel/knobs.js} +7 -18
- package/dist/panel/knobs.js.map +1 -0
- package/dist/panel/protocol.d.ts +9 -0
- package/dist/panel/protocol.d.ts.map +1 -0
- package/{src/panel/protocol.ts → dist/panel/protocol.js} +10 -26
- package/dist/panel/protocol.js.map +1 -0
- package/{src/panel/types.ts → dist/panel/types.d.ts} +50 -89
- package/dist/panel/types.d.ts.map +1 -0
- package/dist/panel/types.js +2 -0
- package/dist/panel/types.js.map +1 -0
- package/dist/preview/bounds.d.ts +12 -0
- package/dist/preview/bounds.d.ts.map +1 -0
- package/{src/preview/bounds.ts → dist/preview/bounds.js} +15 -29
- package/dist/preview/bounds.js.map +1 -0
- package/dist/preview/box-layout.d.ts +4 -0
- package/dist/preview/box-layout.d.ts.map +1 -0
- package/{src/preview/box-layout.ts → dist/preview/box-layout.js} +2 -6
- package/dist/preview/box-layout.js.map +1 -0
- package/dist/preview/colors.d.ts +3 -0
- package/dist/preview/colors.d.ts.map +1 -0
- package/{src/preview/colors.ts → dist/preview/colors.js} +3 -5
- package/dist/preview/colors.js.map +1 -0
- package/dist/preview/hanging.d.ts +8 -0
- package/dist/preview/hanging.d.ts.map +1 -0
- package/{src/preview/hanging.ts → dist/preview/hanging.js} +9 -28
- package/dist/preview/hanging.js.map +1 -0
- package/dist/preview/junctions.d.ts +3 -0
- package/dist/preview/junctions.d.ts.map +1 -0
- package/{src/preview/junctions.ts → dist/preview/junctions.js} +9 -24
- package/dist/preview/junctions.js.map +1 -0
- package/dist/preview/label-layout.d.ts +12 -0
- package/dist/preview/label-layout.d.ts.map +1 -0
- package/{src/preview/label-layout.ts → dist/preview/label-layout.js} +15 -36
- package/dist/preview/label-layout.js.map +1 -0
- package/dist/preview/ports.d.ts +17 -0
- package/dist/preview/ports.d.ts.map +1 -0
- package/{src/preview/ports.ts → dist/preview/ports.js} +10 -37
- package/dist/preview/ports.js.map +1 -0
- package/dist/preview/renderable-wires.d.ts +3 -0
- package/dist/preview/renderable-wires.d.ts.map +1 -0
- package/{src/preview/renderable-wires.ts → dist/preview/renderable-wires.js} +12 -29
- package/dist/preview/renderable-wires.js.map +1 -0
- package/dist/preview/routing.d.ts +4 -0
- package/dist/preview/routing.d.ts.map +1 -0
- package/dist/preview/routing.js +13 -0
- package/dist/preview/routing.js.map +1 -0
- package/dist/preview/snap.d.ts +9 -0
- package/dist/preview/snap.d.ts.map +1 -0
- package/{src/preview/snap.ts → dist/preview/snap.js} +9 -31
- package/dist/preview/snap.js.map +1 -0
- package/dist/preview/symbols/svg-content.d.ts +7 -0
- package/dist/preview/symbols/svg-content.d.ts.map +1 -0
- package/{src/preview/symbols/svg-content.ts → dist/preview/symbols/svg-content.js} +3 -6
- package/dist/preview/symbols/svg-content.js.map +1 -0
- package/dist/preview/symbols.d.ts +7 -0
- package/dist/preview/symbols.d.ts.map +1 -0
- package/{src/preview/symbols.ts → dist/preview/symbols.js} +18 -43
- package/dist/preview/symbols.js.map +1 -0
- package/dist/preview/wire-chains.d.ts +4 -0
- package/dist/preview/wire-chains.d.ts.map +1 -0
- package/{src/preview/wire-chains.ts → dist/preview/wire-chains.js} +37 -37
- package/dist/preview/wire-chains.js.map +1 -0
- package/package.json +3 -3
- package/src/index.ts +0 -255
- package/src/panel/index.ts +0 -39
- package/src/preview/routing.ts +0 -15
- package/src/preview/symbols/analog-switch.svg +0 -17
- package/src/preview/symbols/battery.svg +0 -16
- package/src/preview/symbols/bbd.svg +0 -21
- package/src/preview/symbols/bjt-npn.svg +0 -16
- package/src/preview/symbols/bjt-pnp.svg +0 -17
- package/src/preview/symbols/capacitor-electrolytic.svg +0 -13
- package/src/preview/symbols/capacitor.svg +0 -12
- package/src/preview/symbols/current-source.svg +0 -14
- package/src/preview/symbols/delay-ic.svg +0 -22
- package/src/preview/symbols/diode-schottky.svg +0 -12
- package/src/preview/symbols/diode-zener.svg +0 -12
- package/src/preview/symbols/diode.svg +0 -13
- package/src/preview/symbols/flipflop.svg +0 -20
- package/src/preview/symbols/ground.svg +0 -12
- package/src/preview/symbols/ic-block.svg +0 -20
- package/src/preview/symbols/ic.svg +0 -19
- package/src/preview/symbols/inductor.svg +0 -11
- package/src/preview/symbols/jack-input.svg +0 -16
- package/src/preview/symbols/jack-output.svg +0 -16
- package/src/preview/symbols/jfet-junction-n.svg +0 -17
- package/src/preview/symbols/jfet-n.svg +0 -17
- package/src/preview/symbols/jfet-p.svg +0 -17
- package/src/preview/symbols/label.svg +0 -8
- package/src/preview/symbols/led.svg +0 -18
- package/src/preview/symbols/mosfet-n.svg +0 -21
- package/src/preview/symbols/mosfet-p.svg +0 -21
- package/src/preview/symbols/named-wire.svg +0 -11
- package/src/preview/symbols/opamp.svg +0 -21
- package/src/preview/symbols/optocoupler.svg +0 -30
- package/src/preview/symbols/ota.svg +0 -20
- package/src/preview/symbols/pentode.svg +0 -25
- package/src/preview/symbols/photoresistor.svg +0 -19
- package/src/preview/symbols/port.svg +0 -8
- package/src/preview/symbols/potentiometer.svg +0 -15
- package/src/preview/symbols/power-amp.svg +0 -20
- package/src/preview/symbols/rail.svg +0 -11
- package/src/preview/symbols/regulator.svg +0 -13
- package/src/preview/symbols/relay.svg +0 -20
- package/src/preview/symbols/resistor.svg +0 -11
- package/src/preview/symbols/switch-3pdt.svg +0 -32
- package/src/preview/symbols/switch-rotary.svg +0 -23
- package/src/preview/symbols/switch-spdt.svg +0 -16
- package/src/preview/symbols/switch-spst.svg +0 -14
- package/src/preview/symbols/switch-toggle.svg +0 -14
- package/src/preview/symbols/transformer.svg +0 -17
- package/src/preview/symbols/triode.svg +0 -17
- package/src/preview/symbols/tube-diode.svg +0 -13
- package/src/preview/symbols/unsupported.svg +0 -8
- package/src/preview/symbols/variable-resistor.svg +0 -13
- 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
|
|
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
|
|
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
|
|
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 @@
|
|
|
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
|
|
5
|
+
export function decodeLtspiceBytes(bytes) {
|
|
6
6
|
try {
|
|
7
7
|
return decodeUtf8Strict(bytes);
|
|
8
|
-
}
|
|
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
|
-
|
|
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
|
-
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
55
54
|
codePoints.push(byte);
|
|
56
55
|
}
|
|
57
56
|
}
|
|
58
|
-
|
|
59
57
|
return codePointsToString(codePoints);
|
|
60
58
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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 @@
|
|
|
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"}
|