@tscircuit/pcb-viewer 1.11.276 → 1.11.278
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.js +194 -166
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -7075,6 +7075,166 @@ function getExpandedStroke(strokeInput, defaultWidth) {
|
|
|
7075
7075
|
|
|
7076
7076
|
// src/lib/convert-element-to-primitive.ts
|
|
7077
7077
|
import { distance } from "circuit-json";
|
|
7078
|
+
|
|
7079
|
+
// src/lib/element-to-primitive-converters/convert-smtpad-rect.ts
|
|
7080
|
+
var convertSmtpadRect = (element, metadata) => {
|
|
7081
|
+
const { x, y, width, height, layer, rect_border_radius } = element;
|
|
7082
|
+
const corner_radius = element.corner_radius ?? rect_border_radius ?? 0;
|
|
7083
|
+
const primitives = [
|
|
7084
|
+
{
|
|
7085
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("rect"),
|
|
7086
|
+
pcb_drawing_type: "rect",
|
|
7087
|
+
x,
|
|
7088
|
+
y,
|
|
7089
|
+
w: width,
|
|
7090
|
+
h: height,
|
|
7091
|
+
layer: layer || "top",
|
|
7092
|
+
_element: element,
|
|
7093
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7094
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7095
|
+
_source_port: metadata._source_port,
|
|
7096
|
+
roundness: corner_radius,
|
|
7097
|
+
...element.shape === "rotated_rect" && element.ccw_rotation !== void 0 ? { ccw_rotation: element.ccw_rotation } : {}
|
|
7098
|
+
}
|
|
7099
|
+
];
|
|
7100
|
+
if (element.is_covered_with_solder_mask) {
|
|
7101
|
+
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7102
|
+
const maskPrimitiveBase = {
|
|
7103
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("rect"),
|
|
7104
|
+
pcb_drawing_type: "rect",
|
|
7105
|
+
x,
|
|
7106
|
+
y,
|
|
7107
|
+
w: width,
|
|
7108
|
+
h: height,
|
|
7109
|
+
layer: maskLayer,
|
|
7110
|
+
_element: element,
|
|
7111
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7112
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7113
|
+
_source_port: metadata._source_port,
|
|
7114
|
+
roundness: corner_radius,
|
|
7115
|
+
...element.shape === "rotated_rect" && element.ccw_rotation !== void 0 ? { ccw_rotation: element.ccw_rotation } : {}
|
|
7116
|
+
};
|
|
7117
|
+
const maskPrimitive = {
|
|
7118
|
+
...maskPrimitiveBase,
|
|
7119
|
+
..."solder_mask_color" in element && element.solder_mask_color ? { color: element.solder_mask_color } : {}
|
|
7120
|
+
};
|
|
7121
|
+
primitives.push(maskPrimitive);
|
|
7122
|
+
}
|
|
7123
|
+
return primitives;
|
|
7124
|
+
};
|
|
7125
|
+
|
|
7126
|
+
// src/lib/element-to-primitive-converters/convert-smtpad-circle.ts
|
|
7127
|
+
var convertSmtpadCircle = (element, metadata) => {
|
|
7128
|
+
const { x, y, radius, layer } = element;
|
|
7129
|
+
const primitives = [
|
|
7130
|
+
{
|
|
7131
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("circle"),
|
|
7132
|
+
pcb_drawing_type: "circle",
|
|
7133
|
+
x,
|
|
7134
|
+
y,
|
|
7135
|
+
r: radius,
|
|
7136
|
+
layer: layer || "top",
|
|
7137
|
+
_element: element,
|
|
7138
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7139
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7140
|
+
_source_port: metadata._source_port
|
|
7141
|
+
}
|
|
7142
|
+
];
|
|
7143
|
+
if (element.is_covered_with_solder_mask) {
|
|
7144
|
+
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7145
|
+
const maskPrimitive = {
|
|
7146
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("circle"),
|
|
7147
|
+
pcb_drawing_type: "circle",
|
|
7148
|
+
x,
|
|
7149
|
+
y,
|
|
7150
|
+
r: radius,
|
|
7151
|
+
layer: maskLayer,
|
|
7152
|
+
_element: element,
|
|
7153
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7154
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7155
|
+
_source_port: metadata._source_port,
|
|
7156
|
+
..."solder_mask_color" in element && element.solder_mask_color ? { color: element.solder_mask_color } : {}
|
|
7157
|
+
};
|
|
7158
|
+
primitives.push(maskPrimitive);
|
|
7159
|
+
}
|
|
7160
|
+
return primitives;
|
|
7161
|
+
};
|
|
7162
|
+
|
|
7163
|
+
// src/lib/element-to-primitive-converters/convert-smtpad-polygon.ts
|
|
7164
|
+
var convertSmtpadPolygon = (element, metadata) => {
|
|
7165
|
+
const { layer, points } = element;
|
|
7166
|
+
const primitives = [
|
|
7167
|
+
{
|
|
7168
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("polygon"),
|
|
7169
|
+
pcb_drawing_type: "polygon",
|
|
7170
|
+
points: normalizePolygonPoints(points),
|
|
7171
|
+
layer: layer || "top",
|
|
7172
|
+
_element: element,
|
|
7173
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7174
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7175
|
+
_source_port: metadata._source_port
|
|
7176
|
+
}
|
|
7177
|
+
];
|
|
7178
|
+
if (element.is_covered_with_solder_mask) {
|
|
7179
|
+
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7180
|
+
const maskPrimitive = {
|
|
7181
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("polygon"),
|
|
7182
|
+
pcb_drawing_type: "polygon",
|
|
7183
|
+
points: normalizePolygonPoints(points),
|
|
7184
|
+
layer: maskLayer,
|
|
7185
|
+
_element: element,
|
|
7186
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7187
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7188
|
+
_source_port: metadata._source_port,
|
|
7189
|
+
..."solder_mask_color" in element && element.solder_mask_color ? { color: element.solder_mask_color } : {}
|
|
7190
|
+
};
|
|
7191
|
+
primitives.push(maskPrimitive);
|
|
7192
|
+
}
|
|
7193
|
+
return primitives;
|
|
7194
|
+
};
|
|
7195
|
+
|
|
7196
|
+
// src/lib/element-to-primitive-converters/convert-smtpad-pill.ts
|
|
7197
|
+
var convertSmtpadPill = (element, metadata) => {
|
|
7198
|
+
const { x, y, width, height, layer } = element;
|
|
7199
|
+
const primitives = [
|
|
7200
|
+
{
|
|
7201
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("pill"),
|
|
7202
|
+
pcb_drawing_type: "pill",
|
|
7203
|
+
x,
|
|
7204
|
+
y,
|
|
7205
|
+
w: width,
|
|
7206
|
+
h: height,
|
|
7207
|
+
layer: layer || "top",
|
|
7208
|
+
_element: element,
|
|
7209
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7210
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7211
|
+
_source_port: metadata._source_port,
|
|
7212
|
+
...element.shape === "rotated_pill" && element.ccw_rotation !== void 0 ? { ccw_rotation: element.ccw_rotation } : {}
|
|
7213
|
+
}
|
|
7214
|
+
];
|
|
7215
|
+
if (element.is_covered_with_solder_mask) {
|
|
7216
|
+
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7217
|
+
const maskPrimitive = {
|
|
7218
|
+
_pcb_drawing_object_id: getNewPcbDrawingObjectId("pill"),
|
|
7219
|
+
pcb_drawing_type: "pill",
|
|
7220
|
+
x,
|
|
7221
|
+
y,
|
|
7222
|
+
w: width,
|
|
7223
|
+
h: height,
|
|
7224
|
+
layer: maskLayer,
|
|
7225
|
+
_element: element,
|
|
7226
|
+
_parent_pcb_component: metadata._parent_pcb_component,
|
|
7227
|
+
_parent_source_component: metadata._parent_source_component,
|
|
7228
|
+
_source_port: metadata._source_port,
|
|
7229
|
+
...element.shape === "rotated_pill" && element.ccw_rotation !== void 0 ? { ccw_rotation: element.ccw_rotation } : {},
|
|
7230
|
+
..."solder_mask_color" in element && element.solder_mask_color ? { color: element.solder_mask_color } : {}
|
|
7231
|
+
};
|
|
7232
|
+
primitives.push(maskPrimitive);
|
|
7233
|
+
}
|
|
7234
|
+
return primitives;
|
|
7235
|
+
};
|
|
7236
|
+
|
|
7237
|
+
// src/lib/convert-element-to-primitive.ts
|
|
7078
7238
|
var globalPcbDrawingObjectCount = 0;
|
|
7079
7239
|
var getNewPcbDrawingObjectId = (prefix) => `${prefix}_${globalPcbDrawingObjectCount++}`;
|
|
7080
7240
|
var normalizePolygonPoints = (points) => (points ?? []).map((point) => ({
|
|
@@ -7094,51 +7254,57 @@ var convertElementToPrimitives = (element, allElements) => {
|
|
|
7094
7254
|
) : void 0;
|
|
7095
7255
|
switch (element.type) {
|
|
7096
7256
|
case "pcb_panel": {
|
|
7097
|
-
const { width, height } = element;
|
|
7257
|
+
const { width, height, center } = element;
|
|
7258
|
+
const cx = center?.x ?? 0;
|
|
7259
|
+
const cy = center?.y ?? 0;
|
|
7098
7260
|
return [
|
|
7261
|
+
// Bottom line
|
|
7099
7262
|
{
|
|
7100
7263
|
_pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,
|
|
7101
7264
|
pcb_drawing_type: "line",
|
|
7102
|
-
x1:
|
|
7103
|
-
y1:
|
|
7104
|
-
x2: width,
|
|
7105
|
-
y2:
|
|
7265
|
+
x1: cx - width / 2,
|
|
7266
|
+
y1: cy - height / 2,
|
|
7267
|
+
x2: cx + width / 2,
|
|
7268
|
+
y2: cy - height / 2,
|
|
7106
7269
|
width: 1,
|
|
7107
7270
|
zoomIndependent: true,
|
|
7108
7271
|
layer: "board",
|
|
7109
7272
|
_element: element
|
|
7110
7273
|
},
|
|
7274
|
+
// Top line
|
|
7111
7275
|
{
|
|
7112
7276
|
_pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,
|
|
7113
7277
|
pcb_drawing_type: "line",
|
|
7114
|
-
x1:
|
|
7115
|
-
y1: height,
|
|
7116
|
-
x2: width,
|
|
7117
|
-
y2: height,
|
|
7278
|
+
x1: cx - width / 2,
|
|
7279
|
+
y1: cy + height / 2,
|
|
7280
|
+
x2: cx + width / 2,
|
|
7281
|
+
y2: cy + height / 2,
|
|
7118
7282
|
width: 1,
|
|
7119
7283
|
zoomIndependent: true,
|
|
7120
7284
|
layer: "board",
|
|
7121
7285
|
_element: element
|
|
7122
7286
|
},
|
|
7287
|
+
// Left line
|
|
7123
7288
|
{
|
|
7124
7289
|
_pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,
|
|
7125
7290
|
pcb_drawing_type: "line",
|
|
7126
|
-
x1:
|
|
7127
|
-
y1:
|
|
7128
|
-
x2:
|
|
7129
|
-
y2: height,
|
|
7291
|
+
x1: cx - width / 2,
|
|
7292
|
+
y1: cy - height / 2,
|
|
7293
|
+
x2: cx - width / 2,
|
|
7294
|
+
y2: cy + height / 2,
|
|
7130
7295
|
width: 1,
|
|
7131
7296
|
zoomIndependent: true,
|
|
7132
7297
|
layer: "board",
|
|
7133
7298
|
_element: element
|
|
7134
7299
|
},
|
|
7300
|
+
// Right line
|
|
7135
7301
|
{
|
|
7136
7302
|
_pcb_drawing_object_id: `line_${globalPcbDrawingObjectCount++}`,
|
|
7137
7303
|
pcb_drawing_type: "line",
|
|
7138
|
-
x1: width,
|
|
7139
|
-
y1:
|
|
7140
|
-
x2: width,
|
|
7141
|
-
y2: height,
|
|
7304
|
+
x1: cx + width / 2,
|
|
7305
|
+
y1: cy - height / 2,
|
|
7306
|
+
x2: cx + width / 2,
|
|
7307
|
+
y2: cy + height / 2,
|
|
7142
7308
|
width: 1,
|
|
7143
7309
|
zoomIndependent: true,
|
|
7144
7310
|
layer: "board",
|
|
@@ -7261,157 +7427,19 @@ var convertElementToPrimitives = (element, allElements) => {
|
|
|
7261
7427
|
return primitives;
|
|
7262
7428
|
}
|
|
7263
7429
|
case "pcb_smtpad": {
|
|
7430
|
+
const metadata = {
|
|
7431
|
+
_parent_pcb_component,
|
|
7432
|
+
_parent_source_component,
|
|
7433
|
+
_source_port
|
|
7434
|
+
};
|
|
7264
7435
|
if (element.shape === "rect" || element.shape === "rotated_rect") {
|
|
7265
|
-
|
|
7266
|
-
const corner_radius = element.corner_radius ?? rect_border_radius ?? 0;
|
|
7267
|
-
const primitives = [
|
|
7268
|
-
{
|
|
7269
|
-
_pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,
|
|
7270
|
-
pcb_drawing_type: "rect",
|
|
7271
|
-
x,
|
|
7272
|
-
y,
|
|
7273
|
-
w: width,
|
|
7274
|
-
h: height,
|
|
7275
|
-
layer: layer || "top",
|
|
7276
|
-
_element: element,
|
|
7277
|
-
_parent_pcb_component,
|
|
7278
|
-
_parent_source_component,
|
|
7279
|
-
_source_port,
|
|
7280
|
-
ccw_rotation: element.ccw_rotation,
|
|
7281
|
-
roundness: corner_radius
|
|
7282
|
-
}
|
|
7283
|
-
];
|
|
7284
|
-
if (element.is_covered_with_solder_mask) {
|
|
7285
|
-
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7286
|
-
const maskPrimitive = {
|
|
7287
|
-
_pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,
|
|
7288
|
-
pcb_drawing_type: "rect",
|
|
7289
|
-
x,
|
|
7290
|
-
y,
|
|
7291
|
-
w: width,
|
|
7292
|
-
h: height,
|
|
7293
|
-
layer: maskLayer,
|
|
7294
|
-
_element: element,
|
|
7295
|
-
_parent_pcb_component,
|
|
7296
|
-
_parent_source_component,
|
|
7297
|
-
_source_port,
|
|
7298
|
-
ccw_rotation: element.ccw_rotation,
|
|
7299
|
-
roundness: corner_radius
|
|
7300
|
-
};
|
|
7301
|
-
if (element.solder_mask_color) {
|
|
7302
|
-
maskPrimitive.color = element.solder_mask_color;
|
|
7303
|
-
}
|
|
7304
|
-
primitives.push(maskPrimitive);
|
|
7305
|
-
}
|
|
7306
|
-
return primitives;
|
|
7436
|
+
return convertSmtpadRect(element, metadata);
|
|
7307
7437
|
} else if (element.shape === "circle") {
|
|
7308
|
-
|
|
7309
|
-
const primitives = [
|
|
7310
|
-
{
|
|
7311
|
-
_pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,
|
|
7312
|
-
pcb_drawing_type: "circle",
|
|
7313
|
-
x,
|
|
7314
|
-
y,
|
|
7315
|
-
r: radius,
|
|
7316
|
-
layer: layer || "top",
|
|
7317
|
-
_element: element,
|
|
7318
|
-
_parent_pcb_component,
|
|
7319
|
-
_parent_source_component,
|
|
7320
|
-
_source_port
|
|
7321
|
-
}
|
|
7322
|
-
];
|
|
7323
|
-
if (element.is_covered_with_solder_mask) {
|
|
7324
|
-
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7325
|
-
const maskPrimitive = {
|
|
7326
|
-
_pcb_drawing_object_id: `circle_${globalPcbDrawingObjectCount++}`,
|
|
7327
|
-
pcb_drawing_type: "circle",
|
|
7328
|
-
x,
|
|
7329
|
-
y,
|
|
7330
|
-
r: radius,
|
|
7331
|
-
layer: maskLayer,
|
|
7332
|
-
_element: element,
|
|
7333
|
-
_parent_pcb_component,
|
|
7334
|
-
_parent_source_component,
|
|
7335
|
-
_source_port
|
|
7336
|
-
};
|
|
7337
|
-
if (element.solder_mask_color) {
|
|
7338
|
-
maskPrimitive.color = element.solder_mask_color;
|
|
7339
|
-
}
|
|
7340
|
-
primitives.push(maskPrimitive);
|
|
7341
|
-
}
|
|
7342
|
-
return primitives;
|
|
7438
|
+
return convertSmtpadCircle(element, metadata);
|
|
7343
7439
|
} else if (element.shape === "polygon") {
|
|
7344
|
-
|
|
7345
|
-
const primitives = [
|
|
7346
|
-
{
|
|
7347
|
-
_pcb_drawing_object_id: `polygon_${globalPcbDrawingObjectCount++}`,
|
|
7348
|
-
pcb_drawing_type: "polygon",
|
|
7349
|
-
points: normalizePolygonPoints(points),
|
|
7350
|
-
layer: layer || "top",
|
|
7351
|
-
_element: element,
|
|
7352
|
-
_parent_pcb_component,
|
|
7353
|
-
_parent_source_component,
|
|
7354
|
-
_source_port
|
|
7355
|
-
}
|
|
7356
|
-
];
|
|
7357
|
-
if (element.is_covered_with_solder_mask) {
|
|
7358
|
-
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7359
|
-
const maskPrimitive = {
|
|
7360
|
-
_pcb_drawing_object_id: `polygon_${globalPcbDrawingObjectCount++}`,
|
|
7361
|
-
pcb_drawing_type: "polygon",
|
|
7362
|
-
points: normalizePolygonPoints(points),
|
|
7363
|
-
layer: maskLayer,
|
|
7364
|
-
_element: element,
|
|
7365
|
-
_parent_pcb_component,
|
|
7366
|
-
_parent_source_component,
|
|
7367
|
-
_source_port
|
|
7368
|
-
};
|
|
7369
|
-
if (element.solder_mask_color) {
|
|
7370
|
-
maskPrimitive.color = element.solder_mask_color;
|
|
7371
|
-
}
|
|
7372
|
-
primitives.push(maskPrimitive);
|
|
7373
|
-
}
|
|
7374
|
-
return primitives;
|
|
7440
|
+
return convertSmtpadPolygon(element, metadata);
|
|
7375
7441
|
} else if (element.shape === "pill" || element.shape === "rotated_pill") {
|
|
7376
|
-
|
|
7377
|
-
const primitives = [
|
|
7378
|
-
{
|
|
7379
|
-
_pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,
|
|
7380
|
-
pcb_drawing_type: "pill",
|
|
7381
|
-
x,
|
|
7382
|
-
y,
|
|
7383
|
-
w: width,
|
|
7384
|
-
h: height,
|
|
7385
|
-
layer: layer || "top",
|
|
7386
|
-
_element: element,
|
|
7387
|
-
_parent_pcb_component,
|
|
7388
|
-
_parent_source_component,
|
|
7389
|
-
_source_port,
|
|
7390
|
-
ccw_rotation: element.ccw_rotation
|
|
7391
|
-
}
|
|
7392
|
-
];
|
|
7393
|
-
if (element.is_covered_with_solder_mask) {
|
|
7394
|
-
const maskLayer = layer === "bottom" ? "soldermask_with_copper_bottom" : "soldermask_with_copper_top";
|
|
7395
|
-
const maskPrimitive = {
|
|
7396
|
-
_pcb_drawing_object_id: `pill_${globalPcbDrawingObjectCount++}`,
|
|
7397
|
-
pcb_drawing_type: "pill",
|
|
7398
|
-
x,
|
|
7399
|
-
y,
|
|
7400
|
-
w: width,
|
|
7401
|
-
h: height,
|
|
7402
|
-
layer: maskLayer,
|
|
7403
|
-
_element: element,
|
|
7404
|
-
_parent_pcb_component,
|
|
7405
|
-
_parent_source_component,
|
|
7406
|
-
_source_port,
|
|
7407
|
-
ccw_rotation: element.ccw_rotation
|
|
7408
|
-
};
|
|
7409
|
-
if (element.solder_mask_color) {
|
|
7410
|
-
maskPrimitive.color = element.solder_mask_color;
|
|
7411
|
-
}
|
|
7412
|
-
primitives.push(maskPrimitive);
|
|
7413
|
-
}
|
|
7414
|
-
return primitives;
|
|
7442
|
+
return convertSmtpadPill(element, metadata);
|
|
7415
7443
|
}
|
|
7416
7444
|
return [];
|
|
7417
7445
|
}
|
|
@@ -13305,7 +13333,7 @@ import { css as css3 } from "@emotion/css";
|
|
|
13305
13333
|
// package.json
|
|
13306
13334
|
var package_default = {
|
|
13307
13335
|
name: "@tscircuit/pcb-viewer",
|
|
13308
|
-
version: "1.11.
|
|
13336
|
+
version: "1.11.277",
|
|
13309
13337
|
main: "dist/index.js",
|
|
13310
13338
|
type: "module",
|
|
13311
13339
|
repository: "tscircuit/pcb-viewer",
|
|
@@ -13342,7 +13370,7 @@ var package_default = {
|
|
|
13342
13370
|
"react-cosmos-plugin-vite": "7.0.0-beta.0",
|
|
13343
13371
|
"react-dom": "19.1.0",
|
|
13344
13372
|
"react-use": "^17.4.0",
|
|
13345
|
-
tscircuit: "^0.0.
|
|
13373
|
+
tscircuit: "^0.0.1015",
|
|
13346
13374
|
tsup: "^8.0.2",
|
|
13347
13375
|
"type-fest": "^3.0.0",
|
|
13348
13376
|
typescript: "^5.4.4",
|