@tscircuit/props 0.0.681 → 0.0.683

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
@@ -193,8 +193,16 @@ var assemblyMotorProps = z9.object({
193
193
  displayName: z9.string().optional(),
194
194
  standard: z9.enum(["nema8", "nema17", "nema23"]).optional(),
195
195
  model: z9.string().trim().min(1).optional(),
196
- shaftFacingDirection: cadModelAxisDirection.default("z+")
196
+ shaftFacingDirection: cadModelAxisDirection.default("z+"),
197
+ wireConnection: z9.enum(["none", "stubs", "jst-ph-6"]).optional()
197
198
  }).superRefine((motor, context) => {
199
+ if (motor.model !== void 0 && motor.wireConnection !== void 0) {
200
+ context.addIssue({
201
+ code: z9.ZodIssueCode.custom,
202
+ message: "Set wireConnection in the custom model string, or use standard",
203
+ path: ["wireConnection"]
204
+ });
205
+ }
198
206
  if (motor.standard === void 0 && motor.model === void 0) {
199
207
  context.addIssue({
200
208
  code: z9.ZodIssueCode.custom,
@@ -265,6 +273,42 @@ var assemblyScreenProps = z10.object({
265
273
  });
266
274
  expectTypesMatch(true);
267
275
 
276
+ // lib/assembly/board-mounting.ts
277
+ import { z as z11 } from "zod";
278
+ var identityPathPattern = "[A-Za-z_][A-Za-z0-9_-]*(?:\\.[A-Za-z_][A-Za-z0-9_-]*)*";
279
+ var referencePattern = "[A-Za-z_][A-Za-z0-9_-]*(?:\\.[A-Za-z_][A-Za-z0-9_-]*)+";
280
+ var reference = new RegExp(`^${referencePattern}$`);
281
+ var anchor = new RegExp(`^${identityPathPattern}$`);
282
+ var expression = new RegExp(
283
+ `^calc\\(\\s*(${referencePattern})\\s*(?:([+-])\\s*((?:\\d+(?:\\.\\d*)?|\\.\\d+))\\s*(degcw|degccw))?\\s*\\)$`
284
+ );
285
+ var boardMountRotation = z11.string().trim().superRefine((value, ctx) => {
286
+ if (reference.test(value)) return;
287
+ const match = expression.exec(value);
288
+ if (!match) {
289
+ ctx.addIssue({
290
+ code: z11.ZodIssueCode.custom,
291
+ message: "Expected a qualified mounting reference or calc(reference +/- Ndegcw|Ndegccw)"
292
+ });
293
+ return;
294
+ }
295
+ if (match[3] !== void 0 && !Number.isFinite(Number(match[3]))) {
296
+ ctx.addIssue({
297
+ code: z11.ZodIssueCode.custom,
298
+ message: "Mount rotation angle must be finite"
299
+ });
300
+ }
301
+ });
302
+ var boardMountRotationAnchor = z11.custom((value) => typeof value === "string", {
303
+ message: "Expected a board edge or component identity path"
304
+ }).transform((value) => value.trim()).refine((value) => anchor.test(value), {
305
+ message: "Expected a board edge or component identity path"
306
+ });
307
+ var boardMountOrientation = z11.enum([
308
+ "top_layer_toward_mount_face",
309
+ "bottom_layer_toward_mount_face"
310
+ ]);
311
+
268
312
  // lib/assembly/index.ts
269
313
  var assemblyProps = {
270
314
  device: assemblyDeviceProps,
@@ -275,16 +319,16 @@ var assemblyProps = {
275
319
  };
276
320
 
277
321
  // lib/enclosure/cutout-aperture.ts
278
- import { z as z11 } from "zod";
322
+ import { z as z12 } from "zod";
279
323
  var enclosureCutoutApertureShapes = ["pill", "rect", "circle"];
280
- var cutoutApertureBaseProps = z11.object({
324
+ var cutoutApertureBaseProps = z12.object({
281
325
  margin: distance.optional(),
282
326
  widthDimensionOffset: distance.optional(),
283
327
  heightDimensionOffset: distance.optional(),
284
328
  depth: distance.optional()
285
329
  });
286
330
  var apertureOnlyProps = cutoutApertureBaseProps.shape;
287
- var enclosureCutoutApertureProps = z11.discriminatedUnion("shape", [
331
+ var enclosureCutoutApertureProps = z12.discriminatedUnion("shape", [
288
332
  pillShapeProps.extend(apertureOnlyProps),
289
333
  rectShapeProps.extend(apertureOnlyProps),
290
334
  circleShapeProps.extend(apertureOnlyProps)
@@ -292,10 +336,10 @@ var enclosureCutoutApertureProps = z11.discriminatedUnion("shape", [
292
336
  expectTypesMatch(true);
293
337
 
294
338
  // lib/enclosure/fdm/box.ts
295
- import { z as z12 } from "zod";
296
- var enclosureFdmBoxProps = z12.object({
297
- name: z12.string().optional(),
298
- boardRef: z12.string().min(1),
339
+ import { z as z13 } from "zod";
340
+ var enclosureFdmBoxProps = z13.object({
341
+ name: z13.string().optional(),
342
+ boardRef: z13.string().min(1),
299
343
  width: distance.optional(),
300
344
  height: distance.optional(),
301
345
  depth: distance.optional(),
@@ -306,8 +350,8 @@ var enclosureFdmBoxProps = z12.object({
306
350
  standoffHeight: distance.optional(),
307
351
  topHeadroom: distance.optional(),
308
352
  lidLipDepth: distance.optional(),
309
- disableCutouts: z12.boolean().optional(),
310
- showHiddenEdges: z12.boolean().optional()
353
+ disableCutouts: z13.boolean().optional(),
354
+ showHiddenEdges: z13.boolean().optional()
311
355
  });
312
356
  expectTypesMatch(true);
313
357
 
@@ -320,8 +364,8 @@ var enclosureProps = {
320
364
  };
321
365
 
322
366
  // lib/common/portHints.ts
323
- import { z as z13 } from "zod";
324
- var portHints = z13.array(z13.string().or(z13.number()));
367
+ import { z as z14 } from "zod";
368
+ var portHints = z14.array(z14.string().or(z14.number()));
325
369
  expectTypesMatch(true);
326
370
 
327
371
  // lib/common/layout.ts
@@ -331,20 +375,20 @@ import {
331
375
  rotation as rotation2,
332
376
  supplier_name
333
377
  } from "circuit-json";
334
- import { z as z23 } from "zod";
378
+ import { z as z24 } from "zod";
335
379
 
336
380
  // lib/common/footprintProp.ts
337
- import { z as z14 } from "zod";
338
- var footprintProp = z14.custom((v) => true);
381
+ import { z as z15 } from "zod";
382
+ var footprintProp = z15.custom((v) => true);
339
383
 
340
384
  // lib/common/kicadFootprintMetadata.ts
341
385
  import { distance as distance4, rotation } from "circuit-json";
342
- import { z as z16 } from "zod";
386
+ import { z as z17 } from "zod";
343
387
 
344
388
  // lib/common/point.ts
345
389
  import { distance as distance3 } from "circuit-json";
346
- import { z as z15 } from "zod";
347
- var point = z15.object({
390
+ import { z as z16 } from "zod";
391
+ var point = z16.object({
348
392
  x: distance3,
349
393
  y: distance3
350
394
  });
@@ -354,25 +398,25 @@ var kicadAt = point.extend({
354
398
  rotation: rotation.optional()
355
399
  });
356
400
  expectTypesMatch(true);
357
- var kicadFont = z16.object({
401
+ var kicadFont = z17.object({
358
402
  size: point.optional(),
359
403
  thickness: distance4.optional()
360
404
  });
361
405
  expectTypesMatch(true);
362
- var kicadEffects = z16.object({
406
+ var kicadEffects = z17.object({
363
407
  font: kicadFont.optional()
364
408
  });
365
409
  expectTypesMatch(true);
366
- var kicadProperty = z16.object({
367
- value: z16.string(),
410
+ var kicadProperty = z17.object({
411
+ value: z17.string(),
368
412
  at: kicadAt.optional(),
369
- layer: z16.string().optional(),
370
- uuid: z16.string().optional(),
371
- hide: z16.boolean().optional(),
413
+ layer: z17.string().optional(),
414
+ uuid: z17.string().optional(),
415
+ hide: z17.boolean().optional(),
372
416
  effects: kicadEffects.optional()
373
417
  });
374
418
  expectTypesMatch(true);
375
- var kicadFootprintProperties = z16.object({
419
+ var kicadFootprintProperties = z17.object({
376
420
  Reference: kicadProperty.optional(),
377
421
  Value: kicadProperty.optional(),
378
422
  Datasheet: kicadProperty.optional(),
@@ -381,74 +425,74 @@ var kicadFootprintProperties = z16.object({
381
425
  expectTypesMatch(
382
426
  true
383
427
  );
384
- var kicadFootprintAttributes = z16.object({
385
- through_hole: z16.boolean().optional(),
386
- smd: z16.boolean().optional(),
387
- exclude_from_pos_files: z16.boolean().optional(),
388
- exclude_from_bom: z16.boolean().optional()
428
+ var kicadFootprintAttributes = z17.object({
429
+ through_hole: z17.boolean().optional(),
430
+ smd: z17.boolean().optional(),
431
+ exclude_from_pos_files: z17.boolean().optional(),
432
+ exclude_from_bom: z17.boolean().optional()
389
433
  });
390
434
  expectTypesMatch(
391
435
  true
392
436
  );
393
- var kicadFootprintPad = z16.object({
394
- name: z16.string(),
395
- type: z16.string(),
396
- shape: z16.string().optional(),
437
+ var kicadFootprintPad = z17.object({
438
+ name: z17.string(),
439
+ type: z17.string(),
440
+ shape: z17.string().optional(),
397
441
  at: kicadAt.optional(),
398
442
  size: point.optional(),
399
443
  drill: distance4.optional(),
400
- layers: z16.array(z16.string()).optional(),
401
- removeUnusedLayers: z16.boolean().optional(),
402
- uuid: z16.string().optional()
444
+ layers: z17.array(z17.string()).optional(),
445
+ removeUnusedLayers: z17.boolean().optional(),
446
+ uuid: z17.string().optional()
403
447
  });
404
448
  expectTypesMatch(true);
405
- var kicadFootprintModel = z16.object({
406
- path: z16.string(),
449
+ var kicadFootprintModel = z17.object({
450
+ path: z17.string(),
407
451
  offset: point3.optional(),
408
452
  scale: point3.optional(),
409
453
  rotate: point3.optional()
410
454
  });
411
455
  expectTypesMatch(true);
412
- var kicadFootprintMetadata = z16.object({
413
- footprintName: z16.string().optional(),
414
- version: z16.union([z16.number(), z16.string()]).optional(),
415
- generator: z16.string().optional(),
416
- generatorVersion: z16.union([z16.number(), z16.string()]).optional(),
417
- layer: z16.string().optional(),
456
+ var kicadFootprintMetadata = z17.object({
457
+ footprintName: z17.string().optional(),
458
+ version: z17.union([z17.number(), z17.string()]).optional(),
459
+ generator: z17.string().optional(),
460
+ generatorVersion: z17.union([z17.number(), z17.string()]).optional(),
461
+ layer: z17.string().optional(),
418
462
  properties: kicadFootprintProperties.optional(),
419
463
  attributes: kicadFootprintAttributes.optional(),
420
- pads: z16.array(kicadFootprintPad).optional(),
421
- embeddedFonts: z16.boolean().optional(),
464
+ pads: z17.array(kicadFootprintPad).optional(),
465
+ embeddedFonts: z17.boolean().optional(),
422
466
  model: kicadFootprintModel.optional()
423
467
  });
424
468
  expectTypesMatch(true);
425
469
 
426
470
  // lib/common/kicadSymbolMetadata.ts
427
471
  import { distance as distance5 } from "circuit-json";
428
- import { z as z17 } from "zod";
429
- var kicadSymbolPinNumbers = z17.object({
430
- hide: z17.boolean().optional()
472
+ import { z as z18 } from "zod";
473
+ var kicadSymbolPinNumbers = z18.object({
474
+ hide: z18.boolean().optional()
431
475
  });
432
476
  expectTypesMatch(true);
433
- var kicadSymbolPinNames = z17.object({
477
+ var kicadSymbolPinNames = z18.object({
434
478
  offset: distance5.optional(),
435
- hide: z17.boolean().optional()
479
+ hide: z18.boolean().optional()
436
480
  });
437
481
  expectTypesMatch(true);
438
- var kicadSymbolEffects = z17.object({
482
+ var kicadSymbolEffects = z18.object({
439
483
  font: kicadFont.optional(),
440
- justify: z17.union([z17.string(), z17.array(z17.string())]).optional(),
441
- hide: z17.boolean().optional()
484
+ justify: z18.union([z18.string(), z18.array(z18.string())]).optional(),
485
+ hide: z18.boolean().optional()
442
486
  });
443
487
  expectTypesMatch(true);
444
- var kicadSymbolProperty = z17.object({
445
- value: z17.string(),
446
- id: z17.union([z17.number(), z17.string()]).optional(),
488
+ var kicadSymbolProperty = z18.object({
489
+ value: z18.string(),
490
+ id: z18.union([z18.number(), z18.string()]).optional(),
447
491
  at: kicadAt.optional(),
448
492
  effects: kicadSymbolEffects.optional()
449
493
  });
450
494
  expectTypesMatch(true);
451
- var kicadSymbolProperties = z17.object({
495
+ var kicadSymbolProperties = z18.object({
452
496
  Reference: kicadSymbolProperty.optional(),
453
497
  Value: kicadSymbolProperty.optional(),
454
498
  Footprint: kicadSymbolProperty.optional(),
@@ -458,55 +502,55 @@ var kicadSymbolProperties = z17.object({
458
502
  ki_fp_filters: kicadSymbolProperty.optional()
459
503
  });
460
504
  expectTypesMatch(true);
461
- var kicadSymbolMetadata = z17.object({
462
- symbolName: z17.string().optional(),
463
- extends: z17.string().optional(),
505
+ var kicadSymbolMetadata = z18.object({
506
+ symbolName: z18.string().optional(),
507
+ extends: z18.string().optional(),
464
508
  pinNumbers: kicadSymbolPinNumbers.optional(),
465
509
  pinNames: kicadSymbolPinNames.optional(),
466
- excludeFromSim: z17.boolean().optional(),
467
- inBom: z17.boolean().optional(),
468
- onBoard: z17.boolean().optional(),
510
+ excludeFromSim: z18.boolean().optional(),
511
+ inBom: z18.boolean().optional(),
512
+ onBoard: z18.boolean().optional(),
469
513
  properties: kicadSymbolProperties.optional(),
470
- embeddedFonts: z17.boolean().optional()
514
+ embeddedFonts: z18.boolean().optional()
471
515
  });
472
516
  expectTypesMatch(true);
473
517
 
474
518
  // lib/common/pcbStyle.ts
475
519
  import { distance as distance6 } from "circuit-json";
476
- import { z as z18 } from "zod";
477
- var pcbStyle = z18.object({
520
+ import { z as z19 } from "zod";
521
+ var pcbStyle = z19.object({
478
522
  silkscreenFontSize: distance6.optional(),
479
523
  viaPadDiameter: distance6.optional(),
480
524
  viaHoleDiameter: distance6.optional(),
481
- silkscreenTextPosition: z18.union([
482
- z18.enum(["centered", "outside", "none"]),
483
- z18.object({
484
- offsetX: z18.number(),
485
- offsetY: z18.number()
525
+ silkscreenTextPosition: z19.union([
526
+ z19.enum(["centered", "outside", "none"]),
527
+ z19.object({
528
+ offsetX: z19.number(),
529
+ offsetY: z19.number()
486
530
  })
487
531
  ]).optional(),
488
- silkscreenTextVisibility: z18.enum(["hidden", "visible", "inherit"]).optional()
532
+ silkscreenTextVisibility: z19.enum(["hidden", "visible", "inherit"]).optional()
489
533
  });
490
534
  expectTypesMatch(true);
491
535
 
492
536
  // lib/common/pcbSx.ts
493
537
  import { length as length2 } from "circuit-json";
494
- import { z as z19 } from "zod";
495
- var pcbSxValue = z19.object({
538
+ import { z as z20 } from "zod";
539
+ var pcbSxValue = z20.object({
496
540
  fontSize: length2.optional(),
497
541
  pcbX: pcbCoordinate.optional(),
498
542
  pcbY: pcbCoordinate.optional(),
499
- visibility: z19.enum(["hidden", "visible", "inherit"]).optional()
543
+ visibility: z20.enum(["hidden", "visible", "inherit"]).optional()
500
544
  });
501
- var pcbSx = z19.record(
502
- z19.string(),
545
+ var pcbSx = z20.record(
546
+ z20.string(),
503
547
  pcbSxValue
504
548
  );
505
549
  expectTypesMatch(true);
506
550
 
507
551
  // lib/common/pinAttributeMap.ts
508
- import { z as z20 } from "zod";
509
- var pinCapability = z20.enum([
552
+ import { z as z21 } from "zod";
553
+ var pinCapability = z21.enum([
510
554
  "i2c_sda",
511
555
  "i2c_scl",
512
556
  "spi_cs",
@@ -516,61 +560,61 @@ var pinCapability = z20.enum([
516
560
  "uart_tx",
517
561
  "uart_rx"
518
562
  ]);
519
- var pinAttributeMap = z20.object({
520
- isInput: z20.boolean().optional(),
521
- isOutput: z20.boolean().optional(),
522
- isBidirectional: z20.boolean().optional(),
523
- isPassive: z20.boolean().optional(),
524
- canUseTriState: z20.boolean().optional(),
525
- isUsingTriState: z20.boolean().optional(),
526
- canUseOpenCollector: z20.boolean().optional(),
527
- isUsingOpenCollector: z20.boolean().optional(),
528
- canUseOpenEmitter: z20.boolean().optional(),
529
- isUsingOpenEmitter: z20.boolean().optional(),
530
- capabilities: z20.array(pinCapability).optional(),
531
- activeCapabilities: z20.array(pinCapability).optional(),
563
+ var pinAttributeMap = z21.object({
564
+ isInput: z21.boolean().optional(),
565
+ isOutput: z21.boolean().optional(),
566
+ isBidirectional: z21.boolean().optional(),
567
+ isPassive: z21.boolean().optional(),
568
+ canUseTriState: z21.boolean().optional(),
569
+ isUsingTriState: z21.boolean().optional(),
570
+ canUseOpenCollector: z21.boolean().optional(),
571
+ isUsingOpenCollector: z21.boolean().optional(),
572
+ canUseOpenEmitter: z21.boolean().optional(),
573
+ isUsingOpenEmitter: z21.boolean().optional(),
574
+ capabilities: z21.array(pinCapability).optional(),
575
+ activeCapabilities: z21.array(pinCapability).optional(),
532
576
  activeCapability: pinCapability.optional(),
533
- providesPower: z20.boolean().optional(),
534
- requiresPower: z20.boolean().optional(),
535
- providesGround: z20.boolean().optional(),
536
- requiresGround: z20.boolean().optional(),
537
- providesVoltage: z20.union([z20.string(), z20.number()]).optional(),
538
- requiresVoltage: z20.union([z20.string(), z20.number()]).optional(),
539
- doNotConnect: z20.boolean().optional(),
540
- includeInBoardPinout: z20.boolean().optional(),
541
- highlightColor: z20.string().optional(),
542
- mustBeConnected: z20.boolean().optional(),
543
- canUseInternalPullup: z20.boolean().optional(),
544
- isUsingInternalPullup: z20.boolean().optional(),
545
- needsExternalPullup: z20.boolean().optional(),
546
- canUseInternalPulldown: z20.boolean().optional(),
547
- isUsingInternalPulldown: z20.boolean().optional(),
548
- needsExternalPulldown: z20.boolean().optional(),
549
- canUseOpenDrain: z20.boolean().optional(),
550
- isUsingOpenDrain: z20.boolean().optional(),
551
- canUsePushPull: z20.boolean().optional(),
552
- isUsingPushPull: z20.boolean().optional(),
553
- shouldHaveDecouplingCapacitor: z20.boolean().optional(),
554
- recommendedDecouplingCapacitorCapacitance: z20.union([z20.string(), z20.number()]).optional(),
555
- isGpio: z20.boolean().optional()
577
+ providesPower: z21.boolean().optional(),
578
+ requiresPower: z21.boolean().optional(),
579
+ providesGround: z21.boolean().optional(),
580
+ requiresGround: z21.boolean().optional(),
581
+ providesVoltage: z21.union([z21.string(), z21.number()]).optional(),
582
+ requiresVoltage: z21.union([z21.string(), z21.number()]).optional(),
583
+ doNotConnect: z21.boolean().optional(),
584
+ includeInBoardPinout: z21.boolean().optional(),
585
+ highlightColor: z21.string().optional(),
586
+ mustBeConnected: z21.boolean().optional(),
587
+ canUseInternalPullup: z21.boolean().optional(),
588
+ isUsingInternalPullup: z21.boolean().optional(),
589
+ needsExternalPullup: z21.boolean().optional(),
590
+ canUseInternalPulldown: z21.boolean().optional(),
591
+ isUsingInternalPulldown: z21.boolean().optional(),
592
+ needsExternalPulldown: z21.boolean().optional(),
593
+ canUseOpenDrain: z21.boolean().optional(),
594
+ isUsingOpenDrain: z21.boolean().optional(),
595
+ canUsePushPull: z21.boolean().optional(),
596
+ isUsingPushPull: z21.boolean().optional(),
597
+ shouldHaveDecouplingCapacitor: z21.boolean().optional(),
598
+ recommendedDecouplingCapacitorCapacitance: z21.union([z21.string(), z21.number()]).optional(),
599
+ isGpio: z21.boolean().optional()
556
600
  });
557
601
  expectTypesMatch(true);
558
602
 
559
603
  // lib/common/schStyle.ts
560
604
  import { distance as distance7 } from "circuit-json";
561
- import { z as z21 } from "zod";
562
- var schStyle = z21.object({
563
- defaultPassiveSize: z21.union([z21.enum(["xs", "sm", "md"]), distance7]).optional(),
564
- defaultCapacitorOrientation: z21.enum(["vertical", "none"]).optional()
605
+ import { z as z22 } from "zod";
606
+ var schStyle = z22.object({
607
+ defaultPassiveSize: z22.union([z22.enum(["xs", "sm", "md"]), distance7]).optional(),
608
+ defaultCapacitorOrientation: z22.enum(["vertical", "none"]).optional()
565
609
  });
566
610
  expectTypesMatch(true);
567
611
 
568
612
  // lib/common/symbolProp.ts
569
- import { z as z22 } from "zod";
570
- var symbolProp = z22.custom((v) => true);
613
+ import { z as z23 } from "zod";
614
+ var symbolProp = z23.custom((v) => true);
571
615
 
572
616
  // lib/common/layout.ts
573
- var pcbLayoutProps = z23.object({
617
+ var pcbLayoutProps = z24.object({
574
618
  pcbX: pcbCoordinate.optional(),
575
619
  pcbY: pcbCoordinate.optional(),
576
620
  pcbLeftEdgeX: pcbCoordinate.optional(),
@@ -580,14 +624,14 @@ var pcbLayoutProps = z23.object({
580
624
  pcbOffsetX: distance8.optional(),
581
625
  pcbOffsetY: distance8.optional(),
582
626
  pcbRotation: rotation2.optional(),
583
- pcbPositionAnchor: z23.string().optional(),
584
- pcbPositionMode: z23.enum([
627
+ pcbPositionAnchor: z24.string().optional(),
628
+ pcbPositionMode: z24.enum([
585
629
  "relative_to_group_anchor",
586
630
  "auto",
587
631
  "relative_to_board_anchor",
588
632
  "relative_to_component_anchor"
589
633
  ]).optional(),
590
- shouldBeOnEdgeOfBoard: z23.boolean().optional(),
634
+ shouldBeOnEdgeOfBoard: z24.boolean().optional(),
591
635
  layer: layer_ref.optional(),
592
636
  pcbMarginTop: distance8.optional(),
593
637
  pcbMarginRight: distance8.optional(),
@@ -597,11 +641,11 @@ var pcbLayoutProps = z23.object({
597
641
  pcbMarginY: distance8.optional(),
598
642
  pcbStyle: pcbStyle.optional(),
599
643
  pcbSx: pcbSx.optional(),
600
- pcbRelative: z23.boolean().optional(),
601
- relative: z23.boolean().optional()
644
+ pcbRelative: z24.boolean().optional(),
645
+ relative: z24.boolean().optional()
602
646
  });
603
647
  expectTypesMatch(true);
604
- var commonLayoutProps = z23.object({
648
+ var commonLayoutProps = z24.object({
605
649
  pcbX: pcbCoordinate.optional(),
606
650
  pcbY: pcbCoordinate.optional(),
607
651
  pcbLeftEdgeX: pcbCoordinate.optional(),
@@ -611,14 +655,14 @@ var commonLayoutProps = z23.object({
611
655
  pcbOffsetX: distance8.optional(),
612
656
  pcbOffsetY: distance8.optional(),
613
657
  pcbRotation: rotation2.optional(),
614
- pcbPositionAnchor: z23.string().optional(),
615
- pcbPositionMode: z23.enum([
658
+ pcbPositionAnchor: z24.string().optional(),
659
+ pcbPositionMode: z24.enum([
616
660
  "relative_to_group_anchor",
617
661
  "auto",
618
662
  "relative_to_board_anchor",
619
663
  "relative_to_component_anchor"
620
664
  ]).optional(),
621
- shouldBeOnEdgeOfBoard: z23.boolean().optional(),
665
+ shouldBeOnEdgeOfBoard: z24.boolean().optional(),
622
666
  pcbMarginTop: distance8.optional(),
623
667
  pcbMarginRight: distance8.optional(),
624
668
  pcbMarginBottom: distance8.optional(),
@@ -640,45 +684,45 @@ var commonLayoutProps = z23.object({
640
684
  footprint: footprintProp.optional(),
641
685
  symbol: symbolProp.optional(),
642
686
  schStyle: schStyle.optional(),
643
- relative: z23.boolean().optional(),
644
- schRelative: z23.boolean().optional(),
645
- pcbRelative: z23.boolean().optional()
687
+ relative: z24.boolean().optional(),
688
+ schRelative: z24.boolean().optional(),
689
+ pcbRelative: z24.boolean().optional()
646
690
  });
647
691
  expectTypesMatch(true);
648
- var supplierProps = z23.object({
649
- supplierPartNumbers: z23.record(supplier_name, z23.array(z23.string())).optional()
692
+ var supplierProps = z24.object({
693
+ supplierPartNumbers: z24.record(supplier_name, z24.array(z24.string())).optional()
650
694
  });
651
695
  expectTypesMatch(true);
652
696
  var commonComponentProps = commonLayoutProps.merge(supplierProps).extend({
653
- key: z23.any().optional(),
654
- name: z23.string(),
655
- displayName: z23.string().optional(),
656
- schSectionName: z23.string().optional().describe(
697
+ key: z24.any().optional(),
698
+ name: z24.string(),
699
+ displayName: z24.string().optional(),
700
+ schSectionName: z24.string().optional().describe(
657
701
  'This component will be drawn as part of this section e.g. "Power"'
658
702
  ),
659
- schSheetName: z23.string().optional().describe(
703
+ schSheetName: z24.string().optional().describe(
660
704
  'This component will be drawn as part of this sheet e.g. "Main"'
661
705
  ),
662
706
  datasheetUrl: url.optional(),
663
707
  cadModel: cadModelProp.optional(),
664
708
  kicadFootprintMetadata: kicadFootprintMetadata.optional(),
665
709
  kicadSymbolMetadata: kicadSymbolMetadata.optional(),
666
- children: z23.any().optional(),
667
- symbolName: z23.string().optional(),
668
- doNotPlace: z23.boolean().optional(),
669
- allowOffBoard: z23.boolean().optional().describe(
710
+ children: z24.any().optional(),
711
+ symbolName: z24.string().optional(),
712
+ doNotPlace: z24.boolean().optional(),
713
+ allowOffBoard: z24.boolean().optional().describe(
670
714
  "Allows the PCB component to hang off the board (e.g. for USB ports or displays)"
671
715
  ),
672
- obstructsWithinBounds: z23.boolean().optional().describe(
716
+ obstructsWithinBounds: z24.boolean().optional().describe(
673
717
  "Does this component take up all the space within its bounds on a layer. This is generally true except for when separated pin headers are being represented by a single component (in which case, chips can be placed between the pin headers) or for tall modules where chips fit underneath"
674
718
  ),
675
- showAsTranslucentModel: z23.boolean().optional().describe(
719
+ showAsTranslucentModel: z24.boolean().optional().describe(
676
720
  "Whether to show this component's CAD model as translucent in the 3D viewer."
677
721
  ),
678
- pinAttributes: z23.record(z23.string(), pinAttributeMap).optional(),
679
- mpn: z23.string().describe("Manufacturer Part Number").optional(),
680
- mfn: z23.string().describe("Manufacturer Part Number").optional(),
681
- manufacturerPartNumber: z23.string().optional()
722
+ pinAttributes: z24.record(z24.string(), pinAttributeMap).optional(),
723
+ mpn: z24.string().describe("Manufacturer Part Number").optional(),
724
+ mfn: z24.string().describe("Manufacturer Part Number").optional(),
725
+ manufacturerPartNumber: z24.string().optional()
682
726
  });
683
727
  expectTypesMatch(true);
684
728
  var componentProps = commonComponentProps;
@@ -693,7 +737,7 @@ var lrPolarPins = [
693
737
  "cathode",
694
738
  "neg"
695
739
  ];
696
- var distanceOrMultiplier = distance8.or(z23.enum(["2x", "3x", "4x"]));
740
+ var distanceOrMultiplier = distance8.or(z24.enum(["2x", "3x", "4x"]));
697
741
 
698
742
  // lib/common/resolveManufacturerPartNumber.ts
699
743
  var resolveManufacturerPartNumber = (props) => {
@@ -708,9 +752,9 @@ var resolveManufacturerPartNumber = (props) => {
708
752
 
709
753
  // lib/common/pcbPath.ts
710
754
  import { layer_ref as layer_ref2 } from "circuit-json";
711
- import { z as z24 } from "zod";
755
+ import { z as z25 } from "zod";
712
756
  var basePcbPathPoint = point.extend({
713
- via: z24.boolean().optional(),
757
+ via: z25.boolean().optional(),
714
758
  fromLayer: layer_ref2.optional(),
715
759
  toLayer: layer_ref2.optional()
716
760
  });
@@ -718,20 +762,20 @@ var pcbPathPoint = basePcbPathPoint.superRefine((value, ctx) => {
718
762
  if (value.via) {
719
763
  if (!value.toLayer) {
720
764
  ctx.addIssue({
721
- code: z24.ZodIssueCode.custom,
765
+ code: z25.ZodIssueCode.custom,
722
766
  message: "toLayer is required when via is true",
723
767
  path: ["toLayer"]
724
768
  });
725
769
  }
726
770
  } else if (value.fromLayer || value.toLayer) {
727
771
  ctx.addIssue({
728
- code: z24.ZodIssueCode.custom,
772
+ code: z25.ZodIssueCode.custom,
729
773
  message: "fromLayer/toLayer are only allowed when via is true",
730
774
  path: ["via"]
731
775
  });
732
776
  }
733
777
  });
734
- var pcbPath = z24.array(z24.union([pcbPathPoint, z24.string()]));
778
+ var pcbPath = z25.array(z25.union([pcbPathPoint, z25.string()]));
735
779
  expectTypesMatch(true);
736
780
  expectTypesMatch(true);
737
781
 
@@ -16199,8 +16243,8 @@ var footprinterStringExamples = [
16199
16243
  ];
16200
16244
 
16201
16245
  // lib/common/schematicOrientation.ts
16202
- import { z as z25 } from "zod";
16203
- var schematicOrientation = z25.enum([
16246
+ import { z as z26 } from "zod";
16247
+ var schematicOrientation = z26.enum([
16204
16248
  "vertical",
16205
16249
  "horizontal",
16206
16250
  "pos_top",
@@ -16219,32 +16263,32 @@ expectTypesMatch(
16219
16263
  );
16220
16264
 
16221
16265
  // lib/common/schematicPinDefinitions.ts
16222
- import { z as z26 } from "zod";
16223
- var explicitPinSideDefinition = z26.object({
16224
- pins: z26.array(z26.union([z26.number(), z26.string()])),
16225
- direction: z26.union([
16226
- z26.literal("top-to-bottom"),
16227
- z26.literal("left-to-right"),
16228
- z26.literal("bottom-to-top"),
16229
- z26.literal("right-to-left")
16266
+ import { z as z27 } from "zod";
16267
+ var explicitPinSideDefinition = z27.object({
16268
+ pins: z27.array(z27.union([z27.number(), z27.string()])),
16269
+ direction: z27.union([
16270
+ z27.literal("top-to-bottom"),
16271
+ z27.literal("left-to-right"),
16272
+ z27.literal("bottom-to-top"),
16273
+ z27.literal("right-to-left")
16230
16274
  ])
16231
16275
  });
16232
- var pinSideDefinitionInput = z26.array(z26.union([z26.number(), z26.string()]));
16233
- var pinSideDefinitionWithDefaultDirection = (direction2) => z26.union([explicitPinSideDefinition, pinSideDefinitionInput]).transform(
16276
+ var pinSideDefinitionInput = z27.array(z27.union([z27.number(), z27.string()]));
16277
+ var pinSideDefinitionWithDefaultDirection = (direction2) => z27.union([explicitPinSideDefinition, pinSideDefinitionInput]).transform(
16234
16278
  (value) => Array.isArray(value) ? {
16235
16279
  pins: value,
16236
16280
  direction: direction2
16237
16281
  } : value
16238
16282
  );
16239
- var schematicPortArrangement = z26.object({
16240
- leftSize: z26.number().optional().describe("@deprecated, use leftPinCount"),
16241
- topSize: z26.number().optional().describe("@deprecated, use topPinCount"),
16242
- rightSize: z26.number().optional().describe("@deprecated, use rightPinCount"),
16243
- bottomSize: z26.number().optional().describe("@deprecated, use bottomPinCount"),
16244
- leftPinCount: z26.number().optional(),
16245
- rightPinCount: z26.number().optional(),
16246
- topPinCount: z26.number().optional(),
16247
- bottomPinCount: z26.number().optional(),
16283
+ var schematicPortArrangement = z27.object({
16284
+ leftSize: z27.number().optional().describe("@deprecated, use leftPinCount"),
16285
+ topSize: z27.number().optional().describe("@deprecated, use topPinCount"),
16286
+ rightSize: z27.number().optional().describe("@deprecated, use rightPinCount"),
16287
+ bottomSize: z27.number().optional().describe("@deprecated, use bottomPinCount"),
16288
+ leftPinCount: z27.number().optional(),
16289
+ rightPinCount: z27.number().optional(),
16290
+ topPinCount: z27.number().optional(),
16291
+ bottomPinCount: z27.number().optional(),
16248
16292
  leftSide: pinSideDefinitionWithDefaultDirection("top-to-bottom").optional(),
16249
16293
  rightSide: pinSideDefinitionWithDefaultDirection("top-to-bottom").optional(),
16250
16294
  topSide: pinSideDefinitionWithDefaultDirection("left-to-right").optional(),
@@ -16255,9 +16299,9 @@ expectTypesMatch(true);
16255
16299
 
16256
16300
  // lib/common/schematicPinStyle.ts
16257
16301
  import { distance as distance9 } from "circuit-json";
16258
- import { z as z27 } from "zod";
16259
- var schematicPinStyle = z27.record(
16260
- z27.object({
16302
+ import { z as z28 } from "zod";
16303
+ var schematicPinStyle = z28.record(
16304
+ z28.object({
16261
16305
  marginLeft: distance9.optional(),
16262
16306
  marginRight: distance9.optional(),
16263
16307
  marginTop: distance9.optional(),
@@ -16271,17 +16315,17 @@ var schematicPinStyle = z27.record(
16271
16315
  expectTypesMatch(true);
16272
16316
 
16273
16317
  // lib/common/schematicPinLabel.ts
16274
- import { z as z28 } from "zod";
16275
- var schematicPinLabel = z28.string().regex(/^[A-Za-z0-9_]+$/);
16318
+ import { z as z29 } from "zod";
16319
+ var schematicPinLabel = z29.string().regex(/^[A-Za-z0-9_]+$/);
16276
16320
 
16277
16321
  // lib/common/schematicSize.ts
16278
16322
  import { distance as distance10 } from "circuit-json";
16279
- import { z as z29 } from "zod";
16280
- var schematicSymbolSize = z29.enum(["xs", "sm", "default", "md"]).or(distance10.pipe(z29.number().finite())).describe("distance between pin1 and pin2 of the schematic symbol");
16323
+ import { z as z30 } from "zod";
16324
+ var schematicSymbolSize = z30.enum(["xs", "sm", "default", "md"]).or(distance10.pipe(z30.number().finite())).describe("distance between pin1 and pin2 of the schematic symbol");
16281
16325
 
16282
16326
  // lib/common/kicadPinMetadata.ts
16283
- import { z as z30 } from "zod";
16284
- var kicadPinElectricalType = z30.enum([
16327
+ import { z as z31 } from "zod";
16328
+ var kicadPinElectricalType = z31.enum([
16285
16329
  "input",
16286
16330
  "output",
16287
16331
  "bidirectional",
@@ -16295,7 +16339,7 @@ var kicadPinElectricalType = z30.enum([
16295
16339
  "open_emitter",
16296
16340
  "no_connect"
16297
16341
  ]);
16298
- var kicadPinGraphicStyle = z30.enum([
16342
+ var kicadPinGraphicStyle = z31.enum([
16299
16343
  "line",
16300
16344
  "inverted",
16301
16345
  "clock",
@@ -16306,7 +16350,7 @@ var kicadPinGraphicStyle = z30.enum([
16306
16350
  "falling_edge_clock",
16307
16351
  "nonlogic"
16308
16352
  ]);
16309
- var kicadPinMetadata = z30.object({
16353
+ var kicadPinMetadata = z31.object({
16310
16354
  electricalType: kicadPinElectricalType.optional(),
16311
16355
  graphicStyle: kicadPinGraphicStyle.optional(),
16312
16356
  pinLength: distance.optional(),
@@ -16316,14 +16360,14 @@ var kicadPinMetadata = z30.object({
16316
16360
  expectTypesMatch(true);
16317
16361
 
16318
16362
  // lib/customDrc.ts
16319
- import { z as z31 } from "zod";
16320
- var customDrcCheckFn = z31.custom(
16363
+ import { z as z32 } from "zod";
16364
+ var customDrcCheckFn = z32.custom(
16321
16365
  (value) => typeof value === "function"
16322
16366
  );
16323
16367
 
16324
16368
  // lib/common/ninePointAnchor.ts
16325
- import { z as z32 } from "zod";
16326
- var ninePointAnchor = z32.enum([
16369
+ import { z as z33 } from "zod";
16370
+ var ninePointAnchor = z33.enum([
16327
16371
  "top_left",
16328
16372
  "top_center",
16329
16373
  "top_right",
@@ -16336,47 +16380,47 @@ var ninePointAnchor = z32.enum([
16336
16380
  ]);
16337
16381
 
16338
16382
  // lib/components/board.ts
16339
- import { z as z46 } from "zod";
16383
+ import { z as z47 } from "zod";
16340
16384
 
16341
16385
  // lib/components/group.ts
16342
16386
  import {
16343
16387
  length as length3,
16344
16388
  distance as distance11
16345
16389
  } from "circuit-json";
16346
- import { z as z45 } from "zod";
16390
+ import { z as z46 } from "zod";
16347
16391
 
16348
16392
  // lib/manual-edits/manual-edit-events/base_manual_edit_event.ts
16349
- import { z as z33 } from "zod";
16350
- var base_manual_edit_event = z33.object({
16351
- edit_event_id: z33.string(),
16352
- in_progress: z33.boolean().optional(),
16353
- created_at: z33.number()
16393
+ import { z as z34 } from "zod";
16394
+ var base_manual_edit_event = z34.object({
16395
+ edit_event_id: z34.string(),
16396
+ in_progress: z34.boolean().optional(),
16397
+ created_at: z34.number()
16354
16398
  });
16355
16399
  expectTypesMatch(
16356
16400
  true
16357
16401
  );
16358
16402
 
16359
16403
  // lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts
16360
- import { z as z34 } from "zod";
16404
+ import { z as z35 } from "zod";
16361
16405
  var edit_pcb_component_location_event = base_manual_edit_event.extend({
16362
- pcb_edit_event_type: z34.literal("edit_component_location").describe("deprecated"),
16363
- edit_event_type: z34.literal("edit_pcb_component_location"),
16364
- pcb_component_id: z34.string(),
16365
- original_center: z34.object({ x: z34.number(), y: z34.number() }),
16366
- new_center: z34.object({ x: z34.number(), y: z34.number() })
16406
+ pcb_edit_event_type: z35.literal("edit_component_location").describe("deprecated"),
16407
+ edit_event_type: z35.literal("edit_pcb_component_location"),
16408
+ pcb_component_id: z35.string(),
16409
+ original_center: z35.object({ x: z35.number(), y: z35.number() }),
16410
+ new_center: z35.object({ x: z35.number(), y: z35.number() })
16367
16411
  });
16368
16412
  var edit_component_location_event = edit_pcb_component_location_event;
16369
16413
  expectTypesMatch(true);
16370
16414
 
16371
16415
  // lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts
16372
- import { z as z35 } from "zod";
16416
+ import { z as z36 } from "zod";
16373
16417
  var edit_trace_hint_event = base_manual_edit_event.extend({
16374
- pcb_edit_event_type: z35.literal("edit_trace_hint").describe("deprecated"),
16375
- edit_event_type: z35.literal("edit_pcb_trace_hint").optional(),
16376
- pcb_port_id: z35.string(),
16377
- pcb_trace_hint_id: z35.string().optional(),
16378
- route: z35.array(
16379
- z35.object({ x: z35.number(), y: z35.number(), via: z35.boolean().optional() })
16418
+ pcb_edit_event_type: z36.literal("edit_trace_hint").describe("deprecated"),
16419
+ edit_event_type: z36.literal("edit_pcb_trace_hint").optional(),
16420
+ pcb_port_id: z36.string(),
16421
+ pcb_trace_hint_id: z36.string().optional(),
16422
+ route: z36.array(
16423
+ z36.object({ x: z36.number(), y: z36.number(), via: z36.boolean().optional() })
16380
16424
  )
16381
16425
  });
16382
16426
  expectTypesMatch(
@@ -16384,38 +16428,38 @@ expectTypesMatch(
16384
16428
  );
16385
16429
 
16386
16430
  // lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts
16387
- import { z as z36 } from "zod";
16431
+ import { z as z37 } from "zod";
16388
16432
  var edit_schematic_component_location_event = base_manual_edit_event.extend({
16389
- edit_event_type: z36.literal("edit_schematic_component_location"),
16390
- schematic_component_id: z36.string(),
16391
- original_center: z36.object({ x: z36.number(), y: z36.number() }),
16392
- new_center: z36.object({ x: z36.number(), y: z36.number() })
16433
+ edit_event_type: z37.literal("edit_schematic_component_location"),
16434
+ schematic_component_id: z37.string(),
16435
+ original_center: z37.object({ x: z37.number(), y: z37.number() }),
16436
+ new_center: z37.object({ x: z37.number(), y: z37.number() })
16393
16437
  });
16394
16438
  expectTypesMatch(true);
16395
16439
 
16396
16440
  // lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts
16397
- import { z as z37 } from "zod";
16441
+ import { z as z38 } from "zod";
16398
16442
  var edit_pcb_group_location_event = base_manual_edit_event.extend({
16399
- edit_event_type: z37.literal("edit_pcb_group_location"),
16400
- pcb_group_id: z37.string(),
16401
- original_center: z37.object({ x: z37.number(), y: z37.number() }),
16402
- new_center: z37.object({ x: z37.number(), y: z37.number() })
16443
+ edit_event_type: z38.literal("edit_pcb_group_location"),
16444
+ pcb_group_id: z38.string(),
16445
+ original_center: z38.object({ x: z38.number(), y: z38.number() }),
16446
+ new_center: z38.object({ x: z38.number(), y: z38.number() })
16403
16447
  });
16404
16448
  expectTypesMatch(true);
16405
16449
 
16406
16450
  // lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts
16407
- import { z as z38 } from "zod";
16451
+ import { z as z39 } from "zod";
16408
16452
  var edit_schematic_group_location_event = base_manual_edit_event.extend({
16409
- edit_event_type: z38.literal("edit_schematic_group_location"),
16410
- schematic_group_id: z38.string(),
16411
- original_center: z38.object({ x: z38.number(), y: z38.number() }),
16412
- new_center: z38.object({ x: z38.number(), y: z38.number() })
16453
+ edit_event_type: z39.literal("edit_schematic_group_location"),
16454
+ schematic_group_id: z39.string(),
16455
+ original_center: z39.object({ x: z39.number(), y: z39.number() }),
16456
+ new_center: z39.object({ x: z39.number(), y: z39.number() })
16413
16457
  });
16414
16458
  expectTypesMatch(true);
16415
16459
 
16416
16460
  // lib/manual-edits/manual_edit_event.ts
16417
- import { z as z39 } from "zod";
16418
- var manual_edit_event = z39.union([
16461
+ import { z as z40 } from "zod";
16462
+ var manual_edit_event = z40.union([
16419
16463
  edit_pcb_component_location_event,
16420
16464
  edit_trace_hint_event,
16421
16465
  edit_schematic_component_location_event
@@ -16423,33 +16467,33 @@ var manual_edit_event = z39.union([
16423
16467
  expectTypesMatch(true);
16424
16468
 
16425
16469
  // lib/manual-edits/manual_edits_file.ts
16426
- import { z as z43 } from "zod";
16470
+ import { z as z44 } from "zod";
16427
16471
 
16428
16472
  // lib/manual-edits/manual_pcb_placement.ts
16429
- import { z as z40 } from "zod";
16473
+ import { z as z41 } from "zod";
16430
16474
  import { point as point2 } from "circuit-json";
16431
- var manual_pcb_placement = z40.object({
16432
- selector: z40.string(),
16433
- relative_to: z40.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
16475
+ var manual_pcb_placement = z41.object({
16476
+ selector: z41.string(),
16477
+ relative_to: z41.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
16434
16478
  center: point2
16435
16479
  });
16436
16480
  expectTypesMatch(true);
16437
16481
 
16438
16482
  // lib/manual-edits/manual_trace_hint.ts
16439
- import { z as z41 } from "zod";
16483
+ import { z as z42 } from "zod";
16440
16484
  import { route_hint_point } from "circuit-json";
16441
- var manual_trace_hint = z41.object({
16442
- pcb_port_selector: z41.string(),
16443
- offsets: z41.array(route_hint_point)
16485
+ var manual_trace_hint = z42.object({
16486
+ pcb_port_selector: z42.string(),
16487
+ offsets: z42.array(route_hint_point)
16444
16488
  });
16445
16489
  expectTypesMatch(true);
16446
16490
 
16447
16491
  // lib/manual-edits/manual_schematic_placement.ts
16448
- import { z as z42 } from "zod";
16492
+ import { z as z43 } from "zod";
16449
16493
  import { point as point4 } from "circuit-json";
16450
- var manual_schematic_placement = z42.object({
16451
- selector: z42.string(),
16452
- relative_to: z42.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
16494
+ var manual_schematic_placement = z43.object({
16495
+ selector: z43.string(),
16496
+ relative_to: z43.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
16453
16497
  center: point4
16454
16498
  });
16455
16499
  expectTypesMatch(
@@ -16457,37 +16501,37 @@ expectTypesMatch(
16457
16501
  );
16458
16502
 
16459
16503
  // lib/manual-edits/manual_edits_file.ts
16460
- var manual_edits_file = z43.object({
16461
- pcb_placements: z43.array(manual_pcb_placement).optional(),
16462
- manual_trace_hints: z43.array(manual_trace_hint).optional(),
16463
- schematic_placements: z43.array(manual_schematic_placement).optional()
16504
+ var manual_edits_file = z44.object({
16505
+ pcb_placements: z44.array(manual_pcb_placement).optional(),
16506
+ manual_trace_hints: z44.array(manual_trace_hint).optional(),
16507
+ schematic_placements: z44.array(manual_schematic_placement).optional()
16464
16508
  });
16465
16509
  expectTypesMatch(true);
16466
16510
 
16467
16511
  // lib/common/connectionsProp.ts
16468
- import { z as z44 } from "zod";
16469
- var connectionTarget = z44.string().or(z44.array(z44.string()).readonly()).or(z44.array(z44.string()));
16512
+ import { z as z45 } from "zod";
16513
+ var connectionTarget = z45.string().or(z45.array(z45.string()).readonly()).or(z45.array(z45.string()));
16470
16514
  var createConnectionsProp = (labels) => {
16471
- return z44.record(z44.enum(labels), connectionTarget);
16515
+ return z45.record(z45.enum(labels), connectionTarget);
16472
16516
  };
16473
16517
 
16474
16518
  // lib/components/group.ts
16475
- var layoutConfig = z45.object({
16476
- layoutMode: z45.enum(["grid", "flex", "match-adapt", "relative", "none"]).optional(),
16477
- position: z45.enum(["absolute", "relative"]).optional(),
16478
- grid: z45.boolean().optional(),
16479
- gridCols: z45.number().or(z45.string()).optional(),
16480
- gridRows: z45.number().or(z45.string()).optional(),
16481
- gridTemplateRows: z45.string().optional(),
16482
- gridTemplateColumns: z45.string().optional(),
16483
- gridTemplate: z45.string().optional(),
16484
- gridGap: z45.number().or(z45.string()).optional(),
16485
- gridRowGap: z45.number().or(z45.string()).optional(),
16486
- gridColumnGap: z45.number().or(z45.string()).optional(),
16487
- flex: z45.boolean().or(z45.string()).optional(),
16488
- flexDirection: z45.enum(["row", "column"]).optional(),
16489
- alignItems: z45.enum(["start", "center", "end", "stretch"]).optional(),
16490
- justifyContent: z45.enum([
16519
+ var layoutConfig = z46.object({
16520
+ layoutMode: z46.enum(["grid", "flex", "match-adapt", "relative", "none"]).optional(),
16521
+ position: z46.enum(["absolute", "relative"]).optional(),
16522
+ grid: z46.boolean().optional(),
16523
+ gridCols: z46.number().or(z46.string()).optional(),
16524
+ gridRows: z46.number().or(z46.string()).optional(),
16525
+ gridTemplateRows: z46.string().optional(),
16526
+ gridTemplateColumns: z46.string().optional(),
16527
+ gridTemplate: z46.string().optional(),
16528
+ gridGap: z46.number().or(z46.string()).optional(),
16529
+ gridRowGap: z46.number().or(z46.string()).optional(),
16530
+ gridColumnGap: z46.number().or(z46.string()).optional(),
16531
+ flex: z46.boolean().or(z46.string()).optional(),
16532
+ flexDirection: z46.enum(["row", "column"]).optional(),
16533
+ alignItems: z46.enum(["start", "center", "end", "stretch"]).optional(),
16534
+ justifyContent: z46.enum([
16491
16535
  "start",
16492
16536
  "center",
16493
16537
  "end",
@@ -16496,16 +16540,16 @@ var layoutConfig = z45.object({
16496
16540
  "space-around",
16497
16541
  "space-evenly"
16498
16542
  ]).optional(),
16499
- flexRow: z45.boolean().optional(),
16500
- flexColumn: z45.boolean().optional(),
16501
- gap: z45.number().or(z45.string()).optional(),
16502
- pack: z45.boolean().optional().describe("Pack the contents of this group using a packing strategy"),
16503
- packOrderStrategy: z45.enum([
16543
+ flexRow: z46.boolean().optional(),
16544
+ flexColumn: z46.boolean().optional(),
16545
+ gap: z46.number().or(z46.string()).optional(),
16546
+ pack: z46.boolean().optional().describe("Pack the contents of this group using a packing strategy"),
16547
+ packOrderStrategy: z46.enum([
16504
16548
  "largest_to_smallest",
16505
16549
  "first_to_last",
16506
16550
  "highest_to_lowest_pin_count"
16507
16551
  ]).optional(),
16508
- packPlacementStrategy: z45.enum(["shortest_connection_along_outline"]).optional(),
16552
+ packPlacementStrategy: z46.enum(["shortest_connection_along_outline"]).optional(),
16509
16553
  padding: length3.optional(),
16510
16554
  paddingLeft: length3.optional(),
16511
16555
  paddingRight: length3.optional(),
@@ -16515,17 +16559,17 @@ var layoutConfig = z45.object({
16515
16559
  paddingY: length3.optional(),
16516
16560
  width: length3.optional(),
16517
16561
  height: length3.optional(),
16518
- matchAdapt: z45.boolean().optional(),
16519
- matchAdaptTemplate: z45.any().optional()
16562
+ matchAdapt: z46.boolean().optional(),
16563
+ matchAdaptTemplate: z46.any().optional()
16520
16564
  });
16521
16565
  expectTypesMatch(true);
16522
- var border = z45.object({
16566
+ var border = z46.object({
16523
16567
  strokeWidth: length3.optional(),
16524
- dashed: z45.boolean().optional(),
16525
- solid: z45.boolean().optional()
16568
+ dashed: z46.boolean().optional(),
16569
+ solid: z46.boolean().optional()
16526
16570
  });
16527
- var pcbAnchorAlignmentAutocomplete = z45.custom((value) => typeof value === "string");
16528
- var routingTolerances = z45.object({
16571
+ var pcbAnchorAlignmentAutocomplete = z46.custom((value) => typeof value === "string");
16572
+ var routingTolerances = z46.object({
16529
16573
  minTraceWidth: length3.optional(),
16530
16574
  minViaHoleEdgeToViaHoleEdgeClearance: length3.optional(),
16531
16575
  minViaEdgeToPadEdgeClearance: length3.optional(),
@@ -16539,25 +16583,25 @@ var routingTolerances = z45.object({
16539
16583
  minViaHoleDiameter: length3.optional(),
16540
16584
  minViaPadDiameter: length3.optional()
16541
16585
  });
16542
- var autorouterConfig = z45.object({
16586
+ var autorouterConfig = z46.object({
16543
16587
  serverUrl: url.optional(),
16544
- inputFormat: z45.enum(["simplified", "circuit-json"]).optional(),
16545
- serverMode: z45.enum(["job", "solve-endpoint"]).optional(),
16546
- serverCacheEnabled: z45.boolean().optional(),
16547
- cache: z45.custom((v) => true).optional(),
16588
+ inputFormat: z46.enum(["simplified", "circuit-json"]).optional(),
16589
+ serverMode: z46.enum(["job", "solve-endpoint"]).optional(),
16590
+ serverCacheEnabled: z46.boolean().optional(),
16591
+ cache: z46.custom((v) => true).optional(),
16548
16592
  traceClearance: length3.optional(),
16549
- availableJumperTypes: z45.array(z45.enum(["1206x4", "0603"])).optional(),
16550
- allowViaInPad: z45.boolean().optional().describe(
16593
+ availableJumperTypes: z46.array(z46.enum(["1206x4", "0603"])).optional(),
16594
+ allowViaInPad: z46.boolean().optional().describe(
16551
16595
  "Allows the autorouter to place vias inside connected pads. Omitted or false keeps via-in-pad routing disabled."
16552
16596
  ),
16553
- groupMode: z45.enum(["sequential_trace", "subcircuit", "sequential-trace"]).optional(),
16554
- algorithmFn: z45.custom(
16597
+ groupMode: z46.enum(["sequential_trace", "subcircuit", "sequential-trace"]).optional(),
16598
+ algorithmFn: z46.custom(
16555
16599
  (v) => typeof v === "function" || v === void 0
16556
16600
  ).optional(),
16557
- implicitBreakoutPointSolverFn: z45.custom(
16601
+ implicitBreakoutPointSolverFn: z46.custom(
16558
16602
  (value) => typeof value === "function" || value === void 0
16559
16603
  ).optional(),
16560
- preset: z45.enum([
16604
+ preset: z46.enum([
16561
16605
  "sequential_trace",
16562
16606
  "subcircuit",
16563
16607
  "default",
@@ -16582,39 +16626,39 @@ var autorouterConfig = z45.object({
16582
16626
  ]).transform(
16583
16627
  (preset) => preset === "single_layer_routing" ? "bus_lanes" : preset
16584
16628
  ).optional(),
16585
- local: z45.boolean().optional()
16629
+ local: z46.boolean().optional()
16586
16630
  });
16587
- var autorouterPreset = z45.union([
16588
- z45.literal("sequential_trace"),
16589
- z45.literal("subcircuit"),
16590
- z45.literal("default"),
16591
- z45.literal("auto"),
16592
- z45.literal("auto_local"),
16593
- z45.literal("auto_cloud"),
16594
- z45.literal("auto_jumper"),
16595
- z45.literal("tscircuit_beta"),
16596
- z45.literal("krt"),
16597
- z45.literal("freerouting"),
16598
- z45.literal("simplify"),
16599
- z45.literal("laser_prefab"),
16631
+ var autorouterPreset = z46.union([
16632
+ z46.literal("sequential_trace"),
16633
+ z46.literal("subcircuit"),
16634
+ z46.literal("default"),
16635
+ z46.literal("auto"),
16636
+ z46.literal("auto_local"),
16637
+ z46.literal("auto_cloud"),
16638
+ z46.literal("auto_jumper"),
16639
+ z46.literal("tscircuit_beta"),
16640
+ z46.literal("krt"),
16641
+ z46.literal("freerouting"),
16642
+ z46.literal("simplify"),
16643
+ z46.literal("laser_prefab"),
16600
16644
  // Prefabricated PCB with laser copper ablation
16601
- z45.literal("single_layer_fanout"),
16602
- z45.literal("fanout"),
16603
- z45.literal("dogbone"),
16604
- z45.literal("bus_lanes"),
16605
- z45.literal("single_layer_routing").transform(() => "bus_lanes"),
16606
- z45.literal("auto-jumper"),
16607
- z45.literal("sequential-trace"),
16608
- z45.literal("auto-local"),
16609
- z45.literal("auto-cloud")
16645
+ z46.literal("single_layer_fanout"),
16646
+ z46.literal("fanout"),
16647
+ z46.literal("dogbone"),
16648
+ z46.literal("bus_lanes"),
16649
+ z46.literal("single_layer_routing").transform(() => "bus_lanes"),
16650
+ z46.literal("auto-jumper"),
16651
+ z46.literal("sequential-trace"),
16652
+ z46.literal("auto-local"),
16653
+ z46.literal("auto-cloud")
16610
16654
  ]);
16611
- var autorouterString = z45.string();
16612
- var autorouterProp = z45.union([
16655
+ var autorouterString = z46.string();
16656
+ var autorouterProp = z46.union([
16613
16657
  autorouterConfig,
16614
16658
  autorouterPreset,
16615
16659
  autorouterString
16616
16660
  ]);
16617
- var autorouterEffortLevel = z45.enum([
16661
+ var autorouterEffortLevel = z46.enum([
16618
16662
  "1x",
16619
16663
  "1.5x",
16620
16664
  "2x",
@@ -16622,12 +16666,12 @@ var autorouterEffortLevel = z45.enum([
16622
16666
  "10x",
16623
16667
  "100x"
16624
16668
  ]);
16625
- var preflightRoutingCheckPolicy = z45.enum([
16669
+ var preflightRoutingCheckPolicy = z46.enum([
16626
16670
  "none",
16627
16671
  "basic",
16628
16672
  "conservative"
16629
16673
  ]);
16630
- var knownAutorouterVersion = z45.enum([
16674
+ var knownAutorouterVersion = z46.enum([
16631
16675
  "beta_pipeline1",
16632
16676
  "beta_pipeline3",
16633
16677
  "beta_pipeline4",
@@ -16636,7 +16680,7 @@ var knownAutorouterVersion = z45.enum([
16636
16680
  "beta_pipeline9",
16637
16681
  "latest"
16638
16682
  ]);
16639
- var autorouterVersion = z45.custom(
16683
+ var autorouterVersion = z46.custom(
16640
16684
  (value) => typeof value === "string"
16641
16685
  ).transform((value) => {
16642
16686
  const parsedAutorouterVersion = knownAutorouterVersion.safeParse(value);
@@ -16647,33 +16691,33 @@ var autorouterVersion = z45.custom(
16647
16691
  return "latest";
16648
16692
  });
16649
16693
  var baseGroupProps = commonLayoutProps.extend({
16650
- name: z45.string().optional(),
16651
- children: z45.any().optional(),
16652
- schTitle: z45.string().optional(),
16653
- schSheetName: z45.string().optional().describe('This group will be drawn as part of this sheet e.g. "Main"'),
16654
- key: z45.any().optional(),
16655
- showAsSchematicBox: z45.boolean().optional(),
16656
- connections: z45.record(z45.string(), connectionTarget.optional()).optional(),
16694
+ name: z46.string().optional(),
16695
+ children: z46.any().optional(),
16696
+ schTitle: z46.string().optional(),
16697
+ schSheetName: z46.string().optional().describe('This group will be drawn as part of this sheet e.g. "Main"'),
16698
+ key: z46.any().optional(),
16699
+ showAsSchematicBox: z46.boolean().optional(),
16700
+ connections: z46.record(z46.string(), connectionTarget.optional()).optional(),
16657
16701
  schPinArrangement: schematicPinArrangement.optional(),
16658
16702
  schPinSpacing: length3.optional(),
16659
16703
  schPinStyle: schematicPinStyle.optional(),
16660
16704
  ...layoutConfig.shape,
16661
16705
  grid: layoutConfig.shape.grid.describe("@deprecated use pcbGrid"),
16662
16706
  flex: layoutConfig.shape.flex.describe("@deprecated use pcbFlex"),
16663
- pcbGrid: z45.boolean().optional(),
16664
- pcbGridCols: z45.number().or(z45.string()).optional(),
16665
- pcbGridRows: z45.number().or(z45.string()).optional(),
16666
- pcbGridTemplateRows: z45.string().optional(),
16667
- pcbGridTemplateColumns: z45.string().optional(),
16668
- pcbGridTemplate: z45.string().optional(),
16669
- pcbGridGap: z45.number().or(z45.string()).optional(),
16670
- pcbGridRowGap: z45.number().or(z45.string()).optional(),
16671
- pcbGridColumnGap: z45.number().or(z45.string()).optional(),
16672
- pcbFlex: z45.boolean().or(z45.string()).optional(),
16673
- pcbFlexGap: z45.number().or(z45.string()).optional(),
16674
- pcbFlexDirection: z45.enum(["row", "column"]).optional(),
16675
- pcbAlignItems: z45.enum(["start", "center", "end", "stretch"]).optional(),
16676
- pcbJustifyContent: z45.enum([
16707
+ pcbGrid: z46.boolean().optional(),
16708
+ pcbGridCols: z46.number().or(z46.string()).optional(),
16709
+ pcbGridRows: z46.number().or(z46.string()).optional(),
16710
+ pcbGridTemplateRows: z46.string().optional(),
16711
+ pcbGridTemplateColumns: z46.string().optional(),
16712
+ pcbGridTemplate: z46.string().optional(),
16713
+ pcbGridGap: z46.number().or(z46.string()).optional(),
16714
+ pcbGridRowGap: z46.number().or(z46.string()).optional(),
16715
+ pcbGridColumnGap: z46.number().or(z46.string()).optional(),
16716
+ pcbFlex: z46.boolean().or(z46.string()).optional(),
16717
+ pcbFlexGap: z46.number().or(z46.string()).optional(),
16718
+ pcbFlexDirection: z46.enum(["row", "column"]).optional(),
16719
+ pcbAlignItems: z46.enum(["start", "center", "end", "stretch"]).optional(),
16720
+ pcbJustifyContent: z46.enum([
16677
16721
  "start",
16678
16722
  "center",
16679
16723
  "end",
@@ -16682,25 +16726,25 @@ var baseGroupProps = commonLayoutProps.extend({
16682
16726
  "space-around",
16683
16727
  "space-evenly"
16684
16728
  ]).optional(),
16685
- pcbFlexRow: z45.boolean().optional(),
16686
- pcbFlexColumn: z45.boolean().optional(),
16687
- pcbGap: z45.number().or(z45.string()).optional(),
16688
- pcbPack: z45.boolean().optional(),
16689
- pcbPackGap: z45.number().or(z45.string()).optional(),
16690
- schGrid: z45.boolean().optional(),
16691
- schGridCols: z45.number().or(z45.string()).optional(),
16692
- schGridRows: z45.number().or(z45.string()).optional(),
16693
- schGridTemplateRows: z45.string().optional(),
16694
- schGridTemplateColumns: z45.string().optional(),
16695
- schGridTemplate: z45.string().optional(),
16696
- schGridGap: z45.number().or(z45.string()).optional(),
16697
- schGridRowGap: z45.number().or(z45.string()).optional(),
16698
- schGridColumnGap: z45.number().or(z45.string()).optional(),
16699
- schFlex: z45.boolean().or(z45.string()).optional(),
16700
- schFlexGap: z45.number().or(z45.string()).optional(),
16701
- schFlexDirection: z45.enum(["row", "column"]).optional(),
16702
- schAlignItems: z45.enum(["start", "center", "end", "stretch"]).optional(),
16703
- schJustifyContent: z45.enum([
16729
+ pcbFlexRow: z46.boolean().optional(),
16730
+ pcbFlexColumn: z46.boolean().optional(),
16731
+ pcbGap: z46.number().or(z46.string()).optional(),
16732
+ pcbPack: z46.boolean().optional(),
16733
+ pcbPackGap: z46.number().or(z46.string()).optional(),
16734
+ schGrid: z46.boolean().optional(),
16735
+ schGridCols: z46.number().or(z46.string()).optional(),
16736
+ schGridRows: z46.number().or(z46.string()).optional(),
16737
+ schGridTemplateRows: z46.string().optional(),
16738
+ schGridTemplateColumns: z46.string().optional(),
16739
+ schGridTemplate: z46.string().optional(),
16740
+ schGridGap: z46.number().or(z46.string()).optional(),
16741
+ schGridRowGap: z46.number().or(z46.string()).optional(),
16742
+ schGridColumnGap: z46.number().or(z46.string()).optional(),
16743
+ schFlex: z46.boolean().or(z46.string()).optional(),
16744
+ schFlexGap: z46.number().or(z46.string()).optional(),
16745
+ schFlexDirection: z46.enum(["row", "column"]).optional(),
16746
+ schAlignItems: z46.enum(["start", "center", "end", "stretch"]).optional(),
16747
+ schJustifyContent: z46.enum([
16704
16748
  "start",
16705
16749
  "center",
16706
16750
  "end",
@@ -16709,11 +16753,11 @@ var baseGroupProps = commonLayoutProps.extend({
16709
16753
  "space-around",
16710
16754
  "space-evenly"
16711
16755
  ]).optional(),
16712
- schFlexRow: z45.boolean().optional(),
16713
- schFlexColumn: z45.boolean().optional(),
16714
- schGap: z45.number().or(z45.string()).optional(),
16715
- schPack: z45.boolean().optional(),
16716
- schMatchAdapt: z45.boolean().optional(),
16756
+ schFlexRow: z46.boolean().optional(),
16757
+ schFlexColumn: z46.boolean().optional(),
16758
+ schGap: z46.number().or(z46.string()).optional(),
16759
+ schPack: z46.boolean().optional(),
16760
+ schMatchAdapt: z46.boolean().optional(),
16717
16761
  pcbWidth: length3.optional(),
16718
16762
  pcbHeight: length3.optional(),
16719
16763
  minTraceWidth: length3.optional(),
@@ -16736,42 +16780,42 @@ var baseGroupProps = commonLayoutProps.extend({
16736
16780
  pcbPaddingBottom: length3.optional(),
16737
16781
  pcbAnchorAlignment: pcbAnchorAlignmentAutocomplete.optional()
16738
16782
  });
16739
- var partsEngine = z45.custom((v) => "findPart" in v);
16783
+ var partsEngine = z46.custom((v) => "findPart" in v);
16740
16784
  var subcircuitGroupProps = baseGroupProps.extend({
16741
16785
  manualEdits: manual_edits_file.optional(),
16742
- schAutoLayoutEnabled: z45.boolean().optional(),
16743
- schTraceAutoLabelEnabled: z45.boolean().optional(),
16786
+ schAutoLayoutEnabled: z46.boolean().optional(),
16787
+ schTraceAutoLabelEnabled: z46.boolean().optional(),
16744
16788
  schMaxTraceDistance: distance11.optional(),
16745
- routingDisabled: z45.boolean().optional(),
16746
- placementDrcChecksDisabled: z45.boolean().optional(),
16747
- bomDisabled: z45.boolean().optional(),
16789
+ routingDisabled: z46.boolean().optional(),
16790
+ placementDrcChecksDisabled: z46.boolean().optional(),
16791
+ bomDisabled: z46.boolean().optional(),
16748
16792
  defaultTraceWidth: length3.optional(),
16749
16793
  ...routingTolerances.shape,
16750
16794
  nominalTraceWidth: length3.optional(),
16751
16795
  partsEngine: partsEngine.optional(),
16752
- _subcircuitCachingEnabled: z45.boolean().optional(),
16753
- pcbRouteCache: z45.custom((v) => true).optional(),
16796
+ _subcircuitCachingEnabled: z46.boolean().optional(),
16797
+ pcbRouteCache: z46.custom((v) => true).optional(),
16754
16798
  autorouter: autorouterProp.optional(),
16755
16799
  preflightRoutingCheckPolicy: preflightRoutingCheckPolicy.optional(),
16756
16800
  autorouterEffortLevel: autorouterEffortLevel.optional(),
16757
16801
  autorouterVersion: autorouterVersion.optional(),
16758
- square: z45.boolean().optional(),
16759
- emptyArea: z45.string().optional(),
16760
- filledArea: z45.string().optional(),
16802
+ square: z46.boolean().optional(),
16803
+ emptyArea: z46.string().optional(),
16804
+ filledArea: z46.string().optional(),
16761
16805
  width: distance11.optional(),
16762
16806
  height: distance11.optional(),
16763
- outline: z45.array(point).optional(),
16807
+ outline: z46.array(point).optional(),
16764
16808
  outlineOffsetX: distance11.optional(),
16765
16809
  outlineOffsetY: distance11.optional(),
16766
- circuitJson: z45.array(z45.any()).optional(),
16767
- exposedNets: z45.array(z45.string()).optional(),
16768
- exposeNets: z45.boolean().optional()
16810
+ circuitJson: z46.array(z46.any()).optional(),
16811
+ exposedNets: z46.array(z46.string()).optional(),
16812
+ exposeNets: z46.boolean().optional()
16769
16813
  });
16770
16814
  var subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({
16771
- subcircuit: z45.literal(true)
16815
+ subcircuit: z46.literal(true)
16772
16816
  });
16773
- var groupProps = z45.discriminatedUnion("subcircuit", [
16774
- baseGroupProps.extend({ subcircuit: z45.literal(false).optional() }),
16817
+ var groupProps = z46.discriminatedUnion("subcircuit", [
16818
+ baseGroupProps.extend({ subcircuit: z46.literal(false).optional() }),
16775
16819
  subcircuitGroupPropsWithBool
16776
16820
  ]);
16777
16821
  expectTypesMatch(true);
@@ -16781,25 +16825,25 @@ expectTypesMatch(true);
16781
16825
  expectTypesMatch(true);
16782
16826
 
16783
16827
  // lib/components/board.ts
16784
- var boardColor = z46.custom((value) => typeof value === "string");
16785
- var boardOutlinePoint = z46.object({
16828
+ var boardColor = z47.custom((value) => typeof value === "string");
16829
+ var boardOutlinePoint = z47.object({
16786
16830
  ...point.shape,
16787
- isCastellatedHole: z46.boolean().optional(),
16831
+ isCastellatedHole: z47.boolean().optional(),
16788
16832
  holeDiameter: distance.optional(),
16789
16833
  padDiameter: distance.optional(),
16790
- connectsTo: z46.string().or(z46.array(z46.string())).optional()
16834
+ connectsTo: z47.string().or(z47.array(z47.string())).optional()
16791
16835
  }).superRefine((outlinePoint, ctx) => {
16792
16836
  if (outlinePoint.isCastellatedHole) {
16793
16837
  if (outlinePoint.holeDiameter === void 0) {
16794
16838
  ctx.addIssue({
16795
- code: z46.ZodIssueCode.custom,
16839
+ code: z47.ZodIssueCode.custom,
16796
16840
  path: ["holeDiameter"],
16797
16841
  message: "holeDiameter is required for a castellated hole"
16798
16842
  });
16799
16843
  }
16800
16844
  if (outlinePoint.padDiameter === void 0) {
16801
16845
  ctx.addIssue({
16802
- code: z46.ZodIssueCode.custom,
16846
+ code: z47.ZodIssueCode.custom,
16803
16847
  path: ["padDiameter"],
16804
16848
  message: "padDiameter is required for a castellated hole"
16805
16849
  });
@@ -16808,20 +16852,19 @@ var boardOutlinePoint = z46.object({
16808
16852
  }
16809
16853
  if (outlinePoint.holeDiameter !== void 0 || outlinePoint.padDiameter !== void 0 || outlinePoint.connectsTo !== void 0) {
16810
16854
  ctx.addIssue({
16811
- code: z46.ZodIssueCode.custom,
16855
+ code: z47.ZodIssueCode.custom,
16812
16856
  path: ["isCastellatedHole"],
16813
16857
  message: "isCastellatedHole must be true when castellated hole props are provided"
16814
16858
  });
16815
16859
  }
16816
16860
  });
16817
16861
  var boardProps = subcircuitGroupProps.omit({ connections: true }).extend({
16818
- mountedTo: z46.string().trim().min(1).optional().describe(
16819
- 'Assembly mounting target, such as "NEMA17.backface". Trimmed; omitted leaves the board unattached. The target face is resolved by the consumer.'
16820
- ),
16821
- mountGap: distance.pipe(z46.number().nonnegative().finite()).optional().describe(
16822
- "Nonnegative finite clearance between the target mounting face and the nearest PCB surface, in millimeters or a unit string, parsed to mm. Omitted leaves the gap unset; only meaningful when mountedTo is supplied."
16823
- ),
16824
- fabricatorPreset: z46.enum([
16862
+ mountedTo: z47.string().trim().min(1).optional().describe('e.g. "NEMA17.backface".'),
16863
+ mountGap: distance.pipe(z47.number().nonnegative().finite()).optional().describe('Clearance from the mounting face, e.g. "6mm".'),
16864
+ mountRotationAnchor: boardMountRotationAnchor.optional().describe('e.g. "J_USB" or "rightedge".'),
16865
+ mountRotation: boardMountRotation.optional().describe('e.g. "calc(NEMA17.wireside-90degcw)".'),
16866
+ mountOrientation: boardMountOrientation.optional().describe('e.g. "top_layer_toward_mount_face".'),
16867
+ fabricatorPreset: z47.enum([
16825
16868
  "jlcpcb_economy",
16826
16869
  "jlcpcb_standard",
16827
16870
  "jlcpcb_economy_20260912",
@@ -16829,24 +16872,24 @@ var boardProps = subcircuitGroupProps.omit({ connections: true }).extend({
16829
16872
  ]).optional().describe(
16830
16873
  "Fabricator preset, preserved as supplied. Omitted leaves the preset unset."
16831
16874
  ),
16832
- material: z46.enum(["fr4", "fr1", "flex"]).default("fr4"),
16833
- layers: z46.union([
16834
- z46.literal(1),
16835
- z46.literal(2),
16836
- z46.literal(4),
16837
- z46.literal(6),
16838
- z46.literal(8),
16839
- z46.literal(10)
16875
+ material: z47.enum(["fr4", "fr1", "flex"]).default("fr4"),
16876
+ layers: z47.union([
16877
+ z47.literal(1),
16878
+ z47.literal(2),
16879
+ z47.literal(4),
16880
+ z47.literal(6),
16881
+ z47.literal(8),
16882
+ z47.literal(10)
16840
16883
  ]).default(2),
16841
- allowBlindAndBuriedVias: z46.boolean().default(false).describe(
16884
+ allowBlindAndBuriedVias: z47.boolean().default(false).describe(
16842
16885
  "Whether the autorouter may generate blind and buried vias. Defaults to false, which restricts newly generated vias to the full board stack."
16843
16886
  ),
16844
- routeRemaining: z46.boolean().optional().describe(
16887
+ routeRemaining: z47.boolean().optional().describe(
16845
16888
  "Whether to route remaining unrouted connections after explicit routing phases. Boolean values are preserved; omitted leaves the setting unset. No aliases or prop conflicts are introduced, and existing boards require no migration."
16846
16889
  ),
16847
- defaultViaTenting: z46.union([
16848
- z46.boolean(),
16849
- z46.enum([
16890
+ defaultViaTenting: z47.union([
16891
+ z47.boolean(),
16892
+ z47.enum([
16850
16893
  "both_sides",
16851
16894
  "top_and_bottom_tented",
16852
16895
  "top_tented",
@@ -16865,46 +16908,46 @@ var boardProps = subcircuitGroupProps.omit({ connections: true }).extend({
16865
16908
  boardAnchorPosition: point.optional(),
16866
16909
  anchorAlignment: ninePointAnchor.optional(),
16867
16910
  boardAnchorAlignment: ninePointAnchor.optional().describe("Prefer using anchorAlignment when possible"),
16868
- outline: z46.array(boardOutlinePoint).optional(),
16869
- title: z46.string().optional(),
16911
+ outline: z47.array(boardOutlinePoint).optional(),
16912
+ title: z47.string().optional(),
16870
16913
  solderMaskColor: boardColor.optional(),
16871
16914
  topSolderMaskColor: boardColor.optional(),
16872
16915
  bottomSolderMaskColor: boardColor.optional(),
16873
16916
  silkscreenColor: boardColor.optional(),
16874
16917
  topSilkscreenColor: boardColor.optional(),
16875
16918
  bottomSilkscreenColor: boardColor.optional(),
16876
- doubleSidedAssembly: z46.boolean().optional().default(false),
16877
- isViaInPadAllowed: z46.boolean().optional().describe(
16919
+ doubleSidedAssembly: z47.boolean().optional().default(false),
16920
+ isViaInPadAllowed: z47.boolean().optional().describe(
16878
16921
  "Allows intentional via-in-pad designs to pass DRC. Omitted or false keeps via-in-pad disallowed."
16879
16922
  ),
16880
- automaticPoursEnabled: z46.boolean().default(false).describe(
16923
+ automaticPoursEnabled: z47.boolean().default(false).describe(
16881
16924
  "Whether implicit copper pours should be generated automatically. Defaults to false."
16882
16925
  ),
16883
- enableViaStitching: z46.boolean().default(false).describe(
16926
+ enableViaStitching: z47.boolean().default(false).describe(
16884
16927
  "Whether to stitch copper pours on the same net across layers with vias. Defaults to false."
16885
16928
  ),
16886
- viaStitchPitch: distance.pipe(z46.number().positive().finite()).optional().describe(
16929
+ viaStitchPitch: distance.pipe(z47.number().positive().finite()).optional().describe(
16887
16930
  "Positive center-to-center stitching via spacing in millimeters or a unit string, parsed to millimeters. Omitted uses the solver default. Does not enable stitching by itself."
16888
16931
  ),
16889
- schematicDisabled: z46.boolean().optional()
16932
+ schematicDisabled: z47.boolean().optional()
16890
16933
  });
16891
16934
  expectTypesMatch(true);
16892
16935
  expectTypesMatch(true);
16893
16936
 
16894
16937
  // lib/components/pcb-bend.ts
16895
16938
  import { rotation as rotation3 } from "circuit-json";
16896
- import { z as z47 } from "zod";
16897
- var finiteDistance = distance.pipe(z47.number().finite());
16898
- var pcbBendProps = z47.object({
16899
- name: z47.string().optional(),
16939
+ import { z as z48 } from "zod";
16940
+ var finiteDistance = distance.pipe(z48.number().finite());
16941
+ var pcbBendProps = z48.object({
16942
+ name: z48.string().optional(),
16900
16943
  x1: finiteDistance,
16901
16944
  y1: finiteDistance,
16902
16945
  x2: finiteDistance,
16903
16946
  y2: finiteDistance,
16904
- bendAngle: rotation3.pipe(z47.number().finite()),
16905
- bendRadius: distance.pipe(z47.number().finite().positive()),
16906
- tearReliefRadius: distance.pipe(z47.number().finite().positive()).optional(),
16907
- bendSide: z47.enum(["left", "right"])
16947
+ bendAngle: rotation3.pipe(z48.number().finite()),
16948
+ bendRadius: distance.pipe(z48.number().finite().positive()),
16949
+ tearReliefRadius: distance.pipe(z48.number().finite().positive()).optional(),
16950
+ bendSide: z48.enum(["left", "right"])
16908
16951
  }).refine(({ x1, y1, x2, y2 }) => x1 !== x2 || y1 !== y2, {
16909
16952
  message: "Bend centerline endpoints must be distinct",
16910
16953
  path: ["x2"]
@@ -16912,83 +16955,83 @@ var pcbBendProps = z47.object({
16912
16955
  expectTypesMatch(true);
16913
16956
 
16914
16957
  // lib/components/pcb-soldermask-opening.ts
16915
- import { z as z48 } from "zod";
16916
- var finiteDistance2 = distance.pipe(z48.number().finite());
16917
- var positiveDistance2 = distance.pipe(z48.number().finite().positive());
16958
+ import { z as z49 } from "zod";
16959
+ var finiteDistance2 = distance.pipe(z49.number().finite());
16960
+ var positiveDistance2 = distance.pipe(z49.number().finite().positive());
16918
16961
  var openingBaseProps = pcbLayoutProps.omit({ layer: true }).extend({
16919
- name: z48.string().optional(),
16962
+ name: z49.string().optional(),
16920
16963
  /** Face whose solder mask or flex coverlay is removed. Required. */
16921
- layer: z48.enum(["top", "bottom"])
16964
+ layer: z49.enum(["top", "bottom"])
16922
16965
  });
16923
- var pcbSoldermaskOpeningProps = z48.discriminatedUnion("shape", [
16966
+ var pcbSoldermaskOpeningProps = z49.discriminatedUnion("shape", [
16924
16967
  openingBaseProps.extend({
16925
- shape: z48.literal("rect"),
16968
+ shape: z49.literal("rect"),
16926
16969
  width: positiveDistance2,
16927
16970
  height: positiveDistance2,
16928
- radius: z48.never().optional(),
16929
- points: z48.never().optional()
16971
+ radius: z49.never().optional(),
16972
+ points: z49.never().optional()
16930
16973
  }),
16931
16974
  openingBaseProps.extend({
16932
- shape: z48.literal("circle"),
16975
+ shape: z49.literal("circle"),
16933
16976
  radius: positiveDistance2,
16934
- width: z48.never().optional(),
16935
- height: z48.never().optional(),
16936
- points: z48.never().optional()
16977
+ width: z49.never().optional(),
16978
+ height: z49.never().optional(),
16979
+ points: z49.never().optional()
16937
16980
  }),
16938
16981
  openingBaseProps.extend({
16939
- shape: z48.literal("polygon"),
16982
+ shape: z49.literal("polygon"),
16940
16983
  /** Local vertices; pcbX/pcbY/pcbRotation place the implicitly closed boundary. */
16941
- points: z48.array(z48.object({ x: finiteDistance2, y: finiteDistance2 })).min(3).refine((points) => {
16984
+ points: z49.array(z49.object({ x: finiteDistance2, y: finiteDistance2 })).min(3).refine((points) => {
16942
16985
  const twiceArea = points.reduce((sum, point8, index) => {
16943
16986
  const next = points[(index + 1) % points.length];
16944
16987
  return sum + point8.x * next.y - next.x * point8.y;
16945
16988
  }, 0);
16946
16989
  return Number.isFinite(twiceArea) && twiceArea !== 0;
16947
16990
  }, "Solder-mask opening must enclose a nonzero area"),
16948
- width: z48.never().optional(),
16949
- height: z48.never().optional(),
16950
- radius: z48.never().optional()
16991
+ width: z49.never().optional(),
16992
+ height: z49.never().optional(),
16993
+ radius: z49.never().optional()
16951
16994
  })
16952
16995
  ]);
16953
16996
 
16954
16997
  // lib/components/pcb-stiffener.ts
16955
- import { z as z49 } from "zod";
16956
- var positiveDistance3 = distance.pipe(z49.number().finite().positive());
16957
- var finiteDistance3 = distance.pipe(z49.number().finite());
16998
+ import { z as z50 } from "zod";
16999
+ var positiveDistance3 = distance.pipe(z50.number().finite().positive());
17000
+ var finiteDistance3 = distance.pipe(z50.number().finite());
16958
17001
  var stiffenerBaseProps = pcbLayoutProps.omit({ layer: true }).extend({
16959
- name: z49.string().optional(),
17002
+ name: z50.string().optional(),
16960
17003
  /** Board attachment face, not a copper-layer assignment. Required. */
16961
- layer: z49.enum(["top", "bottom"]),
16962
- material: z49.enum(["fr4", "polyimide", "stainless_steel", "aluminum"]),
17004
+ layer: z50.enum(["top", "bottom"]),
17005
+ material: z50.enum(["fr4", "polyimide", "stainless_steel", "aluminum"]),
16963
17006
  /** Stiffener material thickness only, excluding PCB and adhesive. */
16964
17007
  thickness: positiveDistance3,
16965
17008
  /** Nonnegative adhesive thickness; omission means unspecified, not zero. */
16966
- adhesiveThickness: distance.pipe(z49.number().finite().nonnegative()).optional()
17009
+ adhesiveThickness: distance.pipe(z50.number().finite().nonnegative()).optional()
16967
17010
  });
16968
- var pcbStiffenerProps = z49.discriminatedUnion("shape", [
17011
+ var pcbStiffenerProps = z50.discriminatedUnion("shape", [
16969
17012
  stiffenerBaseProps.extend({
16970
- shape: z49.literal("rect"),
17013
+ shape: z50.literal("rect"),
16971
17014
  width: positiveDistance3,
16972
17015
  height: positiveDistance3,
16973
- outline: z49.never().optional()
17016
+ outline: z50.never().optional()
16974
17017
  }),
16975
17018
  stiffenerBaseProps.extend({
16976
- shape: z49.literal("polygon"),
17019
+ shape: z50.literal("polygon"),
16977
17020
  /** Local vertices transformed by pcbX/pcbY/pcbRotation; implicitly closed. */
16978
- outline: z49.array(z49.object({ x: finiteDistance3, y: finiteDistance3 })).min(3).refine((points) => {
17021
+ outline: z50.array(z50.object({ x: finiteDistance3, y: finiteDistance3 })).min(3).refine((points) => {
16979
17022
  const twiceArea = points.reduce((sum, p, i) => {
16980
17023
  const next = points[(i + 1) % points.length];
16981
17024
  return sum + p.x * next.y - next.x * p.y;
16982
17025
  }, 0);
16983
17026
  return Number.isFinite(twiceArea) && twiceArea !== 0;
16984
17027
  }, "Stiffener outline must enclose a nonzero area"),
16985
- width: z49.never().optional(),
16986
- height: z49.never().optional()
17028
+ width: z50.never().optional(),
17029
+ height: z50.never().optional()
16987
17030
  })
16988
17031
  ]);
16989
17032
 
16990
17033
  // lib/components/panel.ts
16991
- import { z as z50 } from "zod";
17034
+ import { z as z51 } from "zod";
16992
17035
  var panelProps = baseGroupProps.omit({
16993
17036
  width: true,
16994
17037
  height: true,
@@ -16997,25 +17040,25 @@ var panelProps = baseGroupProps.omit({
16997
17040
  }).extend({
16998
17041
  width: distance.optional(),
16999
17042
  height: distance.optional(),
17000
- children: z50.any().optional(),
17043
+ children: z51.any().optional(),
17001
17044
  anchorAlignment: ninePointAnchor.optional(),
17002
- noSolderMask: z50.boolean().optional(),
17003
- panelizationMethod: z50.enum(["tab-routing", "outline_routing", "none"]).optional(),
17045
+ noSolderMask: z51.boolean().optional(),
17046
+ panelizationMethod: z51.enum(["tab-routing", "outline_routing", "none"]).optional(),
17004
17047
  boardGap: distance.optional(),
17005
- layoutMode: z50.enum(["grid", "pack", "none"]).optional(),
17006
- row: z50.number().optional(),
17007
- col: z50.number().optional(),
17048
+ layoutMode: z51.enum(["grid", "pack", "none"]).optional(),
17049
+ row: z51.number().optional(),
17050
+ col: z51.number().optional(),
17008
17051
  cellWidth: distance.optional(),
17009
17052
  cellHeight: distance.optional(),
17010
17053
  tabWidth: distance.optional(),
17011
17054
  tabLength: distance.optional(),
17012
- mouseBites: z50.boolean().optional(),
17055
+ mouseBites: z51.boolean().optional(),
17013
17056
  edgePadding: distance.optional(),
17014
17057
  edgePaddingLeft: distance.optional(),
17015
17058
  edgePaddingRight: distance.optional(),
17016
17059
  edgePaddingTop: distance.optional(),
17017
17060
  edgePaddingBottom: distance.optional(),
17018
- _subcircuitCachingEnabled: z50.boolean().optional()
17061
+ _subcircuitCachingEnabled: z51.boolean().optional()
17019
17062
  });
17020
17063
  expectTypesMatch(true);
17021
17064
 
@@ -17026,23 +17069,23 @@ expectTypesMatch(true);
17026
17069
 
17027
17070
  // lib/common/fanoutTracePath.ts
17028
17071
  import { layer_ref as layer_ref5 } from "circuit-json";
17029
- import { z as z52 } from "zod";
17072
+ import { z as z53 } from "zod";
17030
17073
  var coordinate = distance.refine(Number.isFinite, "Coordinate must be finite");
17031
17074
  var positiveDistance4 = distance.refine(
17032
17075
  (value) => Number.isFinite(value) && value > 0,
17033
17076
  "Distance must be positive and finite"
17034
17077
  );
17035
- var routePoint = z52.discriminatedUnion("route_type", [
17036
- z52.object({
17037
- route_type: z52.literal("wire"),
17078
+ var routePoint = z53.discriminatedUnion("route_type", [
17079
+ z53.object({
17080
+ route_type: z53.literal("wire"),
17038
17081
  x: coordinate,
17039
17082
  y: coordinate,
17040
17083
  width: positiveDistance4,
17041
- width_interpolation_mode: z52.enum(["linear", "quadratic"]).optional().describe("Interpolate width from this point to the next wire point."),
17084
+ width_interpolation_mode: z53.enum(["linear", "quadratic"]).optional().describe("Interpolate width from this point to the next wire point."),
17042
17085
  layer: layer_ref5
17043
17086
  }),
17044
- z52.object({
17045
- route_type: z52.literal("via"),
17087
+ z53.object({
17088
+ route_type: z53.literal("via"),
17046
17089
  x: coordinate,
17047
17090
  y: coordinate,
17048
17091
  from_layer: layer_ref5,
@@ -17051,9 +17094,9 @@ var routePoint = z52.discriminatedUnion("route_type", [
17051
17094
  via_hole_diameter: positiveDistance4.optional()
17052
17095
  })
17053
17096
  ]);
17054
- var fanoutTracePath = z52.object({
17055
- connection: z52.string().min(1),
17056
- route: z52.array(routePoint).min(2).superRefine((route, ctx) => {
17097
+ var fanoutTracePath = z53.object({
17098
+ connection: z53.string().min(1),
17099
+ route: z53.array(routePoint).min(2).superRefine((route, ctx) => {
17057
17100
  const first = route[0];
17058
17101
  let layer = first?.route_type === "via" ? first.from_layer : first?.layer;
17059
17102
  for (const [index, point8] of route.entries()) {
@@ -17080,16 +17123,16 @@ var fanoutTracePath = z52.object({
17080
17123
 
17081
17124
  // lib/common/fanoutProps.ts
17082
17125
  import { layer_ref as layer_ref6 } from "circuit-json";
17083
- import { z as z54 } from "zod";
17126
+ import { z as z55 } from "zod";
17084
17127
 
17085
17128
  // lib/common/fanoutBoundaryPadding.ts
17086
- import { z as z53 } from "zod";
17129
+ import { z as z54 } from "zod";
17087
17130
  var nonnegativeDistance = distance.refine((value) => value >= 0, {
17088
17131
  message: "Fanout boundary padding cannot be negative"
17089
17132
  });
17090
- var fanoutBoundaryPadding = z53.union([
17133
+ var fanoutBoundaryPadding = z54.union([
17091
17134
  nonnegativeDistance,
17092
- z53.object({
17135
+ z54.object({
17093
17136
  top: nonnegativeDistance.optional(),
17094
17137
  right: nonnegativeDistance.optional(),
17095
17138
  bottom: nonnegativeDistance.optional(),
@@ -17116,32 +17159,32 @@ var canonicalBusFanoutDirectionValues = [
17116
17159
  "leftside_top",
17117
17160
  "center"
17118
17161
  ];
17119
- var canonicalBusFanoutDirection = z54.enum(
17162
+ var canonicalBusFanoutDirection = z55.enum(
17120
17163
  canonicalBusFanoutDirectionValues
17121
17164
  );
17122
- var busFanoutDirection = z54.union([
17165
+ var busFanoutDirection = z55.union([
17123
17166
  ninePointAnchor,
17124
17167
  canonicalBusFanoutDirection,
17125
- z54.object({
17126
- direction: z54.union([ninePointAnchor, canonicalBusFanoutDirection])
17168
+ z55.object({
17169
+ direction: z55.union([ninePointAnchor, canonicalBusFanoutDirection])
17127
17170
  })
17128
17171
  ]);
17129
- var fanoutProps = z54.object({
17130
- busFanoutDirections: z54.record(busFanoutDirection).optional(),
17172
+ var fanoutProps = z55.object({
17173
+ busFanoutDirections: z55.record(busFanoutDirection).optional(),
17131
17174
  fanoutBoundaryPadding: fanoutBoundaryPadding.optional(),
17132
- fanoutRoutingLayers: z54.array(layer_ref6).min(1).optional(),
17133
- fanoutPourNetMap: z54.record(layer_ref6, z54.union([z54.string(), z54.array(z54.string()).min(1)])).optional()
17175
+ fanoutRoutingLayers: z55.array(layer_ref6).min(1).optional(),
17176
+ fanoutPourNetMap: z55.record(layer_ref6, z55.union([z55.string(), z55.array(z55.string()).min(1)])).optional()
17134
17177
  });
17135
17178
  expectTypesMatch(true);
17136
17179
 
17137
17180
  // lib/components/breakout.ts
17138
- import { z as z55 } from "zod";
17181
+ import { z as z56 } from "zod";
17139
17182
  var nonnegativeFanoutMargin = distance.refine((value) => value >= 0, {
17140
17183
  message: "Fanout margin cannot be negative"
17141
17184
  });
17142
17185
  var breakoutProps = subcircuitGroupProps.extend({
17143
17186
  autorouter: autorouterProp.default("fanout"),
17144
- pcbTracePaths: z55.array(fanoutTracePath).optional(),
17187
+ pcbTracePaths: z56.array(fanoutTracePath).optional(),
17145
17188
  padding: distance.optional(),
17146
17189
  paddingLeft: distance.optional(),
17147
17190
  paddingRight: distance.optional(),
@@ -17155,41 +17198,41 @@ expectTypesMatch(true);
17155
17198
  // lib/components/chip.ts
17156
17199
  import { distance as distance12, supplier_name as supplier_name2 } from "circuit-json";
17157
17200
  import { isValidElement } from "react";
17158
- import { z as z56 } from "zod";
17159
- var connectionTarget2 = z56.string().or(z56.array(z56.string()).readonly()).or(z56.array(z56.string()));
17160
- var noConnectProp = z56.array(schematicPinLabel).readonly().or(z56.array(schematicPinLabel));
17161
- var connectionsProp = z56.custom().pipe(z56.record(z56.string(), connectionTarget2));
17162
- var spicemodelElement = z56.custom(
17201
+ import { z as z57 } from "zod";
17202
+ var connectionTarget2 = z57.string().or(z57.array(z57.string()).readonly()).or(z57.array(z57.string()));
17203
+ var noConnectProp = z57.array(schematicPinLabel).readonly().or(z57.array(schematicPinLabel));
17204
+ var connectionsProp = z57.custom().pipe(z57.record(z57.string(), connectionTarget2));
17205
+ var spicemodelElement = z57.custom(
17163
17206
  (v) => !!v && typeof v === "object" && "type" in v && "props" in v
17164
17207
  );
17165
- var internalCircuitElement = z56.custom(
17208
+ var internalCircuitElement = z57.custom(
17166
17209
  (value) => isValidElement(value) && value.type === "internalcircuit"
17167
17210
  );
17168
- var pinLabelsProp = z56.record(
17211
+ var pinLabelsProp = z57.record(
17169
17212
  schematicPinLabel,
17170
- schematicPinLabel.or(z56.array(schematicPinLabel).readonly()).or(z56.array(schematicPinLabel))
17213
+ schematicPinLabel.or(z57.array(schematicPinLabel).readonly()).or(z57.array(schematicPinLabel))
17171
17214
  );
17172
17215
  expectTypesMatch(true);
17173
- var pinCompatibleVariant = z56.object({
17174
- manufacturerPartNumber: z56.string().optional(),
17175
- supplierPartNumber: z56.record(supplier_name2, z56.array(z56.string())).optional()
17216
+ var pinCompatibleVariant = z57.object({
17217
+ manufacturerPartNumber: z57.string().optional(),
17218
+ supplierPartNumber: z57.record(supplier_name2, z57.array(z57.string())).optional()
17176
17219
  });
17177
17220
  var chipProps = commonComponentProps.extend({
17178
- manufacturerPartNumber: z56.string().optional(),
17221
+ manufacturerPartNumber: z57.string().optional(),
17179
17222
  pinLabels: pinLabelsProp.optional(),
17180
- showPinAliases: z56.boolean().optional(),
17181
- pcbPinLabels: z56.record(z56.string(), z56.string()).optional(),
17182
- internallyConnectedPins: z56.array(z56.array(z56.union([z56.string(), z56.number()]))).optional(),
17183
- externallyConnectedPins: z56.array(z56.array(z56.string())).optional(),
17223
+ showPinAliases: z57.boolean().optional(),
17224
+ pcbPinLabels: z57.record(z57.string(), z57.string()).optional(),
17225
+ internallyConnectedPins: z57.array(z57.array(z57.union([z57.string(), z57.number()]))).optional(),
17226
+ externallyConnectedPins: z57.array(z57.array(z57.string())).optional(),
17184
17227
  schPinArrangement: schematicPortArrangement.optional(),
17185
17228
  schPortArrangement: schematicPortArrangement.optional(),
17186
- pinCompatibleVariants: z56.array(pinCompatibleVariant).optional(),
17229
+ pinCompatibleVariants: z57.array(pinCompatibleVariant).optional(),
17187
17230
  schPinStyle: schematicPinStyle.optional(),
17188
17231
  schPinSpacing: distance12.optional(),
17189
17232
  schWidth: distance12.optional(),
17190
17233
  schHeight: distance12.optional(),
17191
- noSchematicRepresentation: z56.boolean().optional(),
17192
- schShowInternalCircuit: z56.boolean().optional().default(false),
17234
+ noSchematicRepresentation: z57.boolean().optional(),
17235
+ schShowInternalCircuit: z57.boolean().optional().default(false),
17193
17236
  noConnect: noConnectProp.optional(),
17194
17237
  connections: connectionsProp.optional(),
17195
17238
  spiceModel: spicemodelElement.optional(),
@@ -17204,38 +17247,38 @@ expectTypesMatch(true);
17204
17247
 
17205
17248
  // lib/components/jumper.ts
17206
17249
  import { distance as distance13 } from "circuit-json";
17207
- import { z as z57 } from "zod";
17250
+ import { z as z58 } from "zod";
17208
17251
  var jumperProps = commonComponentProps.extend({
17209
- manufacturerPartNumber: z57.string().optional(),
17210
- pinLabels: z57.record(
17211
- z57.number().or(schematicPinLabel),
17212
- schematicPinLabel.or(z57.array(schematicPinLabel))
17252
+ manufacturerPartNumber: z58.string().optional(),
17253
+ pinLabels: z58.record(
17254
+ z58.number().or(schematicPinLabel),
17255
+ schematicPinLabel.or(z58.array(schematicPinLabel))
17213
17256
  ).optional(),
17214
17257
  schPinStyle: schematicPinStyle.optional(),
17215
17258
  schPinSpacing: distance13.optional(),
17216
17259
  schWidth: distance13.optional(),
17217
17260
  schHeight: distance13.optional(),
17218
- schDirection: z57.enum(["left", "right"]).optional(),
17261
+ schDirection: z58.enum(["left", "right"]).optional(),
17219
17262
  schPinArrangement: schematicPinArrangement.optional(),
17220
17263
  schPortArrangement: schematicPortArrangement.optional(),
17221
- pcbPinLabels: z57.record(z57.string(), z57.string()).optional(),
17222
- pinCount: z57.union([z57.literal(2), z57.literal(3)]).optional(),
17223
- internallyConnectedPins: z57.array(z57.array(z57.union([z57.string(), z57.number()]))).optional(),
17224
- connections: z57.custom().pipe(z57.record(z57.string(), connectionTarget)).optional()
17264
+ pcbPinLabels: z58.record(z58.string(), z58.string()).optional(),
17265
+ pinCount: z58.union([z58.literal(2), z58.literal(3)]).optional(),
17266
+ internallyConnectedPins: z58.array(z58.array(z58.union([z58.string(), z58.number()]))).optional(),
17267
+ connections: z58.custom().pipe(z58.record(z58.string(), connectionTarget)).optional()
17225
17268
  });
17226
17269
  expectTypesMatch(true);
17227
17270
 
17228
17271
  // lib/components/solderjumper.ts
17229
- import { z as z58 } from "zod";
17272
+ import { z as z59 } from "zod";
17230
17273
  var solderjumperProps = jumperProps.extend({
17231
- bridgedPins: z58.array(z58.array(z58.string())).optional(),
17232
- bridged: z58.boolean().optional()
17274
+ bridgedPins: z59.array(z59.array(z59.string())).optional(),
17275
+ bridged: z59.boolean().optional()
17233
17276
  });
17234
17277
  expectTypesMatch(true);
17235
17278
 
17236
17279
  // lib/components/connector.ts
17237
- import { z as z59 } from "zod";
17238
- var connectorStandard = z59.enum([
17280
+ import { z as z60 } from "zod";
17281
+ var connectorStandard = z60.enum([
17239
17282
  "usb_c",
17240
17283
  "m2",
17241
17284
  "jst_sh",
@@ -17247,43 +17290,43 @@ var connectorStandard = z59.enum([
17247
17290
  ]);
17248
17291
  var connectorProps = chipProps.extend({
17249
17292
  standard: connectorStandard.optional(),
17250
- pinCount: z59.number().int().positive().optional()
17293
+ pinCount: z60.number().int().positive().optional()
17251
17294
  });
17252
17295
  expectTypesMatch(true);
17253
17296
 
17254
17297
  // lib/components/interconnect.ts
17255
- import { z as z60 } from "zod";
17298
+ import { z as z61 } from "zod";
17256
17299
  var interconnectProps = commonComponentProps.extend({
17257
- standard: z60.enum(["TSC0001_36P_XALT_2025_11", "0805", "0603", "1206"]).optional(),
17258
- pinLabels: z60.record(
17259
- z60.number().or(schematicPinLabel),
17260
- schematicPinLabel.or(z60.array(schematicPinLabel))
17300
+ standard: z61.enum(["TSC0001_36P_XALT_2025_11", "0805", "0603", "1206"]).optional(),
17301
+ pinLabels: z61.record(
17302
+ z61.number().or(schematicPinLabel),
17303
+ schematicPinLabel.or(z61.array(schematicPinLabel))
17261
17304
  ).optional(),
17262
- internallyConnectedPins: z60.array(z60.array(z60.union([z60.string(), z60.number()]))).optional()
17305
+ internallyConnectedPins: z61.array(z61.array(z61.union([z61.string(), z61.number()]))).optional()
17263
17306
  });
17264
17307
  expectTypesMatch(true);
17265
17308
 
17266
17309
  // lib/components/fuse.ts
17267
- import { z as z61 } from "zod";
17310
+ import { z as z62 } from "zod";
17268
17311
  var fusePinLabels = ["pin1", "pin2"];
17269
17312
  var fuseProps = commonComponentProps.extend({
17270
- currentRating: z61.union([z61.number(), z61.string()]),
17271
- voltageRating: z61.union([z61.number(), z61.string()]).optional(),
17272
- schShowRatings: z61.boolean().optional(),
17313
+ currentRating: z62.union([z62.number(), z62.string()]),
17314
+ voltageRating: z62.union([z62.number(), z62.string()]).optional(),
17315
+ schShowRatings: z62.boolean().optional(),
17273
17316
  schOrientation: schematicOrientation.optional(),
17274
- connections: z61.record(
17275
- z61.string(),
17276
- z61.union([
17277
- z61.string(),
17278
- z61.array(z61.string()).readonly(),
17279
- z61.array(z61.string())
17317
+ connections: z62.record(
17318
+ z62.string(),
17319
+ z62.union([
17320
+ z62.string(),
17321
+ z62.array(z62.string()).readonly(),
17322
+ z62.array(z62.string())
17280
17323
  ])
17281
17324
  ).optional()
17282
17325
  });
17283
17326
 
17284
17327
  // lib/components/platedhole.ts
17285
17328
  import { distance as distance14 } from "circuit-json";
17286
- import { z as z62 } from "zod";
17329
+ import { z as z63 } from "zod";
17287
17330
  var DEFAULT_PIN_HEADER_HOLE_DIAMETER = "0.04in";
17288
17331
  var DEFAULT_PIN_HEADER_OUTER_DIAMETER = "0.1in";
17289
17332
  var inferPlatedHoleShapeAndDefaults = (rawProps) => {
@@ -17315,26 +17358,26 @@ var inferPlatedHoleShapeAndDefaults = (rawProps) => {
17315
17358
  props.outerDiameter = DEFAULT_PIN_HEADER_OUTER_DIAMETER;
17316
17359
  return props;
17317
17360
  };
17318
- var distanceHiddenUndefined = z62.custom().transform((a) => {
17361
+ var distanceHiddenUndefined = z63.custom().transform((a) => {
17319
17362
  if (a === void 0) return void 0;
17320
17363
  return distance14.parse(a);
17321
17364
  });
17322
- var platedHolePropsByShape = z62.discriminatedUnion("shape", [
17365
+ var platedHolePropsByShape = z63.discriminatedUnion("shape", [
17323
17366
  pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
17324
- name: z62.string().optional(),
17325
- connectsTo: z62.string().or(z62.array(z62.string())).optional(),
17326
- shape: z62.literal("circle"),
17367
+ name: z63.string().optional(),
17368
+ connectsTo: z63.string().or(z63.array(z63.string())).optional(),
17369
+ shape: z63.literal("circle"),
17327
17370
  holeDiameter: distance14,
17328
17371
  outerDiameter: distance14,
17329
17372
  padDiameter: distance14.optional().describe("Diameter of the copper pad"),
17330
17373
  portHints: portHints.optional(),
17331
17374
  solderMaskMargin: distance14.optional(),
17332
- coveredWithSolderMask: z62.boolean().optional()
17375
+ coveredWithSolderMask: z63.boolean().optional()
17333
17376
  }),
17334
17377
  pcbLayoutProps.omit({ layer: true }).extend({
17335
- name: z62.string().optional(),
17336
- connectsTo: z62.string().or(z62.array(z62.string())).optional(),
17337
- shape: z62.literal("oval"),
17378
+ name: z63.string().optional(),
17379
+ connectsTo: z63.string().or(z63.array(z63.string())).optional(),
17380
+ shape: z63.literal("oval"),
17338
17381
  outerWidth: distance14,
17339
17382
  outerHeight: distance14,
17340
17383
  holeWidth: distanceHiddenUndefined,
@@ -17343,13 +17386,13 @@ var platedHolePropsByShape = z62.discriminatedUnion("shape", [
17343
17386
  innerHeight: distance14.optional().describe("DEPRECATED use holeHeight"),
17344
17387
  portHints: portHints.optional(),
17345
17388
  solderMaskMargin: distance14.optional(),
17346
- coveredWithSolderMask: z62.boolean().optional()
17389
+ coveredWithSolderMask: z63.boolean().optional()
17347
17390
  }),
17348
17391
  pcbLayoutProps.omit({ layer: true }).extend({
17349
- name: z62.string().optional(),
17350
- connectsTo: z62.string().or(z62.array(z62.string())).optional(),
17351
- shape: z62.literal("pill"),
17352
- rectPad: z62.boolean().optional(),
17392
+ name: z63.string().optional(),
17393
+ connectsTo: z63.string().or(z63.array(z63.string())).optional(),
17394
+ shape: z63.literal("pill"),
17395
+ rectPad: z63.boolean().optional(),
17353
17396
  outerWidth: distance14,
17354
17397
  outerHeight: distance14,
17355
17398
  holeWidth: distanceHiddenUndefined,
@@ -17360,30 +17403,30 @@ var platedHolePropsByShape = z62.discriminatedUnion("shape", [
17360
17403
  holeOffsetX: distance14.optional(),
17361
17404
  holeOffsetY: distance14.optional(),
17362
17405
  solderMaskMargin: distance14.optional(),
17363
- coveredWithSolderMask: z62.boolean().optional()
17406
+ coveredWithSolderMask: z63.boolean().optional()
17364
17407
  }),
17365
17408
  pcbLayoutProps.omit({ layer: true }).extend({
17366
- name: z62.string().optional(),
17367
- connectsTo: z62.string().or(z62.array(z62.string())).optional(),
17368
- shape: z62.literal("circular_hole_with_rect_pad"),
17409
+ name: z63.string().optional(),
17410
+ connectsTo: z63.string().or(z63.array(z63.string())).optional(),
17411
+ shape: z63.literal("circular_hole_with_rect_pad"),
17369
17412
  holeDiameter: distance14,
17370
17413
  rectPadWidth: distance14,
17371
17414
  rectPadHeight: distance14,
17372
17415
  rectBorderRadius: distance14.optional(),
17373
- holeShape: z62.literal("circle").optional(),
17374
- padShape: z62.literal("rect").optional(),
17416
+ holeShape: z63.literal("circle").optional(),
17417
+ padShape: z63.literal("rect").optional(),
17375
17418
  portHints: portHints.optional(),
17376
17419
  holeOffsetX: distance14.optional(),
17377
17420
  holeOffsetY: distance14.optional(),
17378
17421
  solderMaskMargin: distance14.optional(),
17379
- coveredWithSolderMask: z62.boolean().optional()
17422
+ coveredWithSolderMask: z63.boolean().optional()
17380
17423
  }),
17381
17424
  pcbLayoutProps.omit({ layer: true }).extend({
17382
- name: z62.string().optional(),
17383
- connectsTo: z62.string().or(z62.array(z62.string())).optional(),
17384
- shape: z62.literal("pill_hole_with_rect_pad"),
17385
- holeShape: z62.literal("pill").optional(),
17386
- padShape: z62.literal("rect").optional(),
17425
+ name: z63.string().optional(),
17426
+ connectsTo: z63.string().or(z63.array(z63.string())).optional(),
17427
+ shape: z63.literal("pill_hole_with_rect_pad"),
17428
+ holeShape: z63.literal("pill").optional(),
17429
+ padShape: z63.literal("rect").optional(),
17387
17430
  holeWidth: distance14,
17388
17431
  holeHeight: distance14,
17389
17432
  rectPadWidth: distance14,
@@ -17393,22 +17436,22 @@ var platedHolePropsByShape = z62.discriminatedUnion("shape", [
17393
17436
  holeOffsetX: distance14.optional(),
17394
17437
  holeOffsetY: distance14.optional(),
17395
17438
  solderMaskMargin: distance14.optional(),
17396
- coveredWithSolderMask: z62.boolean().optional()
17439
+ coveredWithSolderMask: z63.boolean().optional()
17397
17440
  }),
17398
17441
  pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
17399
- name: z62.string().optional(),
17400
- connectsTo: z62.string().or(z62.array(z62.string())).optional(),
17401
- shape: z62.literal("hole_with_polygon_pad"),
17402
- holeShape: z62.enum(["circle", "oval", "pill", "rotated_pill"]),
17442
+ name: z63.string().optional(),
17443
+ connectsTo: z63.string().or(z63.array(z63.string())).optional(),
17444
+ shape: z63.literal("hole_with_polygon_pad"),
17445
+ holeShape: z63.enum(["circle", "oval", "pill", "rotated_pill"]),
17403
17446
  holeDiameter: distance14.optional(),
17404
17447
  holeWidth: distance14.optional(),
17405
17448
  holeHeight: distance14.optional(),
17406
- padOutline: z62.array(point),
17449
+ padOutline: z63.array(point),
17407
17450
  holeOffsetX: distance14,
17408
17451
  holeOffsetY: distance14,
17409
17452
  portHints: portHints.optional(),
17410
17453
  solderMaskMargin: distance14.optional(),
17411
- coveredWithSolderMask: z62.boolean().optional()
17454
+ coveredWithSolderMask: z63.boolean().optional()
17412
17455
  })
17413
17456
  ]).transform((a) => {
17414
17457
  if ("innerWidth" in a && a.innerWidth !== void 0) {
@@ -17419,7 +17462,7 @@ var platedHolePropsByShape = z62.discriminatedUnion("shape", [
17419
17462
  }
17420
17463
  return a;
17421
17464
  });
17422
- var platedHoleProps = z62.preprocess(
17465
+ var platedHoleProps = z63.preprocess(
17423
17466
  inferPlatedHoleShapeAndDefaults,
17424
17467
  platedHolePropsByShape
17425
17468
  );
@@ -17427,7 +17470,7 @@ expectTypesMatch(true);
17427
17470
 
17428
17471
  // lib/components/resistor.ts
17429
17472
  import { resistance } from "circuit-json";
17430
- import { z as z63 } from "zod";
17473
+ import { z as z64 } from "zod";
17431
17474
  var resistorPinLabels = ["pin1", "pin2", "pos", "neg"];
17432
17475
  var resistorImperialFootprintNames = /* @__PURE__ */ new Set([
17433
17476
  "01005",
@@ -17451,7 +17494,7 @@ var resistorFootprintProp = footprintProp.optional().transform(mapResistorFootpr
17451
17494
  var resistorProps = commonComponentProps.extend({
17452
17495
  footprint: resistorFootprintProp,
17453
17496
  resistance,
17454
- tolerance: z63.union([z63.string(), z63.number()]).transform((val) => {
17497
+ tolerance: z64.union([z64.string(), z64.number()]).transform((val) => {
17455
17498
  if (typeof val === "string") {
17456
17499
  if (val.endsWith("%")) {
17457
17500
  return parseFloat(val.slice(0, -1)) / 100;
@@ -17460,12 +17503,12 @@ var resistorProps = commonComponentProps.extend({
17460
17503
  }
17461
17504
  return val;
17462
17505
  }).pipe(
17463
- z63.number().min(0, "Tolerance must be non-negative").max(1, "Tolerance cannot be greater than 100%")
17506
+ z64.number().min(0, "Tolerance must be non-negative").max(1, "Tolerance cannot be greater than 100%")
17464
17507
  ).optional(),
17465
- pullupFor: z63.string().optional(),
17466
- pullupTo: z63.string().optional(),
17467
- pulldownFor: z63.string().optional(),
17468
- pulldownTo: z63.string().optional(),
17508
+ pullupFor: z64.string().optional(),
17509
+ pullupTo: z64.string().optional(),
17510
+ pulldownFor: z64.string().optional(),
17511
+ pulldownTo: z64.string().optional(),
17469
17512
  schOrientation: schematicOrientation.optional(),
17470
17513
  schSize: schematicSymbolSize.optional(),
17471
17514
  connections: createConnectionsProp(resistorPinLabels).optional()
@@ -17475,18 +17518,18 @@ expectTypesMatch(true);
17475
17518
 
17476
17519
  // lib/components/potentiometer.ts
17477
17520
  import { resistance as resistance2 } from "circuit-json";
17478
- import { z as z64 } from "zod";
17521
+ import { z as z65 } from "zod";
17479
17522
  var potentiometerPinLabels = ["pin1", "pin2", "pin3"];
17480
17523
  var potentiometerProps = commonComponentProps.extend({
17481
17524
  maxResistance: resistance2,
17482
- pinVariant: z64.enum(["two_pin", "three_pin"]).optional(),
17525
+ pinVariant: z65.enum(["two_pin", "three_pin"]).optional(),
17483
17526
  connections: createConnectionsProp(potentiometerPinLabels).optional()
17484
17527
  });
17485
17528
  expectTypesMatch(true);
17486
17529
 
17487
17530
  // lib/components/crystal.ts
17488
17531
  import { capacitance, distance as distance15, frequency } from "circuit-json";
17489
- import { z as z65 } from "zod";
17532
+ import { z as z66 } from "zod";
17490
17533
  var crystalPins = [
17491
17534
  "pin1",
17492
17535
  "left",
@@ -17499,8 +17542,8 @@ var crystalProps = commonComponentProps.extend({
17499
17542
  frequency,
17500
17543
  loadCapacitance: capacitance,
17501
17544
  maxTraceLength: distance15.optional(),
17502
- manufacturerPartNumber: z65.string().optional(),
17503
- pinVariant: z65.enum(["two_pin", "four_pin"]).optional(),
17545
+ manufacturerPartNumber: z66.string().optional(),
17546
+ pinVariant: z66.enum(["two_pin", "four_pin"]).optional(),
17504
17547
  schOrientation: schematicOrientation.optional(),
17505
17548
  connections: createConnectionsProp(crystalPins).optional()
17506
17549
  });
@@ -17508,34 +17551,34 @@ expectTypesMatch(true);
17508
17551
 
17509
17552
  // lib/components/resonator.ts
17510
17553
  import { frequency as frequency2, capacitance as capacitance2 } from "circuit-json";
17511
- import { z as z66 } from "zod";
17554
+ import { z as z67 } from "zod";
17512
17555
  var resonatorProps = commonComponentProps.extend({
17513
17556
  frequency: frequency2,
17514
17557
  loadCapacitance: capacitance2,
17515
- pinVariant: z66.enum(["no_ground", "ground_pin", "two_ground_pins"]).optional()
17558
+ pinVariant: z67.enum(["no_ground", "ground_pin", "two_ground_pins"]).optional()
17516
17559
  });
17517
17560
  expectTypesMatch(true);
17518
17561
 
17519
17562
  // lib/components/stampboard.ts
17520
17563
  import { distance as distance16 } from "circuit-json";
17521
- import { z as z67 } from "zod";
17564
+ import { z as z68 } from "zod";
17522
17565
  var stampboardProps = boardProps.extend({
17523
- leftPinCount: z67.number().optional(),
17524
- rightPinCount: z67.number().optional(),
17525
- topPinCount: z67.number().optional(),
17526
- bottomPinCount: z67.number().optional(),
17527
- leftPins: z67.array(z67.string()).optional(),
17528
- rightPins: z67.array(z67.string()).optional(),
17529
- topPins: z67.array(z67.string()).optional(),
17530
- bottomPins: z67.array(z67.string()).optional(),
17566
+ leftPinCount: z68.number().optional(),
17567
+ rightPinCount: z68.number().optional(),
17568
+ topPinCount: z68.number().optional(),
17569
+ bottomPinCount: z68.number().optional(),
17570
+ leftPins: z68.array(z68.string()).optional(),
17571
+ rightPins: z68.array(z68.string()).optional(),
17572
+ topPins: z68.array(z68.string()).optional(),
17573
+ bottomPins: z68.array(z68.string()).optional(),
17531
17574
  pinPitch: distance16.optional(),
17532
- innerHoles: z67.boolean().optional()
17575
+ innerHoles: z68.boolean().optional()
17533
17576
  });
17534
17577
  expectTypesMatch(true);
17535
17578
 
17536
17579
  // lib/components/capacitor.ts
17537
17580
  import { capacitance as capacitance3, distance as distance17, voltage } from "circuit-json";
17538
- import { z as z68 } from "zod";
17581
+ import { z as z69 } from "zod";
17539
17582
  var capacitorPinLabels = [
17540
17583
  "pin1",
17541
17584
  "pin2",
@@ -17547,12 +17590,12 @@ var capacitorPinLabels = [
17547
17590
  var capacitorProps = commonComponentProps.extend({
17548
17591
  capacitance: capacitance3,
17549
17592
  maxVoltageRating: voltage.optional(),
17550
- schShowRatings: z68.boolean().optional().default(false),
17551
- polarized: z68.boolean().optional().default(false),
17552
- decouplingFor: z68.string().optional(),
17553
- decouplingTo: z68.string().optional(),
17554
- bypassFor: z68.string().optional(),
17555
- bypassTo: z68.string().optional(),
17593
+ schShowRatings: z69.boolean().optional().default(false),
17594
+ polarized: z69.boolean().optional().default(false),
17595
+ decouplingFor: z69.string().optional(),
17596
+ decouplingTo: z69.string().optional(),
17597
+ bypassFor: z69.string().optional(),
17598
+ bypassTo: z69.string().optional(),
17556
17599
  maxDecouplingTraceLength: distance17.optional(),
17557
17600
  schOrientation: schematicOrientation.optional(),
17558
17601
  schSize: schematicSymbolSize.optional(),
@@ -17563,14 +17606,14 @@ expectTypesMatch(true);
17563
17606
 
17564
17607
  // lib/components/net.ts
17565
17608
  import { distance as distance18 } from "circuit-json";
17566
- import { z as z69 } from "zod";
17567
- var netProps = z69.object({
17568
- name: z69.string(),
17569
- connectsTo: z69.string().or(z69.array(z69.string())).optional(),
17570
- routingPhaseIndex: z69.number().nullable().optional(),
17571
- highlightColor: z69.string().optional(),
17572
- isPowerNet: z69.boolean().optional(),
17573
- isGroundNet: z69.boolean().optional(),
17609
+ import { z as z70 } from "zod";
17610
+ var netProps = z70.object({
17611
+ name: z70.string(),
17612
+ connectsTo: z70.string().or(z70.array(z70.string())).optional(),
17613
+ routingPhaseIndex: z70.number().nullable().optional(),
17614
+ highlightColor: z70.string().optional(),
17615
+ isPowerNet: z70.boolean().optional(),
17616
+ isGroundNet: z70.boolean().optional(),
17574
17617
  nominalTraceWidth: distance18.optional()
17575
17618
  });
17576
17619
  expectTypesMatch(true);
@@ -17584,55 +17627,55 @@ var fiducialProps = commonComponentProps.extend({
17584
17627
  expectTypesMatch(true);
17585
17628
 
17586
17629
  // lib/components/constrainedlayout.ts
17587
- import { z as z71 } from "zod";
17588
- var constrainedLayoutProps = z71.object({
17589
- name: z71.string().optional(),
17590
- pcbOnly: z71.boolean().optional(),
17591
- schOnly: z71.boolean().optional()
17630
+ import { z as z72 } from "zod";
17631
+ var constrainedLayoutProps = z72.object({
17632
+ name: z72.string().optional(),
17633
+ pcbOnly: z72.boolean().optional(),
17634
+ schOnly: z72.boolean().optional()
17592
17635
  });
17593
17636
  expectTypesMatch(true);
17594
17637
 
17595
17638
  // lib/components/constraint.ts
17596
- import { z as z72 } from "zod";
17597
- var pcbXDistConstraintProps = z72.object({
17598
- pcb: z72.literal(true).optional(),
17639
+ import { z as z73 } from "zod";
17640
+ var pcbXDistConstraintProps = z73.object({
17641
+ pcb: z73.literal(true).optional(),
17599
17642
  xDist: distance,
17600
- left: z72.string(),
17601
- right: z72.string(),
17602
- edgeToEdge: z72.literal(true).optional(),
17603
- centerToCenter: z72.literal(true).optional()
17643
+ left: z73.string(),
17644
+ right: z73.string(),
17645
+ edgeToEdge: z73.literal(true).optional(),
17646
+ centerToCenter: z73.literal(true).optional()
17604
17647
  });
17605
17648
  expectTypesMatch(
17606
17649
  true
17607
17650
  );
17608
- var pcbYDistConstraintProps = z72.object({
17609
- pcb: z72.literal(true).optional(),
17651
+ var pcbYDistConstraintProps = z73.object({
17652
+ pcb: z73.literal(true).optional(),
17610
17653
  yDist: distance,
17611
- top: z72.string(),
17612
- bottom: z72.string(),
17613
- edgeToEdge: z72.literal(true).optional(),
17614
- centerToCenter: z72.literal(true).optional()
17654
+ top: z73.string(),
17655
+ bottom: z73.string(),
17656
+ edgeToEdge: z73.literal(true).optional(),
17657
+ centerToCenter: z73.literal(true).optional()
17615
17658
  });
17616
17659
  expectTypesMatch(
17617
17660
  true
17618
17661
  );
17619
- var pcbSameYConstraintProps = z72.object({
17620
- pcb: z72.literal(true).optional(),
17621
- sameY: z72.literal(true).optional(),
17622
- for: z72.array(z72.string())
17662
+ var pcbSameYConstraintProps = z73.object({
17663
+ pcb: z73.literal(true).optional(),
17664
+ sameY: z73.literal(true).optional(),
17665
+ for: z73.array(z73.string())
17623
17666
  });
17624
17667
  expectTypesMatch(
17625
17668
  true
17626
17669
  );
17627
- var pcbSameXConstraintProps = z72.object({
17628
- pcb: z72.literal(true).optional(),
17629
- sameX: z72.literal(true).optional(),
17630
- for: z72.array(z72.string())
17670
+ var pcbSameXConstraintProps = z73.object({
17671
+ pcb: z73.literal(true).optional(),
17672
+ sameX: z73.literal(true).optional(),
17673
+ for: z73.array(z73.string())
17631
17674
  });
17632
17675
  expectTypesMatch(
17633
17676
  true
17634
17677
  );
17635
- var constraintProps = z72.union([
17678
+ var constraintProps = z73.union([
17636
17679
  pcbXDistConstraintProps,
17637
17680
  pcbYDistConstraintProps,
17638
17681
  pcbSameYConstraintProps,
@@ -17641,13 +17684,13 @@ var constraintProps = z72.union([
17641
17684
  expectTypesMatch(true);
17642
17685
 
17643
17686
  // lib/components/cutout.ts
17644
- import { z as z73 } from "zod";
17687
+ import { z as z74 } from "zod";
17645
17688
  var rectCutoutProps = pcbLayoutProps.omit({
17646
17689
  layer: true,
17647
17690
  pcbRotation: true
17648
17691
  }).extend({
17649
- name: z73.string().optional(),
17650
- shape: z73.literal("rect"),
17692
+ name: z74.string().optional(),
17693
+ shape: z74.literal("rect"),
17651
17694
  width: distance,
17652
17695
  height: distance
17653
17696
  });
@@ -17656,8 +17699,8 @@ var circleCutoutProps = pcbLayoutProps.omit({
17656
17699
  layer: true,
17657
17700
  pcbRotation: true
17658
17701
  }).extend({
17659
- name: z73.string().optional(),
17660
- shape: z73.literal("circle"),
17702
+ name: z74.string().optional(),
17703
+ shape: z74.literal("circle"),
17661
17704
  radius: distance
17662
17705
  });
17663
17706
  expectTypesMatch(true);
@@ -17665,36 +17708,36 @@ var polygonCutoutProps = pcbLayoutProps.omit({
17665
17708
  layer: true,
17666
17709
  pcbRotation: true
17667
17710
  }).extend({
17668
- name: z73.string().optional(),
17669
- shape: z73.literal("polygon"),
17670
- points: z73.array(point)
17711
+ name: z74.string().optional(),
17712
+ shape: z74.literal("polygon"),
17713
+ points: z74.array(point)
17671
17714
  });
17672
17715
  expectTypesMatch(true);
17673
- var cutoutProps = z73.discriminatedUnion("shape", [
17716
+ var cutoutProps = z74.discriminatedUnion("shape", [
17674
17717
  rectCutoutProps,
17675
17718
  circleCutoutProps,
17676
17719
  polygonCutoutProps
17677
17720
  ]);
17678
17721
 
17679
17722
  // lib/components/drc-check.ts
17680
- import { z as z74 } from "zod";
17681
- var drcCheckProps = z74.object({
17682
- name: z74.string().optional(),
17723
+ import { z as z75 } from "zod";
17724
+ var drcCheckProps = z75.object({
17725
+ name: z75.string().optional(),
17683
17726
  checkFn: customDrcCheckFn
17684
17727
  });
17685
17728
  expectTypesMatch(true);
17686
17729
 
17687
17730
  // lib/components/smtpad.ts
17688
- import { z as z75 } from "zod";
17731
+ import { z as z76 } from "zod";
17689
17732
  var rectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17690
- name: z75.string().optional(),
17691
- shape: z75.literal("rect"),
17733
+ name: z76.string().optional(),
17734
+ shape: z76.literal("rect"),
17692
17735
  width: distance,
17693
17736
  height: distance,
17694
17737
  rectBorderRadius: distance.optional(),
17695
17738
  cornerRadius: distance.optional(),
17696
17739
  portHints: portHints.optional(),
17697
- coveredWithSolderMask: z75.boolean().optional(),
17740
+ coveredWithSolderMask: z76.boolean().optional(),
17698
17741
  solderMaskMargin: distance.optional(),
17699
17742
  solderMaskMarginLeft: distance.optional(),
17700
17743
  solderMaskMarginRight: distance.optional(),
@@ -17704,14 +17747,14 @@ var rectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17704
17747
  });
17705
17748
  expectTypesMatch(true);
17706
17749
  var rotatedRectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17707
- name: z75.string().optional(),
17708
- shape: z75.literal("rotated_rect"),
17750
+ name: z76.string().optional(),
17751
+ shape: z76.literal("rotated_rect"),
17709
17752
  width: distance,
17710
17753
  height: distance,
17711
- ccwRotation: z75.number(),
17754
+ ccwRotation: z76.number(),
17712
17755
  cornerRadius: distance.optional(),
17713
17756
  portHints: portHints.optional(),
17714
- coveredWithSolderMask: z75.boolean().optional(),
17757
+ coveredWithSolderMask: z76.boolean().optional(),
17715
17758
  solderMaskMargin: distance.optional(),
17716
17759
  solderMaskMarginLeft: distance.optional(),
17717
17760
  solderMaskMarginRight: distance.optional(),
@@ -17721,51 +17764,51 @@ var rotatedRectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17721
17764
  });
17722
17765
  expectTypesMatch(true);
17723
17766
  var circleSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17724
- name: z75.string().optional(),
17725
- shape: z75.literal("circle"),
17767
+ name: z76.string().optional(),
17768
+ shape: z76.literal("circle"),
17726
17769
  radius: distance,
17727
17770
  portHints: portHints.optional(),
17728
- coveredWithSolderMask: z75.boolean().optional(),
17771
+ coveredWithSolderMask: z76.boolean().optional(),
17729
17772
  solderMaskMargin: distance.optional(),
17730
17773
  solderPasteMargin: distance.optional()
17731
17774
  });
17732
17775
  expectTypesMatch(true);
17733
17776
  var pillSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17734
- name: z75.string().optional(),
17735
- shape: z75.literal("pill"),
17777
+ name: z76.string().optional(),
17778
+ shape: z76.literal("pill"),
17736
17779
  width: distance,
17737
17780
  height: distance,
17738
17781
  radius: distance,
17739
17782
  portHints: portHints.optional(),
17740
- coveredWithSolderMask: z75.boolean().optional(),
17783
+ coveredWithSolderMask: z76.boolean().optional(),
17741
17784
  solderMaskMargin: distance.optional(),
17742
17785
  solderPasteMargin: distance.optional()
17743
17786
  });
17744
17787
  expectTypesMatch(true);
17745
17788
  var rotatedPillSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17746
- name: z75.string().optional(),
17747
- shape: z75.literal("rotated_pill"),
17789
+ name: z76.string().optional(),
17790
+ shape: z76.literal("rotated_pill"),
17748
17791
  width: distance,
17749
17792
  height: distance,
17750
17793
  radius: distance,
17751
- ccwRotation: z75.number(),
17794
+ ccwRotation: z76.number(),
17752
17795
  portHints: portHints.optional(),
17753
- coveredWithSolderMask: z75.boolean().optional(),
17796
+ coveredWithSolderMask: z76.boolean().optional(),
17754
17797
  solderMaskMargin: distance.optional(),
17755
17798
  solderPasteMargin: distance.optional()
17756
17799
  });
17757
17800
  expectTypesMatch(true);
17758
17801
  var polygonSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17759
- name: z75.string().optional(),
17760
- shape: z75.literal("polygon"),
17761
- points: z75.array(point),
17802
+ name: z76.string().optional(),
17803
+ shape: z76.literal("polygon"),
17804
+ points: z76.array(point),
17762
17805
  portHints: portHints.optional(),
17763
- coveredWithSolderMask: z75.boolean().optional(),
17806
+ coveredWithSolderMask: z76.boolean().optional(),
17764
17807
  solderMaskMargin: distance.optional(),
17765
17808
  solderPasteMargin: distance.optional()
17766
17809
  });
17767
17810
  expectTypesMatch(true);
17768
- var smtPadProps = z75.discriminatedUnion("shape", [
17811
+ var smtPadProps = z76.discriminatedUnion("shape", [
17769
17812
  circleSmtPadProps,
17770
17813
  rectSmtPadProps,
17771
17814
  rotatedRectSmtPadProps,
@@ -17776,63 +17819,63 @@ var smtPadProps = z75.discriminatedUnion("shape", [
17776
17819
  expectTypesMatch(true);
17777
17820
 
17778
17821
  // lib/components/solderpaste.ts
17779
- import { z as z76 } from "zod";
17822
+ import { z as z77 } from "zod";
17780
17823
  var rectSolderPasteProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17781
- shape: z76.literal("rect"),
17824
+ shape: z77.literal("rect"),
17782
17825
  width: distance,
17783
17826
  height: distance
17784
17827
  });
17785
17828
  expectTypesMatch(true);
17786
17829
  var circleSolderPasteProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
17787
- shape: z76.literal("circle"),
17830
+ shape: z77.literal("circle"),
17788
17831
  radius: distance
17789
17832
  });
17790
17833
  expectTypesMatch(true);
17791
- var solderPasteProps = z76.union([
17834
+ var solderPasteProps = z77.union([
17792
17835
  circleSolderPasteProps,
17793
17836
  rectSolderPasteProps
17794
17837
  ]);
17795
17838
  expectTypesMatch(true);
17796
17839
 
17797
17840
  // lib/components/hole.ts
17798
- import { z as z77 } from "zod";
17841
+ import { z as z78 } from "zod";
17799
17842
  var circleHoleProps = pcbLayoutProps.extend({
17800
- name: z77.string().optional(),
17801
- shape: z77.literal("circle").optional(),
17843
+ name: z78.string().optional(),
17844
+ shape: z78.literal("circle").optional(),
17802
17845
  diameter: distance.optional(),
17803
17846
  radius: distance.optional(),
17804
17847
  solderMaskMargin: distance.optional(),
17805
- coveredWithSolderMask: z77.boolean().optional()
17848
+ coveredWithSolderMask: z78.boolean().optional()
17806
17849
  }).transform((d) => ({
17807
17850
  ...d,
17808
17851
  diameter: d.diameter ?? 2 * d.radius,
17809
17852
  radius: d.radius ?? d.diameter / 2
17810
17853
  }));
17811
17854
  var pillHoleProps = pcbLayoutProps.extend({
17812
- name: z77.string().optional(),
17813
- shape: z77.literal("pill"),
17855
+ name: z78.string().optional(),
17856
+ shape: z78.literal("pill"),
17814
17857
  width: distance,
17815
17858
  height: distance,
17816
17859
  solderMaskMargin: distance.optional(),
17817
- coveredWithSolderMask: z77.boolean().optional()
17860
+ coveredWithSolderMask: z78.boolean().optional()
17818
17861
  });
17819
17862
  var ovalHoleProps = pcbLayoutProps.extend({
17820
- name: z77.string().optional(),
17821
- shape: z77.literal("oval"),
17863
+ name: z78.string().optional(),
17864
+ shape: z78.literal("oval"),
17822
17865
  width: distance,
17823
17866
  height: distance,
17824
17867
  solderMaskMargin: distance.optional(),
17825
- coveredWithSolderMask: z77.boolean().optional()
17868
+ coveredWithSolderMask: z78.boolean().optional()
17826
17869
  });
17827
17870
  var rectHoleProps = pcbLayoutProps.extend({
17828
- name: z77.string().optional(),
17829
- shape: z77.literal("rect"),
17871
+ name: z78.string().optional(),
17872
+ shape: z78.literal("rect"),
17830
17873
  width: distance,
17831
17874
  height: distance,
17832
17875
  solderMaskMargin: distance.optional(),
17833
- coveredWithSolderMask: z77.boolean().optional()
17876
+ coveredWithSolderMask: z78.boolean().optional()
17834
17877
  });
17835
- var holeProps = z77.union([
17878
+ var holeProps = z78.union([
17836
17879
  circleHoleProps,
17837
17880
  pillHoleProps,
17838
17881
  ovalHoleProps,
@@ -17841,7 +17884,7 @@ var holeProps = z77.union([
17841
17884
  expectTypesMatch(true);
17842
17885
 
17843
17886
  // lib/components/antenna.ts
17844
- import { z as z78 } from "zod";
17887
+ import { z as z79 } from "zod";
17845
17888
  var antennaShapes = [
17846
17889
  "2.4ghz_quarter_wave_monopole",
17847
17890
  "2.4ghz_meandered_monopole",
@@ -17849,7 +17892,7 @@ var antennaShapes = [
17849
17892
  "2.4ghz_meandered_inverted_f",
17850
17893
  "2.4ghz_folded_dipole"
17851
17894
  ];
17852
- var antennaShape = z78.enum(antennaShapes);
17895
+ var antennaShape = z79.enum(antennaShapes);
17853
17896
  var antennaFrequencyBands = [
17854
17897
  "2.4ghz",
17855
17898
  "5ghz",
@@ -17857,7 +17900,7 @@ var antennaFrequencyBands = [
17857
17900
  "dual_band_2.4ghz_5ghz",
17858
17901
  "tri_band_2.4ghz_5ghz_6ghz"
17859
17902
  ];
17860
- var antennaFrequencyBand = z78.enum(antennaFrequencyBands);
17903
+ var antennaFrequencyBand = z79.enum(antennaFrequencyBands);
17861
17904
  var antennaProps = commonComponentProps.extend({
17862
17905
  antennaShape: antennaShape.optional(),
17863
17906
  frequencyBand: antennaFrequencyBand.optional(),
@@ -17867,39 +17910,39 @@ expectTypesMatch(true);
17867
17910
 
17868
17911
  // lib/components/trace.ts
17869
17912
  import { distance as distance19, route_hint_point as route_hint_point2 } from "circuit-json";
17870
- import { z as z79 } from "zod";
17871
- var portRef = z79.union([
17872
- z79.string(),
17873
- z79.custom(
17913
+ import { z as z80 } from "zod";
17914
+ var portRef = z80.union([
17915
+ z80.string(),
17916
+ z80.custom(
17874
17917
  (v) => typeof v === "object" && v !== null && "getPortSelector" in v && typeof v.getPortSelector === "function"
17875
17918
  )
17876
17919
  ]);
17877
- var baseTraceProps = z79.object({
17878
- key: z79.string().optional(),
17879
- name: z79.string().optional(),
17880
- displayName: z79.string().optional(),
17920
+ var baseTraceProps = z80.object({
17921
+ key: z80.string().optional(),
17922
+ name: z80.string().optional(),
17923
+ displayName: z80.string().optional(),
17881
17924
  thickness: distance19.optional(),
17882
17925
  width: distance19.optional().describe("Alias for trace thickness"),
17883
- schematicRouteHints: z79.array(point).optional(),
17884
- pcbRouteHints: z79.array(route_hint_point2).optional(),
17885
- pcbTeardrops: z79.boolean().optional().describe("Enable PCB trace teardrops."),
17886
- pcbTeardropStart: z79.boolean().optional().describe("Teardrop at the start (from) of trace"),
17887
- pcbTeardropEnd: z79.boolean().optional().describe("Teardrop at the end (to) of trace"),
17888
- pcbPathRelativeTo: z79.string().optional(),
17926
+ schematicRouteHints: z80.array(point).optional(),
17927
+ pcbRouteHints: z80.array(route_hint_point2).optional(),
17928
+ pcbTeardrops: z80.boolean().optional().describe("Enable PCB trace teardrops."),
17929
+ pcbTeardropStart: z80.boolean().optional().describe("Teardrop at the start (from) of trace"),
17930
+ pcbTeardropEnd: z80.boolean().optional().describe("Teardrop at the end (to) of trace"),
17931
+ pcbPathRelativeTo: z80.string().optional(),
17889
17932
  pcbPath: pcbPath.optional(),
17890
- pcbPaths: z79.array(pcbPath).optional(),
17891
- routingPhaseIndex: z79.number().nullable().optional(),
17892
- pcbStraightLine: z79.boolean().optional().describe("Draw a straight pcb trace between the connected points"),
17893
- schDisplayLabel: z79.string().optional(),
17894
- schStroke: z79.string().optional(),
17895
- highlightColor: z79.string().optional(),
17933
+ pcbPaths: z80.array(pcbPath).optional(),
17934
+ routingPhaseIndex: z80.number().nullable().optional(),
17935
+ pcbStraightLine: z80.boolean().optional().describe("Draw a straight pcb trace between the connected points"),
17936
+ schDisplayLabel: z80.string().optional(),
17937
+ schStroke: z80.string().optional(),
17938
+ highlightColor: z80.string().optional(),
17896
17939
  maxLength: distance19.optional(),
17897
- maxViaCount: z79.number().int().nonnegative().optional().describe("Maximum number of vias allowed in the PCB trace route"),
17898
- connectsTo: z79.string().or(z79.array(z79.string())).optional()
17940
+ maxViaCount: z80.number().int().nonnegative().optional().describe("Maximum number of vias allowed in the PCB trace route"),
17941
+ connectsTo: z80.string().or(z80.array(z80.string())).optional()
17899
17942
  });
17900
- var traceProps = z79.union([
17943
+ var traceProps = z80.union([
17901
17944
  baseTraceProps.extend({
17902
- path: z79.array(portRef)
17945
+ path: z80.array(portRef)
17903
17946
  }),
17904
17947
  baseTraceProps.extend({
17905
17948
  from: portRef,
@@ -17917,31 +17960,31 @@ import {
17917
17960
  layer_ref as layer_ref7,
17918
17961
  resistance as resistance3
17919
17962
  } from "circuit-json";
17920
- import { z as z80 } from "zod";
17921
- var busProps = z80.object({
17922
- name: z80.string().optional(),
17923
- connections: z80.array(z80.string()).min(1),
17924
- routingPhaseIndex: z80.number().nullable().optional(),
17925
- maxLengthSkew: distance20.pipe(z80.number().min(0).finite()).optional(),
17926
- targetImpedance: resistance3.pipe(z80.number().positive().finite()).optional(),
17927
- pcbTraceWidth: distance20.pipe(z80.number().positive().finite()).optional(),
17928
- pcbAllowedLayers: z80.array(layer_ref7).min(1).optional(),
17963
+ import { z as z81 } from "zod";
17964
+ var busProps = z81.object({
17965
+ name: z81.string().optional(),
17966
+ connections: z81.array(z81.string()).min(1),
17967
+ routingPhaseIndex: z81.number().nullable().optional(),
17968
+ maxLengthSkew: distance20.pipe(z81.number().min(0).finite()).optional(),
17969
+ targetImpedance: resistance3.pipe(z81.number().positive().finite()).optional(),
17970
+ pcbTraceWidth: distance20.pipe(z81.number().positive().finite()).optional(),
17971
+ pcbAllowedLayers: z81.array(layer_ref7).min(1).optional(),
17929
17972
  preferredLayer: layer_ref7.optional(),
17930
- preferredLayers: z80.array(layer_ref7).min(1).optional()
17973
+ preferredLayers: z81.array(layer_ref7).min(1).optional()
17931
17974
  });
17932
17975
  expectTypesMatch(true);
17933
17976
 
17934
17977
  // lib/components/differentialpair.ts
17935
17978
  import { distance as distance21, resistance as resistance4 } from "circuit-json";
17936
- import { z as z81 } from "zod";
17937
- var differentialPairProps = z81.object({
17938
- name: z81.string().optional(),
17939
- positiveConnection: z81.string(),
17940
- negativeConnection: z81.string(),
17941
- maxLengthSkew: distance21.pipe(z81.number().min(0).finite()).optional(),
17942
- targetDifferentialImpedance: resistance4.pipe(z81.number().positive().finite()).optional(),
17943
- pcbTraceGap: distance21.pipe(z81.number().positive().finite()).optional(),
17944
- maxUncoupledLength: distance21.pipe(z81.number().min(0).finite()).optional()
17979
+ import { z as z82 } from "zod";
17980
+ var differentialPairProps = z82.object({
17981
+ name: z82.string().optional(),
17982
+ positiveConnection: z82.string(),
17983
+ negativeConnection: z82.string(),
17984
+ maxLengthSkew: distance21.pipe(z82.number().min(0).finite()).optional(),
17985
+ targetDifferentialImpedance: resistance4.pipe(z82.number().positive().finite()).optional(),
17986
+ pcbTraceGap: distance21.pipe(z82.number().positive().finite()).optional(),
17987
+ maxUncoupledLength: distance21.pipe(z82.number().min(0).finite()).optional()
17945
17988
  });
17946
17989
  expectTypesMatch(true);
17947
17990
 
@@ -17949,8 +17992,8 @@ expectTypesMatch(true);
17949
17992
  import {
17950
17993
  layer_ref as layer_ref8
17951
17994
  } from "circuit-json";
17952
- import { z as z82 } from "zod";
17953
- var footprintInsertionDirection = z82.enum([
17995
+ import { z as z83 } from "zod";
17996
+ var footprintInsertionDirection = z83.enum([
17954
17997
  "from_left",
17955
17998
  "from_right",
17956
17999
  "from_top",
@@ -17968,11 +18011,11 @@ var footprintInsertionDirection = z82.enum([
17968
18011
  "from_back"
17969
18012
  ]);
17970
18013
  expectTypesMatch(true);
17971
- var footprintProps = z82.object({
17972
- children: z82.any().optional(),
17973
- name: z82.string().optional(),
18014
+ var footprintProps = z83.object({
18015
+ children: z83.any().optional(),
18016
+ name: z83.string().optional(),
17974
18017
  originalLayer: layer_ref8.default("top").optional(),
17975
- circuitJson: z82.array(z82.any()).optional(),
18018
+ circuitJson: z83.array(z83.any()).optional(),
17976
18019
  src: footprintProp.describe("Can be a footprint or kicad string").optional(),
17977
18020
  insertionDirection: footprintInsertionDirection.optional().describe(
17978
18021
  "Direction a cable or mating part is attached from, named for the side of the footprint it approaches from, in its unrotated orientation."
@@ -17984,19 +18027,19 @@ var footprintProps = z82.object({
17984
18027
  expectTypesMatch(true);
17985
18028
 
17986
18029
  // lib/components/symbol.ts
17987
- import { z as z83 } from "zod";
17988
- var symbolProps = z83.object({
17989
- originalFacingDirection: z83.enum(["up", "down", "left", "right"]).default("right").optional(),
18030
+ import { z as z84 } from "zod";
18031
+ var symbolProps = z84.object({
18032
+ originalFacingDirection: z84.enum(["up", "down", "left", "right"]).default("right").optional(),
17990
18033
  width: distance.optional(),
17991
18034
  height: distance.optional(),
17992
- name: z83.string().optional()
18035
+ name: z84.string().optional()
17993
18036
  });
17994
18037
  expectTypesMatch(true);
17995
18038
 
17996
18039
  // lib/components/battery.ts
17997
18040
  import { voltage as voltage2 } from "circuit-json";
17998
- import { z as z84 } from "zod";
17999
- var capacity = z84.number().or(z84.string().endsWith("mAh")).transform((v) => {
18041
+ import { z as z85 } from "zod";
18042
+ var capacity = z85.number().or(z85.string().endsWith("mAh")).transform((v) => {
18000
18043
  if (typeof v === "string") {
18001
18044
  const valString = v.replace("mAh", "");
18002
18045
  const num = Number.parseFloat(valString);
@@ -18011,14 +18054,14 @@ var batteryPins = lrPolarPins;
18011
18054
  var batteryProps = commonComponentProps.extend({
18012
18055
  capacity: capacity.optional(),
18013
18056
  voltage: voltage2.optional(),
18014
- standard: z84.enum(["AA", "AAA", "9V", "CR2032", "18650", "C"]).optional(),
18057
+ standard: z85.enum(["AA", "AAA", "9V", "CR2032", "18650", "C"]).optional(),
18015
18058
  schOrientation: schematicOrientation.optional(),
18016
18059
  connections: createConnectionsProp(batteryPins).optional()
18017
18060
  });
18018
18061
  expectTypesMatch(true);
18019
18062
 
18020
18063
  // lib/components/mountedboard.ts
18021
- import { z as z85 } from "zod";
18064
+ import { z as z86 } from "zod";
18022
18065
  var mountedboardProps = subcircuitGroupProps.extend({
18023
18066
  mpn: chipProps.shape.mpn,
18024
18067
  mfn: chipProps.shape.mfn,
@@ -18032,7 +18075,7 @@ var mountedboardProps = subcircuitGroupProps.extend({
18032
18075
  internallyConnectedPins: chipProps.shape.internallyConnectedPins,
18033
18076
  externallyConnectedPins: chipProps.shape.externallyConnectedPins,
18034
18077
  boardToBoardDistance: distance.optional(),
18035
- mountOrientation: z85.enum(["faceDown", "faceUp"]).optional()
18078
+ mountOrientation: z86.enum(["faceDown", "faceUp"]).optional()
18036
18079
  });
18037
18080
  expectTypesMatch(true);
18038
18081
 
@@ -18040,40 +18083,40 @@ expectTypesMatch(true);
18040
18083
  import { distance as distance22 } from "circuit-json";
18041
18084
 
18042
18085
  // lib/common/pcbOrientation.ts
18043
- import { z as z86 } from "zod";
18044
- var pcbOrientation = z86.enum(["vertical", "horizontal"]).describe(
18086
+ import { z as z87 } from "zod";
18087
+ var pcbOrientation = z87.enum(["vertical", "horizontal"]).describe(
18045
18088
  "vertical means pins go 1->2 downward and horizontal means pins go 1->2 rightward"
18046
18089
  );
18047
18090
  expectTypesMatch(true);
18048
18091
 
18049
18092
  // lib/components/pin-header.ts
18050
- import { z as z87 } from "zod";
18093
+ import { z as z88 } from "zod";
18051
18094
  var pinHeaderProps = commonComponentProps.extend({
18052
- pinCount: z87.number(),
18095
+ pinCount: z88.number(),
18053
18096
  pitch: distance22.optional(),
18054
- schFacingDirection: z87.enum(["up", "down", "left", "right"]).optional(),
18055
- gender: z87.enum(["male", "female", "unpopulated"]).optional().default("male"),
18056
- showSilkscreenPinLabels: z87.boolean().optional(),
18057
- pcbPinLabels: z87.record(z87.string(), z87.string()).optional(),
18058
- doubleRow: z87.boolean().optional(),
18059
- rightAngle: z87.boolean().optional(),
18097
+ schFacingDirection: z88.enum(["up", "down", "left", "right"]).optional(),
18098
+ gender: z88.enum(["male", "female", "unpopulated"]).optional().default("male"),
18099
+ showSilkscreenPinLabels: z88.boolean().optional(),
18100
+ pcbPinLabels: z88.record(z88.string(), z88.string()).optional(),
18101
+ doubleRow: z88.boolean().optional(),
18102
+ rightAngle: z88.boolean().optional(),
18060
18103
  pcbOrientation: pcbOrientation.optional(),
18061
18104
  holeDiameter: distance22.optional(),
18062
18105
  platedDiameter: distance22.optional(),
18063
- pinLabels: z87.record(z87.string(), schematicPinLabel).or(z87.array(schematicPinLabel)).optional(),
18064
- connections: z87.custom().pipe(z87.record(z87.string(), connectionTarget)).optional(),
18065
- facingDirection: z87.enum(["left", "right"]).optional(),
18106
+ pinLabels: z88.record(z88.string(), schematicPinLabel).or(z88.array(schematicPinLabel)).optional(),
18107
+ connections: z88.custom().pipe(z88.record(z88.string(), connectionTarget)).optional(),
18108
+ facingDirection: z88.enum(["left", "right"]).optional(),
18066
18109
  schPinArrangement: schematicPinArrangement.optional(),
18067
18110
  schPinStyle: schematicPinStyle.optional(),
18068
18111
  schPinSpacing: distance22.optional(),
18069
18112
  schWidth: distance22.optional(),
18070
18113
  schHeight: distance22.optional(),
18071
- connectsFromAbove: z87.boolean().optional(),
18072
- connectsFromBelow: z87.boolean().optional()
18114
+ connectsFromAbove: z88.boolean().optional(),
18115
+ connectsFromBelow: z88.boolean().optional()
18073
18116
  }).superRefine((props, ctx) => {
18074
18117
  if (props.connectsFromAbove && props.connectsFromBelow) {
18075
18118
  ctx.addIssue({
18076
- code: z87.ZodIssueCode.custom,
18119
+ code: z88.ZodIssueCode.custom,
18077
18120
  message: "connectsFromAbove and connectsFromBelow are opposites; set at most one"
18078
18121
  });
18079
18122
  }
@@ -18084,30 +18127,30 @@ var pinHeaderProps = commonComponentProps.extend({
18084
18127
  expectTypesMatch(true);
18085
18128
 
18086
18129
  // lib/components/netalias.ts
18087
- import { z as z88 } from "zod";
18130
+ import { z as z89 } from "zod";
18088
18131
  import { rotation as rotation4 } from "circuit-json";
18089
- var netAliasProps = z88.object({
18090
- net: z88.string().optional(),
18091
- connection: z88.string().optional(),
18132
+ var netAliasProps = z89.object({
18133
+ net: z89.string().optional(),
18134
+ connection: z89.string().optional(),
18092
18135
  schX: distance.optional(),
18093
18136
  schY: distance.optional(),
18094
18137
  schRotation: rotation4.optional(),
18095
- anchorSide: z88.enum(["left", "top", "right", "bottom"]).optional()
18138
+ anchorSide: z89.enum(["left", "top", "right", "bottom"]).optional()
18096
18139
  });
18097
18140
  expectTypesMatch(true);
18098
18141
 
18099
18142
  // lib/components/netlabel.ts
18100
- import { z as z89 } from "zod";
18143
+ import { z as z90 } from "zod";
18101
18144
  import { rotation as rotation5 } from "circuit-json";
18102
- var netLabelProps = z89.object({
18103
- net: z89.string().optional(),
18104
- connection: z89.string().optional(),
18105
- connectsTo: z89.string().or(z89.array(z89.string())).optional(),
18106
- inline: z89.boolean().optional(),
18145
+ var netLabelProps = z90.object({
18146
+ net: z90.string().optional(),
18147
+ connection: z90.string().optional(),
18148
+ connectsTo: z90.string().or(z90.array(z90.string())).optional(),
18149
+ inline: z90.boolean().optional(),
18107
18150
  schX: distance.optional(),
18108
18151
  schY: distance.optional(),
18109
18152
  schRotation: rotation5.optional(),
18110
- anchorSide: z89.enum(["left", "top", "right", "bottom"]).optional()
18153
+ anchorSide: z90.enum(["left", "top", "right", "bottom"]).optional()
18111
18154
  });
18112
18155
  expectTypesMatch(true);
18113
18156
 
@@ -18122,32 +18165,32 @@ expectTypesMatch(true);
18122
18165
 
18123
18166
  // lib/components/analogsimulation.ts
18124
18167
  import { ms } from "circuit-json";
18125
- import { z as z91 } from "zod";
18126
- var spiceEngine = z91.custom(
18168
+ import { z as z92 } from "zod";
18169
+ var spiceEngine = z92.custom(
18127
18170
  (value) => typeof value === "string"
18128
18171
  );
18129
- var spiceOptions = z91.object({
18130
- method: z91.enum(["trap", "gear"]).optional(),
18131
- reltol: z91.union([z91.number(), z91.string()]).optional(),
18132
- abstol: z91.union([z91.number(), z91.string()]).optional(),
18133
- vntol: z91.union([z91.number(), z91.string()]).optional()
18172
+ var spiceOptions = z92.object({
18173
+ method: z92.enum(["trap", "gear"]).optional(),
18174
+ reltol: z92.union([z92.number(), z92.string()]).optional(),
18175
+ abstol: z92.union([z92.number(), z92.string()]).optional(),
18176
+ vntol: z92.union([z92.number(), z92.string()]).optional()
18134
18177
  });
18135
18178
  var analogAnalysisSimulationBaseProps = {
18136
- name: z91.string().optional(),
18179
+ name: z92.string().optional(),
18137
18180
  spiceEngine: spiceEngine.optional(),
18138
18181
  spiceOptions: spiceOptions.optional(),
18139
- graphIndependentAxes: z91.boolean().optional(),
18140
- children: z91.custom().optional()
18182
+ graphIndependentAxes: z92.boolean().optional(),
18183
+ children: z92.custom().optional()
18141
18184
  };
18142
- var analogSimulationProps = z91.object({
18143
- name: z91.string().optional(),
18144
- simulationType: z91.literal("spice_transient_analysis").default("spice_transient_analysis"),
18185
+ var analogSimulationProps = z92.object({
18186
+ name: z92.string().optional(),
18187
+ simulationType: z92.literal("spice_transient_analysis").default("spice_transient_analysis"),
18145
18188
  duration: ms.optional(),
18146
18189
  startTime: ms.optional(),
18147
18190
  timePerStep: ms.optional(),
18148
18191
  spiceEngine: spiceEngine.optional(),
18149
18192
  spiceOptions: spiceOptions.optional(),
18150
- graphIndependentAxes: z91.boolean().optional()
18193
+ graphIndependentAxes: z92.boolean().optional()
18151
18194
  });
18152
18195
  expectTypesMatch(
18153
18196
  true
@@ -18155,12 +18198,12 @@ expectTypesMatch(
18155
18198
 
18156
18199
  // lib/components/analogtransientsimulation.ts
18157
18200
  import { ms as ms2 } from "circuit-json";
18158
- import { z as z92 } from "zod";
18201
+ import { z as z93 } from "zod";
18159
18202
  var positiveMilliseconds = ms2.refine(
18160
18203
  (milliseconds) => milliseconds > 0,
18161
18204
  "Time must be positive"
18162
18205
  );
18163
- var analogTransientSimulationProps = z92.object({
18206
+ var analogTransientSimulationProps = z93.object({
18164
18207
  ...analogAnalysisSimulationBaseProps,
18165
18208
  duration: positiveMilliseconds.default("10ms"),
18166
18209
  startTime: ms2.default("0ms"),
@@ -18168,7 +18211,7 @@ var analogTransientSimulationProps = z92.object({
18168
18211
  }).superRefine((simulation, context) => {
18169
18212
  if (simulation.startTime < 0 || simulation.startTime > simulation.duration) {
18170
18213
  context.addIssue({
18171
- code: z92.ZodIssueCode.custom,
18214
+ code: z93.ZodIssueCode.custom,
18172
18215
  path: ["startTime"],
18173
18216
  message: "startTime must be between zero and duration"
18174
18217
  });
@@ -18177,19 +18220,19 @@ var analogTransientSimulationProps = z92.object({
18177
18220
  expectTypesMatch(true);
18178
18221
 
18179
18222
  // lib/components/analogdcoperatingpointsimulation.ts
18180
- import { z as z93 } from "zod";
18181
- var analogDcOperatingPointSimulationProps = z93.object({
18223
+ import { z as z94 } from "zod";
18224
+ var analogDcOperatingPointSimulationProps = z94.object({
18182
18225
  ...analogAnalysisSimulationBaseProps
18183
18226
  });
18184
18227
  expectTypesMatch(true);
18185
18228
 
18186
18229
  // lib/components/analogdcsweepsimulation.ts
18187
18230
  import { current, voltage as voltage3 } from "circuit-json";
18188
- import { z as z94 } from "zod";
18189
- var dcSweepQuantity = z94.union([voltage3, current]);
18190
- var analogDcSweepSimulationProps = z94.object({
18231
+ import { z as z95 } from "zod";
18232
+ var dcSweepQuantity = z95.union([voltage3, current]);
18233
+ var analogDcSweepSimulationProps = z95.object({
18191
18234
  ...analogAnalysisSimulationBaseProps,
18192
- sweepSource: z94.string().min(1),
18235
+ sweepSource: z95.string().min(1),
18193
18236
  sweepStart: dcSweepQuantity,
18194
18237
  sweepStop: dcSweepQuantity,
18195
18238
  sweepStep: dcSweepQuantity.refine(
@@ -18199,7 +18242,7 @@ var analogDcSweepSimulationProps = z94.object({
18199
18242
  }).superRefine((simulation, context) => {
18200
18243
  if (Math.sign(simulation.sweepStop - simulation.sweepStart) !== Math.sign(simulation.sweepStep)) {
18201
18244
  context.addIssue({
18202
- code: z94.ZodIssueCode.custom,
18245
+ code: z95.ZodIssueCode.custom,
18203
18246
  path: ["sweepStep"],
18204
18247
  message: "sweepStep must move from sweepStart toward sweepStop"
18205
18248
  });
@@ -18209,10 +18252,10 @@ expectTypesMatch(true);
18209
18252
 
18210
18253
  // lib/components/analogacsweepsimulation.ts
18211
18254
  import { frequency as frequency3 } from "circuit-json";
18212
- import { z as z95 } from "zod";
18213
- var analogAcSweepSimulationProps = z95.object({
18255
+ import { z as z96 } from "zod";
18256
+ var analogAcSweepSimulationProps = z96.object({
18214
18257
  ...analogAnalysisSimulationBaseProps,
18215
- sweepType: z95.enum(["linear", "decade", "octave"]),
18258
+ sweepType: z96.enum(["linear", "decade", "octave"]),
18216
18259
  startFrequency: frequency3.refine(
18217
18260
  (startFrequencyHz) => startFrequencyHz > 0,
18218
18261
  "startFrequency must be positive"
@@ -18221,12 +18264,12 @@ var analogAcSweepSimulationProps = z95.object({
18221
18264
  (stopFrequencyHz) => stopFrequencyHz > 0,
18222
18265
  "stopFrequency must be positive"
18223
18266
  ),
18224
- samplesPerInterval: z95.number().int().positive().optional(),
18225
- sampleCount: z95.number().int().positive().optional()
18267
+ samplesPerInterval: z96.number().int().positive().optional(),
18268
+ sampleCount: z96.number().int().positive().optional()
18226
18269
  }).superRefine((simulation, context) => {
18227
18270
  if (simulation.stopFrequency <= simulation.startFrequency) {
18228
18271
  context.addIssue({
18229
- code: z95.ZodIssueCode.custom,
18272
+ code: z96.ZodIssueCode.custom,
18230
18273
  path: ["stopFrequency"],
18231
18274
  message: "stopFrequency must be greater than startFrequency"
18232
18275
  });
@@ -18234,14 +18277,14 @@ var analogAcSweepSimulationProps = z95.object({
18234
18277
  if (simulation.sweepType === "linear") {
18235
18278
  if (simulation.sampleCount === void 0) {
18236
18279
  context.addIssue({
18237
- code: z95.ZodIssueCode.custom,
18280
+ code: z96.ZodIssueCode.custom,
18238
18281
  path: ["sampleCount"],
18239
18282
  message: "sampleCount is required for a linear AC sweep"
18240
18283
  });
18241
18284
  }
18242
18285
  if (simulation.samplesPerInterval !== void 0) {
18243
18286
  context.addIssue({
18244
- code: z95.ZodIssueCode.custom,
18287
+ code: z96.ZodIssueCode.custom,
18245
18288
  path: ["samplesPerInterval"],
18246
18289
  message: "samplesPerInterval is only valid for decade or octave sweeps"
18247
18290
  });
@@ -18250,14 +18293,14 @@ var analogAcSweepSimulationProps = z95.object({
18250
18293
  }
18251
18294
  if (simulation.samplesPerInterval === void 0) {
18252
18295
  context.addIssue({
18253
- code: z95.ZodIssueCode.custom,
18296
+ code: z96.ZodIssueCode.custom,
18254
18297
  path: ["samplesPerInterval"],
18255
18298
  message: "samplesPerInterval is required for decade or octave sweeps"
18256
18299
  });
18257
18300
  }
18258
18301
  if (simulation.sampleCount !== void 0) {
18259
18302
  context.addIssue({
18260
- code: z95.ZodIssueCode.custom,
18303
+ code: z96.ZodIssueCode.custom,
18261
18304
  path: ["sampleCount"],
18262
18305
  message: "sampleCount is only valid for a linear sweep"
18263
18306
  });
@@ -18273,43 +18316,43 @@ import {
18273
18316
  resistance as resistance5,
18274
18317
  voltage as voltage4
18275
18318
  } from "circuit-json";
18276
- import { z as z96 } from "zod";
18277
- var resistanceSweepQuantity = resistance5.pipe(z96.number());
18278
- var capacitanceSweepQuantity = capacitance4.pipe(z96.number());
18279
- var inductanceSweepQuantity = inductance.pipe(z96.number());
18280
- var voltageSweepQuantity = voltage4.pipe(z96.number());
18281
- var currentSweepQuantity = current2.pipe(z96.number());
18319
+ import { z as z97 } from "zod";
18320
+ var resistanceSweepQuantity = resistance5.pipe(z97.number());
18321
+ var capacitanceSweepQuantity = capacitance4.pipe(z97.number());
18322
+ var inductanceSweepQuantity = inductance.pipe(z97.number());
18323
+ var voltageSweepQuantity = voltage4.pipe(z97.number());
18324
+ var currentSweepQuantity = current2.pipe(z97.number());
18282
18325
  var createAnalogSweepCoordinateProps = (sweepQuantity) => ({
18283
- name: z96.string().optional(),
18284
- values: z96.array(sweepQuantity).min(1).optional(),
18326
+ name: z97.string().optional(),
18327
+ values: z97.array(sweepQuantity).min(1).optional(),
18285
18328
  start: sweepQuantity.optional(),
18286
18329
  stop: sweepQuantity.optional(),
18287
18330
  step: sweepQuantity.optional()
18288
18331
  });
18289
- var analogResistanceSweepParameterProps = z96.object({
18332
+ var analogResistanceSweepParameterProps = z97.object({
18290
18333
  ...createAnalogSweepCoordinateProps(resistanceSweepQuantity),
18291
- parameterType: z96.literal("resistance"),
18292
- resistorRef: z96.string().min(1)
18334
+ parameterType: z97.literal("resistance"),
18335
+ resistorRef: z97.string().min(1)
18293
18336
  }).strict();
18294
- var analogCapacitanceSweepParameterProps = z96.object({
18337
+ var analogCapacitanceSweepParameterProps = z97.object({
18295
18338
  ...createAnalogSweepCoordinateProps(capacitanceSweepQuantity),
18296
- parameterType: z96.literal("capacitance"),
18297
- capacitorRef: z96.string().min(1)
18339
+ parameterType: z97.literal("capacitance"),
18340
+ capacitorRef: z97.string().min(1)
18298
18341
  }).strict();
18299
- var analogInductanceSweepParameterProps = z96.object({
18342
+ var analogInductanceSweepParameterProps = z97.object({
18300
18343
  ...createAnalogSweepCoordinateProps(inductanceSweepQuantity),
18301
- parameterType: z96.literal("inductance"),
18302
- inductorRef: z96.string().min(1)
18344
+ parameterType: z97.literal("inductance"),
18345
+ inductorRef: z97.string().min(1)
18303
18346
  }).strict();
18304
- var analogVoltageSweepParameterProps = z96.object({
18347
+ var analogVoltageSweepParameterProps = z97.object({
18305
18348
  ...createAnalogSweepCoordinateProps(voltageSweepQuantity),
18306
- parameterType: z96.literal("voltage"),
18307
- net: z96.string().min(1)
18349
+ parameterType: z97.literal("voltage"),
18350
+ net: z97.string().min(1)
18308
18351
  }).strict();
18309
- var analogCurrentSweepParameterProps = z96.object({
18352
+ var analogCurrentSweepParameterProps = z97.object({
18310
18353
  ...createAnalogSweepCoordinateProps(currentSweepQuantity),
18311
- parameterType: z96.literal("current"),
18312
- currentSourceRef: z96.string().min(1)
18354
+ parameterType: z97.literal("current"),
18355
+ currentSourceRef: z97.string().min(1)
18313
18356
  }).strict();
18314
18357
  var validateAnalogSweepCoordinates = (sweepCoordinates, context) => {
18315
18358
  const hasExplicitSweepCoordinates = sweepCoordinates.values !== void 0;
@@ -18321,34 +18364,34 @@ var validateAnalogSweepCoordinates = (sweepCoordinates, context) => {
18321
18364
  const hasRangeCoordinates = rangeCoordinateCount > 0;
18322
18365
  if (hasExplicitSweepCoordinates === hasRangeCoordinates) {
18323
18366
  context.addIssue({
18324
- code: z96.ZodIssueCode.custom,
18367
+ code: z97.ZodIssueCode.custom,
18325
18368
  message: "Provide either values or start/stop/step"
18326
18369
  });
18327
18370
  return;
18328
18371
  }
18329
18372
  if (rangeCoordinateCount !== 0 && rangeCoordinateCount !== 3) {
18330
18373
  context.addIssue({
18331
- code: z96.ZodIssueCode.custom,
18374
+ code: z97.ZodIssueCode.custom,
18332
18375
  message: "start, stop, and step must be provided together"
18333
18376
  });
18334
18377
  return;
18335
18378
  }
18336
18379
  if (sweepCoordinates.step === 0) {
18337
18380
  context.addIssue({
18338
- code: z96.ZodIssueCode.custom,
18381
+ code: z97.ZodIssueCode.custom,
18339
18382
  path: ["step"],
18340
18383
  message: "step must be nonzero"
18341
18384
  });
18342
18385
  }
18343
18386
  if (sweepCoordinates.start !== void 0 && sweepCoordinates.stop !== void 0 && sweepCoordinates.step !== void 0 && Math.sign(sweepCoordinates.stop - sweepCoordinates.start) !== Math.sign(sweepCoordinates.step)) {
18344
18387
  context.addIssue({
18345
- code: z96.ZodIssueCode.custom,
18388
+ code: z97.ZodIssueCode.custom,
18346
18389
  path: ["step"],
18347
18390
  message: "step must move from start toward stop"
18348
18391
  });
18349
18392
  }
18350
18393
  };
18351
- var analogSweepParameterProps = z96.discriminatedUnion("parameterType", [
18394
+ var analogSweepParameterProps = z97.discriminatedUnion("parameterType", [
18352
18395
  analogResistanceSweepParameterProps,
18353
18396
  analogCapacitanceSweepParameterProps,
18354
18397
  analogInductanceSweepParameterProps,
@@ -18363,26 +18406,26 @@ expectTypesMatch(true);
18363
18406
  expectTypesMatch(true);
18364
18407
 
18365
18408
  // lib/components/autoroutingphase.ts
18366
- import { z as z97 } from "zod";
18367
- var autoroutingPhaseProps = z97.object({
18368
- key: z97.any().optional(),
18369
- name: z97.string().optional(),
18409
+ import { z as z98 } from "zod";
18410
+ var autoroutingPhaseProps = z98.object({
18411
+ key: z98.any().optional(),
18412
+ name: z98.string().optional(),
18370
18413
  autorouter: autorouterProp.optional(),
18371
18414
  algorithmFn: autorouterConfig.shape.algorithmFn,
18372
18415
  preflightRoutingCheckPolicy: preflightRoutingCheckPolicy.optional(),
18373
- phaseIndex: z97.number().optional(),
18374
- pcbTracePaths: z97.array(fanoutTracePath).optional(),
18416
+ phaseIndex: z98.number().optional(),
18417
+ pcbTracePaths: z98.array(fanoutTracePath).optional(),
18375
18418
  ...routingTolerances.shape,
18376
- region: z97.object({
18377
- shape: z97.literal("rect").optional(),
18378
- minX: z97.number(),
18379
- maxX: z97.number(),
18380
- minY: z97.number(),
18381
- maxY: z97.number()
18419
+ region: z98.object({
18420
+ shape: z98.literal("rect").optional(),
18421
+ minX: z98.number(),
18422
+ maxX: z98.number(),
18423
+ minY: z98.number(),
18424
+ maxY: z98.number()
18382
18425
  }).optional(),
18383
- connection: z97.string().optional(),
18384
- connections: z97.array(z97.string()).optional(),
18385
- reroute: z97.boolean().optional(),
18426
+ connection: z98.string().optional(),
18427
+ connections: z98.array(z98.string()).optional(),
18428
+ reroute: z98.boolean().optional(),
18386
18429
  ...fanoutProps.shape
18387
18430
  }).superRefine((value, ctx) => {
18388
18431
  const isSimplifyAutorouter = value.autorouter === "simplify" || typeof value.autorouter === "object" && value.autorouter?.preset === "simplify";
@@ -18393,7 +18436,7 @@ var autoroutingPhaseProps = z97.object({
18393
18436
  }
18394
18437
  if (value.reroute !== void 0 && !(isSimplifyAutorouter && value.reroute === true) && value.region === void 0 && value.connection === void 0 && value.connections === void 0) {
18395
18438
  ctx.addIssue({
18396
- code: z97.ZodIssueCode.custom,
18439
+ code: z98.ZodIssueCode.custom,
18397
18440
  message: "region, connection, or connections is required when reroute is provided",
18398
18441
  path: ["region"]
18399
18442
  });
@@ -18402,15 +18445,15 @@ var autoroutingPhaseProps = z97.object({
18402
18445
  expectTypesMatch(true);
18403
18446
 
18404
18447
  // lib/components/spicemodel.ts
18405
- import { z as z98 } from "zod";
18406
- var spicemodelProps = z98.object({
18407
- source: z98.string(),
18408
- spicePinMapping: z98.record(z98.string(), z98.string()).optional()
18448
+ import { z as z99 } from "zod";
18449
+ var spicemodelProps = z99.object({
18450
+ source: z99.string(),
18451
+ spicePinMapping: z99.record(z99.string(), z99.string()).optional()
18409
18452
  });
18410
18453
  expectTypesMatch(true);
18411
18454
 
18412
18455
  // lib/components/transistor.ts
18413
- import { z as z99 } from "zod";
18456
+ import { z as z100 } from "zod";
18414
18457
  var transistorPinsLabels = [
18415
18458
  "pin1",
18416
18459
  "pin2",
@@ -18423,7 +18466,7 @@ var transistorPinsLabels = [
18423
18466
  "drain"
18424
18467
  ];
18425
18468
  var transistorProps = commonComponentProps.extend({
18426
- type: z99.enum(["npn", "pnp", "bjt", "jfet", "mosfet", "igbt"]),
18469
+ type: z100.enum(["npn", "pnp", "bjt", "jfet", "mosfet", "igbt"]),
18427
18470
  connections: createConnectionsProp(transistorPinsLabels).optional()
18428
18471
  });
18429
18472
  var transistorPins = [
@@ -18437,7 +18480,7 @@ var transistorPins = [
18437
18480
  expectTypesMatch(true);
18438
18481
 
18439
18482
  // lib/components/mosfet.ts
18440
- import { z as z100 } from "zod";
18483
+ import { z as z101 } from "zod";
18441
18484
  var mosfetPins = [
18442
18485
  "pin1",
18443
18486
  "drain",
@@ -18447,11 +18490,11 @@ var mosfetPins = [
18447
18490
  "gate"
18448
18491
  ];
18449
18492
  var mosfetProps = commonComponentProps.extend({
18450
- channelType: z100.enum(["n", "p"]),
18451
- mosfetMode: z100.enum(["enhancement", "depletion"]),
18452
- symbolDrainSide: z100.enum(["left", "right", "top", "bottom"]).optional(),
18453
- symbolSourceSide: z100.enum(["left", "right", "top", "bottom"]).optional(),
18454
- symbolGateSide: z100.enum(["left", "right", "top", "bottom"]).optional(),
18493
+ channelType: z101.enum(["n", "p"]),
18494
+ mosfetMode: z101.enum(["enhancement", "depletion"]),
18495
+ symbolDrainSide: z101.enum(["left", "right", "top", "bottom"]).optional(),
18496
+ symbolSourceSide: z101.enum(["left", "right", "top", "bottom"]).optional(),
18497
+ symbolGateSide: z101.enum(["left", "right", "top", "bottom"]).optional(),
18455
18498
  connections: createConnectionsProp(mosfetPins).optional()
18456
18499
  });
18457
18500
  expectTypesMatch(true);
@@ -18473,29 +18516,29 @@ expectTypesMatch(true);
18473
18516
 
18474
18517
  // lib/components/inductor.ts
18475
18518
  import { inductance as inductance2 } from "circuit-json";
18476
- import { z as z102 } from "zod";
18519
+ import { z as z103 } from "zod";
18477
18520
  var inductorPins = lrPins;
18478
18521
  var inductorProps = commonComponentProps.extend({
18479
18522
  inductance: inductance2,
18480
- maxCurrentRating: z102.union([z102.string(), z102.number()]).optional(),
18523
+ maxCurrentRating: z103.union([z103.string(), z103.number()]).optional(),
18481
18524
  schOrientation: schematicOrientation.optional(),
18482
18525
  connections: createConnectionsProp(inductorPins).optional()
18483
18526
  });
18484
18527
  expectTypesMatch(true);
18485
18528
 
18486
18529
  // lib/components/internal-circuit.ts
18487
- import { z as z103 } from "zod";
18488
- var internalCircuitProps = z103.object({
18489
- children: z103.custom().optional()
18530
+ import { z as z104 } from "zod";
18531
+ var internalCircuitProps = z104.object({
18532
+ children: z104.custom().optional()
18490
18533
  });
18491
18534
  expectTypesMatch(
18492
18535
  true
18493
18536
  );
18494
18537
 
18495
18538
  // lib/components/diode.ts
18496
- import { z as z104 } from "zod";
18539
+ import { z as z105 } from "zod";
18497
18540
  var diodePins = lrPolarPins;
18498
- var diodeConnectionKeys = z104.enum([
18541
+ var diodeConnectionKeys = z105.enum([
18499
18542
  "anode",
18500
18543
  "cathode",
18501
18544
  "pin1",
@@ -18503,13 +18546,13 @@ var diodeConnectionKeys = z104.enum([
18503
18546
  "pos",
18504
18547
  "neg"
18505
18548
  ]);
18506
- var connectionTarget3 = z104.string().or(z104.array(z104.string()).readonly()).or(z104.array(z104.string()));
18507
- var connectionsProp2 = z104.record(diodeConnectionKeys, connectionTarget3);
18508
- var diodePinLabelsProp = z104.record(
18509
- z104.enum(diodePins),
18510
- schematicPinLabel.or(z104.array(schematicPinLabel).readonly()).or(z104.array(schematicPinLabel))
18549
+ var connectionTarget3 = z105.string().or(z105.array(z105.string()).readonly()).or(z105.array(z105.string()));
18550
+ var connectionsProp2 = z105.record(diodeConnectionKeys, connectionTarget3);
18551
+ var diodePinLabelsProp = z105.record(
18552
+ z105.enum(diodePins),
18553
+ schematicPinLabel.or(z105.array(schematicPinLabel).readonly()).or(z105.array(schematicPinLabel))
18511
18554
  );
18512
- var diodeVariant = z104.enum([
18555
+ var diodeVariant = z105.enum([
18513
18556
  "standard",
18514
18557
  "schottky",
18515
18558
  "zener",
@@ -18520,12 +18563,12 @@ var diodeVariant = z104.enum([
18520
18563
  var diodeProps = commonComponentProps.extend({
18521
18564
  connections: connectionsProp2.optional(),
18522
18565
  variant: diodeVariant.optional().default("standard"),
18523
- standard: z104.boolean().optional(),
18524
- schottky: z104.boolean().optional(),
18525
- zener: z104.boolean().optional(),
18526
- avalanche: z104.boolean().optional(),
18527
- photo: z104.boolean().optional(),
18528
- tvs: z104.boolean().optional(),
18566
+ standard: z105.boolean().optional(),
18567
+ schottky: z105.boolean().optional(),
18568
+ zener: z105.boolean().optional(),
18569
+ avalanche: z105.boolean().optional(),
18570
+ photo: z105.boolean().optional(),
18571
+ tvs: z105.boolean().optional(),
18529
18572
  schOrientation: schematicOrientation.optional(),
18530
18573
  schSize: schematicSymbolSize.optional(),
18531
18574
  pinLabels: diodePinLabelsProp.optional()
@@ -18540,11 +18583,11 @@ var diodeProps = commonComponentProps.extend({
18540
18583
  ].filter(Boolean).length;
18541
18584
  if (enabledFlags > 1) {
18542
18585
  ctx.addIssue({
18543
- code: z104.ZodIssueCode.custom,
18586
+ code: z105.ZodIssueCode.custom,
18544
18587
  message: "Exactly one diode variant must be enabled",
18545
18588
  path: []
18546
18589
  });
18547
- return z104.INVALID;
18590
+ return z105.INVALID;
18548
18591
  }
18549
18592
  }).transform((data) => {
18550
18593
  const result = {
@@ -18590,18 +18633,18 @@ var diodeProps = commonComponentProps.extend({
18590
18633
  expectTypesMatch(true);
18591
18634
 
18592
18635
  // lib/components/led.ts
18593
- import { z as z105 } from "zod";
18594
- var legacyNumericLedPinLabelsProp = z105.record(
18595
- z105.enum(["1", "2"]),
18596
- schematicPinLabel.or(z105.array(schematicPinLabel).readonly()).or(z105.array(schematicPinLabel))
18636
+ import { z as z106 } from "zod";
18637
+ var legacyNumericLedPinLabelsProp = z106.record(
18638
+ z106.enum(["1", "2"]),
18639
+ schematicPinLabel.or(z106.array(schematicPinLabel).readonly()).or(z106.array(schematicPinLabel))
18597
18640
  ).transform((pinLabels) => ({
18598
18641
  ...pinLabels["1"] === void 0 ? {} : { pin1: pinLabels["1"] },
18599
18642
  ...pinLabels["2"] === void 0 ? {} : { pin2: pinLabels["2"] }
18600
18643
  }));
18601
18644
  var ledProps = commonComponentProps.extend({
18602
- color: z105.string().optional(),
18603
- wavelength: z105.string().optional(),
18604
- schDisplayValue: z105.string().optional(),
18645
+ color: z106.string().optional(),
18646
+ wavelength: z106.string().optional(),
18647
+ schDisplayValue: z106.string().optional(),
18605
18648
  schOrientation: schematicOrientation.optional(),
18606
18649
  /** Select a compact schematic symbol; omitted, default, and md retain the standard symbol. */
18607
18650
  schSize: schematicSymbolSize.optional(),
@@ -18609,28 +18652,28 @@ var ledProps = commonComponentProps.extend({
18609
18652
  // wrappers, then normalized to the canonical pin1/pin2 representation.
18610
18653
  pinLabels: diodePinLabelsProp.or(legacyNumericLedPinLabelsProp).optional(),
18611
18654
  connections: createConnectionsProp(lrPolarPins).optional(),
18612
- laser: z105.boolean().optional()
18655
+ laser: z106.boolean().optional()
18613
18656
  });
18614
18657
  var ledPins = lrPolarPins;
18615
18658
 
18616
18659
  // lib/components/switch.ts
18617
18660
  import { ms as ms3, frequency as frequency4 } from "circuit-json";
18618
- import { z as z106 } from "zod";
18661
+ import { z as z107 } from "zod";
18619
18662
  var switchProps = commonComponentProps.extend({
18620
- type: z106.enum(["spst", "spdt", "dpst", "dpdt"]).optional(),
18621
- isNormallyClosed: z106.boolean().optional().default(false),
18622
- spst: z106.boolean().optional(),
18623
- spdt: z106.boolean().optional(),
18624
- dpst: z106.boolean().optional(),
18625
- dpdt: z106.boolean().optional(),
18663
+ type: z107.enum(["spst", "spdt", "dpst", "dpdt"]).optional(),
18664
+ isNormallyClosed: z107.boolean().optional().default(false),
18665
+ spst: z107.boolean().optional(),
18666
+ spdt: z107.boolean().optional(),
18667
+ dpst: z107.boolean().optional(),
18668
+ dpdt: z107.boolean().optional(),
18626
18669
  pinLabels: pinLabelsProp.optional(),
18627
18670
  noConnect: noConnectProp.optional(),
18628
18671
  simSwitchFrequency: frequency4.optional(),
18629
18672
  simCloseAt: ms3.optional(),
18630
18673
  simOpenAt: ms3.optional(),
18631
- simStartClosed: z106.boolean().optional(),
18632
- simStartOpen: z106.boolean().optional(),
18633
- connections: z106.custom().pipe(z106.record(z106.string(), connectionTarget)).optional()
18674
+ simStartClosed: z107.boolean().optional(),
18675
+ simStartOpen: z107.boolean().optional(),
18676
+ connections: z107.custom().pipe(z107.record(z107.string(), connectionTarget)).optional()
18634
18677
  }).transform((props) => {
18635
18678
  const updatedProps = { ...props };
18636
18679
  if (updatedProps.dpdt) {
@@ -18662,33 +18705,33 @@ expectTypesMatch(true);
18662
18705
 
18663
18706
  // lib/components/fabrication-note-text.ts
18664
18707
  import { length as length4 } from "circuit-json";
18665
- import { z as z107 } from "zod";
18708
+ import { z as z108 } from "zod";
18666
18709
  var fabricationNoteTextProps = pcbLayoutProps.extend({
18667
- text: z107.string(),
18668
- anchorAlignment: z107.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
18669
- font: z107.enum(["tscircuit2024"]).optional(),
18710
+ text: z108.string(),
18711
+ anchorAlignment: z108.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
18712
+ font: z108.enum(["tscircuit2024"]).optional(),
18670
18713
  fontSize: length4.optional(),
18671
- color: z107.string().optional()
18714
+ color: z108.string().optional()
18672
18715
  });
18673
18716
  expectTypesMatch(true);
18674
18717
 
18675
18718
  // lib/components/fabrication-note-rect.ts
18676
18719
  import { distance as distance23 } from "circuit-json";
18677
- import { z as z108 } from "zod";
18720
+ import { z as z109 } from "zod";
18678
18721
  var fabricationNoteRectProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
18679
18722
  width: distance23,
18680
18723
  height: distance23,
18681
18724
  strokeWidth: distance23.optional(),
18682
- isFilled: z108.boolean().optional(),
18683
- hasStroke: z108.boolean().optional(),
18684
- isStrokeDashed: z108.boolean().optional(),
18685
- color: z108.string().optional(),
18725
+ isFilled: z109.boolean().optional(),
18726
+ hasStroke: z109.boolean().optional(),
18727
+ isStrokeDashed: z109.boolean().optional(),
18728
+ color: z109.string().optional(),
18686
18729
  cornerRadius: distance23.optional()
18687
18730
  });
18688
18731
 
18689
18732
  // lib/components/fabrication-note-path.ts
18690
18733
  import { length as length5, route_hint_point as route_hint_point3 } from "circuit-json";
18691
- import { z as z109 } from "zod";
18734
+ import { z as z110 } from "zod";
18692
18735
  var fabricationNotePathProps = pcbLayoutProps.omit({
18693
18736
  pcbLeftEdgeX: true,
18694
18737
  pcbRightEdgeX: true,
@@ -18700,15 +18743,15 @@ var fabricationNotePathProps = pcbLayoutProps.omit({
18700
18743
  pcbOffsetY: true,
18701
18744
  pcbRotation: true
18702
18745
  }).extend({
18703
- route: z109.array(route_hint_point3),
18746
+ route: z110.array(route_hint_point3),
18704
18747
  strokeWidth: length5.optional(),
18705
- color: z109.string().optional()
18748
+ color: z110.string().optional()
18706
18749
  });
18707
18750
 
18708
18751
  // lib/components/fabrication-note-dimension.ts
18709
18752
  import { distance as distance24, length as length6 } from "circuit-json";
18710
- import { z as z110 } from "zod";
18711
- var dimensionTarget = z110.union([z110.string(), point]);
18753
+ import { z as z111 } from "zod";
18754
+ var dimensionTarget = z111.union([z111.string(), point]);
18712
18755
  var fabricationNoteDimensionProps = pcbLayoutProps.omit({
18713
18756
  pcbLeftEdgeX: true,
18714
18757
  pcbRightEdgeX: true,
@@ -18722,44 +18765,44 @@ var fabricationNoteDimensionProps = pcbLayoutProps.omit({
18722
18765
  }).extend({
18723
18766
  from: dimensionTarget,
18724
18767
  to: dimensionTarget,
18725
- text: z110.string().optional(),
18768
+ text: z111.string().optional(),
18726
18769
  offset: distance24.optional(),
18727
- offsetDirection: z110.object({ x: z110.number().finite(), y: z110.number().finite() }).optional(),
18728
- font: z110.enum(["tscircuit2024"]).optional(),
18770
+ offsetDirection: z111.object({ x: z111.number().finite(), y: z111.number().finite() }).optional(),
18771
+ font: z111.enum(["tscircuit2024"]).optional(),
18729
18772
  fontSize: length6.optional(),
18730
- color: z110.string().optional(),
18773
+ color: z111.string().optional(),
18731
18774
  arrowSize: distance24.optional(),
18732
- units: z110.enum(["in", "mm"]).optional(),
18733
- outerEdgeToEdge: z110.literal(true).optional(),
18734
- centerToCenter: z110.literal(true).optional(),
18735
- innerEdgeToEdge: z110.literal(true).optional()
18775
+ units: z111.enum(["in", "mm"]).optional(),
18776
+ outerEdgeToEdge: z111.literal(true).optional(),
18777
+ centerToCenter: z111.literal(true).optional(),
18778
+ innerEdgeToEdge: z111.literal(true).optional()
18736
18779
  });
18737
18780
  expectTypesMatch(true);
18738
18781
 
18739
18782
  // lib/components/pcb-trace.ts
18740
18783
  import { distance as distance25, route_hint_point as route_hint_point4 } from "circuit-json";
18741
- import { z as z111 } from "zod";
18742
- var pcbTraceProps = z111.object({
18743
- layer: z111.string().optional(),
18784
+ import { z as z112 } from "zod";
18785
+ var pcbTraceProps = z112.object({
18786
+ layer: z112.string().optional(),
18744
18787
  thickness: distance25.optional(),
18745
- route: z111.array(route_hint_point4)
18788
+ route: z112.array(route_hint_point4)
18746
18789
  });
18747
18790
 
18748
18791
  // lib/components/via.ts
18749
18792
  import { distance as distance26, layer_ref as layer_ref9 } from "circuit-json";
18750
- import { z as z112 } from "zod";
18793
+ import { z as z113 } from "zod";
18751
18794
  var viaProps = commonLayoutProps.extend({
18752
- name: z112.string().optional(),
18795
+ name: z113.string().optional(),
18753
18796
  fromLayer: layer_ref9.optional(),
18754
18797
  toLayer: layer_ref9.optional(),
18755
18798
  holeDiameter: distance26.optional(),
18756
18799
  outerDiameter: distance26.optional(),
18757
- layers: z112.array(layer_ref9).optional(),
18758
- connectsTo: z112.string().or(z112.array(z112.string())).optional(),
18759
- netIsAssignable: z112.boolean().optional(),
18760
- tented: z112.union([
18761
- z112.boolean(),
18762
- z112.enum([
18800
+ layers: z113.array(layer_ref9).optional(),
18801
+ connectsTo: z113.string().or(z113.array(z113.string())).optional(),
18802
+ netIsAssignable: z113.boolean().optional(),
18803
+ tented: z113.union([
18804
+ z113.boolean(),
18805
+ z113.enum([
18763
18806
  "both_sides",
18764
18807
  "top_and_bottom_tented",
18765
18808
  "top_tented",
@@ -18778,15 +18821,15 @@ expectTypesMatch(true);
18778
18821
 
18779
18822
  // lib/components/testpoint.ts
18780
18823
  import { distance as distance27 } from "circuit-json";
18781
- import { z as z113 } from "zod";
18824
+ import { z as z114 } from "zod";
18782
18825
  var testpointPins = ["pin1"];
18783
- var testpointConnectionsProp = z113.object({
18826
+ var testpointConnectionsProp = z114.object({
18784
18827
  pin1: connectionTarget
18785
18828
  }).strict();
18786
18829
  var testpointProps = commonComponentProps.extend({
18787
18830
  connections: testpointConnectionsProp.optional(),
18788
- footprintVariant: z113.enum(["pad", "through_hole"]).optional(),
18789
- padShape: z113.enum(["rect", "circle"]).optional().default("circle"),
18831
+ footprintVariant: z114.enum(["pad", "through_hole"]).optional(),
18832
+ padShape: z114.enum(["rect", "circle"]).optional().default("circle"),
18790
18833
  padDiameter: distance27.optional(),
18791
18834
  holeDiameter: distance27.optional(),
18792
18835
  width: distance27.optional(),
@@ -18798,42 +18841,42 @@ var testpointProps = commonComponentProps.extend({
18798
18841
  expectTypesMatch(true);
18799
18842
 
18800
18843
  // lib/components/breakoutpoint.ts
18801
- import { z as z114 } from "zod";
18844
+ import { z as z115 } from "zod";
18802
18845
  var breakoutPointProps = pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
18803
- connection: z114.string()
18846
+ connection: z115.string()
18804
18847
  });
18805
18848
  expectTypesMatch(true);
18806
18849
 
18807
18850
  // lib/components/pcb-keepout.ts
18808
18851
  import { distance as distance28, layer_ref as layer_ref10 } from "circuit-json";
18809
- import { z as z115 } from "zod";
18810
- var pcbKeepoutProps = z115.union([
18852
+ import { z as z116 } from "zod";
18853
+ var pcbKeepoutProps = z116.union([
18811
18854
  pcbLayoutProps.omit({ pcbRotation: true }).extend({
18812
- shape: z115.literal("circle"),
18855
+ shape: z116.literal("circle"),
18813
18856
  radius: distance28,
18814
- layers: z115.array(layer_ref10).optional(),
18857
+ layers: z116.array(layer_ref10).optional(),
18815
18858
  /** Report keepout violations as warnings when true. Omit for normal enforcement. */
18816
- warningOnly: z115.boolean().optional(),
18859
+ warningOnly: z116.boolean().optional(),
18817
18860
  /** Allow trace crossings without keepout diagnostics. False or omitted retains enforcement; copper pours remain excluded. */
18818
- allowTraces: z115.boolean().optional(),
18861
+ allowTraces: z116.boolean().optional(),
18819
18862
  /** Allow components and their pads/plated holes without keepout diagnostics. False or omitted retains enforcement; copper pours remain excluded. */
18820
- allowPlacements: z115.boolean().optional(),
18821
- excludeRefs: z115.array(z115.string()).optional().describe(
18863
+ allowPlacements: z116.boolean().optional(),
18864
+ excludeRefs: z116.array(z116.string()).optional().describe(
18822
18865
  'Component selectors excluded from the keepout, such as ".ANT1"'
18823
18866
  )
18824
18867
  }),
18825
18868
  pcbLayoutProps.extend({
18826
- shape: z115.literal("rect"),
18869
+ shape: z116.literal("rect"),
18827
18870
  width: distance28,
18828
18871
  height: distance28,
18829
- layers: z115.array(layer_ref10).optional(),
18872
+ layers: z116.array(layer_ref10).optional(),
18830
18873
  /** Report keepout violations as warnings when true. Omit for normal enforcement. */
18831
- warningOnly: z115.boolean().optional(),
18874
+ warningOnly: z116.boolean().optional(),
18832
18875
  /** Allow trace crossings without keepout diagnostics. False or omitted retains enforcement; copper pours remain excluded. */
18833
- allowTraces: z115.boolean().optional(),
18876
+ allowTraces: z116.boolean().optional(),
18834
18877
  /** Allow components and their pads/plated holes without keepout diagnostics. False or omitted retains enforcement; copper pours remain excluded. */
18835
- allowPlacements: z115.boolean().optional(),
18836
- excludeRefs: z115.array(z115.string()).optional().describe(
18878
+ allowPlacements: z116.boolean().optional(),
18879
+ excludeRefs: z116.array(z116.string()).optional().describe(
18837
18880
  'Component selectors excluded from the keepout, such as ".ANT1"'
18838
18881
  )
18839
18882
  })
@@ -18841,20 +18884,20 @@ var pcbKeepoutProps = z115.union([
18841
18884
 
18842
18885
  // lib/components/courtyard-rect.ts
18843
18886
  import { distance as distance29 } from "circuit-json";
18844
- import { z as z116 } from "zod";
18887
+ import { z as z117 } from "zod";
18845
18888
  var courtyardRectProps = pcbLayoutProps.extend({
18846
18889
  width: distance29,
18847
18890
  height: distance29,
18848
18891
  strokeWidth: distance29.optional(),
18849
- isFilled: z116.boolean().optional(),
18850
- hasStroke: z116.boolean().optional(),
18851
- isStrokeDashed: z116.boolean().optional(),
18852
- color: z116.string().optional()
18892
+ isFilled: z117.boolean().optional(),
18893
+ hasStroke: z117.boolean().optional(),
18894
+ isStrokeDashed: z117.boolean().optional(),
18895
+ color: z117.string().optional()
18853
18896
  });
18854
18897
 
18855
18898
  // lib/components/courtyard-outline.ts
18856
18899
  import { length as length7 } from "circuit-json";
18857
- import { z as z117 } from "zod";
18900
+ import { z as z118 } from "zod";
18858
18901
  var courtyardOutlineProps = pcbLayoutProps.omit({
18859
18902
  pcbLeftEdgeX: true,
18860
18903
  pcbRightEdgeX: true,
@@ -18866,11 +18909,11 @@ var courtyardOutlineProps = pcbLayoutProps.omit({
18866
18909
  pcbOffsetY: true,
18867
18910
  pcbRotation: true
18868
18911
  }).extend({
18869
- outline: z117.array(point),
18912
+ outline: z118.array(point),
18870
18913
  strokeWidth: length7.optional(),
18871
- isClosed: z117.boolean().optional(),
18872
- isStrokeDashed: z117.boolean().optional(),
18873
- color: z117.string().optional()
18914
+ isClosed: z118.boolean().optional(),
18915
+ isStrokeDashed: z118.boolean().optional(),
18916
+ color: z118.string().optional()
18874
18917
  });
18875
18918
 
18876
18919
  // lib/components/courtyard-circle.ts
@@ -18890,14 +18933,16 @@ var courtyardPillProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
18890
18933
  });
18891
18934
 
18892
18935
  // lib/components/copper-pour.ts
18893
- import { z as z120 } from "zod";
18936
+ import { z as z121 } from "zod";
18894
18937
  import { layer_ref as layer_ref11 } from "circuit-json";
18895
- var copperPourProps = z120.object({
18896
- name: z120.string().optional(),
18938
+ var copperPourProps = z121.object({
18939
+ name: z121.string().optional(),
18897
18940
  layer: layer_ref11,
18898
- connectsTo: z120.string(),
18899
- crosshatch: z120.boolean().optional(),
18900
- unbroken: z120.boolean().optional().describe(
18941
+ connectsTo: z121.string(),
18942
+ crosshatch: z121.boolean().optional(),
18943
+ crosshatchPitch: distance.pipe(z121.number().finite().positive()).optional(),
18944
+ crosshatchWidth: distance.pipe(z121.number().finite().positive()).optional(),
18945
+ unbroken: z121.boolean().optional().describe(
18901
18946
  "Reserves the pour region during autorouting so unrelated traces do not split it. Vias may still cross the region using antipads."
18902
18947
  ),
18903
18948
  padMargin: distance.optional(),
@@ -18905,24 +18950,32 @@ var copperPourProps = z120.object({
18905
18950
  clearance: distance.optional(),
18906
18951
  boardEdgeMargin: distance.optional(),
18907
18952
  cutoutMargin: distance.optional(),
18908
- useThermalReliefs: z120.boolean().optional(),
18909
- outline: z120.array(point).optional(),
18910
- coveredWithSolderMask: z120.boolean().optional().default(true)
18953
+ useThermalReliefs: z121.boolean().optional(),
18954
+ outline: z121.array(point).optional(),
18955
+ coveredWithSolderMask: z121.boolean().optional().default(true)
18956
+ }).superRefine((props, ctx) => {
18957
+ if (props.crosshatch && (props.crosshatchWidth ?? 0.25) >= (props.crosshatchPitch ?? 1)) {
18958
+ ctx.addIssue({
18959
+ code: z121.ZodIssueCode.custom,
18960
+ path: ["crosshatchWidth"],
18961
+ message: "crosshatchWidth must be less than crosshatchPitch"
18962
+ });
18963
+ }
18911
18964
  });
18912
18965
  expectTypesMatch(true);
18913
18966
 
18914
18967
  // lib/components/cadassembly.ts
18915
18968
  import { layer_ref as layer_ref12 } from "circuit-json";
18916
- import { z as z121 } from "zod";
18917
- var cadassemblyProps = z121.object({
18969
+ import { z as z122 } from "zod";
18970
+ var cadassemblyProps = z122.object({
18918
18971
  originalLayer: layer_ref12.default("top").optional(),
18919
- children: z121.any().optional()
18972
+ children: z122.any().optional()
18920
18973
  });
18921
18974
  expectTypesMatch(true);
18922
18975
 
18923
18976
  // lib/components/cadmodel.ts
18924
- import { z as z122 } from "zod";
18925
- var pcbPosition = z122.object({
18977
+ import { z as z123 } from "zod";
18978
+ var pcbPosition = z123.object({
18926
18979
  pcbX: pcbCoordinate.optional(),
18927
18980
  pcbY: pcbCoordinate.optional(),
18928
18981
  pcbLeftEdgeX: pcbCoordinate.optional(),
@@ -18939,7 +18992,7 @@ var cadModelBaseWithUrl = cadModelBase.extend({
18939
18992
  });
18940
18993
  var cadModelObject = cadModelBaseWithUrl.merge(pcbPosition);
18941
18994
  expectTypesMatch(true);
18942
- var cadmodelProps = z122.union([z122.null(), url, cadModelObject]);
18995
+ var cadmodelProps = z123.union([z123.null(), url, cadModelObject]);
18943
18996
 
18944
18997
  // lib/components/power-source.ts
18945
18998
  import { voltage as voltage5 } from "circuit-json";
@@ -18949,9 +19002,9 @@ var powerSourceProps = commonComponentProps.extend({
18949
19002
 
18950
19003
  // lib/components/voltagesource.ts
18951
19004
  import { frequency as frequency5, ms as ms4, rotation as rotation6, voltage as voltage6 } from "circuit-json";
18952
- import { z as z123 } from "zod";
19005
+ import { z as z124 } from "zod";
18953
19006
  var voltageSourcePinLabels = ["pin1", "pin2", "pos", "neg"];
18954
- var percentage = z123.union([z123.string(), z123.number()]).transform((val) => {
19007
+ var percentage = z124.union([z124.string(), z124.number()]).transform((val) => {
18955
19008
  if (typeof val === "string") {
18956
19009
  if (val.endsWith("%")) {
18957
19010
  return parseFloat(val.slice(0, -1)) / 100;
@@ -18960,13 +19013,13 @@ var percentage = z123.union([z123.string(), z123.number()]).transform((val) => {
18960
19013
  }
18961
19014
  return val;
18962
19015
  }).pipe(
18963
- z123.number().min(0, "Duty cycle must be non-negative").max(1, "Duty cycle cannot be greater than 100%")
19016
+ z124.number().min(0, "Duty cycle must be non-negative").max(1, "Duty cycle cannot be greater than 100%")
18964
19017
  );
18965
19018
  var voltageSourceProps = commonComponentProps.extend({
18966
19019
  voltage: voltage6.optional(),
18967
19020
  frequency: frequency5.optional(),
18968
19021
  peakToPeakVoltage: voltage6.optional(),
18969
- waveShape: z123.enum(["sinewave", "square", "triangle", "sawtooth"]).optional(),
19022
+ waveShape: z124.enum(["sinewave", "square", "triangle", "sawtooth"]).optional(),
18970
19023
  phase: rotation6.optional(),
18971
19024
  dutyCycle: percentage.optional(),
18972
19025
  pulseDelay: ms4.optional(),
@@ -18983,9 +19036,9 @@ expectTypesMatch(true);
18983
19036
 
18984
19037
  // lib/components/currentsource.ts
18985
19038
  import { frequency as frequency6, rotation as rotation7, current as current3 } from "circuit-json";
18986
- import { z as z124 } from "zod";
19039
+ import { z as z125 } from "zod";
18987
19040
  var currentSourcePinLabels = ["pin1", "pin2", "pos", "neg"];
18988
- var percentage2 = z124.union([z124.string(), z124.number()]).transform((val) => {
19041
+ var percentage2 = z125.union([z125.string(), z125.number()]).transform((val) => {
18989
19042
  if (typeof val === "string") {
18990
19043
  if (val.endsWith("%")) {
18991
19044
  return parseFloat(val.slice(0, -1)) / 100;
@@ -18994,13 +19047,13 @@ var percentage2 = z124.union([z124.string(), z124.number()]).transform((val) =>
18994
19047
  }
18995
19048
  return val;
18996
19049
  }).pipe(
18997
- z124.number().min(0, "Duty cycle must be non-negative").max(1, "Duty cycle cannot be greater than 100%")
19050
+ z125.number().min(0, "Duty cycle must be non-negative").max(1, "Duty cycle cannot be greater than 100%")
18998
19051
  );
18999
19052
  var currentSourceProps = commonComponentProps.extend({
19000
19053
  current: current3.optional(),
19001
19054
  frequency: frequency6.optional(),
19002
19055
  peakToPeakCurrent: current3.optional(),
19003
- waveShape: z124.enum(["sinewave", "square", "triangle", "sawtooth"]).optional(),
19056
+ waveShape: z125.enum(["sinewave", "square", "triangle", "sawtooth"]).optional(),
19004
19057
  phase: rotation7.optional(),
19005
19058
  dutyCycle: percentage2.optional(),
19006
19059
  acMagnitude: current3.optional(),
@@ -19011,21 +19064,21 @@ var currentSourcePins = lrPolarPins;
19011
19064
  expectTypesMatch(true);
19012
19065
 
19013
19066
  // lib/components/voltageprobe.ts
19014
- import { z as z125 } from "zod";
19067
+ import { z as z126 } from "zod";
19015
19068
  var voltageProbeProps = commonComponentProps.omit({ name: true }).extend({
19016
- name: z125.string().optional(),
19017
- connectsTo: z125.string(),
19018
- referenceTo: z125.string().optional(),
19019
- color: z125.string().optional(),
19020
- graphDisplayName: z125.string().optional(),
19021
- graphCenter: z125.number().optional(),
19022
- graphVerticalOffset: z125.number().or(z125.string()).optional(),
19023
- graphVoltagePerDiv: z125.number().or(z125.string()).optional()
19069
+ name: z126.string().optional(),
19070
+ connectsTo: z126.string(),
19071
+ referenceTo: z126.string().optional(),
19072
+ color: z126.string().optional(),
19073
+ graphDisplayName: z126.string().optional(),
19074
+ graphCenter: z126.number().optional(),
19075
+ graphVerticalOffset: z126.number().or(z126.string()).optional(),
19076
+ graphVoltagePerDiv: z126.number().or(z126.string()).optional()
19024
19077
  });
19025
19078
  expectTypesMatch(true);
19026
19079
 
19027
19080
  // lib/components/ammeter.ts
19028
- import { z as z126 } from "zod";
19081
+ import { z as z127 } from "zod";
19029
19082
  var ammeterPinLabels = ["pin1", "pin2", "pos", "neg"];
19030
19083
  var hasAmmeterConnectionPair = (connections) => {
19031
19084
  return connections.pos !== void 0 && connections.neg !== void 0 || connections.pin1 !== void 0 && connections.pin2 !== void 0;
@@ -19035,64 +19088,64 @@ var ammeterProps = commonComponentProps.extend({
19035
19088
  hasAmmeterConnectionPair,
19036
19089
  "Ammeter connections must include either pos/neg or pin1/pin2"
19037
19090
  ),
19038
- color: z126.string().optional(),
19039
- graphDisplayName: z126.string().optional(),
19040
- graphCenter: z126.number().optional(),
19041
- graphVerticalOffset: z126.number().or(z126.string()).optional(),
19042
- graphCurrentPerDiv: z126.number().or(z126.string()).optional()
19091
+ color: z127.string().optional(),
19092
+ graphDisplayName: z127.string().optional(),
19093
+ graphCenter: z127.number().optional(),
19094
+ graphVerticalOffset: z127.number().or(z127.string()).optional(),
19095
+ graphCurrentPerDiv: z127.number().or(z127.string()).optional()
19043
19096
  });
19044
19097
  var ammeterPins = ammeterPinLabels;
19045
19098
  expectTypesMatch(true);
19046
19099
 
19047
19100
  // lib/components/schematic-arc.ts
19048
19101
  import { distance as distance32, point as point5, rotation as rotation8 } from "circuit-json";
19049
- import { z as z127 } from "zod";
19050
- var schematicArcProps = z127.object({
19102
+ import { z as z128 } from "zod";
19103
+ var schematicArcProps = z128.object({
19051
19104
  center: point5,
19052
19105
  radius: distance32,
19053
19106
  startAngleDegrees: rotation8,
19054
19107
  endAngleDegrees: rotation8,
19055
- direction: z127.enum(["clockwise", "counterclockwise"]).default("counterclockwise"),
19108
+ direction: z128.enum(["clockwise", "counterclockwise"]).default("counterclockwise"),
19056
19109
  strokeWidth: distance32.optional(),
19057
- color: z127.string().optional(),
19058
- isDashed: z127.boolean().optional().default(false)
19110
+ color: z128.string().optional(),
19111
+ isDashed: z128.boolean().optional().default(false)
19059
19112
  });
19060
19113
  expectTypesMatch(true);
19061
19114
 
19062
19115
  // lib/components/toolingrail.ts
19063
- import { z as z128 } from "zod";
19064
- var toolingrailProps = z128.object({
19065
- children: z128.any().optional()
19116
+ import { z as z129 } from "zod";
19117
+ var toolingrailProps = z129.object({
19118
+ children: z129.any().optional()
19066
19119
  });
19067
19120
  expectTypesMatch(true);
19068
19121
 
19069
19122
  // lib/components/schematic-box.ts
19070
19123
  import { distance as distance33 } from "circuit-json";
19071
- import { z as z129 } from "zod";
19072
- var schematicBoxProps = z129.object({
19073
- name: z129.string().optional(),
19074
- chipRef: z129.string().optional(),
19124
+ import { z as z130 } from "zod";
19125
+ var schematicBoxProps = z130.object({
19126
+ name: z130.string().optional(),
19127
+ chipRef: z130.string().optional(),
19075
19128
  pinLabels: pinLabelsProp.optional(),
19076
19129
  schPinArrangement: schematicPinArrangement.optional(),
19077
19130
  schPinStyle: schematicPinStyle.optional(),
19078
19131
  schX: distance33.optional(),
19079
19132
  schY: distance33.optional(),
19080
- schSectionName: z129.string().optional(),
19081
- schSheetName: z129.string().optional(),
19133
+ schSectionName: z130.string().optional(),
19134
+ schSheetName: z130.string().optional(),
19082
19135
  width: distance33.optional(),
19083
19136
  height: distance33.optional(),
19084
- overlay: z129.array(z129.string()).optional(),
19137
+ overlay: z130.array(z130.string()).optional(),
19085
19138
  padding: distance33.optional(),
19086
19139
  paddingLeft: distance33.optional(),
19087
19140
  paddingRight: distance33.optional(),
19088
19141
  paddingTop: distance33.optional(),
19089
19142
  paddingBottom: distance33.optional(),
19090
- title: z129.string().optional(),
19143
+ title: z130.string().optional(),
19091
19144
  titleAlignment: ninePointAnchor.default("top_left"),
19092
- titleColor: z129.string().optional(),
19145
+ titleColor: z130.string().optional(),
19093
19146
  titleFontSize: distance33.optional(),
19094
- titleInside: z129.boolean().default(false),
19095
- strokeStyle: z129.enum(["solid", "dashed"]).default("solid")
19147
+ titleInside: z130.boolean().default(false),
19148
+ strokeStyle: z130.enum(["solid", "dashed"]).default("solid")
19096
19149
  }).refine(
19097
19150
  (elm) => elm.width !== void 0 && elm.height !== void 0 || Array.isArray(elm.overlay) && elm.overlay.length > 0,
19098
19151
  {
@@ -19108,21 +19161,21 @@ expectTypesMatch(true);
19108
19161
 
19109
19162
  // lib/components/schematic-symbol.ts
19110
19163
  import { rotation as rotation9 } from "circuit-json";
19111
- import { z as z130 } from "zod";
19112
- var schematicSymbolConnections = z130.custom().pipe(z130.record(z130.string(), connectionTarget)).refine((value) => Object.keys(value).length > 0, {
19164
+ import { z as z131 } from "zod";
19165
+ var schematicSymbolConnections = z131.custom().pipe(z131.record(z131.string(), connectionTarget)).refine((value) => Object.keys(value).length > 0, {
19113
19166
  message: "connections must map at least one schematic symbol port"
19114
19167
  });
19115
- var schematicSymbolProps = z130.object({
19116
- name: z130.string().min(1),
19117
- displayName: z130.string().optional(),
19118
- chipRef: z130.string().min(1).optional(),
19119
- symbolName: z130.string().min(1),
19168
+ var schematicSymbolProps = z131.object({
19169
+ name: z131.string().min(1),
19170
+ displayName: z131.string().optional(),
19171
+ chipRef: z131.string().min(1).optional(),
19172
+ symbolName: z131.string().min(1),
19120
19173
  connections: schematicSymbolConnections.optional(),
19121
19174
  schX: distance.optional(),
19122
19175
  schY: distance.optional(),
19123
19176
  schRotation: rotation9.optional(),
19124
- schSectionName: z130.string().optional(),
19125
- schSheetName: z130.string().optional()
19177
+ schSectionName: z131.string().optional(),
19178
+ schSheetName: z131.string().optional()
19126
19179
  });
19127
19180
  expectTypesMatch(
19128
19181
  true
@@ -19130,15 +19183,15 @@ expectTypesMatch(
19130
19183
 
19131
19184
  // lib/components/schematic-circle.ts
19132
19185
  import { distance as distance34, point as point6 } from "circuit-json";
19133
- import { z as z131 } from "zod";
19134
- var schematicCircleProps = z131.object({
19186
+ import { z as z132 } from "zod";
19187
+ var schematicCircleProps = z132.object({
19135
19188
  center: point6,
19136
19189
  radius: distance34,
19137
19190
  strokeWidth: distance34.optional(),
19138
- color: z131.string().optional(),
19139
- isFilled: z131.boolean().optional().default(false),
19140
- fillColor: z131.string().optional(),
19141
- isDashed: z131.boolean().optional().default(false)
19191
+ color: z132.string().optional(),
19192
+ isFilled: z132.boolean().optional().default(false),
19193
+ fillColor: z132.string().optional(),
19194
+ isDashed: z132.boolean().optional().default(false)
19142
19195
  });
19143
19196
  expectTypesMatch(
19144
19197
  true
@@ -19146,32 +19199,32 @@ expectTypesMatch(
19146
19199
 
19147
19200
  // lib/components/schematic-rect.ts
19148
19201
  import { distance as distance35, rotation as rotation10 } from "circuit-json";
19149
- import { z as z132 } from "zod";
19150
- var schematicRectProps = z132.object({
19202
+ import { z as z133 } from "zod";
19203
+ var schematicRectProps = z133.object({
19151
19204
  schX: distance35.optional(),
19152
19205
  schY: distance35.optional(),
19153
19206
  width: distance35,
19154
19207
  height: distance35,
19155
19208
  rotation: rotation10.default(0),
19156
19209
  strokeWidth: distance35.optional(),
19157
- color: z132.string().optional(),
19158
- isFilled: z132.boolean().optional().default(false),
19159
- fillColor: z132.string().optional(),
19160
- isDashed: z132.boolean().optional().default(false)
19210
+ color: z133.string().optional(),
19211
+ isFilled: z133.boolean().optional().default(false),
19212
+ fillColor: z133.string().optional(),
19213
+ isDashed: z133.boolean().optional().default(false)
19161
19214
  });
19162
19215
  expectTypesMatch(true);
19163
19216
 
19164
19217
  // lib/components/schematic-line.ts
19165
19218
  import { distance as distance36 } from "circuit-json";
19166
- import { z as z133 } from "zod";
19167
- var schematicLineProps = z133.object({
19219
+ import { z as z134 } from "zod";
19220
+ var schematicLineProps = z134.object({
19168
19221
  x1: distance36,
19169
19222
  y1: distance36,
19170
19223
  x2: distance36,
19171
19224
  y2: distance36,
19172
19225
  strokeWidth: distance36.optional(),
19173
- color: z133.string().optional(),
19174
- isDashed: z133.boolean().optional().default(false),
19226
+ color: z134.string().optional(),
19227
+ isDashed: z134.boolean().optional().default(false),
19175
19228
  dashLength: distance36.optional(),
19176
19229
  dashGap: distance36.optional()
19177
19230
  });
@@ -19179,11 +19232,11 @@ expectTypesMatch(true);
19179
19232
 
19180
19233
  // lib/components/schematic-text.ts
19181
19234
  import { distance as distance37, rotation as rotation11 } from "circuit-json";
19182
- import { z as z135 } from "zod";
19235
+ import { z as z136 } from "zod";
19183
19236
 
19184
19237
  // lib/common/fivePointAnchor.ts
19185
- import { z as z134 } from "zod";
19186
- var fivePointAnchor = z134.enum([
19238
+ import { z as z135 } from "zod";
19239
+ var fivePointAnchor = z135.enum([
19187
19240
  "center",
19188
19241
  "left",
19189
19242
  "right",
@@ -19192,39 +19245,39 @@ var fivePointAnchor = z134.enum([
19192
19245
  ]);
19193
19246
 
19194
19247
  // lib/components/schematic-text.ts
19195
- var schematicTextProps = z135.object({
19248
+ var schematicTextProps = z136.object({
19196
19249
  schX: distance37.optional(),
19197
19250
  schY: distance37.optional(),
19198
- text: z135.string(),
19199
- fontSize: z135.number().default(1),
19200
- anchor: z135.union([fivePointAnchor.describe("legacy"), ninePointAnchor]).default("center"),
19201
- color: z135.string().default("#000000"),
19251
+ text: z136.string(),
19252
+ fontSize: z136.number().default(1),
19253
+ anchor: z136.union([fivePointAnchor.describe("legacy"), ninePointAnchor]).default("center"),
19254
+ color: z136.string().default("#000000"),
19202
19255
  schRotation: rotation11.default(0)
19203
19256
  });
19204
19257
  expectTypesMatch(true);
19205
19258
 
19206
19259
  // lib/components/schematic-path.ts
19207
19260
  import { distance as distance38, point as point7 } from "circuit-json";
19208
- import { z as z136 } from "zod";
19209
- var schematicPathProps = z136.object({
19210
- points: z136.array(point7).optional(),
19211
- svgPath: z136.string().optional(),
19261
+ import { z as z137 } from "zod";
19262
+ var schematicPathProps = z137.object({
19263
+ points: z137.array(point7).optional(),
19264
+ svgPath: z137.string().optional(),
19212
19265
  strokeWidth: distance38.optional(),
19213
- strokeColor: z136.string().optional(),
19266
+ strokeColor: z137.string().optional(),
19214
19267
  dashLength: distance38.optional(),
19215
19268
  dashGap: distance38.optional(),
19216
- isFilled: z136.boolean().optional().default(false),
19217
- fillColor: z136.string().optional()
19269
+ isFilled: z137.boolean().optional().default(false),
19270
+ fillColor: z137.string().optional()
19218
19271
  });
19219
19272
  expectTypesMatch(true);
19220
19273
 
19221
19274
  // lib/components/schematic-table.ts
19222
19275
  import { distance as distance39 } from "circuit-json";
19223
- import { z as z137 } from "zod";
19224
- var schematicTableProps = z137.object({
19276
+ import { z as z138 } from "zod";
19277
+ var schematicTableProps = z138.object({
19225
19278
  schX: distance39.optional(),
19226
19279
  schY: distance39.optional(),
19227
- children: z137.any().optional(),
19280
+ children: z138.any().optional(),
19228
19281
  cellPadding: distance39.optional(),
19229
19282
  borderWidth: distance39.optional(),
19230
19283
  anchor: ninePointAnchor.optional(),
@@ -19234,34 +19287,34 @@ expectTypesMatch(true);
19234
19287
 
19235
19288
  // lib/components/schematic-row.ts
19236
19289
  import { distance as distance40 } from "circuit-json";
19237
- import { z as z138 } from "zod";
19238
- var schematicRowProps = z138.object({
19239
- children: z138.any().optional(),
19290
+ import { z as z139 } from "zod";
19291
+ var schematicRowProps = z139.object({
19292
+ children: z139.any().optional(),
19240
19293
  height: distance40.optional()
19241
19294
  });
19242
19295
  expectTypesMatch(true);
19243
19296
 
19244
19297
  // lib/components/schematic-cell.ts
19245
19298
  import { distance as distance41 } from "circuit-json";
19246
- import { z as z139 } from "zod";
19247
- var schematicCellProps = z139.object({
19248
- children: z139.string().optional(),
19249
- horizontalAlign: z139.enum(["left", "center", "right"]).optional(),
19250
- verticalAlign: z139.enum(["top", "middle", "bottom"]).optional(),
19299
+ import { z as z140 } from "zod";
19300
+ var schematicCellProps = z140.object({
19301
+ children: z140.string().optional(),
19302
+ horizontalAlign: z140.enum(["left", "center", "right"]).optional(),
19303
+ verticalAlign: z140.enum(["top", "middle", "bottom"]).optional(),
19251
19304
  fontSize: distance41.optional(),
19252
- rowSpan: z139.number().optional(),
19253
- colSpan: z139.number().optional(),
19305
+ rowSpan: z140.number().optional(),
19306
+ colSpan: z140.number().optional(),
19254
19307
  width: distance41.optional(),
19255
- text: z139.string().optional()
19308
+ text: z140.string().optional()
19256
19309
  });
19257
19310
  expectTypesMatch(true);
19258
19311
 
19259
19312
  // lib/components/schematic-section.ts
19260
19313
  import { distance as distance42 } from "circuit-json";
19261
- import { z as z140 } from "zod";
19262
- var schematicSectionProps = z140.object({
19263
- displayName: z140.string().optional(),
19264
- name: z140.string(),
19314
+ import { z as z141 } from "zod";
19315
+ var schematicSectionProps = z141.object({
19316
+ displayName: z141.string().optional(),
19317
+ name: z141.string(),
19265
19318
  sectionTitleFontSize: distance42.optional()
19266
19319
  });
19267
19320
  expectTypesMatch(
@@ -19269,30 +19322,30 @@ expectTypesMatch(
19269
19322
  );
19270
19323
 
19271
19324
  // lib/components/schematic-sheet.ts
19272
- import { z as z141 } from "zod";
19325
+ import { z as z142 } from "zod";
19273
19326
  import { distance as distance43 } from "circuit-json";
19274
- var schematicSheetProps = z141.object({
19275
- name: z141.string().optional(),
19276
- displayName: z141.string().optional(),
19277
- sheetIndex: z141.number().optional(),
19278
- sheetSize: z141.enum(["A4", "ANSI_B"]).default("A4"),
19279
- sheetWidth: distance43.pipe(z141.number().positive()).optional(),
19280
- sheetHeight: distance43.pipe(z141.number().positive()).optional(),
19281
- children: z141.any().optional()
19327
+ var schematicSheetProps = z142.object({
19328
+ name: z142.string().optional(),
19329
+ displayName: z142.string().optional(),
19330
+ sheetIndex: z142.number().optional(),
19331
+ sheetSize: z142.enum(["A4", "ANSI_B"]).default("A4"),
19332
+ sheetWidth: distance43.pipe(z142.number().positive()).optional(),
19333
+ sheetHeight: distance43.pipe(z142.number().positive()).optional(),
19334
+ children: z142.any().optional()
19282
19335
  });
19283
19336
  expectTypesMatch(true);
19284
19337
 
19285
19338
  // lib/components/schematic-graphic.ts
19286
- import { z as z142 } from "zod";
19339
+ import { z as z143 } from "zod";
19287
19340
  var nonemptyUrl = url.refine((value) => value.trim().length > 0, {
19288
19341
  message: "imageUrl cannot be empty"
19289
19342
  });
19290
19343
  var positiveDistance5 = (fieldName) => distance.refine((value) => Number.isFinite(value) && value > 0, {
19291
19344
  message: `${fieldName} must be a positive finite distance`
19292
19345
  });
19293
- var schematicGraphicProps = z142.object({
19346
+ var schematicGraphicProps = z143.object({
19294
19347
  imageUrl: nonemptyUrl.optional(),
19295
- svgContent: z142.string().refine((value) => value.trim().length > 0, {
19348
+ svgContent: z143.string().refine((value) => value.trim().length > 0, {
19296
19349
  message: "svgContent cannot be empty"
19297
19350
  }).optional(),
19298
19351
  width: positiveDistance5("width").optional(),
@@ -19300,7 +19353,7 @@ var schematicGraphicProps = z142.object({
19300
19353
  }).superRefine(({ imageUrl, svgContent }, ctx) => {
19301
19354
  if (imageUrl === void 0 && svgContent === void 0) {
19302
19355
  ctx.addIssue({
19303
- code: z142.ZodIssueCode.custom,
19356
+ code: z143.ZodIssueCode.custom,
19304
19357
  message: "At least one of imageUrl or svgContent is required"
19305
19358
  });
19306
19359
  }
@@ -19311,40 +19364,40 @@ expectTypesMatch(
19311
19364
 
19312
19365
  // lib/components/copper-text.ts
19313
19366
  import { layer_ref as layer_ref13, length as length8 } from "circuit-json";
19314
- import { z as z143 } from "zod";
19367
+ import { z as z144 } from "zod";
19315
19368
  var copperTextProps = pcbLayoutProps.extend({
19316
- text: z143.string(),
19369
+ text: z144.string(),
19317
19370
  anchorAlignment: ninePointAnchor.default("center"),
19318
- font: z143.enum(["tscircuit2024"]).optional(),
19371
+ font: z144.enum(["tscircuit2024"]).optional(),
19319
19372
  fontSize: length8.optional(),
19320
- layers: z143.array(layer_ref13).optional(),
19321
- knockout: z143.boolean().optional(),
19322
- mirrored: z143.boolean().optional()
19373
+ layers: z144.array(layer_ref13).optional(),
19374
+ knockout: z144.boolean().optional(),
19375
+ mirrored: z144.boolean().optional()
19323
19376
  });
19324
19377
 
19325
19378
  // lib/components/silkscreen-text.ts
19326
19379
  import { layer_ref as layer_ref14, length as length9 } from "circuit-json";
19327
- import { z as z144 } from "zod";
19380
+ import { z as z145 } from "zod";
19328
19381
  var silkscreenTextProps = pcbLayoutProps.extend({
19329
- text: z144.string(),
19382
+ text: z145.string(),
19330
19383
  anchorAlignment: ninePointAnchor.default("center"),
19331
- font: z144.enum(["tscircuit2024"]).optional(),
19384
+ font: z145.enum(["tscircuit2024"]).optional(),
19332
19385
  fontSize: length9.optional(),
19333
19386
  /**
19334
19387
  * If true, text will knock out underlying silkscreen
19335
19388
  */
19336
- isKnockout: z144.boolean().optional(),
19389
+ isKnockout: z145.boolean().optional(),
19337
19390
  knockoutPadding: length9.optional(),
19338
19391
  knockoutPaddingLeft: length9.optional(),
19339
19392
  knockoutPaddingRight: length9.optional(),
19340
19393
  knockoutPaddingTop: length9.optional(),
19341
19394
  knockoutPaddingBottom: length9.optional(),
19342
- layers: z144.array(layer_ref14).optional()
19395
+ layers: z145.array(layer_ref14).optional()
19343
19396
  });
19344
19397
 
19345
19398
  // lib/components/silkscreen-path.ts
19346
19399
  import { length as length10, route_hint_point as route_hint_point5 } from "circuit-json";
19347
- import { z as z145 } from "zod";
19400
+ import { z as z146 } from "zod";
19348
19401
  var silkscreenPathProps = pcbLayoutProps.omit({
19349
19402
  pcbLeftEdgeX: true,
19350
19403
  pcbRightEdgeX: true,
@@ -19356,7 +19409,7 @@ var silkscreenPathProps = pcbLayoutProps.omit({
19356
19409
  pcbOffsetY: true,
19357
19410
  pcbRotation: true
19358
19411
  }).extend({
19359
- route: z145.array(route_hint_point5),
19412
+ route: z146.array(route_hint_point5),
19360
19413
  strokeWidth: length10.optional()
19361
19414
  });
19362
19415
 
@@ -19378,10 +19431,10 @@ var silkscreenLineProps = pcbLayoutProps.omit({
19378
19431
 
19379
19432
  // lib/components/silkscreen-rect.ts
19380
19433
  import { distance as distance45 } from "circuit-json";
19381
- import { z as z146 } from "zod";
19434
+ import { z as z147 } from "zod";
19382
19435
  var silkscreenRectProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
19383
- filled: z146.boolean().default(true).optional(),
19384
- stroke: z146.enum(["dashed", "solid", "none"]).optional(),
19436
+ filled: z147.boolean().default(true).optional(),
19437
+ stroke: z147.enum(["dashed", "solid", "none"]).optional(),
19385
19438
  strokeWidth: distance45.optional(),
19386
19439
  width: distance45,
19387
19440
  height: distance45,
@@ -19390,10 +19443,10 @@ var silkscreenRectProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
19390
19443
 
19391
19444
  // lib/components/silkscreen-circle.ts
19392
19445
  import { distance as distance46 } from "circuit-json";
19393
- import { z as z147 } from "zod";
19446
+ import { z as z148 } from "zod";
19394
19447
  var silkscreenCircleProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
19395
- isFilled: z147.boolean().optional(),
19396
- isOutline: z147.boolean().optional(),
19448
+ isFilled: z148.boolean().optional(),
19449
+ isOutline: z148.boolean().optional(),
19397
19450
  strokeWidth: distance46.optional(),
19398
19451
  radius: distance46
19399
19452
  });
@@ -19411,69 +19464,69 @@ expectTypesMatch(true);
19411
19464
 
19412
19465
  // lib/components/trace-hint.ts
19413
19466
  import { distance as distance47, layer_ref as layer_ref15, route_hint_point as route_hint_point6 } from "circuit-json";
19414
- import { z as z149 } from "zod";
19415
- var routeHintPointProps = z149.object({
19467
+ import { z as z150 } from "zod";
19468
+ var routeHintPointProps = z150.object({
19416
19469
  x: distance47,
19417
19470
  y: distance47,
19418
- via: z149.boolean().optional(),
19471
+ via: z150.boolean().optional(),
19419
19472
  toLayer: layer_ref15.optional()
19420
19473
  });
19421
- var traceHintProps = z149.object({
19422
- for: z149.string().optional().describe(
19474
+ var traceHintProps = z150.object({
19475
+ for: z150.string().optional().describe(
19423
19476
  "Selector for the port you're targeting, not required if you're inside a trace"
19424
19477
  ),
19425
- order: z149.number().optional(),
19478
+ order: z150.number().optional(),
19426
19479
  offset: route_hint_point6.or(routeHintPointProps).optional(),
19427
- offsets: z149.array(route_hint_point6).or(z149.array(routeHintPointProps)).optional(),
19428
- traceWidth: z149.number().optional()
19480
+ offsets: z150.array(route_hint_point6).or(z150.array(routeHintPointProps)).optional(),
19481
+ traceWidth: z150.number().optional()
19429
19482
  });
19430
19483
 
19431
19484
  // lib/components/port.ts
19432
19485
  import { distance as distance48 } from "circuit-json";
19433
- import { z as z150 } from "zod";
19486
+ import { z as z151 } from "zod";
19434
19487
  var portProps = commonLayoutProps.extend({
19435
- name: z150.string().optional(),
19436
- pinNumber: z150.number().optional(),
19437
- schStemLength: z150.number().optional(),
19438
- schPinLabelFontSize: z150.enum(["default", "sm"]).or(
19488
+ name: z151.string().optional(),
19489
+ pinNumber: z151.number().optional(),
19490
+ schStemLength: z151.number().optional(),
19491
+ schPinLabelFontSize: z151.enum(["default", "sm"]).or(
19439
19492
  distance48.refine((value) => Number.isFinite(value) && value > 0, {
19440
19493
  message: "Schematic pin-label font size must be positive and finite"
19441
19494
  })
19442
19495
  ).optional(),
19443
- aliases: z150.array(z150.string()).optional(),
19444
- layer: z150.string().optional(),
19445
- layers: z150.array(z150.string()).optional(),
19446
- schX: z150.number().optional(),
19447
- schY: z150.number().optional(),
19496
+ aliases: z151.array(z151.string()).optional(),
19497
+ layer: z151.string().optional(),
19498
+ layers: z151.array(z151.string()).optional(),
19499
+ schX: z151.number().optional(),
19500
+ schY: z151.number().optional(),
19448
19501
  direction: direction.optional(),
19449
- connectsTo: z150.string().or(z150.array(z150.string())).optional(),
19502
+ connectsTo: z151.string().or(z151.array(z151.string())).optional(),
19450
19503
  kicadPinMetadata: kicadPinMetadata.optional(),
19451
- hasInversionCircle: z150.boolean().optional()
19504
+ hasInversionCircle: z151.boolean().optional()
19452
19505
  });
19453
19506
 
19454
19507
  // lib/components/pcb-note-text.ts
19455
19508
  import { length as length11 } from "circuit-json";
19456
- import { z as z151 } from "zod";
19509
+ import { z as z152 } from "zod";
19457
19510
  var pcbNoteTextProps = pcbLayoutProps.extend({
19458
- text: z151.string(),
19459
- anchorAlignment: z151.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
19460
- font: z151.enum(["tscircuit2024"]).optional(),
19511
+ text: z152.string(),
19512
+ anchorAlignment: z152.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
19513
+ font: z152.enum(["tscircuit2024"]).optional(),
19461
19514
  fontSize: length11.optional(),
19462
- color: z151.string().optional()
19515
+ color: z152.string().optional()
19463
19516
  });
19464
19517
  expectTypesMatch(true);
19465
19518
 
19466
19519
  // lib/components/pcb-note-rect.ts
19467
19520
  import { distance as distance49 } from "circuit-json";
19468
- import { z as z152 } from "zod";
19521
+ import { z as z153 } from "zod";
19469
19522
  var pcbNoteRectProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
19470
19523
  width: distance49,
19471
19524
  height: distance49,
19472
19525
  strokeWidth: distance49.optional(),
19473
- isFilled: z152.boolean().optional(),
19474
- hasStroke: z152.boolean().optional(),
19475
- isStrokeDashed: z152.boolean().optional(),
19476
- color: z152.string().optional(),
19526
+ isFilled: z153.boolean().optional(),
19527
+ hasStroke: z153.boolean().optional(),
19528
+ isStrokeDashed: z153.boolean().optional(),
19529
+ color: z153.string().optional(),
19477
19530
  cornerRadius: distance49.optional()
19478
19531
  });
19479
19532
  expectTypesMatch(true);
@@ -19483,7 +19536,7 @@ import {
19483
19536
  length as length12,
19484
19537
  route_hint_point as route_hint_point7
19485
19538
  } from "circuit-json";
19486
- import { z as z153 } from "zod";
19539
+ import { z as z154 } from "zod";
19487
19540
  var pcbNotePathProps = pcbLayoutProps.omit({
19488
19541
  pcbLeftEdgeX: true,
19489
19542
  pcbRightEdgeX: true,
@@ -19495,15 +19548,15 @@ var pcbNotePathProps = pcbLayoutProps.omit({
19495
19548
  pcbOffsetY: true,
19496
19549
  pcbRotation: true
19497
19550
  }).extend({
19498
- route: z153.array(route_hint_point7),
19551
+ route: z154.array(route_hint_point7),
19499
19552
  strokeWidth: length12.optional(),
19500
- color: z153.string().optional()
19553
+ color: z154.string().optional()
19501
19554
  });
19502
19555
  expectTypesMatch(true);
19503
19556
 
19504
19557
  // lib/components/pcb-note-line.ts
19505
19558
  import { distance as distance50 } from "circuit-json";
19506
- import { z as z154 } from "zod";
19559
+ import { z as z155 } from "zod";
19507
19560
  var pcbNoteLineProps = pcbLayoutProps.omit({
19508
19561
  pcbLeftEdgeX: true,
19509
19562
  pcbRightEdgeX: true,
@@ -19520,15 +19573,15 @@ var pcbNoteLineProps = pcbLayoutProps.omit({
19520
19573
  x2: distance50,
19521
19574
  y2: distance50,
19522
19575
  strokeWidth: distance50.optional(),
19523
- color: z154.string().optional(),
19524
- isDashed: z154.boolean().optional()
19576
+ color: z155.string().optional(),
19577
+ isDashed: z155.boolean().optional()
19525
19578
  });
19526
19579
  expectTypesMatch(true);
19527
19580
 
19528
19581
  // lib/components/pcb-note-dimension.ts
19529
19582
  import { distance as distance51, length as length13 } from "circuit-json";
19530
- import { z as z155 } from "zod";
19531
- var dimensionTarget2 = z155.union([z155.string(), point]);
19583
+ import { z as z156 } from "zod";
19584
+ var dimensionTarget2 = z156.union([z156.string(), point]);
19532
19585
  var pcbNoteDimensionProps = pcbLayoutProps.omit({
19533
19586
  pcbLeftEdgeX: true,
19534
19587
  pcbRightEdgeX: true,
@@ -19542,114 +19595,114 @@ var pcbNoteDimensionProps = pcbLayoutProps.omit({
19542
19595
  }).extend({
19543
19596
  from: dimensionTarget2,
19544
19597
  to: dimensionTarget2,
19545
- text: z155.string().optional(),
19598
+ text: z156.string().optional(),
19546
19599
  offset: distance51.optional(),
19547
- offsetDirection: z155.object({ x: z155.number().finite(), y: z155.number().finite() }).optional(),
19548
- font: z155.enum(["tscircuit2024"]).optional(),
19600
+ offsetDirection: z156.object({ x: z156.number().finite(), y: z156.number().finite() }).optional(),
19601
+ font: z156.enum(["tscircuit2024"]).optional(),
19549
19602
  fontSize: length13.optional(),
19550
- color: z155.string().optional(),
19603
+ color: z156.string().optional(),
19551
19604
  arrowSize: distance51.optional(),
19552
- units: z155.enum(["in", "mm"]).optional(),
19553
- outerEdgeToEdge: z155.literal(true).optional(),
19554
- centerToCenter: z155.literal(true).optional(),
19555
- innerEdgeToEdge: z155.literal(true).optional()
19605
+ units: z156.enum(["in", "mm"]).optional(),
19606
+ outerEdgeToEdge: z156.literal(true).optional(),
19607
+ centerToCenter: z156.literal(true).optional(),
19608
+ innerEdgeToEdge: z156.literal(true).optional()
19556
19609
  });
19557
19610
  expectTypesMatch(
19558
19611
  true
19559
19612
  );
19560
19613
 
19561
19614
  // lib/platformConfig.ts
19562
- import { z as z156 } from "zod";
19563
- var unvalidatedCircuitJson = z156.array(z156.any()).describe("Circuit JSON");
19564
- var footprintLibraryResult = z156.object({
19565
- footprintCircuitJson: z156.array(z156.any()),
19615
+ import { z as z157 } from "zod";
19616
+ var unvalidatedCircuitJson = z157.array(z157.any()).describe("Circuit JSON");
19617
+ var footprintLibraryResult = z157.object({
19618
+ footprintCircuitJson: z157.array(z157.any()),
19566
19619
  cadModel: cadModelProp.optional()
19567
19620
  });
19568
- var pathToCircuitJsonFn = z156.function().args(z156.string()).returns(z156.promise(footprintLibraryResult)).or(
19569
- z156.function().args(
19570
- z156.string(),
19571
- z156.object({ resolvedPcbStyle: pcbStyle.optional() }).optional()
19572
- ).returns(z156.promise(footprintLibraryResult))
19621
+ var pathToCircuitJsonFn = z157.function().args(z157.string()).returns(z157.promise(footprintLibraryResult)).or(
19622
+ z157.function().args(
19623
+ z157.string(),
19624
+ z157.object({ resolvedPcbStyle: pcbStyle.optional() }).optional()
19625
+ ).returns(z157.promise(footprintLibraryResult))
19573
19626
  ).describe("A function that takes a path and returns Circuit JSON");
19574
- var footprintFileParserEntry = z156.object({
19575
- loadFromUrl: z156.function().args(z156.string()).returns(z156.promise(footprintLibraryResult)).describe(
19627
+ var footprintFileParserEntry = z157.object({
19628
+ loadFromUrl: z157.function().args(z157.string()).returns(z157.promise(footprintLibraryResult)).describe(
19576
19629
  "A function that takes a footprint file URL and returns Circuit JSON"
19577
19630
  )
19578
19631
  });
19579
- var spiceEngineSimulationResult = z156.object({
19580
- engineVersionString: z156.string().optional(),
19632
+ var spiceEngineSimulationResult = z157.object({
19633
+ engineVersionString: z157.string().optional(),
19581
19634
  simulationResultCircuitJson: unvalidatedCircuitJson
19582
19635
  });
19583
- var spiceEngineZod = z156.object({
19584
- simulate: z156.function().args(z156.string()).returns(z156.promise(spiceEngineSimulationResult)).describe(
19636
+ var spiceEngineZod = z157.object({
19637
+ simulate: z157.function().args(z157.string()).returns(z157.promise(spiceEngineSimulationResult)).describe(
19585
19638
  "A function that takes a SPICE string and returns a simulation result"
19586
19639
  )
19587
19640
  });
19588
- var defaultSpiceEngine = z156.custom(
19641
+ var defaultSpiceEngine = z157.custom(
19589
19642
  (value) => typeof value === "string"
19590
19643
  );
19591
- var autorouterInstance = z156.object({
19592
- run: z156.function().args().returns(z156.promise(z156.unknown())).describe("Run the autorouter"),
19593
- getOutputSimpleRouteJson: z156.function().args().returns(z156.promise(z156.any())).describe("Get the resulting SimpleRouteJson")
19644
+ var autorouterInstance = z157.object({
19645
+ run: z157.function().args().returns(z157.promise(z157.unknown())).describe("Run the autorouter"),
19646
+ getOutputSimpleRouteJson: z157.function().args().returns(z157.promise(z157.any())).describe("Get the resulting SimpleRouteJson")
19594
19647
  });
19595
- var autorouterDefinition = z156.object({
19596
- createAutorouter: z156.function().args(z156.any(), z156.any().optional()).returns(z156.union([autorouterInstance, z156.promise(autorouterInstance)])).describe("Create an autorouter instance")
19648
+ var autorouterDefinition = z157.object({
19649
+ createAutorouter: z157.function().args(z157.any(), z157.any().optional()).returns(z157.union([autorouterInstance, z157.promise(autorouterInstance)])).describe("Create an autorouter instance")
19597
19650
  });
19598
- var platformFetch = z156.custom((value) => typeof value === "function").describe("A fetch-like function to use for platform requests");
19599
- var localCacheEngine = z156.custom(
19651
+ var platformFetch = z157.custom((value) => typeof value === "function").describe("A fetch-like function to use for platform requests");
19652
+ var localCacheEngine = z157.custom(
19600
19653
  (value) => typeof value === "object" && value !== null && "getItem" in value && typeof value.getItem === "function" && "setItem" in value && typeof value.setItem === "function"
19601
19654
  );
19602
- var fabricatorEngine = z156.custom(
19655
+ var fabricatorEngine = z157.custom(
19603
19656
  (value) => typeof value === "object" && value !== null && "runDrcChecks" in value && typeof value.runDrcChecks === "function"
19604
19657
  );
19605
- var platformConfig = z156.object({
19658
+ var platformConfig = z157.object({
19606
19659
  partsEngine: partsEngine.optional(),
19607
19660
  fabricatorEngine: fabricatorEngine.optional(),
19608
19661
  autorouter: autorouterProp.optional(),
19609
- autorouterMap: z156.record(z156.string(), autorouterDefinition).optional(),
19610
- allowLegacyAutorouters: z156.boolean().optional(),
19662
+ autorouterMap: z157.record(z157.string(), autorouterDefinition).optional(),
19663
+ allowLegacyAutorouters: z157.boolean().optional(),
19611
19664
  registryApiUrl: url.optional(),
19612
19665
  cloudAutorouterUrl: url.optional(),
19613
- projectName: z156.string().optional(),
19666
+ projectName: z157.string().optional(),
19614
19667
  projectBaseUrl: url.optional(),
19615
- version: z156.string().optional(),
19668
+ version: z157.string().optional(),
19616
19669
  url: url.optional(),
19617
- printBoardInformationToSilkscreen: z156.boolean().optional(),
19618
- includeBoardFiles: z156.array(z156.string()).describe(
19670
+ printBoardInformationToSilkscreen: z157.boolean().optional(),
19671
+ includeBoardFiles: z157.array(z157.string()).describe(
19619
19672
  'The board files to automatically build with "tsci build", defaults to ["**/*.circuit.tsx"]. Can be an array of files or globs'
19620
19673
  ).optional(),
19621
- snapshotsDir: z156.string().describe(
19674
+ snapshotsDir: z157.string().describe(
19622
19675
  'The directory where snapshots are stored for "tsci snapshot", defaults to "tests/__snapshots__"'
19623
19676
  ).optional(),
19624
19677
  defaultSpiceEngine: defaultSpiceEngine.optional(),
19625
- unitPreference: z156.enum(["mm", "in", "mil"]).optional(),
19678
+ unitPreference: z157.enum(["mm", "in", "mil"]).optional(),
19626
19679
  localCacheEngine: localCacheEngine.optional(),
19627
- useCloudAutorouter: z156.boolean().optional(),
19628
- enablePartOrientationAnalysis: z156.boolean().optional(),
19629
- pcbPackSolverTimeoutMs: z156.number().finite().positive().optional(),
19630
- pcbDisabled: z156.boolean().optional(),
19631
- routingDisabled: z156.boolean().optional(),
19632
- schematicDisabled: z156.boolean().optional(),
19633
- partsEngineDisabled: z156.boolean().optional(),
19634
- analogSimulationDisabled: z156.boolean().optional(),
19635
- drcChecksDisabled: z156.boolean().optional(),
19636
- netlistDrcChecksDisabled: z156.boolean().optional(),
19637
- routingDrcChecksDisabled: z156.boolean().optional(),
19638
- placementDrcChecksDisabled: z156.boolean().optional(),
19639
- pinSpecificationDrcChecksDisabled: z156.boolean().optional(),
19640
- spiceEngineMap: z156.record(z156.string(), spiceEngineZod).optional(),
19641
- footprintLibraryMap: z156.record(
19642
- z156.string(),
19643
- z156.union([
19680
+ useCloudAutorouter: z157.boolean().optional(),
19681
+ enablePartOrientationAnalysis: z157.boolean().optional(),
19682
+ pcbPackSolverTimeoutMs: z157.number().finite().positive().optional(),
19683
+ pcbDisabled: z157.boolean().optional(),
19684
+ routingDisabled: z157.boolean().optional(),
19685
+ schematicDisabled: z157.boolean().optional(),
19686
+ partsEngineDisabled: z157.boolean().optional(),
19687
+ analogSimulationDisabled: z157.boolean().optional(),
19688
+ drcChecksDisabled: z157.boolean().optional(),
19689
+ netlistDrcChecksDisabled: z157.boolean().optional(),
19690
+ routingDrcChecksDisabled: z157.boolean().optional(),
19691
+ placementDrcChecksDisabled: z157.boolean().optional(),
19692
+ pinSpecificationDrcChecksDisabled: z157.boolean().optional(),
19693
+ spiceEngineMap: z157.record(z157.string(), spiceEngineZod).optional(),
19694
+ footprintLibraryMap: z157.record(
19695
+ z157.string(),
19696
+ z157.union([
19644
19697
  pathToCircuitJsonFn,
19645
- z156.record(
19646
- z156.string(),
19647
- z156.union([unvalidatedCircuitJson, pathToCircuitJsonFn])
19698
+ z157.record(
19699
+ z157.string(),
19700
+ z157.union([unvalidatedCircuitJson, pathToCircuitJsonFn])
19648
19701
  )
19649
19702
  ])
19650
19703
  ).optional(),
19651
- footprintFileParserMap: z156.record(z156.string(), footprintFileParserEntry).optional(),
19652
- resolveProjectStaticFileImportUrl: z156.function().args(z156.string()).returns(z156.promise(z156.string())).describe(
19704
+ footprintFileParserMap: z157.record(z157.string(), footprintFileParserEntry).optional(),
19705
+ resolveProjectStaticFileImportUrl: z157.function().args(z157.string()).returns(z157.promise(z157.string())).describe(
19653
19706
  "A function that returns a string URL for static files for the project"
19654
19707
  ).optional(),
19655
19708
  platformFetch: platformFetch.optional()
@@ -19709,6 +19762,9 @@ export {
19709
19762
  base_manual_edit_event,
19710
19763
  batteryPins,
19711
19764
  batteryProps,
19765
+ boardMountOrientation,
19766
+ boardMountRotation,
19767
+ boardMountRotationAnchor,
19712
19768
  boardOutlinePoint,
19713
19769
  boardProps,
19714
19770
  border,