circuit-json 0.0.59 → 0.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -31,12 +31,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  all_layers: () => all_layers,
34
+ any_circuit_element: () => any_circuit_element,
34
35
  any_soup_element: () => any_soup_element,
35
36
  any_source_component: () => any_source_component,
36
37
  cad_component: () => cad_component,
37
38
  capacitance: () => capacitance,
38
39
  current: () => current,
39
40
  distance: () => distance,
41
+ getZodPrefixedIdWithDefault: () => getZodPrefixedIdWithDefault,
40
42
  inductance: () => inductance,
41
43
  layer_ref: () => layer_ref,
42
44
  layer_string: () => layer_string,
@@ -46,6 +48,8 @@ __export(src_exports, {
46
48
  pcb_fabrication_note_path: () => pcb_fabrication_note_path,
47
49
  pcb_fabrication_note_text: () => pcb_fabrication_note_text,
48
50
  pcb_hole: () => pcb_hole,
51
+ pcb_hole_circle_or_square_shape: () => pcb_hole_circle_or_square_shape,
52
+ pcb_hole_oval_shape: () => pcb_hole_oval_shape,
49
53
  pcb_keepout: () => pcb_keepout,
50
54
  pcb_placement_error: () => pcb_placement_error,
51
55
  pcb_plated_hole: () => pcb_plated_hole,
@@ -64,6 +68,9 @@ __export(src_exports, {
64
68
  pcb_trace: () => pcb_trace,
65
69
  pcb_trace_error: () => pcb_trace_error,
66
70
  pcb_trace_hint: () => pcb_trace_hint,
71
+ pcb_trace_route_point: () => pcb_trace_route_point,
72
+ pcb_trace_route_point_via: () => pcb_trace_route_point_via,
73
+ pcb_trace_route_point_wire: () => pcb_trace_route_point_wire,
67
74
  pcb_via: () => pcb_via,
68
75
  point: () => point,
69
76
  point3: () => point3,
@@ -78,6 +85,7 @@ __export(src_exports, {
78
85
  schematic_line: () => schematic_line,
79
86
  schematic_net_label: () => schematic_net_label,
80
87
  schematic_path: () => schematic_path,
88
+ schematic_pin_styles: () => schematic_pin_styles,
81
89
  schematic_port: () => schematic_port,
82
90
  schematic_text: () => schematic_text,
83
91
  schematic_trace: () => schematic_trace,
@@ -199,7 +207,17 @@ var length = import_zod.z.string().or(import_zod.z.number()).transform((v) => pa
199
207
  var distance = length;
200
208
  var current = import_zod.z.string().or(import_zod.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
201
209
  var time = import_zod.z.string().or(import_zod.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
202
- var rotation = import_zod.z.string().or(import_zod.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
210
+ var rotation = import_zod.z.string().or(import_zod.z.number()).transform((arg) => {
211
+ if (typeof arg === "number")
212
+ return arg;
213
+ if (arg.endsWith("deg")) {
214
+ return Number.parseFloat(arg.split("deg")[0]);
215
+ }
216
+ if (arg.endsWith("rad")) {
217
+ return Number.parseFloat(arg.split("rad")[0]) * 180 / Math.PI;
218
+ }
219
+ return Number.parseFloat(arg);
220
+ });
203
221
 
204
222
  // src/common/point.ts
205
223
  var import_zod2 = require("zod");
@@ -225,12 +243,19 @@ var size = import_zod4.z.object({
225
243
  height: import_zod4.z.number()
226
244
  });
227
245
 
246
+ // src/common/getZodPrefixedIdWithDefault.ts
247
+ var import_zod5 = require("zod");
248
+ var import_nanoid = require("nanoid");
249
+ var getZodPrefixedIdWithDefault = (prefix) => {
250
+ return import_zod5.z.string().optional().default(() => `${prefix}_${(0, import_nanoid.nanoid)(10)}`);
251
+ };
252
+
228
253
  // src/source/source_simple_capacitor.ts
229
- var import_zod7 = require("zod");
254
+ var import_zod8 = require("zod");
230
255
 
231
256
  // src/pcb/properties/supplier_name.ts
232
- var import_zod5 = require("zod");
233
- var supplier_name = import_zod5.z.enum([
257
+ var import_zod6 = require("zod");
258
+ var supplier_name = import_zod6.z.enum([
234
259
  "jlcpcb",
235
260
  "macrofab",
236
261
  "pcbway",
@@ -240,76 +265,76 @@ var supplier_name = import_zod5.z.enum([
240
265
  ]);
241
266
 
242
267
  // src/source/base/source_component_base.ts
243
- var import_zod6 = require("zod");
244
- var source_component_base = import_zod6.z.object({
245
- type: import_zod6.z.literal("source_component"),
246
- ftype: import_zod6.z.string().optional(),
247
- source_component_id: import_zod6.z.string(),
248
- name: import_zod6.z.string(),
249
- manufacturer_part_number: import_zod6.z.string().optional(),
250
- supplier_part_numbers: import_zod6.z.record(supplier_name, import_zod6.z.array(import_zod6.z.string())).optional()
268
+ var import_zod7 = require("zod");
269
+ var source_component_base = import_zod7.z.object({
270
+ type: import_zod7.z.literal("source_component"),
271
+ ftype: import_zod7.z.string().optional(),
272
+ source_component_id: import_zod7.z.string(),
273
+ name: import_zod7.z.string(),
274
+ manufacturer_part_number: import_zod7.z.string().optional(),
275
+ supplier_part_numbers: import_zod7.z.record(supplier_name, import_zod7.z.array(import_zod7.z.string())).optional()
251
276
  });
252
277
 
253
278
  // src/source/source_simple_capacitor.ts
254
279
  var source_simple_capacitor = source_component_base.extend({
255
- ftype: import_zod7.z.literal("simple_capacitor"),
280
+ ftype: import_zod8.z.literal("simple_capacitor"),
256
281
  capacitance
257
282
  });
258
283
 
259
284
  // src/source/source_simple_resistor.ts
260
- var import_zod8 = require("zod");
285
+ var import_zod9 = require("zod");
261
286
  var source_simple_resistor = source_component_base.extend({
262
- ftype: import_zod8.z.literal("simple_resistor"),
287
+ ftype: import_zod9.z.literal("simple_resistor"),
263
288
  resistance
264
289
  });
265
290
 
266
291
  // src/source/source_simple_diode.ts
267
- var import_zod9 = require("zod");
292
+ var import_zod10 = require("zod");
268
293
  var source_simple_diode = source_component_base.extend({
269
- ftype: import_zod9.z.literal("simple_diode")
294
+ ftype: import_zod10.z.literal("simple_diode")
270
295
  });
271
296
 
272
297
  // src/source/source_simple_ground.ts
273
- var import_zod10 = require("zod");
298
+ var import_zod11 = require("zod");
274
299
  var source_simple_ground = source_component_base.extend({
275
- ftype: import_zod10.z.literal("simple_ground")
300
+ ftype: import_zod11.z.literal("simple_ground")
276
301
  });
277
302
 
278
303
  // src/source/source_simple_bug.ts
279
- var import_zod11 = require("zod");
304
+ var import_zod12 = require("zod");
280
305
  var source_simple_bug = source_component_base.extend({
281
- ftype: import_zod11.z.literal("simple_bug")
306
+ ftype: import_zod12.z.literal("simple_bug")
282
307
  }).describe("@deprecated");
283
308
 
284
309
  // src/source/source_simple_chip.ts
285
- var import_zod12 = require("zod");
310
+ var import_zod13 = require("zod");
286
311
  var source_simple_chip = source_component_base.extend({
287
- ftype: import_zod12.z.literal("simple_chip")
312
+ ftype: import_zod13.z.literal("simple_chip")
288
313
  });
289
314
 
290
315
  // src/source/source_simple_inductor.ts
291
- var import_zod13 = require("zod");
316
+ var import_zod14 = require("zod");
292
317
  var source_simple_inductor = source_component_base.extend({
293
- ftype: import_zod13.z.literal("simple_inductor"),
318
+ ftype: import_zod14.z.literal("simple_inductor"),
294
319
  inductance
295
320
  });
296
321
 
297
322
  // src/source/source_led.ts
298
- var import_zod14 = require("zod");
323
+ var import_zod15 = require("zod");
299
324
  var source_led = source_simple_diode.extend({
300
- ftype: import_zod14.z.literal("led")
325
+ ftype: import_zod15.z.literal("led")
301
326
  });
302
327
 
303
328
  // src/source/source_simple_power_source.ts
304
- var import_zod15 = require("zod");
329
+ var import_zod16 = require("zod");
305
330
  var source_simple_power_source = source_component_base.extend({
306
- ftype: import_zod15.z.literal("simple_power_source"),
331
+ ftype: import_zod16.z.literal("simple_power_source"),
307
332
  voltage
308
333
  });
309
334
 
310
335
  // src/source/any_source_component.ts
311
- var import_zod16 = require("zod");
312
- var any_source_component = import_zod16.z.union([
336
+ var import_zod17 = require("zod");
337
+ var any_source_component = import_zod17.z.union([
313
338
  source_simple_resistor,
314
339
  source_simple_capacitor,
315
340
  source_simple_diode,
@@ -321,52 +346,52 @@ var any_source_component = import_zod16.z.union([
321
346
  ]);
322
347
 
323
348
  // src/source/source_port.ts
324
- var import_zod17 = require("zod");
325
- var source_port = import_zod17.z.object({
326
- type: import_zod17.z.literal("source_port"),
327
- pin_number: import_zod17.z.number().optional(),
328
- port_hints: import_zod17.z.array(import_zod17.z.string()).optional(),
329
- name: import_zod17.z.string(),
330
- source_port_id: import_zod17.z.string(),
331
- source_component_id: import_zod17.z.string()
349
+ var import_zod18 = require("zod");
350
+ var source_port = import_zod18.z.object({
351
+ type: import_zod18.z.literal("source_port"),
352
+ pin_number: import_zod18.z.number().optional(),
353
+ port_hints: import_zod18.z.array(import_zod18.z.string()).optional(),
354
+ name: import_zod18.z.string(),
355
+ source_port_id: import_zod18.z.string(),
356
+ source_component_id: import_zod18.z.string()
332
357
  });
333
358
 
334
359
  // src/source/source_trace.ts
335
- var import_zod18 = require("zod");
336
- var source_trace = import_zod18.z.object({
337
- type: import_zod18.z.literal("source_trace"),
338
- source_trace_id: import_zod18.z.string(),
339
- connected_source_port_ids: import_zod18.z.array(import_zod18.z.string()),
340
- connected_source_net_ids: import_zod18.z.array(import_zod18.z.string())
360
+ var import_zod19 = require("zod");
361
+ var source_trace = import_zod19.z.object({
362
+ type: import_zod19.z.literal("source_trace"),
363
+ source_trace_id: import_zod19.z.string(),
364
+ connected_source_port_ids: import_zod19.z.array(import_zod19.z.string()),
365
+ connected_source_net_ids: import_zod19.z.array(import_zod19.z.string())
341
366
  });
342
367
 
343
368
  // src/source/source_group.ts
344
- var import_zod19 = require("zod");
345
- var source_group = import_zod19.z.object({
346
- type: import_zod19.z.literal("source_group"),
347
- source_group_id: import_zod19.z.string(),
348
- name: import_zod19.z.string().optional()
369
+ var import_zod20 = require("zod");
370
+ var source_group = import_zod20.z.object({
371
+ type: import_zod20.z.literal("source_group"),
372
+ source_group_id: import_zod20.z.string(),
373
+ name: import_zod20.z.string().optional()
349
374
  });
350
375
 
351
376
  // src/source/source_net.ts
352
- var import_zod20 = require("zod");
353
- var source_net = import_zod20.z.object({
354
- type: import_zod20.z.literal("source_net"),
355
- source_net_id: import_zod20.z.string(),
356
- name: import_zod20.z.string(),
357
- member_source_group_ids: import_zod20.z.array(import_zod20.z.string()),
358
- is_power: import_zod20.z.boolean().optional(),
359
- is_ground: import_zod20.z.boolean().optional(),
360
- is_digital_signal: import_zod20.z.boolean().optional(),
361
- is_analog_signal: import_zod20.z.boolean().optional(),
362
- trace_width: import_zod20.z.number().optional()
377
+ var import_zod21 = require("zod");
378
+ var source_net = import_zod21.z.object({
379
+ type: import_zod21.z.literal("source_net"),
380
+ source_net_id: import_zod21.z.string(),
381
+ name: import_zod21.z.string(),
382
+ member_source_group_ids: import_zod21.z.array(import_zod21.z.string()),
383
+ is_power: import_zod21.z.boolean().optional(),
384
+ is_ground: import_zod21.z.boolean().optional(),
385
+ is_digital_signal: import_zod21.z.boolean().optional(),
386
+ is_analog_signal: import_zod21.z.boolean().optional(),
387
+ trace_width: import_zod21.z.number().optional()
363
388
  });
364
389
 
365
390
  // src/schematic/schematic_box.ts
366
- var import_zod21 = require("zod");
367
- var schematic_box = import_zod21.z.object({
368
- type: import_zod21.z.literal("schematic_box"),
369
- schematic_component_id: import_zod21.z.string(),
391
+ var import_zod22 = require("zod");
392
+ var schematic_box = import_zod22.z.object({
393
+ type: import_zod22.z.literal("schematic_box"),
394
+ schematic_component_id: import_zod22.z.string(),
370
395
  width: distance,
371
396
  height: distance,
372
397
  x: distance,
@@ -374,61 +399,70 @@ var schematic_box = import_zod21.z.object({
374
399
  }).describe("Draws a box on the schematic");
375
400
 
376
401
  // src/schematic/schematic_path.ts
377
- var import_zod22 = require("zod");
378
- var schematic_path = import_zod22.z.object({
379
- type: import_zod22.z.literal("schematic_path"),
380
- schematic_component_id: import_zod22.z.string(),
381
- fill_color: import_zod22.z.enum(["red", "blue"]).optional(),
382
- is_filled: import_zod22.z.boolean().optional(),
383
- points: import_zod22.z.array(point)
402
+ var import_zod23 = require("zod");
403
+ var schematic_path = import_zod23.z.object({
404
+ type: import_zod23.z.literal("schematic_path"),
405
+ schematic_component_id: import_zod23.z.string(),
406
+ fill_color: import_zod23.z.enum(["red", "blue"]).optional(),
407
+ is_filled: import_zod23.z.boolean().optional(),
408
+ points: import_zod23.z.array(point)
384
409
  });
385
410
 
386
411
  // src/schematic/schematic_component.ts
387
- var import_zod23 = require("zod");
388
- var schematic_component = import_zod23.z.object({
389
- type: import_zod23.z.literal("schematic_component"),
412
+ var import_zod24 = require("zod");
413
+ var schematic_pin_styles = import_zod24.z.record(
414
+ import_zod24.z.object({
415
+ left_margin: length.optional(),
416
+ right_margin: length.optional(),
417
+ top_margin: length.optional(),
418
+ bottom_margin: length.optional()
419
+ })
420
+ );
421
+ var schematic_component = import_zod24.z.object({
422
+ type: import_zod24.z.literal("schematic_component"),
390
423
  rotation: rotation.default(0),
391
424
  size,
392
425
  center: point,
393
- source_component_id: import_zod23.z.string(),
394
- schematic_component_id: import_zod23.z.string(),
426
+ source_component_id: import_zod24.z.string(),
427
+ schematic_component_id: import_zod24.z.string(),
395
428
  pin_spacing: length.optional(),
429
+ pin_styles: schematic_pin_styles.optional(),
396
430
  box_width: length.optional(),
397
- symbol_name: import_zod23.z.string().optional(),
398
- port_arrangement: import_zod23.z.union([
399
- import_zod23.z.object({
400
- left_size: import_zod23.z.number(),
401
- right_size: import_zod23.z.number(),
402
- top_size: import_zod23.z.number().optional(),
403
- bottom_size: import_zod23.z.number().optional()
431
+ symbol_name: import_zod24.z.string().optional(),
432
+ port_arrangement: import_zod24.z.union([
433
+ import_zod24.z.object({
434
+ left_size: import_zod24.z.number(),
435
+ right_size: import_zod24.z.number(),
436
+ top_size: import_zod24.z.number().optional(),
437
+ bottom_size: import_zod24.z.number().optional()
404
438
  }),
405
- import_zod23.z.object({
406
- left_side: import_zod23.z.object({
407
- pins: import_zod23.z.array(import_zod23.z.number()),
408
- direction: import_zod23.z.enum(["top-to-bottom", "bottom-to-top"]).optional()
439
+ import_zod24.z.object({
440
+ left_side: import_zod24.z.object({
441
+ pins: import_zod24.z.array(import_zod24.z.number()),
442
+ direction: import_zod24.z.enum(["top-to-bottom", "bottom-to-top"]).optional()
409
443
  }).optional(),
410
- right_side: import_zod23.z.object({
411
- pins: import_zod23.z.array(import_zod23.z.number()),
412
- direction: import_zod23.z.enum(["top-to-bottom", "bottom-to-top"]).optional()
444
+ right_side: import_zod24.z.object({
445
+ pins: import_zod24.z.array(import_zod24.z.number()),
446
+ direction: import_zod24.z.enum(["top-to-bottom", "bottom-to-top"]).optional()
413
447
  }).optional(),
414
- top_side: import_zod23.z.object({
415
- pins: import_zod23.z.array(import_zod23.z.number()),
416
- direction: import_zod23.z.enum(["left-to-right", "right-to-left"]).optional()
448
+ top_side: import_zod24.z.object({
449
+ pins: import_zod24.z.array(import_zod24.z.number()),
450
+ direction: import_zod24.z.enum(["left-to-right", "right-to-left"]).optional()
417
451
  }).optional(),
418
- bottom_side: import_zod23.z.object({
419
- pins: import_zod23.z.array(import_zod23.z.number()),
420
- direction: import_zod23.z.enum(["left-to-right", "right-to-left"]).optional()
452
+ bottom_side: import_zod24.z.object({
453
+ pins: import_zod24.z.array(import_zod24.z.number()),
454
+ direction: import_zod24.z.enum(["left-to-right", "right-to-left"]).optional()
421
455
  }).optional()
422
456
  })
423
457
  ]).optional(),
424
- port_labels: import_zod23.z.record(import_zod23.z.string()).optional()
458
+ port_labels: import_zod24.z.record(import_zod24.z.string()).optional()
425
459
  });
426
460
 
427
461
  // src/schematic/schematic_line.ts
428
- var import_zod24 = require("zod");
429
- var schematic_line = import_zod24.z.object({
430
- type: import_zod24.z.literal("schematic_line"),
431
- schematic_component_id: import_zod24.z.string(),
462
+ var import_zod25 = require("zod");
463
+ var schematic_line = import_zod25.z.object({
464
+ type: import_zod25.z.literal("schematic_line"),
465
+ schematic_component_id: import_zod25.z.string(),
432
466
  x1: distance,
433
467
  x2: distance,
434
468
  y1: distance,
@@ -436,75 +470,75 @@ var schematic_line = import_zod24.z.object({
436
470
  });
437
471
 
438
472
  // src/schematic/schematic_trace.ts
439
- var import_zod25 = require("zod");
440
- var schematic_trace = import_zod25.z.object({
441
- type: import_zod25.z.literal("schematic_trace"),
442
- schematic_trace_id: import_zod25.z.string(),
443
- source_trace_id: import_zod25.z.string(),
444
- edges: import_zod25.z.array(
445
- import_zod25.z.object({
446
- from: import_zod25.z.object({
447
- x: import_zod25.z.number(),
448
- y: import_zod25.z.number()
473
+ var import_zod26 = require("zod");
474
+ var schematic_trace = import_zod26.z.object({
475
+ type: import_zod26.z.literal("schematic_trace"),
476
+ schematic_trace_id: import_zod26.z.string(),
477
+ source_trace_id: import_zod26.z.string(),
478
+ edges: import_zod26.z.array(
479
+ import_zod26.z.object({
480
+ from: import_zod26.z.object({
481
+ x: import_zod26.z.number(),
482
+ y: import_zod26.z.number()
449
483
  }),
450
- to: import_zod25.z.object({
451
- x: import_zod25.z.number(),
452
- y: import_zod25.z.number()
484
+ to: import_zod26.z.object({
485
+ x: import_zod26.z.number(),
486
+ y: import_zod26.z.number()
453
487
  }),
454
- from_schematic_port_id: import_zod25.z.string().optional(),
455
- to_schematic_port_id: import_zod25.z.string().optional()
488
+ from_schematic_port_id: import_zod26.z.string().optional(),
489
+ to_schematic_port_id: import_zod26.z.string().optional()
456
490
  })
457
491
  )
458
492
  });
459
493
 
460
494
  // src/schematic/schematic_text.ts
461
- var import_zod26 = require("zod");
462
- var schematic_text = import_zod26.z.object({
463
- type: import_zod26.z.literal("schematic_text"),
464
- schematic_component_id: import_zod26.z.string(),
465
- schematic_text_id: import_zod26.z.string(),
466
- text: import_zod26.z.string(),
467
- position: import_zod26.z.object({
495
+ var import_zod27 = require("zod");
496
+ var schematic_text = import_zod27.z.object({
497
+ type: import_zod27.z.literal("schematic_text"),
498
+ schematic_component_id: import_zod27.z.string(),
499
+ schematic_text_id: import_zod27.z.string(),
500
+ text: import_zod27.z.string(),
501
+ position: import_zod27.z.object({
468
502
  x: distance,
469
503
  y: distance
470
504
  }),
471
- rotation: import_zod26.z.number().default(0),
472
- anchor: import_zod26.z.enum(["center", "left", "right", "top", "bottom"]).default("center")
505
+ rotation: import_zod27.z.number().default(0),
506
+ anchor: import_zod27.z.enum(["center", "left", "right", "top", "bottom"]).default("center")
473
507
  });
474
508
 
475
509
  // src/schematic/schematic_port.ts
476
- var import_zod27 = require("zod");
477
- var schematic_port = import_zod27.z.object({
478
- type: import_zod27.z.literal("schematic_port"),
479
- schematic_port_id: import_zod27.z.string(),
480
- source_port_id: import_zod27.z.string(),
481
- schematic_component_id: import_zod27.z.string().optional(),
510
+ var import_zod28 = require("zod");
511
+ var schematic_port = import_zod28.z.object({
512
+ type: import_zod28.z.literal("schematic_port"),
513
+ schematic_port_id: import_zod28.z.string(),
514
+ source_port_id: import_zod28.z.string(),
515
+ schematic_component_id: import_zod28.z.string().optional(),
482
516
  center: point,
483
- facing_direction: import_zod27.z.enum(["up", "down", "left", "right"]).optional()
517
+ facing_direction: import_zod28.z.enum(["up", "down", "left", "right"]).optional()
484
518
  }).describe("Defines a port on a schematic component");
485
519
 
486
520
  // src/schematic/schematic_net_label.ts
487
- var import_zod28 = require("zod");
488
- var schematic_net_label = import_zod28.z.object({
489
- type: import_zod28.z.literal("schematic_net_label"),
490
- source_net_id: import_zod28.z.string(),
521
+ var import_zod29 = require("zod");
522
+ var schematic_net_label = import_zod29.z.object({
523
+ type: import_zod29.z.literal("schematic_net_label"),
524
+ source_net_id: import_zod29.z.string(),
491
525
  center: point,
492
- anchor_side: import_zod28.z.enum(["top", "bottom", "left", "right"]),
493
- text: import_zod28.z.string()
526
+ anchor_side: import_zod29.z.enum(["top", "bottom", "left", "right"]),
527
+ text: import_zod29.z.string()
494
528
  });
495
529
 
496
530
  // src/schematic/schematic_error.ts
497
- var import_zod29 = require("zod");
498
- var schematic_error = import_zod29.z.object({
499
- schematic_error_id: import_zod29.z.string(),
500
- type: import_zod29.z.literal("schematic_error"),
531
+ var import_zod30 = require("zod");
532
+ var schematic_error = import_zod30.z.object({
533
+ schematic_error_id: import_zod30.z.string(),
534
+ type: import_zod30.z.literal("schematic_error"),
501
535
  // eventually each error type should be broken out into a dir of files
502
- error_type: import_zod29.z.literal("schematic_port_not_found"),
503
- message: import_zod29.z.string()
536
+ error_type: import_zod30.z.literal("schematic_port_not_found"),
537
+ message: import_zod30.z.string()
504
538
  }).describe("Defines a schematic error on the schematic");
505
539
 
506
540
  // src/pcb/properties/layer_ref.ts
507
- var import_zod30 = require("zod");
541
+ var import_zod31 = require("zod");
508
542
  var all_layers = [
509
543
  "top",
510
544
  "bottom",
@@ -515,9 +549,9 @@ var all_layers = [
515
549
  "inner5",
516
550
  "inner6"
517
551
  ];
518
- var layer_string = import_zod30.z.enum(all_layers);
552
+ var layer_string = import_zod31.z.enum(all_layers);
519
553
  var layer_ref = layer_string.or(
520
- import_zod30.z.object({
554
+ import_zod31.z.object({
521
555
  name: layer_string
522
556
  })
523
557
  ).transform((layer) => {
@@ -526,204 +560,258 @@ var layer_ref = layer_string.or(
526
560
  }
527
561
  return layer.name;
528
562
  });
529
- var visible_layer = import_zod30.z.enum(["top", "bottom"]);
563
+ var visible_layer = import_zod31.z.enum(["top", "bottom"]);
530
564
 
531
565
  // src/pcb/properties/pcb_route_hints.ts
532
- var import_zod31 = require("zod");
533
- var pcb_route_hint = import_zod31.z.object({
566
+ var import_zod32 = require("zod");
567
+ var pcb_route_hint = import_zod32.z.object({
534
568
  x: distance,
535
569
  y: distance,
536
- via: import_zod31.z.boolean().optional(),
570
+ via: import_zod32.z.boolean().optional(),
537
571
  via_to_layer: layer_ref.optional()
538
572
  });
539
- var pcb_route_hints = import_zod31.z.array(pcb_route_hint);
573
+ var pcb_route_hints = import_zod32.z.array(pcb_route_hint);
540
574
 
541
575
  // src/pcb/properties/route_hint_point.ts
542
- var import_zod32 = require("zod");
543
- var route_hint_point = import_zod32.z.object({
576
+ var import_zod33 = require("zod");
577
+ var route_hint_point = import_zod33.z.object({
544
578
  x: distance,
545
579
  y: distance,
546
- via: import_zod32.z.boolean().optional(),
580
+ via: import_zod33.z.boolean().optional(),
547
581
  to_layer: layer_ref.optional(),
548
582
  trace_width: distance.optional()
549
583
  });
550
584
 
551
585
  // src/pcb/pcb_component.ts
552
- var import_zod33 = require("zod");
553
- var pcb_component = import_zod33.z.object({
554
- type: import_zod33.z.literal("pcb_component"),
555
- pcb_component_id: import_zod33.z.string(),
556
- source_component_id: import_zod33.z.string(),
586
+ var import_zod34 = require("zod");
587
+
588
+ // src/utils/expect-types-match.ts
589
+ var expectTypesMatch = (shouldBe) => {
590
+ };
591
+
592
+ // src/pcb/pcb_component.ts
593
+ var pcb_component = import_zod34.z.object({
594
+ type: import_zod34.z.literal("pcb_component"),
595
+ pcb_component_id: getZodPrefixedIdWithDefault("pcb_component"),
596
+ source_component_id: import_zod34.z.string(),
557
597
  center: point,
558
598
  layer: layer_ref,
559
599
  rotation,
560
600
  width: length,
561
601
  height: length
562
602
  }).describe("Defines a component on the PCB");
603
+ expectTypesMatch(true);
563
604
 
564
605
  // src/pcb/pcb_hole.ts
565
- var import_zod34 = require("zod");
566
- var pcb_hole = import_zod34.z.object({
567
- type: import_zod34.z.literal("pcb_hole"),
568
- hole_shape: import_zod34.z.enum(["round", "square"]).default("round"),
569
- hole_diameter: import_zod34.z.number(),
606
+ var import_zod35 = require("zod");
607
+ var pcb_hole_circle_or_square = import_zod35.z.object({
608
+ type: import_zod35.z.literal("pcb_hole"),
609
+ pcb_hole_id: getZodPrefixedIdWithDefault("pcb_hole"),
610
+ hole_shape: import_zod35.z.enum(["circle", "square"]),
611
+ hole_diameter: import_zod35.z.number(),
570
612
  x: distance,
571
613
  y: distance
572
- }).or(
573
- import_zod34.z.object({
574
- type: import_zod34.z.literal("pcb_hole"),
575
- hole_shape: import_zod34.z.literal("oval"),
576
- hole_width: import_zod34.z.number(),
577
- hole_height: import_zod34.z.number(),
578
- x: distance,
579
- y: distance
580
- })
581
- ).describe("Defines a hole on the PCB");
614
+ });
615
+ var pcb_hole_circle_or_square_shape = pcb_hole_circle_or_square.describe(
616
+ "Defines a circular or square hole on the PCB"
617
+ );
618
+ expectTypesMatch(true);
619
+ var pcb_hole_oval = import_zod35.z.object({
620
+ type: import_zod35.z.literal("pcb_hole"),
621
+ pcb_hole_id: getZodPrefixedIdWithDefault("pcb_hole"),
622
+ hole_shape: import_zod35.z.literal("oval"),
623
+ hole_width: import_zod35.z.number(),
624
+ hole_height: import_zod35.z.number(),
625
+ x: distance,
626
+ y: distance
627
+ });
628
+ var pcb_hole_oval_shape = pcb_hole_oval.describe(
629
+ "Defines an oval hole on the PCB"
630
+ );
631
+ expectTypesMatch(true);
632
+ var pcb_hole = pcb_hole_circle_or_square.or(pcb_hole_oval);
582
633
 
583
634
  // src/pcb/pcb_plated_hole.ts
584
- var import_zod35 = require("zod");
585
- var pcb_plated_hole = import_zod35.z.object({
586
- type: import_zod35.z.literal("pcb_plated_hole"),
587
- shape: import_zod35.z.literal("circle"),
588
- outer_diameter: import_zod35.z.number(),
589
- hole_diameter: import_zod35.z.number(),
635
+ var import_zod36 = require("zod");
636
+ var pcb_plated_hole_circle = import_zod36.z.object({
637
+ type: import_zod36.z.literal("pcb_plated_hole"),
638
+ shape: import_zod36.z.literal("circle"),
639
+ outer_diameter: import_zod36.z.number(),
640
+ hole_diameter: import_zod36.z.number(),
590
641
  x: distance,
591
642
  y: distance,
592
- layers: import_zod35.z.array(layer_ref),
593
- port_hints: import_zod35.z.array(import_zod35.z.string()).optional(),
594
- pcb_component_id: import_zod35.z.string().optional(),
595
- pcb_port_id: import_zod35.z.string().optional()
596
- }).or(
597
- import_zod35.z.object({
598
- type: import_zod35.z.literal("pcb_plated_hole"),
599
- shape: import_zod35.z.enum(["oval", "pill"]),
600
- outer_width: import_zod35.z.number(),
601
- outer_height: import_zod35.z.number(),
602
- hole_width: import_zod35.z.number(),
603
- hole_height: import_zod35.z.number(),
604
- x: distance,
605
- y: distance,
606
- layers: import_zod35.z.array(layer_ref),
607
- port_hints: import_zod35.z.array(import_zod35.z.string()).optional(),
608
- pcb_component_id: import_zod35.z.string().optional(),
609
- pcb_port_id: import_zod35.z.string().optional()
610
- })
611
- ).describe("Defines a plated hole on the PCB");
643
+ layers: import_zod36.z.array(layer_ref),
644
+ port_hints: import_zod36.z.array(import_zod36.z.string()).optional(),
645
+ pcb_component_id: import_zod36.z.string().optional(),
646
+ pcb_port_id: import_zod36.z.string().optional(),
647
+ pcb_plated_hole_id: getZodPrefixedIdWithDefault("pcb_plated_hole")
648
+ });
649
+ var pcb_plated_hole_oval = import_zod36.z.object({
650
+ type: import_zod36.z.literal("pcb_plated_hole"),
651
+ shape: import_zod36.z.enum(["oval", "pill"]),
652
+ outer_width: import_zod36.z.number(),
653
+ outer_height: import_zod36.z.number(),
654
+ hole_width: import_zod36.z.number(),
655
+ hole_height: import_zod36.z.number(),
656
+ x: distance,
657
+ y: distance,
658
+ layers: import_zod36.z.array(layer_ref),
659
+ port_hints: import_zod36.z.array(import_zod36.z.string()).optional(),
660
+ pcb_component_id: import_zod36.z.string().optional(),
661
+ pcb_port_id: import_zod36.z.string().optional(),
662
+ pcb_plated_hole_id: getZodPrefixedIdWithDefault("pcb_plated_hole")
663
+ });
664
+ var pcb_plated_hole = import_zod36.z.union([
665
+ pcb_plated_hole_circle,
666
+ pcb_plated_hole_oval
667
+ ]);
668
+ expectTypesMatch(
669
+ true
670
+ );
671
+ expectTypesMatch(true);
612
672
 
613
673
  // src/pcb/pcb_port.ts
614
- var import_zod36 = require("zod");
615
- var pcb_port = import_zod36.z.object({
616
- type: import_zod36.z.literal("pcb_port"),
617
- pcb_port_id: import_zod36.z.string(),
618
- source_port_id: import_zod36.z.string(),
619
- pcb_component_id: import_zod36.z.string(),
674
+ var import_zod37 = require("zod");
675
+ var pcb_port = import_zod37.z.object({
676
+ type: import_zod37.z.literal("pcb_port"),
677
+ pcb_port_id: getZodPrefixedIdWithDefault("pcb_port"),
678
+ source_port_id: import_zod37.z.string(),
679
+ pcb_component_id: import_zod37.z.string(),
620
680
  x: distance,
621
681
  y: distance,
622
- layers: import_zod36.z.array(layer_ref)
682
+ layers: import_zod37.z.array(layer_ref)
623
683
  }).describe("Defines a port on the PCB");
684
+ expectTypesMatch(true);
624
685
 
625
686
  // src/pcb/pcb_smtpad.ts
626
- var import_zod37 = require("zod");
627
- var pcb_smtpad = import_zod37.z.union([
628
- import_zod37.z.object({
629
- pcb_smtpad_id: import_zod37.z.string(),
630
- type: import_zod37.z.literal("pcb_smtpad"),
631
- shape: import_zod37.z.literal("circle"),
632
- x: distance,
633
- y: distance,
634
- radius: import_zod37.z.number(),
635
- layer: layer_ref,
636
- port_hints: import_zod37.z.array(import_zod37.z.string()).optional(),
637
- pcb_component_id: import_zod37.z.string().optional(),
638
- pcb_port_id: import_zod37.z.string().optional()
639
- }),
640
- import_zod37.z.object({
641
- pcb_smtpad_id: import_zod37.z.string(),
642
- type: import_zod37.z.literal("pcb_smtpad"),
643
- shape: import_zod37.z.literal("rect"),
644
- x: distance,
645
- y: distance,
646
- width: import_zod37.z.number(),
647
- height: import_zod37.z.number(),
648
- layer: layer_ref,
649
- port_hints: import_zod37.z.array(import_zod37.z.string()).optional(),
650
- pcb_component_id: import_zod37.z.string().optional(),
651
- pcb_port_id: import_zod37.z.string().optional()
652
- })
653
- ]).describe("Defines an SMT pad on the PCB");
654
-
655
- // src/pcb/pcb_text.ts
656
687
  var import_zod38 = require("zod");
657
- var pcb_text = import_zod38.z.object({
658
- type: import_zod38.z.literal("pcb_text"),
659
- text: import_zod38.z.string(),
688
+ var pcb_smtpad_circle = import_zod38.z.object({
689
+ type: import_zod38.z.literal("pcb_smtpad"),
690
+ shape: import_zod38.z.literal("circle"),
691
+ pcb_smtpad_id: getZodPrefixedIdWithDefault("pcb_smtpad"),
660
692
  x: distance,
661
693
  y: distance,
662
- align: import_zod38.z.enum(["bottom-left"]),
663
- width: distance,
664
- height: distance,
665
- lines: import_zod38.z.number()
694
+ radius: import_zod38.z.number(),
695
+ layer: layer_ref,
696
+ port_hints: import_zod38.z.array(import_zod38.z.string()).optional(),
697
+ pcb_component_id: import_zod38.z.string().optional(),
698
+ pcb_port_id: import_zod38.z.string().optional()
699
+ });
700
+ var pcb_smtpad_rect = import_zod38.z.object({
701
+ type: import_zod38.z.literal("pcb_smtpad"),
702
+ shape: import_zod38.z.literal("rect"),
703
+ pcb_smtpad_id: getZodPrefixedIdWithDefault("pcb_smtpad"),
704
+ x: distance,
705
+ y: distance,
706
+ width: import_zod38.z.number(),
707
+ height: import_zod38.z.number(),
708
+ layer: layer_ref,
709
+ port_hints: import_zod38.z.array(import_zod38.z.string()).optional(),
710
+ pcb_component_id: import_zod38.z.string().optional(),
711
+ pcb_port_id: import_zod38.z.string().optional()
712
+ });
713
+ var pcb_smtpad = import_zod38.z.union([pcb_smtpad_circle, pcb_smtpad_rect]).describe("Defines an SMT pad on the PCB");
714
+ expectTypesMatch(true);
715
+ expectTypesMatch(true);
716
+
717
+ // src/pcb/pcb_text.ts
718
+ var import_zod39 = require("zod");
719
+ var pcb_text = import_zod39.z.object({
720
+ type: import_zod39.z.literal("pcb_text"),
721
+ pcb_text_id: getZodPrefixedIdWithDefault("pcb_text"),
722
+ text: import_zod39.z.string(),
723
+ center: point,
724
+ layer: layer_ref,
725
+ width: length,
726
+ height: length,
727
+ lines: import_zod39.z.number(),
728
+ align: import_zod39.z.enum(["bottom-left"])
666
729
  }).describe("Defines text on the PCB");
730
+ expectTypesMatch(true);
667
731
 
668
732
  // src/pcb/pcb_trace.ts
669
- var import_zod39 = require("zod");
670
- var pcb_trace = import_zod39.z.object({
671
- type: import_zod39.z.literal("pcb_trace"),
672
- source_trace_id: import_zod39.z.string().optional(),
673
- pcb_component_id: import_zod39.z.string().optional(),
674
- pcb_trace_id: import_zod39.z.string(),
675
- route_thickness_mode: import_zod39.z.enum(["constant", "interpolated"]).default("interpolated"),
676
- should_round_corners: import_zod39.z.boolean().optional(),
677
- route: import_zod39.z.array(
678
- import_zod39.z.union([
679
- import_zod39.z.object({
680
- route_type: import_zod39.z.literal("wire"),
733
+ var import_zod40 = require("zod");
734
+ var pcb_trace_route_point_wire = import_zod40.z.object({
735
+ route_type: import_zod40.z.literal("wire"),
736
+ x: distance,
737
+ y: distance,
738
+ width: distance,
739
+ start_pcb_port_id: import_zod40.z.string().optional(),
740
+ end_pcb_port_id: import_zod40.z.string().optional(),
741
+ layer: layer_ref
742
+ });
743
+ var pcb_trace_route_point_via = import_zod40.z.object({
744
+ route_type: import_zod40.z.literal("via"),
745
+ x: distance,
746
+ y: distance,
747
+ from_layer: import_zod40.z.string(),
748
+ to_layer: import_zod40.z.string()
749
+ });
750
+ var pcb_trace_route_point = import_zod40.z.union([
751
+ pcb_trace_route_point_wire,
752
+ pcb_trace_route_point_via
753
+ ]);
754
+ var pcb_trace = import_zod40.z.object({
755
+ type: import_zod40.z.literal("pcb_trace"),
756
+ source_trace_id: import_zod40.z.string().optional(),
757
+ pcb_component_id: import_zod40.z.string().optional(),
758
+ pcb_trace_id: getZodPrefixedIdWithDefault("pcb_trace"),
759
+ route_thickness_mode: import_zod40.z.enum(["constant", "interpolated"]).default("constant").optional(),
760
+ should_round_corners: import_zod40.z.boolean().optional(),
761
+ route: import_zod40.z.array(
762
+ import_zod40.z.union([
763
+ import_zod40.z.object({
764
+ route_type: import_zod40.z.literal("wire"),
681
765
  x: distance,
682
766
  y: distance,
683
767
  width: distance,
684
- start_pcb_port_id: import_zod39.z.string().optional(),
685
- end_pcb_port_id: import_zod39.z.string().optional(),
686
- layer: import_zod39.z.string()
768
+ start_pcb_port_id: import_zod40.z.string().optional(),
769
+ end_pcb_port_id: import_zod40.z.string().optional(),
770
+ layer: layer_ref
687
771
  }),
688
- import_zod39.z.object({
689
- route_type: import_zod39.z.literal("via"),
772
+ import_zod40.z.object({
773
+ route_type: import_zod40.z.literal("via"),
690
774
  x: distance,
691
775
  y: distance,
692
- from_layer: import_zod39.z.string(),
693
- to_layer: import_zod39.z.string()
776
+ from_layer: import_zod40.z.string(),
777
+ to_layer: import_zod40.z.string()
694
778
  })
695
779
  ])
696
780
  )
697
- });
781
+ }).describe("Defines a trace on the PCB");
782
+ expectTypesMatch(true);
783
+ expectTypesMatch(true);
698
784
 
699
785
  // src/pcb/pcb_trace_error.ts
700
- var import_zod40 = require("zod");
701
- var pcb_trace_error = import_zod40.z.object({
702
- pcb_error_id: import_zod40.z.string(),
703
- type: import_zod40.z.literal("pcb_error"),
704
- error_type: import_zod40.z.literal("pcb_trace_error"),
705
- message: import_zod40.z.string(),
786
+ var import_zod41 = require("zod");
787
+ var pcb_trace_error = import_zod41.z.object({
788
+ type: import_zod41.z.literal("pcb_trace_error"),
789
+ pcb_trace_error_id: getZodPrefixedIdWithDefault("pcb_trace_error"),
790
+ error_type: import_zod41.z.literal("pcb_trace_error"),
791
+ message: import_zod41.z.string(),
706
792
  center: point.optional(),
707
- pcb_trace_id: import_zod40.z.string(),
708
- source_trace_id: import_zod40.z.string(),
709
- pcb_component_ids: import_zod40.z.array(import_zod40.z.string()),
710
- pcb_port_ids: import_zod40.z.array(import_zod40.z.string())
793
+ pcb_trace_id: import_zod41.z.string(),
794
+ source_trace_id: import_zod41.z.string(),
795
+ pcb_component_ids: import_zod41.z.array(import_zod41.z.string()),
796
+ pcb_port_ids: import_zod41.z.array(import_zod41.z.string())
711
797
  }).describe("Defines a trace error on the PCB");
798
+ expectTypesMatch(true);
712
799
 
713
800
  // src/pcb/pcb_port_not_matched_error.ts
714
- var import_zod41 = require("zod");
715
- var pcb_port_not_matched_error = import_zod41.z.object({
716
- pcb_error_id: import_zod41.z.string(),
717
- type: import_zod41.z.literal("pcb_error"),
718
- error_type: import_zod41.z.literal("pcb_port_not_matched_error"),
719
- message: import_zod41.z.string(),
720
- pcb_component_ids: import_zod41.z.array(import_zod41.z.string())
721
- }).describe("Defines a trace error on the PCB");
801
+ var import_zod42 = require("zod");
802
+ var pcb_port_not_matched_error = import_zod42.z.object({
803
+ type: import_zod42.z.literal("pcb_port_not_matched_error"),
804
+ pcb_error_id: getZodPrefixedIdWithDefault("pcb_error"),
805
+ message: import_zod42.z.string(),
806
+ pcb_component_ids: import_zod42.z.array(import_zod42.z.string())
807
+ }).describe("Defines a trace error on the PCB where a port is not matched");
808
+ expectTypesMatch(true);
722
809
 
723
810
  // src/pcb/pcb_via.ts
724
- var import_zod42 = require("zod");
725
- var pcb_via = import_zod42.z.object({
726
- type: import_zod42.z.literal("pcb_via"),
811
+ var import_zod43 = require("zod");
812
+ var pcb_via = import_zod43.z.object({
813
+ type: import_zod43.z.literal("pcb_via"),
814
+ pcb_via_id: getZodPrefixedIdWithDefault("pcb_via"),
727
815
  x: distance,
728
816
  y: distance,
729
817
  outer_diameter: distance.default("0.6mm"),
@@ -732,44 +820,48 @@ var pcb_via = import_zod42.z.object({
732
820
  from_layer: layer_ref.optional(),
733
821
  /** @deprecated */
734
822
  to_layer: layer_ref.optional(),
735
- layers: import_zod42.z.array(layer_ref)
823
+ layers: import_zod43.z.array(layer_ref)
736
824
  }).describe("Defines a via on the PCB");
825
+ expectTypesMatch(true);
737
826
 
738
827
  // src/pcb/pcb_board.ts
739
- var import_zod43 = require("zod");
740
- var pcb_board = import_zod43.z.object({
741
- type: import_zod43.z.literal("pcb_board"),
742
- pcb_board_id: import_zod43.z.string().default("pcb_board_0"),
828
+ var import_zod44 = require("zod");
829
+ var pcb_board = import_zod44.z.object({
830
+ type: import_zod44.z.literal("pcb_board"),
831
+ pcb_board_id: getZodPrefixedIdWithDefault("pcb_board"),
743
832
  width: length,
744
833
  height: length,
745
- center: point
834
+ center: point,
835
+ outline: import_zod44.z.array(point).optional()
746
836
  }).describe("Defines the board outline of the PCB");
837
+ expectTypesMatch(true);
747
838
 
748
839
  // src/pcb/pcb_placement_error.ts
749
- var import_zod44 = require("zod");
750
- var pcb_placement_error = import_zod44.z.object({
751
- pcb_error_id: import_zod44.z.string(),
752
- type: import_zod44.z.literal("pcb_error"),
753
- error_type: import_zod44.z.literal("pcb_placement_error"),
754
- message: import_zod44.z.string()
840
+ var import_zod45 = require("zod");
841
+ var pcb_placement_error = import_zod45.z.object({
842
+ type: import_zod45.z.literal("pcb_placement_error"),
843
+ pcb_placement_error_id: getZodPrefixedIdWithDefault("pcb_placement_error"),
844
+ message: import_zod45.z.string()
755
845
  }).describe("Defines a placement error on the PCB");
846
+ expectTypesMatch(true);
756
847
 
757
848
  // src/pcb/pcb_trace_hint.ts
758
- var import_zod45 = require("zod");
759
- var pcb_trace_hint = import_zod45.z.object({
760
- pcb_trace_hint_id: import_zod45.z.string(),
761
- type: import_zod45.z.literal("pcb_trace_hint"),
762
- pcb_port_id: import_zod45.z.string(),
763
- pcb_component_id: import_zod45.z.string(),
764
- route: import_zod45.z.array(route_hint_point.optional())
765
- }).describe("A hint that can be used to generate a PCB trace");
766
-
767
- // src/pcb/pcb_silkscreen_line.ts
768
849
  var import_zod46 = require("zod");
769
- var pcb_silkscreen_line = import_zod46.z.object({
770
- type: import_zod46.z.literal("pcb_silkscreen_line"),
771
- pcb_silkscreen_line_id: import_zod46.z.string(),
850
+ var pcb_trace_hint = import_zod46.z.object({
851
+ type: import_zod46.z.literal("pcb_trace_hint"),
852
+ pcb_trace_hint_id: getZodPrefixedIdWithDefault("pcb_trace_hint"),
853
+ pcb_port_id: import_zod46.z.string(),
772
854
  pcb_component_id: import_zod46.z.string(),
855
+ route: import_zod46.z.array(route_hint_point)
856
+ }).describe("A hint that can be used during generation of a PCB trace");
857
+ expectTypesMatch(true);
858
+
859
+ // src/pcb/pcb_silkscreen_line.ts
860
+ var import_zod47 = require("zod");
861
+ var pcb_silkscreen_line = import_zod47.z.object({
862
+ type: import_zod47.z.literal("pcb_silkscreen_line"),
863
+ pcb_silkscreen_line_id: getZodPrefixedIdWithDefault("pcb_silkscreen_line"),
864
+ pcb_component_id: import_zod47.z.string(),
773
865
  stroke_width: distance.default("0.1mm"),
774
866
  x1: distance,
775
867
  y1: distance,
@@ -777,141 +869,161 @@ var pcb_silkscreen_line = import_zod46.z.object({
777
869
  y2: distance,
778
870
  layer: visible_layer
779
871
  }).describe("Defines a silkscreen line on the PCB");
872
+ expectTypesMatch(true);
780
873
 
781
874
  // src/pcb/pcb_silkscreen_path.ts
782
- var import_zod47 = require("zod");
783
- var pcb_silkscreen_path = import_zod47.z.object({
784
- type: import_zod47.z.literal("pcb_silkscreen_path"),
785
- pcb_silkscreen_path_id: import_zod47.z.string(),
786
- pcb_component_id: import_zod47.z.string(),
875
+ var import_zod48 = require("zod");
876
+ var pcb_silkscreen_path = import_zod48.z.object({
877
+ type: import_zod48.z.literal("pcb_silkscreen_path"),
878
+ pcb_silkscreen_path_id: getZodPrefixedIdWithDefault("pcb_silkscreen_path"),
879
+ pcb_component_id: import_zod48.z.string(),
787
880
  layer: visible_layer,
788
- route: import_zod47.z.array(point),
881
+ route: import_zod48.z.array(point),
789
882
  stroke_width: length
790
883
  }).describe("Defines a silkscreen path on the PCB");
884
+ expectTypesMatch(true);
791
885
 
792
886
  // src/pcb/pcb_silkscreen_text.ts
793
- var import_zod48 = require("zod");
794
- var pcb_silkscreen_text = import_zod48.z.object({
795
- type: import_zod48.z.literal("pcb_silkscreen_text"),
796
- font: import_zod48.z.literal("tscircuit2024").default("tscircuit2024"),
887
+ var import_zod49 = require("zod");
888
+ var pcb_silkscreen_text = import_zod49.z.object({
889
+ type: import_zod49.z.literal("pcb_silkscreen_text"),
890
+ pcb_silkscreen_text_id: getZodPrefixedIdWithDefault("pcb_silkscreen_text"),
891
+ font: import_zod49.z.literal("tscircuit2024").default("tscircuit2024"),
797
892
  font_size: distance.default("0.2mm"),
798
- pcb_component_id: import_zod48.z.string(),
799
- text: import_zod48.z.string(),
800
- layer: visible_layer,
893
+ pcb_component_id: import_zod49.z.string(),
894
+ text: import_zod49.z.string(),
895
+ layer: layer_ref,
801
896
  anchor_position: point.default({ x: 0, y: 0 }),
802
- anchor_alignment: import_zod48.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center")
897
+ anchor_alignment: import_zod49.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center")
803
898
  }).describe("Defines silkscreen text on the PCB");
899
+ expectTypesMatch(true);
804
900
 
805
901
  // src/pcb/pcb_silkscreen_rect.ts
806
- var import_zod49 = require("zod");
807
- var pcb_silkscreen_rect = import_zod49.z.object({
808
- type: import_zod49.z.literal("pcb_silkscreen_rect"),
809
- pcb_silkscreen_rect_id: import_zod49.z.string(),
810
- pcb_component_id: import_zod49.z.string(),
902
+ var import_zod50 = require("zod");
903
+ var pcb_silkscreen_rect = import_zod50.z.object({
904
+ type: import_zod50.z.literal("pcb_silkscreen_rect"),
905
+ pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault("pcb_silkscreen_rect"),
906
+ pcb_component_id: import_zod50.z.string(),
811
907
  center: point,
812
- width: distance,
813
- height: distance,
814
- layer: visible_layer
908
+ width: length,
909
+ height: length,
910
+ layer: layer_ref
815
911
  }).describe("Defines a silkscreen rect on the PCB");
912
+ expectTypesMatch(true);
816
913
 
817
914
  // src/pcb/pcb_silkscreen_circle.ts
818
- var import_zod50 = require("zod");
819
- var pcb_silkscreen_circle = import_zod50.z.object({
820
- type: import_zod50.z.literal("pcb_silkscreen_circle"),
821
- pcb_silkscreen_circle_id: import_zod50.z.string(),
822
- pcb_component_id: import_zod50.z.string(),
915
+ var import_zod51 = require("zod");
916
+ var pcb_silkscreen_circle = import_zod51.z.object({
917
+ type: import_zod51.z.literal("pcb_silkscreen_circle"),
918
+ pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(
919
+ "pcb_silkscreen_circle"
920
+ ),
921
+ pcb_component_id: import_zod51.z.string(),
823
922
  center: point,
824
- radius: distance,
923
+ radius: length,
825
924
  layer: visible_layer
826
925
  }).describe("Defines a silkscreen circle on the PCB");
926
+ expectTypesMatch(true);
827
927
 
828
928
  // src/pcb/pcb_silkscreen_oval.ts
829
- var import_zod51 = require("zod");
830
- var pcb_silkscreen_oval = import_zod51.z.object({
831
- type: import_zod51.z.literal("pcb_silkscreen_oval"),
832
- pcb_silkscreen_oval_id: import_zod51.z.string(),
833
- pcb_component_id: import_zod51.z.string(),
929
+ var import_zod52 = require("zod");
930
+ var pcb_silkscreen_oval = import_zod52.z.object({
931
+ type: import_zod52.z.literal("pcb_silkscreen_oval"),
932
+ pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault("pcb_silkscreen_oval"),
933
+ pcb_component_id: import_zod52.z.string(),
834
934
  center: point,
835
935
  radius_x: distance,
836
936
  radius_y: distance,
837
937
  layer: visible_layer
838
938
  }).describe("Defines a silkscreen oval on the PCB");
939
+ expectTypesMatch(true);
839
940
 
840
941
  // src/pcb/pcb_fabrication_note_text.ts
841
- var import_zod52 = require("zod");
842
- var pcb_fabrication_note_text = import_zod52.z.object({
843
- type: import_zod52.z.literal("pcb_fabrication_note_text"),
844
- font: import_zod52.z.literal("tscircuit2024").default("tscircuit2024"),
942
+ var import_zod53 = require("zod");
943
+ var pcb_fabrication_note_text = import_zod53.z.object({
944
+ type: import_zod53.z.literal("pcb_fabrication_note_text"),
945
+ pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(
946
+ "pcb_fabrication_note_text"
947
+ ),
948
+ font: import_zod53.z.literal("tscircuit2024").default("tscircuit2024"),
845
949
  font_size: distance.default("1mm"),
846
- pcb_component_id: import_zod52.z.string(),
847
- text: import_zod52.z.string(),
950
+ pcb_component_id: import_zod53.z.string(),
951
+ text: import_zod53.z.string(),
848
952
  layer: visible_layer,
849
953
  anchor_position: point.default({ x: 0, y: 0 }),
850
- anchor_alignment: import_zod52.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center")
954
+ anchor_alignment: import_zod53.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
955
+ color: import_zod53.z.string().optional()
851
956
  }).describe(
852
957
  "Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"
853
958
  );
959
+ expectTypesMatch(true);
854
960
 
855
961
  // src/pcb/pcb_fabrication_note_path.ts
856
- var import_zod53 = require("zod");
857
- var pcb_fabrication_note_path = import_zod53.z.object({
858
- type: import_zod53.z.literal("pcb_fabrication_note_path"),
859
- fabrication_note_path_id: import_zod53.z.string(),
860
- pcb_component_id: import_zod53.z.string(),
861
- layer: visible_layer,
862
- route: import_zod53.z.array(point),
863
- stroke_width: length
962
+ var import_zod54 = require("zod");
963
+ var pcb_fabrication_note_path = import_zod54.z.object({
964
+ type: import_zod54.z.literal("pcb_fabrication_note_path"),
965
+ pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(
966
+ "pcb_fabrication_note_path"
967
+ ),
968
+ pcb_component_id: import_zod54.z.string(),
969
+ layer: layer_ref,
970
+ route: import_zod54.z.array(point),
971
+ stroke_width: length,
972
+ color: import_zod54.z.string().optional()
864
973
  }).describe(
865
974
  "Defines a fabrication path on the PCB for fabricators or assemblers"
866
975
  );
976
+ expectTypesMatch(true);
867
977
 
868
978
  // src/pcb/pcb_keepout.ts
869
- var import_zod54 = require("zod");
870
- var pcb_keepout = import_zod54.z.object({
871
- type: import_zod54.z.literal("pcb_keepout"),
872
- pcb_keepout_id: import_zod54.z.string(),
873
- layer: import_zod54.z.array(import_zod54.z.string()).optional(),
979
+ var import_zod55 = require("zod");
980
+ var pcb_keepout = import_zod55.z.object({
981
+ type: import_zod55.z.literal("pcb_keepout"),
982
+ shape: import_zod55.z.literal("rect"),
983
+ center: point,
984
+ width: distance,
985
+ height: distance,
986
+ pcb_keepout_id: import_zod55.z.string(),
987
+ layers: import_zod55.z.array(import_zod55.z.string()),
874
988
  // Specify layers where the keepout applies
875
- description: import_zod54.z.string().optional()
989
+ description: import_zod55.z.string().optional()
876
990
  // Optional description of the keepout
877
- }).and(
878
- import_zod54.z.object({
879
- shape: import_zod54.z.literal("rect"),
880
- x: distance,
881
- y: distance,
882
- width: distance,
883
- height: distance
884
- }).or(
885
- import_zod54.z.object({
886
- shape: import_zod54.z.literal("circle"),
887
- center: point,
888
- radius: distance
889
- })
890
- )
991
+ }).or(
992
+ import_zod55.z.object({
993
+ type: import_zod55.z.literal("pcb_keepout"),
994
+ shape: import_zod55.z.literal("circle"),
995
+ center: point,
996
+ radius: distance,
997
+ pcb_keepout_id: import_zod55.z.string(),
998
+ layers: import_zod55.z.array(import_zod55.z.string()),
999
+ // Specify layers where the keepout applies
1000
+ description: import_zod55.z.string().optional()
1001
+ // Optional description of the keepout
1002
+ })
891
1003
  );
892
1004
 
893
1005
  // src/cad/cad_component.ts
894
- var import_zod55 = require("zod");
895
- var cad_component = import_zod55.z.object({
896
- type: import_zod55.z.literal("cad_component"),
897
- cad_component_id: import_zod55.z.string(),
898
- pcb_component_id: import_zod55.z.string(),
899
- source_component_id: import_zod55.z.string(),
1006
+ var import_zod56 = require("zod");
1007
+ var cad_component = import_zod56.z.object({
1008
+ type: import_zod56.z.literal("cad_component"),
1009
+ cad_component_id: import_zod56.z.string(),
1010
+ pcb_component_id: import_zod56.z.string(),
1011
+ source_component_id: import_zod56.z.string(),
900
1012
  position: point3,
901
1013
  rotation: point3.optional(),
902
1014
  size: point3.optional(),
903
1015
  layer: layer_ref.optional(),
904
1016
  // These are all ways to generate/load the 3d model
905
- footprinter_string: import_zod55.z.string().optional(),
906
- model_obj_url: import_zod55.z.string().optional(),
907
- model_stl_url: import_zod55.z.string().optional(),
908
- model_3mf_url: import_zod55.z.string().optional(),
909
- model_jscad: import_zod55.z.any().optional()
1017
+ footprinter_string: import_zod56.z.string().optional(),
1018
+ model_obj_url: import_zod56.z.string().optional(),
1019
+ model_stl_url: import_zod56.z.string().optional(),
1020
+ model_3mf_url: import_zod56.z.string().optional(),
1021
+ model_jscad: import_zod56.z.any().optional()
910
1022
  }).describe("Defines a component on the PCB");
911
1023
 
912
- // src/any_soup_element.ts
913
- var import_zod56 = require("zod");
914
- var any_soup_element = import_zod56.z.union([
1024
+ // src/any_circuit_element.ts
1025
+ var import_zod57 = require("zod");
1026
+ var any_circuit_element = import_zod57.z.union([
915
1027
  source_trace,
916
1028
  source_port,
917
1029
  any_source_component,
@@ -927,6 +1039,7 @@ var any_soup_element = import_zod56.z.union([
927
1039
  pcb_component,
928
1040
  pcb_hole,
929
1041
  pcb_plated_hole,
1042
+ pcb_keepout,
930
1043
  pcb_port,
931
1044
  pcb_text,
932
1045
  pcb_trace,
@@ -956,15 +1069,18 @@ var any_soup_element = import_zod56.z.union([
956
1069
  schematic_net_label,
957
1070
  cad_component
958
1071
  ]);
1072
+ var any_soup_element = any_circuit_element;
959
1073
  // Annotate the CommonJS export names for ESM import in node:
960
1074
  0 && (module.exports = {
961
1075
  all_layers,
1076
+ any_circuit_element,
962
1077
  any_soup_element,
963
1078
  any_source_component,
964
1079
  cad_component,
965
1080
  capacitance,
966
1081
  current,
967
1082
  distance,
1083
+ getZodPrefixedIdWithDefault,
968
1084
  inductance,
969
1085
  layer_ref,
970
1086
  layer_string,
@@ -974,6 +1090,8 @@ var any_soup_element = import_zod56.z.union([
974
1090
  pcb_fabrication_note_path,
975
1091
  pcb_fabrication_note_text,
976
1092
  pcb_hole,
1093
+ pcb_hole_circle_or_square_shape,
1094
+ pcb_hole_oval_shape,
977
1095
  pcb_keepout,
978
1096
  pcb_placement_error,
979
1097
  pcb_plated_hole,
@@ -992,6 +1110,9 @@ var any_soup_element = import_zod56.z.union([
992
1110
  pcb_trace,
993
1111
  pcb_trace_error,
994
1112
  pcb_trace_hint,
1113
+ pcb_trace_route_point,
1114
+ pcb_trace_route_point_via,
1115
+ pcb_trace_route_point_wire,
995
1116
  pcb_via,
996
1117
  point,
997
1118
  point3,
@@ -1006,6 +1127,7 @@ var any_soup_element = import_zod56.z.union([
1006
1127
  schematic_line,
1007
1128
  schematic_net_label,
1008
1129
  schematic_path,
1130
+ schematic_pin_styles,
1009
1131
  schematic_port,
1010
1132
  schematic_text,
1011
1133
  schematic_trace,