@tscircuit/schematic-trace-solver 0.0.97 → 0.0.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/index.d.ts +9 -0
  2. package/dist/index.js +753 -285
  3. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +45 -1
  4. package/lib/solvers/TraceCleanupSolver/TraceCleanupSolver.ts +55 -13
  5. package/lib/solvers/TraceCleanupSolver/alignSameNetRails.ts +66 -0
  6. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/evaluateRailGroup.ts +124 -0
  7. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/geometry.ts +108 -0
  8. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/getComponentSideRailSegments.ts +121 -0
  9. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/getRailGroups.ts +114 -0
  10. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/moveRailSegments.ts +27 -0
  11. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/preservesLabelAnchors.ts +30 -0
  12. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/scoreRailAlignment.ts +67 -0
  13. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/types.ts +34 -0
  14. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/SingleOverlapSolver/SingleOverlapSolver.ts +1 -60
  15. package/lib/utils/doesPathCoincideWithTraces.ts +61 -0
  16. package/package.json +1 -1
  17. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +1 -1
  18. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +1 -1
  19. package/tests/examples/__snapshots__/example02.snap.svg +1 -1
  20. package/tests/examples/__snapshots__/example14.snap.svg +1 -1
  21. package/tests/examples/__snapshots__/example18.snap.svg +1 -1
  22. package/tests/examples/__snapshots__/example46.snap.svg +1 -1
  23. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +1 -1
  24. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +1 -1
  25. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +1 -1
  26. package/tests/repros/repro-rp2040-gamepad-trace-alignment.test.ts +24 -0
  27. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-component-scope.test.ts +38 -0
  28. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-eligible-traces.test.ts +28 -0
  29. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-horizontal.test.ts +62 -0
  30. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-label-anchor.test.ts +36 -0
  31. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-label-junction.test.ts +42 -0
  32. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-obstacle.test.ts +28 -0
  33. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-pipeline-label-connector.test.ts +52 -0
  34. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-vertical.test.ts +25 -0
  35. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-visible-length.test.ts +40 -0
  36. package/tests/solvers/TraceCleanupSolver/fixtures/alignSameNetRails.ts +89 -0
package/dist/index.d.ts CHANGED
@@ -598,6 +598,7 @@ declare class LongDistancePairSolver extends BaseSolver {
598
598
  };
599
599
  }
600
600
 
601
+ type TraceCleanupOperation = "untangling_traces" | "minimizing_turns" | "balancing_l_shapes" | "aligning_same_net_rails";
601
602
  /**
602
603
  * Defines the input structure for the TraceCleanupSolver.
603
604
  */
@@ -607,6 +608,8 @@ interface TraceCleanupSolverInput {
607
608
  allLabelPlacements: NetLabelPlacement[];
608
609
  mergedLabelNetIdMap: Record<string, Set<string>>;
609
610
  paddingBuffer: number;
611
+ operations?: readonly TraceCleanupOperation[];
612
+ eligibleTraceIds?: ReadonlySet<string>;
610
613
  }
611
614
  /**
612
615
  * The TraceCleanupSolver is responsible for improving the aesthetics and readability of schematic traces.
@@ -621,15 +624,19 @@ declare class TraceCleanupSolver extends BaseSolver {
621
624
  private outputTraces;
622
625
  private traceIdQueue;
623
626
  private tracesMap;
627
+ private operations;
628
+ private operationIndex;
624
629
  private pipelineStep;
625
630
  private activeTraceId;
626
631
  activeSubSolver: BaseSolver | null;
627
632
  constructor(solverInput: TraceCleanupSolverInput);
628
633
  _step(): void;
634
+ private _advancePipeline;
629
635
  private _runUntangleTracesStep;
630
636
  private _runMinimizeTurnsStep;
631
637
  private _runBalanceLShapesStep;
632
638
  private _processTrace;
639
+ private _runAlignSameNetRailsStep;
633
640
  getOutput(): {
634
641
  traces: SolvedTracePath[];
635
642
  };
@@ -1029,7 +1036,9 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
1029
1036
  availableNetOrientationSolver?: AvailableNetOrientationSolver;
1030
1037
  railNetLabelCornerPlacementSolver?: RailNetLabelCornerPlacementSolver;
1031
1038
  traceAnchoredNetLabelOverlapSolver?: TraceAnchoredNetLabelOverlapSolver;
1039
+ preAlignmentNetLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver;
1032
1040
  netLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver;
1041
+ traceCleanupSolver2?: TraceCleanupSolver;
1033
1042
  netLabelNetLabelCollisionSolver?: NetLabelNetLabelCollisionSolver;
1034
1043
  startTimeOfPhase: Record<string, number>;
1035
1044
  endTimeOfPhase: Record<string, number>;