@tscircuit/footprinter 0.0.113 → 0.0.115

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/README.md CHANGED
@@ -61,6 +61,8 @@ fp.dip(4).w(7.62).socket()
61
61
 
62
62
  Watch this [getting started with footprinter contribution guide!](https://blog.tscircuit.com/p/learn-how-to-contribute-to-tscircuits?utm_campaign=post&utm_medium=web)
63
63
 
64
+ https://github.com/user-attachments/assets/72596154-1410-4b2d-9e35-0e2d1af9415f
65
+
64
66
  ## Footprinter Strings
65
67
 
66
68
  A footprinter string is a string that maps to a set of builder calls.
package/dist/index.js CHANGED
@@ -36,6 +36,7 @@ __export(fn_exports, {
36
36
  sod523: () => sod523,
37
37
  sod723: () => sod723,
38
38
  sod882: () => sod882,
39
+ sod882d: () => sod882d,
39
40
  soic: () => soic,
40
41
  sop8: () => sop8,
41
42
  sot23: () => sot23,
@@ -3152,23 +3153,23 @@ var sodWithoutParsing7 = (parameters) => {
3152
3153
  return pads;
3153
3154
  };
3154
3155
 
3155
- // src/fn/melf.ts
3156
+ // src/fn/sod882d.ts
3156
3157
  import { z as z29 } from "zod";
3157
3158
  import { length as length23 } from "circuit-json";
3158
- var melf_def = z29.object({
3159
+ var sod_def8 = z29.object({
3159
3160
  fn: z29.string(),
3160
3161
  num_pins: z29.literal(2).default(2),
3161
- w: z29.string().default("7.0mm"),
3162
- h: z29.string().default("3.35mm"),
3163
- pl: z29.string().default("1.50mm"),
3164
- pw: z29.string().default("2.70mm"),
3165
- pad_spacing: z29.string().default("4.8mm")
3162
+ w: z29.string().default("1.90mm"),
3163
+ h: z29.string().default("1.33mm"),
3164
+ pl: z29.string().default("0.5mm"),
3165
+ pw: z29.string().default("0.7mm"),
3166
+ pad_spacing: z29.string().default("0.8mm")
3166
3167
  });
3167
- var melf = (raw_params) => {
3168
- const parameters = melf_def.parse(raw_params);
3168
+ var sod882d = (raw_params) => {
3169
+ const parameters = sod_def8.parse(raw_params);
3169
3170
  const silkscreenRefText = silkscreenRef(
3170
3171
  0,
3171
- length23.parse(parameters.h),
3172
+ length23.parse(parameters.h) + 0.1,
3172
3173
  0.3
3173
3174
  );
3174
3175
  const silkscreenLine = {
@@ -3177,7 +3178,7 @@ var melf = (raw_params) => {
3177
3178
  pcb_component_id: "",
3178
3179
  route: [
3179
3180
  {
3180
- x: length23.parse(parameters.pad_spacing) / 2,
3181
+ x: length23.parse(parameters.pad_spacing) / 2 + 0.1,
3181
3182
  y: length23.parse(parameters.h) / 2
3182
3183
  },
3183
3184
  {
@@ -3189,7 +3190,7 @@ var melf = (raw_params) => {
3189
3190
  y: -length23.parse(parameters.h) / 2
3190
3191
  },
3191
3192
  {
3192
- x: length23.parse(parameters.pad_spacing) / 2,
3193
+ x: length23.parse(parameters.pad_spacing) / 2 + 0.1,
3193
3194
  y: -length23.parse(parameters.h) / 2
3194
3195
  }
3195
3196
  ],
@@ -3197,14 +3198,14 @@ var melf = (raw_params) => {
3197
3198
  pcb_silkscreen_path_id: ""
3198
3199
  };
3199
3200
  return {
3200
- circuitJson: melfWithoutParsing(parameters).concat(
3201
+ circuitJson: sodWithoutParsing8(parameters).concat(
3201
3202
  silkscreenLine,
3202
3203
  silkscreenRefText
3203
3204
  ),
3204
3205
  parameters
3205
3206
  };
3206
3207
  };
3207
- var getMelfCoords = (parameters) => {
3208
+ var getSodCoords8 = (parameters) => {
3208
3209
  const { pn, pad_spacing } = parameters;
3209
3210
  if (pn === 1) {
3210
3211
  return { x: -pad_spacing / 2, y: 0 };
@@ -3212,10 +3213,10 @@ var getMelfCoords = (parameters) => {
3212
3213
  return { x: pad_spacing / 2, y: 0 };
3213
3214
  }
3214
3215
  };
3215
- var melfWithoutParsing = (parameters) => {
3216
+ var sodWithoutParsing8 = (parameters) => {
3216
3217
  const pads = [];
3217
3218
  for (let i = 1; i <= parameters.num_pins; i++) {
3218
- const { x, y } = getMelfCoords({
3219
+ const { x, y } = getSodCoords8({
3219
3220
  pn: i,
3220
3221
  pad_spacing: Number.parseFloat(parameters.pad_spacing)
3221
3222
  });
@@ -3232,20 +3233,20 @@ var melfWithoutParsing = (parameters) => {
3232
3233
  return pads;
3233
3234
  };
3234
3235
 
3235
- // src/fn/micromelf.ts
3236
+ // src/fn/melf.ts
3236
3237
  import { z as z30 } from "zod";
3237
3238
  import { length as length24 } from "circuit-json";
3238
- var micromelf_def = z30.object({
3239
+ var melf_def = z30.object({
3239
3240
  fn: z30.string(),
3240
3241
  num_pins: z30.literal(2).default(2),
3241
- w: z30.string().default("3.0mm"),
3242
- h: z30.string().default("1.80mm"),
3243
- pl: z30.string().default("0.80mm"),
3244
- pw: z30.string().default("1.20mm"),
3245
- pad_spacing: z30.string().default("1.6mm")
3242
+ w: z30.string().default("7.0mm"),
3243
+ h: z30.string().default("3.35mm"),
3244
+ pl: z30.string().default("1.50mm"),
3245
+ pw: z30.string().default("2.70mm"),
3246
+ pad_spacing: z30.string().default("4.8mm")
3246
3247
  });
3247
- var micromelf = (raw_params) => {
3248
- const parameters = micromelf_def.parse(raw_params);
3248
+ var melf = (raw_params) => {
3249
+ const parameters = melf_def.parse(raw_params);
3249
3250
  const silkscreenRefText = silkscreenRef(
3250
3251
  0,
3251
3252
  length24.parse(parameters.h),
@@ -3261,11 +3262,11 @@ var micromelf = (raw_params) => {
3261
3262
  y: length24.parse(parameters.h) / 2
3262
3263
  },
3263
3264
  {
3264
- x: -length24.parse(parameters.w) / 2 - 0.1,
3265
+ x: -length24.parse(parameters.w) / 2,
3265
3266
  y: length24.parse(parameters.h) / 2
3266
3267
  },
3267
3268
  {
3268
- x: -length24.parse(parameters.w) / 2 - 0.1,
3269
+ x: -length24.parse(parameters.w) / 2,
3269
3270
  y: -length24.parse(parameters.h) / 2
3270
3271
  },
3271
3272
  {
@@ -3276,6 +3277,86 @@ var micromelf = (raw_params) => {
3276
3277
  stroke_width: 0.1,
3277
3278
  pcb_silkscreen_path_id: ""
3278
3279
  };
3280
+ return {
3281
+ circuitJson: melfWithoutParsing(parameters).concat(
3282
+ silkscreenLine,
3283
+ silkscreenRefText
3284
+ ),
3285
+ parameters
3286
+ };
3287
+ };
3288
+ var getMelfCoords = (parameters) => {
3289
+ const { pn, pad_spacing } = parameters;
3290
+ if (pn === 1) {
3291
+ return { x: -pad_spacing / 2, y: 0 };
3292
+ } else {
3293
+ return { x: pad_spacing / 2, y: 0 };
3294
+ }
3295
+ };
3296
+ var melfWithoutParsing = (parameters) => {
3297
+ const pads = [];
3298
+ for (let i = 1; i <= parameters.num_pins; i++) {
3299
+ const { x, y } = getMelfCoords({
3300
+ pn: i,
3301
+ pad_spacing: Number.parseFloat(parameters.pad_spacing)
3302
+ });
3303
+ pads.push(
3304
+ rectpad(
3305
+ i,
3306
+ x,
3307
+ y,
3308
+ Number.parseFloat(parameters.pl),
3309
+ Number.parseFloat(parameters.pw)
3310
+ )
3311
+ );
3312
+ }
3313
+ return pads;
3314
+ };
3315
+
3316
+ // src/fn/micromelf.ts
3317
+ import { z as z31 } from "zod";
3318
+ import { length as length25 } from "circuit-json";
3319
+ var micromelf_def = z31.object({
3320
+ fn: z31.string(),
3321
+ num_pins: z31.literal(2).default(2),
3322
+ w: z31.string().default("3.0mm"),
3323
+ h: z31.string().default("1.80mm"),
3324
+ pl: z31.string().default("0.80mm"),
3325
+ pw: z31.string().default("1.20mm"),
3326
+ pad_spacing: z31.string().default("1.6mm")
3327
+ });
3328
+ var micromelf = (raw_params) => {
3329
+ const parameters = micromelf_def.parse(raw_params);
3330
+ const silkscreenRefText = silkscreenRef(
3331
+ 0,
3332
+ length25.parse(parameters.h),
3333
+ 0.3
3334
+ );
3335
+ const silkscreenLine = {
3336
+ type: "pcb_silkscreen_path",
3337
+ layer: "top",
3338
+ pcb_component_id: "",
3339
+ route: [
3340
+ {
3341
+ x: length25.parse(parameters.pad_spacing) / 2,
3342
+ y: length25.parse(parameters.h) / 2
3343
+ },
3344
+ {
3345
+ x: -length25.parse(parameters.w) / 2 - 0.1,
3346
+ y: length25.parse(parameters.h) / 2
3347
+ },
3348
+ {
3349
+ x: -length25.parse(parameters.w) / 2 - 0.1,
3350
+ y: -length25.parse(parameters.h) / 2
3351
+ },
3352
+ {
3353
+ x: length25.parse(parameters.pad_spacing) / 2,
3354
+ y: -length25.parse(parameters.h) / 2
3355
+ }
3356
+ ],
3357
+ stroke_width: 0.1,
3358
+ pcb_silkscreen_path_id: ""
3359
+ };
3279
3360
  return {
3280
3361
  circuitJson: microMelfWithoutParsing(parameters).concat(
3281
3362
  silkscreenLine,