@tscircuit/core 0.0.1258 → 0.0.1262

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.d.ts CHANGED
@@ -12,7 +12,7 @@ import { symbols, SchSymbol, BaseSymbolName } from 'schematic-symbols';
12
12
  import { CircuitJsonUtilObjects } from '@tscircuit/circuit-json-util';
13
13
  import { Matrix } from 'transformation-matrix';
14
14
  import { PackSolver2 } from 'calculate-packing';
15
- import { AutoroutingPipelineSolver, AssignableAutoroutingPipeline2, AssignableAutoroutingPipeline3, AutoroutingPipeline1_OriginalUnravel, AutoroutingPipelineSolver3_HgPortPointPathing, AutoroutingPipelineSolver5, SimplifiedPcbTrace as SimplifiedPcbTrace$1, SimpleRouteJson as SimpleRouteJson$1 } from '@tscircuit/capacity-autorouter';
15
+ import { AutoroutingPipelineSolver, AssignableAutoroutingPipeline2, AssignableAutoroutingPipeline3, AutoroutingPipeline1_OriginalUnravel, AutoroutingPipelineSolver3_HgPortPointPathing, AutoroutingPipelineSolver5, AutoroutingPipelineSolver8, SimplifiedPcbTrace as SimplifiedPcbTrace$1, SimpleRouteJson as SimpleRouteJson$1 } from '@tscircuit/capacity-autorouter';
16
16
  import { CopperPourPipelineSolver } from '@tscircuit/copper-pour-solver';
17
17
  import { Bounds } from '@tscircuit/math-utils';
18
18
  import { ConnectivityMap } from 'circuit-json-to-connectivity-map';
@@ -27,6 +27,7 @@ declare const SOLVERS: {
27
27
  AutoroutingPipelineSolver3_HgPortPointPathing: typeof AutoroutingPipelineSolver3_HgPortPointPathing;
28
28
  AutoroutingPipelineSolver4: typeof AutoroutingPipelineSolver;
29
29
  AutoroutingPipelineSolver5: typeof AutoroutingPipelineSolver5;
30
+ AutoroutingPipelineSolver8: typeof AutoroutingPipelineSolver8;
30
31
  CopperPourPipelineSolver: typeof CopperPourPipelineSolver;
31
32
  };
32
33
  type SolverName = keyof typeof SOLVERS;
@@ -192,6 +193,9 @@ interface AutoroutingProgressEvent {
192
193
  }
193
194
  interface AutoroutingEndEvent {
194
195
  type: "autorouting:end";
196
+ subcircuit_id: string;
197
+ componentDisplayName: string;
198
+ simpleRouteJson: SimpleRouteJson;
195
199
  }
196
200
  interface PackingStartEvent {
197
201
  type: "packing:start";
@@ -1335,9 +1339,11 @@ declare class Net extends PrimitiveComponent<typeof netProps> {
1335
1339
  highlightColor: zod.ZodOptional<zod.ZodString>;
1336
1340
  isPowerNet: zod.ZodOptional<zod.ZodBoolean>;
1337
1341
  isGroundNet: zod.ZodOptional<zod.ZodBoolean>;
1342
+ nominalTraceWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1338
1343
  }, "strip", zod.ZodTypeAny, {
1339
1344
  name: string;
1340
1345
  highlightColor?: string | undefined;
1346
+ nominalTraceWidth?: number | undefined;
1341
1347
  connectsTo?: string | string[] | undefined;
1342
1348
  routingPhaseIndex?: number | null | undefined;
1343
1349
  isPowerNet?: boolean | undefined;
@@ -1345,6 +1351,7 @@ declare class Net extends PrimitiveComponent<typeof netProps> {
1345
1351
  }, {
1346
1352
  name: string;
1347
1353
  highlightColor?: string | undefined;
1354
+ nominalTraceWidth?: string | number | undefined;
1348
1355
  connectsTo?: string | string[] | undefined;
1349
1356
  routingPhaseIndex?: number | null | undefined;
1350
1357
  isPowerNet?: boolean | undefined;
@@ -1398,6 +1405,7 @@ interface RoutingPhasePlan {
1398
1405
  autorouter?: AutorouterProp;
1399
1406
  reroute?: boolean;
1400
1407
  region?: AutoroutingPhaseProps["region"];
1408
+ connectionSelectors?: string[];
1401
1409
  drcTolerances?: RoutingPhaseDrcTolerances;
1402
1410
  nets: Net[];
1403
1411
  traces: Trace[];
@@ -71254,6 +71262,8 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71254
71262
  maxY: number;
71255
71263
  shape?: "rect" | undefined;
71256
71264
  }>>;
71265
+ connection: zod.ZodOptional<zod.ZodString>;
71266
+ connections: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
71257
71267
  reroute: zod.ZodOptional<zod.ZodBoolean>;
71258
71268
  minTraceWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
71259
71269
  minViaHoleEdgeToViaHoleEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
@@ -71269,6 +71279,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71269
71279
  phaseIndex: zod.ZodOptional<zod.ZodNumber>;
71270
71280
  }, "strip", zod.ZodTypeAny, {
71271
71281
  key?: any;
71282
+ connections?: string[] | undefined;
71272
71283
  minTraceWidth?: number | undefined;
71273
71284
  minViaHoleEdgeToViaHoleEdgeClearance?: number | undefined;
71274
71285
  minViaEdgeToPadEdgeClearance?: number | undefined;
@@ -71279,6 +71290,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71279
71290
  minViaHoleDiameter?: number | undefined;
71280
71291
  minViaPadDiameter?: number | undefined;
71281
71292
  autorouter?: _tscircuit_props.AutorouterProp | undefined;
71293
+ connection?: string | undefined;
71282
71294
  phaseIndex?: number | undefined;
71283
71295
  region?: {
71284
71296
  minX: number;
@@ -71290,6 +71302,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71290
71302
  reroute?: boolean | undefined;
71291
71303
  }, {
71292
71304
  key?: any;
71305
+ connections?: string[] | undefined;
71293
71306
  minTraceWidth?: string | number | undefined;
71294
71307
  minViaHoleEdgeToViaHoleEdgeClearance?: string | number | undefined;
71295
71308
  minViaEdgeToPadEdgeClearance?: string | number | undefined;
@@ -71300,6 +71313,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71300
71313
  minViaHoleDiameter?: string | number | undefined;
71301
71314
  minViaPadDiameter?: string | number | undefined;
71302
71315
  autorouter?: _tscircuit_props.AutorouterProp | undefined;
71316
+ connection?: string | undefined;
71303
71317
  phaseIndex?: number | undefined;
71304
71318
  region?: {
71305
71319
  minX: number;
@@ -71311,6 +71325,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71311
71325
  reroute?: boolean | undefined;
71312
71326
  }>, {
71313
71327
  key?: any;
71328
+ connections?: string[] | undefined;
71314
71329
  minTraceWidth?: number | undefined;
71315
71330
  minViaHoleEdgeToViaHoleEdgeClearance?: number | undefined;
71316
71331
  minViaEdgeToPadEdgeClearance?: number | undefined;
@@ -71321,6 +71336,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71321
71336
  minViaHoleDiameter?: number | undefined;
71322
71337
  minViaPadDiameter?: number | undefined;
71323
71338
  autorouter?: _tscircuit_props.AutorouterProp | undefined;
71339
+ connection?: string | undefined;
71324
71340
  phaseIndex?: number | undefined;
71325
71341
  region?: {
71326
71342
  minX: number;
@@ -71332,6 +71348,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71332
71348
  reroute?: boolean | undefined;
71333
71349
  }, {
71334
71350
  key?: any;
71351
+ connections?: string[] | undefined;
71335
71352
  minTraceWidth?: string | number | undefined;
71336
71353
  minViaHoleEdgeToViaHoleEdgeClearance?: string | number | undefined;
71337
71354
  minViaEdgeToPadEdgeClearance?: string | number | undefined;
@@ -71342,6 +71359,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
71342
71359
  minViaHoleDiameter?: string | number | undefined;
71343
71360
  minViaPadDiameter?: string | number | undefined;
71344
71361
  autorouter?: _tscircuit_props.AutorouterProp | undefined;
71362
+ connection?: string | undefined;
71345
71363
  phaseIndex?: number | undefined;
71346
71364
  region?: {
71347
71365
  minX: number;
@@ -83566,7 +83584,7 @@ declare const pcbViaProps: z.ZodObject<{
83566
83584
  schRelative: z.ZodOptional<z.ZodBoolean>;
83567
83585
  pcbRelative: z.ZodOptional<z.ZodBoolean>;
83568
83586
  connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
83569
- fromLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83587
+ fromLayer: z.ZodOptional<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83570
83588
  name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83571
83589
  }, "strip", z.ZodTypeAny, {
83572
83590
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -83574,8 +83592,8 @@ declare const pcbViaProps: z.ZodObject<{
83574
83592
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83575
83593
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83576
83594
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83577
- }>>;
83578
- toLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83595
+ }>>>;
83596
+ toLayer: z.ZodOptional<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83579
83597
  name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83580
83598
  }, "strip", z.ZodTypeAny, {
83581
83599
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -83583,7 +83601,7 @@ declare const pcbViaProps: z.ZodObject<{
83583
83601
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83584
83602
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83585
83603
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83586
- }>>;
83604
+ }>>>;
83587
83605
  holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83588
83606
  isTented: z.ZodOptional<z.ZodBoolean>;
83589
83607
  outerDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
@@ -83817,7 +83835,7 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
83817
83835
  schRelative: z.ZodOptional<z.ZodBoolean>;
83818
83836
  pcbRelative: z.ZodOptional<z.ZodBoolean>;
83819
83837
  connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
83820
- fromLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83838
+ fromLayer: z.ZodOptional<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83821
83839
  name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83822
83840
  }, "strip", z.ZodTypeAny, {
83823
83841
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -83825,8 +83843,8 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
83825
83843
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83826
83844
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83827
83845
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83828
- }>>;
83829
- toLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83846
+ }>>>;
83847
+ toLayer: z.ZodOptional<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83830
83848
  name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83831
83849
  }, "strip", z.ZodTypeAny, {
83832
83850
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -83834,7 +83852,7 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
83834
83852
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83835
83853
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83836
83854
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83837
- }>>;
83855
+ }>>>;
83838
83856
  holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83839
83857
  isTented: z.ZodOptional<z.ZodBoolean>;
83840
83858
  outerDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
@@ -84277,7 +84295,7 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
84277
84295
  pcbRelative: z.ZodOptional<z.ZodBoolean>;
84278
84296
  } & {
84279
84297
  name: z.ZodOptional<z.ZodString>;
84280
- fromLayer: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
84298
+ fromLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
84281
84299
  name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
84282
84300
  }, "strip", z.ZodTypeAny, {
84283
84301
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -84285,8 +84303,8 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
84285
84303
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84286
84304
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84287
84305
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84288
- }>;
84289
- toLayer: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
84306
+ }>>;
84307
+ toLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
84290
84308
  name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
84291
84309
  }, "strip", z.ZodTypeAny, {
84292
84310
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -84294,17 +84312,25 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
84294
84312
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84295
84313
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84296
84314
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84297
- }>;
84315
+ }>>;
84298
84316
  holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
84299
84317
  outerDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
84318
+ layers: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
84319
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
84320
+ }, "strip", z.ZodTypeAny, {
84321
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84322
+ }, {
84323
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84324
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84325
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84326
+ }>, "many">>;
84300
84327
  connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
84301
84328
  netIsAssignable: z.ZodOptional<z.ZodBoolean>;
84302
84329
  }, "strip", z.ZodTypeAny, {
84303
- fromLayer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84304
- toLayer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84305
84330
  symbol?: _tscircuit_props.SymbolProp | undefined;
84306
84331
  layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
84307
84332
  name?: string | undefined;
84333
+ layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[] | undefined;
84308
84334
  pcbX?: string | number | undefined;
84309
84335
  pcbY?: string | number | undefined;
84310
84336
  pcbLeftEdgeX?: string | number | undefined;
@@ -84354,19 +84380,18 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
84354
84380
  connectsTo?: string | string[] | undefined;
84355
84381
  holeDiameter?: number | undefined;
84356
84382
  outerDiameter?: number | undefined;
84383
+ fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
84384
+ toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
84357
84385
  netIsAssignable?: boolean | undefined;
84358
84386
  }, {
84359
- fromLayer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84360
- name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84361
- };
84362
- toLayer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84363
- name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84364
- };
84365
84387
  symbol?: _tscircuit_props.SymbolProp | undefined;
84366
84388
  layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84367
84389
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84368
84390
  } | undefined;
84369
84391
  name?: string | undefined;
84392
+ layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84393
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84394
+ })[] | undefined;
84370
84395
  pcbX?: string | number | undefined;
84371
84396
  pcbY?: string | number | undefined;
84372
84397
  pcbLeftEdgeX?: string | number | undefined;
@@ -84416,6 +84441,12 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
84416
84441
  connectsTo?: string | string[] | undefined;
84417
84442
  holeDiameter?: string | number | undefined;
84418
84443
  outerDiameter?: string | number | undefined;
84444
+ fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84445
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84446
+ } | undefined;
84447
+ toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
84448
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
84449
+ } | undefined;
84419
84450
  netIsAssignable?: boolean | undefined;
84420
84451
  }>;
84421
84452
  };
package/dist/index.js CHANGED
@@ -12618,6 +12618,14 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
12618
12618
  const cadModelProp2 = this._parsedProps.cadModel;
12619
12619
  const cadModel = cadModelProp2 === void 0 ? this._asyncFootprintCadModel : cadModelProp2;
12620
12620
  const footprint = this.getFootprinterString() ?? this._getImpliedFootprintString();
12621
+ let footprintString;
12622
+ if (typeof footprint === "string") {
12623
+ footprintString = footprint;
12624
+ }
12625
+ let footprintIsFootprinterString = false;
12626
+ if (footprintString) {
12627
+ footprintIsFootprinterString = !parseLibraryFootprintRef(footprintString) && !isHttpUrl(footprintString) && !isStaticAssetPath(footprintString);
12628
+ }
12621
12629
  if (!this.pcb_component_id) return;
12622
12630
  if (cadModel === null) return;
12623
12631
  const bounds = this._getPcbCircuitJsonBounds();
@@ -12647,7 +12655,7 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
12647
12655
  const preLayoutRotation = decomposedTransform.rotation.angle * 180 / Math.PI;
12648
12656
  const totalRotation = pcbComponent?.position_mode === "packed" ? pcbComponent.rotation ?? preLayoutRotation : preLayoutRotation;
12649
12657
  const isBottomLayer = computedLayer === "bottom";
12650
- if (!cadModel && !footprint) {
12658
+ if (!cadModel && !footprintIsFootprinterString) {
12651
12659
  const cad_component = db.cad_component.insert({
12652
12660
  position: {
12653
12661
  x: bounds.center.x,
@@ -12671,6 +12679,10 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
12671
12679
  }
12672
12680
  const rotationWithOffset = totalRotation + (rotationOffset.z ?? 0);
12673
12681
  const cadRotationZ = normalizeDegrees2(rotationWithOffset);
12682
+ let footprinterStringForCadComponent;
12683
+ if (!cadModel && footprintIsFootprinterString) {
12684
+ footprinterStringForCadComponent = footprintString;
12685
+ }
12674
12686
  const cad_model = db.cad_component.insert({
12675
12687
  // TODO z maybe depends on layer
12676
12688
  position: {
@@ -12698,7 +12710,7 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
12698
12710
  model_origin_alignment: "center_of_component_on_board_surface",
12699
12711
  anchor_alignment: "center_of_component_on_board_surface",
12700
12712
  model_origin_position: cadModel?.modelOriginPosition,
12701
- footprinter_string: typeof footprint === "string" && !cadModel ? footprint : void 0,
12713
+ footprinter_string: footprinterStringForCadComponent,
12702
12714
  show_as_translucent_model: this._parsedProps.showAsTranslucentModel
12703
12715
  });
12704
12716
  this.cad_component_id = cad_model.cad_component_id;
@@ -13645,7 +13657,8 @@ import {
13645
13657
  AssignableAutoroutingPipeline3,
13646
13658
  AutoroutingPipelineSolver3_HgPortPointPathing,
13647
13659
  AutoroutingPipelineSolver4,
13648
- AutoroutingPipelineSolver5
13660
+ AutoroutingPipelineSolver5,
13661
+ AutoroutingPipelineSolver8
13649
13662
  } from "@tscircuit/capacity-autorouter";
13650
13663
  import { CopperPourPipelineSolver } from "@tscircuit/copper-pour-solver";
13651
13664
  var SOLVERS = {
@@ -13657,6 +13670,7 @@ var SOLVERS = {
13657
13670
  AutoroutingPipelineSolver3_HgPortPointPathing,
13658
13671
  AutoroutingPipelineSolver4,
13659
13672
  AutoroutingPipelineSolver5,
13673
+ AutoroutingPipelineSolver8,
13660
13674
  CopperPourPipelineSolver
13661
13675
  };
13662
13676
 
@@ -13682,6 +13696,7 @@ var TscircuitAutorouter = class {
13682
13696
  useAssignableSolver = false,
13683
13697
  useAutoJumperSolver = false,
13684
13698
  autorouterVersion: autorouterVersion2,
13699
+ useLaserPrefabSolver = false,
13685
13700
  effort,
13686
13701
  onSolverStarted
13687
13702
  } = options;
@@ -13694,6 +13709,8 @@ var TscircuitAutorouter = class {
13694
13709
  solverName = "AutoroutingPipelineSolver4";
13695
13710
  } else if (autorouterVersion2 === "v5") {
13696
13711
  solverName = "AutoroutingPipelineSolver5";
13712
+ } else if (useLaserPrefabSolver) {
13713
+ solverName = "AutoroutingPipelineSolver8";
13697
13714
  } else if (useAutoJumperSolver) {
13698
13715
  solverName = "AssignableAutoroutingPipeline3";
13699
13716
  } else if (useAssignableSolver) {
@@ -18740,6 +18757,20 @@ function getTraceRoutingPhaseIndex(trace) {
18740
18757
  }
18741
18758
  return routingPhaseIndex;
18742
18759
  }
18760
+ function convertPortSelectorToEndpointKey(selector) {
18761
+ return selector.trim().replace(/\s*>\s*/g, ".").replace(/\s+/g, ".").replace(/^\./, "").replace(/\.\./g, ".");
18762
+ }
18763
+ function getConnectionSelectorsFromAutoroutingPhaseProps(phaseProps) {
18764
+ return [
18765
+ ...phaseProps.connection ? [phaseProps.connection] : [],
18766
+ ...phaseProps.connections ?? []
18767
+ ];
18768
+ }
18769
+ function traceHasEndpointMatchingConnectionSelector(trace, connectionSelectorEndpointKey) {
18770
+ return trace.getTracePortPathSelectors().some(
18771
+ (selector) => convertPortSelectorToEndpointKey(selector) === connectionSelectorEndpointKey
18772
+ );
18773
+ }
18743
18774
  function getAutoroutersByPhaseIndex(group) {
18744
18775
  const autoroutingPhases = group.selectAll(
18745
18776
  "autoroutingphase"
@@ -18812,7 +18843,13 @@ function Group_getRoutingPhasePlans(group) {
18812
18843
  const hasReroutePhase = Array.from(phasePropsByPhaseIndex.values()).some(
18813
18844
  (phaseProps) => phaseProps.reroute
18814
18845
  );
18815
- if (!hasDirectRoutingTargets && !hasReroutePhase) return [];
18846
+ const hasConnectionTargetedPhase = Array.from(
18847
+ phasePropsByPhaseIndex.values()
18848
+ ).some(
18849
+ (phaseProps) => getConnectionSelectorsFromAutoroutingPhaseProps(phaseProps).length > 0
18850
+ );
18851
+ if (!hasDirectRoutingTargets && !hasReroutePhase && !hasConnectionTargetedPhase)
18852
+ return [];
18816
18853
  for (const net of nets) {
18817
18854
  const routingPhaseIndex = getNetRoutingPhaseIndex(net);
18818
18855
  getOrCreateRoutingPhasePlan(plansByPhaseIndex, routingPhaseIndex).nets.push(
@@ -18827,6 +18864,30 @@ function Group_getRoutingPhasePlans(group) {
18827
18864
  ).traces.push(trace);
18828
18865
  }
18829
18866
  for (const [phaseIndex, phaseProps] of phasePropsByPhaseIndex) {
18867
+ const connectionSelectors = getConnectionSelectorsFromAutoroutingPhaseProps(phaseProps);
18868
+ if (connectionSelectors.length > 0) {
18869
+ const plan = getOrCreateRoutingPhasePlan(plansByPhaseIndex, phaseIndex);
18870
+ const connectionSelectorEndpointKeys = connectionSelectors.map(
18871
+ convertPortSelectorToEndpointKey
18872
+ );
18873
+ plan.connectionSelectors = connectionSelectors;
18874
+ for (const trace of traces) {
18875
+ if (connectionSelectorEndpointKeys.some(
18876
+ (endpointKey) => traceHasEndpointMatchingConnectionSelector(trace, endpointKey)
18877
+ )) {
18878
+ if (!phaseProps.reroute) {
18879
+ for (const existingPlan of plansByPhaseIndex.values()) {
18880
+ if (existingPlan === plan) continue;
18881
+ existingPlan.traces = existingPlan.traces.filter(
18882
+ (existingTrace) => existingTrace !== trace
18883
+ );
18884
+ }
18885
+ }
18886
+ if (plan.traces.includes(trace)) continue;
18887
+ plan.traces.push(trace);
18888
+ }
18889
+ }
18890
+ }
18830
18891
  if (phaseProps.reroute) {
18831
18892
  getOrCreateRoutingPhasePlan(plansByPhaseIndex, phaseIndex);
18832
18893
  }
@@ -18839,6 +18900,7 @@ function Group_getRoutingPhasePlans(group) {
18839
18900
  const phaseProps = phasePropsByPhaseIndex.get(plan.routingPhaseIndex);
18840
18901
  plan.reroute = phaseProps?.reroute;
18841
18902
  plan.region = phaseProps?.region;
18903
+ plan.connectionSelectors = phaseProps ? getConnectionSelectorsFromAutoroutingPhaseProps(phaseProps) : void 0;
18842
18904
  plan.drcTolerances = phaseProps ? getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) : void 0;
18843
18905
  }
18844
18906
  const defaultPhaseProps = phasePropsByPhaseIndex.get(null);
@@ -18969,6 +19031,10 @@ function connectionIsInRoutingPhase(connection, phasePlan) {
18969
19031
  if (!trace.source_trace_id) continue;
18970
19032
  if (connection.source_trace_id === trace.source_trace_id) return true;
18971
19033
  if (connection.name === trace.source_trace_id) return true;
19034
+ if (connection.rootConnectionName === trace.source_trace_id) return true;
19035
+ if (connection.mergedConnectionNames?.includes(trace.source_trace_id)) {
19036
+ return true;
19037
+ }
18972
19038
  }
18973
19039
  for (const net of phasePlan.nets) {
18974
19040
  if (!net.source_net_id) continue;
@@ -19997,20 +20063,41 @@ var Group5 = class extends NormalComponent3 {
19997
20063
  const outputTraces = [];
19998
20064
  const outputJumpers = [];
19999
20065
  const existingRerouteSeedTraces = getExistingSimplifiedPcbTracesForReroute(this);
20066
+ const traceMatchesRoutingPhase = (trace, routingPhasePlan) => {
20067
+ const connectionName = trace.connection_name ?? trace.pcb_trace_id;
20068
+ const sourceTraceIds = /* @__PURE__ */ new Set([
20069
+ connectionName,
20070
+ trace.pcb_trace_id,
20071
+ ...getSourceTraceIdsFromRerouteName(connectionName),
20072
+ ...getSourceTraceIdsFromRerouteName(trace.pcb_trace_id)
20073
+ ]);
20074
+ return baseSimpleRouteJson.connections.some((connection) => {
20075
+ if (!connectionIsInRoutingPhase(connection, routingPhasePlan)) {
20076
+ return false;
20077
+ }
20078
+ return sourceTraceIds.has(connection.name) || (connection.source_trace_id ? sourceTraceIds.has(connection.source_trace_id) : false) || (connection.rootConnectionName ? sourceTraceIds.has(connection.rootConnectionName) : false) || connection.mergedConnectionNames?.some(
20079
+ (name) => sourceTraceIds.has(name)
20080
+ );
20081
+ });
20082
+ };
20000
20083
  for (const routingPhasePlan of routingPhasePlans) {
20001
20084
  const phaseAutorouterConfig = routingPhasePlan.autorouter ? getPresetAutoroutingConfig(
20002
20085
  routingPhasePlan.autorouter,
20003
20086
  this.root?.platform
20004
20087
  ) : autorouterConfig;
20005
20088
  let simpleRouteJson = baseSimpleRouteJson;
20006
- const isReroutePhase = Boolean(
20089
+ const isRegionReroutePhase = Boolean(
20007
20090
  routingPhasePlan.reroute && routingPhasePlan.region
20008
20091
  );
20009
- const rerouteOriginalSrj = isReroutePhase ? {
20092
+ const isConnectionReroutePhase = Boolean(
20093
+ routingPhasePlan.reroute && !routingPhasePlan.region && routingPhasePlan.traces.length > 0
20094
+ );
20095
+ const isReroutePhase = isRegionReroutePhase || isConnectionReroutePhase;
20096
+ const rerouteOriginalSrj = isRegionReroutePhase ? {
20010
20097
  ...baseSimpleRouteJson,
20011
20098
  traces: [...existingRerouteSeedTraces, ...outputTraces]
20012
20099
  } : null;
20013
- if (isReroutePhase && rerouteOriginalSrj) {
20100
+ if (isRegionReroutePhase && rerouteOriginalSrj) {
20014
20101
  simpleRouteJson = getRerouteSimpleRouteJson(
20015
20102
  rerouteOriginalSrj,
20016
20103
  {
@@ -20018,6 +20105,19 @@ var Group5 = class extends NormalComponent3 {
20018
20105
  ...routingPhasePlan.region
20019
20106
  }
20020
20107
  );
20108
+ } else if (isConnectionReroutePhase) {
20109
+ simpleRouteJson = Group_filterSimpleRouteJsonForPhase(
20110
+ baseSimpleRouteJson,
20111
+ routingPhasePlan
20112
+ );
20113
+ simpleRouteJson.obstacles = [
20114
+ ...simpleRouteJson.obstacles,
20115
+ ...Group_getObstaclesFromRoutedTraces(
20116
+ outputTraces.filter(
20117
+ (trace) => !traceMatchesRoutingPhase(trace, routingPhasePlan)
20118
+ )
20119
+ )
20120
+ ];
20021
20121
  } else if (hasPhasedAutorouting) {
20022
20122
  simpleRouteJson = Group_filterSimpleRouteJsonForPhase(
20023
20123
  baseSimpleRouteJson,
@@ -20075,6 +20175,7 @@ var Group5 = class extends NormalComponent3 {
20075
20175
  targetMinCapacity: phaseAutorouterConfig.targetMinCapacity,
20076
20176
  useAssignableSolver: phaseIsLaserPrefabPreset || isSingleLayerBoard,
20077
20177
  useAutoJumperSolver: phaseIsAutoJumperPreset,
20178
+ useLaserPrefabSolver: phaseIsLaserPrefabPreset,
20078
20179
  autorouterVersion: autorouterVersion2,
20079
20180
  effort,
20080
20181
  onSolverStarted: ({ solverName, solverParams }) => this.root?.emit("solver:started", {
@@ -20109,6 +20210,16 @@ var Group5 = class extends NormalComponent3 {
20109
20210
  autorouter.start();
20110
20211
  try {
20111
20212
  const traces = await routingPromise;
20213
+ const outputSimpleRouteJson = {
20214
+ ...simpleRouteJson,
20215
+ traces
20216
+ };
20217
+ this.root?.emit("autorouting:end", {
20218
+ type: "autorouting:end",
20219
+ subcircuit_id: this.subcircuit_id,
20220
+ componentDisplayName: this.getString(),
20221
+ simpleRouteJson: outputSimpleRouteJson
20222
+ });
20112
20223
  if (autorouter.getConnectedOffboardObstacles) {
20113
20224
  const connectedOffboardObstacles = autorouter.getConnectedOffboardObstacles();
20114
20225
  createSourceTracesFromOffboardConnections({
@@ -20122,7 +20233,7 @@ var Group5 = class extends NormalComponent3 {
20122
20233
  if (solver?.getOutputJumpers) {
20123
20234
  outputJumpers.push(...solver.getOutputJumpers() || []);
20124
20235
  }
20125
- if (isReroutePhase && rerouteOriginalSrj) {
20236
+ if (isRegionReroutePhase && rerouteOriginalSrj) {
20126
20237
  const reconnectedSrj = reconnectReroutedSimpleRouteJsonRegion(
20127
20238
  rerouteOriginalSrj,
20128
20239
  {
@@ -20135,6 +20246,15 @@ var Group5 = class extends NormalComponent3 {
20135
20246
  outputTraces.length,
20136
20247
  ...reconnectedSrj.traces ?? []
20137
20248
  );
20249
+ } else if (isConnectionReroutePhase) {
20250
+ outputTraces.splice(
20251
+ 0,
20252
+ outputTraces.length,
20253
+ ...outputTraces.filter(
20254
+ (trace) => !traceMatchesRoutingPhase(trace, routingPhasePlan)
20255
+ ),
20256
+ ...traces
20257
+ );
20138
20258
  } else {
20139
20259
  outputTraces.push(...traces);
20140
20260
  }
@@ -21388,7 +21508,7 @@ import { identity as identity5 } from "transformation-matrix";
21388
21508
  var package_default = {
21389
21509
  name: "@tscircuit/core",
21390
21510
  type: "module",
21391
- version: "0.0.1257",
21511
+ version: "0.0.1261",
21392
21512
  types: "dist/index.d.ts",
21393
21513
  main: "dist/index.js",
21394
21514
  module: "dist/index.js",
@@ -21420,7 +21540,7 @@ var package_default = {
21420
21540
  "@biomejs/biome": "^1.8.3",
21421
21541
  "@resvg/resvg-js": "^2.6.2",
21422
21542
  "@tscircuit/alphabet": "0.0.25",
21423
- "@tscircuit/capacity-autorouter": "^0.0.523",
21543
+ "@tscircuit/capacity-autorouter": "^0.0.529",
21424
21544
  "@tscircuit/checks": "0.0.130",
21425
21545
  "@tscircuit/circuit-json-util": "^0.0.94",
21426
21546
  "@tscircuit/common": "^0.0.20",
@@ -21435,7 +21555,7 @@ var package_default = {
21435
21555
  "@tscircuit/math-utils": "^0.0.36",
21436
21556
  "@tscircuit/miniflex": "^0.0.4",
21437
21557
  "@tscircuit/ngspice-spice-engine": "^0.0.8",
21438
- "@tscircuit/props": "^0.0.531",
21558
+ "@tscircuit/props": "^0.0.536",
21439
21559
  "@tscircuit/schematic-match-adapt": "^0.0.16",
21440
21560
  "@tscircuit/schematic-trace-solver": "^0.0.57",
21441
21561
  "@tscircuit/solver-utils": "^0.0.3",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.1258",
4
+ "version": "0.0.1262",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  "@biomejs/biome": "^1.8.3",
34
34
  "@resvg/resvg-js": "^2.6.2",
35
35
  "@tscircuit/alphabet": "0.0.25",
36
- "@tscircuit/capacity-autorouter": "^0.0.523",
36
+ "@tscircuit/capacity-autorouter": "^0.0.529",
37
37
  "@tscircuit/checks": "0.0.130",
38
38
  "@tscircuit/circuit-json-util": "^0.0.94",
39
39
  "@tscircuit/common": "^0.0.20",
@@ -48,7 +48,7 @@
48
48
  "@tscircuit/math-utils": "^0.0.36",
49
49
  "@tscircuit/miniflex": "^0.0.4",
50
50
  "@tscircuit/ngspice-spice-engine": "^0.0.8",
51
- "@tscircuit/props": "^0.0.531",
51
+ "@tscircuit/props": "^0.0.536",
52
52
  "@tscircuit/schematic-match-adapt": "^0.0.16",
53
53
  "@tscircuit/schematic-trace-solver": "^0.0.57",
54
54
  "@tscircuit/solver-utils": "^0.0.3",