From d73d8205ab7b91cc4f3333b7b4a655a5f196e1df Mon Sep 17 00:00:00 2001 From: Shibo Date: Sat, 21 Sep 2024 14:36:19 +0200 Subject: [PATCH 1/5] .json() returns a string of used parameters --- src/fn/bga.ts | 13 +++++++----- src/fn/cap.ts | 6 ++++-- src/fn/dfn.ts | 9 ++++++-- src/fn/diode.ts | 5 +++-- src/fn/dip.ts | 8 ++++++-- src/fn/led.ts | 6 ++++-- src/fn/mlp.ts | 4 +++- src/fn/ms012.ts | 11 ++++++++-- src/fn/ms013.ts | 11 ++++++++-- src/fn/pinrow.ts | 9 +++++--- src/fn/qfn.ts | 4 +++- src/fn/qfp.ts | 4 +++- src/fn/quad.ts | 8 ++++++-- src/fn/res.ts | 6 ++++-- src/fn/sod123.ts | 51 ++++++++++++++++++++++++++-------------------- src/fn/soic.ts | 9 ++++++-- src/fn/sot23.ts | 11 ++++++++-- src/fn/sot236.ts | 11 ++++++++-- src/fn/sot563.ts | 28 +++++++++++++++---------- src/fn/sot723.ts | 11 +++++++--- src/fn/ssop.ts | 11 ++++++++-- src/fn/tssop.ts | 11 ++++++++-- src/footprinter.ts | 6 +++++- tests/led.test.ts | 4 ++-- 24 files changed, 179 insertions(+), 78 deletions(-) diff --git a/src/fn/bga.ts b/src/fn/bga.ts index a0ff958..bf4329a 100644 --- a/src/fn/bga.ts +++ b/src/fn/bga.ts @@ -9,6 +9,7 @@ import type { NowDefined } from "src/helpers/zod/now-defined" export const bga_def = z .object({ + fn: z.string(), num_pins: z.number(), grid: dim2d.optional(), p: distance.default("0.8mm"), @@ -57,9 +58,11 @@ export const bga_def = z export type BgaDefInput = z.input export type BgaDef = z.infer -export const bga = (params: BgaDefInput): AnySoupElement[] => { - const bga_params = bga_def.parse(params) - let { num_pins, grid, p, w, h, ball, pad, missing } = bga_params +export const bga = ( + raw_params: BgaDefInput, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = bga_def.parse(raw_params) + let { num_pins, grid, p, w, h, ball, pad, missing } = params ball ??= (0.75 / 1.27) * p @@ -105,7 +108,7 @@ export const bga = (params: BgaDefInput): AnySoupElement[] => { if (num_pins_missing !== missing_pin_nums.length) { throw new Error( `not able to create bga component, unable to determine missing pins (try specifying them with "missing+1+2+..."\n\n${JSON.stringify( - bga_params, + params, null, " ", )}`, @@ -134,5 +137,5 @@ export const bga = (params: BgaDefInput): AnySoupElement[] => { } } - return [...pads] + return { circuitJson: [...pads], parameters: JSON.stringify(params) } } diff --git a/src/fn/cap.ts b/src/fn/cap.ts index b50805a..ddf2ff1 100644 --- a/src/fn/cap.ts +++ b/src/fn/cap.ts @@ -2,6 +2,8 @@ import type { AnySoupElement } from "@tscircuit/soup" import { rectpad } from "../helpers/rectpad" import { PassiveDef, passive } from "../helpers/passive-fn" -export const cap = (params: PassiveDef): AnySoupElement[] => { - return passive(params) +export const cap = ( + params: PassiveDef, +): { circuitJson: AnySoupElement[]; parameters: string } => { + return { circuitJson: passive(params), parameters: JSON.stringify(params) } } diff --git a/src/fn/dfn.ts b/src/fn/dfn.ts index 46d02b6..e2306c0 100644 --- a/src/fn/dfn.ts +++ b/src/fn/dfn.ts @@ -16,7 +16,9 @@ export const dfn_def = extendSoicDef({}) * * Similar to SOIC but different silkscreen */ -export const dfn = (raw_params: SoicInput) => { +export const dfn = ( + raw_params: SoicInput, +): { circuitJson: AnySoupElement[]; parameters: string } => { const params = dfn_def.parse(raw_params) const pads: AnySoupElement[] = [] for (let i = 0; i < params.num_pins; i++) { @@ -85,5 +87,8 @@ export const dfn = (raw_params: SoicInput) => { ], }) - return [...pads, ...silkscreenPaths] + return { + circuitJson: [...pads, ...silkscreenPaths], + parameters: JSON.stringify(params), + } } diff --git a/src/fn/diode.ts b/src/fn/diode.ts index 598a98a..daad169 100644 --- a/src/fn/diode.ts +++ b/src/fn/diode.ts @@ -1,8 +1,9 @@ import type { AnySoupElement } from "@tscircuit/soup" +import { passive } from "src/helpers/passive-fn" export const diode = (params: { tht: boolean p: number -}): AnySoupElement[] => { - return [] +}): { circuitJson: AnySoupElement[]; parameters: string } => { + return { circuitJson: passive(params), parameters: JSON.stringify(params) } } diff --git a/src/fn/dip.ts b/src/fn/dip.ts index 91f388a..e4f43d5 100644 --- a/src/fn/dip.ts +++ b/src/fn/dip.ts @@ -8,6 +8,7 @@ import type { NowDefined } from "../helpers/zod/now-defined" export const extendDipDef = (newDefaults: { w?: string; p?: string }) => z .object({ + fn: z.string(), dip: z.literal(true), num_pins: z.number(), wide: z.boolean().optional(), @@ -81,7 +82,7 @@ export const dip = (raw_params: { p?: number id?: string | number od?: string | number -}): AnySoupElement[] => { +}): { circuitJson: AnySoupElement[]; parameters: string } => { const params = dip_def.parse(raw_params) const platedHoles: AnySoupElement[] = [] for (let i = 0; i < params.num_pins; i++) { @@ -117,5 +118,8 @@ export const dip = (raw_params: { type: "pcb_silkscreen_path", } - return [...platedHoles, silkscreenBorder] + return { + circuitJson: [...platedHoles, silkscreenBorder], + parameters: JSON.stringify(params), + } } diff --git a/src/fn/led.ts b/src/fn/led.ts index 6b96a0f..0d0d49b 100644 --- a/src/fn/led.ts +++ b/src/fn/led.ts @@ -1,6 +1,8 @@ import type { AnySoupElement } from "@tscircuit/soup" import { PassiveDef, passive } from "../helpers/passive-fn" -export const led = (params: PassiveDef): AnySoupElement[] => { - return passive(params) +export const led = ( + params: PassiveDef, +): { circuitJson: AnySoupElement[]; parameters: string } => { + return { circuitJson: passive(params), parameters: JSON.stringify(params) } } diff --git a/src/fn/mlp.ts b/src/fn/mlp.ts index 58311a4..34fe734 100644 --- a/src/fn/mlp.ts +++ b/src/fn/mlp.ts @@ -4,7 +4,9 @@ import type { z } from "zod" export const mlp_def = base_quad_def.extend({}).transform(quadTransform) -export const mlp = (params: z.input): AnySoupElement[] => { +export const mlp = ( + params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { params.legsoutside = false if (params.thermalpad === undefined) { params.thermalpad = true diff --git a/src/fn/ms012.ts b/src/fn/ms012.ts index a944b1a..1d90ba8 100644 --- a/src/fn/ms012.ts +++ b/src/fn/ms012.ts @@ -1,3 +1,4 @@ +import type { AnySoupElement } from "@tscircuit/soup" import { extendSoicDef, soicWithoutParsing } from "./soic" import type { z } from "zod" @@ -7,6 +8,12 @@ export const ms012_def = extendSoicDef({ legsoutside: true, }) -export const ms012 = (params: z.input) => { - return soicWithoutParsing(ms012_def.parse({ ...params, num_pins: 8 })) +export const ms012 = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = ms012_def.parse({ ...raw_params, num_pins: 8 }) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } diff --git a/src/fn/ms013.ts b/src/fn/ms013.ts index 0272964..7fc1bd5 100644 --- a/src/fn/ms013.ts +++ b/src/fn/ms013.ts @@ -1,3 +1,4 @@ +import type { AnySoupElement } from "@tscircuit/soup" import { extendSoicDef, soicWithoutParsing } from "./soic" import type { z } from "zod" @@ -7,6 +8,12 @@ export const ms013_def = extendSoicDef({ legsoutside: true, }) -export const ms013 = (params: z.input) => { - return soicWithoutParsing(ms013_def.parse({ ...params, num_pins: 16 })) +export const ms013 = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = ms013_def.parse({ ...raw_params, num_pins: 16 }) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } diff --git a/src/fn/pinrow.ts b/src/fn/pinrow.ts index 1363b9b..c263daf 100644 --- a/src/fn/pinrow.ts +++ b/src/fn/pinrow.ts @@ -1,15 +1,18 @@ import { z } from "zod" -import { length } from "@tscircuit/soup" +import { length, type AnySoupElement } from "@tscircuit/soup" import { platedhole } from "../helpers/platedhole" export const pinrow_def = z.object({ + fn: z.string(), num_pins: z.number(), p: length.default("0.1in").describe("pitch"), id: length.default("1.0mm").describe("inner diameter"), od: length.default("1.2mm").describe("outer diameter"), }) -export const pinrow = (raw_params: z.input) => { +export const pinrow = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { const params = pinrow_def.parse(raw_params) const { p, id, od } = params const holes: any[] = [] @@ -20,5 +23,5 @@ export const pinrow = (raw_params: z.input) => { for (let i = 0; i < params.num_pins; i++) { holes.push(platedhole(i + 1, xoff + i * p, 0, id, od)) } - return holes + return { circuitJson: holes, parameters: JSON.stringify(params) } } diff --git a/src/fn/qfn.ts b/src/fn/qfn.ts index ca83a83..a9c68f9 100644 --- a/src/fn/qfn.ts +++ b/src/fn/qfn.ts @@ -4,7 +4,9 @@ import type { z } from "zod" export const qfn_def = base_quad_def.extend({}).transform(quadTransform) -export const qfn = (params: z.input): AnySoupElement[] => { +export const qfn = ( + params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { params.legsoutside = false return quad(params) } diff --git a/src/fn/qfp.ts b/src/fn/qfp.ts index c5aa058..bb46e42 100644 --- a/src/fn/qfp.ts +++ b/src/fn/qfp.ts @@ -4,7 +4,9 @@ import type { z } from "zod" export const qfp_def = quad_def -export const qfp = (raw_params: z.input): AnySoupElement[] => { +export const qfp = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { raw_params.legsoutside = true const quad_defaults = quad_def.parse(raw_params) diff --git a/src/fn/quad.ts b/src/fn/quad.ts index 5900682..0c96176 100644 --- a/src/fn/quad.ts +++ b/src/fn/quad.ts @@ -8,6 +8,7 @@ import { getQuadPinMap } from "src/helpers/get-quad-pin-map" import { dim2d } from "src/helpers/zod/dim-2d" export const base_quad_def = z.object({ + fn: z.string(), cc: z.literal(true).optional(), ccw: z.literal(true).optional(), startingpin: z @@ -108,7 +109,7 @@ export const getQuadCoords = (params: { export const quad = ( raw_params: z.input, -): AnySoupElement[] => { +): { circuitJson: AnySoupElement[]; parameters: string } => { const params = quad_def.parse(raw_params) const pads: AnySoupElement[] = [] const pin_map = getQuadPinMap(params) @@ -287,5 +288,8 @@ export const quad = ( } } - return [...pads, ...silkscreen_corners] + return { + circuitJson: [...pads, ...silkscreen_corners], + parameters: JSON.stringify(params), + } } diff --git a/src/fn/res.ts b/src/fn/res.ts index 30044b5..ea6744b 100644 --- a/src/fn/res.ts +++ b/src/fn/res.ts @@ -1,6 +1,8 @@ import type { AnySoupElement } from "@tscircuit/soup" import { passive, type PassiveDef } from "../helpers/passive-fn" -export const res = (params: PassiveDef): AnySoupElement[] => { - return passive(params) +export const res = ( + params: PassiveDef, +): { circuitJson: AnySoupElement[]; parameters: string } => { + return { circuitJson: passive(params), parameters: JSON.stringify(params) } } diff --git a/src/fn/sod123.ts b/src/fn/sod123.ts index ba66357..01cbf85 100644 --- a/src/fn/sod123.ts +++ b/src/fn/sod123.ts @@ -1,44 +1,51 @@ -import type { AnySoupElement } from "@tscircuit/soup"; -import { z } from "zod"; -import { rectpad } from "../helpers/rectpad"; +import type { AnySoupElement } from "@tscircuit/soup" +import { z } from "zod" +import { rectpad } from "../helpers/rectpad" export const sod_def = z.object({ + fn: z.string(), w: z.string().default("2.36mm"), h: z.string().default("1.22mm"), pl: z.string().default("0.9mm"), pw: z.string().default("0.9mm"), pad_spacing: z.string().default("4.19mm"), -}); +}) -export const sod123 = (params: z.input): AnySoupElement[] => { - return sodWithoutParsing(sod_def.parse(params)); -}; +export const sod123 = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = sod_def.parse(raw_params) + return { + circuitJson: sodWithoutParsing(params), + parameters: JSON.stringify(params), + } +} export const getSodCoords = (params: { - pn: number; - pad_spacing: number; + pn: number + pad_spacing: number }) => { - const { pn, pad_spacing } = params; - + const { pn, pad_spacing } = params + if (pn === 1) { - return { x: -pad_spacing / 2, y: 0 }; + return { x: -pad_spacing / 2, y: 0 } } else { - return { x: pad_spacing / 2, y: 0 }; + return { x: pad_spacing / 2, y: 0 } } -}; +} export const sodWithoutParsing = (params: z.infer) => { - const pads: AnySoupElement[] = []; - + const pads: AnySoupElement[] = [] + for (let i = 0; i < 2; i++) { const { x, y } = getSodCoords({ pn: i + 1, pad_spacing: parseFloat(params.pad_spacing), - }); + }) pads.push( - rectpad(i + 1, x, y, parseFloat(params.pl), parseFloat(params.pw)) - ); + rectpad(i + 1, x, y, parseFloat(params.pl), parseFloat(params.pw)), + ) } - - return pads; -}; \ No newline at end of file + + return pads +} diff --git a/src/fn/soic.ts b/src/fn/soic.ts index 2281ba4..6d1d1cd 100644 --- a/src/fn/soic.ts +++ b/src/fn/soic.ts @@ -13,6 +13,7 @@ export const extendSoicDef = (newDefaults: { }) => z .object({ + fn: z.string(), num_pins: z.number(), w: length.default(length.parse(newDefaults.w ?? "5.3mm")), p: length.default(length.parse(newDefaults.p ?? "1.27mm")), @@ -87,8 +88,12 @@ export const soic = (raw_params: { p?: number id?: string | number od?: string | number -}): AnySoupElement[] => { - return soicWithoutParsing(soic_def.parse(raw_params)) +}): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = soic_def.parse(raw_params) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } export const soicWithoutParsing = (params: z.infer) => { diff --git a/src/fn/sot23.ts b/src/fn/sot23.ts index 2e66a74..e08232f 100644 --- a/src/fn/sot23.ts +++ b/src/fn/sot23.ts @@ -3,6 +3,7 @@ import { z } from "zod" import { rectpad } from "../helpers/rectpad" export const sot23_def = z.object({ + fn: z.string(), num_pins: z.number().default(3), w: z.string().default("1.92mm"), h: z.string().default("2.74mm"), @@ -10,8 +11,14 @@ export const sot23_def = z.object({ pw: z.string().default("0.764mm"), }) -export const sot23 = (params: z.input): AnySoupElement[] => { - return sot23WithoutParsing(sot23_def.parse(params)) +export const sot23 = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = sot23_def.parse(raw_params) + return { + circuitJson: sot23WithoutParsing(params), + parameters: JSON.stringify(params), + } } export const getCcwSot23Coords = (params: { diff --git a/src/fn/sot236.ts b/src/fn/sot236.ts index 8199730..9a303a0 100644 --- a/src/fn/sot236.ts +++ b/src/fn/sot236.ts @@ -1,3 +1,4 @@ +import type { AnySoupElement } from "@tscircuit/soup" import { extendSoicDef, soicWithoutParsing } from "./soic" import type { z } from "zod" @@ -7,6 +8,12 @@ export const sot236_def = extendSoicDef({ legsoutside: true, }) -export const sot236 = (params: z.input) => { - return soicWithoutParsing(sot236_def.parse({ ...params, num_pins: 6 })) +export const sot236 = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = sot236_def.parse({ ...raw_params, num_pins: 6 }) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } diff --git a/src/fn/sot563.ts b/src/fn/sot563.ts index a60871f..fb858e0 100644 --- a/src/fn/sot563.ts +++ b/src/fn/sot563.ts @@ -1,17 +1,23 @@ +import type { AnySoupElement } from "@tscircuit/soup" import { extendSoicDef, soicWithoutParsing } from "./soic" import type { z } from "zod" export const sot563_def = extendSoicDef({}) -export const sot563 = (params: z.input) => { - return soicWithoutParsing( - sot563_def.parse({ - num_pins: 6, - w: 1.94, - p: 0.5, - pw: 0.3, - pl: 0.67, - legoutside: true, - }), - ) +export const sot563 = ( + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = sot563_def.parse({ + fn: 'sot563', + num_pins: 6, + w: 1.94, + p: 0.5, + pw: 0.3, + pl: 0.67, + legoutside: true, + }) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } diff --git a/src/fn/sot723.ts b/src/fn/sot723.ts index 584eeac..2cbafcb 100644 --- a/src/fn/sot723.ts +++ b/src/fn/sot723.ts @@ -3,6 +3,7 @@ import { z } from "zod" import { rectpad } from "../helpers/rectpad" export const sot723_def = z.object({ + fn: z.string(), num_pins: z.number().default(3), w: z.string().default("1.2mm"), h: z.string().default("1.2mm"), @@ -11,9 +12,13 @@ export const sot723_def = z.object({ }) export const sot723 = ( - params: z.input, -): AnySoupElement[] => { - return sot723WithoutParsing(sot723_def.parse(params)) + raw_params: z.input, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = sot723_def.parse(raw_params) + return { + circuitJson: sot723WithoutParsing(params), + parameters: JSON.stringify(params), + } } export const getCcwSot723Coords = (params: { diff --git a/src/fn/ssop.ts b/src/fn/ssop.ts index 3662480..e6785e2 100644 --- a/src/fn/ssop.ts +++ b/src/fn/ssop.ts @@ -1,3 +1,4 @@ +import type { AnySoupElement } from "@tscircuit/soup" import { extendSoicDef, soicWithoutParsing, type SoicInput } from "./soic" // TODO we should accept MS-012 or MS-013 @@ -7,6 +8,12 @@ export const ssop_def = extendSoicDef({ p: "1.27mm", }) -export const ssop = (raw_params: SoicInput) => { - return soicWithoutParsing(ssop_def.parse(raw_params)) +export const ssop = ( + raw_params: SoicInput, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = ssop_def.parse(raw_params) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } diff --git a/src/fn/tssop.ts b/src/fn/tssop.ts index 192d522..ef86c41 100644 --- a/src/fn/tssop.ts +++ b/src/fn/tssop.ts @@ -1,3 +1,4 @@ +import type { AnySoupElement } from "@tscircuit/soup" import { extendSoicDef, soicWithoutParsing, type SoicInput } from "./soic" export const tssop_def = extendSoicDef({ @@ -6,6 +7,12 @@ export const tssop_def = extendSoicDef({ legsoutside: true, }) -export const tssop = (raw_params: SoicInput) => { - return soicWithoutParsing(tssop_def.parse(raw_params)) +export const tssop = ( + raw_params: SoicInput, +): { circuitJson: AnySoupElement[]; parameters: string } => { + const params = tssop_def.parse(raw_params) + return { + circuitJson: soicWithoutParsing(params), + parameters: JSON.stringify(params), + } } diff --git a/src/footprinter.ts b/src/footprinter.ts index 36b037d..85bed42 100644 --- a/src/footprinter.ts +++ b/src/footprinter.ts @@ -49,6 +49,7 @@ export type Footprinter = { pinrow: (num_pins: number) => FootprinterParamsBuilder<"p" | "id" | "od"> params: () => any soup: () => AnySoupElement[] + json: () => string } export const string = (def: string): Footprinter => { @@ -83,7 +84,7 @@ export const footprinter = (): Footprinter & { string: typeof string } => { // console.log(prop, target) if (prop === "soup") { if ("fn" in target && FOOTPRINT_FN[target.fn]) { - return () => FOOTPRINT_FN[target.fn](target) + return () => FOOTPRINT_FN[target.fn](target).circuitJson } return () => { @@ -93,6 +94,9 @@ export const footprinter = (): Footprinter & { string: typeof string } => { ) } } + if (prop === "json") { + return () => FOOTPRINT_FN[target.fn](target).parameters + } if (prop === "params") { // TODO return () => target diff --git a/tests/led.test.ts b/tests/led.test.ts index 224f516..15d6342 100644 --- a/tests/led.test.ts +++ b/tests/led.test.ts @@ -10,7 +10,7 @@ test("led_rect", async (t) => { p: 2.5, pw: 0.5, ph: 0.5, - }) + }).circuitJson snapshotSoup(soup) t.pass() @@ -25,7 +25,7 @@ test("led_hole", async (t) => { metric: "mm", w: 5, h: 2, - }) + }).circuitJson snapshotSoup(soup) t.pass() From 8a8b7a31e0ebf1d39c5f3fb1b627c353115e7ea9 Mon Sep 17 00:00:00 2001 From: Shibo Date: Sat, 21 Sep 2024 14:39:24 +0200 Subject: [PATCH 2/5] format --- package.json | 4 +--- src/fn/index.ts | 2 +- src/fn/sot563.ts | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 82e9ee4..2379fd2 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,7 @@ "version": "0.0.62", "description": "", "main": "dist/index.cjs", - "files": [ - "dist" - ], + "files": ["dist"], "scripts": { "test": "FULL_RUN=1 ava", "dev": "cd previews && npm i && npm run storybook", diff --git a/src/fn/index.ts b/src/fn/index.ts index 387c9d3..5690cc6 100644 --- a/src/fn/index.ts +++ b/src/fn/index.ts @@ -19,4 +19,4 @@ export { sot563 } from "./sot563" export { ms012 } from "./ms012" export { ms013 } from "./ms013" export { sot723 } from "./sot723" -export {sod123} from "./sod123" +export { sod123 } from "./sod123" diff --git a/src/fn/sot563.ts b/src/fn/sot563.ts index fb858e0..610cc79 100644 --- a/src/fn/sot563.ts +++ b/src/fn/sot563.ts @@ -8,7 +8,7 @@ export const sot563 = ( raw_params: z.input, ): { circuitJson: AnySoupElement[]; parameters: string } => { const params = sot563_def.parse({ - fn: 'sot563', + fn: "sot563", num_pins: 6, w: 1.94, p: 0.5, From 6e741a823946fe4a1fea2705be9785fed889cdb6 Mon Sep 17 00:00:00 2001 From: Shibo Date: Sun, 22 Sep 2024 22:02:27 +0200 Subject: [PATCH 3/5] changed parameters type from json string to any object --- src/fn/bga.ts | 10 ++++----- src/fn/cap.ts | 6 +++--- src/fn/dfn.ts | 32 +++++++++++++-------------- src/fn/diode.ts | 6 +++--- src/fn/dip.ts | 20 ++++++++--------- src/fn/led.ts | 6 +++--- src/fn/mlp.ts | 12 +++++------ src/fn/ms012.ts | 8 +++---- src/fn/ms013.ts | 8 +++---- src/fn/pinrow.ts | 12 +++++------ src/fn/qfn.ts | 8 +++---- src/fn/qfp.ts | 2 +- src/fn/quad.ts | 54 +++++++++++++++++++++++----------------------- src/fn/res.ts | 6 +++--- src/fn/sod123.ts | 18 ++++++++-------- src/fn/soic.ts | 38 ++++++++++++++++---------------- src/fn/sot23.ts | 26 +++++++++++----------- src/fn/sot236.ts | 8 +++---- src/fn/sot563.ts | 8 +++---- src/fn/sot723.ts | 26 +++++++++++----------- src/fn/ssop.ts | 8 +++---- src/fn/tssop.ts | 8 +++---- src/footprinter.ts | 3 ++- 23 files changed, 167 insertions(+), 166 deletions(-) diff --git a/src/fn/bga.ts b/src/fn/bga.ts index bf4329a..b52e833 100644 --- a/src/fn/bga.ts +++ b/src/fn/bga.ts @@ -60,9 +60,9 @@ export type BgaDef = z.infer export const bga = ( raw_params: BgaDefInput, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = bga_def.parse(raw_params) - let { num_pins, grid, p, w, h, ball, pad, missing } = params +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = bga_def.parse(raw_params) + let { num_pins, grid, p, w, h, ball, pad, missing } = parameters ball ??= (0.75 / 1.27) * p @@ -108,7 +108,7 @@ export const bga = ( if (num_pins_missing !== missing_pin_nums.length) { throw new Error( `not able to create bga component, unable to determine missing pins (try specifying them with "missing+1+2+..."\n\n${JSON.stringify( - params, + parameters, null, " ", )}`, @@ -137,5 +137,5 @@ export const bga = ( } } - return { circuitJson: [...pads], parameters: JSON.stringify(params) } + return { circuitJson: [...pads], parameters } } diff --git a/src/fn/cap.ts b/src/fn/cap.ts index ddf2ff1..36b9479 100644 --- a/src/fn/cap.ts +++ b/src/fn/cap.ts @@ -3,7 +3,7 @@ import { rectpad } from "../helpers/rectpad" import { PassiveDef, passive } from "../helpers/passive-fn" export const cap = ( - params: PassiveDef, -): { circuitJson: AnySoupElement[]; parameters: string } => { - return { circuitJson: passive(params), parameters: JSON.stringify(params) } + parameters: PassiveDef, +): { circuitJson: AnySoupElement[]; parameters: any } => { + return { circuitJson: passive(parameters), parameters } } diff --git a/src/fn/dfn.ts b/src/fn/dfn.ts index e2306c0..10272f0 100644 --- a/src/fn/dfn.ts +++ b/src/fn/dfn.ts @@ -18,25 +18,25 @@ export const dfn_def = extendSoicDef({}) */ export const dfn = ( raw_params: SoicInput, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = dfn_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = dfn_def.parse(raw_params) const pads: AnySoupElement[] = [] - for (let i = 0; i < params.num_pins; i++) { + for (let i = 0; i < parameters.num_pins; i++) { const { x, y } = getCcwSoicCoords({ - num_pins: params.num_pins, + num_pins: parameters.num_pins, pn: i + 1, - w: params.w, - p: params.p ?? 1.27, - pl: params.pl, + w: parameters.w, + p: parameters.p ?? 1.27, + pl: parameters.pl, widthincludeslegs: true, }) - pads.push(rectpad(i + 1, x, y, params.pl ?? "1mm", params.pw ?? "0.6mm")) + pads.push(rectpad(i + 1, x, y, parameters.pl ?? "1mm", parameters.pw ?? "0.6mm")) } // The silkscreen is 4 corners and an arrow identifier for pin1 - const m = Math.min(1, params.p / 2) - const sw = params.w + m - const sh = (params.num_pins / 2 - 1) * params.p + params.pw + m + const m = Math.min(1, parameters.p / 2) + const sw = parameters.w + m + const sh = (parameters.num_pins / 2 - 1) * parameters.p + parameters.pw + m const silkscreenPaths: PcbSilkscreenPath[] = [] for (const corner of CORNERS) { @@ -46,9 +46,9 @@ export const dfn = ( pcb_component_id: "", pcb_silkscreen_path_id: "", route: [ - { x: (dx * sw) / 2 - dx * params.p, y: (dy * sh) / 2 }, + { x: (dx * sw) / 2 - dx * parameters.p, y: (dy * sh) / 2 }, { x: (dx * sw) / 2, y: (dy * sh) / 2 }, - { x: (dx * sw) / 2, y: (dy * sh) / 2 - dy * params.p }, + { x: (dx * sw) / 2, y: (dy * sh) / 2 - dy * parameters.p }, ], type: "pcb_silkscreen_path", }) @@ -56,11 +56,11 @@ export const dfn = ( // Arrow /** arrow size */ - const as = params.p / 4 + const as = parameters.p / 4 /** Arrow tip x */ const atx = -sw / 2 - as / 2 /** Arrow tip y */ - const aty = sh / 2 - params.p / 2 + const aty = sh / 2 - parameters.p / 2 silkscreenPaths.push({ layer: "top", @@ -89,6 +89,6 @@ export const dfn = ( return { circuitJson: [...pads, ...silkscreenPaths], - parameters: JSON.stringify(params), + parameters, } } diff --git a/src/fn/diode.ts b/src/fn/diode.ts index daad169..dac74f9 100644 --- a/src/fn/diode.ts +++ b/src/fn/diode.ts @@ -1,9 +1,9 @@ import type { AnySoupElement } from "@tscircuit/soup" import { passive } from "src/helpers/passive-fn" -export const diode = (params: { +export const diode = (parameters: { tht: boolean p: number -}): { circuitJson: AnySoupElement[]; parameters: string } => { - return { circuitJson: passive(params), parameters: JSON.stringify(params) } +}): { circuitJson: AnySoupElement[]; parameters: any } => { + return { circuitJson: passive(parameters), parameters } } diff --git a/src/fn/dip.ts b/src/fn/dip.ts index e4f43d5..230d519 100644 --- a/src/fn/dip.ts +++ b/src/fn/dip.ts @@ -82,23 +82,23 @@ export const dip = (raw_params: { p?: number id?: string | number od?: string | number -}): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = dip_def.parse(raw_params) +}): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = dip_def.parse(raw_params) const platedHoles: AnySoupElement[] = [] - for (let i = 0; i < params.num_pins; i++) { + for (let i = 0; i < parameters.num_pins; i++) { const { x, y } = getCcwDipCoords( - params.num_pins, + parameters.num_pins, i + 1, - params.w, - params.p ?? 2.54, + parameters.w, + parameters.p ?? 2.54, ) platedHoles.push( - platedhole(i + 1, x, y, params.id ?? "0.8mm", params.od ?? "1mm"), + platedhole(i + 1, x, y, parameters.id ?? "0.8mm", parameters.od ?? "1mm"), ) } /** silkscreen width */ - const sw = params.w - params.od - 0.4 - const sh = (params.num_pins / 2 - 1) * params.p + params.od + 0.4 + const sw = parameters.w - parameters.od - 0.4 + const sh = (parameters.num_pins / 2 - 1) * parameters.p + parameters.od + 0.4 const silkscreenBorder: PcbSilkscreenPath = { layer: "top", pcb_component_id: "", @@ -120,6 +120,6 @@ export const dip = (raw_params: { return { circuitJson: [...platedHoles, silkscreenBorder], - parameters: JSON.stringify(params), + parameters, } } diff --git a/src/fn/led.ts b/src/fn/led.ts index 0d0d49b..18cf762 100644 --- a/src/fn/led.ts +++ b/src/fn/led.ts @@ -2,7 +2,7 @@ import type { AnySoupElement } from "@tscircuit/soup" import { PassiveDef, passive } from "../helpers/passive-fn" export const led = ( - params: PassiveDef, -): { circuitJson: AnySoupElement[]; parameters: string } => { - return { circuitJson: passive(params), parameters: JSON.stringify(params) } + parameters: PassiveDef, +): { circuitJson: AnySoupElement[]; parameters: any } => { + return { circuitJson: passive(parameters), parameters } } diff --git a/src/fn/mlp.ts b/src/fn/mlp.ts index 34fe734..fe11068 100644 --- a/src/fn/mlp.ts +++ b/src/fn/mlp.ts @@ -5,11 +5,11 @@ import type { z } from "zod" export const mlp_def = base_quad_def.extend({}).transform(quadTransform) export const mlp = ( - params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - params.legsoutside = false - if (params.thermalpad === undefined) { - params.thermalpad = true + parameters: z.input, +): { circuitJson: AnySoupElement[]; parameters: any } => { + parameters.legsoutside = false + if (parameters.thermalpad === undefined) { + parameters.thermalpad = true } - return quad(params) + return quad(parameters) } diff --git a/src/fn/ms012.ts b/src/fn/ms012.ts index 1d90ba8..d3dcb7b 100644 --- a/src/fn/ms012.ts +++ b/src/fn/ms012.ts @@ -10,10 +10,10 @@ export const ms012_def = extendSoicDef({ export const ms012 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = ms012_def.parse({ ...raw_params, num_pins: 8 }) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = ms012_def.parse({ ...raw_params, num_pins: 8 }) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } diff --git a/src/fn/ms013.ts b/src/fn/ms013.ts index 7fc1bd5..7f98c73 100644 --- a/src/fn/ms013.ts +++ b/src/fn/ms013.ts @@ -10,10 +10,10 @@ export const ms013_def = extendSoicDef({ export const ms013 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = ms013_def.parse({ ...raw_params, num_pins: 16 }) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = ms013_def.parse({ ...raw_params, num_pins: 16 }) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } diff --git a/src/fn/pinrow.ts b/src/fn/pinrow.ts index c263daf..a3749a8 100644 --- a/src/fn/pinrow.ts +++ b/src/fn/pinrow.ts @@ -12,16 +12,16 @@ export const pinrow_def = z.object({ export const pinrow = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = pinrow_def.parse(raw_params) - const { p, id, od } = params +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = pinrow_def.parse(raw_params) + const { p, id, od } = parameters const holes: any[] = [] /** num_spaces */ - const ns = params.num_pins - 1 + const ns = parameters.num_pins - 1 const xoff = -(ns / 2) * p - for (let i = 0; i < params.num_pins; i++) { + for (let i = 0; i < parameters.num_pins; i++) { holes.push(platedhole(i + 1, xoff + i * p, 0, id, od)) } - return { circuitJson: holes, parameters: JSON.stringify(params) } + return { circuitJson: holes, parameters } } diff --git a/src/fn/qfn.ts b/src/fn/qfn.ts index a9c68f9..793dedd 100644 --- a/src/fn/qfn.ts +++ b/src/fn/qfn.ts @@ -5,8 +5,8 @@ import type { z } from "zod" export const qfn_def = base_quad_def.extend({}).transform(quadTransform) export const qfn = ( - params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - params.legsoutside = false - return quad(params) + parameters: z.input, +): { circuitJson: AnySoupElement[]; parameters: any } => { + parameters.legsoutside = false + return quad(parameters) } diff --git a/src/fn/qfp.ts b/src/fn/qfp.ts index bb46e42..10dce49 100644 --- a/src/fn/qfp.ts +++ b/src/fn/qfp.ts @@ -6,7 +6,7 @@ export const qfp_def = quad_def export const qfp = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { +): { circuitJson: AnySoupElement[]; parameters: any } => { raw_params.legsoutside = true const quad_defaults = quad_def.parse(raw_params) diff --git a/src/fn/quad.ts b/src/fn/quad.ts index 0c96176..f48087c 100644 --- a/src/fn/quad.ts +++ b/src/fn/quad.ts @@ -109,29 +109,29 @@ export const getQuadCoords = (params: { export const quad = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = quad_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = quad_def.parse(raw_params) const pads: AnySoupElement[] = [] - const pin_map = getQuadPinMap(params) + const pin_map = getQuadPinMap(parameters) /** Side pin count */ - const spc = params.num_pins / 4 - for (let i = 0; i < params.num_pins; i++) { + const spc = parameters.num_pins / 4 + for (let i = 0; i < parameters.num_pins; i++) { const { x, y, o: orientation, } = getQuadCoords({ - pin_count: params.num_pins, + pin_count: parameters.num_pins, pn: i + 1, - w: params.w, - h: params.h, - p: params.p ?? 0.5, - pl: params.pl, - legsoutside: params.legsoutside, + w: parameters.w, + h: parameters.h, + p: parameters.p ?? 0.5, + pl: parameters.pl, + legsoutside: parameters.legsoutside, }) - let pw = params.pw - let pl = params.pl + let pw = parameters.pw + let pl = parameters.pl if (orientation === "vert") { ;[pw, pl] = [pl, pw] } @@ -140,14 +140,14 @@ export const quad = ( pads.push(rectpad(pn, x, y, pw, pl)) } - if (params.thermalpad) { - if (typeof params.thermalpad === "boolean") { - const ibw = params.p * (spc - 1) + params.pw - const ibh = params.p * (spc - 1) + params.pw + if (parameters.thermalpad) { + if (typeof parameters.thermalpad === "boolean") { + const ibw = parameters.p * (spc - 1) + parameters.pw + const ibh = parameters.p * (spc - 1) + parameters.pw pads.push(rectpad(["thermalpad"], 0, 0, ibw, ibh)) } else { pads.push( - rectpad(["thermalpad"], 0, 0, params.thermalpad.x, params.thermalpad.y), + rectpad(["thermalpad"], 0, 0, parameters.thermalpad.x, parameters.thermalpad.y), ) } } @@ -162,15 +162,15 @@ export const quad = ( ] as const) { // const dx = Math.floor(corner_index / 2) * 2 - 1 // const dy = 1 - (corner_index % 2) * 2 - const corner_x = (params.w / 2) * dx - const corner_y = (params.h / 2) * dy + const corner_x = (parameters.w / 2) * dx + const corner_y = (parameters.h / 2) * dy let arrow: "none" | "in1" | "in2" = "none" let arrow_x = corner_x let arrow_y = corner_y /** corner size */ - const csz = params.pw * 2 + const csz = parameters.pw * 2 if (pin_map[1] === 1 && corner === "top-left") { arrow = "in1" @@ -191,15 +191,15 @@ export const quad = ( } const rotate_arrow = arrow === "in1" ? 1 : -1 - if (params.legsoutside) { - const arrow_dx = arrow === "in1" ? params.pl / 2 : params.pw / 2 - const arrow_dy = arrow === "in1" ? params.pw / 2 : params.pl / 2 + if (parameters.legsoutside) { + const arrow_dx = arrow === "in1" ? parameters.pl / 2 : parameters.pw / 2 + const arrow_dy = arrow === "in1" ? parameters.pw / 2 : parameters.pl / 2 arrow_x += arrow_dx * dx * rotate_arrow arrow_y -= arrow_dy * dy * rotate_arrow } // Normal Corner - if (arrow === "none" || params.legsoutside) { + if (arrow === "none" || parameters.legsoutside) { silkscreen_corners.push({ layer: "top", pcb_component_id: "", @@ -224,7 +224,7 @@ export const quad = ( // Two lines nearly forming a corner, used when the arrow needs to overlap // the corne (QFN components where legs are inside) - if ((arrow === "in1" || arrow === "in2") && !params.legsoutside) { + if ((arrow === "in1" || arrow === "in2") && !parameters.legsoutside) { silkscreen_corners.push( { layer: "top", @@ -290,6 +290,6 @@ export const quad = ( return { circuitJson: [...pads, ...silkscreen_corners], - parameters: JSON.stringify(params), + parameters, } } diff --git a/src/fn/res.ts b/src/fn/res.ts index ea6744b..89e4968 100644 --- a/src/fn/res.ts +++ b/src/fn/res.ts @@ -2,7 +2,7 @@ import type { AnySoupElement } from "@tscircuit/soup" import { passive, type PassiveDef } from "../helpers/passive-fn" export const res = ( - params: PassiveDef, -): { circuitJson: AnySoupElement[]; parameters: string } => { - return { circuitJson: passive(params), parameters: JSON.stringify(params) } + parameters: PassiveDef, +): { circuitJson: AnySoupElement[]; parameters: any } => { + return { circuitJson: passive(parameters), parameters } } diff --git a/src/fn/sod123.ts b/src/fn/sod123.ts index 01cbf85..ffc9471 100644 --- a/src/fn/sod123.ts +++ b/src/fn/sod123.ts @@ -13,19 +13,19 @@ export const sod_def = z.object({ export const sod123 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = sod_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = sod_def.parse(raw_params) return { - circuitJson: sodWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: sodWithoutParsing(parameters), + parameters, } } -export const getSodCoords = (params: { +export const getSodCoords = (parameters: { pn: number pad_spacing: number }) => { - const { pn, pad_spacing } = params + const { pn, pad_spacing } = parameters if (pn === 1) { return { x: -pad_spacing / 2, y: 0 } @@ -34,16 +34,16 @@ export const getSodCoords = (params: { } } -export const sodWithoutParsing = (params: z.infer) => { +export const sodWithoutParsing = (parameters: z.infer) => { const pads: AnySoupElement[] = [] for (let i = 0; i < 2; i++) { const { x, y } = getSodCoords({ pn: i + 1, - pad_spacing: parseFloat(params.pad_spacing), + pad_spacing: parseFloat(parameters.pad_spacing), }) pads.push( - rectpad(i + 1, x, y, parseFloat(params.pl), parseFloat(params.pw)), + rectpad(i + 1, x, y, parseFloat(parameters.pl), parseFloat(parameters.pw)), ) } diff --git a/src/fn/soic.ts b/src/fn/soic.ts index 6d1d1cd..11c2a0c 100644 --- a/src/fn/soic.ts +++ b/src/fn/soic.ts @@ -41,7 +41,7 @@ export const extendSoicDef = (newDefaults: { const soic_def = extendSoicDef({}) export type SoicInput = z.infer -export const getCcwSoicCoords = (params: { +export const getCcwSoicCoords = (parameters: { num_pins: number pn: number w: number @@ -50,10 +50,10 @@ export const getCcwSoicCoords = (params: { legsoutside?: boolean widthincludeslegs?: boolean }) => { - if (params.widthincludeslegs !== undefined) { - params.legsoutside = !params.widthincludeslegs + if (parameters.widthincludeslegs !== undefined) { + parameters.legsoutside = !parameters.widthincludeslegs } - const { num_pins, pn, w, p, pl, legsoutside } = params + const { num_pins, pn, w, p, pl, legsoutside } = parameters /** pin height */ const ph = num_pins / 2 const isLeft = pn <= ph @@ -88,32 +88,32 @@ export const soic = (raw_params: { p?: number id?: string | number od?: string | number -}): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = soic_def.parse(raw_params) +}): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = soic_def.parse(raw_params) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } -export const soicWithoutParsing = (params: z.infer) => { +export const soicWithoutParsing = (parameters: z.infer) => { const pads: AnySoupElement[] = [] - for (let i = 0; i < params.num_pins; i++) { + for (let i = 0; i < parameters.num_pins; i++) { const { x, y } = getCcwSoicCoords({ - num_pins: params.num_pins, + num_pins: parameters.num_pins, pn: i + 1, - w: params.w, - p: params.p ?? 1.27, - pl: params.pl, - legsoutside: params.legsoutside, + w: parameters.w, + p: parameters.p ?? 1.27, + pl: parameters.pl, + legsoutside: parameters.legsoutside, }) - pads.push(rectpad(i + 1, x, y, params.pl ?? "1mm", params.pw ?? "0.6mm")) + pads.push(rectpad(i + 1, x, y, parameters.pl ?? "1mm", parameters.pw ?? "0.6mm")) } /** silkscreen width */ - const m = Math.min(1, params.p / 2) - const sw = params.w - (params.legsoutside ? 0 : params.pl * 2) - 0.2 - const sh = (params.num_pins / 2 - 1) * params.p + params.pw + m + const m = Math.min(1, parameters.p / 2) + const sw = parameters.w - (parameters.legsoutside ? 0 : parameters.pl * 2) - 0.2 + const sh = (parameters.num_pins / 2 - 1) * parameters.p + parameters.pw + m const silkscreenBorder: PcbSilkscreenPath = { type: "pcb_silkscreen_path", layer: "top", diff --git a/src/fn/sot23.ts b/src/fn/sot23.ts index e08232f..e7855d1 100644 --- a/src/fn/sot23.ts +++ b/src/fn/sot23.ts @@ -13,22 +13,22 @@ export const sot23_def = z.object({ export const sot23 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = sot23_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = sot23_def.parse(raw_params) return { - circuitJson: sot23WithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: sot23WithoutParsing(parameters), + parameters: parameters, } } -export const getCcwSot23Coords = (params: { +export const getCcwSot23Coords = (parameters: { num_pins: number pn: number w: number h: number pl: number }) => { - const { pn, w, h, pl } = params + const { pn, w, h, pl } = parameters if (pn === 1) { return { x: -1.7, y: 0 } @@ -39,19 +39,19 @@ export const getCcwSot23Coords = (params: { } } -export const sot23WithoutParsing = (params: z.infer) => { +export const sot23WithoutParsing = (parameters: z.infer) => { const pads: AnySoupElement[] = [] - for (let i = 0; i < params.num_pins; i++) { + for (let i = 0; i < parameters.num_pins; i++) { const { x, y } = getCcwSot23Coords({ - num_pins: params.num_pins, + num_pins: parameters.num_pins, pn: i + 1, - w: parseFloat(params.w), - h: parseFloat(params.h), - pl: parseFloat(params.pl), + w: parseFloat(parameters.w), + h: parseFloat(parameters.h), + pl: parseFloat(parameters.pl), }) pads.push( - rectpad(i + 1, x, y, parseFloat(params.pl), parseFloat(params.pw)), + rectpad(i + 1, x, y, parseFloat(parameters.pl), parseFloat(parameters.pw)), ) } diff --git a/src/fn/sot236.ts b/src/fn/sot236.ts index 9a303a0..36ddbde 100644 --- a/src/fn/sot236.ts +++ b/src/fn/sot236.ts @@ -10,10 +10,10 @@ export const sot236_def = extendSoicDef({ export const sot236 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = sot236_def.parse({ ...raw_params, num_pins: 6 }) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = sot236_def.parse({ ...raw_params, num_pins: 6 }) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } diff --git a/src/fn/sot563.ts b/src/fn/sot563.ts index 610cc79..8b49d12 100644 --- a/src/fn/sot563.ts +++ b/src/fn/sot563.ts @@ -6,8 +6,8 @@ export const sot563_def = extendSoicDef({}) export const sot563 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = sot563_def.parse({ +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = sot563_def.parse({ fn: "sot563", num_pins: 6, w: 1.94, @@ -17,7 +17,7 @@ export const sot563 = ( legoutside: true, }) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } diff --git a/src/fn/sot723.ts b/src/fn/sot723.ts index 2cbafcb..a09fca9 100644 --- a/src/fn/sot723.ts +++ b/src/fn/sot723.ts @@ -13,22 +13,22 @@ export const sot723_def = z.object({ export const sot723 = ( raw_params: z.input, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = sot723_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = sot723_def.parse(raw_params) return { - circuitJson: sot723WithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: sot723WithoutParsing(parameters), + parameters, } } -export const getCcwSot723Coords = (params: { +export const getCcwSot723Coords = (parameters: { num_pins: number pn: number w: number h: number pl: number }) => { - const { pn, w, h, pl } = params + const { pn, w, h, pl } = parameters if (pn === 1) { return { x: 0, y: 0 } @@ -39,24 +39,24 @@ export const getCcwSot723Coords = (params: { } } -export const sot723WithoutParsing = (params: z.infer) => { +export const sot723WithoutParsing = (parameters: z.infer) => { const pads: AnySoupElement[] = [] for (let i = 0; i < 3; i++) { const { x, y } = getCcwSot723Coords({ - num_pins: params.num_pins, + num_pins: parameters.num_pins, pn: i + 1, - w: Number.parseFloat(params.w), - h: Number.parseFloat(params.h), - pl: Number.parseFloat(params.pl), + w: Number.parseFloat(parameters.w), + h: Number.parseFloat(parameters.h), + pl: Number.parseFloat(parameters.pl), }) pads.push( rectpad( i + 1, x, y, - Number.parseFloat(params.pl), - i !== 0 ? Number.parseFloat(params.pw) : 0.42, + Number.parseFloat(parameters.pl), + i !== 0 ? Number.parseFloat(parameters.pw) : 0.42, ), ) } diff --git a/src/fn/ssop.ts b/src/fn/ssop.ts index e6785e2..babd25e 100644 --- a/src/fn/ssop.ts +++ b/src/fn/ssop.ts @@ -10,10 +10,10 @@ export const ssop_def = extendSoicDef({ export const ssop = ( raw_params: SoicInput, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = ssop_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = ssop_def.parse(raw_params) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } diff --git a/src/fn/tssop.ts b/src/fn/tssop.ts index ef86c41..39e3ed2 100644 --- a/src/fn/tssop.ts +++ b/src/fn/tssop.ts @@ -9,10 +9,10 @@ export const tssop_def = extendSoicDef({ export const tssop = ( raw_params: SoicInput, -): { circuitJson: AnySoupElement[]; parameters: string } => { - const params = tssop_def.parse(raw_params) +): { circuitJson: AnySoupElement[]; parameters: any } => { + const parameters = tssop_def.parse(raw_params) return { - circuitJson: soicWithoutParsing(params), - parameters: JSON.stringify(params), + circuitJson: soicWithoutParsing(parameters), + parameters, } } diff --git a/src/footprinter.ts b/src/footprinter.ts index 85bed42..03c29b8 100644 --- a/src/footprinter.ts +++ b/src/footprinter.ts @@ -49,7 +49,7 @@ export type Footprinter = { pinrow: (num_pins: number) => FootprinterParamsBuilder<"p" | "id" | "od"> params: () => any soup: () => AnySoupElement[] - json: () => string + json: () => any } export const string = (def: string): Footprinter => { @@ -84,6 +84,7 @@ export const footprinter = (): Footprinter & { string: typeof string } => { // console.log(prop, target) if (prop === "soup") { if ("fn" in target && FOOTPRINT_FN[target.fn]) { + console.log(FOOTPRINT_FN[target.fn](target).parameters) return () => FOOTPRINT_FN[target.fn](target).circuitJson } From cd014db92c022c01d98224a0cdd32d229f2c595c Mon Sep 17 00:00:00 2001 From: Shibo Date: Sun, 22 Sep 2024 22:04:30 +0200 Subject: [PATCH 4/5] biome --- src/fn/dfn.ts | 4 +++- src/fn/quad.ts | 8 +++++++- src/fn/sod123.ts | 8 +++++++- src/fn/soic.ts | 7 +++++-- src/fn/sot23.ts | 8 +++++++- src/fn/sot723.ts | 4 +++- 6 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/fn/dfn.ts b/src/fn/dfn.ts index 10272f0..57013fc 100644 --- a/src/fn/dfn.ts +++ b/src/fn/dfn.ts @@ -30,7 +30,9 @@ export const dfn = ( pl: parameters.pl, widthincludeslegs: true, }) - pads.push(rectpad(i + 1, x, y, parameters.pl ?? "1mm", parameters.pw ?? "0.6mm")) + pads.push( + rectpad(i + 1, x, y, parameters.pl ?? "1mm", parameters.pw ?? "0.6mm"), + ) } // The silkscreen is 4 corners and an arrow identifier for pin1 diff --git a/src/fn/quad.ts b/src/fn/quad.ts index f48087c..3705bf8 100644 --- a/src/fn/quad.ts +++ b/src/fn/quad.ts @@ -147,7 +147,13 @@ export const quad = ( pads.push(rectpad(["thermalpad"], 0, 0, ibw, ibh)) } else { pads.push( - rectpad(["thermalpad"], 0, 0, parameters.thermalpad.x, parameters.thermalpad.y), + rectpad( + ["thermalpad"], + 0, + 0, + parameters.thermalpad.x, + parameters.thermalpad.y, + ), ) } } diff --git a/src/fn/sod123.ts b/src/fn/sod123.ts index ffc9471..80d01d0 100644 --- a/src/fn/sod123.ts +++ b/src/fn/sod123.ts @@ -43,7 +43,13 @@ export const sodWithoutParsing = (parameters: z.infer) => { pad_spacing: parseFloat(parameters.pad_spacing), }) pads.push( - rectpad(i + 1, x, y, parseFloat(parameters.pl), parseFloat(parameters.pw)), + rectpad( + i + 1, + x, + y, + parseFloat(parameters.pl), + parseFloat(parameters.pw), + ), ) } diff --git a/src/fn/soic.ts b/src/fn/soic.ts index 11c2a0c..454f417 100644 --- a/src/fn/soic.ts +++ b/src/fn/soic.ts @@ -107,12 +107,15 @@ export const soicWithoutParsing = (parameters: z.infer) => { pl: parameters.pl, legsoutside: parameters.legsoutside, }) - pads.push(rectpad(i + 1, x, y, parameters.pl ?? "1mm", parameters.pw ?? "0.6mm")) + pads.push( + rectpad(i + 1, x, y, parameters.pl ?? "1mm", parameters.pw ?? "0.6mm"), + ) } /** silkscreen width */ const m = Math.min(1, parameters.p / 2) - const sw = parameters.w - (parameters.legsoutside ? 0 : parameters.pl * 2) - 0.2 + const sw = + parameters.w - (parameters.legsoutside ? 0 : parameters.pl * 2) - 0.2 const sh = (parameters.num_pins / 2 - 1) * parameters.p + parameters.pw + m const silkscreenBorder: PcbSilkscreenPath = { type: "pcb_silkscreen_path", diff --git a/src/fn/sot23.ts b/src/fn/sot23.ts index e7855d1..ff772e4 100644 --- a/src/fn/sot23.ts +++ b/src/fn/sot23.ts @@ -51,7 +51,13 @@ export const sot23WithoutParsing = (parameters: z.infer) => { pl: parseFloat(parameters.pl), }) pads.push( - rectpad(i + 1, x, y, parseFloat(parameters.pl), parseFloat(parameters.pw)), + rectpad( + i + 1, + x, + y, + parseFloat(parameters.pl), + parseFloat(parameters.pw), + ), ) } diff --git a/src/fn/sot723.ts b/src/fn/sot723.ts index a09fca9..7bde30f 100644 --- a/src/fn/sot723.ts +++ b/src/fn/sot723.ts @@ -39,7 +39,9 @@ export const getCcwSot723Coords = (parameters: { } } -export const sot723WithoutParsing = (parameters: z.infer) => { +export const sot723WithoutParsing = ( + parameters: z.infer, +) => { const pads: AnySoupElement[] = [] for (let i = 0; i < 3; i++) { From 83deebebd0a2893b8db8c82019889850d97f2097 Mon Sep 17 00:00:00 2001 From: Shibo Date: Sun, 22 Sep 2024 22:07:11 +0200 Subject: [PATCH 5/5] removed console.log() --- src/footprinter.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/footprinter.ts b/src/footprinter.ts index 03c29b8..e0dbdfe 100644 --- a/src/footprinter.ts +++ b/src/footprinter.ts @@ -84,7 +84,6 @@ export const footprinter = (): Footprinter & { string: typeof string } => { // console.log(prop, target) if (prop === "soup") { if ("fn" in target && FOOTPRINT_FN[target.fn]) { - console.log(FOOTPRINT_FN[target.fn](target).parameters) return () => FOOTPRINT_FN[target.fn](target).circuitJson }