From 17b5a2e52176c1e04f37c91c53d4d5761fc0ec4a Mon Sep 17 00:00:00 2001 From: techmannih Date: Mon, 13 Jul 2026 10:58:06 +0530 Subject: [PATCH] fix: restore direct raw EasyEDA JSON input for TSX conversion --- .../convert-to-typescript-component/index.tsx | 8 +- tests/assets/C44346038.raweasy.json | 276 ++++++++++++++++++ .../convert-to-ts/C44346038-raw-to-ts.test.ts | 22 ++ .../C44346038-raw-to-ts.snap.svg | 1 + 4 files changed, 306 insertions(+), 1 deletion(-) create mode 100644 tests/assets/C44346038.raweasy.json create mode 100644 tests/convert-to-ts/C44346038-raw-to-ts.test.ts create mode 100644 tests/convert-to-ts/__snapshots__/C44346038-raw-to-ts.snap.svg diff --git a/lib/websafe/convert-to-typescript-component/index.tsx b/lib/websafe/convert-to-typescript-component/index.tsx index c9d4f49d..6f0fdf99 100644 --- a/lib/websafe/convert-to-typescript-component/index.tsx +++ b/lib/websafe/convert-to-typescript-component/index.tsx @@ -3,6 +3,7 @@ import { convertEasyEdaJsonToCircuitJson } from "lib/convert-easyeda-json-to-tsc import { type BetterEasyEdaJson, EasyEdaJsonSchema, + type RawEasyEdaJson, } from "lib/schemas/easy-eda-json-schema" import { normalizeManufacturerPartNumber } from "lib/utils/normalize-manufacturer-part-number" import { getEasyEdaCadModelPlacement } from "../get-easyeda-cad-model-placement" @@ -23,7 +24,12 @@ const getGeneratedComponentType = ( return "chip" } -export const convertRawEasyToTsx = async ({ rawEasy }: { rawEasy: any }) => { +type ConvertRawEasyToTsxInput = RawEasyEdaJson | { rawEasy: RawEasyEdaJson } + +export const convertRawEasyToTsx = async (input: ConvertRawEasyToTsxInput) => { + // The public API and CLI pass raw EasyEDA JSON directly. Keep accepting the + // temporary wrapped form too so existing callers are not broken. + const rawEasy = "rawEasy" in input ? input.rawEasy : input const betterEasy = EasyEdaJsonSchema.parse(rawEasy) const result = await convertBetterEasyToTsx({ betterEasy, diff --git a/tests/assets/C44346038.raweasy.json b/tests/assets/C44346038.raweasy.json new file mode 100644 index 00000000..fd9e5502 --- /dev/null +++ b/tests/assets/C44346038.raweasy.json @@ -0,0 +1,276 @@ +{ + "uuid": "42ac70696de840a1b1bd0b9ccd2565a5", + "title": "CC2745R10E0WRHARQ1", + "description": "", + "docType": 2, + "type": 3, + "thumb": "//image.lceda.cn/components/42ac70696de840a1b1bd0b9ccd2565a5.png", + "lcsc": { + "id": 46436165, + "number": "C44346038" + }, + "szlcsc": { + "id": 46436165, + "number": "C44346038" + }, + "owner": { + "uuid": "0819f05c4eef4c71ace90d822a990e87", + "username": "lcsc", + "nickname": "LCSC", + "avatar": "//image.lceda.cn/avatars/2018/6/kFlrasi7W06gTdBLAqW3fkrqbDhbowynuSzkjqso.png" + }, + "tags": [], + "updateTime": 1754295854, + "updated_at": "2025-08-04 08:25:50", + "dataStr": { + "head": { + "docType": "2", + "editorVersion": "6.5.50", + "x": 400, + "y": 295, + "c_para": { + "pre": "U?", + "name": "CC2745R10E0WRHARQ1", + "package": "QFN-40_L6.0-W6.0-P0.50-TL-EP4.7", + "Supplier": "LCSC", + "Supplier Part": "C44346038", + "Manufacturer": "TI(德州仪器)", + "Manufacturer Part": "CC2745R10E0WRHARQ1", + "JLCPCB Part Class": "Extended Part", + "Contributor": "lcsc" + }, + "puuid": "6271d3068f6d4af1bbbf837554a0a657", + "utime": 1754011080, + "uuid": "42ac70696de840a1b1bd0b9ccd2565a5", + "importFlag": 0, + "c_spiceCmd": null, + "pre": "U?", + "name": "CC2745R10E0WRHARQ1", + "hasIdFlag": true + }, + "canvas": "CA~1000~1000~#FFFFFF~yes~#CCCCCC~5~1000~1000~line~5~pixel~5~400~295", + "shape": [ + "R~320~185~2~2~160~220~#880000~1~0~none~gge1~0~", + "E~325~190~1.5~1.5~#880000~1~0~#880000~gge2~0", + "P~show~0~1~310~205~180~gge5~0^^310~205^^M310,205h10~#FF0000^^1~323.7~209~0~VDDR~start~~~#FF0000^^1~319.5~204~0~1~end~~~#FF0000^^0~317~205^^0~M 320 208 L 323 205 L 320 202", + "P~show~0~2~310~215~180~gge6~0^^310~215^^M310,215h10~#FF0000^^1~323.7~219~0~VDDR~start~~~#FF0000^^1~319.5~214~0~2~end~~~#FF0000^^0~317~215^^0~M 320 218 L 323 215 L 320 212", + "P~show~0~3~310~225~180~gge7~0^^310~225^^M310,225h10~#880000^^1~323.7~229~0~DIO0~start~~~#0000FF^^1~319.5~224~0~3~end~~~#0000FF^^0~317~225^^0~M 320 228 L 323 225 L 320 222", + "P~show~0~4~310~235~180~gge8~0^^310~235^^M310,235h10~#880000^^1~323.7~239~0~DIO1~start~~~#0000FF^^1~319.5~234~0~4~end~~~#0000FF^^0~317~235^^0~M 320 238 L 323 235 L 320 232", + "P~show~0~5~310~245~180~gge9~0^^310~245^^M310,245h10~#880000^^1~323.7~249~0~DIO2~start~~~#0000FF^^1~319.5~244~0~5~end~~~#0000FF^^0~317~245^^0~M 320 248 L 323 245 L 320 242", + "P~show~0~6~310~255~180~gge10~0^^310~255^^M310,255h10~#880000^^1~323.7~259~0~DIO3~start~~~#0000FF^^1~319.5~254~0~6~end~~~#0000FF^^0~317~255^^0~M 320 258 L 323 255 L 320 252", + "P~show~0~7~310~265~180~gge11~0^^310~265^^M310,265h10~#880000^^1~323.7~269~0~DIO4~start~~~#0000FF^^1~319.5~264~0~7~end~~~#0000FF^^0~317~265^^0~M 320 268 L 323 265 L 320 262", + "P~show~0~8~310~275~180~gge12~0^^310~275^^M310,275h10~#880000^^1~323.7~279~0~DIO5~start~~~#0000FF^^1~319.5~274~0~8~end~~~#0000FF^^0~317~275^^0~M 320 278 L 323 275 L 320 272", + "P~show~0~9~310~285~180~gge13~0^^310~285^^M310,285h10~#FF0000^^1~323.7~289~0~VDDIO~start~~~#FF0000^^1~319.5~284~0~9~end~~~#FF0000^^0~317~285^^0~M 320 288 L 323 285 L 320 282", + "P~show~0~10~310~295~180~gge14~0^^310~295^^M310,295h10~#880000^^1~323.7~299~0~DIO7~start~~~#0000FF^^1~319.5~294~0~10~end~~~#0000FF^^0~317~295^^0~M 320 298 L 323 295 L 320 292", + "P~show~0~11~310~305~180~gge15~0^^310~305^^M310,305h10~#880000^^1~323.7~309~0~DIO9_SWDIO~start~~~#0000FF^^1~319.5~304~0~11~end~~~#0000FF^^0~317~305^^0~M 320 308 L 323 305 L 320 302", + "P~show~0~12~310~315~180~gge16~0^^310~315^^M310,315h10~#880000^^1~323.7~319~0~DIO10_SWDCK~start~~~#0000FF^^1~319.5~314~0~12~end~~~#0000FF^^0~317~315^^0~M 320 318 L 323 315 L 320 312", + "P~show~0~13~310~325~180~gge17~0^^310~325^^M310,325h10~#880000^^1~323.7~329~0~DIO11~start~~~#0000FF^^1~319.5~324~0~13~end~~~#0000FF^^0~317~325^^0~M 320 328 L 323 325 L 320 322", + "P~show~0~14~310~335~180~gge18~0^^310~335^^M310,335h10~#880000^^1~323.7~339~0~DIO12~start~~~#0000FF^^1~319.5~334~0~14~end~~~#0000FF^^0~317~335^^0~M 320 338 L 323 335 L 320 332", + "P~show~0~15~310~345~180~gge19~0^^310~345^^M310,345h10~#880000^^1~323.7~349~0~DIO15~start~~~#0000FF^^1~319.5~344~0~15~end~~~#0000FF^^0~317~345^^0~M 320 348 L 323 345 L 320 342", + "P~show~0~16~310~355~180~gge20~0^^310~355^^M310,355h10~#880000^^1~323.7~359~0~DIO16~start~~~#0000FF^^1~319.5~354~0~16~end~~~#0000FF^^0~317~355^^0~M 320 358 L 323 355 L 320 352", + "P~show~0~17~310~365~180~gge21~0^^310~365^^M310,365h10~#FF0000^^1~323.7~369~0~VDDIO~start~~~#FF0000^^1~319.5~364~0~17~end~~~#FF0000^^0~317~365^^0~M 320 368 L 323 365 L 320 362", + "P~show~0~18~310~375~180~gge22~0^^310~375^^M310,375h10~#FF0000^^1~323.7~379~0~VDDS~start~~~#FF0000^^1~319.5~374~0~18~end~~~#FF0000^^0~317~375^^0~M 320 378 L 323 375 L 320 372", + "P~show~0~19~310~385~180~gge23~0^^310~385^^M310,385h10~#880000^^1~323.7~389~0~DIO17_A8~start~~~#0000FF^^1~319.5~384~0~19~end~~~#0000FF^^0~317~385^^0~M 320 388 L 323 385 L 320 382", + "P~show~0~20~310~395~180~gge24~0^^310~395^^M310,395h10~#880000^^1~323.7~399~0~DIO18_A7~start~~~#0000FF^^1~319.5~394~0~20~end~~~#0000FF^^0~317~395^^0~M 320 398 L 323 395 L 320 392", + "P~show~0~21~490~395~0~gge25~0^^490~395^^M490,395h-10~#880000^^1~476.3~399~0~DIO19_A6~end~~~#0000FF^^1~480.5~394~0~21~start~~~#0000FF^^0~483~395^^0~M 480 392 L 477 395 L 480 398", + "P~show~0~22~490~385~0~gge26~0^^490~385^^M490,385h-10~#880000^^1~476.3~389~0~DIO20_A5~end~~~#0000FF^^1~480.5~384~0~22~start~~~#0000FF^^0~483~385^^0~M 480 382 L 477 385 L 480 388", + "P~show~0~23~490~375~0~gge27~0^^490~375^^M490,375h-10~#880000^^1~476.3~379~0~DIO21_A4~end~~~#0000FF^^1~480.5~374~0~23~start~~~#0000FF^^0~483~375^^0~M 480 372 L 477 375 L 480 378", + "P~show~0~24~490~365~0~gge28~0^^490~365^^M490,365h-10~#880000^^1~476.3~369~0~DIO22_A3~end~~~#0000FF^^1~480.5~364~0~24~start~~~#0000FF^^0~483~365^^0~M 480 362 L 477 365 L 480 368", + "P~show~0~25~490~355~0~gge29~0^^490~355^^M490,355h-10~#880000^^1~476.3~359~0~RSTN~end~~~#0000FF^^1~480.5~354~0~25~start~~~#0000FF^^0~483~355^^0~M 480 352 L 477 355 L 480 358", + "P~show~0~26~490~345~0~gge30~0^^490~345^^M490,345h-10~#880000^^1~476.3~349~0~DIO23_X32P~end~~~#0000FF^^1~480.5~344~0~26~start~~~#0000FF^^0~483~345^^0~M 480 342 L 477 345 L 480 348", + "P~show~0~27~490~335~0~gge31~0^^490~335^^M490,335h-10~#880000^^1~476.3~339~0~DIO24_X32N~end~~~#0000FF^^1~480.5~334~0~27~start~~~#0000FF^^0~483~335^^0~M 480 332 L 477 335 L 480 338", + "P~show~0~28~490~325~0~gge32~0^^490~325^^M490,325h-10~#FF0000^^1~476.3~329~0~VDDD~end~~~#FF0000^^1~480.5~324~0~28~start~~~#FF0000^^0~483~325^^0~M 480 322 L 477 325 L 480 328", + "P~show~0~29~490~315~0~gge33~0^^490~315^^M490,315h-10~#FF0000^^1~476.3~319~0~VDDS~end~~~#FF0000^^1~480.5~314~0~29~start~~~#FF0000^^0~483~315^^0~M 480 312 L 477 315 L 480 318", + "P~show~0~30~490~305~0~gge34~0^^490~305^^M490,305h-10~#880000^^1~476.3~309~0~DCDC~end~~~#0000FF^^1~480.5~304~0~30~start~~~#0000FF^^0~483~305^^0~M 480 302 L 477 305 L 480 308", + "P~show~0~31~490~295~0~gge35~0^^490~295^^M490,295h-10~#FF0000^^1~476.3~299~0~VDDS~end~~~#FF0000^^1~480.5~294~0~31~start~~~#FF0000^^0~483~295^^0~M 480 292 L 477 295 L 480 298", + "P~show~0~32~490~285~0~gge36~0^^490~285^^M490,285h-10~#880000^^1~476.3~289~0~DIO27_A1~end~~~#0000FF^^1~480.5~284~0~32~start~~~#0000FF^^0~483~285^^0~M 480 282 L 477 285 L 480 288", + "P~show~0~33~490~275~0~gge37~0^^490~275^^M490,275h-10~#880000^^1~476.3~279~0~DIO28_A0~end~~~#0000FF^^1~480.5~274~0~33~start~~~#0000FF^^0~483~275^^0~M 480 272 L 477 275 L 480 278", + "P~show~0~34~490~265~0~gge38~0^^490~265^^M490,265h-10~#FF0000^^1~476.3~269~0~VDDR~end~~~#FF0000^^1~480.5~264~0~34~start~~~#FF0000^^0~483~265^^0~M 480 262 L 477 265 L 480 268", + "P~show~0~35~490~255~0~gge39~0^^490~255^^M490,255h-10~#880000^^1~476.3~259~0~X48P~end~~~#0000FF^^1~480.5~254~0~35~start~~~#0000FF^^0~483~255^^0~M 480 252 L 477 255 L 480 258", + "P~show~0~36~490~245~0~gge40~0^^490~245^^M490,245h-10~#880000^^1~476.3~249~0~X48N~end~~~#0000FF^^1~480.5~244~0~36~start~~~#0000FF^^0~483~245^^0~M 480 242 L 477 245 L 480 248", + "P~show~0~37~490~235~0~gge41~0^^490~235^^M490,235h-10~#880000^^1~476.3~239~0~NC~end~~~#0000FF^^1~480.5~234~0~37~start~~~#0000FF^^0~483~235^^0~M 480 232 L 477 235 L 480 238", + "P~show~0~38~490~225~0~gge42~0^^490~225^^M490,225h-10~#FF0000^^1~476.3~229~0~VDDS~end~~~#FF0000^^1~480.5~224~0~38~start~~~#FF0000^^0~483~225^^0~M 480 222 L 477 225 L 480 228", + "P~show~0~39~490~215~0~gge43~0^^490~215^^M490,215h-10~#880000^^1~476.3~219~0~ANT~end~~~#0000FF^^1~480.5~214~0~39~start~~~#0000FF^^0~483~215^^0~M 480 212 L 477 215 L 480 218", + "P~show~0~40~490~205~0~gge44~0^^490~205^^M490,205h-10~#880000^^1~476.3~209~0~NC~end~~~#0000FF^^1~480.5~204~0~40~start~~~#0000FF^^0~483~205^^0~M 480 202 L 477 205 L 480 208", + "P~show~0~41~490~195~~gge48~0^^490~195^^M 490 195 h -10~#880000^^1~478~198~0~EP~end~~~#0000FF^^1~480~194~0~41~start~~~#0000FF^^0~483~195^^0~M 480 192 L 477 195 L 480 198" + ], + "BBox": { + "x": 307.6, + "y": 184.5, + "width": 184.8, + "height": 220.5 + }, + "colors": [] + }, + "jlcOnSale": 1, + "datastrid": "1b176cfb488e45338e32fc1173b72a0e", + "verify": true, + "writable": false, + "isFavorite": false, + "packageDetail": { + "uuid": "6271d3068f6d4af1bbbf837554a0a657", + "title": "QFN-40_L6.0-W6.0-P0.50-TL-EP4.7", + "docType": 4, + "updateTime": 1649645466, + "owner": { + "uuid": "0819f05c4eef4c71ace90d822a990e87", + "username": "lcsc", + "nickname": "LCSC", + "avatar": "//image.lceda.cn/avatars/2018/6/kFlrasi7W06gTdBLAqW3fkrqbDhbowynuSzkjqso.png" + }, + "datastrid": "47f4d81c2e6a4bdc9b4913ed1c3e1d63", + "writable": false, + "dataStr": { + "head": { + "docType": "4", + "editorVersion": "6.5.3", + "newgId": true, + "c_para": { + "package": "QFN-40_L6.0-W6.0-P0.50-TL-EP4.7", + "pre": "U?", + "Contributor": "lcsc", + "link": "https://atta.szlcsc.com/upload/public/pdf/source/20200628/C661820_9D3C941041288D44ECADF76A6F259365.pdf" + }, + "x": 3998.8441, + "y": 3000.1913, + "hasIdFlag": true, + "uuid": "6271d3068f6d4af1bbbf837554a0a657", + "utime": 1649468810 + }, + "canvas": "CA~1000~1000~#000000~yes~#FFFFFF~10~1000~1000~line~0.5~mm~1~45~~0.5~3998.8441~3000.1913~0~none", + "shape": [ + "PAD~RECT~4010.6551~3009.0493~0.9843~3.5433~1~~21~0~4008.8834 3009.5417 4008.8834 3008.5575 4012.4268 3008.5575 4012.4268 3009.5417~90~gge1384~0~~Y~0~0~0.1969~4010.6551,3009.0496", + "PAD~RECT~4010.6551~3007.0813~0.9843~3.5433~1~~22~0~4008.8834 3007.5732 4008.8834 3006.589 4012.4268 3006.589 4012.4268 3007.5732~90~gge1387~0~~Y~0~0~0.1969~4010.6551,3007.0811", + "PAD~RECT~4010.6551~3005.1123~0.9843~3.5433~1~~23~0~4008.8834 3005.6047 4008.8834 3004.6205 4012.4268 3004.6205 4012.4268 3005.6047~90~gge1390~0~~Y~0~0~0.1969~4010.6551,3005.1125", + "PAD~RECT~4010.6551~3003.1443~0.9843~3.5433~1~~24~0~4008.8834 3003.6362 4008.8834 3002.652 4012.4268 3002.652 4012.4268 3003.6362~90~gge1393~0~~Y~0~0~0.1969~4010.6551,3003.144", + "PAD~RECT~4010.6551~2991.3333~0.9843~3.5433~1~~30~0~4008.8834 2991.825 4008.8834 2990.8408 4012.4268 2990.8408 4012.4268 2991.825~90~gge1396~0~~Y~0~0~0.1969~4010.6551,2991.333", + "PAD~RECT~4010.6551~2993.3013~0.9843~3.5433~1~~29~0~4008.8834 2993.7935 4008.8834 2992.8093 4012.4268 2992.8093 4012.4268 2993.7935~90~gge1399~0~~Y~0~0~0.1969~4010.6551,2993.3015", + "PAD~RECT~4010.6551~2995.2703~0.9843~3.5433~1~~28~0~4008.8834 2995.762 4008.8834 2994.7778 4012.4268 2994.7778 4012.4268 2995.762~90~gge1402~0~~Y~0~0~0.1969~4010.6551,2995.27", + "PAD~RECT~4010.6551~2997.2383~0.9843~3.5433~1~~27~0~4008.8834 2997.7305 4008.8834 2996.7463 4012.4268 2996.7463 4012.4268 2997.7305~90~gge1405~0~~Y~0~0~0.1969~4010.6551,2997.2385", + "PAD~RECT~4010.6551~2999.2073~0.9843~3.5433~1~~26~0~4008.8834 2999.699 4008.8834 2998.7148 4012.4268 2998.7148 4012.4268 2999.699~90~gge1408~0~~Y~0~0~0.1969~4010.6551,2999.207", + "PAD~RECT~4010.6551~3001.1753~0.9843~3.5433~1~~25~0~4008.8834 3001.6677 4008.8834 3000.6835 4012.4268 3000.6835 4012.4268 3001.6677~90~gge1411~0~~Y~0~0~0.1969~4010.6551,3001.1756", + "PAD~RECT~3987.0331~3001.1753~0.9843~3.5433~1~~6~0~3985.2614 3001.6677 3985.2614 3000.6835 3988.8048 3000.6835 3988.8048 3001.6677~90~gge1414~0~~Y~0~0~0.1969~3987.0331,3001.1756", + "PAD~RECT~3987.0331~2999.2073~0.9843~3.5433~1~~5~0~3985.2614 2999.699 3985.2614 2998.7148 3988.8048 2998.7148 3988.8048 2999.699~90~gge1417~0~~Y~0~0~0.1969~3987.0331,2999.207", + "PAD~RECT~3987.0331~2997.2383~0.9843~3.5433~1~~4~0~3985.2614 2997.7305 3985.2614 2996.7463 3988.8048 2996.7463 3988.8048 2997.7305~90~gge1420~0~~Y~0~0~0.1969~3987.0331,2997.2385", + "PAD~RECT~3987.0331~2995.2703~0.9843~3.5433~1~~3~0~3985.2614 2995.762 3985.2614 2994.7778 3988.8048 2994.7778 3988.8048 2995.762~90~gge1423~0~~Y~0~0~0.1969~3987.0331,2995.27", + "PAD~RECT~3987.0331~2993.3013~0.9843~3.5433~1~~2~0~3985.2614 2993.7935 3985.2614 2992.8093 3988.8048 2992.8093 3988.8048 2993.7935~90~gge1426~0~~Y~0~0~0.1969~3987.0331,2993.3015", + "PAD~RECT~3987.0331~2991.3333~0.9843~3.5433~1~~1~0~3985.2614 2991.825 3985.2614 2990.8408 3988.8048 2990.8408 3988.8048 2991.825~90~gge1429~0~~Y~0~0~0.1969~3987.0331,2991.333", + "PAD~RECT~3987.0331~3003.1443~0.9843~3.5433~1~~7~0~3985.2614 3003.6362 3985.2614 3002.652 3988.8048 3002.652 3988.8048 3003.6362~90~gge1432~0~~Y~0~0~0.1969~3987.0331,3003.144", + "PAD~RECT~3987.0331~3005.1123~0.9843~3.5433~1~~8~0~3985.2614 3005.6047 3985.2614 3004.6205 3988.8048 3004.6205 3988.8048 3005.6047~90~gge1435~0~~Y~0~0~0.1969~3987.0331,3005.1125", + "PAD~RECT~3987.0331~3007.0813~0.9843~3.5433~1~~9~0~3985.2614 3007.5732 3985.2614 3006.589 3988.8048 3006.589 3988.8048 3007.5732~90~gge1438~0~~Y~0~0~0.1969~3987.0331,3007.0811", + "PAD~RECT~3987.0331~3009.0493~0.9843~3.5433~1~~10~0~3985.2614 3009.5417 3985.2614 3008.5575 3988.8048 3008.5575 3988.8048 3009.5417~90~gge1441~0~~Y~0~0~0.1969~3987.0331,3009.0496", + "PAD~RECT~3997.8601~2988.3803~0.9843~3.5433~1~~36~0~3997.3677 2986.6086 3998.3519 2986.6086 3998.3519 2990.152 3997.3677 2990.152~0~gge1444~0~~Y~0~0~0.1969~3997.8598,2988.3803", + "PAD~RECT~3999.8281~2988.3803~0.9843~3.5433~1~~35~0~3999.3364 2986.6086 4000.3206 2986.6086 4000.3206 2990.152 3999.3364 2990.152~0~gge1447~0~~Y~0~0~0.1969~3999.8284,2988.3803", + "PAD~RECT~4001.7971~2988.3803~0.9843~3.5433~1~~34~0~4001.3049 2986.6086 4002.2891 2986.6086 4002.2891 2990.152 4001.3049 2990.152~0~gge1450~0~~Y~0~0~0.1969~4001.7969,2988.3803", + "PAD~RECT~4003.7651~2988.3803~0.9843~3.5433~1~~33~0~4003.2734 2986.6086 4004.2576 2986.6086 4004.2576 2990.152 4003.2734 2990.152~0~gge1453~0~~Y~0~0~0.1969~4003.7654,2988.3803", + "PAD~RECT~4005.7341~2988.3803~0.9843~3.5433~1~~32~0~4005.2419 2986.6086 4006.2261 2986.6086 4006.2261 2990.152 4005.2419 2990.152~0~gge1456~0~~Y~0~0~0.1969~4005.7339,2988.3803", + "PAD~RECT~4007.7021~2988.3803~0.9843~3.5433~1~~31~0~4007.2104 2986.6086 4008.1946 2986.6086 4008.1946 2990.152 4007.2104 2990.152~0~gge1459~0~~Y~0~0~0.1969~4007.7024,2988.3803", + "PAD~RECT~3995.8911~2988.3803~0.9843~3.5433~1~~37~0~3995.3992 2986.6086 3996.3834 2986.6086 3996.3834 2990.152 3995.3992 2990.152~0~gge1462~0~~Y~0~0~0.1969~3995.8914,2988.3803", + "PAD~RECT~3993.9231~2988.3803~0.9843~3.5433~1~~38~0~3993.4307 2986.6086 3994.4149 2986.6086 3994.4149 2990.152 3993.4307 2990.152~0~gge1465~0~~Y~0~0~0.1969~3993.9229,2988.3803", + "PAD~RECT~3991.9541~2988.3803~0.9843~3.5433~1~~39~0~3991.4622 2986.6086 3992.4464 2986.6086 3992.4464 2990.152 3991.4622 2990.152~0~gge1468~0~~Y~0~0~0.1969~3991.9543,2988.3803", + "PAD~RECT~3989.9861~2988.3803~0.9843~3.5433~1~~40~0~3989.4937 2986.6086 3990.4779 2986.6086 3990.4779 2990.152 3989.4937 2990.152~0~gge1471~0~~Y~0~0~0.1969~3989.9858,2988.3803", + "PAD~RECT~3989.9861~3012.0023~0.9843~3.5433~1~~11~0~3989.4937 3010.2306 3990.4779 3010.2306 3990.4779 3013.774 3989.4937 3013.774~0~gge1474~0~~Y~0~0~0.1969~3989.9858,3012.0023", + "PAD~RECT~3991.9541~3012.0023~0.9843~3.5433~1~~12~0~3991.4622 3010.2306 3992.4464 3010.2306 3992.4464 3013.774 3991.4622 3013.774~0~gge1477~0~~Y~0~0~0.1969~3991.9543,3012.0023", + "PAD~RECT~3993.9231~3012.0023~0.9843~3.5433~1~~13~0~3993.4307 3010.2306 3994.4149 3010.2306 3994.4149 3013.774 3993.4307 3013.774~0~gge1480~0~~Y~0~0~0.1969~3993.9228,3012.0023", + "PAD~RECT~3995.8911~3012.0023~0.9843~3.5433~1~~14~0~3995.3992 3010.2306 3996.3834 3010.2306 3996.3834 3013.774 3995.3992 3013.774~0~gge1483~0~~Y~0~0~0.1969~3995.8914,3012.0023", + "PAD~RECT~4007.7021~3012.0023~0.9843~3.5433~1~~20~0~4007.2103 3010.2306 4008.1945 3010.2306 4008.1945 3013.774 4007.2103 3013.774~0~gge1486~0~~Y~0~0~0.1969~4007.7024,3012.0023", + "PAD~RECT~4005.7341~3012.0023~0.9843~3.5433~1~~19~0~4005.2418 3010.2306 4006.226 3010.2306 4006.226 3013.774 4005.2418 3013.774~0~gge1489~0~~Y~0~0~0.1969~4005.7339,3012.0023", + "PAD~RECT~4003.7651~3012.0023~0.9843~3.5433~1~~18~0~4003.2733 3010.2306 4004.2575 3010.2306 4004.2575 3013.774 4003.2733 3013.774~0~gge1492~0~~Y~0~0~0.1969~4003.7654,3012.0023", + "PAD~RECT~4001.7971~3012.0023~0.9843~3.5433~1~~17~0~4001.3048 3010.2306 4002.289 3010.2306 4002.289 3013.774 4001.3048 3013.774~0~gge1495~0~~Y~0~0~0.1969~4001.7969,3012.0023", + "PAD~RECT~3999.8281~3012.0023~0.9843~3.5433~1~~16~0~3999.3363 3010.2306 4000.3205 3010.2306 4000.3205 3013.774 3999.3363 3013.774~0~gge1498~0~~Y~0~0~0.1969~3999.8284,3012.0023", + "PAD~RECT~3998.8441~3000.1913~18.5039~18.5039~1~~41~0~3989.5921 2990.9393 4008.0961 2990.9393 4008.0961 3009.4433 3989.5921 3009.4433~0~gge1501~0~~Y~0~0~0.1969~3998.8441,3000.1913", + "PAD~RECT~3997.8601~3012.0023~0.9843~3.5433~1~~15~0~3997.3677 3010.2306 3998.3519 3010.2306 3998.3519 3013.774 3997.3677 3013.774~0~gge1504~0~~Y~0~0~0.1969~3997.8598,3012.0023", + "TRACK~0.5906~3~~3988.608 2988.3803 3987.0331 2988.3803~gge1513~0", + "TRACK~0.5906~3~~4009.0802 3012.0023 4010.6551 3012.0023~gge1528~0", + "TRACK~0.5906~3~~4010.6551 3010.4274 4010.6551 3012.0023~gge1525~0", + "TRACK~0.5906~3~~3987.0331 3010.4274 3987.0331 3012.0023~gge1522~0", + "TRACK~0.5906~3~~3988.608 3012.0023 3987.0331 3012.0023~gge1519~0", + "TRACK~0.5906~3~~3987.0331 2989.9552 3987.0331 2988.3803~gge1516~0", + "TRACK~0.5906~3~~4010.6551 2989.9552 4010.6551 2988.3803~gge1510~0", + "TRACK~0.5906~3~~4009.0802 2988.3803 4010.6551 2988.3803~gge1507~0", + "ARC~0.7874~3~~M 3982.8441 2991.1913 A 0.3937 0.3937 0 1 0 3982.8275 2991.2185~~gge1381~0" + ], + "layers": [ + "1~TopLayer~#FF0000~true~true~true~", + "2~BottomLayer~#0000FF~true~false~true~", + "3~TopSilkLayer~#FFCC00~true~false~true~", + "4~BottomSilkLayer~#66CC33~true~false~true~", + "5~TopPasteMaskLayer~#808080~true~false~true~", + "6~BottomPasteMaskLayer~#800000~true~false~true~", + "7~TopSolderMaskLayer~#800080~true~false~true~0.3", + "8~BottomSolderMaskLayer~#AA00FF~true~false~true~0.3", + "9~Ratlines~#6464FF~false~false~true~", + "10~BoardOutLine~#FF00FF~true~false~true~", + "11~Multi-Layer~#C0C0C0~true~false~true~", + "12~Document~#FFFFFF~true~false~true~", + "13~TopAssembly~#33CC99~true~false~true~", + "14~BottomAssembly~#5555FF~true~false~true~", + "15~Mechanical~#F022F0~true~false~true~", + "19~3DModel~#66CCFF~true~false~true~", + "21~Inner1~#999966~false~false~false~~", + "22~Inner2~#008000~false~false~false~~", + "23~Inner3~#00FF00~false~false~false~~", + "24~Inner4~#BC8E00~false~false~false~~", + "25~Inner5~#70DBFA~false~false~false~~", + "26~Inner6~#00CC66~false~false~false~~", + "27~Inner7~#9966FF~false~false~false~~", + "28~Inner8~#800080~false~false~false~~", + "29~Inner9~#008080~false~false~false~~", + "30~Inner10~#15935F~false~false~false~~", + "31~Inner11~#000080~false~false~false~~", + "32~Inner12~#00B400~false~false~false~~", + "33~Inner13~#2E4756~false~false~false~~", + "34~Inner14~#99842F~false~false~false~~", + "35~Inner15~#FFFFAA~false~false~false~~", + "36~Inner16~#99842F~false~false~false~~", + "37~Inner17~#2E4756~false~false~false~~", + "38~Inner18~#3535FF~false~false~false~~", + "39~Inner19~#8000BC~false~false~false~~", + "40~Inner20~#43AE5F~false~false~false~~", + "41~Inner21~#C3ECCE~false~false~false~~", + "42~Inner22~#728978~false~false~false~~", + "43~Inner23~#39503F~false~false~false~~", + "44~Inner24~#0C715D~false~false~false~~", + "45~Inner25~#5A8A80~false~false~false~~", + "46~Inner26~#2B937E~false~false~false~~", + "47~Inner27~#23999D~false~false~false~~", + "48~Inner28~#45B4E3~false~false~false~~", + "49~Inner29~#215DA1~false~false~false~~", + "50~Inner30~#4564D7~false~false~false~~", + "51~Inner31~#6969E9~false~false~false~~", + "52~Inner32~#9069E9~false~false~false~~", + "99~ComponentShapeLayer~#00CCCC~true~false~true~0.4", + "100~LeadShapeLayer~#CC9999~true~false~true~", + "101~ComponentMarkingLayer~#66FFCC~true~false~true~", + "Hole~Hole~#222222~~false~true~", + "DRCError~DRCError~#FAD609~~false~true~" + ], + "objects": [ + "All~true~false", + "Component~true~true", + "Prefix~true~true", + "Name~true~false", + "Track~true~true", + "Pad~true~true", + "Via~true~true", + "Hole~true~true", + "Copper_Area~true~true", + "Circle~true~true", + "Arc~true~true", + "Solid_Region~true~true", + "Text~true~true", + "Image~true~true", + "Rect~true~true", + "Dimension~true~true", + "Protractor~true~true" + ], + "BBox": { + "x": 3982.1, + "y": 2986.6, + "width": 30.3, + "height": 27.2 + }, + "netColors": [] + } + } +} diff --git a/tests/convert-to-ts/C44346038-raw-to-ts.test.ts b/tests/convert-to-ts/C44346038-raw-to-ts.test.ts new file mode 100644 index 00000000..28b8a693 --- /dev/null +++ b/tests/convert-to-ts/C44346038-raw-to-ts.test.ts @@ -0,0 +1,22 @@ +import { expect, it } from "bun:test" +import { convertCircuitJsonToPcbSvg } from "circuit-to-svg" +import { convertRawEasyToTsx } from "lib/websafe/convert-to-typescript-component" +import { runTscircuitCode } from "tscircuit" +import chipRawEasy from "../assets/C44346038.raweasy.json" +import { wrapTsxWithBoardFor3dSnapshot } from "../fixtures/wrap-tsx-with-board-for-3d-snapshot" + +it("converts C44346038 from raw EasyEDA JSON", async () => { + const result = await convertRawEasyToTsx(chipRawEasy) + + expect(result).toContain("export const CC2745R10E0WRHARQ1") + expect(result).toContain('"C44346038"') + expect(result).toContain('pin41: ["EP"]') + expect(result).not.toContain("NaNmm") + + const circuitJson = await runTscircuitCode( + wrapTsxWithBoardFor3dSnapshot(result), + ) + expect( + convertCircuitJsonToPcbSvg(circuitJson, { showCourtyards: true }), + ).toMatchSvgSnapshot(import.meta.path) +}) diff --git a/tests/convert-to-ts/__snapshots__/C44346038-raw-to-ts.snap.svg b/tests/convert-to-ts/__snapshots__/C44346038-raw-to-ts.snap.svg new file mode 100644 index 00000000..15542aaa --- /dev/null +++ b/tests/convert-to-ts/__snapshots__/C44346038-raw-to-ts.snap.svg @@ -0,0 +1 @@ +unnamed_chip1 \ No newline at end of file