@tscircuit/footprinter 0.0.42 → 0.0.43

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.cjs CHANGED
@@ -2705,16 +2705,16 @@ var require_dist = __commonJS({
2705
2705
  };
2706
2706
  }
2707
2707
  };
2708
- var import_zod8 = require("zod");
2709
- var resistance = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2710
- var capacitance = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2711
- var inductance = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2712
- var voltage = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2713
- var length5 = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2708
+ var import_zod9 = require("zod");
2709
+ var resistance = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2710
+ var capacitance = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2711
+ var inductance = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2712
+ var voltage = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2713
+ var length5 = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2714
2714
  var distance2 = length5;
2715
- var current = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2716
- var time = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2717
- var rotation = import_zod8.z.string().or(import_zod8.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2715
+ var current = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2716
+ var time = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2717
+ var rotation = import_zod9.z.string().or(import_zod9.z.number()).transform((v) => parseAndConvertSiUnit(v).value);
2718
2718
  var import_zod22 = require("zod");
2719
2719
  var point = import_zod22.z.object({
2720
2720
  x: distance2,
@@ -2758,9 +2758,9 @@ var require_dist = __commonJS({
2758
2758
  var source_simple_diode = source_component_base.extend({
2759
2759
  ftype: import_zod82.z.literal("simple_diode")
2760
2760
  });
2761
- var import_zod9 = require("zod");
2761
+ var import_zod92 = require("zod");
2762
2762
  var source_simple_ground = source_component_base.extend({
2763
- ftype: import_zod9.z.literal("simple_ground")
2763
+ ftype: import_zod92.z.literal("simple_ground")
2764
2764
  });
2765
2765
  var import_zod10 = require("zod");
2766
2766
  var source_simple_bug = source_component_base.extend({
@@ -3693,6 +3693,9 @@ var extendSoicDef = (newDefaults) => import_zod5.z.object({
3693
3693
  });
3694
3694
  var soic_def = extendSoicDef({});
3695
3695
  var getCcwSoicCoords = (params) => {
3696
+ if (params.widthincludeslegs !== void 0) {
3697
+ params.legsoutside = !params.widthincludeslegs;
3698
+ }
3696
3699
  const { num_pins, pn, w, p, pl, legsoutside } = params;
3697
3700
  const ph = num_pins / 2;
3698
3701
  const isLeft = pn <= ph;
@@ -4110,10 +4113,79 @@ var sot236 = (params) => {
4110
4113
  return soicWithoutParsing(sot236_def.parse({ ...params, num_pins: 6 }));
4111
4114
  };
4112
4115
 
4116
+ // src/fn/dfn.ts
4117
+ var import_zod8 = require("zod");
4118
+
4119
+ // src/helpers/corner.ts
4120
+ var CORNERS = [
4121
+ { name: "top-left", dx: -1, dy: 1 },
4122
+ { name: "top-right", dx: 1, dy: 1 },
4123
+ { name: "bottom-left", dx: -1, dy: -1 },
4124
+ { name: "bottom-right", dx: 1, dy: -1 }
4125
+ ];
4126
+
4113
4127
  // src/fn/dfn.ts
4114
4128
  var dfn_def = extendSoicDef({});
4115
4129
  var dfn = (raw_params) => {
4116
- return soicWithoutParsing(dfn_def.parse(raw_params));
4130
+ const params = dfn_def.parse(raw_params);
4131
+ const pads = [];
4132
+ for (let i = 0; i < params.num_pins; i++) {
4133
+ const { x, y } = getCcwSoicCoords({
4134
+ num_pins: params.num_pins,
4135
+ pn: i + 1,
4136
+ w: params.w,
4137
+ p: params.p ?? 1.27,
4138
+ pl: params.pl,
4139
+ widthincludeslegs: true
4140
+ });
4141
+ pads.push(rectpad(i + 1, x, y, params.pl ?? "1mm", params.pw ?? "0.6mm"));
4142
+ }
4143
+ const m = Math.min(1, params.p / 2);
4144
+ const sw = params.w + m;
4145
+ const sh = (params.num_pins / 2 - 1) * params.p + params.pw + m;
4146
+ const silkscreenPaths = [];
4147
+ for (const corner of CORNERS) {
4148
+ const { dx, dy } = corner;
4149
+ silkscreenPaths.push({
4150
+ layer: "top",
4151
+ pcb_component_id: "",
4152
+ pcb_silkscreen_path_id: "",
4153
+ route: [
4154
+ { x: dx * sw / 2 - dx * params.p, y: dy * sh / 2 },
4155
+ { x: dx * sw / 2, y: dy * sh / 2 },
4156
+ { x: dx * sw / 2, y: dy * sh / 2 - dy * params.p }
4157
+ ],
4158
+ type: "pcb_silkscreen_path"
4159
+ });
4160
+ }
4161
+ const as = params.p / 4;
4162
+ const atx = -sw / 2 - as / 2;
4163
+ const aty = sh / 2 - params.p / 2;
4164
+ silkscreenPaths.push({
4165
+ layer: "top",
4166
+ pcb_component_id: "",
4167
+ pcb_silkscreen_path_id: "",
4168
+ type: "pcb_silkscreen_path",
4169
+ route: [
4170
+ {
4171
+ x: atx,
4172
+ y: aty
4173
+ },
4174
+ {
4175
+ x: atx - as,
4176
+ y: aty + as
4177
+ },
4178
+ {
4179
+ x: atx - as,
4180
+ y: aty - as
4181
+ },
4182
+ {
4183
+ x: atx,
4184
+ y: aty
4185
+ }
4186
+ ]
4187
+ });
4188
+ return [...pads, ...silkscreenPaths];
4117
4189
  };
4118
4190
 
4119
4191
  // src/helpers/is-not-null.ts