@tscircuit/core 0.0.697 → 0.0.699

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
@@ -868,12 +868,18 @@ declare const portProps: z.ZodObject<{
868
868
  name: z.ZodOptional<z.ZodString>;
869
869
  pinNumber: z.ZodOptional<z.ZodNumber>;
870
870
  aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
871
+ layer: z.ZodOptional<z.ZodString>;
872
+ layers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
871
873
  }, "strip", z.ZodTypeAny, {
872
874
  name?: string | undefined;
875
+ layer?: string | undefined;
876
+ layers?: string[] | undefined;
873
877
  pinNumber?: number | undefined;
874
878
  aliases?: string[] | undefined;
875
879
  }, {
876
880
  name?: string | undefined;
881
+ layer?: string | undefined;
882
+ layers?: string[] | undefined;
877
883
  pinNumber?: number | undefined;
878
884
  aliases?: string[] | undefined;
879
885
  }>;
@@ -891,12 +897,18 @@ declare class Port extends PrimitiveComponent<typeof portProps> {
891
897
  name: z.ZodOptional<z.ZodString>;
892
898
  pinNumber: z.ZodOptional<z.ZodNumber>;
893
899
  aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
900
+ layer: z.ZodOptional<z.ZodString>;
901
+ layers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
894
902
  }, "strip", z.ZodTypeAny, {
895
903
  name?: string | undefined;
904
+ layer?: string | undefined;
905
+ layers?: string[] | undefined;
896
906
  pinNumber?: number | undefined;
897
907
  aliases?: string[] | undefined;
898
908
  }, {
899
909
  name?: string | undefined;
910
+ layer?: string | undefined;
911
+ layers?: string[] | undefined;
900
912
  pinNumber?: number | undefined;
901
913
  aliases?: string[] | undefined;
902
914
  }>;
@@ -13325,52 +13337,54 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
13325
13337
  pcb_via_id: string | null;
13326
13338
  matchedPort: Port | null;
13327
13339
  isPcbPrimitive: boolean;
13340
+ source_manually_placed_via_id: string | null;
13341
+ constructor(props: z.input<typeof viaProps>);
13328
13342
  get config(): {
13329
13343
  componentName: string;
13330
- zodProps: zod.ZodObject<{
13331
- pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
13332
- pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
13333
- pcbRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
13334
- schX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
13335
- schY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
13336
- schRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
13337
- layer: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
13338
- name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
13339
- }, "strip", zod.ZodTypeAny, {
13344
+ zodProps: z.ZodObject<{
13345
+ pcbX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
13346
+ pcbY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
13347
+ pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
13348
+ schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
13349
+ schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
13350
+ schRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
13351
+ layer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
13352
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
13353
+ }, "strip", z.ZodTypeAny, {
13340
13354
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13341
13355
  }, {
13342
13356
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13343
13357
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
13344
13358
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13345
13359
  }>>;
13346
- footprint: zod.ZodOptional<zod.ZodType<_tscircuit_props.FootprintProp, zod.ZodTypeDef, _tscircuit_props.FootprintProp>>;
13347
- relative: zod.ZodOptional<zod.ZodBoolean>;
13348
- schRelative: zod.ZodOptional<zod.ZodBoolean>;
13349
- pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
13360
+ footprint: z.ZodOptional<z.ZodType<_tscircuit_props.FootprintProp, z.ZodTypeDef, _tscircuit_props.FootprintProp>>;
13361
+ relative: z.ZodOptional<z.ZodBoolean>;
13362
+ schRelative: z.ZodOptional<z.ZodBoolean>;
13363
+ pcbRelative: z.ZodOptional<z.ZodBoolean>;
13350
13364
  } & {
13351
- name: zod.ZodOptional<zod.ZodString>;
13352
- fromLayer: zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
13353
- name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
13354
- }, "strip", zod.ZodTypeAny, {
13365
+ name: z.ZodOptional<z.ZodString>;
13366
+ fromLayer: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
13367
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
13368
+ }, "strip", z.ZodTypeAny, {
13355
13369
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13356
13370
  }, {
13357
13371
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13358
13372
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
13359
13373
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13360
13374
  }>;
13361
- toLayer: zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
13362
- name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
13363
- }, "strip", zod.ZodTypeAny, {
13375
+ toLayer: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
13376
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
13377
+ }, "strip", z.ZodTypeAny, {
13364
13378
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13365
13379
  }, {
13366
13380
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13367
13381
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
13368
13382
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
13369
13383
  }>;
13370
- holeDiameter: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
13371
- outerDiameter: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
13372
- connectsTo: zod.ZodOptional<zod.ZodUnion<[zod.ZodString, zod.ZodArray<zod.ZodString, "many">]>>;
13373
- }, "strip", zod.ZodTypeAny, {
13384
+ holeDiameter: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
13385
+ outerDiameter: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
13386
+ connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
13387
+ }, "strip", z.ZodTypeAny, {
13374
13388
  holeDiameter: number;
13375
13389
  outerDiameter: number;
13376
13390
  fromLayer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
@@ -13437,6 +13451,10 @@ declare class Via extends PrimitiveComponent<typeof viaProps> {
13437
13451
  x: number;
13438
13452
  y: number;
13439
13453
  }): void;
13454
+ _getLayers(): LayerRef[];
13455
+ initPorts(): void;
13456
+ doInitialPcbComponentRender(): void;
13457
+ doInitialSourceRender(): void;
13440
13458
  doInitialPcbPrimitiveRender(): void;
13441
13459
  }
13442
13460
 
package/dist/index.js CHANGED
@@ -3037,7 +3037,9 @@ var getCenterOfPcbPrimitives = (pcbPrimitives) => {
3037
3037
  var portProps = z6.object({
3038
3038
  name: z6.string().optional(),
3039
3039
  pinNumber: z6.number().optional(),
3040
- aliases: z6.array(z6.string()).optional()
3040
+ aliases: z6.array(z6.string()).optional(),
3041
+ layer: z6.string().optional(),
3042
+ layers: z6.array(z6.string()).optional()
3041
3043
  });
3042
3044
  var Port = class extends PrimitiveComponent2 {
3043
3045
  source_port_id = null;
@@ -3217,6 +3219,9 @@ var Port = class extends PrimitiveComponent2 {
3217
3219
  return `.${this.parent?.props.name} > port.${this.props.name}`;
3218
3220
  }
3219
3221
  getAvailablePcbLayers() {
3222
+ const { layer, layers } = this._parsedProps;
3223
+ if (layers) return layers;
3224
+ if (layer) return [layer];
3220
3225
  return Array.from(
3221
3226
  new Set(this.matchedComponents.flatMap((c) => c.getAvailablePcbLayers()))
3222
3227
  );
@@ -8104,7 +8109,10 @@ var getSimpleRouteJsonFromCircuitJson = ({
8104
8109
  };
8105
8110
  }
8106
8111
  }
8107
- const directTraceConnections = db.source_trace.list().map((trace) => {
8112
+ const routedTraceIds = new Set(
8113
+ db.pcb_trace.list().map((t) => t.source_trace_id).filter((id) => Boolean(id))
8114
+ );
8115
+ const directTraceConnections = db.source_trace.list().filter((trace) => !routedTraceIds.has(trace.source_trace_id)).map((trace) => {
8108
8116
  const connectedPorts = trace.connected_source_port_ids.map((id) => {
8109
8117
  const source_port = db.source_port.get(id);
8110
8118
  const pcb_port = db.pcb_port.getWhere({ source_port_id: id });
@@ -13261,10 +13269,18 @@ var SilkscreenLine = class extends PrimitiveComponent2 {
13261
13269
 
13262
13270
  // lib/components/primitive-components/Via.ts
13263
13271
  import { viaProps } from "@tscircuit/props";
13272
+ import "zod";
13264
13273
  var Via = class extends PrimitiveComponent2 {
13265
13274
  pcb_via_id = null;
13266
13275
  matchedPort = null;
13267
13276
  isPcbPrimitive = true;
13277
+ source_manually_placed_via_id = null;
13278
+ constructor(props) {
13279
+ super(props);
13280
+ const layers = this._getLayers();
13281
+ this._parsedProps.layers = layers;
13282
+ this.initPorts();
13283
+ }
13268
13284
  get config() {
13269
13285
  return {
13270
13286
  componentName: "Via",
@@ -13301,6 +13317,51 @@ var Via = class extends PrimitiveComponent2 {
13301
13317
  y: newCenter.y
13302
13318
  });
13303
13319
  }
13320
+ _getLayers() {
13321
+ const { fromLayer = "top", toLayer = "bottom" } = this._parsedProps;
13322
+ if (fromLayer === toLayer) return [fromLayer];
13323
+ return [fromLayer, toLayer];
13324
+ }
13325
+ initPorts() {
13326
+ const layers = this._parsedProps.layers;
13327
+ for (const layer of layers) {
13328
+ const port2 = new Port({ name: layer, layer });
13329
+ port2.registerMatch(this);
13330
+ this.add(port2);
13331
+ }
13332
+ const port = new Port({ name: "pin1" });
13333
+ port.registerMatch(this);
13334
+ this.add(port);
13335
+ }
13336
+ doInitialPcbComponentRender() {
13337
+ if (this.root?.pcbDisabled) return;
13338
+ const { db } = this.root;
13339
+ const { _parsedProps: props } = this;
13340
+ const position = this._getGlobalPcbPositionBeforeLayout();
13341
+ const subcircuit = this.getSubcircuit();
13342
+ const pcb_component = db.pcb_component.insert({
13343
+ center: position,
13344
+ width: props.outerDiameter,
13345
+ height: props.outerDiameter,
13346
+ layer: props.fromLayer ?? "top",
13347
+ rotation: 0,
13348
+ source_component_id: this.source_component_id,
13349
+ subcircuit_id: subcircuit?.subcircuit_id ?? void 0
13350
+ });
13351
+ this.pcb_component_id = pcb_component.pcb_component_id;
13352
+ }
13353
+ doInitialSourceRender() {
13354
+ const { db } = this.root;
13355
+ const { _parsedProps: props } = this;
13356
+ const group = this.getGroup();
13357
+ const subcircuit = this.getSubcircuit();
13358
+ const source_via = db.source_manually_placed_via.insert({
13359
+ source_group_id: group?.source_group_id,
13360
+ source_net_id: props.net ?? "",
13361
+ subcircuit_id: subcircuit?.subcircuit_id ?? void 0
13362
+ });
13363
+ this.source_component_id = source_via.source_manually_placed_via_id;
13364
+ }
13304
13365
  doInitialPcbPrimitiveRender() {
13305
13366
  if (this.root?.pcbDisabled) return;
13306
13367
  const { db } = this.root;
@@ -14296,7 +14357,7 @@ import { identity as identity6 } from "transformation-matrix";
14296
14357
  var package_default = {
14297
14358
  name: "@tscircuit/core",
14298
14359
  type: "module",
14299
- version: "0.0.696",
14360
+ version: "0.0.698",
14300
14361
  types: "dist/index.d.ts",
14301
14362
  main: "dist/index.js",
14302
14363
  module: "dist/index.js",
@@ -14349,7 +14410,7 @@ var package_default = {
14349
14410
  "bun-match-svg": "0.0.12",
14350
14411
  "calculate-elbow": "^0.0.11",
14351
14412
  "chokidar-cli": "^3.0.0",
14352
- "circuit-json": "^0.0.242",
14413
+ "circuit-json": "^0.0.245",
14353
14414
  "circuit-json-to-bpc": "^0.0.13",
14354
14415
  "circuit-json-to-connectivity-map": "^0.0.22",
14355
14416
  "circuit-json-to-simple-3d": "^0.0.6",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.697",
4
+ "version": "0.0.699",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -54,7 +54,7 @@
54
54
  "bun-match-svg": "0.0.12",
55
55
  "calculate-elbow": "^0.0.11",
56
56
  "chokidar-cli": "^3.0.0",
57
- "circuit-json": "^0.0.242",
57
+ "circuit-json": "^0.0.245",
58
58
  "circuit-json-to-bpc": "^0.0.13",
59
59
  "circuit-json-to-connectivity-map": "^0.0.22",
60
60
  "circuit-json-to-simple-3d": "^0.0.6",