@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,229 @@
1
+ "use strict";
2
+ /**
3
+ * SPICE Value Unit Parser
4
+ * Handles parsing and formatting of SPICE-style values with suffixes
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parseSpiceValue = parseSpiceValue;
8
+ exports.formatSpiceValue = formatSpiceValue;
9
+ exports.normalizeValue = normalizeValue;
10
+ exports.valuesEqual = valuesEqual;
11
+ exports.parseTimeValue = parseTimeValue;
12
+ exports.parseFrequencyValue = parseFrequencyValue;
13
+ /**
14
+ * SPICE suffix multipliers
15
+ */
16
+ const SPICE_SUFFIXES = {
17
+ // Standard SI prefixes
18
+ T: 1e12,
19
+ G: 1e9,
20
+ MEG: 1e6,
21
+ K: 1e3,
22
+ M: 1e-3,
23
+ U: 1e-6,
24
+ N: 1e-9,
25
+ P: 1e-12,
26
+ F: 1e-15,
27
+ // Alternative notations
28
+ MIL: 25.4e-6,
29
+ };
30
+ /**
31
+ * Unit abbreviations
32
+ */
33
+ const UNIT_ABBREVS = {
34
+ OHM: 'Ω',
35
+ OHMS: 'Ω',
36
+ FARAD: 'F',
37
+ HENRY: 'H',
38
+ VOLT: 'V',
39
+ VOLTS: 'V',
40
+ AMP: 'A',
41
+ AMPS: 'A',
42
+ AMPERE: 'A',
43
+ AMPERES: 'A',
44
+ WATT: 'W',
45
+ WATTS: 'W',
46
+ HERTZ: 'Hz',
47
+ HZ: 'Hz',
48
+ SECOND: 's',
49
+ SECONDS: 's',
50
+ SEC: 's',
51
+ };
52
+ /**
53
+ * Parse a SPICE-style value string to a number
54
+ * Supports suffixes like K, MEG, M, U, N, P, F
55
+ *
56
+ * Examples:
57
+ * - "1K" -> 1000
58
+ * - "10MEG" -> 10000000
59
+ * - "100n" -> 0.0000001
60
+ * - "1.5u" -> 0.0000015
61
+ * - "47pF" -> 4.7e-11 (with unit 'F')
62
+ */
63
+ function parseSpiceValue(input) {
64
+ const original = input.trim();
65
+ if (!original) {
66
+ return { value: 0, original, isValid: false, error: 'Empty value' };
67
+ }
68
+ // Handle pure numbers
69
+ const pureNumber = parseFloat(original);
70
+ if (!isNaN(pureNumber) && /^-?\d*\.?\d+$/.test(original)) {
71
+ return { value: pureNumber, original, isValid: true };
72
+ }
73
+ // Regex to match value with optional suffix and unit
74
+ // Examples: 1K, 10MEG, 100nF, 1.5uH, 47pF
75
+ const regex = /^(-?\d*\.?\d+)\s*([A-Za-z]+)?$/i;
76
+ const match = original.match(regex);
77
+ if (!match) {
78
+ return { value: 0, original, isValid: false, error: 'Invalid format' };
79
+ }
80
+ const numPart = parseFloat(match[1] || '0');
81
+ const suffixPart = (match[2] || '').toUpperCase();
82
+ if (isNaN(numPart)) {
83
+ return { value: 0, original, isValid: false, error: 'Invalid number' };
84
+ }
85
+ if (!suffixPart) {
86
+ return { value: numPart, original, isValid: true };
87
+ }
88
+ // Try to find a matching suffix
89
+ let multiplier = 1;
90
+ let unit;
91
+ // Check for MEG first (3 letters)
92
+ if (suffixPart.startsWith('MEG')) {
93
+ multiplier = SPICE_SUFFIXES['MEG'] || 1e6;
94
+ const remaining = suffixPart.slice(3);
95
+ if (remaining) {
96
+ unit = UNIT_ABBREVS[remaining] || remaining;
97
+ }
98
+ }
99
+ // Check for MIL
100
+ else if (suffixPart.startsWith('MIL')) {
101
+ multiplier = SPICE_SUFFIXES['MIL'] || 25.4e-6;
102
+ const remaining = suffixPart.slice(3);
103
+ if (remaining) {
104
+ unit = UNIT_ABBREVS[remaining] || remaining;
105
+ }
106
+ }
107
+ // Check single letter suffixes
108
+ else if (suffixPart.length >= 1) {
109
+ const firstChar = suffixPart[0] || '';
110
+ if (SPICE_SUFFIXES[firstChar] !== undefined) {
111
+ multiplier = SPICE_SUFFIXES[firstChar] || 1;
112
+ const remaining = suffixPart.slice(1);
113
+ if (remaining) {
114
+ unit = UNIT_ABBREVS[remaining] || remaining;
115
+ }
116
+ }
117
+ else {
118
+ // No suffix, entire thing is a unit
119
+ unit = UNIT_ABBREVS[suffixPart] || suffixPart;
120
+ }
121
+ }
122
+ return {
123
+ value: numPart * multiplier,
124
+ unit,
125
+ original,
126
+ isValid: true,
127
+ };
128
+ }
129
+ /**
130
+ * Format a number as a SPICE value string
131
+ */
132
+ function formatSpiceValue(value, unit) {
133
+ if (value === 0) {
134
+ return unit ? `0${unit}` : '0';
135
+ }
136
+ const absValue = Math.abs(value);
137
+ const sign = value < 0 ? '-' : '';
138
+ let suffix = '';
139
+ let scaledValue = absValue;
140
+ if (absValue >= 1e12) {
141
+ suffix = 'T';
142
+ scaledValue = absValue / 1e12;
143
+ }
144
+ else if (absValue >= 1e9) {
145
+ suffix = 'G';
146
+ scaledValue = absValue / 1e9;
147
+ }
148
+ else if (absValue >= 1e6) {
149
+ suffix = 'MEG';
150
+ scaledValue = absValue / 1e6;
151
+ }
152
+ else if (absValue >= 1e3) {
153
+ suffix = 'K';
154
+ scaledValue = absValue / 1e3;
155
+ }
156
+ else if (absValue >= 1) {
157
+ suffix = '';
158
+ scaledValue = absValue;
159
+ }
160
+ else if (absValue >= 1e-3) {
161
+ suffix = 'm';
162
+ scaledValue = absValue / 1e-3;
163
+ }
164
+ else if (absValue >= 1e-6) {
165
+ suffix = 'u';
166
+ scaledValue = absValue / 1e-6;
167
+ }
168
+ else if (absValue >= 1e-9) {
169
+ suffix = 'n';
170
+ scaledValue = absValue / 1e-9;
171
+ }
172
+ else if (absValue >= 1e-12) {
173
+ suffix = 'p';
174
+ scaledValue = absValue / 1e-12;
175
+ }
176
+ else {
177
+ suffix = 'f';
178
+ scaledValue = absValue / 1e-15;
179
+ }
180
+ // Format number to reasonable precision
181
+ let formatted;
182
+ if (Number.isInteger(scaledValue)) {
183
+ formatted = scaledValue.toString();
184
+ }
185
+ else {
186
+ formatted = scaledValue.toPrecision(4).replace(/\.?0+$/, '');
187
+ }
188
+ return `${sign}${formatted}${suffix}${unit || ''}`;
189
+ }
190
+ /**
191
+ * Normalize a value to base units
192
+ */
193
+ function normalizeValue(input) {
194
+ const parsed = parseSpiceValue(input);
195
+ return parsed.isValid ? parsed.value : 0;
196
+ }
197
+ /**
198
+ * Compare two SPICE values for equality (within tolerance)
199
+ */
200
+ function valuesEqual(a, b, tolerance = 1e-9) {
201
+ const parsedA = parseSpiceValue(a);
202
+ const parsedB = parseSpiceValue(b);
203
+ if (!parsedA.isValid || !parsedB.isValid) {
204
+ return false;
205
+ }
206
+ const diff = Math.abs(parsedA.value - parsedB.value);
207
+ const maxVal = Math.max(Math.abs(parsedA.value), Math.abs(parsedB.value));
208
+ if (maxVal === 0) {
209
+ return diff === 0;
210
+ }
211
+ return diff / maxVal < tolerance;
212
+ }
213
+ /**
214
+ * Parse time value (handles s, ms, us, ns, ps)
215
+ */
216
+ function parseTimeValue(input) {
217
+ const parsed = parseSpiceValue(input);
218
+ // Time values should be in seconds
219
+ return parsed.value;
220
+ }
221
+ /**
222
+ * Parse frequency value (handles Hz, kHz, MHz, GHz)
223
+ */
224
+ function parseFrequencyValue(input) {
225
+ const parsed = parseSpiceValue(input);
226
+ // Frequency values should be in Hz
227
+ return parsed.value;
228
+ }
229
+ //# sourceMappingURL=unit-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-parser.js","sourceRoot":"","sources":["../../src/utils/unit-parser.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@circuit-forge/eda-core",
3
+ "version": "1.0.0",
4
+ "description": "Circuit manipulation, netlist generation, and SPICE parsing library",
5
+ "license": "MIT",
6
+ "author": "Abdulberk",
7
+ "homepage": "https://github.com/Abdulberk/circuit-forge/tree/main/packages/eda-core#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/Abdulberk/circuit-forge.git",
11
+ "directory": "packages/eda-core"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/Abdulberk/circuit-forge/issues"
15
+ },
16
+ "keywords": [
17
+ "spice",
18
+ "ngspice",
19
+ "netlist",
20
+ "circuit",
21
+ "eda",
22
+ "schematic",
23
+ "simulation",
24
+ "zod"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "main": "dist/index.js",
30
+ "types": "dist/index.d.ts",
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "scripts": {
35
+ "build": "tsc",
36
+ "prepublishOnly": "npm run build",
37
+ "dev": "tsc --watch",
38
+ "lint": "eslint src --ext .ts",
39
+ "lint:fix": "eslint src --ext .ts --fix",
40
+ "test": "jest",
41
+ "test:cov": "jest --coverage",
42
+ "clean": "rm -rf dist coverage",
43
+ "typecheck": "tsc --noEmit"
44
+ },
45
+ "dependencies": {
46
+ "zod": "^3.22.4"
47
+ },
48
+ "devDependencies": {
49
+ "@types/jest": "^29.5.11",
50
+ "@types/node": "^20.11.0",
51
+ "jest": "^29.7.0",
52
+ "ts-jest": "^29.1.1",
53
+ "typescript": "^5.3.3"
54
+ },
55
+ "peerDependencies": {
56
+ "typescript": "^5.0.0"
57
+ }
58
+ }