Detalhes do pacote

@tscircuit/circuit-json-util

seveibar23.1kMIT0.0.50

Utility library for working with tscircuit circuit json

readme (leia-me)

@tscircuit/circuit-json-util

Previously released as @tscircuit/soup-util

This is a small utility library for working with circuit json

It reduces the amount of code to retrieve or join elements from circuit json, it also neatly handles all the typing.

Standard Usage

import { su } from "@tscircuit/circuit-json-util"

const circuitJson = [
  /* [ { type: "source_component", ... }, ... ] */
]

const pcb_component = su(circuitJson).pcb_component.get("1234")

const source_component = su(circuitJson).source_component.getUsing({
  pcb_component_id: "123",
})

const schematic_component = su(circuitJson).schematic_component.getWhere({
  width: 1,
})

const source_traces = su(circuitJson).source_trace.list({
  source_component_id: "123",
})

Optimized Indexed Version

For large circuit json, the library provides an optimized version with indexing for faster lookups:

import { suIndexed } from "@tscircuit/circuit-json-util"

const circuitJson = [
  /* large soup with many elements */
]

// Configure the indexes you want to use
const indexedSu = suIndexed(circuitJson, {
  indexConfig: {
    byId: true, // Index by element ID for fast .get() operations
    byType: true, // Index by element type for fast .list() operations
    byRelation: true, // Index relation fields (fields ending with _id)
    bySubcircuit: true, // Index by subcircuit_id for fast subcircuit filtering
    byCustomField: ["name", "ftype"], // Index specific fields you query often
  },
})

// Use the same API as the standard version, but with much better performance
const pcb_component = indexedSu.pcb_component.get("1234") // O(1) lookup

// Fast filtering by subcircuit
const subcircuitElements = indexedSu.source_component.list({
  subcircuit_id: "main",
})

The indexed version maintains the same API as the standard version but provides significant performance improvements, especially for large circuit json arrays.