@tscircuit/cli 0.1.1169 → 0.1.1170
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/cli/main.js +113 -22
- package/dist/lib/index.js +1 -1
- package/package.json +2 -2
package/dist/cli/main.js
CHANGED
|
@@ -98452,7 +98452,7 @@ var package_default = {
|
|
|
98452
98452
|
debug: "^4.4.0",
|
|
98453
98453
|
delay: "^6.0.0",
|
|
98454
98454
|
"dsn-converter": "0.0.86",
|
|
98455
|
-
easyeda: "^0.0.
|
|
98455
|
+
easyeda: "^0.0.253",
|
|
98456
98456
|
"fuse.js": "^7.1.0",
|
|
98457
98457
|
"get-port": "^7.1.0",
|
|
98458
98458
|
globby: "^14.1.0",
|
|
@@ -254917,7 +254917,13 @@ var getCadPositionZMmFromMetadata = (easyEdaJson) => {
|
|
|
254917
254917
|
const minZ = Math.abs(bounds.min.z) < 0.000001 ? 0 : bounds.min.z;
|
|
254918
254918
|
return minZ - mil10ToMm(svgNodeZ);
|
|
254919
254919
|
};
|
|
254920
|
-
var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
|
|
254920
|
+
var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
|
|
254921
|
+
useModelCdn,
|
|
254922
|
+
shouldRecenter = true,
|
|
254923
|
+
cadPositionXMm,
|
|
254924
|
+
cadPositionYMm,
|
|
254925
|
+
cadPositionZMm
|
|
254926
|
+
} = {}) => {
|
|
254921
254927
|
const resolvedCadPositionZMm = cadPositionZMm ?? getCadPositionZMmFromMetadata(easyEdaJson);
|
|
254922
254928
|
const circuitElements = [];
|
|
254923
254929
|
const source_component = any_source_component2.parse({
|
|
@@ -255140,8 +255146,8 @@ var convertEasyEdaJsonToCircuitJson = (easyEdaJson, { useModelCdn, shouldRecente
|
|
|
255140
255146
|
anchor_alignment: "center_of_component_on_board_surface",
|
|
255141
255147
|
model_origin_alignment: "center_of_component_on_board_surface",
|
|
255142
255148
|
model_origin_position: {
|
|
255143
|
-
x: 0,
|
|
255144
|
-
y: 0,
|
|
255149
|
+
x: cadPositionXMm ?? 0,
|
|
255150
|
+
y: cadPositionYMm ?? 0,
|
|
255145
255151
|
z: resolvedCadPositionZMm ?? position22.z
|
|
255146
255152
|
},
|
|
255147
255153
|
position: { x: 0, y: 0, z: 0 },
|
|
@@ -255997,6 +256003,90 @@ function normalizeManufacturerPartNumber(partNumber) {
|
|
|
255997
256003
|
}
|
|
255998
256004
|
return normalized;
|
|
255999
256005
|
}
|
|
256006
|
+
var milToMm = (mil) => mil * 0.0254;
|
|
256007
|
+
var getBoundsCenter = (bounds) => ({
|
|
256008
|
+
x: (bounds.min.x + bounds.max.x) / 2,
|
|
256009
|
+
y: (bounds.min.y + bounds.max.y) / 2
|
|
256010
|
+
});
|
|
256011
|
+
var getCadSvgNode = (easyEdaJson) => {
|
|
256012
|
+
const svgNode = easyEdaJson.packageDetail.dataStr.shape.find((shape) => shape.type === "SVGNODE" && shape.svgData.attrs?.uuid);
|
|
256013
|
+
return svgNode?.type === "SVGNODE" ? svgNode : null;
|
|
256014
|
+
};
|
|
256015
|
+
var parseMil10Value = (value) => Number(String(value).replace("mil", "")) / 10;
|
|
256016
|
+
var isZeroishModelCenter = (value) => Math.abs(value) < 0.000001;
|
|
256017
|
+
var isZeroishFootprintDelta = (value) => Math.abs(value) < 0.001;
|
|
256018
|
+
var getPadCenter = (easyEdaJson) => {
|
|
256019
|
+
const pads = easyEdaJson.packageDetail.dataStr.shape.filter((shape) => shape.type === "PAD");
|
|
256020
|
+
if (pads.length === 0)
|
|
256021
|
+
return null;
|
|
256022
|
+
const xs3 = pads.map((pad2) => parseMil10Value(pad2.center.x));
|
|
256023
|
+
const ys3 = pads.map((pad2) => parseMil10Value(pad2.center.y));
|
|
256024
|
+
return {
|
|
256025
|
+
x: (Math.min(...xs3) + Math.max(...xs3)) / 2,
|
|
256026
|
+
y: (Math.min(...ys3) + Math.max(...ys3)) / 2
|
|
256027
|
+
};
|
|
256028
|
+
};
|
|
256029
|
+
var getRotatedOffsetMm = ({
|
|
256030
|
+
bounds,
|
|
256031
|
+
rawOffsetMil,
|
|
256032
|
+
rotationDeg
|
|
256033
|
+
}) => {
|
|
256034
|
+
const center2 = getBoundsCenter(bounds);
|
|
256035
|
+
const offsetX = milToMm(rawOffsetMil.x);
|
|
256036
|
+
const offsetY = milToMm(rawOffsetMil.y);
|
|
256037
|
+
switch (rotationDeg) {
|
|
256038
|
+
case 0:
|
|
256039
|
+
return { x: center2.x + offsetX, y: center2.y + offsetY };
|
|
256040
|
+
case 90:
|
|
256041
|
+
return { x: center2.x + offsetY, y: center2.y + offsetX };
|
|
256042
|
+
case 180:
|
|
256043
|
+
return { x: center2.x - offsetX, y: center2.y - offsetY };
|
|
256044
|
+
case 270:
|
|
256045
|
+
return { x: center2.x - offsetY, y: center2.y - offsetX };
|
|
256046
|
+
}
|
|
256047
|
+
};
|
|
256048
|
+
var getCadModelOffsetMm = (easyEdaJson) => {
|
|
256049
|
+
const svgNode = getCadSvgNode(easyEdaJson);
|
|
256050
|
+
const bounds = easyEdaJson._objMetadata?.bounds;
|
|
256051
|
+
if (!svgNode || !bounds)
|
|
256052
|
+
return null;
|
|
256053
|
+
const [originX, originY] = String(svgNode.svgData.attrs?.c_origin ?? "0,0").split(",").map((value) => Number(value.trim()));
|
|
256054
|
+
if (!Number.isFinite(originX) || !Number.isFinite(originY))
|
|
256055
|
+
return null;
|
|
256056
|
+
const [, , rotationZRaw] = String(svgNode.svgData.attrs?.c_rotation ?? "0,0,0").split(",").map((value) => Number(value.trim()));
|
|
256057
|
+
const rotationDeg = (rotationZRaw % 360 + 360) % 360;
|
|
256058
|
+
if (![0, 90, 180, 270].includes(rotationDeg))
|
|
256059
|
+
return null;
|
|
256060
|
+
const modelCenter = getBoundsCenter(bounds);
|
|
256061
|
+
const footprintCenter = easyEdaJson.packageDetail.dataStr.head;
|
|
256062
|
+
const padCenter = getPadCenter(easyEdaJson);
|
|
256063
|
+
const padCenterDelta = padCenter ? {
|
|
256064
|
+
x: padCenter.x - footprintCenter.x,
|
|
256065
|
+
y: padCenter.y - footprintCenter.y
|
|
256066
|
+
} : null;
|
|
256067
|
+
const rawOffsetMil = {
|
|
256068
|
+
x: (originX - footprintCenter.x) * 10,
|
|
256069
|
+
y: (originY - footprintCenter.y) * 10
|
|
256070
|
+
};
|
|
256071
|
+
if (padCenter && padCenterDelta && isZeroishModelCenter(modelCenter.x) && isZeroishModelCenter(modelCenter.y) && isZeroishFootprintDelta(padCenterDelta.x) && isZeroishFootprintDelta(padCenterDelta.y)) {
|
|
256072
|
+
return { x: 0, y: 0 };
|
|
256073
|
+
}
|
|
256074
|
+
return getRotatedOffsetMm({
|
|
256075
|
+
bounds,
|
|
256076
|
+
rawOffsetMil,
|
|
256077
|
+
rotationDeg
|
|
256078
|
+
});
|
|
256079
|
+
};
|
|
256080
|
+
var getCadSvgNodeZOffsetMm = (easyEdaJson) => {
|
|
256081
|
+
const svgNode = getCadSvgNode(easyEdaJson);
|
|
256082
|
+
if (!svgNode)
|
|
256083
|
+
return null;
|
|
256084
|
+
const svgNodeZ = Number(svgNode.svgData.attrs?.z ?? 0);
|
|
256085
|
+
if (!Number.isFinite(svgNodeZ))
|
|
256086
|
+
return null;
|
|
256087
|
+
return mil10ToMm(svgNodeZ);
|
|
256088
|
+
};
|
|
256089
|
+
var getCadSvgNodeModelUuid = (easyEdaJson) => getCadSvgNode(easyEdaJson)?.svgData.attrs?.uuid ?? null;
|
|
256000
256090
|
var getModelObjCdnUrl = ({
|
|
256001
256091
|
easyedaModelUuid,
|
|
256002
256092
|
easyedaPartNumber
|
|
@@ -256045,27 +256135,16 @@ var parseObjBounds = (objText) => {
|
|
|
256045
256135
|
max: { x: maxX, y: maxY, z: maxZ }
|
|
256046
256136
|
};
|
|
256047
256137
|
};
|
|
256048
|
-
var getSvgNodeZOffsetMm = (easyEdaJson) => {
|
|
256049
|
-
const svgNode = easyEdaJson.packageDetail.dataStr.shape.find((shape) => shape.type === "SVGNODE" && shape.svgData.attrs?.uuid);
|
|
256050
|
-
if (!svgNode || svgNode.type !== "SVGNODE")
|
|
256051
|
-
return null;
|
|
256052
|
-
const svgNodeZ = Number(svgNode.svgData.attrs?.z ?? 0);
|
|
256053
|
-
if (!Number.isFinite(svgNodeZ))
|
|
256054
|
-
return null;
|
|
256055
|
-
return mil10ToMm(svgNodeZ);
|
|
256056
|
-
};
|
|
256057
256138
|
var getPositionZMmFromBounds = (bounds, svgNodeZOffsetMm) => {
|
|
256058
256139
|
const minZ = Math.abs(bounds.min.z) < 0.000001 ? 0 : bounds.min.z;
|
|
256059
256140
|
return minZ - svgNodeZOffsetMm;
|
|
256060
256141
|
};
|
|
256061
256142
|
var getEasyEdaCadModelPlacement = async (easyEdaJson, { fetch: fetch22 = globalThis.fetch } = {}) => {
|
|
256062
|
-
const
|
|
256063
|
-
if (!svgNode || svgNode.type !== "SVGNODE")
|
|
256064
|
-
return null;
|
|
256065
|
-
const modelUuid = svgNode.svgData.attrs?.uuid;
|
|
256143
|
+
const modelUuid = getCadSvgNodeModelUuid(easyEdaJson);
|
|
256066
256144
|
const partNumber = easyEdaJson.lcsc.number;
|
|
256067
|
-
const
|
|
256068
|
-
|
|
256145
|
+
const derivedOffsetMm = getCadModelOffsetMm(easyEdaJson);
|
|
256146
|
+
const svgNodeZOffsetMm = getCadSvgNodeZOffsetMm(easyEdaJson);
|
|
256147
|
+
if (!modelUuid || !partNumber || svgNodeZOffsetMm == null || !derivedOffsetMm || !fetch22) {
|
|
256069
256148
|
return null;
|
|
256070
256149
|
}
|
|
256071
256150
|
const modelObjUrl = getModelObjCdnUrl({
|
|
@@ -256080,6 +256159,8 @@ var getEasyEdaCadModelPlacement = async (easyEdaJson, { fetch: fetch22 = globalT
|
|
|
256080
256159
|
if (metadataBounds) {
|
|
256081
256160
|
return {
|
|
256082
256161
|
modelObjUrl,
|
|
256162
|
+
positionXMm: derivedOffsetMm.x,
|
|
256163
|
+
positionYMm: derivedOffsetMm.y,
|
|
256083
256164
|
modelStepUrl,
|
|
256084
256165
|
bounds: metadataBounds,
|
|
256085
256166
|
positionZMm: getPositionZMmFromBounds(metadataBounds, svgNodeZOffsetMm)
|
|
@@ -256100,6 +256181,8 @@ var getEasyEdaCadModelPlacement = async (easyEdaJson, { fetch: fetch22 = globalT
|
|
|
256100
256181
|
return null;
|
|
256101
256182
|
return {
|
|
256102
256183
|
modelObjUrl,
|
|
256184
|
+
positionXMm: derivedOffsetMm.x,
|
|
256185
|
+
positionYMm: derivedOffsetMm.y,
|
|
256103
256186
|
modelStepUrl,
|
|
256104
256187
|
bounds,
|
|
256105
256188
|
positionZMm: getPositionZMmFromBounds(bounds, svgNodeZOffsetMm)
|
|
@@ -256231,6 +256314,8 @@ var convertBetterEasyToTsx = async ({
|
|
|
256231
256314
|
const circuitJson = convertEasyEdaJsonToCircuitJson(betterEasy, {
|
|
256232
256315
|
useModelCdn: true,
|
|
256233
256316
|
shouldRecenter: true,
|
|
256317
|
+
cadPositionXMm: cadPlacement?.positionXMm,
|
|
256318
|
+
cadPositionYMm: cadPlacement?.positionYMm,
|
|
256234
256319
|
cadPositionZMm: cadPlacement?.positionZMm
|
|
256235
256320
|
});
|
|
256236
256321
|
const [cadComponent] = su8(circuitJson).cad_component.list();
|
|
@@ -261342,7 +261427,13 @@ var getCadPositionZMmFromMetadata2 = (easyEdaJson) => {
|
|
|
261342
261427
|
const minZ = Math.abs(bounds.min.z) < 0.000001 ? 0 : bounds.min.z;
|
|
261343
261428
|
return minZ - mil10ToMm2(svgNodeZ);
|
|
261344
261429
|
};
|
|
261345
|
-
var convertEasyEdaJsonToCircuitJson2 = (easyEdaJson, {
|
|
261430
|
+
var convertEasyEdaJsonToCircuitJson2 = (easyEdaJson, {
|
|
261431
|
+
useModelCdn,
|
|
261432
|
+
shouldRecenter = true,
|
|
261433
|
+
cadPositionXMm,
|
|
261434
|
+
cadPositionYMm,
|
|
261435
|
+
cadPositionZMm
|
|
261436
|
+
} = {}) => {
|
|
261346
261437
|
const resolvedCadPositionZMm = cadPositionZMm ?? getCadPositionZMmFromMetadata2(easyEdaJson);
|
|
261347
261438
|
const circuitElements = [];
|
|
261348
261439
|
const source_component = any_source_component3.parse({
|
|
@@ -261565,8 +261656,8 @@ var convertEasyEdaJsonToCircuitJson2 = (easyEdaJson, { useModelCdn, shouldRecent
|
|
|
261565
261656
|
anchor_alignment: "center_of_component_on_board_surface",
|
|
261566
261657
|
model_origin_alignment: "center_of_component_on_board_surface",
|
|
261567
261658
|
model_origin_position: {
|
|
261568
|
-
x: 0,
|
|
261569
|
-
y: 0,
|
|
261659
|
+
x: cadPositionXMm ?? 0,
|
|
261660
|
+
y: cadPositionYMm ?? 0,
|
|
261570
261661
|
z: resolvedCadPositionZMm ?? position22.z
|
|
261571
261662
|
},
|
|
261572
261663
|
position: { x: 0, y: 0, z: 0 },
|
package/dist/lib/index.js
CHANGED
|
@@ -60721,7 +60721,7 @@ var package_default = {
|
|
|
60721
60721
|
debug: "^4.4.0",
|
|
60722
60722
|
delay: "^6.0.0",
|
|
60723
60723
|
"dsn-converter": "0.0.86",
|
|
60724
|
-
easyeda: "^0.0.
|
|
60724
|
+
easyeda: "^0.0.253",
|
|
60725
60725
|
"fuse.js": "^7.1.0",
|
|
60726
60726
|
"get-port": "^7.1.0",
|
|
60727
60727
|
globby: "^14.1.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1170",
|
|
4
4
|
"main": "dist/cli/main.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dist/cli/main.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"debug": "^4.4.0",
|
|
41
41
|
"delay": "^6.0.0",
|
|
42
42
|
"dsn-converter": "0.0.86",
|
|
43
|
-
"easyeda": "^0.0.
|
|
43
|
+
"easyeda": "^0.0.253",
|
|
44
44
|
"fuse.js": "^7.1.0",
|
|
45
45
|
"get-port": "^7.1.0",
|
|
46
46
|
"globby": "^14.1.0",
|