Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.json() returns a string of used parameters #40

Merged
merged 5 commits into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
13 changes: 8 additions & 5 deletions src/fn/bga.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down Expand Up @@ -57,9 +58,11 @@ export const bga_def = z
export type BgaDefInput = z.input<typeof bga_def>
export type BgaDef = z.infer<typeof bga_def>

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

Expand Down Expand Up @@ -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,
" ",
)}`,
Expand Down Expand Up @@ -134,5 +137,5 @@ export const bga = (params: BgaDefInput): AnySoupElement[] => {
}
}

return [...pads]
return { circuitJson: [...pads], parameters: JSON.stringify(params) }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why stringify?

Suggested change
return { circuitJson: [...pads], parameters: JSON.stringify(params) }
return { circuitJson: [...pads], parameters: params }

}
6 changes: 4 additions & 2 deletions src/fn/cap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) }
}
9 changes: 7 additions & 2 deletions src/fn/dfn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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++) {
Expand Down Expand Up @@ -85,5 +87,8 @@ export const dfn = (raw_params: SoicInput) => {
],
})

return [...pads, ...silkscreenPaths]
return {
circuitJson: [...pads, ...silkscreenPaths],
parameters: JSON.stringify(params),
}
}
5 changes: 3 additions & 2 deletions src/fn/diode.ts
Original file line number Diff line number Diff line change
@@ -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) }
}
8 changes: 6 additions & 2 deletions src/fn/dip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down Expand Up @@ -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++) {
Expand Down Expand Up @@ -117,5 +118,8 @@ export const dip = (raw_params: {
type: "pcb_silkscreen_path",
}

return [...platedHoles, silkscreenBorder]
return {
circuitJson: [...platedHoles, silkscreenBorder],
parameters: JSON.stringify(params),
}
}
2 changes: 1 addition & 1 deletion src/fn/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
6 changes: 4 additions & 2 deletions src/fn/led.ts
Original file line number Diff line number Diff line change
@@ -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) }
}
4 changes: 3 additions & 1 deletion src/fn/mlp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof mlp_def>): AnySoupElement[] => {
export const mlp = (
params: z.input<typeof mlp_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
params.legsoutside = false
if (params.thermalpad === undefined) {
params.thermalpad = true
Expand Down
11 changes: 9 additions & 2 deletions src/fn/ms012.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { AnySoupElement } from "@tscircuit/soup"
import { extendSoicDef, soicWithoutParsing } from "./soic"
import type { z } from "zod"

Expand All @@ -7,6 +8,12 @@ export const ms012_def = extendSoicDef({
legsoutside: true,
})

export const ms012 = (params: z.input<typeof ms012_def>) => {
return soicWithoutParsing(ms012_def.parse({ ...params, num_pins: 8 }))
export const ms012 = (
raw_params: z.input<typeof ms012_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
const params = ms012_def.parse({ ...raw_params, num_pins: 8 })
return {
circuitJson: soicWithoutParsing(params),
parameters: JSON.stringify(params),
}
}
11 changes: 9 additions & 2 deletions src/fn/ms013.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { AnySoupElement } from "@tscircuit/soup"
import { extendSoicDef, soicWithoutParsing } from "./soic"
import type { z } from "zod"

Expand All @@ -7,6 +8,12 @@ export const ms013_def = extendSoicDef({
legsoutside: true,
})

export const ms013 = (params: z.input<typeof ms013_def>) => {
return soicWithoutParsing(ms013_def.parse({ ...params, num_pins: 16 }))
export const ms013 = (
raw_params: z.input<typeof ms013_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
const params = ms013_def.parse({ ...raw_params, num_pins: 16 })
return {
circuitJson: soicWithoutParsing(params),
parameters: JSON.stringify(params),
}
}
9 changes: 6 additions & 3 deletions src/fn/pinrow.ts
Original file line number Diff line number Diff line change
@@ -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<typeof pinrow_def>) => {
export const pinrow = (
raw_params: z.input<typeof pinrow_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
const params = pinrow_def.parse(raw_params)
const { p, id, od } = params
const holes: any[] = []
Expand All @@ -20,5 +23,5 @@ export const pinrow = (raw_params: z.input<typeof pinrow_def>) => {
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) }
}
4 changes: 3 additions & 1 deletion src/fn/qfn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof qfn_def>): AnySoupElement[] => {
export const qfn = (
params: z.input<typeof qfn_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
params.legsoutside = false
return quad(params)
}
4 changes: 3 additions & 1 deletion src/fn/qfp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import type { z } from "zod"

export const qfp_def = quad_def

export const qfp = (raw_params: z.input<typeof quad_def>): AnySoupElement[] => {
export const qfp = (
raw_params: z.input<typeof quad_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
raw_params.legsoutside = true

const quad_defaults = quad_def.parse(raw_params)
Expand Down
8 changes: 6 additions & 2 deletions src/fn/quad.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -108,7 +109,7 @@ export const getQuadCoords = (params: {

export const quad = (
raw_params: z.input<typeof quad_def>,
): AnySoupElement[] => {
): { circuitJson: AnySoupElement[]; parameters: string } => {
const params = quad_def.parse(raw_params)
const pads: AnySoupElement[] = []
const pin_map = getQuadPinMap(params)
Expand Down Expand Up @@ -287,5 +288,8 @@ export const quad = (
}
}

return [...pads, ...silkscreen_corners]
return {
circuitJson: [...pads, ...silkscreen_corners],
parameters: JSON.stringify(params),
}
}
6 changes: 4 additions & 2 deletions src/fn/res.ts
Original file line number Diff line number Diff line change
@@ -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) }
}
51 changes: 29 additions & 22 deletions src/fn/sod123.ts
Original file line number Diff line number Diff line change
@@ -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<typeof sod_def>): AnySoupElement[] => {
return sodWithoutParsing(sod_def.parse(params));
};
export const sod123 = (
raw_params: z.input<typeof sod_def>,
): { 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<typeof sod_def>) => {
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;
};

return pads
}
9 changes: 7 additions & 2 deletions src/fn/soic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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")),
Expand Down Expand Up @@ -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<typeof soic_def>) => {
Expand Down
11 changes: 9 additions & 2 deletions src/fn/sot23.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,22 @@ 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"),
pl: z.string().default("0.8mm"),
pw: z.string().default("0.764mm"),
})

export const sot23 = (params: z.input<typeof sot23_def>): AnySoupElement[] => {
return sot23WithoutParsing(sot23_def.parse(params))
export const sot23 = (
raw_params: z.input<typeof sot23_def>,
): { circuitJson: AnySoupElement[]; parameters: string } => {
const params = sot23_def.parse(raw_params)
return {
circuitJson: sot23WithoutParsing(params),
parameters: JSON.stringify(params),
}
}

export const getCcwSot23Coords = (params: {
Expand Down
Loading
Loading