@intelligentelectron/universal-netlist 0.0.12
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/CHANGELOG.md +121 -0
- package/LICENSE +190 -0
- package/NOTICE +4 -0
- package/README.md +246 -0
- package/dist/circuit-traversal.d.ts +73 -0
- package/dist/circuit-traversal.d.ts.map +1 -0
- package/dist/circuit-traversal.js +299 -0
- package/dist/circuit-traversal.js.map +1 -0
- package/dist/cli/commands.d.ts +23 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +140 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/prompts.d.ts +10 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +22 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/shell.d.ts +15 -0
- package/dist/cli/shell.d.ts.map +1 -0
- package/dist/cli/shell.js +66 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/cli/updater.d.ts +46 -0
- package/dist/cli/updater.d.ts.map +1 -0
- package/dist/cli/updater.js +319 -0
- package/dist/cli/updater.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/altium/connectivity.d.ts +32 -0
- package/dist/parsers/altium/connectivity.d.ts.map +1 -0
- package/dist/parsers/altium/connectivity.js +308 -0
- package/dist/parsers/altium/connectivity.js.map +1 -0
- package/dist/parsers/altium/discovery.d.ts +30 -0
- package/dist/parsers/altium/discovery.d.ts.map +1 -0
- package/dist/parsers/altium/discovery.js +174 -0
- package/dist/parsers/altium/discovery.js.map +1 -0
- package/dist/parsers/altium/hierarchy.d.ts +29 -0
- package/dist/parsers/altium/hierarchy.d.ts.map +1 -0
- package/dist/parsers/altium/hierarchy.js +94 -0
- package/dist/parsers/altium/hierarchy.js.map +1 -0
- package/dist/parsers/altium/index.d.ts +53 -0
- package/dist/parsers/altium/index.d.ts.map +1 -0
- package/dist/parsers/altium/index.js +404 -0
- package/dist/parsers/altium/index.js.map +1 -0
- package/dist/parsers/altium/net-extractor.d.ts +24 -0
- package/dist/parsers/altium/net-extractor.d.ts.map +1 -0
- package/dist/parsers/altium/net-extractor.js +295 -0
- package/dist/parsers/altium/net-extractor.js.map +1 -0
- package/dist/parsers/altium/ole-reader.d.ts +91 -0
- package/dist/parsers/altium/ole-reader.d.ts.map +1 -0
- package/dist/parsers/altium/ole-reader.js +304 -0
- package/dist/parsers/altium/ole-reader.js.map +1 -0
- package/dist/parsers/altium/record-parser.d.ts +21 -0
- package/dist/parsers/altium/record-parser.d.ts.map +1 -0
- package/dist/parsers/altium/record-parser.js +117 -0
- package/dist/parsers/altium/record-parser.js.map +1 -0
- package/dist/parsers/altium/schemas.d.ts +277 -0
- package/dist/parsers/altium/schemas.d.ts.map +1 -0
- package/dist/parsers/altium/schemas.js +246 -0
- package/dist/parsers/altium/schemas.js.map +1 -0
- package/dist/parsers/altium/types.d.ts +213 -0
- package/dist/parsers/altium/types.d.ts.map +1 -0
- package/dist/parsers/altium/types.js +180 -0
- package/dist/parsers/altium/types.js.map +1 -0
- package/dist/parsers/cadence/discovery.d.ts +45 -0
- package/dist/parsers/cadence/discovery.d.ts.map +1 -0
- package/dist/parsers/cadence/discovery.js +277 -0
- package/dist/parsers/cadence/discovery.js.map +1 -0
- package/dist/parsers/cadence/index.d.ts +41 -0
- package/dist/parsers/cadence/index.d.ts.map +1 -0
- package/dist/parsers/cadence/index.js +139 -0
- package/dist/parsers/cadence/index.js.map +1 -0
- package/dist/parsers/cadence/pstchip-parser.d.ts +23 -0
- package/dist/parsers/cadence/pstchip-parser.d.ts.map +1 -0
- package/dist/parsers/cadence/pstchip-parser.js +82 -0
- package/dist/parsers/cadence/pstchip-parser.js.map +1 -0
- package/dist/parsers/cadence/pstxnet-parser.d.ts +15 -0
- package/dist/parsers/cadence/pstxnet-parser.d.ts.map +1 -0
- package/dist/parsers/cadence/pstxnet-parser.js +55 -0
- package/dist/parsers/cadence/pstxnet-parser.js.map +1 -0
- package/dist/parsers/cadence/pstxprt-parser.d.ts +24 -0
- package/dist/parsers/cadence/pstxprt-parser.d.ts.map +1 -0
- package/dist/parsers/cadence/pstxprt-parser.js +75 -0
- package/dist/parsers/cadence/pstxprt-parser.js.map +1 -0
- package/dist/parsers/index.d.ts +33 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +49 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/server.d.ts +16 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +277 -0
- package/dist/server.js.map +1 -0
- package/dist/service.d.ts +129 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +759 -0
- package/dist/service.js.map +1 -0
- package/dist/types.d.ts +242 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +27 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +10 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Altium Parser - Zod Validation Schemas
|
|
3
|
+
*
|
|
4
|
+
* Schemas for validating Altium schematic records and their conversion
|
|
5
|
+
* to the ParsedNetlist format.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* Base schema for all Altium records
|
|
10
|
+
*/
|
|
11
|
+
export declare const AltiumRecordBaseSchema: z.ZodObject<{
|
|
12
|
+
index: z.ZodNumber;
|
|
13
|
+
RECORD: z.ZodOptional<z.ZodString>;
|
|
14
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
15
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
/**
|
|
18
|
+
* Location coordinates schema
|
|
19
|
+
*/
|
|
20
|
+
export declare const LocationSchema: z.ZodObject<{
|
|
21
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
22
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
/**
|
|
25
|
+
* Corner coordinates schema (for rectangles, etc.)
|
|
26
|
+
*/
|
|
27
|
+
export declare const CornerSchema: z.ZodObject<{
|
|
28
|
+
'Corner.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
29
|
+
'Corner.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
/**
|
|
32
|
+
* Component record (RECORD=1)
|
|
33
|
+
*/
|
|
34
|
+
export declare const ComponentRecordSchema: z.ZodObject<{
|
|
35
|
+
index: z.ZodNumber;
|
|
36
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
37
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
38
|
+
RECORD: z.ZodLiteral<"1">;
|
|
39
|
+
LibReference: z.ZodOptional<z.ZodString>;
|
|
40
|
+
ComponentDescription: z.ZodOptional<z.ZodString>;
|
|
41
|
+
DesignItemId: z.ZodOptional<z.ZodString>;
|
|
42
|
+
PartCount: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
43
|
+
CurrentPartId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
44
|
+
UniqueID: z.ZodOptional<z.ZodString>;
|
|
45
|
+
VaultGUID: z.ZodOptional<z.ZodString>;
|
|
46
|
+
ItemGUID: z.ZodOptional<z.ZodString>;
|
|
47
|
+
RevisionGUID: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, z.core.$loose>;
|
|
49
|
+
/**
|
|
50
|
+
* Pin record (RECORD=2)
|
|
51
|
+
*/
|
|
52
|
+
export declare const PinRecordSchema: z.ZodObject<{
|
|
53
|
+
index: z.ZodNumber;
|
|
54
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
55
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
56
|
+
RECORD: z.ZodLiteral<"2">;
|
|
57
|
+
Name: z.ZodOptional<z.ZodString>;
|
|
58
|
+
Designator: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
59
|
+
Description: z.ZodOptional<z.ZodString>;
|
|
60
|
+
Electrical: z.ZodOptional<z.ZodString>;
|
|
61
|
+
PinLength: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
62
|
+
PinConglomerate: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
63
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
64
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
65
|
+
}, z.core.$loose>;
|
|
66
|
+
/**
|
|
67
|
+
* Designator record (RECORD=34)
|
|
68
|
+
*/
|
|
69
|
+
export declare const DesignatorRecordSchema: z.ZodObject<{
|
|
70
|
+
index: z.ZodNumber;
|
|
71
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
72
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
73
|
+
RECORD: z.ZodLiteral<"34">;
|
|
74
|
+
Name: z.ZodOptional<z.ZodLiteral<"Designator">>;
|
|
75
|
+
Text: z.ZodString;
|
|
76
|
+
FontID: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
77
|
+
Color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
78
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
79
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
80
|
+
}, z.core.$loose>;
|
|
81
|
+
/**
|
|
82
|
+
* Parameter record (RECORD=41)
|
|
83
|
+
*/
|
|
84
|
+
export declare const ParameterRecordSchema: z.ZodObject<{
|
|
85
|
+
index: z.ZodNumber;
|
|
86
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
87
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
88
|
+
RECORD: z.ZodLiteral<"41">;
|
|
89
|
+
Name: z.ZodString;
|
|
90
|
+
Text: z.ZodOptional<z.ZodString>;
|
|
91
|
+
IsHidden: z.ZodOptional<z.ZodString>;
|
|
92
|
+
FontID: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
93
|
+
Color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
94
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
95
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
96
|
+
}, z.core.$loose>;
|
|
97
|
+
/**
|
|
98
|
+
* Wire record (RECORD=27)
|
|
99
|
+
*/
|
|
100
|
+
export declare const WireRecordSchema: z.ZodObject<{
|
|
101
|
+
index: z.ZodNumber;
|
|
102
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
103
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
104
|
+
RECORD: z.ZodLiteral<"27">;
|
|
105
|
+
LocationCount: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
106
|
+
LineWidth: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
107
|
+
Color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
108
|
+
UniqueID: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, z.core.$loose>;
|
|
110
|
+
/**
|
|
111
|
+
* Power port record (RECORD=17)
|
|
112
|
+
*/
|
|
113
|
+
export declare const PowerPortRecordSchema: z.ZodObject<{
|
|
114
|
+
index: z.ZodNumber;
|
|
115
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
116
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
117
|
+
RECORD: z.ZodLiteral<"17">;
|
|
118
|
+
Text: z.ZodString;
|
|
119
|
+
Style: z.ZodOptional<z.ZodString>;
|
|
120
|
+
Orientation: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
121
|
+
ShowNetName: z.ZodOptional<z.ZodString>;
|
|
122
|
+
FontID: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
123
|
+
Color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
124
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
125
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
126
|
+
}, z.core.$loose>;
|
|
127
|
+
/**
|
|
128
|
+
* Net label record (RECORD=25)
|
|
129
|
+
*/
|
|
130
|
+
export declare const NetLabelRecordSchema: z.ZodObject<{
|
|
131
|
+
index: z.ZodNumber;
|
|
132
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
133
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
134
|
+
RECORD: z.ZodLiteral<"25">;
|
|
135
|
+
Text: z.ZodString;
|
|
136
|
+
Justification: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
137
|
+
FontID: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
138
|
+
Color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
139
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
140
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
141
|
+
}, z.core.$loose>;
|
|
142
|
+
/**
|
|
143
|
+
* Junction record (RECORD=29)
|
|
144
|
+
*/
|
|
145
|
+
export declare const JunctionRecordSchema: z.ZodObject<{
|
|
146
|
+
index: z.ZodNumber;
|
|
147
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
148
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
149
|
+
RECORD: z.ZodLiteral<"29">;
|
|
150
|
+
Color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
151
|
+
'Location.X': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
152
|
+
'Location.Y': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
153
|
+
}, z.core.$loose>;
|
|
154
|
+
/**
|
|
155
|
+
* Sheet record (RECORD=31) - document settings
|
|
156
|
+
*/
|
|
157
|
+
export declare const SheetRecordSchema: z.ZodObject<{
|
|
158
|
+
index: z.ZodNumber;
|
|
159
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
160
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
161
|
+
RECORD: z.ZodLiteral<"31">;
|
|
162
|
+
FontIdCount: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
163
|
+
SheetStyle: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
164
|
+
AreaColor: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
165
|
+
SnapGridSize: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
166
|
+
VisibleGridSize: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
167
|
+
CustomX: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
168
|
+
CustomY: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
169
|
+
}, z.core.$loose>;
|
|
170
|
+
/**
|
|
171
|
+
* Implementation record (RECORD=45) - footprint/model
|
|
172
|
+
*/
|
|
173
|
+
export declare const ImplementationRecordSchema: z.ZodObject<{
|
|
174
|
+
index: z.ZodNumber;
|
|
175
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
176
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
177
|
+
RECORD: z.ZodLiteral<"45">;
|
|
178
|
+
Description: z.ZodOptional<z.ZodString>;
|
|
179
|
+
ModelName: z.ZodOptional<z.ZodString>;
|
|
180
|
+
ModelType: z.ZodOptional<z.ZodString>;
|
|
181
|
+
IsCurrent: z.ZodOptional<z.ZodString>;
|
|
182
|
+
}, z.core.$loose>;
|
|
183
|
+
/**
|
|
184
|
+
* Altium schematic structure
|
|
185
|
+
*/
|
|
186
|
+
export declare const AltiumSchematicSchema: z.ZodObject<{
|
|
187
|
+
header: z.ZodArray<z.ZodObject<{
|
|
188
|
+
index: z.ZodNumber;
|
|
189
|
+
RECORD: z.ZodOptional<z.ZodString>;
|
|
190
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
191
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
192
|
+
}, z.core.$loose>>;
|
|
193
|
+
records: z.ZodArray<z.ZodObject<{
|
|
194
|
+
index: z.ZodNumber;
|
|
195
|
+
RECORD: z.ZodOptional<z.ZodString>;
|
|
196
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
197
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
198
|
+
}, z.core.$loose>>;
|
|
199
|
+
}, z.core.$strip>;
|
|
200
|
+
/**
|
|
201
|
+
* Net structure
|
|
202
|
+
*/
|
|
203
|
+
export declare const AltiumNetSchema: z.ZodObject<{
|
|
204
|
+
name: z.ZodNullable<z.ZodString>;
|
|
205
|
+
devices: z.ZodArray<z.ZodObject<{
|
|
206
|
+
index: z.ZodNumber;
|
|
207
|
+
RECORD: z.ZodOptional<z.ZodString>;
|
|
208
|
+
OwnerIndex: z.ZodOptional<z.ZodString>;
|
|
209
|
+
OwnerPartId: z.ZodOptional<z.ZodString>;
|
|
210
|
+
}, z.core.$loose>>;
|
|
211
|
+
}, z.core.$strip>;
|
|
212
|
+
export declare const ParsedComponentSchema: z.ZodObject<{
|
|
213
|
+
mpn: z.ZodOptional<z.ZodString>;
|
|
214
|
+
description: z.ZodOptional<z.ZodString>;
|
|
215
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
216
|
+
partName: z.ZodOptional<z.ZodString>;
|
|
217
|
+
pins: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
218
|
+
name: z.ZodString;
|
|
219
|
+
net: z.ZodString;
|
|
220
|
+
}, z.core.$strip>]>>;
|
|
221
|
+
}, z.core.$strip>;
|
|
222
|
+
/**
|
|
223
|
+
* Net connections in ParsedNetlist format
|
|
224
|
+
* Map of net name -> { refdes -> [pin numbers] }
|
|
225
|
+
*/
|
|
226
|
+
export declare const ParsedNetConnectionsSchema: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
|
|
227
|
+
/**
|
|
228
|
+
* Complete ParsedNetlist structure
|
|
229
|
+
*/
|
|
230
|
+
export declare const ParsedNetlistSchema: z.ZodObject<{
|
|
231
|
+
nets: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
|
|
232
|
+
components: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
233
|
+
mpn: z.ZodOptional<z.ZodString>;
|
|
234
|
+
description: z.ZodOptional<z.ZodString>;
|
|
235
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
236
|
+
partName: z.ZodOptional<z.ZodString>;
|
|
237
|
+
pins: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
238
|
+
name: z.ZodString;
|
|
239
|
+
net: z.ZodString;
|
|
240
|
+
}, z.core.$strip>]>>;
|
|
241
|
+
}, z.core.$strip>>;
|
|
242
|
+
chips: z.ZodArray<z.ZodUnknown>;
|
|
243
|
+
}, z.core.$strip>;
|
|
244
|
+
/**
|
|
245
|
+
* Validate a component record.
|
|
246
|
+
*/
|
|
247
|
+
export declare const validateComponentRecord: (record: unknown) => boolean;
|
|
248
|
+
/**
|
|
249
|
+
* Validate a pin record.
|
|
250
|
+
*/
|
|
251
|
+
export declare const validatePinRecord: (record: unknown) => boolean;
|
|
252
|
+
/**
|
|
253
|
+
* Validate a parameter record.
|
|
254
|
+
*/
|
|
255
|
+
export declare const validateParameterRecord: (record: unknown) => boolean;
|
|
256
|
+
/**
|
|
257
|
+
* Validate the final ParsedNetlist output.
|
|
258
|
+
*/
|
|
259
|
+
export declare const validateParsedNetlist: (netlist: unknown) => z.infer<typeof ParsedNetlistSchema>;
|
|
260
|
+
/**
|
|
261
|
+
* Safe validation that returns null on failure.
|
|
262
|
+
*/
|
|
263
|
+
export declare const safeParsedNetlist: (netlist: unknown) => z.infer<typeof ParsedNetlistSchema> | null;
|
|
264
|
+
export type ComponentRecord = z.infer<typeof ComponentRecordSchema>;
|
|
265
|
+
export type PinRecord = z.infer<typeof PinRecordSchema>;
|
|
266
|
+
export type DesignatorRecord = z.infer<typeof DesignatorRecordSchema>;
|
|
267
|
+
export type ParameterRecord = z.infer<typeof ParameterRecordSchema>;
|
|
268
|
+
export type WireRecord = z.infer<typeof WireRecordSchema>;
|
|
269
|
+
export type PowerPortRecord = z.infer<typeof PowerPortRecordSchema>;
|
|
270
|
+
export type NetLabelRecord = z.infer<typeof NetLabelRecordSchema>;
|
|
271
|
+
export type JunctionRecord = z.infer<typeof JunctionRecordSchema>;
|
|
272
|
+
export type SheetRecord = z.infer<typeof SheetRecordSchema>;
|
|
273
|
+
export type ImplementationRecord = z.infer<typeof ImplementationRecordSchema>;
|
|
274
|
+
export type AltiumSchematicParsed = z.infer<typeof AltiumSchematicSchema>;
|
|
275
|
+
export type AltiumNetParsed = z.infer<typeof AltiumNetSchema>;
|
|
276
|
+
export type ParsedNetlistOutput = z.infer<typeof ParsedNetlistSchema>;
|
|
277
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/parsers/altium/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Altium Parser - Zod Validation Schemas
|
|
3
|
+
*
|
|
4
|
+
* Schemas for validating Altium schematic records and their conversion
|
|
5
|
+
* to the ParsedNetlist format.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { RECORD_TYPES } from './types.js';
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Base Record Schemas
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Base schema for all Altium records
|
|
14
|
+
*/
|
|
15
|
+
export const AltiumRecordBaseSchema = z.object({
|
|
16
|
+
index: z.number().int().nonnegative(),
|
|
17
|
+
RECORD: z.string().optional(),
|
|
18
|
+
OwnerIndex: z.string().optional(),
|
|
19
|
+
OwnerPartId: z.string().optional(),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Location coordinates schema
|
|
23
|
+
*/
|
|
24
|
+
export const LocationSchema = z.object({
|
|
25
|
+
'Location.X': z.union([z.string(), z.number()]).optional(),
|
|
26
|
+
'Location.Y': z.union([z.string(), z.number()]).optional(),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Corner coordinates schema (for rectangles, etc.)
|
|
30
|
+
*/
|
|
31
|
+
export const CornerSchema = z.object({
|
|
32
|
+
'Corner.X': z.union([z.string(), z.number()]).optional(),
|
|
33
|
+
'Corner.Y': z.union([z.string(), z.number()]).optional(),
|
|
34
|
+
});
|
|
35
|
+
// =============================================================================
|
|
36
|
+
// Specific Record Type Schemas
|
|
37
|
+
// =============================================================================
|
|
38
|
+
/**
|
|
39
|
+
* Component record (RECORD=1)
|
|
40
|
+
*/
|
|
41
|
+
export const ComponentRecordSchema = AltiumRecordBaseSchema.extend({
|
|
42
|
+
RECORD: z.literal(RECORD_TYPES.COMPONENT),
|
|
43
|
+
LibReference: z.string().optional(),
|
|
44
|
+
ComponentDescription: z.string().optional(),
|
|
45
|
+
DesignItemId: z.string().optional(),
|
|
46
|
+
PartCount: z.union([z.string(), z.number()]).optional(),
|
|
47
|
+
CurrentPartId: z.union([z.string(), z.number()]).optional(),
|
|
48
|
+
UniqueID: z.string().optional(),
|
|
49
|
+
// Vault fields
|
|
50
|
+
VaultGUID: z.string().optional(),
|
|
51
|
+
ItemGUID: z.string().optional(),
|
|
52
|
+
RevisionGUID: z.string().optional(),
|
|
53
|
+
}).passthrough();
|
|
54
|
+
/**
|
|
55
|
+
* Pin record (RECORD=2)
|
|
56
|
+
*/
|
|
57
|
+
export const PinRecordSchema = AltiumRecordBaseSchema.extend({
|
|
58
|
+
RECORD: z.literal(RECORD_TYPES.PIN),
|
|
59
|
+
Name: z.string().optional(),
|
|
60
|
+
Designator: z.union([z.string(), z.number()]).optional(),
|
|
61
|
+
Description: z.string().optional(),
|
|
62
|
+
Electrical: z.string().optional(),
|
|
63
|
+
PinLength: z.union([z.string(), z.number()]).optional(),
|
|
64
|
+
PinConglomerate: z.union([z.string(), z.number()]).optional(),
|
|
65
|
+
})
|
|
66
|
+
.merge(LocationSchema)
|
|
67
|
+
.passthrough();
|
|
68
|
+
/**
|
|
69
|
+
* Designator record (RECORD=34)
|
|
70
|
+
*/
|
|
71
|
+
export const DesignatorRecordSchema = AltiumRecordBaseSchema.extend({
|
|
72
|
+
RECORD: z.literal(RECORD_TYPES.DESIGNATOR),
|
|
73
|
+
Name: z.literal('Designator').optional(),
|
|
74
|
+
Text: z.string(),
|
|
75
|
+
FontID: z.union([z.string(), z.number()]).optional(),
|
|
76
|
+
Color: z.union([z.string(), z.number()]).optional(),
|
|
77
|
+
})
|
|
78
|
+
.merge(LocationSchema)
|
|
79
|
+
.passthrough();
|
|
80
|
+
/**
|
|
81
|
+
* Parameter record (RECORD=41)
|
|
82
|
+
*/
|
|
83
|
+
export const ParameterRecordSchema = AltiumRecordBaseSchema.extend({
|
|
84
|
+
RECORD: z.literal(RECORD_TYPES.PARAMETER),
|
|
85
|
+
Name: z.string(),
|
|
86
|
+
Text: z.string().optional(),
|
|
87
|
+
IsHidden: z.string().optional(),
|
|
88
|
+
FontID: z.union([z.string(), z.number()]).optional(),
|
|
89
|
+
Color: z.union([z.string(), z.number()]).optional(),
|
|
90
|
+
})
|
|
91
|
+
.merge(LocationSchema)
|
|
92
|
+
.passthrough();
|
|
93
|
+
/**
|
|
94
|
+
* Wire record (RECORD=27)
|
|
95
|
+
*/
|
|
96
|
+
export const WireRecordSchema = AltiumRecordBaseSchema.extend({
|
|
97
|
+
RECORD: z.literal(RECORD_TYPES.WIRE),
|
|
98
|
+
LocationCount: z.union([z.string(), z.number()]).optional(),
|
|
99
|
+
LineWidth: z.union([z.string(), z.number()]).optional(),
|
|
100
|
+
Color: z.union([z.string(), z.number()]).optional(),
|
|
101
|
+
UniqueID: z.string().optional(),
|
|
102
|
+
// Wire coordinates are X1,Y1,X2,Y2,... patterns
|
|
103
|
+
}).passthrough();
|
|
104
|
+
/**
|
|
105
|
+
* Power port record (RECORD=17)
|
|
106
|
+
*/
|
|
107
|
+
export const PowerPortRecordSchema = AltiumRecordBaseSchema.extend({
|
|
108
|
+
RECORD: z.literal(RECORD_TYPES.POWER_PORT),
|
|
109
|
+
Text: z.string(),
|
|
110
|
+
Style: z.string().optional(),
|
|
111
|
+
Orientation: z.union([z.string(), z.number()]).optional(),
|
|
112
|
+
ShowNetName: z.string().optional(),
|
|
113
|
+
FontID: z.union([z.string(), z.number()]).optional(),
|
|
114
|
+
Color: z.union([z.string(), z.number()]).optional(),
|
|
115
|
+
})
|
|
116
|
+
.merge(LocationSchema)
|
|
117
|
+
.passthrough();
|
|
118
|
+
/**
|
|
119
|
+
* Net label record (RECORD=25)
|
|
120
|
+
*/
|
|
121
|
+
export const NetLabelRecordSchema = AltiumRecordBaseSchema.extend({
|
|
122
|
+
RECORD: z.literal(RECORD_TYPES.NET_LABEL),
|
|
123
|
+
Text: z.string(),
|
|
124
|
+
Justification: z.union([z.string(), z.number()]).optional(),
|
|
125
|
+
FontID: z.union([z.string(), z.number()]).optional(),
|
|
126
|
+
Color: z.union([z.string(), z.number()]).optional(),
|
|
127
|
+
})
|
|
128
|
+
.merge(LocationSchema)
|
|
129
|
+
.passthrough();
|
|
130
|
+
/**
|
|
131
|
+
* Junction record (RECORD=29)
|
|
132
|
+
*/
|
|
133
|
+
export const JunctionRecordSchema = AltiumRecordBaseSchema.extend({
|
|
134
|
+
RECORD: z.literal(RECORD_TYPES.JUNCTION),
|
|
135
|
+
Color: z.union([z.string(), z.number()]).optional(),
|
|
136
|
+
})
|
|
137
|
+
.merge(LocationSchema)
|
|
138
|
+
.passthrough();
|
|
139
|
+
/**
|
|
140
|
+
* Sheet record (RECORD=31) - document settings
|
|
141
|
+
*/
|
|
142
|
+
export const SheetRecordSchema = AltiumRecordBaseSchema.extend({
|
|
143
|
+
RECORD: z.literal(RECORD_TYPES.SHEET),
|
|
144
|
+
FontIdCount: z.union([z.string(), z.number()]).optional(),
|
|
145
|
+
SheetStyle: z.union([z.string(), z.number()]).optional(),
|
|
146
|
+
AreaColor: z.union([z.string(), z.number()]).optional(),
|
|
147
|
+
SnapGridSize: z.union([z.string(), z.number()]).optional(),
|
|
148
|
+
VisibleGridSize: z.union([z.string(), z.number()]).optional(),
|
|
149
|
+
CustomX: z.union([z.string(), z.number()]).optional(),
|
|
150
|
+
CustomY: z.union([z.string(), z.number()]).optional(),
|
|
151
|
+
}).passthrough();
|
|
152
|
+
/**
|
|
153
|
+
* Implementation record (RECORD=45) - footprint/model
|
|
154
|
+
*/
|
|
155
|
+
export const ImplementationRecordSchema = AltiumRecordBaseSchema.extend({
|
|
156
|
+
RECORD: z.literal(RECORD_TYPES.IMPLEMENTATION),
|
|
157
|
+
Description: z.string().optional(),
|
|
158
|
+
ModelName: z.string().optional(),
|
|
159
|
+
ModelType: z.string().optional(),
|
|
160
|
+
IsCurrent: z.string().optional(),
|
|
161
|
+
}).passthrough();
|
|
162
|
+
// =============================================================================
|
|
163
|
+
// Schematic Structure Schemas
|
|
164
|
+
// =============================================================================
|
|
165
|
+
/**
|
|
166
|
+
* Altium schematic structure
|
|
167
|
+
*/
|
|
168
|
+
export const AltiumSchematicSchema = z.object({
|
|
169
|
+
header: z.array(AltiumRecordBaseSchema.passthrough()),
|
|
170
|
+
records: z.array(AltiumRecordBaseSchema.passthrough()),
|
|
171
|
+
});
|
|
172
|
+
/**
|
|
173
|
+
* Net structure
|
|
174
|
+
*/
|
|
175
|
+
export const AltiumNetSchema = z.object({
|
|
176
|
+
name: z.string().nullable(),
|
|
177
|
+
devices: z.array(AltiumRecordBaseSchema.passthrough()),
|
|
178
|
+
});
|
|
179
|
+
// =============================================================================
|
|
180
|
+
// Conversion Output Schemas (ParsedNetlist format)
|
|
181
|
+
// =============================================================================
|
|
182
|
+
/**
|
|
183
|
+
* Component detail in ParsedNetlist format
|
|
184
|
+
*/
|
|
185
|
+
const PinEntrySchema = z.union([
|
|
186
|
+
z.string(),
|
|
187
|
+
z.object({
|
|
188
|
+
name: z.string(),
|
|
189
|
+
net: z.string(),
|
|
190
|
+
}),
|
|
191
|
+
]);
|
|
192
|
+
export const ParsedComponentSchema = z.object({
|
|
193
|
+
mpn: z.string().optional(),
|
|
194
|
+
description: z.string().optional(),
|
|
195
|
+
comment: z.string().optional(),
|
|
196
|
+
partName: z.string().optional(),
|
|
197
|
+
pins: z.record(z.string(), PinEntrySchema),
|
|
198
|
+
});
|
|
199
|
+
/**
|
|
200
|
+
* Net connections in ParsedNetlist format
|
|
201
|
+
* Map of net name -> { refdes -> [pin numbers] }
|
|
202
|
+
*/
|
|
203
|
+
export const ParsedNetConnectionsSchema = z.record(z.string(), z.record(z.string(), z.array(z.string())));
|
|
204
|
+
/**
|
|
205
|
+
* Complete ParsedNetlist structure
|
|
206
|
+
*/
|
|
207
|
+
export const ParsedNetlistSchema = z.object({
|
|
208
|
+
nets: ParsedNetConnectionsSchema,
|
|
209
|
+
components: z.record(z.string(), ParsedComponentSchema),
|
|
210
|
+
chips: z.array(z.unknown()),
|
|
211
|
+
});
|
|
212
|
+
// =============================================================================
|
|
213
|
+
// Validation Helpers
|
|
214
|
+
// =============================================================================
|
|
215
|
+
/**
|
|
216
|
+
* Validate a component record.
|
|
217
|
+
*/
|
|
218
|
+
export const validateComponentRecord = (record) => {
|
|
219
|
+
return ComponentRecordSchema.safeParse(record).success;
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* Validate a pin record.
|
|
223
|
+
*/
|
|
224
|
+
export const validatePinRecord = (record) => {
|
|
225
|
+
return PinRecordSchema.safeParse(record).success;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Validate a parameter record.
|
|
229
|
+
*/
|
|
230
|
+
export const validateParameterRecord = (record) => {
|
|
231
|
+
return ParameterRecordSchema.safeParse(record).success;
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Validate the final ParsedNetlist output.
|
|
235
|
+
*/
|
|
236
|
+
export const validateParsedNetlist = (netlist) => {
|
|
237
|
+
return ParsedNetlistSchema.parse(netlist);
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Safe validation that returns null on failure.
|
|
241
|
+
*/
|
|
242
|
+
export const safeParsedNetlist = (netlist) => {
|
|
243
|
+
const result = ParsedNetlistSchema.safeParse(netlist);
|
|
244
|
+
return result.success ? result.data : null;
|
|
245
|
+
};
|
|
246
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/parsers/altium/schemas.ts"],"names":[],"mappings":"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"}
|