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 all 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: 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

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

return [...pads]
return { circuitJson: [...pads], parameters }
}
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 = (
parameters: PassiveDef,
): { circuitJson: AnySoupElement[]; parameters: any } => {
return { circuitJson: passive(parameters), parameters }
}
39 changes: 23 additions & 16 deletions src/fn/dfn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,29 @@ export const dfn_def = extendSoicDef({})
*
* Similar to SOIC but different silkscreen
*/
export const dfn = (raw_params: SoicInput) => {
const params = dfn_def.parse(raw_params)
export const dfn = (
raw_params: SoicInput,
): { 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) {
Expand All @@ -44,21 +48,21 @@ export const dfn = (raw_params: SoicInput) => {
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",
})
}

// 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",
Expand All @@ -85,5 +89,8 @@ export const dfn = (raw_params: SoicInput) => {
],
})

return [...pads, ...silkscreenPaths]
return {
circuitJson: [...pads, ...silkscreenPaths],
parameters,
}
}
7 changes: 4 additions & 3 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: {
export const diode = (parameters: {
tht: boolean
p: number
}): AnySoupElement[] => {
return []
}): { circuitJson: AnySoupElement[]; parameters: any } => {
return { circuitJson: passive(parameters), parameters }
}
24 changes: 14 additions & 10 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,23 +82,23 @@ export const dip = (raw_params: {
p?: number
id?: string | number
od?: string | number
}): AnySoupElement[] => {
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: "",
Expand All @@ -117,5 +118,8 @@ export const dip = (raw_params: {
type: "pcb_silkscreen_path",
}

return [...platedHoles, silkscreenBorder]
return {
circuitJson: [...platedHoles, silkscreenBorder],
parameters,
}
}
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 = (
parameters: PassiveDef,
): { circuitJson: AnySoupElement[]; parameters: any } => {
return { circuitJson: passive(parameters), parameters }
}
12 changes: 7 additions & 5 deletions src/fn/mlp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ 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[] => {
params.legsoutside = false
if (params.thermalpad === undefined) {
params.thermalpad = true
export const mlp = (
parameters: z.input<typeof mlp_def>,
): { circuitJson: AnySoupElement[]; parameters: any } => {
parameters.legsoutside = false
if (parameters.thermalpad === undefined) {
parameters.thermalpad = true
}
return quad(params)
return quad(parameters)
}
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: any } => {
const parameters = ms012_def.parse({ ...raw_params, num_pins: 8 })
return {
circuitJson: soicWithoutParsing(parameters),
parameters,
}
}
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: any } => {
const parameters = ms013_def.parse({ ...raw_params, num_pins: 16 })
return {
circuitJson: soicWithoutParsing(parameters),
parameters,
}
}
17 changes: 10 additions & 7 deletions src/fn/pinrow.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
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>) => {
const params = pinrow_def.parse(raw_params)
const { p, id, od } = params
export const pinrow = (
raw_params: z.input<typeof pinrow_def>,
): { 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 holes
return { circuitJson: holes, parameters }
}
8 changes: 5 additions & 3 deletions 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[] => {
params.legsoutside = false
return quad(params)
export const qfn = (
parameters: z.input<typeof qfn_def>,
): { circuitJson: AnySoupElement[]; parameters: any } => {
parameters.legsoutside = false
return quad(parameters)
}
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: any } => {
raw_params.legsoutside = true

const quad_defaults = quad_def.parse(raw_params)
Expand Down
Loading
Loading