ShiboSoftwareDev/am625sip-linux-board
This code defines the physical footprint and pin layout for an AM625 System-in-Package (SIP) component, detailing pad positions, pin labels, and package outline for hardware integration.
- Version
- 1.0.24
- License
- unset
- Stars
- 0
scripts/namespace-cache-pcb-trace-ids.ts
import type { AnyCircuitElement } from "circuit-json"
/**
* The Circuit JSON importer remaps relational ids, but autorouter-generated
* pcb_trace_id strings are intentionally preserved. Give each independently
* built cache its own trace-id namespace and update via references to it.
*/
export const namespaceCachePcbTraceIds = (
elements: AnyCircuitElement[],
namespace: string,
): AnyCircuitElement[] => {
const prefix = `${namespace.replace(/[^A-Za-z0-9_]/g, "_")}__`
const traceIdMap = new Map(
elements.flatMap((element) =>
element.type === "pcb_trace" && element.pcb_trace_id
? [[
element.pcb_trace_id,
element.pcb_trace_id.startsWith(prefix)
? element.pcb_trace_id
: `${prefix}${element.pcb_trace_id}`,
] as const]
: [],
),
)
return elements.map((element) => {
if (!("pcb_trace_id" in element) || !element.pcb_trace_id) return element
const namespacedTraceId = traceIdMap.get(element.pcb_trace_id)
if (!namespacedTraceId) return element
return { ...element, pcb_trace_id: namespacedTraceId } as AnyCircuitElement
})
}