@tscircuit/schematic-trace-solver 0.0.97 → 0.0.99

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 (50) hide show
  1. package/dist/index.d.ts +10 -0
  2. package/dist/index.js +1077 -519
  3. package/lib/solvers/MspConnectionPairSolver/MspConnectionPairSolver.ts +19 -9
  4. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +30 -0
  5. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/generateEndpointCollisionDetours.ts +84 -0
  6. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +45 -1
  7. package/lib/solvers/TraceCleanupSolver/TraceCleanupSolver.ts +55 -13
  8. package/lib/solvers/TraceCleanupSolver/alignSameNetRails.ts +66 -0
  9. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/evaluateRailGroup.ts +124 -0
  10. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/geometry.ts +108 -0
  11. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/getComponentSideRailSegments.ts +121 -0
  12. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/getRailGroups.ts +114 -0
  13. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/moveRailSegments.ts +27 -0
  14. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/preservesLabelAnchors.ts +30 -0
  15. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/scoreRailAlignment.ts +67 -0
  16. package/lib/solvers/TraceCleanupSolver/sameNetRailAlignment/types.ts +34 -0
  17. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/SingleOverlapSolver/SingleOverlapSolver.ts +1 -60
  18. package/lib/utils/doesPathCoincideWithTraces.ts +61 -0
  19. package/package.json +1 -1
  20. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +18 -18
  21. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +7 -7
  22. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +5 -7
  23. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +6 -12
  24. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +1 -1
  25. package/tests/examples/__snapshots__/example02.snap.svg +1 -1
  26. package/tests/examples/__snapshots__/example09.snap.svg +9 -13
  27. package/tests/examples/__snapshots__/example14.snap.svg +1 -1
  28. package/tests/examples/__snapshots__/example18.snap.svg +1 -1
  29. package/tests/examples/__snapshots__/example21.snap.svg +30 -32
  30. package/tests/examples/__snapshots__/example29.snap.svg +13 -19
  31. package/tests/examples/__snapshots__/example46.snap.svg +1 -1
  32. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +1 -1
  33. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +1 -1
  34. package/tests/repros/__snapshots__/repro129-host-custom-symbol-passives.snap.svg +60 -0
  35. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +1 -1
  36. package/tests/repros/assets/repro129-host-custom-symbol-passives.input.json +94 -0
  37. package/tests/repros/repro-rp2040-gamepad-trace-alignment.test.ts +24 -0
  38. package/tests/repros/repro129-host-custom-symbol-passives.test.ts +16 -0
  39. package/tests/solvers/MspConnectionPairSolver/msp-connection-pair-solver-direct-connection-distance.test.ts +46 -0
  40. package/tests/solvers/SchematicTraceSingleLineSolver2/generate-endpoint-collision-detours.test.ts +38 -0
  41. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-component-scope.test.ts +38 -0
  42. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-eligible-traces.test.ts +28 -0
  43. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-horizontal.test.ts +62 -0
  44. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-label-anchor.test.ts +36 -0
  45. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-label-junction.test.ts +42 -0
  46. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-obstacle.test.ts +28 -0
  47. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-pipeline-label-connector.test.ts +52 -0
  48. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-vertical.test.ts +25 -0
  49. package/tests/solvers/TraceCleanupSolver/alignSameNetRails-visible-length.test.ts +40 -0
  50. package/tests/solvers/TraceCleanupSolver/fixtures/alignSameNetRails.ts +89 -0
package/dist/index.d.ts CHANGED
@@ -130,6 +130,7 @@ declare class MspConnectionPairSolver extends BaseSolver {
130
130
  chipId: string;
131
131
  }>;
132
132
  userNetIdByPinId: Record<string, string | undefined>;
133
+ directConnectionPinPairKeys: Set<string>;
133
134
  constructor({ inputProblem }: {
134
135
  inputProblem: InputProblem;
135
136
  });
@@ -598,6 +599,7 @@ declare class LongDistancePairSolver extends BaseSolver {
598
599
  };
599
600
  }
600
601
 
602
+ type TraceCleanupOperation = "untangling_traces" | "minimizing_turns" | "balancing_l_shapes" | "aligning_same_net_rails";
601
603
  /**
602
604
  * Defines the input structure for the TraceCleanupSolver.
603
605
  */
@@ -607,6 +609,8 @@ interface TraceCleanupSolverInput {
607
609
  allLabelPlacements: NetLabelPlacement[];
608
610
  mergedLabelNetIdMap: Record<string, Set<string>>;
609
611
  paddingBuffer: number;
612
+ operations?: readonly TraceCleanupOperation[];
613
+ eligibleTraceIds?: ReadonlySet<string>;
610
614
  }
611
615
  /**
612
616
  * The TraceCleanupSolver is responsible for improving the aesthetics and readability of schematic traces.
@@ -621,15 +625,19 @@ declare class TraceCleanupSolver extends BaseSolver {
621
625
  private outputTraces;
622
626
  private traceIdQueue;
623
627
  private tracesMap;
628
+ private operations;
629
+ private operationIndex;
624
630
  private pipelineStep;
625
631
  private activeTraceId;
626
632
  activeSubSolver: BaseSolver | null;
627
633
  constructor(solverInput: TraceCleanupSolverInput);
628
634
  _step(): void;
635
+ private _advancePipeline;
629
636
  private _runUntangleTracesStep;
630
637
  private _runMinimizeTurnsStep;
631
638
  private _runBalanceLShapesStep;
632
639
  private _processTrace;
640
+ private _runAlignSameNetRailsStep;
633
641
  getOutput(): {
634
642
  traces: SolvedTracePath[];
635
643
  };
@@ -1029,7 +1037,9 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
1029
1037
  availableNetOrientationSolver?: AvailableNetOrientationSolver;
1030
1038
  railNetLabelCornerPlacementSolver?: RailNetLabelCornerPlacementSolver;
1031
1039
  traceAnchoredNetLabelOverlapSolver?: TraceAnchoredNetLabelOverlapSolver;
1040
+ preAlignmentNetLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver;
1032
1041
  netLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver;
1042
+ traceCleanupSolver2?: TraceCleanupSolver;
1033
1043
  netLabelNetLabelCollisionSolver?: NetLabelNetLabelCollisionSolver;
1034
1044
  startTimeOfPhase: Record<string, number>;
1035
1045
  endTimeOfPhase: Record<string, number>;