circuit-json-to-tscircuit 0.0.56 → 0.0.57
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/{chunk-TJ74IBUO.js → chunk-U24G34W6.js} +30 -25
- package/dist/cli/main.js +2 -2
- package/dist/lib/index.js +1 -1
- package/lib/generate-footprint-tsx/convert-pcb-traces.ts +7 -0
- package/lib/generate-footprint-tsx.tsx +3 -1
- package/package.json +1 -1
- package/tests/test24-support-pcb-traces.test.tsx +38 -0
- package/tests/ti-evms/__snapshots__/ti-drv8307evm-roundtrip-pcb-comparison.snap.svg +1 -1
- package/tests/ti-evms/__snapshots__/ti-lm251772evm-pd-roundtrip-pcb-comparison.snap.svg +1 -1
- package/tests/ti-evms/__snapshots__/ti-lm5155evm-fly-roundtrip-pcb-comparison.snap.svg +1 -1
- package/tests/ti-evms/__snapshots__/ti-lmg342x-bb-evm-roundtrip-pcb-comparison.snap.svg +1 -1
- package/tests/ti-evms/ti-drv8307evm-roundtrip.test.tsx +685 -0
- package/tests/ti-evms/ti-lm251772evm-pd-roundtrip.test.tsx +1024 -0
- package/tests/ti-evms/ti-lm5155evm-fly-roundtrip.test.tsx +203 -0
- package/tests/ti-evms/ti-lmg342x-bb-evm-roundtrip.test.tsx +582 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// lib/get-board-using-template.ts
|
|
2
2
|
import { mmStr as mmStr8 } from "@tscircuit/mm";
|
|
3
|
-
import { su as
|
|
3
|
+
import { su as su14 } from "@tscircuit/soup-util";
|
|
4
4
|
|
|
5
5
|
// lib/generate-footprint-tsx/convert-copper-text.ts
|
|
6
6
|
import { su } from "@tscircuit/soup-util";
|
|
@@ -385,8 +385,12 @@ var convertNotes = (circuitJson) => {
|
|
|
385
385
|
return elementStrings;
|
|
386
386
|
};
|
|
387
387
|
|
|
388
|
-
// lib/generate-footprint-tsx/convert-
|
|
388
|
+
// lib/generate-footprint-tsx/convert-pcb-traces.ts
|
|
389
389
|
import { su as su8 } from "@tscircuit/soup-util";
|
|
390
|
+
var convertPcbTraces = (circuitJson) => su8(circuitJson).pcb_trace.list().map((trace) => `<pcbtrace route={${JSON.stringify(trace.route)}} />`);
|
|
391
|
+
|
|
392
|
+
// lib/generate-footprint-tsx/convert-plated-holes.ts
|
|
393
|
+
import { su as su9 } from "@tscircuit/soup-util";
|
|
390
394
|
import { mmStr as mmStr4 } from "@tscircuit/mm";
|
|
391
395
|
|
|
392
396
|
// lib/generate-footprint-tsx/footprint-tsx-attribute-formatters/format-optional-mm-attr.ts
|
|
@@ -407,7 +411,7 @@ var formatSolderMaskAttrs = (platedHole) => {
|
|
|
407
411
|
|
|
408
412
|
// lib/generate-footprint-tsx/convert-plated-holes.ts
|
|
409
413
|
var convertPlatedHoles = (circuitJson) => {
|
|
410
|
-
const platedHoles =
|
|
414
|
+
const platedHoles = su9(circuitJson).pcb_plated_hole.list();
|
|
411
415
|
const elementStrings = [];
|
|
412
416
|
for (const platedHole of platedHoles) {
|
|
413
417
|
if (platedHole.shape === "oval" || platedHole.shape === "pill") {
|
|
@@ -439,12 +443,12 @@ var convertPlatedHoles = (circuitJson) => {
|
|
|
439
443
|
};
|
|
440
444
|
|
|
441
445
|
// lib/generate-footprint-tsx/convert-silkscreen.ts
|
|
442
|
-
import { su as
|
|
446
|
+
import { su as su10 } from "@tscircuit/soup-util";
|
|
443
447
|
var convertSilkscreen = (circuitJson) => {
|
|
444
|
-
const silkscreenLines =
|
|
445
|
-
const silkscreenPaths =
|
|
446
|
-
const silkscreenRects =
|
|
447
|
-
const silkscreenCircles =
|
|
448
|
+
const silkscreenLines = su10(circuitJson).pcb_silkscreen_line.list();
|
|
449
|
+
const silkscreenPaths = su10(circuitJson).pcb_silkscreen_path.list();
|
|
450
|
+
const silkscreenRects = su10(circuitJson).pcb_silkscreen_rect.list();
|
|
451
|
+
const silkscreenCircles = su10(circuitJson).pcb_silkscreen_circle.list();
|
|
448
452
|
const elementStrings = [];
|
|
449
453
|
for (const silkscreenPath of silkscreenPaths) {
|
|
450
454
|
const attrs = [`route={${JSON.stringify(silkscreenPath.route)}}`];
|
|
@@ -515,10 +519,10 @@ var convertSilkscreen = (circuitJson) => {
|
|
|
515
519
|
};
|
|
516
520
|
|
|
517
521
|
// lib/generate-footprint-tsx/convert-silkscreen-text.ts
|
|
518
|
-
import { su as
|
|
522
|
+
import { su as su11 } from "@tscircuit/soup-util";
|
|
519
523
|
import { mmStr as mmStr5 } from "@tscircuit/mm";
|
|
520
524
|
var convertSilkscreenText = (circuitJson) => {
|
|
521
|
-
const silkscreenTexts =
|
|
525
|
+
const silkscreenTexts = su11(circuitJson).pcb_silkscreen_text.list();
|
|
522
526
|
const elementStrings = [];
|
|
523
527
|
for (const silkscreenText of silkscreenTexts) {
|
|
524
528
|
const pcbX = silkscreenText.anchor_position?.x ?? 0;
|
|
@@ -533,10 +537,10 @@ var convertSilkscreenText = (circuitJson) => {
|
|
|
533
537
|
};
|
|
534
538
|
|
|
535
539
|
// lib/generate-footprint-tsx/convert-smt-pads.ts
|
|
536
|
-
import { su as
|
|
540
|
+
import { su as su12 } from "@tscircuit/soup-util";
|
|
537
541
|
import { mmStr as mmStr6 } from "@tscircuit/mm";
|
|
538
542
|
var convertSmtPads = (circuitJson) => {
|
|
539
|
-
const smtPads =
|
|
543
|
+
const smtPads = su12(circuitJson).pcb_smtpad.list();
|
|
540
544
|
const elementStrings = [];
|
|
541
545
|
for (const smtPad of smtPads) {
|
|
542
546
|
const commonAttrs = [];
|
|
@@ -585,9 +589,9 @@ var convertSmtPads = (circuitJson) => {
|
|
|
585
589
|
|
|
586
590
|
// lib/generate-footprint-tsx/convert-vias.ts
|
|
587
591
|
import { mmStr as mmStr7 } from "@tscircuit/mm";
|
|
588
|
-
import { su as
|
|
592
|
+
import { su as su13 } from "@tscircuit/soup-util";
|
|
589
593
|
var convertVias = (circuitJson) => {
|
|
590
|
-
return
|
|
594
|
+
return su13(circuitJson).pcb_via.list().map((via) => {
|
|
591
595
|
const fromLayer = via.from_layer ?? via.layers[0];
|
|
592
596
|
const toLayer = via.to_layer ?? via.layers[via.layers.length - 1];
|
|
593
597
|
if (!fromLayer || !toLayer) {
|
|
@@ -609,6 +613,7 @@ var generateFootprintTsx = (circuitJson) => {
|
|
|
609
613
|
convertPlatedHoles,
|
|
610
614
|
convertVias,
|
|
611
615
|
convertSmtPads,
|
|
616
|
+
convertPcbTraces,
|
|
612
617
|
convertSilkscreen,
|
|
613
618
|
convertFabrication,
|
|
614
619
|
convertSilkscreenText,
|
|
@@ -634,7 +639,7 @@ var getBoardUsingTemplate = ({
|
|
|
634
639
|
circuitJson,
|
|
635
640
|
componentName
|
|
636
641
|
}) => {
|
|
637
|
-
const pcbBoard =
|
|
642
|
+
const pcbBoard = su14(circuitJson).pcb_board.list()[0];
|
|
638
643
|
const boardProps = [];
|
|
639
644
|
if (pcbBoard) {
|
|
640
645
|
if (pcbBoard.width !== void 0) {
|
|
@@ -686,18 +691,18 @@ ${componentName ? `export default ${componentName}` : ""}
|
|
|
686
691
|
};
|
|
687
692
|
|
|
688
693
|
// lib/generate-symbol-tsx.ts
|
|
689
|
-
import { su as
|
|
694
|
+
import { su as su15 } from "@tscircuit/soup-util";
|
|
690
695
|
var escapeJsxText2 = (text) => text.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
691
696
|
var generateSymbolTsx = (circuitJson) => {
|
|
692
|
-
const schematicArcs =
|
|
693
|
-
const schematicLines =
|
|
694
|
-
const schematicPaths =
|
|
695
|
-
const schematicTexts =
|
|
696
|
-
const schematicCircles =
|
|
697
|
-
const schematicBoxes =
|
|
698
|
-
const schematicRects =
|
|
699
|
-
const schematicTables =
|
|
700
|
-
const schematicTableCells =
|
|
697
|
+
const schematicArcs = su15(circuitJson).schematic_arc.list();
|
|
698
|
+
const schematicLines = su15(circuitJson).schematic_line.list();
|
|
699
|
+
const schematicPaths = su15(circuitJson).schematic_path.list();
|
|
700
|
+
const schematicTexts = su15(circuitJson).schematic_text.list();
|
|
701
|
+
const schematicCircles = su15(circuitJson).schematic_circle.list();
|
|
702
|
+
const schematicBoxes = su15(circuitJson).schematic_box.list();
|
|
703
|
+
const schematicRects = su15(circuitJson).schematic_rect.list();
|
|
704
|
+
const schematicTables = su15(circuitJson).schematic_table.list();
|
|
705
|
+
const schematicTableCells = su15(circuitJson).schematic_table_cell.list();
|
|
701
706
|
const elementStrings = [];
|
|
702
707
|
for (const arc of schematicArcs) {
|
|
703
708
|
const center = arc.center ?? { x: 0, y: 0 };
|
package/dist/cli/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
convertCircuitJsonToTscircuit
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-U24G34W6.js";
|
|
5
5
|
|
|
6
6
|
// cli/main.ts
|
|
7
7
|
import { Command } from "commander";
|
|
@@ -16,7 +16,7 @@ var package_default = {
|
|
|
16
16
|
"./cli": "./dist/cli/main.js"
|
|
17
17
|
},
|
|
18
18
|
type: "module",
|
|
19
|
-
version: "0.0.
|
|
19
|
+
version: "0.0.56",
|
|
20
20
|
repository: {
|
|
21
21
|
type: "git",
|
|
22
22
|
url: "https://github.com/tscircuit/circuit-json-to-tscircuit.git"
|
package/dist/lib/index.js
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { su } from "@tscircuit/soup-util"
|
|
2
|
+
import type { FootprintElementConverter } from "./converter-types"
|
|
3
|
+
|
|
4
|
+
export const convertPcbTraces: FootprintElementConverter = (circuitJson) =>
|
|
5
|
+
su(circuitJson)
|
|
6
|
+
.pcb_trace.list()
|
|
7
|
+
.map((trace) => `<pcbtrace route={${JSON.stringify(trace.route)}} />`)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { AnyCircuitElement } from "circuit-json"
|
|
2
|
-
import type { FootprintElementConverter } from "./generate-footprint-tsx/converter-types"
|
|
3
2
|
import { convertCopperText } from "./generate-footprint-tsx/convert-copper-text"
|
|
4
3
|
import { convertCourtyard } from "./generate-footprint-tsx/convert-courtyard"
|
|
5
4
|
import { convertCutouts } from "./generate-footprint-tsx/convert-cutouts"
|
|
@@ -7,11 +6,13 @@ import { convertFabrication } from "./generate-footprint-tsx/convert-fabrication
|
|
|
7
6
|
import { convertHoles } from "./generate-footprint-tsx/convert-holes"
|
|
8
7
|
import { convertKeepouts } from "./generate-footprint-tsx/convert-keepouts"
|
|
9
8
|
import { convertNotes } from "./generate-footprint-tsx/convert-notes"
|
|
9
|
+
import { convertPcbTraces } from "./generate-footprint-tsx/convert-pcb-traces"
|
|
10
10
|
import { convertPlatedHoles } from "./generate-footprint-tsx/convert-plated-holes"
|
|
11
11
|
import { convertSilkscreen } from "./generate-footprint-tsx/convert-silkscreen"
|
|
12
12
|
import { convertSilkscreenText } from "./generate-footprint-tsx/convert-silkscreen-text"
|
|
13
13
|
import { convertSmtPads } from "./generate-footprint-tsx/convert-smt-pads"
|
|
14
14
|
import { convertVias } from "./generate-footprint-tsx/convert-vias"
|
|
15
|
+
import type { FootprintElementConverter } from "./generate-footprint-tsx/converter-types"
|
|
15
16
|
|
|
16
17
|
export const generateFootprintTsx = (
|
|
17
18
|
circuitJson: AnyCircuitElement[],
|
|
@@ -21,6 +22,7 @@ export const generateFootprintTsx = (
|
|
|
21
22
|
convertPlatedHoles,
|
|
22
23
|
convertVias,
|
|
23
24
|
convertSmtPads,
|
|
25
|
+
convertPcbTraces,
|
|
24
26
|
convertSilkscreen,
|
|
25
27
|
convertFabrication,
|
|
26
28
|
convertSilkscreenText,
|
package/package.json
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import type { CircuitJson, PcbTrace } from "circuit-json"
|
|
3
|
+
import { convertCircuitJsonToTscircuit } from "lib"
|
|
4
|
+
import { runTscircuitCode } from "tscircuit"
|
|
5
|
+
|
|
6
|
+
test("preserves routed PCB trace geometry", async () => {
|
|
7
|
+
const route: PcbTrace["route"] = [
|
|
8
|
+
{ route_type: "wire", x: -4, y: 1, width: 0.3, layer: "top" },
|
|
9
|
+
{ route_type: "wire", x: 4, y: 1, width: 0.3, layer: "top" },
|
|
10
|
+
]
|
|
11
|
+
const circuitJson: CircuitJson = [
|
|
12
|
+
{
|
|
13
|
+
type: "pcb_board",
|
|
14
|
+
pcb_board_id: "pcb_board_0",
|
|
15
|
+
center: { x: 0, y: 0 },
|
|
16
|
+
width: 10,
|
|
17
|
+
height: 10,
|
|
18
|
+
thickness: 1.6,
|
|
19
|
+
num_layers: 2,
|
|
20
|
+
material: "fr4",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: "pcb_trace",
|
|
24
|
+
pcb_trace_id: "pcb_trace_0",
|
|
25
|
+
route,
|
|
26
|
+
},
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
const generatedTscircuit = convertCircuitJsonToTscircuit(circuitJson, {
|
|
30
|
+
componentName: "TraceBoard",
|
|
31
|
+
})
|
|
32
|
+
const renderedCircuitJson = await runTscircuitCode(generatedTscircuit)
|
|
33
|
+
const trace = renderedCircuitJson.find(
|
|
34
|
+
(element) => element.type === "pcb_trace",
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
expect(trace).toMatchObject({ route })
|
|
38
|
+
})
|