From 57792cd8769eff1a4267a86a65b18ae7f5396175 Mon Sep 17 00:00:00 2001 From: seveibar Date: Tue, 21 Jan 2025 16:02:33 -0800 Subject: [PATCH] regenerate docs directory --- .github/workflows/release.yml | 2 +- docs/PCB_COMPONENT_OVERVIEW.md | 195 +++++++++++++-------------- docs/SCHEMATIC_COMPONENT_OVERVIEW.md | 132 +++++++++++------- docs/SOURCE_COMPONENT_OVERVIEW.md | 131 +++++++++--------- package.json | 3 +- 5 files changed, 238 insertions(+), 225 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 180cf90..77f212f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - run: bun install --frozen-lockfile - run: bun run build - name: Generate README docs - run: bun run generate-docs + run: bun run generate-readme - run: git add README.md - run: pver release env: diff --git a/docs/PCB_COMPONENT_OVERVIEW.md b/docs/PCB_COMPONENT_OVERVIEW.md index e48afc2..233f26c 100644 --- a/docs/PCB_COMPONENT_OVERVIEW.md +++ b/docs/PCB_COMPONENT_OVERVIEW.md @@ -1,6 +1,6 @@ # Circuit JSON Specification: PCB Component Overview -> Created at 2024-10-23T22:17:25.274Z +> Created at 2025-01-22T00:01:23.910Z > Latest Version: https://github.com/tscircuit/circuit-json/blob/main/docs/PCB_COMPONENT_OVERVIEW.md Any type below can be imported from `circuit-json`. Every type has a corresponding @@ -13,6 +13,7 @@ export interface PcbFabricationNotePath { type: "pcb_fabrication_note_path" pcb_fabrication_note_path_id: string pcb_component_id: string + subcircuit_id?: string layer: LayerRef route: Point[] stroke_width: Length @@ -20,9 +21,10 @@ export interface PcbFabricationNotePath { } export interface PcbComponent { - type: "pcb_component" + type: "pcb_component" pcb_component_id: string source_component_id: string + subcircuit_id?: string center: Point layer: LayerRef rotation: Rotation @@ -41,6 +43,8 @@ export interface PcbSolderPasteCircle { type: "pcb_solder_paste" shape: "circle" pcb_solder_paste_id: string + pcb_group_id?: string + subcircuit_id?: string x: Distance y: Distance radius: number @@ -53,6 +57,8 @@ export interface PcbSolderPasteRect { type: "pcb_solder_paste" shape: "rect" pcb_solder_paste_id: string + pcb_group_id?: string + subcircuit_id?: string x: Distance y: Distance width: number @@ -67,19 +73,17 @@ export type PcbSolderPaste = PcbSolderPasteCircle | PcbSolderPasteRect export interface PcbSilkscreenText { type: "pcb_silkscreen_text" pcb_silkscreen_text_id: string + pcb_group_id?: string + subcircuit_id?: string font: "tscircuit2024" font_size: Length pcb_component_id: string text: string + ccw_rotation?: number layer: LayerRef is_mirrored?: boolean anchor_position: Point - anchor_alignment: - | "center" - | "top_left" - | "top_right" - | "bottom_left" - | "bottom_right" + anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" } export interface PcbTraceError { @@ -98,6 +102,8 @@ export interface PcbSilkscreenPill { type: "pcb_silkscreen_pill" pcb_silkscreen_pill_id: string pcb_component_id: string + pcb_group_id?: string + subcircuit_id?: string center: Point width: Length height: Length @@ -107,6 +113,8 @@ export interface PcbSilkscreenPill { export interface PcbPlatedHoleCircle { type: "pcb_plated_hole" shape: "circle" + pcb_group_id?: string + subcircuit_id?: string outer_diameter: number hole_diameter: number x: Distance @@ -121,6 +129,8 @@ export interface PcbPlatedHoleCircle { export interface PcbPlatedHoleOval { type: "pcb_plated_hole" shape: "oval" | "pill" + pcb_group_id?: string + subcircuit_id?: string outer_width: number outer_height: number hole_width: number @@ -137,11 +147,13 @@ export interface PcbPlatedHoleOval { export interface PcbHoleCircularWithRectPad { type: "pcb_plated_hole" shape: "circular_hole_with_rect_pad" + pcb_group_id?: string + subcircuit_id?: string hole_shape: "circle" pad_shape: "rect" hole_diameter: number rect_pad_width: number - rect_pad_height: number + rect_pad_height: number x: Distance y: Distance layers: LayerRef[] @@ -153,136 +165,79 @@ export interface PcbHoleCircularWithRectPad { export type PcbPlatedHole = PcbPlatedHoleCircle | PcbPlatedHoleOval | PcbHoleCircularWithRectPad -export interface PcbFabricationNoteText { - type: "pcb_fabrication_note_text" - pcb_fabrication_note_text_id: string - font: "tscircuit2024" - font_size: Length - pcb_component_id: string - text: string - layer: VisibleLayer - anchor_position: Point - anchor_alignment: - | "center" - | "top_left" - | "top_right" - | "bottom_left" - | "bottom_right" - color?: string -} - -export interface PcbSilkscreenCircle { - type: "pcb_silkscreen_circle" - pcb_silkscreen_circle_id: string - pcb_component_id: string - center: Point - radius: Length - layer: VisibleLayer -} - -export interface PcbSilkscreenPath { - type: "pcb_silkscreen_path" - pcb_silkscreen_path_id: string - pcb_component_id: string - layer: VisibleLayerRef - route: Point[] - stroke_width: Length -} - -export interface PcbText { - type: "pcb_text" - pcb_text_id: string - text: string - center: Point - layer: LayerRef - width: Length - height: Length - lines: number - align: "bottom-left" -} - -export interface PCBKeepout { - type: "pcb_keepout" - shape: "rect" | "circle" - center: Point - width?: Distance - height?: Distance - radius?: Distance - pcb_keepout_id: string - layers: string[] - description?: string -} - -export interface PcbVia { - type: "pcb_via" - pcb_via_id: string +export interface PcbSmtPadCircle { + type: "pcb_smtpad" + shape: "circle" + pcb_smtpad_id: string + pcb_group_id?: string + subcircuit_id?: string x: Distance y: Distance - outer_diameter: Distance - hole_diameter: Distance - layers: LayerRef[] - pcb_trace_id?: string -} - -export interface PcbSilkscreenOval { - type: "pcb_silkscreen_oval" - pcb_silkscreen_oval_id: string - pcb_component_id: string - center: Point - radius_x: Distance - radius_y: Distance - layer: VisibleLayer -} - -export interface PcbPlacementError { - type: "pcb_placement_error" - pcb_placement_error_id: string - message: string + radius: number + layer: LayerRef + port_hints?: string[] + pcb_component_id?: string + pcb_port_id?: string } -export interface PcbPort { - type: "pcb_port" - pcb_port_id: string - source_port_id: string - pcb_component_id: string +export interface PcbSmtPadRect { + type: "pcb_smtpad" + shape: "rect" + pcb_smtpad_id: string + pcb_group_id?: string + subcircuit_id?: string x: Distance y: Distance - layers: LayerRef[] + width: number + height: number + layer: LayerRef + port_hints?: string[] + pcb_component_id?: string + pcb_port_id?: string } -export interface PcbSmtPadCircle { +export interface PcbSmtPadRotatedRect { type: "pcb_smtpad" - shape: "circle" + shape: "rotated_rect" pcb_smtpad_id: string + pcb_group_id?: string + subcircuit_id?: string x: Distance y: Distance - radius: number + width: number + height: number + ccw_rotation: Rotation layer: LayerRef port_hints?: string[] pcb_component_id?: string pcb_port_id?: string } -export interface PcbSmtPadRect { +export interface PcbSmtPadPill { type: "pcb_smtpad" - shape: "rect" + shape: "pill" pcb_smtpad_id: string + pcb_group_id?: string + subcircuit_id?: string x: Distance y: Distance width: number height: number + radius: number layer: LayerRef port_hints?: string[] pcb_component_id?: string pcb_port_id?: string } -export type PcbSmtPad = PcbSmtPadCircle | PcbSmtPadRect +export type PcbSmtPad = PcbSmtPadCircle | PcbSmtPadRect | PcbSmtPadRotatedRect | PcbSmtPadPill export interface PcbSilkscreenLine { type: "pcb_silkscreen_line" pcb_silkscreen_line_id: string pcb_component_id: string + pcb_group_id?: string + subcircuit_id?: string stroke_width: Distance x1: Distance y1: Distance @@ -294,6 +249,8 @@ export interface PcbSilkscreenLine { export interface PcbHoleCircleOrSquare { type: "pcb_hole" pcb_hole_id: string + pcb_group_id?: string + subcircuit_id?: string hole_shape: "circle" | "square" hole_diameter: number x: Distance @@ -303,6 +260,8 @@ export interface PcbHoleCircleOrSquare { export interface PcbHoleOval { type: "pcb_hole" pcb_hole_id: string + pcb_group_id?: string + subcircuit_id?: string hole_shape: "oval" hole_width: number hole_height: number @@ -336,16 +295,21 @@ export interface PcbTrace { type: "pcb_trace" source_trace_id?: string pcb_component_id?: string + pcb_group_id?: string + subcircuit_id?: string pcb_trace_id: string route_order_index?: number route_thickness_mode?: "constant" | "interpolated" should_round_corners?: boolean + trace_length?: number route: Array } export interface PcbBoard { type: "pcb_board" pcb_board_id: string + is_subcircuit?: boolean + subcircuit_id?: string width: Length height: Length thickness: Length @@ -354,4 +318,27 @@ export interface PcbBoard { outline?: Point[] } +export type PcbCircuitElement = + | PcbComponent + | PcbHole + | PcbPlatedHole + | PcbPort + | PcbSmtPad + | PcbSolderPaste + | PcbText + | PcbTrace + | PcbTraceError + | PcbMissingFootprintError + | PcbManualEditConflictError + | PcbPortNotMatchedError + | PcbVia + | PcbBoard + | PcbPlacementError + | PcbTraceHint + | PcbSilkscreenLine + | PcbSilkscreenPath + | PcbSilkscreenText + | PcbSilkscreenRect + | PcbSilkscreenCircle + ``` \ No newline at end of file diff --git a/docs/SCHEMATIC_COMPONENT_OVERVIEW.md b/docs/SCHEMATIC_COMPONENT_OVERVIEW.md index 0c5bece..c9f8801 100644 --- a/docs/SCHEMATIC_COMPONENT_OVERVIEW.md +++ b/docs/SCHEMATIC_COMPONENT_OVERVIEW.md @@ -1,6 +1,6 @@ # Circuit JSON Specification: Schematic Component Overview -> Created at 2024-10-23T22:29:08.481Z +> Created at 2025-01-22T00:01:52.582Z > Latest Version: https://github.com/tscircuit/circuit-json/blob/main/docs/SCHEMATIC_COMPONENT_OVERVIEW.md Any type below can be imported from `circuit-json`. Every type has a corresponding @@ -9,22 +9,29 @@ for example `SchematicComponent` has a `schematic_component.parse` function that can also import. ```ts +interface SchematicTraceEdge { + from: { + x: number + y: number + } + to: { + x: number + y: number + } + is_crossing?: boolean + from_schematic_port_id?: string + to_schematic_port_id?: string +} + interface SchematicTrace { type: "schematic_trace" schematic_trace_id: string source_trace_id: string - edges: Array<{ - from: { - x: number - y: number - } - to: { - x: number - y: number - } - from_schematic_port_id?: string - to_schematic_port_id?: string - }> + junctions: { + x: number + y: number + }[] + edges: SchematicTraceEdge[] } interface SchematicBox { @@ -46,17 +53,38 @@ interface SchematicLine { } interface SchematicError { - schematic_error_id: string type: "schematic_error" + schematic_error_id: string error_type: "schematic_port_not_found" message: string } +interface SchematicPortArrangementBySize { + left_size: number + right_size: number + top_size?: number + bottom_size?: number +} + +interface SchematicPortArrangementBySides { + left_side?: { pins: number[]; direction?: "top-to-bottom" | "bottom-to-top" } + right_side?: { pins: number[]; direction?: "top-to-bottom" | "bottom-to-top" } + top_side?: { pins: number[]; direction?: "left-to-right" | "right-to-left" } + bottom_side?: { + pins: number[] + direction?: "left-to-right" | "right-to-left" + } +} + +type SchematicPortArrangement = + | SchematicPortArrangementBySize + | SchematicPortArrangementBySides + interface SchematicComponent { type: "schematic_component" rotation: number - size: { width: number; height: number } - center: { x: number; y: number } + size: Size + center: Point source_component_id: string schematic_component_id: string pin_spacing?: number @@ -71,67 +99,69 @@ interface SchematicComponent { > box_width?: number symbol_name?: string - port_arrangement?: - | { - left_size: number - right_size: number - top_size?: number - bottom_size?: number - } - | { - left_side?: { - pins: number[] - direction?: "top-to-bottom" | "bottom-to-top" - } - right_side?: { - pins: number[] - direction?: "top-to-bottom" | "bottom-to-top" - } - top_side?: { - pins: number[] - direction?: "left-to-right" | "right-to-left" - } - bottom_side?: { - pins: number[] - direction?: "left-to-right" | "right-to-left" - } - } + port_arrangement?: SchematicPortArrangement port_labels?: Record + symbol_display_value?: string } interface SchematicDebugRect { type: "schematic_debug_object" label?: string shape: "rect" - center: { x: number; y: number } - size: { width: number; height: number } + center: Point + size: Size } interface SchematicDebugLine { type: "schematic_debug_object" label?: string shape: "line" - start: { x: number; y: number } - end: { x: number; y: number } + start: Point + end: Point +} + +interface SchematicDebugPoint { + type: "schematic_debug_object" + label?: string + shape: "point" + center: Point } -type SchematicDebugObject = SchematicDebugRect | SchematicDebugLine +type SchematicDebugObject = + | SchematicDebugRect + | SchematicDebugLine + | SchematicDebugPoint + +interface SchematicVoltageProbe { + type: "schematic_voltage_probe" + schematic_voltage_probe_id: string + position: Point + schematic_trace_id: string + voltage?: number +} interface SchematicPort { type: "schematic_port" schematic_port_id: string source_port_id: string schematic_component_id?: string - center: { x: number; y: number } + center: Point facing_direction?: "up" | "down" | "left" | "right" + distance_from_component_edge?: number + side_of_component?: "top" | "bottom" | "left" | "right" + true_ccw_index?: number + pin_number?: number + display_pin_label?: string } interface SchematicNetLabel { type: "schematic_net_label" source_net_id: string - center: { x: number; y: number } + center: Point + anchor_position?: Point anchor_side: "top" | "bottom" | "left" | "right" text: string + symbol_name?: string } interface SchematicPath { @@ -139,7 +169,7 @@ interface SchematicPath { schematic_component_id: string fill_color?: "red" | "blue" is_filled?: boolean - points: Array<{ x: number; y: number }> + points: Point[] } interface SchematicText { @@ -153,5 +183,7 @@ interface SchematicText { } rotation: number anchor: "center" | "left" | "right" | "top" | "bottom" + color: string } -``` + +``` \ No newline at end of file diff --git a/docs/SOURCE_COMPONENT_OVERVIEW.md b/docs/SOURCE_COMPONENT_OVERVIEW.md index 302281a..e34afb9 100644 --- a/docs/SOURCE_COMPONENT_OVERVIEW.md +++ b/docs/SOURCE_COMPONENT_OVERVIEW.md @@ -1,6 +1,6 @@ # Circuit JSON Specification: Source Component Overview -> Created at 2024-11-12T19:07:05.930Z +> Created at 2025-01-22T00:01:36.571Z > Latest Version: https://github.com/tscircuit/circuit-json/blob/main/docs/SOURCE_COMPONENT_OVERVIEW.md Any type below can be imported from `circuit-json`. Every type has a corresponding @@ -9,9 +9,9 @@ for example `SourceComponent` has a `source_component.parse` function that you can also import. ```ts -interface SourceSimpleChip { +interface SourceComponentBase { type: "source_component" - ftype: "simple_chip" + ftype?: string source_component_id: string name: string manufacturer_part_number?: string @@ -19,25 +19,33 @@ interface SourceSimpleChip { display_value?: string } -interface SourceSimpleInductor { - type: "source_component" +interface SourceSimpleTransistor extends SourceComponentBase { + ftype: "simple_transistor" + transistor_type: "npn" | "pnp" +} + +interface SourceSimpleChip extends SourceComponentBase { + ftype: "simple_chip" +} + +interface SourceSimpleCrystal extends SourceComponentBase { + ftype: "simple_crystal" + frequency: number + load_capacitance?: number +} + +interface SourceSimpleInductor extends SourceComponentBase { ftype: "simple_inductor" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string inductance: number } -interface SourceLed { - type: "source_component" +interface SourceLed extends SourceComponentBase { ftype: "led" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string +} + +interface SourceSimplePotentiometer extends SourceComponentBase { + ftype: "simple_potentiometer" + max_resistance: number } interface SourceTrace { @@ -46,37 +54,29 @@ interface SourceTrace { connected_source_port_ids: string[] connected_source_net_ids: string[] subcircuit_connectivity_map_key?: string + max_length?: number + display_name?: string } -interface SourceSimpleGround { - type: "source_component" +interface SourceSimpleGround extends SourceComponentBase { ftype: "simple_ground" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string } -interface SourceSimpleResistor { - type: "source_component" +interface SourceSimpleResistor extends SourceComponentBase { ftype: "simple_resistor" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string resistance: number + display_resistance?: string } -interface SourceSimpleBattery { - type: "source_component" +interface SourceSimpleResonator extends SourceComponentBase { + ftype: "simple_resonator" + load_capacitance: number + equivalent_series_resistance?: number + frequency: number +} + +interface SourceSimpleBattery extends SourceComponentBase { ftype: "simple_battery" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string capacity: number } @@ -92,19 +92,25 @@ interface SourceNet { trace_width?: number } -interface SourceSimpleDiode { - type: "source_component" +interface SourceSimplePushButton extends SourceComponentBase { + ftype: "simple_push_button" +} + +interface SourceSimpleMosfet extends SourceComponentBase { + ftype: "simple_mosfet" + channel_type: "n" | "p" + mosfet_mode: "enhancement" | "depletion" +} + +interface SourceSimpleDiode extends SourceComponentBase { ftype: "simple_diode" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string } interface SourceGroup { type: "source_group" source_group_id: string + subcircuit_id?: string + is_subcircuit?: boolean name?: string } @@ -117,35 +123,22 @@ interface SourcePort { source_component_id: string } -interface SourceSimplePowerSource { - type: "source_component" +interface SourceSimplePowerSource extends SourceComponentBase { ftype: "simple_power_source" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string voltage: number } -interface SourceSimpleCapacitor { - type: "source_component" +interface SourceSimplePinHeader extends SourceComponentBase { + ftype: "simple_pin_header" + pin_count: number + gender?: "male" | "female" +} + +interface SourceSimpleCapacitor extends SourceComponentBase { ftype: "simple_capacitor" - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string capacitance: number + display_capacitance?: string + max_decoupling_trace_length?: number } -interface SourceComponentBase { - type: "source_component" - ftype?: string - source_component_id: string - name: string - manufacturer_part_number?: string - supplier_part_numbers?: Partial> - display_value?: string -} -``` +``` \ No newline at end of file diff --git a/package.json b/package.json index d837cb5..0b850b9 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "prepublish": "npm run build", "build": "tsup-node ./src/index.ts --format esm --dts --sourcemap", "format": "biome format . --write", - "generate-docs": "bun scripts/generate-readme-docs.ts && prettier --no-semi -w README.md", + "generate-readme": "bun scripts/generate-readme-docs.ts && prettier --no-semi -w README.md", + "generate-docs": "bun run scripts/generate-pcb-component-overview.ts && bun run scripts/generate-source-component-overview.ts && bun run scripts/generate-schematic-component-overview.ts", "lint:zod": "bun run scripts/zod-lint.ts" }, "keywords": [],