@tscircuit/checks 0.0.164 → 0.0.165

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
@@ -1,5 +1,5 @@
1
1
  import * as circuit_json from 'circuit-json';
2
- import { AnyCircuitElement, PcbPortNotConnectedError, PcbTraceError, PcbPlacementError, PcbComponentOutsideBoardError, PcbViaClearanceError, PcbTraceWarning, PcbTraceMissingError, PcbFootprintOverlapError, PcbTraceTooLongWarning, PcbPadPadClearanceError, PcbPadTraceClearanceError, PcbViaTraceClearanceError, SourceComponentPinsUnderspecifiedWarning, SourceNoPowerPinDefinedWarning, SourceNoGroundPinDefinedWarning, SchematicComponentStylingWarning, PcbConnectorNotInAccessibleOrientationWarning } from 'circuit-json';
2
+ import { AnyCircuitElement, PcbPortNotConnectedError, PcbTraceError, PcbPlacementError, PcbComponentOutsideBoardError, PcbViaClearanceError, PcbTraceWarning, PcbTraceMissingError, PcbFootprintOverlapError, PcbComponentMissingCourtyardWarning, PcbTraceTooLongWarning, PcbPadPadClearanceError, PcbPadTraceClearanceError, PcbViaTraceClearanceError, SourceComponentPinsUnderspecifiedWarning, SourceNoPowerPinDefinedWarning, SourceNoGroundPinDefinedWarning, SchematicComponentStylingWarning, PcbConnectorNotInAccessibleOrientationWarning } from 'circuit-json';
3
3
  import { ConnectivityMap } from 'circuit-json-to-connectivity-map';
4
4
 
5
5
  declare function checkEachPcbPortConnectedToPcbTraces(circuitJson: AnyCircuitElement[]): PcbPortNotConnectedError[];
@@ -81,6 +81,9 @@ declare function checkPcbTracesOutOfBoard(circuitJson: AnyCircuitElement[], conf
81
81
  */
82
82
  declare function checkPcbComponentOverlap(circuitJson: AnyCircuitElement[]): PcbFootprintOverlapError[];
83
83
 
84
+ /** Returns a warning for every PCB component without a courtyard. */
85
+ declare function checkPcbComponentsMissingCourtyard(circuitJson: AnyCircuitElement[]): PcbComponentMissingCourtyardWarning[];
86
+
84
87
  declare const checkPcbTraceLengths: (circuitJson: AnyCircuitElement[]) => PcbTraceTooLongWarning[];
85
88
 
86
89
  declare function checkPadPadClearance(circuitJson: AnyCircuitElement[], { connMap, minClearance, }?: {
@@ -160,7 +163,7 @@ declare function checkNoGroundPinDefined(circuitJson: AnyCircuitElement[]): Sour
160
163
  */
161
164
  declare function checkSchematicComponentExcessiveVerticalPadding(circuitJson: AnyCircuitElement[]): SchematicComponentStylingWarning[];
162
165
 
163
- declare function runAllPlacementChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbPadPadClearanceError | circuit_json.PcbConnectorNotInAccessibleOrientationWarning | circuit_json.PcbCourtyardOverlapError)[]>;
166
+ declare function runAllPlacementChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbComponentMissingCourtyardWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbConnectorNotInAccessibleOrientationWarning | circuit_json.PcbCourtyardOverlapError)[]>;
164
167
  declare function runAllNetlistChecks(circuitJson: AnyCircuitElement[]): Promise<{
165
168
  type: "source_pin_must_be_connected_error";
166
169
  source_pin_must_be_connected_error_id: string;
@@ -173,7 +176,7 @@ declare function runAllNetlistChecks(circuitJson: AnyCircuitElement[]): Promise<
173
176
  declare function runAllSchematicChecks(circuitJson: AnyCircuitElement[]): Promise<circuit_json.SchematicComponentStylingWarning[]>;
174
177
  declare function runAllPinSpecificationChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.SourceComponentPinsUnderspecifiedWarning | circuit_json.SourceNoPowerPinDefinedWarning | circuit_json.SourceNoGroundPinDefinedWarning)[]>;
175
178
  declare function runAllRoutingChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError)[]>;
176
- declare function runAllChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError | {
179
+ declare function runAllChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbComponentMissingCourtyardWarning | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError | {
177
180
  type: "source_pin_must_be_connected_error";
178
181
  source_pin_must_be_connected_error_id: string;
179
182
  error_type: "source_pin_must_be_connected_error";
@@ -192,4 +195,4 @@ declare function checkConnectorAccessibleOrientation(circuitJson: AnyCircuitElem
192
195
  */
193
196
  declare function checkTestPointAccessibility(circuitJson: AnyCircuitElement[]): PcbPlacementError[];
194
197
 
195
- export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkCopperToBoardEdgeClearance, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverCutout, checkPcbComponentOverlap, checkPcbComponentsOutOfBoard, checkPcbTraceLengths, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSchematicComponentExcessiveVerticalPadding, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTestPointAccessibility, checkTracesAreContiguous, checkViaPadClearance, checkViaTraceClearance, checkViasInPads, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks, runAllSchematicChecks };
198
+ export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkCopperToBoardEdgeClearance, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverCutout, checkPcbComponentOverlap, checkPcbComponentsMissingCourtyard, checkPcbComponentsOutOfBoard, checkPcbTraceLengths, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSchematicComponentExcessiveVerticalPadding, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTestPointAccessibility, checkTracesAreContiguous, checkViaPadClearance, checkViaTraceClearance, checkViasInPads, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks, runAllSchematicChecks };
package/dist/index.js CHANGED
@@ -3050,6 +3050,41 @@ function checkPcbComponentOverlap(circuitJson) {
3050
3050
  return errors;
3051
3051
  }
3052
3052
 
3053
+ // lib/check-pcb-components-missing-courtyard.ts
3054
+ var courtyardTypes = /* @__PURE__ */ new Set([
3055
+ "pcb_courtyard_circle",
3056
+ "pcb_courtyard_outline",
3057
+ "pcb_courtyard_polygon",
3058
+ "pcb_courtyard_pill",
3059
+ "pcb_courtyard_rect"
3060
+ ]);
3061
+ function checkPcbComponentsMissingCourtyard(circuitJson) {
3062
+ const componentIdsWithCourtyards = new Set(
3063
+ circuitJson.filter((element) => courtyardTypes.has(element.type)).flatMap(
3064
+ (element) => "pcb_component_id" in element && element.pcb_component_id ? [element.pcb_component_id] : []
3065
+ )
3066
+ );
3067
+ return circuitJson.filter(
3068
+ (element) => element.type === "pcb_component"
3069
+ ).filter(
3070
+ (component) => !componentIdsWithCourtyards.has(component.pcb_component_id)
3071
+ ).map((component) => {
3072
+ const sourceComponent = component.source_component_id ? circuitJson.find(
3073
+ (element) => element.type === "source_component" && element.source_component_id === component.source_component_id
3074
+ ) : void 0;
3075
+ const componentName = sourceComponent?.type === "source_component" ? sourceComponent.name : getReadableNameForComponent(circuitJson, component.pcb_component_id);
3076
+ return {
3077
+ type: "pcb_component_missing_courtyard_warning",
3078
+ pcb_component_missing_courtyard_warning_id: `pcb_component_missing_courtyard_warning_${component.pcb_component_id}`,
3079
+ warning_type: "pcb_component_missing_courtyard_warning",
3080
+ message: `${componentName} has no courtyard`,
3081
+ pcb_component_id: component.pcb_component_id,
3082
+ source_component_id: component.source_component_id,
3083
+ subcircuit_id: component.subcircuit_id
3084
+ };
3085
+ });
3086
+ }
3087
+
3053
3088
  // lib/check-pcb-trace-lengths.ts
3054
3089
  var DEFAULT_VIA_LENGTH_MM = 1.6;
3055
3090
  var getRoutePointPosition = (routePoint) => routePoint.route_type === "through_pad" ? routePoint.start : { x: routePoint.x, y: routePoint.y };
@@ -3979,6 +4014,7 @@ async function runAllPlacementChecks(circuitJson) {
3979
4014
  ...checkPcbComponentsOutOfBoard(circuitJson),
3980
4015
  ...checkPcbComponentOverCutout(circuitJson),
3981
4016
  ...checkPcbComponentOverlap(circuitJson),
4017
+ ...checkPcbComponentsMissingCourtyard(circuitJson),
3982
4018
  ...checkPadPadClearance(circuitJson),
3983
4019
  ...checkCourtyardOverlap(circuitJson),
3984
4020
  ...checkConnectorAccessibleOrientation(circuitJson),
@@ -4036,6 +4072,7 @@ export {
4036
4072
  checkPadTraceClearance,
4037
4073
  checkPcbComponentOverCutout,
4038
4074
  checkPcbComponentOverlap,
4075
+ checkPcbComponentsMissingCourtyard,
4039
4076
  checkPcbComponentsOutOfBoard,
4040
4077
  checkPcbTraceLengths,
4041
4078
  checkPcbTracesOutOfBoard,