@circuit-forge/eda-core 1.0.0

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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/dist/erc/checker.d.ts +15 -0
  4. package/dist/erc/checker.d.ts.map +1 -0
  5. package/dist/erc/checker.js +267 -0
  6. package/dist/erc/checker.js.map +1 -0
  7. package/dist/erc/codes.d.ts +15 -0
  8. package/dist/erc/codes.d.ts.map +1 -0
  9. package/dist/erc/codes.js +48 -0
  10. package/dist/erc/codes.js.map +1 -0
  11. package/dist/erc/index.d.ts +7 -0
  12. package/dist/erc/index.d.ts.map +1 -0
  13. package/dist/erc/index.js +14 -0
  14. package/dist/erc/index.js.map +1 -0
  15. package/dist/index.d.ts +20 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +79 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/netlist/generator.d.ts +32 -0
  20. package/dist/netlist/generator.d.ts.map +1 -0
  21. package/dist/netlist/generator.js +183 -0
  22. package/dist/netlist/generator.js.map +1 -0
  23. package/dist/netlist/index.d.ts +6 -0
  24. package/dist/netlist/index.d.ts.map +1 -0
  25. package/dist/netlist/index.js +20 -0
  26. package/dist/netlist/index.js.map +1 -0
  27. package/dist/netlist/sanitizer.d.ts +45 -0
  28. package/dist/netlist/sanitizer.d.ts.map +1 -0
  29. package/dist/netlist/sanitizer.js +145 -0
  30. package/dist/netlist/sanitizer.js.map +1 -0
  31. package/dist/parser/csv-parser.d.ts +27 -0
  32. package/dist/parser/csv-parser.d.ts.map +1 -0
  33. package/dist/parser/csv-parser.js +198 -0
  34. package/dist/parser/csv-parser.js.map +1 -0
  35. package/dist/parser/index.d.ts +6 -0
  36. package/dist/parser/index.d.ts.map +1 -0
  37. package/dist/parser/index.js +15 -0
  38. package/dist/parser/index.js.map +1 -0
  39. package/dist/parser/netlist-parser.d.ts +25 -0
  40. package/dist/parser/netlist-parser.d.ts.map +1 -0
  41. package/dist/parser/netlist-parser.js +260 -0
  42. package/dist/parser/netlist-parser.js.map +1 -0
  43. package/dist/schemas/analysis.schema.d.ts +298 -0
  44. package/dist/schemas/analysis.schema.d.ts.map +1 -0
  45. package/dist/schemas/analysis.schema.js +91 -0
  46. package/dist/schemas/analysis.schema.js.map +1 -0
  47. package/dist/schemas/circuit.schema.d.ts +405 -0
  48. package/dist/schemas/circuit.schema.d.ts.map +1 -0
  49. package/dist/schemas/circuit.schema.js +121 -0
  50. package/dist/schemas/circuit.schema.js.map +1 -0
  51. package/dist/types/analysis.d.ts +61 -0
  52. package/dist/types/analysis.d.ts.map +1 -0
  53. package/dist/types/analysis.js +119 -0
  54. package/dist/types/analysis.js.map +1 -0
  55. package/dist/types/circuit.d.ts +94 -0
  56. package/dist/types/circuit.d.ts.map +1 -0
  57. package/dist/types/circuit.js +32 -0
  58. package/dist/types/circuit.js.map +1 -0
  59. package/dist/types/erc.d.ts +68 -0
  60. package/dist/types/erc.d.ts.map +1 -0
  61. package/dist/types/erc.js +33 -0
  62. package/dist/types/erc.js.map +1 -0
  63. package/dist/types/simulation.d.ts +61 -0
  64. package/dist/types/simulation.d.ts.map +1 -0
  65. package/dist/types/simulation.js +43 -0
  66. package/dist/types/simulation.js.map +1 -0
  67. package/dist/utils/index.d.ts +5 -0
  68. package/dist/utils/index.d.ts.map +1 -0
  69. package/dist/utils/index.js +14 -0
  70. package/dist/utils/index.js.map +1 -0
  71. package/dist/utils/unit-parser.d.ts +47 -0
  72. package/dist/utils/unit-parser.d.ts.map +1 -0
  73. package/dist/utils/unit-parser.js +229 -0
  74. package/dist/utils/unit-parser.js.map +1 -0
  75. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,IAAI,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuB9D;AAWD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA0CrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBtD"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Analysis configuration types for SPICE simulations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAnalysisType = getAnalysisType;
7
+ exports.analysisToSpice = analysisToSpice;
8
+ exports.parseSpiceValue = parseSpiceValue;
9
+ exports.formatSpiceValue = formatSpiceValue;
10
+ /**
11
+ * Get the analysis type string
12
+ */
13
+ function getAnalysisType(config) {
14
+ return config.type;
15
+ }
16
+ /**
17
+ * Convert analysis config to SPICE command
18
+ */
19
+ function analysisToSpice(config) {
20
+ switch (config.type) {
21
+ case 'tran': {
22
+ const step = config.stepTime || calculateDefaultStep(config.stopTime);
23
+ const start = config.startTime || '0';
24
+ let cmd = `.tran ${step} ${config.stopTime} ${start}`;
25
+ if (config.maxStep) {
26
+ cmd += ` ${config.maxStep}`;
27
+ }
28
+ if (config.uic) {
29
+ cmd += ' uic';
30
+ }
31
+ return cmd;
32
+ }
33
+ case 'ac':
34
+ return `.ac ${config.variation} ${config.points} ${config.startFreq} ${config.stopFreq}`;
35
+ case 'dc':
36
+ return `.dc ${config.source} ${config.startVal} ${config.stopVal} ${config.increment}`;
37
+ case 'op':
38
+ return '.op';
39
+ default:
40
+ throw new Error(`Unknown analysis type: ${config.type}`);
41
+ }
42
+ }
43
+ /**
44
+ * Calculate a reasonable default step time based on stop time
45
+ */
46
+ function calculateDefaultStep(stopTime) {
47
+ // Parse the stop time and return 1/1000th as default step
48
+ const parsed = parseSpiceValue(stopTime);
49
+ return formatSpiceValue(parsed / 1000);
50
+ }
51
+ /**
52
+ * Parse a SPICE value string to a number
53
+ */
54
+ function parseSpiceValue(value) {
55
+ const suffixes = {
56
+ T: 1e12,
57
+ G: 1e9,
58
+ MEG: 1e6,
59
+ K: 1e3,
60
+ k: 1e3,
61
+ M: 1e-3, // Note: M alone usually means milli in SPICE
62
+ m: 1e-3,
63
+ U: 1e-6,
64
+ u: 1e-6,
65
+ N: 1e-9,
66
+ n: 1e-9,
67
+ P: 1e-12,
68
+ p: 1e-12,
69
+ F: 1e-15,
70
+ f: 1e-15,
71
+ };
72
+ const match = value.match(/^([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)\s*([a-zA-Z]*)/);
73
+ if (!match) {
74
+ throw new Error(`Invalid SPICE value: ${value}`);
75
+ }
76
+ const numericPart = parseFloat(match[1] || '0');
77
+ const suffix = match[2] || '';
78
+ if (suffix === '') {
79
+ return numericPart;
80
+ }
81
+ // Check for MEG first (case insensitive)
82
+ if (suffix.toUpperCase() === 'MEG') {
83
+ return numericPart * 1e6;
84
+ }
85
+ const multiplier = suffixes[suffix] || suffixes[suffix.toUpperCase()];
86
+ if (multiplier === undefined) {
87
+ throw new Error(`Unknown SPICE suffix: ${suffix}`);
88
+ }
89
+ return numericPart * multiplier;
90
+ }
91
+ /**
92
+ * Format a number as a SPICE value string
93
+ */
94
+ function formatSpiceValue(value) {
95
+ const absValue = Math.abs(value);
96
+ const sign = value < 0 ? '-' : '';
97
+ if (absValue >= 1e12)
98
+ return `${sign}${absValue / 1e12}T`;
99
+ if (absValue >= 1e9)
100
+ return `${sign}${absValue / 1e9}G`;
101
+ if (absValue >= 1e6)
102
+ return `${sign}${absValue / 1e6}MEG`;
103
+ if (absValue >= 1e3)
104
+ return `${sign}${absValue / 1e3}k`;
105
+ if (absValue >= 1)
106
+ return `${sign}${absValue}`;
107
+ if (absValue >= 1e-3)
108
+ return `${sign}${absValue * 1e3}m`;
109
+ if (absValue >= 1e-6)
110
+ return `${sign}${absValue * 1e6}u`;
111
+ if (absValue >= 1e-9)
112
+ return `${sign}${absValue * 1e9}n`;
113
+ if (absValue >= 1e-12)
114
+ return `${sign}${absValue * 1e12}p`;
115
+ if (absValue >= 1e-15)
116
+ return `${sign}${absValue * 1e15}f`;
117
+ return `${sign}${absValue}`;
118
+ }
119
+ //# sourceMappingURL=analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Circuit representation types
3
+ * These types define the canonical format for circuit data
4
+ */
5
+ /**
6
+ * Main circuit JSON structure - the canonical representation
7
+ */
8
+ export interface CircuitJson {
9
+ version: string;
10
+ components: Component[];
11
+ nets: Net[];
12
+ metadata?: CircuitMetadata;
13
+ }
14
+ /**
15
+ * Circuit metadata
16
+ */
17
+ export interface CircuitMetadata {
18
+ name?: string;
19
+ description?: string;
20
+ author?: string;
21
+ createdAt?: string;
22
+ updatedAt?: string;
23
+ }
24
+ /**
25
+ * Component types supported in MVP
26
+ */
27
+ export type ComponentType = 'resistor' | 'capacitor' | 'inductor' | 'voltage_source' | 'current_source' | 'diode' | 'ground';
28
+ /**
29
+ * Component definition
30
+ */
31
+ export interface Component {
32
+ id: string;
33
+ type: ComponentType;
34
+ designator: string;
35
+ value?: string;
36
+ model?: string;
37
+ pins: PinConnection[];
38
+ properties?: Record<string, unknown>;
39
+ }
40
+ /**
41
+ * Pin connection - maps a component pin to a net
42
+ */
43
+ export interface PinConnection {
44
+ pinId: string;
45
+ netId: string;
46
+ }
47
+ /**
48
+ * Net (electrical connection)
49
+ */
50
+ export interface Net {
51
+ id: string;
52
+ name: string;
53
+ isGround?: boolean;
54
+ }
55
+ /**
56
+ * UI JSON structure for layout information
57
+ */
58
+ export interface UiJson {
59
+ viewport?: Viewport;
60
+ positions?: Record<string, Position>;
61
+ wires?: Wire[];
62
+ }
63
+ /**
64
+ * Viewport state
65
+ */
66
+ export interface Viewport {
67
+ x: number;
68
+ y: number;
69
+ zoom: number;
70
+ }
71
+ /**
72
+ * Component position
73
+ */
74
+ export interface Position {
75
+ x: number;
76
+ y: number;
77
+ rotation?: number;
78
+ }
79
+ /**
80
+ * Wire path for visual routing
81
+ */
82
+ export interface Wire {
83
+ netId: string;
84
+ points: Position[];
85
+ }
86
+ /**
87
+ * Component pin definitions for each component type
88
+ */
89
+ export declare const COMPONENT_PINS: Record<ComponentType, string[]>;
90
+ /**
91
+ * SPICE element prefixes for each component type
92
+ */
93
+ export declare const SPICE_PREFIXES: Record<ComponentType, string>;
94
+ //# sourceMappingURL=circuit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit.d.ts","sourceRoot":"","sources":["../../src/types/circuit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACnB,UAAU,GACV,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,gBAAgB,GAChB,OAAO,GACP,QAAQ,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAQ1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAQxD,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Circuit representation types
4
+ * These types define the canonical format for circuit data
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SPICE_PREFIXES = exports.COMPONENT_PINS = void 0;
8
+ /**
9
+ * Component pin definitions for each component type
10
+ */
11
+ exports.COMPONENT_PINS = {
12
+ resistor: ['1', '2'],
13
+ capacitor: ['1', '2'],
14
+ inductor: ['1', '2'],
15
+ voltage_source: ['+', '-'],
16
+ current_source: ['+', '-'],
17
+ diode: ['anode', 'cathode'],
18
+ ground: ['1'],
19
+ };
20
+ /**
21
+ * SPICE element prefixes for each component type
22
+ */
23
+ exports.SPICE_PREFIXES = {
24
+ resistor: 'R',
25
+ capacitor: 'C',
26
+ inductor: 'L',
27
+ voltage_source: 'V',
28
+ current_source: 'I',
29
+ diode: 'D',
30
+ ground: '', // Ground is a special case (node 0)
31
+ };
32
+ //# sourceMappingURL=circuit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit.js","sourceRoot":"","sources":["../../src/types/circuit.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAoGH;;GAEG;AACU,QAAA,cAAc,GAAoC;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACpB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACpB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1B,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC3B,MAAM,EAAE,CAAC,GAAG,CAAC;CAChB,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAkC;IACzD,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,GAAG;IACnB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,EAAE,EAAE,oCAAoC;CACnD,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ERC (Electrical Rule Check) Types
3
+ */
4
+ /**
5
+ * ERC error codes enumeration
6
+ */
7
+ export declare enum ErcCode {
8
+ NO_GROUND = "ERC001",
9
+ MULTIPLE_GROUNDS = "ERC002",
10
+ FLOATING_NODE = "ERC010",
11
+ FLOATING_INPUT = "ERC011",
12
+ VOLTAGE_SOURCE_SHORT = "ERC020",
13
+ PARALLEL_VOLTAGE_SOURCES = "ERC021",
14
+ MISSING_VALUE = "ERC030",
15
+ INVALID_VALUE = "ERC031",
16
+ PIN_COUNT_MISMATCH = "ERC032",
17
+ MISSING_MODEL = "ERC033",
18
+ UNCONNECTED_NET = "ERC040",
19
+ NET_HAS_SINGLE_PIN = "ERC041",
20
+ EMPTY_CIRCUIT = "ERC050",
21
+ NO_ACTIVE_COMPONENTS = "ERC051"
22
+ }
23
+ /**
24
+ * ERC severity levels
25
+ */
26
+ export type ErcSeverity = 'error' | 'warning' | 'info';
27
+ /**
28
+ * Individual ERC issue
29
+ */
30
+ export interface ErcIssue {
31
+ /** ERC error code */
32
+ code: ErcCode;
33
+ /** Severity level */
34
+ severity: ErcSeverity;
35
+ /** Human-readable message */
36
+ message: string;
37
+ /** IDs of related components or nets */
38
+ relatedIds: string[];
39
+ }
40
+ /**
41
+ * ERC check result
42
+ */
43
+ export interface ErcResult {
44
+ /** Whether the circuit passed all error-level checks */
45
+ passed: boolean;
46
+ /** List of all issues found */
47
+ issues: ErcIssue[];
48
+ /** Summary counts */
49
+ summary: {
50
+ errors: number;
51
+ warnings: number;
52
+ infos: number;
53
+ };
54
+ }
55
+ /**
56
+ * ERC configuration options
57
+ */
58
+ export interface ErcConfig {
59
+ /** Whether to check for floating nodes */
60
+ checkFloatingNodes?: boolean;
61
+ /** Whether to require a ground reference */
62
+ requireGround?: boolean;
63
+ /** Whether to check for missing models */
64
+ checkMissingModels?: boolean;
65
+ /** Custom severity overrides */
66
+ severityOverrides?: Partial<Record<ErcCode, ErcSeverity>>;
67
+ }
68
+ //# sourceMappingURL=erc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc.d.ts","sourceRoot":"","sources":["../../src/types/erc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,OAAO;IAEf,SAAS,WAAW;IACpB,gBAAgB,WAAW;IAG3B,aAAa,WAAW;IACxB,cAAc,WAAW;IAGzB,oBAAoB,WAAW;IAC/B,wBAAwB,WAAW;IAGnC,aAAa,WAAW;IACxB,aAAa,WAAW;IACxB,kBAAkB,WAAW;IAC7B,aAAa,WAAW;IAGxB,eAAe,WAAW;IAC1B,kBAAkB,WAAW;IAG7B,aAAa,WAAW;IACxB,oBAAoB,WAAW;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,WAAW,CAAC;IAEtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEhB,wCAAwC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,wDAAwD;IACxD,MAAM,EAAE,OAAO,CAAC;IAEhB,+BAA+B;IAC/B,MAAM,EAAE,QAAQ,EAAE,CAAC;IAEnB,qBAAqB;IACrB,OAAO,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * ERC (Electrical Rule Check) Types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ErcCode = void 0;
7
+ /**
8
+ * ERC error codes enumeration
9
+ */
10
+ var ErcCode;
11
+ (function (ErcCode) {
12
+ // Ground related
13
+ ErcCode["NO_GROUND"] = "ERC001";
14
+ ErcCode["MULTIPLE_GROUNDS"] = "ERC002";
15
+ // Floating nodes
16
+ ErcCode["FLOATING_NODE"] = "ERC010";
17
+ ErcCode["FLOATING_INPUT"] = "ERC011";
18
+ // Short circuits
19
+ ErcCode["VOLTAGE_SOURCE_SHORT"] = "ERC020";
20
+ ErcCode["PARALLEL_VOLTAGE_SOURCES"] = "ERC021";
21
+ // Component issues
22
+ ErcCode["MISSING_VALUE"] = "ERC030";
23
+ ErcCode["INVALID_VALUE"] = "ERC031";
24
+ ErcCode["PIN_COUNT_MISMATCH"] = "ERC032";
25
+ ErcCode["MISSING_MODEL"] = "ERC033";
26
+ // Net issues
27
+ ErcCode["UNCONNECTED_NET"] = "ERC040";
28
+ ErcCode["NET_HAS_SINGLE_PIN"] = "ERC041";
29
+ // General
30
+ ErcCode["EMPTY_CIRCUIT"] = "ERC050";
31
+ ErcCode["NO_ACTIVE_COMPONENTS"] = "ERC051";
32
+ })(ErcCode || (exports.ErcCode = ErcCode = {}));
33
+ //# sourceMappingURL=erc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc.js","sourceRoot":"","sources":["../../src/types/erc.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,OA0BX;AA1BD,WAAY,OAAO;IACf,iBAAiB;IACjB,+BAAoB,CAAA;IACpB,sCAA2B,CAAA;IAE3B,iBAAiB;IACjB,mCAAwB,CAAA;IACxB,oCAAyB,CAAA;IAEzB,iBAAiB;IACjB,0CAA+B,CAAA;IAC/B,8CAAmC,CAAA;IAEnC,mBAAmB;IACnB,mCAAwB,CAAA;IACxB,mCAAwB,CAAA;IACxB,wCAA6B,CAAA;IAC7B,mCAAwB,CAAA;IAExB,aAAa;IACb,qCAA0B,CAAA;IAC1B,wCAA6B,CAAA;IAE7B,UAAU;IACV,mCAAwB,CAAA;IACxB,0CAA+B,CAAA;AACnC,CAAC,EA1BW,OAAO,uBAAP,OAAO,QA0BlB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Simulation result types
3
+ */
4
+ /**
5
+ * Complete simulation result structure
6
+ */
7
+ export interface SimulationResult {
8
+ meta: ResultMeta;
9
+ series: DataSeries[];
10
+ }
11
+ /**
12
+ * Result metadata
13
+ */
14
+ export interface ResultMeta {
15
+ analysisType: string;
16
+ xLabel: string;
17
+ xUnit?: string;
18
+ pointsCount: number;
19
+ simulationTime?: number;
20
+ }
21
+ /**
22
+ * Data series for a single signal
23
+ */
24
+ export interface DataSeries {
25
+ name: string;
26
+ unit?: string;
27
+ points: DataPoint[];
28
+ }
29
+ /**
30
+ * Single data point
31
+ */
32
+ export interface DataPoint {
33
+ x: number;
34
+ y: number;
35
+ }
36
+ /**
37
+ * Probe specification for output
38
+ */
39
+ export interface Probe {
40
+ type: 'voltage' | 'current';
41
+ signal: string;
42
+ label?: string;
43
+ }
44
+ /**
45
+ * Parse a probe string to determine type and signal
46
+ */
47
+ export declare function parseProbe(probe: string): Probe;
48
+ /**
49
+ * Generate probe signals from circuit for default output
50
+ */
51
+ export declare function generateDefaultProbes(nodeNames: string[]): string[];
52
+ /**
53
+ * Metrics from simulation run
54
+ */
55
+ export interface SimulationMetrics {
56
+ runtimeMs: number;
57
+ peakMemBytes?: number;
58
+ pointsCount: number;
59
+ dataSize?: number;
60
+ }
61
+ //# sourceMappingURL=simulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation.d.ts","sourceRoot":"","sources":["../../src/types/simulation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAyB/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAInE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * Simulation result types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseProbe = parseProbe;
7
+ exports.generateDefaultProbes = generateDefaultProbes;
8
+ /**
9
+ * Parse a probe string to determine type and signal
10
+ */
11
+ function parseProbe(probe) {
12
+ const voltageMatch = probe.match(/^v\(([^)]+)\)$/i);
13
+ if (voltageMatch) {
14
+ return {
15
+ type: 'voltage',
16
+ signal: probe.toLowerCase(),
17
+ label: voltageMatch[1],
18
+ };
19
+ }
20
+ const currentMatch = probe.match(/^i\(([^)]+)\)$/i);
21
+ if (currentMatch) {
22
+ return {
23
+ type: 'current',
24
+ signal: probe.toLowerCase(),
25
+ label: currentMatch[1],
26
+ };
27
+ }
28
+ // Default to voltage if no prefix
29
+ return {
30
+ type: 'voltage',
31
+ signal: `v(${probe})`.toLowerCase(),
32
+ label: probe,
33
+ };
34
+ }
35
+ /**
36
+ * Generate probe signals from circuit for default output
37
+ */
38
+ function generateDefaultProbes(nodeNames) {
39
+ return nodeNames
40
+ .filter((name) => name !== '0') // Exclude ground
41
+ .map((name) => `v(${name})`);
42
+ }
43
+ //# sourceMappingURL=simulation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation.js","sourceRoot":"","sources":["../../src/types/simulation.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAkDH,gCAyBC;AAKD,sDAIC;AArCD;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAa;IACpC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,YAAY,EAAE,CAAC;QACf,OAAO;YACH,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;YAC3B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;SACzB,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,YAAY,EAAE,CAAC;QACf,OAAO;YACH,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;YAC3B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;SACzB,CAAC;IACN,CAAC;IAED,kCAAkC;IAClC,OAAO;QACH,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,KAAK;KACf,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,SAAmB;IACrD,OAAO,SAAS;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,iBAAiB;SAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Utils Module Exports
3
+ */
4
+ export { parseSpiceValue, formatSpiceValue, normalizeValue, valuesEqual, parseTimeValue, parseFrequencyValue, type ParsedValue, } from './unit-parser';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,KAAK,WAAW,GACnB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFrequencyValue = exports.parseTimeValue = exports.valuesEqual = exports.normalizeValue = exports.formatSpiceValue = exports.parseSpiceValue = void 0;
4
+ /**
5
+ * Utils Module Exports
6
+ */
7
+ var unit_parser_1 = require("./unit-parser");
8
+ Object.defineProperty(exports, "parseSpiceValue", { enumerable: true, get: function () { return unit_parser_1.parseSpiceValue; } });
9
+ Object.defineProperty(exports, "formatSpiceValue", { enumerable: true, get: function () { return unit_parser_1.formatSpiceValue; } });
10
+ Object.defineProperty(exports, "normalizeValue", { enumerable: true, get: function () { return unit_parser_1.normalizeValue; } });
11
+ Object.defineProperty(exports, "valuesEqual", { enumerable: true, get: function () { return unit_parser_1.valuesEqual; } });
12
+ Object.defineProperty(exports, "parseTimeValue", { enumerable: true, get: function () { return unit_parser_1.parseTimeValue; } });
13
+ Object.defineProperty(exports, "parseFrequencyValue", { enumerable: true, get: function () { return unit_parser_1.parseFrequencyValue; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,6CAQuB;AAPnB,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA;AACd,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AACd,kHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * SPICE Value Unit Parser
3
+ * Handles parsing and formatting of SPICE-style values with suffixes
4
+ */
5
+ /**
6
+ * Parse result
7
+ */
8
+ export interface ParsedValue {
9
+ value: number;
10
+ unit?: string;
11
+ original: string;
12
+ isValid: boolean;
13
+ error?: string;
14
+ }
15
+ /**
16
+ * Parse a SPICE-style value string to a number
17
+ * Supports suffixes like K, MEG, M, U, N, P, F
18
+ *
19
+ * Examples:
20
+ * - "1K" -> 1000
21
+ * - "10MEG" -> 10000000
22
+ * - "100n" -> 0.0000001
23
+ * - "1.5u" -> 0.0000015
24
+ * - "47pF" -> 4.7e-11 (with unit 'F')
25
+ */
26
+ export declare function parseSpiceValue(input: string): ParsedValue;
27
+ /**
28
+ * Format a number as a SPICE value string
29
+ */
30
+ export declare function formatSpiceValue(value: number, unit?: string): string;
31
+ /**
32
+ * Normalize a value to base units
33
+ */
34
+ export declare function normalizeValue(input: string): number;
35
+ /**
36
+ * Compare two SPICE values for equality (within tolerance)
37
+ */
38
+ export declare function valuesEqual(a: string, b: string, tolerance?: number): boolean;
39
+ /**
40
+ * Parse time value (handles s, ms, us, ns, ps)
41
+ */
42
+ export declare function parseTimeValue(input: string): number;
43
+ /**
44
+ * Parse frequency value (handles Hz, kHz, MHz, GHz)
45
+ */
46
+ export declare function parseFrequencyValue(input: string): number;
47
+ //# sourceMappingURL=unit-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-parser.d.ts","sourceRoot":"","sources":["../../src/utils/unit-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4CH;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA0E1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAoDrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAgBnF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD"}