@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.
Files changed (105) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/LICENSE +190 -0
  3. package/NOTICE +4 -0
  4. package/README.md +246 -0
  5. package/dist/circuit-traversal.d.ts +73 -0
  6. package/dist/circuit-traversal.d.ts.map +1 -0
  7. package/dist/circuit-traversal.js +299 -0
  8. package/dist/circuit-traversal.js.map +1 -0
  9. package/dist/cli/commands.d.ts +23 -0
  10. package/dist/cli/commands.d.ts.map +1 -0
  11. package/dist/cli/commands.js +140 -0
  12. package/dist/cli/commands.js.map +1 -0
  13. package/dist/cli/prompts.d.ts +10 -0
  14. package/dist/cli/prompts.d.ts.map +1 -0
  15. package/dist/cli/prompts.js +22 -0
  16. package/dist/cli/prompts.js.map +1 -0
  17. package/dist/cli/shell.d.ts +15 -0
  18. package/dist/cli/shell.d.ts.map +1 -0
  19. package/dist/cli/shell.js +66 -0
  20. package/dist/cli/shell.js.map +1 -0
  21. package/dist/cli/updater.d.ts +46 -0
  22. package/dist/cli/updater.d.ts.map +1 -0
  23. package/dist/cli/updater.js +319 -0
  24. package/dist/cli/updater.js.map +1 -0
  25. package/dist/index.d.ts +16 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +63 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/parsers/altium/connectivity.d.ts +32 -0
  30. package/dist/parsers/altium/connectivity.d.ts.map +1 -0
  31. package/dist/parsers/altium/connectivity.js +308 -0
  32. package/dist/parsers/altium/connectivity.js.map +1 -0
  33. package/dist/parsers/altium/discovery.d.ts +30 -0
  34. package/dist/parsers/altium/discovery.d.ts.map +1 -0
  35. package/dist/parsers/altium/discovery.js +174 -0
  36. package/dist/parsers/altium/discovery.js.map +1 -0
  37. package/dist/parsers/altium/hierarchy.d.ts +29 -0
  38. package/dist/parsers/altium/hierarchy.d.ts.map +1 -0
  39. package/dist/parsers/altium/hierarchy.js +94 -0
  40. package/dist/parsers/altium/hierarchy.js.map +1 -0
  41. package/dist/parsers/altium/index.d.ts +53 -0
  42. package/dist/parsers/altium/index.d.ts.map +1 -0
  43. package/dist/parsers/altium/index.js +404 -0
  44. package/dist/parsers/altium/index.js.map +1 -0
  45. package/dist/parsers/altium/net-extractor.d.ts +24 -0
  46. package/dist/parsers/altium/net-extractor.d.ts.map +1 -0
  47. package/dist/parsers/altium/net-extractor.js +295 -0
  48. package/dist/parsers/altium/net-extractor.js.map +1 -0
  49. package/dist/parsers/altium/ole-reader.d.ts +91 -0
  50. package/dist/parsers/altium/ole-reader.d.ts.map +1 -0
  51. package/dist/parsers/altium/ole-reader.js +304 -0
  52. package/dist/parsers/altium/ole-reader.js.map +1 -0
  53. package/dist/parsers/altium/record-parser.d.ts +21 -0
  54. package/dist/parsers/altium/record-parser.d.ts.map +1 -0
  55. package/dist/parsers/altium/record-parser.js +117 -0
  56. package/dist/parsers/altium/record-parser.js.map +1 -0
  57. package/dist/parsers/altium/schemas.d.ts +277 -0
  58. package/dist/parsers/altium/schemas.d.ts.map +1 -0
  59. package/dist/parsers/altium/schemas.js +246 -0
  60. package/dist/parsers/altium/schemas.js.map +1 -0
  61. package/dist/parsers/altium/types.d.ts +213 -0
  62. package/dist/parsers/altium/types.d.ts.map +1 -0
  63. package/dist/parsers/altium/types.js +180 -0
  64. package/dist/parsers/altium/types.js.map +1 -0
  65. package/dist/parsers/cadence/discovery.d.ts +45 -0
  66. package/dist/parsers/cadence/discovery.d.ts.map +1 -0
  67. package/dist/parsers/cadence/discovery.js +277 -0
  68. package/dist/parsers/cadence/discovery.js.map +1 -0
  69. package/dist/parsers/cadence/index.d.ts +41 -0
  70. package/dist/parsers/cadence/index.d.ts.map +1 -0
  71. package/dist/parsers/cadence/index.js +139 -0
  72. package/dist/parsers/cadence/index.js.map +1 -0
  73. package/dist/parsers/cadence/pstchip-parser.d.ts +23 -0
  74. package/dist/parsers/cadence/pstchip-parser.d.ts.map +1 -0
  75. package/dist/parsers/cadence/pstchip-parser.js +82 -0
  76. package/dist/parsers/cadence/pstchip-parser.js.map +1 -0
  77. package/dist/parsers/cadence/pstxnet-parser.d.ts +15 -0
  78. package/dist/parsers/cadence/pstxnet-parser.d.ts.map +1 -0
  79. package/dist/parsers/cadence/pstxnet-parser.js +55 -0
  80. package/dist/parsers/cadence/pstxnet-parser.js.map +1 -0
  81. package/dist/parsers/cadence/pstxprt-parser.d.ts +24 -0
  82. package/dist/parsers/cadence/pstxprt-parser.d.ts.map +1 -0
  83. package/dist/parsers/cadence/pstxprt-parser.js +75 -0
  84. package/dist/parsers/cadence/pstxprt-parser.js.map +1 -0
  85. package/dist/parsers/index.d.ts +33 -0
  86. package/dist/parsers/index.d.ts.map +1 -0
  87. package/dist/parsers/index.js +49 -0
  88. package/dist/parsers/index.js.map +1 -0
  89. package/dist/server.d.ts +16 -0
  90. package/dist/server.d.ts.map +1 -0
  91. package/dist/server.js +277 -0
  92. package/dist/server.js.map +1 -0
  93. package/dist/service.d.ts +129 -0
  94. package/dist/service.d.ts.map +1 -0
  95. package/dist/service.js +759 -0
  96. package/dist/service.js.map +1 -0
  97. package/dist/types.d.ts +242 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/types.js +27 -0
  100. package/dist/types.js.map +1 -0
  101. package/dist/version.d.ts +10 -0
  102. package/dist/version.d.ts.map +1 -0
  103. package/dist/version.js +25 -0
  104. package/dist/version.js.map +1 -0
  105. 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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"}