@tscircuit/checks 0.0.167 → 0.0.169
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.js +33 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -332,7 +332,10 @@ var addStartAndEndPortIdsIfMissing = (soup) => {
|
|
|
332
332
|
};
|
|
333
333
|
|
|
334
334
|
// lib/check-each-pcb-port-connected-to-pcb-trace.ts
|
|
335
|
-
import {
|
|
335
|
+
import {
|
|
336
|
+
getFullConnectivityMapFromCircuitJson,
|
|
337
|
+
PcbConnectivityMap
|
|
338
|
+
} from "circuit-json-to-connectivity-map";
|
|
336
339
|
|
|
337
340
|
// lib/util/get-readable-names.ts
|
|
338
341
|
import {
|
|
@@ -470,14 +473,41 @@ function checkEachPcbPortConnectedToPcbTraces(circuitJson) {
|
|
|
470
473
|
const pcbPorts = circuitJson.filter(
|
|
471
474
|
(item) => item.type === "pcb_port"
|
|
472
475
|
);
|
|
476
|
+
const sourceNets = circuitJson.filter(
|
|
477
|
+
(item) => item.type === "source_net"
|
|
478
|
+
);
|
|
473
479
|
const errors = [];
|
|
474
480
|
const connectivityMap = getFullConnectivityMapFromCircuitJson(circuitJson);
|
|
481
|
+
const pcbConnectivityMap = new PcbConnectivityMap(circuitJson);
|
|
475
482
|
const sourcePortToPcbPort = /* @__PURE__ */ new Map();
|
|
476
483
|
for (const pcbPort of pcbPorts) {
|
|
477
484
|
sourcePortToPcbPort.set(pcbPort.source_port_id, pcbPort);
|
|
478
485
|
}
|
|
486
|
+
const sourceNetNameById = new Map(
|
|
487
|
+
sourceNets.map((sourceNet) => [sourceNet.source_net_id, sourceNet.name])
|
|
488
|
+
);
|
|
479
489
|
for (const sourceTrace of sourceTraces) {
|
|
480
490
|
const connectedSourcePortIds = sourceTrace.connected_source_port_ids;
|
|
491
|
+
if (connectedSourcePortIds.length === 1 && sourceTrace.connected_source_net_ids.length > 0) {
|
|
492
|
+
const pcbPort = sourcePortToPcbPort.get(connectedSourcePortIds[0]);
|
|
493
|
+
if (!pcbPort) continue;
|
|
494
|
+
const connectedPcbTraces = pcbConnectivityMap.getAllTracesConnectedToPort(
|
|
495
|
+
pcbPort.pcb_port_id
|
|
496
|
+
);
|
|
497
|
+
if (connectedPcbTraces.length === 0) {
|
|
498
|
+
const connectedNetNames = sourceTrace.connected_source_net_ids.map((sourceNetId) => sourceNetNameById.get(sourceNetId)).filter((name) => Boolean(name));
|
|
499
|
+
const netDescription = connectedNetNames.length > 0 ? `net [${connectedNetNames.join(", ")}]` : "its connected net";
|
|
500
|
+
errors.push({
|
|
501
|
+
type: "pcb_port_not_connected_error",
|
|
502
|
+
message: `Port [${getReadableNameForPort(circuitJson, pcbPort.pcb_port_id)}] is not connected to ${netDescription} by a PCB trace.`,
|
|
503
|
+
error_type: "pcb_port_not_connected_error",
|
|
504
|
+
pcb_port_ids: [pcbPort.pcb_port_id],
|
|
505
|
+
pcb_component_ids: pcbPort.pcb_component_id ? [pcbPort.pcb_component_id] : [],
|
|
506
|
+
pcb_port_not_connected_error_id: `pcb_port_not_connected_error_trace_${sourceTrace.source_trace_id}`
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
continue;
|
|
510
|
+
}
|
|
481
511
|
if (connectedSourcePortIds.length < 2) {
|
|
482
512
|
continue;
|
|
483
513
|
}
|
|
@@ -2552,7 +2582,7 @@ import {
|
|
|
2552
2582
|
getReadableNameForPcbPort as getReadableNameForPcbPort2,
|
|
2553
2583
|
getReadableNameForPcbTrace
|
|
2554
2584
|
} from "@tscircuit/circuit-json-util";
|
|
2555
|
-
import { PcbConnectivityMap } from "circuit-json-to-connectivity-map";
|
|
2585
|
+
import { PcbConnectivityMap as PcbConnectivityMap2 } from "circuit-json-to-connectivity-map";
|
|
2556
2586
|
function getRoutePointCenter(point) {
|
|
2557
2587
|
if (point.route_type === "through_pad") {
|
|
2558
2588
|
return {
|
|
@@ -2640,7 +2670,7 @@ function checkTracesAreContiguous(circuitJson) {
|
|
|
2640
2670
|
(el) => el.type === "pcb_plated_hole"
|
|
2641
2671
|
);
|
|
2642
2672
|
const padMap = /* @__PURE__ */ new Map();
|
|
2643
|
-
const pcbConnectivityMap = new
|
|
2673
|
+
const pcbConnectivityMap = new PcbConnectivityMap2(circuitJson);
|
|
2644
2674
|
const checkedSourceTraceIds = /* @__PURE__ */ new Set();
|
|
2645
2675
|
for (const pad of pcbSmtPads) {
|
|
2646
2676
|
if (pad.pcb_port_id) {
|