@tscircuit/footprinter 0.0.204 → 0.0.205
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/index.d.ts +1 -1
- package/dist/index.js +127 -35
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1185,7 +1185,7 @@ type Footprinter = {
|
|
|
1185
1185
|
smc: () => FootprinterParamsBuilder<"w" | "h" | "p" | "pw" | "pl">;
|
|
1186
1186
|
minimelf: () => FootprinterParamsBuilder<"w" | "h" | "p" | "pw" | "pl">;
|
|
1187
1187
|
melf: () => FootprinterParamsBuilder<"w" | "h" | "p" | "pw" | "pl">;
|
|
1188
|
-
jst: () => FootprinterParamsBuilder<"w" | "h" | "p" | "id" | "pw" | "pl">;
|
|
1188
|
+
jst: () => FootprinterParamsBuilder<"w" | "h" | "p" | "id" | "pw" | "pl" | "ph" | "sh">;
|
|
1189
1189
|
micromelf: () => FootprinterParamsBuilder<"w" | "h" | "p" | "pw" | "pl">;
|
|
1190
1190
|
ms013: () => FootprinterParamsBuilder<"w" | "p">;
|
|
1191
1191
|
ms012: () => FootprinterParamsBuilder<"w" | "p">;
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ __export(fn_exports, {
|
|
|
29
29
|
msop: () => msop,
|
|
30
30
|
pad: () => pad,
|
|
31
31
|
pinrow: () => pinrow,
|
|
32
|
-
platedhole: () =>
|
|
32
|
+
platedhole: () => platedhole2,
|
|
33
33
|
potentiometer: () => potentiometer,
|
|
34
34
|
pushbutton: () => pushbutton,
|
|
35
35
|
qfn: () => qfn,
|
|
@@ -5365,43 +5365,135 @@ import {
|
|
|
5365
5365
|
import { z as z47 } from "zod";
|
|
5366
5366
|
var jst_def = z47.object({
|
|
5367
5367
|
fn: z47.string(),
|
|
5368
|
-
p: length35.optional()
|
|
5369
|
-
id: length35.optional()
|
|
5370
|
-
pw: length35.optional()
|
|
5371
|
-
pl: length35.optional()
|
|
5372
|
-
w: length35.optional()
|
|
5373
|
-
h: length35.optional()
|
|
5368
|
+
p: length35.optional(),
|
|
5369
|
+
id: length35.optional(),
|
|
5370
|
+
pw: length35.optional(),
|
|
5371
|
+
pl: length35.optional(),
|
|
5372
|
+
w: length35.optional(),
|
|
5373
|
+
h: length35.optional(),
|
|
5374
|
+
sh: z47.union([z47.boolean(), z47.string(), z47.number()]).optional().transform((v) => {
|
|
5375
|
+
if (typeof v === "string") {
|
|
5376
|
+
const n = Number(v);
|
|
5377
|
+
return Number.isNaN(n) ? true : n;
|
|
5378
|
+
}
|
|
5379
|
+
return v;
|
|
5380
|
+
}).describe(
|
|
5381
|
+
'JST SH (Surface-mount) connector family. SH stands for "Super High-density".'
|
|
5382
|
+
),
|
|
5383
|
+
ph: z47.boolean().optional().describe(
|
|
5384
|
+
'JST PH (Through-hole) connector family. PH stands for "Pin Header".'
|
|
5385
|
+
),
|
|
5386
|
+
string: z47.string().optional()
|
|
5374
5387
|
});
|
|
5388
|
+
var variantDefaults = {
|
|
5389
|
+
ph: {
|
|
5390
|
+
p: length35.parse("2.2mm"),
|
|
5391
|
+
id: length35.parse("0.70mm"),
|
|
5392
|
+
pw: length35.parse("1.20mm"),
|
|
5393
|
+
pl: length35.parse("1.20mm"),
|
|
5394
|
+
w: length35.parse("6mm"),
|
|
5395
|
+
h: length35.parse("5mm")
|
|
5396
|
+
},
|
|
5397
|
+
sh: {
|
|
5398
|
+
p: length35.parse("1mm"),
|
|
5399
|
+
pw: length35.parse("0.6mm"),
|
|
5400
|
+
pl: length35.parse("1.55mm"),
|
|
5401
|
+
w: length35.parse("5.8mm"),
|
|
5402
|
+
h: length35.parse("7.8mm")
|
|
5403
|
+
}
|
|
5404
|
+
};
|
|
5405
|
+
function getVariant(params) {
|
|
5406
|
+
if (params.sh) return "sh";
|
|
5407
|
+
if (params.ph) return "ph";
|
|
5408
|
+
return "ph";
|
|
5409
|
+
}
|
|
5410
|
+
function generatePads(variant, numPins, p, id, pw, pl) {
|
|
5411
|
+
const pads = [];
|
|
5412
|
+
if (variant === "ph") {
|
|
5413
|
+
const half_p = p / 2;
|
|
5414
|
+
pads.push(platedHoleWithRectPad(1, -half_p, 2, id, pw, pl));
|
|
5415
|
+
pads.push(platedHoleWithRectPad(2, half_p, 2, id, pw, pl));
|
|
5416
|
+
} else {
|
|
5417
|
+
const startX = -((numPins - 1) / 2) * p;
|
|
5418
|
+
for (let i = 0; i < numPins; i++) {
|
|
5419
|
+
const x = startX + i * p;
|
|
5420
|
+
console.log("x si", x);
|
|
5421
|
+
pads.push(rectpad(i + 1, x, -1.325, pw, pl));
|
|
5422
|
+
}
|
|
5423
|
+
const sideOffset = (numPins - 1) / 2 * p + 1.3;
|
|
5424
|
+
console.log("offset", sideOffset);
|
|
5425
|
+
pads.push(rectpad(numPins + 1, -sideOffset, 1.22, 1.2, 1.8));
|
|
5426
|
+
pads.push(rectpad(numPins + 2, sideOffset, 1.22, 1.2, 1.8));
|
|
5427
|
+
}
|
|
5428
|
+
return pads;
|
|
5429
|
+
}
|
|
5430
|
+
function generateSilkscreenBody(variant, w, h) {
|
|
5431
|
+
if (variant === "ph") {
|
|
5432
|
+
return {
|
|
5433
|
+
type: "pcb_silkscreen_path",
|
|
5434
|
+
layer: "top",
|
|
5435
|
+
pcb_component_id: "",
|
|
5436
|
+
route: [
|
|
5437
|
+
{ x: -3, y: 3 },
|
|
5438
|
+
{ x: 3, y: 3 },
|
|
5439
|
+
{ x: 3, y: -2 },
|
|
5440
|
+
{ x: -3, y: -2 },
|
|
5441
|
+
{ x: -3, y: 3 }
|
|
5442
|
+
],
|
|
5443
|
+
stroke_width: 0.1,
|
|
5444
|
+
pcb_silkscreen_path_id: ""
|
|
5445
|
+
};
|
|
5446
|
+
} else {
|
|
5447
|
+
return {
|
|
5448
|
+
type: "pcb_silkscreen_path",
|
|
5449
|
+
layer: "top",
|
|
5450
|
+
pcb_component_id: "",
|
|
5451
|
+
route: [],
|
|
5452
|
+
stroke_width: 0.1,
|
|
5453
|
+
pcb_silkscreen_path_id: ""
|
|
5454
|
+
};
|
|
5455
|
+
}
|
|
5456
|
+
}
|
|
5375
5457
|
var jst = (raw_params) => {
|
|
5376
|
-
const
|
|
5377
|
-
const
|
|
5378
|
-
const
|
|
5379
|
-
const
|
|
5380
|
-
|
|
5381
|
-
|
|
5382
|
-
|
|
5383
|
-
const
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
|
|
5458
|
+
const params = jst_def.parse(raw_params);
|
|
5459
|
+
const variant = getVariant(params);
|
|
5460
|
+
const defaults = variantDefaults[variant];
|
|
5461
|
+
const p = params.p ?? defaults.p;
|
|
5462
|
+
const id = params.id ?? defaults.id;
|
|
5463
|
+
const pw = params.pw ?? defaults.pw;
|
|
5464
|
+
const pl = params.pl ?? defaults.pl;
|
|
5465
|
+
const w = params.w ?? defaults.w;
|
|
5466
|
+
const h = params.h ?? defaults.h;
|
|
5467
|
+
let numPins = variant === "sh" ? 4 : 2;
|
|
5468
|
+
if (variant === "sh") {
|
|
5469
|
+
const str = typeof raw_params.string === "string" ? raw_params.string : "";
|
|
5470
|
+
const match = str.match(/sh(\d+)/);
|
|
5471
|
+
if (match && match[1]) {
|
|
5472
|
+
const parsed = parseInt(match[1], 10);
|
|
5473
|
+
if (!Number.isNaN(parsed)) {
|
|
5474
|
+
numPins = parsed;
|
|
5475
|
+
}
|
|
5476
|
+
} else if (typeof params.sh === "number") {
|
|
5477
|
+
numPins = params.sh;
|
|
5478
|
+
}
|
|
5479
|
+
}
|
|
5480
|
+
const pads = generatePads(variant, numPins, p, id, pw, pl);
|
|
5481
|
+
const silkscreenBody = generateSilkscreenBody(variant, w, h);
|
|
5397
5482
|
const silkscreenRefText = silkscreenRef(0, h / 2 + 1, 0.5);
|
|
5398
5483
|
return {
|
|
5399
|
-
circuitJson: [
|
|
5400
|
-
|
|
5401
|
-
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5484
|
+
circuitJson: [...pads, silkscreenBody, silkscreenRefText],
|
|
5485
|
+
parameters: {
|
|
5486
|
+
...params,
|
|
5487
|
+
p,
|
|
5488
|
+
id,
|
|
5489
|
+
pw,
|
|
5490
|
+
pl,
|
|
5491
|
+
w,
|
|
5492
|
+
h,
|
|
5493
|
+
num_pins: numPins,
|
|
5494
|
+
sh: variant === "sh",
|
|
5495
|
+
ph: variant === "ph"
|
|
5496
|
+
}
|
|
5405
5497
|
};
|
|
5406
5498
|
};
|
|
5407
5499
|
|
|
@@ -6779,7 +6871,7 @@ var platedhole_def = z60.object({
|
|
|
6779
6871
|
squarepad: v.squarepad ?? false
|
|
6780
6872
|
};
|
|
6781
6873
|
});
|
|
6782
|
-
var
|
|
6874
|
+
var platedhole2 = (raw_params) => {
|
|
6783
6875
|
const params = platedhole_def.parse(raw_params);
|
|
6784
6876
|
const { d, pd, squarepad } = params;
|
|
6785
6877
|
return {
|