@tscircuit/cli 0.1.2252 → 0.1.2254

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.
@@ -34321,6 +34321,7 @@ function getPlatformConfigWithCliDefaults(userConfig, options) {
34321
34321
  const cacheDir = path9.join(projectDir, ".tscircuit", "cache");
34322
34322
  const defaultConfig = {
34323
34323
  ...basePlatformConfig,
34324
+ checkAvailability: true,
34324
34325
  localCacheEngine: createLocalCacheEngine(cacheDir),
34325
34326
  footprintFileParserMap: {
34326
34327
  ...basePlatformConfig.footprintFileParserMap,
package/dist/cli/main.js CHANGED
@@ -172569,7 +172569,7 @@ var import_perfect_cli = __toESM3(require_dist3(), 1);
172569
172569
  // lib/getVersion.ts
172570
172570
  import { createRequire as createRequire2 } from "node:module";
172571
172571
  // package.json
172572
- var version = "0.1.2251";
172572
+ var version = "0.1.2253";
172573
172573
  var package_default = {
172574
172574
  name: "@tscircuit/cli",
172575
172575
  version,
@@ -172589,15 +172589,16 @@ var package_default = {
172589
172589
  "@tscircuit/circuit-json-placement-analysis": "^0.0.15",
172590
172590
  "@tscircuit/circuit-json-routing-analysis": "^0.0.8",
172591
172591
  "@tscircuit/circuit-json-schematic-placement-analysis": "https://jscdn.tscircuit.com/@tscircuit/circuit-json-schematic-placement-analysis/0.0.33.tgz",
172592
- "@tscircuit/circuit-json-util": "^0.0.116",
172593
- "@tscircuit/eval": "0.0.1538",
172592
+ "@tscircuit/circuit-json-util": "^0.0.120",
172593
+ "@tscircuit/eval": "0.0.1569",
172594
172594
  "@tscircuit/fake-snippets": "^0.0.182",
172595
172595
  "@tscircuit/file-server": "^0.0.32",
172596
172596
  "@tscircuit/footprinter": "^0.0.430",
172597
172597
  "@tscircuit/image-utils": "^0.0.8",
172598
172598
  "@tscircuit/krt-wasm": "^0.1.6",
172599
172599
  "@tscircuit/math-utils": "0.0.36",
172600
- "@tscircuit/props": "^0.0.666",
172600
+ "@tscircuit/modelprinter": "^0.0.11",
172601
+ "@tscircuit/props": "^0.0.694",
172601
172602
  "@tscircuit/runframe": "^0.0.2915",
172602
172603
  "@tscircuit/schematic-match-adapt": "^0.0.22",
172603
172604
  "@tscircuit/schematic-trace-solver": "^0.0.204",
@@ -172613,7 +172614,7 @@ var package_default = {
172613
172614
  "@types/semver": "^7.5.8",
172614
172615
  "bun-match-svg": "^0.0.12",
172615
172616
  chokidar: "4.0.1",
172616
- "circuit-json": "^0.0.515",
172617
+ "circuit-json": "^0.0.520",
172617
172618
  "circuit-json-to-3d-png": "^0.0.6",
172618
172619
  "circuit-json-to-altium": "github:tscircuit/circuit-json-to-altium#1a50d0dd2c0737cf940d92c0315852dc0111dd87",
172619
172620
  "circuit-json-to-bom-csv": "^0.0.19",
@@ -172671,7 +172672,7 @@ var package_default = {
172671
172672
  zod: "^3.23.8"
172672
172673
  },
172673
172674
  peerDependencies: {
172674
- "circuit-json": "^0.0.515",
172675
+ "circuit-json": "^0.0.520",
172675
172676
  tscircuit: "*"
172676
172677
  },
172677
172678
  bin: {
@@ -172688,9 +172689,10 @@ var package_default = {
172688
172689
  }
172689
172690
  },
172690
172691
  overrides: {
172691
- "circuit-json": "^0.0.515",
172692
+ "circuit-json": "^0.0.520",
172692
172693
  altiumts: "0.0.59",
172693
- poppygl: "0.0.34"
172694
+ poppygl: "0.0.34",
172695
+ "@tscircuit/core": "^0.0.2104"
172694
172696
  },
172695
172697
  scripts: {
172696
172698
  start: "bun run dev",
@@ -185168,6 +185170,7 @@ function getPlatformConfigWithCliDefaults(userConfig, options) {
185168
185170
  const cacheDir = path20.join(projectDir, ".tscircuit", "cache");
185169
185171
  const defaultConfig = {
185170
185172
  ...basePlatformConfig,
185173
+ checkAvailability: true,
185171
185174
  localCacheEngine: createLocalCacheEngine(cacheDir),
185172
185175
  footprintFileParserMap: {
185173
185176
  ...basePlatformConfig.footprintFileParserMap,
@@ -367941,7 +367944,98 @@ var convertBomRowsToCsv = (bom_rows) => {
367941
367944
  // lib/shared/export-snippet.ts
367942
367945
  init_dist2();
367943
367946
  import { convertCircuitJsonToGltf as convertCircuitJsonToGltf4 } from "circuit-json-to-gltf";
367944
- import { convertCircuitJsonToPickAndPlaceCsv } from "circuit-json-to-pnp-csv";
367947
+
367948
+ // node_modules/circuit-json-to-pnp-csv/dist/index.js
367949
+ var import_papaparse2 = __toESM3(require_papaparse(), 1);
367950
+ import { su as su14 } from "@tscircuit/soup-util";
367951
+ import {
367952
+ getRotationBetweenPcbPin1Locations as getRotationBetweenPcbPin1Locations2
367953
+ } from "circuit-json";
367954
+ import { analyzePcbPin1Location } from "@tscircuit/circuit-json-util";
367955
+ import {
367956
+ getRotationBetweenPcbPin1Locations,
367957
+ pcb_pin1_location
367958
+ } from "circuit-json";
367959
+ var isBareMountingHole2 = (circuitJson, source, pcb) => {
367960
+ if (source.ftype !== "simple_chip")
367961
+ return false;
367962
+ if (source.manufacturer_part_number?.trim())
367963
+ return false;
367964
+ if (Object.values(source.supplier_part_numbers ?? {}).some((numbers) => numbers?.some((number) => number.trim())))
367965
+ return false;
367966
+ if (circuitJson.some((element) => element.type === "cad_component" && element.pcb_component_id === pcb.pcb_component_id && (element.model_obj_url || element.model_stl_url || element.model_3mf_url || element.model_gltf_url || element.model_glb_url || element.model_step_url || element.model_wrl_url || element.model_jscad)))
367967
+ return false;
367968
+ const geometry = circuitJson.filter((element) => (element.type === "pcb_plated_hole" || element.type === "pcb_hole" || element.type === "pcb_smtpad") && element.pcb_component_id === pcb.pcb_component_id);
367969
+ return geometry.length === 1 && (geometry[0].type === "pcb_plated_hole" || geometry[0].type === "pcb_hole");
367970
+ };
367971
+ var fixedDecimals = 3;
367972
+ var normalizeRotation2 = (rotation) => (rotation % 360 + 360) % 360;
367973
+ var getPickAndPlaceRotation = (pcbComponent, designator, opts) => {
367974
+ const { supplier } = opts;
367975
+ if (!supplier)
367976
+ return pcbComponent.rotation;
367977
+ const unresolved = (reason) => {
367978
+ const message = `${designator}: cannot verify ${supplier} pick-and-place rotation (${reason}); PCB rotation ${pcbComponent.rotation} is unverified.`;
367979
+ if (opts.requireSupplierRotation)
367980
+ throw new Error(message);
367981
+ const warning = {
367982
+ designator,
367983
+ pcb_component_id: pcbComponent.pcb_component_id,
367984
+ supplier,
367985
+ reason,
367986
+ message
367987
+ };
367988
+ if (opts.onRotationWarning)
367989
+ opts.onRotationWarning(warning);
367990
+ else
367991
+ console.warn(message);
367992
+ return pcbComponent.rotation;
367993
+ };
367994
+ if (!pcbComponent.pin1_location)
367995
+ return unresolved("missing_pin1_location");
367996
+ const supplierPin1Location = pcbComponent.supplier_pin1_location_map?.[supplier];
367997
+ if (!supplierPin1Location)
367998
+ return unresolved("missing_supplier_pin1_location");
367999
+ const rotationAdjustment = getRotationBetweenPcbPin1Locations2(supplierPin1Location, pcbComponent.pin1_location);
368000
+ if (rotationAdjustment === null)
368001
+ return unresolved("incompatible_pin1_locations");
368002
+ return normalizeRotation2(pcbComponent.rotation + rotationAdjustment);
368003
+ };
368004
+ var convertCircuitJsonToPickAndPlaceRows = (circuitJson, opts = {}) => {
368005
+ if (opts.requireSupplierRotation && !opts.supplier) {
368006
+ throw new Error("requireSupplierRotation requires a supplier");
368007
+ }
368008
+ const rows = [];
368009
+ for (const element of circuitJson) {
368010
+ if (element.type === "pcb_component") {
368011
+ if (element.do_not_place)
368012
+ continue;
368013
+ const source_component = su14(circuitJson).source_component.get(element.source_component_id);
368014
+ if (!source_component)
368015
+ continue;
368016
+ if (source_component.ftype === "simple_test_point")
368017
+ continue;
368018
+ if (isBareMountingHole2(circuitJson, source_component, element))
368019
+ continue;
368020
+ const designator = source_component.name ?? element.pcb_component_id;
368021
+ rows.push({
368022
+ designator,
368023
+ mid_x: element.center.x,
368024
+ mid_y: element.center.y * (opts.flip_y_axis ? -1 : 1),
368025
+ layer: element.layer,
368026
+ rotation: getPickAndPlaceRotation(element, designator, opts)
368027
+ });
368028
+ }
368029
+ }
368030
+ return rows;
368031
+ };
368032
+ var convertCircuitJsonToPickAndPlaceCsv = (circuitJson, opts = {}) => import_papaparse2.default.unparse(convertCircuitJsonToPickAndPlaceRows(circuitJson, opts).map((row) => ({
368033
+ Designator: row.designator,
368034
+ "Mid X": row.mid_x.toFixed(fixedDecimals),
368035
+ "Mid Y": row.mid_y.toFixed(fixedDecimals),
368036
+ Layer: row.layer,
368037
+ Rotation: row.rotation
368038
+ })));
367945
368039
 
367946
368040
  // node_modules/manifold-3d/manifold.js
367947
368041
  async function Module2(moduleArg = {}) {
@@ -371336,7 +371430,7 @@ import {
371336
371430
  } from "circuit-to-svg";
371337
371431
 
371338
371432
  // node_modules/dsn-converter/dist/index.js
371339
- import { su as su14 } from "@tscircuit/soup-util";
371433
+ import { su as su15 } from "@tscircuit/soup-util";
371340
371434
  import { getBoundsFromPoints as getBoundsFromPoints5 } from "@tscircuit/math-utils";
371341
371435
  import { applyToPoint as applyToPoint99, scale as scale11 } from "transformation-matrix";
371342
371436
  import { su as su25 } from "@tscircuit/soup-util";
@@ -371745,8 +371839,8 @@ function processComponentsAndPads(componentGroups, circuitElements, pcb) {
371745
371839
  const { pcb_component_id, pcb_smtpads } = group;
371746
371840
  if (pcb_smtpads.length === 0)
371747
371841
  continue;
371748
- const pcbComponent = su14(circuitElements).pcb_component.list().find((e) => e.pcb_component_id === pcb_component_id);
371749
- const sourceComponent = su14(circuitElements).source_component.list().find((e) => e.source_component_id === pcbComponent?.source_component_id);
371842
+ const pcbComponent = su15(circuitElements).pcb_component.list().find((e) => e.pcb_component_id === pcb_component_id);
371843
+ const sourceComponent = su15(circuitElements).source_component.list().find((e) => e.source_component_id === pcbComponent?.source_component_id);
371750
371844
  const footprintName = getFootprintName(sourceComponent, pcbComponent);
371751
371845
  const componentName = sourceComponent?.name || "Unknown";
371752
371846
  const circuitSpaceCoordinates = applyToPoint99(transformMmToUm, pcbComponent.center);
@@ -371781,8 +371875,8 @@ function processComponentsAndPads(componentGroups, circuitElements, pcb) {
371781
371875
  outlines: [],
371782
371876
  pins: componentGroup.pcb_smtpads.map((pad) => {
371783
371877
  const pcbComponent = circuitElements.find((e) => e.type === "pcb_component" && e.source_component_id === firstComponent.sourceComponent?.source_component_id);
371784
- const pcbPort = su14(circuitElements).pcb_port.list().find((e) => e.pcb_port_id === pad.pcb_port_id);
371785
- const sourcePort = su14(circuitElements).source_port.list().find((e) => e.source_port_id === pcbPort?.source_port_id);
371878
+ const pcbPort = su15(circuitElements).pcb_port.list().find((e) => e.pcb_port_id === pad.pcb_port_id);
371879
+ const sourcePort = su15(circuitElements).source_port.list().find((e) => e.source_port_id === pcbPort?.source_port_id);
371786
371880
  return createPinForImage({
371787
371881
  pad,
371788
371882
  pcbComponent,
@@ -374551,7 +374645,7 @@ __export5(dist_exports, {
374551
374645
  experiment_type: () => experiment_type,
374552
374646
  external_footprint_load_error: () => external_footprint_load_error2,
374553
374647
  frequency: () => frequency7,
374554
- getRotationBetweenPcbPin1Locations: () => getRotationBetweenPcbPin1Locations,
374648
+ getRotationBetweenPcbPin1Locations: () => getRotationBetweenPcbPin1Locations3,
374555
374649
  getZodPrefixedIdWithDefault: () => getZodPrefixedIdWithDefault,
374556
374650
  inductance: () => inductance2,
374557
374651
  insertionDirectionToCanonical: () => insertionDirectionToCanonical,
@@ -374644,7 +374738,7 @@ __export5(dist_exports, {
374644
374738
  pcb_pad_trace_clearance_error: () => pcb_pad_trace_clearance_error,
374645
374739
  pcb_panel: () => pcb_panel,
374646
374740
  pcb_panelization_placement_error: () => pcb_panelization_placement_error,
374647
- pcb_pin1_location: () => pcb_pin1_location,
374741
+ pcb_pin1_location: () => pcb_pin1_location2,
374648
374742
  pcb_placement_error: () => pcb_placement_error,
374649
374743
  pcb_plated_hole: () => pcb_plated_hole,
374650
374744
  pcb_port: () => pcb_port,
@@ -380435,7 +380529,7 @@ var insertion_direction = external_exports2.enum([
380435
380529
  ]).transform((value) => insertionDirectionToCanonical[value]).describe('The side exposing the receptacle where the cable or mating part is attached, following the 2D PCB diagram convention, not a 3D viewport frame. In project coordinate space, "from_top" is +Y, "from_bottom" -Y, "from_left" -X, "from_right" +X, "from_above" +Z and "from_below" -Z. A receptacle on the +Y edge is "from_top" even though the plug moves in -Y as it seats. Cartesian spellings such as "from_y_pos" are accepted and normalized to the named values, as are the deprecated "from_front" (now "from_top") and "from_back" (now "from_bottom").');
380436
380530
  expectTypesMatch2(true);
380437
380531
  expectTypesMatch2(true);
380438
- var pcb_pin1_location = external_exports2.enum([
380532
+ var pcb_pin1_location2 = external_exports2.enum([
380439
380533
  "leftside_top",
380440
380534
  "leftside_bottom",
380441
380535
  "rightside_top",
@@ -380460,7 +380554,7 @@ var pin1LocationRotationCycles = [
380460
380554
  "topside_left"
380461
380555
  ]
380462
380556
  ];
380463
- var getRotationBetweenPcbPin1Locations = (from, to) => {
380557
+ var getRotationBetweenPcbPin1Locations3 = (from, to) => {
380464
380558
  for (const cycle of pin1LocationRotationCycles) {
380465
380559
  const fromIndex = cycle.indexOf(from);
380466
380560
  const toIndex = cycle.indexOf(to);
@@ -380528,8 +380622,8 @@ var pcb_component = external_exports2.object({
380528
380622
  positioned_relative_to_pcb_board_id: external_exports2.string().optional(),
380529
380623
  cable_insertion_center: point9.optional(),
380530
380624
  insertion_direction: insertion_direction.optional(),
380531
- pin1_location: pcb_pin1_location.optional().describe("Location of pin 1 on the unrotated, top-view component footprint"),
380532
- supplier_pin1_location_map: external_exports2.record(supplier_name3, pcb_pin1_location).optional().describe("Pin 1 location for each supplier's unrotated, top-view footprint"),
380625
+ pin1_location: pcb_pin1_location2.optional().describe("Location of pin 1 on the unrotated, top-view component footprint"),
380626
+ supplier_pin1_location_map: external_exports2.record(supplier_name3, pcb_pin1_location2).optional().describe("Pin 1 location for each supplier's unrotated, top-view footprint"),
380533
380627
  metadata: external_exports2.object({
380534
380628
  kicad_footprint: kicadFootprintMetadata2.optional()
380535
380629
  }).optional(),
@@ -389084,7 +389178,7 @@ var cju8 = (circuitJsonInput, options = {}) => {
389084
389178
  return su2;
389085
389179
  };
389086
389180
  cju8.unparsed = cju8;
389087
- var su15 = cju8;
389181
+ var su16 = cju8;
389088
389182
  function createIdKey2(element) {
389089
389183
  const type = element.type;
389090
389184
  return `${type}:${element[`${type}_id`]}`;
@@ -392790,26 +392884,26 @@ var getLayerAttr = (layer) => layer && layer !== "top" ? ` layer="${layer}"` : "
392790
392884
  var getRotationAttr = (rotation2) => rotation2 ? ` pcbRotation="${rotation2}deg"` : "";
392791
392885
  var getStringAttr = (name, value) => value === undefined ? "" : ` ${name}=${JSON.stringify(value)}`;
392792
392886
  var generateFootprintTsx2 = (circuitJson, options = {}) => {
392793
- const holes = su15(circuitJson).pcb_hole.list();
392794
- const platedHoles = su15(circuitJson).pcb_plated_hole.list();
392795
- const smtPads = su15(circuitJson).pcb_smtpad.list();
392796
- const vias = su15(circuitJson).pcb_via.list();
392797
- const silkscreenPaths = su15(circuitJson).pcb_silkscreen_path.list();
392798
- const silkscreenCircles = su15(circuitJson).pcb_silkscreen_circle.list();
392799
- const silkscreenRects = su15(circuitJson).pcb_silkscreen_rect.list();
392800
- const silkscreenTexts = su15(circuitJson).pcb_silkscreen_text.list();
392801
- const fabricationNotePaths = su15(circuitJson).pcb_fabrication_note_path.list();
392802
- const fabricationNoteTexts = su15(circuitJson).pcb_fabrication_note_text.list();
392803
- const fabricationNoteRects = su15(circuitJson).pcb_fabrication_note_rect.list();
392804
- const fabricationNoteDimensions = su15(circuitJson).pcb_fabrication_note_dimension.list();
392805
- const pcbNoteTexts = su15(circuitJson).pcb_note_text.list();
392806
- const pcbNoteRects = su15(circuitJson).pcb_note_rect.list();
392807
- const pcbNotePaths = su15(circuitJson).pcb_note_path.list();
392808
- const pcbNoteLines = su15(circuitJson).pcb_note_line.list();
392809
- const pcbNoteDimensions = su15(circuitJson).pcb_note_dimension.list();
392810
- const courtyardOutlines = su15(circuitJson).pcb_courtyard_outline.list();
392887
+ const holes = su16(circuitJson).pcb_hole.list();
392888
+ const platedHoles = su16(circuitJson).pcb_plated_hole.list();
392889
+ const smtPads = su16(circuitJson).pcb_smtpad.list();
392890
+ const vias = su16(circuitJson).pcb_via.list();
392891
+ const silkscreenPaths = su16(circuitJson).pcb_silkscreen_path.list();
392892
+ const silkscreenCircles = su16(circuitJson).pcb_silkscreen_circle.list();
392893
+ const silkscreenRects = su16(circuitJson).pcb_silkscreen_rect.list();
392894
+ const silkscreenTexts = su16(circuitJson).pcb_silkscreen_text.list();
392895
+ const fabricationNotePaths = su16(circuitJson).pcb_fabrication_note_path.list();
392896
+ const fabricationNoteTexts = su16(circuitJson).pcb_fabrication_note_text.list();
392897
+ const fabricationNoteRects = su16(circuitJson).pcb_fabrication_note_rect.list();
392898
+ const fabricationNoteDimensions = su16(circuitJson).pcb_fabrication_note_dimension.list();
392899
+ const pcbNoteTexts = su16(circuitJson).pcb_note_text.list();
392900
+ const pcbNoteRects = su16(circuitJson).pcb_note_rect.list();
392901
+ const pcbNotePaths = su16(circuitJson).pcb_note_path.list();
392902
+ const pcbNoteLines = su16(circuitJson).pcb_note_line.list();
392903
+ const pcbNoteDimensions = su16(circuitJson).pcb_note_dimension.list();
392904
+ const courtyardOutlines = su16(circuitJson).pcb_courtyard_outline.list();
392811
392905
  const elementStrings = [];
392812
- for (const cutout of su15(circuitJson).pcb_cutout.list()) {
392906
+ for (const cutout of su16(circuitJson).pcb_cutout.list()) {
392813
392907
  if (cutout.shape === "polygon") {
392814
392908
  elementStrings.push(`<cutout shape="polygon" points={${JSON.stringify(cutout.points)}} />`);
392815
392909
  }
@@ -393524,7 +393618,7 @@ var convertBetterEasyToTsx = async ({
393524
393618
  cadModelBounds: cadPlacement?.bounds,
393525
393619
  showDesignator: true
393526
393620
  });
393527
- const [cadComponent] = su15(circuitJson).cad_component.list();
393621
+ const [cadComponent] = su16(circuitJson).cad_component.list();
393528
393622
  if (cadComponent) {
393529
393623
  cadComponent.position.x = 0;
393530
393624
  cadComponent.position.y = 0;
@@ -393534,7 +393628,7 @@ var convertBetterEasyToTsx = async ({
393534
393628
  throw new Error(`Missing manufacturer part number for ${betterEasy.lcsc.number}`);
393535
393629
  }
393536
393630
  const componentName = normalizeManufacturerPartNumber(manufacturerPartNumber);
393537
- const sourcePorts = su15(circuitJson).source_port.list();
393631
+ const sourcePorts = su16(circuitJson).source_port.list();
393538
393632
  const hiddenSchematicPinNumbers = new Set(betterEasy.dataStr.shape.flatMap((shape) => shape.type === "PIN" && shape.visibility !== "show" ? [String(shape.pinNumber)] : []));
393539
393633
  const pinLabels = {};
393540
393634
  const sortedPorts = sourcePorts.sort((a, b) => {
@@ -394037,7 +394131,7 @@ __export6(dist_exports2, {
394037
394131
  experiment_type: () => experiment_type2,
394038
394132
  external_footprint_load_error: () => external_footprint_load_error3,
394039
394133
  frequency: () => frequency8,
394040
- getRotationBetweenPcbPin1Locations: () => getRotationBetweenPcbPin1Locations2,
394134
+ getRotationBetweenPcbPin1Locations: () => getRotationBetweenPcbPin1Locations4,
394041
394135
  getZodPrefixedIdWithDefault: () => getZodPrefixedIdWithDefault2,
394042
394136
  inductance: () => inductance3,
394043
394137
  insertionDirectionToCanonical: () => insertionDirectionToCanonical2,
@@ -394130,7 +394224,7 @@ __export6(dist_exports2, {
394130
394224
  pcb_pad_trace_clearance_error: () => pcb_pad_trace_clearance_error2,
394131
394225
  pcb_panel: () => pcb_panel2,
394132
394226
  pcb_panelization_placement_error: () => pcb_panelization_placement_error2,
394133
- pcb_pin1_location: () => pcb_pin1_location2,
394227
+ pcb_pin1_location: () => pcb_pin1_location3,
394134
394228
  pcb_placement_error: () => pcb_placement_error2,
394135
394229
  pcb_plated_hole: () => pcb_plated_hole2,
394136
394230
  pcb_port: () => pcb_port2,
@@ -395999,7 +396093,7 @@ var insertion_direction2 = z105.enum([
395999
396093
  ]).transform((value) => insertionDirectionToCanonical2[value]).describe('The side exposing the receptacle where the cable or mating part is attached, following the 2D PCB diagram convention, not a 3D viewport frame. In project coordinate space, "from_top" is +Y, "from_bottom" -Y, "from_left" -X, "from_right" +X, "from_above" +Z and "from_below" -Z. A receptacle on the +Y edge is "from_top" even though the plug moves in -Y as it seats. Cartesian spellings such as "from_y_pos" are accepted and normalized to the named values, as are the deprecated "from_front" (now "from_top") and "from_back" (now "from_bottom").');
396000
396094
  expectTypesMatch3(true);
396001
396095
  expectTypesMatch3(true);
396002
- var pcb_pin1_location2 = z106.enum([
396096
+ var pcb_pin1_location3 = z106.enum([
396003
396097
  "leftside_top",
396004
396098
  "leftside_bottom",
396005
396099
  "rightside_top",
@@ -396024,7 +396118,7 @@ var pin1LocationRotationCycles2 = [
396024
396118
  "topside_left"
396025
396119
  ]
396026
396120
  ];
396027
- var getRotationBetweenPcbPin1Locations2 = (from, to) => {
396121
+ var getRotationBetweenPcbPin1Locations4 = (from, to) => {
396028
396122
  for (const cycle of pin1LocationRotationCycles2) {
396029
396123
  const fromIndex = cycle.indexOf(from);
396030
396124
  const toIndex = cycle.indexOf(to);
@@ -396092,8 +396186,8 @@ var pcb_component2 = z110.object({
396092
396186
  positioned_relative_to_pcb_board_id: z110.string().optional(),
396093
396187
  cable_insertion_center: point10.optional(),
396094
396188
  insertion_direction: insertion_direction2.optional(),
396095
- pin1_location: pcb_pin1_location2.optional().describe("Location of pin 1 on the unrotated, top-view component footprint"),
396096
- supplier_pin1_location_map: z110.record(supplier_name4, pcb_pin1_location2).optional().describe("Pin 1 location for each supplier's unrotated, top-view footprint"),
396189
+ pin1_location: pcb_pin1_location3.optional().describe("Location of pin 1 on the unrotated, top-view component footprint"),
396190
+ supplier_pin1_location_map: z110.record(supplier_name4, pcb_pin1_location3).optional().describe("Pin 1 location for each supplier's unrotated, top-view footprint"),
396097
396191
  metadata: z110.object({
396098
396192
  kicad_footprint: kicadFootprintMetadata3.optional()
396099
396193
  }).optional(),
@@ -35230,6 +35230,7 @@ function getPlatformConfigWithCliDefaults(userConfig, options) {
35230
35230
  const cacheDir = path8.join(projectDir, ".tscircuit", "cache");
35231
35231
  const defaultConfig = {
35232
35232
  ...basePlatformConfig,
35233
+ checkAvailability: true,
35233
35234
  localCacheEngine: createLocalCacheEngine(cacheDir),
35234
35235
  footprintFileParserMap: {
35235
35236
  ...basePlatformConfig.footprintFileParserMap,
package/dist/lib/index.js CHANGED
@@ -69109,7 +69109,7 @@ var getNodeHandler = (winterSpec, { port, middleware = [] }) => {
69109
69109
  }));
69110
69110
  };
69111
69111
  // package.json
69112
- var version = "0.1.2251";
69112
+ var version = "0.1.2253";
69113
69113
  var package_default = {
69114
69114
  name: "@tscircuit/cli",
69115
69115
  version,
@@ -69129,15 +69129,16 @@ var package_default = {
69129
69129
  "@tscircuit/circuit-json-placement-analysis": "^0.0.15",
69130
69130
  "@tscircuit/circuit-json-routing-analysis": "^0.0.8",
69131
69131
  "@tscircuit/circuit-json-schematic-placement-analysis": "https://jscdn.tscircuit.com/@tscircuit/circuit-json-schematic-placement-analysis/0.0.33.tgz",
69132
- "@tscircuit/circuit-json-util": "^0.0.116",
69133
- "@tscircuit/eval": "0.0.1538",
69132
+ "@tscircuit/circuit-json-util": "^0.0.120",
69133
+ "@tscircuit/eval": "0.0.1569",
69134
69134
  "@tscircuit/fake-snippets": "^0.0.182",
69135
69135
  "@tscircuit/file-server": "^0.0.32",
69136
69136
  "@tscircuit/footprinter": "^0.0.430",
69137
69137
  "@tscircuit/image-utils": "^0.0.8",
69138
69138
  "@tscircuit/krt-wasm": "^0.1.6",
69139
69139
  "@tscircuit/math-utils": "0.0.36",
69140
- "@tscircuit/props": "^0.0.666",
69140
+ "@tscircuit/modelprinter": "^0.0.11",
69141
+ "@tscircuit/props": "^0.0.694",
69141
69142
  "@tscircuit/runframe": "^0.0.2915",
69142
69143
  "@tscircuit/schematic-match-adapt": "^0.0.22",
69143
69144
  "@tscircuit/schematic-trace-solver": "^0.0.204",
@@ -69153,7 +69154,7 @@ var package_default = {
69153
69154
  "@types/semver": "^7.5.8",
69154
69155
  "bun-match-svg": "^0.0.12",
69155
69156
  chokidar: "4.0.1",
69156
- "circuit-json": "^0.0.515",
69157
+ "circuit-json": "^0.0.520",
69157
69158
  "circuit-json-to-3d-png": "^0.0.6",
69158
69159
  "circuit-json-to-altium": "github:tscircuit/circuit-json-to-altium#1a50d0dd2c0737cf940d92c0315852dc0111dd87",
69159
69160
  "circuit-json-to-bom-csv": "^0.0.19",
@@ -69211,7 +69212,7 @@ var package_default = {
69211
69212
  zod: "^3.23.8"
69212
69213
  },
69213
69214
  peerDependencies: {
69214
- "circuit-json": "^0.0.515",
69215
+ "circuit-json": "^0.0.520",
69215
69216
  tscircuit: "*"
69216
69217
  },
69217
69218
  bin: {
@@ -69228,9 +69229,10 @@ var package_default = {
69228
69229
  }
69229
69230
  },
69230
69231
  overrides: {
69231
- "circuit-json": "^0.0.515",
69232
+ "circuit-json": "^0.0.520",
69232
69233
  altiumts: "0.0.59",
69233
- poppygl: "0.0.34"
69234
+ poppygl: "0.0.34",
69235
+ "@tscircuit/core": "^0.0.2104"
69234
69236
  },
69235
69237
  scripts: {
69236
69238
  start: "bun run dev",
@@ -70278,6 +70280,7 @@ function getPlatformConfigWithCliDefaults(userConfig, options) {
70278
70280
  const cacheDir = path.join(projectDir, ".tscircuit", "cache");
70279
70281
  const defaultConfig = {
70280
70282
  ...basePlatformConfig,
70283
+ checkAvailability: true,
70281
70284
  localCacheEngine: createLocalCacheEngine(cacheDir),
70282
70285
  footprintFileParserMap: {
70283
70286
  ...basePlatformConfig.footprintFileParserMap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/cli",
3
- "version": "0.1.2252",
3
+ "version": "0.1.2254",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/tscircuit/cli"
@@ -17,15 +17,16 @@
17
17
  "@tscircuit/circuit-json-placement-analysis": "^0.0.15",
18
18
  "@tscircuit/circuit-json-routing-analysis": "^0.0.8",
19
19
  "@tscircuit/circuit-json-schematic-placement-analysis": "https://jscdn.tscircuit.com/@tscircuit/circuit-json-schematic-placement-analysis/0.0.33.tgz",
20
- "@tscircuit/circuit-json-util": "^0.0.116",
21
- "@tscircuit/eval": "0.0.1538",
20
+ "@tscircuit/circuit-json-util": "^0.0.120",
21
+ "@tscircuit/eval": "0.0.1569",
22
22
  "@tscircuit/fake-snippets": "^0.0.182",
23
23
  "@tscircuit/file-server": "^0.0.32",
24
24
  "@tscircuit/footprinter": "^0.0.430",
25
25
  "@tscircuit/image-utils": "^0.0.8",
26
26
  "@tscircuit/krt-wasm": "^0.1.6",
27
27
  "@tscircuit/math-utils": "0.0.36",
28
- "@tscircuit/props": "^0.0.666",
28
+ "@tscircuit/modelprinter": "^0.0.11",
29
+ "@tscircuit/props": "^0.0.694",
29
30
  "@tscircuit/runframe": "^0.0.2915",
30
31
  "@tscircuit/schematic-match-adapt": "^0.0.22",
31
32
  "@tscircuit/schematic-trace-solver": "^0.0.204",
@@ -41,7 +42,7 @@
41
42
  "@types/semver": "^7.5.8",
42
43
  "bun-match-svg": "^0.0.12",
43
44
  "chokidar": "4.0.1",
44
- "circuit-json": "^0.0.515",
45
+ "circuit-json": "^0.0.520",
45
46
  "circuit-json-to-3d-png": "^0.0.6",
46
47
  "circuit-json-to-altium": "github:tscircuit/circuit-json-to-altium#1a50d0dd2c0737cf940d92c0315852dc0111dd87",
47
48
  "circuit-json-to-bom-csv": "^0.0.19",
@@ -99,7 +100,7 @@
99
100
  "zod": "^3.23.8"
100
101
  },
101
102
  "peerDependencies": {
102
- "circuit-json": "^0.0.515",
103
+ "circuit-json": "^0.0.520",
103
104
  "tscircuit": "*"
104
105
  },
105
106
  "bin": {
@@ -116,9 +117,10 @@
116
117
  }
117
118
  },
118
119
  "overrides": {
119
- "circuit-json": "^0.0.515",
120
+ "circuit-json": "^0.0.520",
120
121
  "altiumts": "0.0.59",
121
- "poppygl": "0.0.34"
122
+ "poppygl": "0.0.34",
123
+ "@tscircuit/core": "^0.0.2104"
122
124
  },
123
125
  "scripts": {
124
126
  "start": "bun run dev",