easyeda-mcp-pro 0.4.0 → 0.5.2

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.
Files changed (171) hide show
  1. package/README.md +68 -24
  2. package/dist/bom-quality/adapter.d.ts +90 -0
  3. package/dist/bom-quality/adapter.js +295 -0
  4. package/dist/bom-quality/adapter.js.map +1 -0
  5. package/dist/bom-quality/index.d.ts +10 -0
  6. package/dist/bom-quality/index.js +9 -0
  7. package/dist/bom-quality/index.js.map +1 -0
  8. package/dist/bom-quality/quality.d.ts +28 -0
  9. package/dist/bom-quality/quality.js +179 -0
  10. package/dist/bom-quality/quality.js.map +1 -0
  11. package/dist/bom-quality/types.d.ts +94 -0
  12. package/dist/bom-quality/types.js +12 -0
  13. package/dist/bom-quality/types.js.map +1 -0
  14. package/dist/bridge/manager.d.ts +41 -0
  15. package/dist/bridge/manager.js +333 -51
  16. package/dist/bridge/manager.js.map +1 -1
  17. package/dist/bridge/protocol.d.ts +47 -1
  18. package/dist/bridge/protocol.js +42 -1
  19. package/dist/bridge/protocol.js.map +1 -1
  20. package/dist/bridge/types.d.ts +6 -0
  21. package/dist/bridge/types.js +6 -0
  22. package/dist/bridge/types.js.map +1 -1
  23. package/dist/catalog/errors.d.ts +49 -0
  24. package/dist/catalog/errors.js +60 -0
  25. package/dist/catalog/errors.js.map +1 -0
  26. package/dist/catalog/index.d.ts +15 -0
  27. package/dist/catalog/index.js +17 -0
  28. package/dist/catalog/index.js.map +1 -0
  29. package/dist/catalog/schema.d.ts +268 -0
  30. package/dist/catalog/schema.js +245 -0
  31. package/dist/catalog/schema.js.map +1 -0
  32. package/dist/catalog/starter.d.ts +159 -0
  33. package/dist/catalog/starter.js +579 -0
  34. package/dist/catalog/starter.js.map +1 -0
  35. package/dist/catalog/validation.d.ts +48 -0
  36. package/dist/catalog/validation.js +263 -0
  37. package/dist/catalog/validation.js.map +1 -0
  38. package/dist/circuit/circuit-ir.d.ts +460 -0
  39. package/dist/circuit/circuit-ir.js +292 -0
  40. package/dist/circuit/circuit-ir.js.map +1 -0
  41. package/dist/circuit/compiler.d.ts +55 -0
  42. package/dist/circuit/compiler.js +197 -0
  43. package/dist/circuit/compiler.js.map +1 -0
  44. package/dist/circuit/design-intent.d.ts +94 -0
  45. package/dist/circuit/design-intent.js +118 -0
  46. package/dist/circuit/design-intent.js.map +1 -0
  47. package/dist/circuit/errors.d.ts +50 -0
  48. package/dist/circuit/errors.js +61 -0
  49. package/dist/circuit/errors.js.map +1 -0
  50. package/dist/circuit/index.d.ts +17 -0
  51. package/dist/circuit/index.js +18 -0
  52. package/dist/circuit/index.js.map +1 -0
  53. package/dist/circuit/types.d.ts +186 -0
  54. package/dist/circuit/types.js +123 -0
  55. package/dist/circuit/types.js.map +1 -0
  56. package/dist/cli/auto-setup.d.ts +1 -8
  57. package/dist/cli/auto-setup.js +10 -178
  58. package/dist/cli/auto-setup.js.map +1 -1
  59. package/dist/cli/client-definitions.d.ts +34 -0
  60. package/dist/cli/client-definitions.js +194 -0
  61. package/dist/cli/client-definitions.js.map +1 -0
  62. package/dist/cli/local-setup.js +2 -2
  63. package/dist/cli/local-setup.js.map +1 -1
  64. package/dist/config/env.d.ts +6 -1
  65. package/dist/config/env.js +93 -5
  66. package/dist/config/env.js.map +1 -1
  67. package/dist/config/version.d.ts +1 -1
  68. package/dist/config/version.js +1 -1
  69. package/dist/export-manifest/errors.d.ts +55 -0
  70. package/dist/export-manifest/errors.js +69 -0
  71. package/dist/export-manifest/errors.js.map +1 -0
  72. package/dist/export-manifest/index.d.ts +10 -0
  73. package/dist/export-manifest/index.js +9 -0
  74. package/dist/export-manifest/index.js.map +1 -0
  75. package/dist/export-manifest/types.d.ts +170 -0
  76. package/dist/export-manifest/types.js +36 -0
  77. package/dist/export-manifest/types.js.map +1 -0
  78. package/dist/export-manifest/validation.d.ts +39 -0
  79. package/dist/export-manifest/validation.js +298 -0
  80. package/dist/export-manifest/validation.js.map +1 -0
  81. package/dist/index.js +7 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/net-validation/errors.d.ts +89 -0
  84. package/dist/net-validation/errors.js +69 -0
  85. package/dist/net-validation/errors.js.map +1 -0
  86. package/dist/net-validation/fixtures.d.ts +38 -0
  87. package/dist/net-validation/fixtures.js +215 -0
  88. package/dist/net-validation/fixtures.js.map +1 -0
  89. package/dist/net-validation/index.d.ts +10 -0
  90. package/dist/net-validation/index.js +9 -0
  91. package/dist/net-validation/index.js.map +1 -0
  92. package/dist/net-validation/schema.d.ts +118 -0
  93. package/dist/net-validation/schema.js +140 -0
  94. package/dist/net-validation/schema.js.map +1 -0
  95. package/dist/net-validation/validation.d.ts +45 -0
  96. package/dist/net-validation/validation.js +369 -0
  97. package/dist/net-validation/validation.js.map +1 -0
  98. package/dist/pcb-constraints/errors.d.ts +39 -0
  99. package/dist/pcb-constraints/errors.js +133 -0
  100. package/dist/pcb-constraints/errors.js.map +1 -0
  101. package/dist/pcb-constraints/index.d.ts +9 -0
  102. package/dist/pcb-constraints/index.js +9 -0
  103. package/dist/pcb-constraints/index.js.map +1 -0
  104. package/dist/pcb-constraints/types.d.ts +102 -0
  105. package/dist/pcb-constraints/types.js +7 -0
  106. package/dist/pcb-constraints/types.js.map +1 -0
  107. package/dist/pcb-constraints/validation.d.ts +70 -0
  108. package/dist/pcb-constraints/validation.js +309 -0
  109. package/dist/pcb-constraints/validation.js.map +1 -0
  110. package/dist/server/factory.js +2 -0
  111. package/dist/server/factory.js.map +1 -1
  112. package/dist/server/transports/http.d.ts +20 -1
  113. package/dist/server/transports/http.js +156 -34
  114. package/dist/server/transports/http.js.map +1 -1
  115. package/dist/storage/database.d.ts +25 -0
  116. package/dist/storage/database.js +126 -51
  117. package/dist/storage/database.js.map +1 -1
  118. package/dist/tools/{L0_diagnostics.d.ts → L0_diagnostics_api.d.ts} +2 -2
  119. package/dist/tools/L0_diagnostics_api.js +152 -0
  120. package/dist/tools/L0_diagnostics_api.js.map +1 -0
  121. package/dist/tools/L0_diagnostics_core.d.ts +6 -0
  122. package/dist/tools/{L0_diagnostics.js → L0_diagnostics_core.js} +50 -124
  123. package/dist/tools/L0_diagnostics_core.js.map +1 -0
  124. package/dist/tools/L1_board.js +20 -4
  125. package/dist/tools/L1_board.js.map +1 -1
  126. package/dist/tools/{L1_bom.d.ts → L1_bom_core.d.ts} +2 -2
  127. package/dist/tools/{L1_bom.js → L1_bom_core.js} +21 -101
  128. package/dist/tools/L1_bom_core.js.map +1 -0
  129. package/dist/tools/{L1_schematic.d.ts → L1_bom_sourcing.d.ts} +2 -2
  130. package/dist/tools/L1_bom_sourcing.js +265 -0
  131. package/dist/tools/L1_bom_sourcing.js.map +1 -0
  132. package/dist/tools/L1_drc_erc.js +15 -3
  133. package/dist/tools/L1_drc_erc.js.map +1 -1
  134. package/dist/tools/L1_export.js +20 -4
  135. package/dist/tools/L1_export.js.map +1 -1
  136. package/dist/tools/L1_pcb_constraints.d.ts +6 -0
  137. package/dist/tools/L1_pcb_constraints.js +234 -0
  138. package/dist/tools/L1_pcb_constraints.js.map +1 -0
  139. package/dist/tools/L1_pcb_write.js +26 -12
  140. package/dist/tools/L1_pcb_write.js.map +1 -1
  141. package/dist/tools/L1_schematic_read.d.ts +6 -0
  142. package/dist/tools/{L1_schematic.js → L1_schematic_read.js} +125 -194
  143. package/dist/tools/L1_schematic_read.js.map +1 -0
  144. package/dist/tools/L1_schematic_write.d.ts +6 -0
  145. package/dist/tools/L1_schematic_write.js +516 -0
  146. package/dist/tools/L1_schematic_write.js.map +1 -0
  147. package/dist/tools/register.js +15 -7
  148. package/dist/tools/register.js.map +1 -1
  149. package/dist/tools/registry.d.ts +41 -7
  150. package/dist/tools/registry.js +95 -25
  151. package/dist/tools/registry.js.map +1 -1
  152. package/dist/tools/types.d.ts +16 -0
  153. package/dist/utils/logger.d.ts +1 -1
  154. package/dist/utils/logger.js +1 -1
  155. package/dist/utils/logger.js.map +1 -1
  156. package/dist/vendors/base-http-client.d.ts +48 -0
  157. package/dist/vendors/base-http-client.js +75 -0
  158. package/dist/vendors/base-http-client.js.map +1 -0
  159. package/dist/vendors/digikey/client.js +10 -19
  160. package/dist/vendors/digikey/client.js.map +1 -1
  161. package/dist/vendors/jlcpcb/client.js +41 -70
  162. package/dist/vendors/jlcpcb/client.js.map +1 -1
  163. package/dist/vendors/lcsc/client.js +5 -18
  164. package/dist/vendors/lcsc/client.js.map +1 -1
  165. package/dist/vendors/mouser/client.js +4 -12
  166. package/dist/vendors/mouser/client.js.map +1 -1
  167. package/easyeda-bridge-extension.eext +0 -0
  168. package/package.json +11 -10
  169. package/dist/tools/L0_diagnostics.js.map +0 -1
  170. package/dist/tools/L1_bom.js.map +0 -1
  171. package/dist/tools/L1_schematic.js.map +0 -1
@@ -0,0 +1,245 @@
1
+ /**
2
+ * DeviceCatalog — versioned, validated device catalog schema.
3
+ *
4
+ * A DeviceCatalog is a curated library of verified device definitions used
5
+ * in EasyEDA Pro projects. Each entry is a "known-good" device with stable
6
+ * catalog IDs, pre-validated symbol/footprint/3D-model references, pin
7
+ * mapping, electrical parameters, lifecycle and assembly hints, and cross-
8
+ * references to supplier databases (LCSC, JLCPCB, Mouser, DigiKey).
9
+ *
10
+ * The catalog is designed to be:
11
+ * 1. **Versioned** — schema version string for forward compatibility.
12
+ * 2. **Validated** — cross-field refs are checked at parse time.
13
+ * 3. **Extensible** — new device classes and suppliers can be added.
14
+ * 4. **Reusable** — CircuitIR devices can be resolved from the catalog.
15
+ *
16
+ * @schema device-catalog/v1
17
+ */
18
+ import { z } from 'zod';
19
+ import { CatalogError, CatalogErrorCode, fromZodError } from './errors.js';
20
+ // ── Schema version ────────────────────────────────────────────────────────
21
+ export const DEVICE_CATALOG_SCHEMA_VERSION = 'device-catalog/v1';
22
+ // ── Sub-schemas ───────────────────────────────────────────────────────────
23
+ /**
24
+ * Lifecycle status of a device.
25
+ */
26
+ export const LifecycleStatusSchema = z.enum([
27
+ 'active',
28
+ 'deprecated',
29
+ 'obsolete',
30
+ 'new',
31
+ 'not-recommended',
32
+ ]);
33
+ /**
34
+ * Assembly availability hint.
35
+ */
36
+ export const AssemblyHintSchema = z.object({
37
+ /** Typical stock availability: 'in-production', 'limited', 'end-of-life', 'contact-factory' */
38
+ status: z.enum(['in-production', 'limited', 'end-of-life', 'contact-factory', 'unknown']),
39
+ /** Minimum order quantity (if applicable) */
40
+ moq: z.number().int().positive().optional(),
41
+ /** Lead time estimate (weeks) */
42
+ leadTimeWeeks: z.number().int().nonnegative().optional(),
43
+ /** Notes about assembly availability */
44
+ notes: z.string().max(256).optional(),
45
+ });
46
+ /**
47
+ * Electrical parameter entry (key-value with optional unit).
48
+ */
49
+ export const ElectricalParamSchema = z.object({
50
+ name: z.string().min(1).max(64),
51
+ value: z.string().min(1).max(128),
52
+ unit: z.string().max(32).optional(),
53
+ min: z.string().max(64).optional(),
54
+ max: z.string().max(64).optional(),
55
+ });
56
+ /**
57
+ * Pin mapping entry.
58
+ */
59
+ export const PinMappingSchema = z.object({
60
+ pin: z.string().min(1).max(32),
61
+ name: z.string().min(1).max(128),
62
+ type: z
63
+ .enum([
64
+ 'power',
65
+ 'ground',
66
+ 'input',
67
+ 'output',
68
+ 'bidirectional',
69
+ 'analog',
70
+ 'open-drain',
71
+ 'pass-through',
72
+ 'no-connect',
73
+ ])
74
+ .optional(),
75
+ description: z.string().max(256).optional(),
76
+ });
77
+ /**
78
+ * Supplier ID cross-reference.
79
+ */
80
+ export const SupplierIdSchema = z.object({
81
+ /** Supplier name: 'lcsc', 'jlcpcb', 'mouser', 'digikey', 'farnell', etc. */
82
+ supplier: z.string().min(1).max(32),
83
+ /** Part ID at the supplier. */
84
+ partId: z.string().min(1).max(64),
85
+ /** Optional direct URL to the product page. */
86
+ url: z.string().url().optional(),
87
+ });
88
+ /**
89
+ * 3D model reference — either a URL/path or an explicit missing marker.
90
+ */
91
+ export const Model3DRefSchema = z.union([
92
+ z.string().url(),
93
+ z.literal('__missing__'),
94
+ z.literal(''),
95
+ ]);
96
+ /**
97
+ * Single device entry in the catalog.
98
+ */
99
+ export const DeviceEntrySchema = z
100
+ .object({
101
+ /** Stable, unique device catalog ID (e.g. "device-esp32-s3-mini-1"). */
102
+ id: z.string().min(1).max(128),
103
+ /** Human-readable display name. */
104
+ displayName: z.string().min(1).max(256),
105
+ /** Functional category / block type the device belongs to. */
106
+ category: z.string().min(1).max(64),
107
+ /** Description of the device's role. */
108
+ description: z.string().max(2048).optional(),
109
+ /**
110
+ * Sub-category for finer classification
111
+ * (e.g. "mcu", "sensor-temperature", "ldo", "connector-usb").
112
+ */
113
+ subCategory: z.string().max(64).optional(),
114
+ // ── EasyEDA references ──────────────────────────────────────────────
115
+ /** EasyEDA symbol library reference (e.g. "SYM:ESP32-S3-MINI-1"). */
116
+ symbolRef: z.string().min(1).max(256),
117
+ /** EasyEDA footprint library reference (e.g. "FOOT:ESP32-S3-MINI-1"). */
118
+ footprintRef: z.string().min(1).max(256),
119
+ /** EasyEDA 3D model reference — URL/path or explicit missing marker. */
120
+ model3dRef: Model3DRefSchema.default('__missing__'),
121
+ // ── Manufacturer info ───────────────────────────────────────────────
122
+ manufacturer: z.string().min(1).max(256),
123
+ mpn: z.string().min(1).max(128),
124
+ /** LCSC part number (e.g. "C123456"). */
125
+ lcsc: z.string().max(32).optional(),
126
+ /** JLCPCB part number if different from LCSC. */
127
+ jlcpcb: z.string().max(32).optional(),
128
+ /** Additional supplier cross-references. */
129
+ supplierIds: z.array(SupplierIdSchema).default([]),
130
+ // ── Package ─────────────────────────────────────────────────────────
131
+ /** Package type description (e.g. "QFN-28_4x4mm_P0.4mm"). */
132
+ package: z.string().min(1).max(128),
133
+ /** Standard IPC/JEDEC package name if applicable. */
134
+ standardPackage: z.string().max(64).optional(),
135
+ // ── Pin mapping ─────────────────────────────────────────────────────
136
+ /** Pin mapping, required for ICs and connectors, optional for passives. */
137
+ pinMapping: z.array(PinMappingSchema).default([]),
138
+ // ── Electrical parameters ───────────────────────────────────────────
139
+ /** Key electrical parameters. */
140
+ electricalParams: z.array(ElectricalParamSchema).default([]),
141
+ // ── Lifecycle and assembly ──────────────────────────────────────────
142
+ lifecycleStatus: LifecycleStatusSchema.default('active'),
143
+ assemblyHint: AssemblyHintSchema.optional(),
144
+ // ── Documentation ───────────────────────────────────────────────────
145
+ /** URL to the device datasheet. */
146
+ datasheetUrl: z.string().url().optional().or(z.literal('')),
147
+ /** URL to the manufacturer product page. */
148
+ productPageUrl: z.string().url().optional().or(z.literal('')),
149
+ // ── Metadata ────────────────────────────────────────────────────────
150
+ /** Arbitrary key-value metadata. */
151
+ metadata: z.array(z.object({ key: z.string(), value: z.string() })).default([]),
152
+ /** Notes free-text. */
153
+ notes: z.string().max(4096).optional(),
154
+ })
155
+ .strict();
156
+ // ── Full catalog schema ───────────────────────────────────────────────────
157
+ export const DeviceCatalogSchema = z
158
+ .object({
159
+ $schema: z.literal(DEVICE_CATALOG_SCHEMA_VERSION).default(DEVICE_CATALOG_SCHEMA_VERSION),
160
+ /** List of device entries. */
161
+ devices: z.array(DeviceEntrySchema).default([]),
162
+ metadata: z
163
+ .object({
164
+ version: z.literal('1.0.0').default('1.0.0'),
165
+ name: z.string().max(256).optional(),
166
+ description: z.string().max(2048).optional(),
167
+ updatedAt: z.string().datetime().optional(),
168
+ deviceCount: z.number().int().nonnegative().optional(),
169
+ })
170
+ .optional(),
171
+ })
172
+ .strict()
173
+ .refine((data) => {
174
+ // Check for duplicate device IDs
175
+ const ids = new Set();
176
+ for (const dev of data.devices) {
177
+ if (ids.has(dev.id))
178
+ return false;
179
+ ids.add(dev.id);
180
+ }
181
+ return true;
182
+ }, { message: 'Duplicate device IDs are not allowed', path: ['devices'] })
183
+ .refine((data) => {
184
+ // Check for duplicate supplier IDs per device
185
+ for (const dev of data.devices) {
186
+ const seen = new Set();
187
+ for (const sid of dev.supplierIds) {
188
+ const key = `${sid.supplier}:${sid.partId}`;
189
+ if (seen.has(key))
190
+ return false;
191
+ seen.add(key);
192
+ }
193
+ }
194
+ return true;
195
+ }, { message: 'Duplicate supplier IDs within a single device are not allowed', path: ['devices'] });
196
+ // ── Validation helpers ─────────────────────────────────────────────────────
197
+ /**
198
+ * Parse and validate an unknown input as a DeviceCatalog.
199
+ *
200
+ * Returns the validated DeviceCatalog on success.
201
+ * Throws `CatalogError` with structured errors on failure.
202
+ */
203
+ export function validateDeviceCatalog(input) {
204
+ const result = DeviceCatalogSchema.safeParse(input);
205
+ if (!result.success) {
206
+ const errors = fromZodError(result.error, 'catalog');
207
+ throw new CatalogError({
208
+ code: CatalogErrorCode.CATALOG_INVALID,
209
+ message: 'Device catalog validation failed',
210
+ errors,
211
+ });
212
+ }
213
+ return result.data;
214
+ }
215
+ /**
216
+ * Parse and validate an unknown input as a single DeviceEntry.
217
+ *
218
+ * Returns the validated DeviceEntry on success.
219
+ * Throws `CatalogError` with structured errors on failure.
220
+ */
221
+ export function validateDeviceEntry(input) {
222
+ const result = DeviceEntrySchema.safeParse(input);
223
+ if (!result.success) {
224
+ const errors = fromZodError(result.error, 'device');
225
+ throw new CatalogError({
226
+ code: CatalogErrorCode.CATALOG_INVALID,
227
+ message: 'Device entry validation failed',
228
+ errors,
229
+ });
230
+ }
231
+ return result.data;
232
+ }
233
+ /**
234
+ * Type guard: check whether an unknown value is a valid DeviceCatalog.
235
+ */
236
+ export function isDeviceCatalog(value) {
237
+ return DeviceCatalogSchema.safeParse(value).success;
238
+ }
239
+ /**
240
+ * Type guard: check whether an unknown value is a valid DeviceEntry.
241
+ */
242
+ export function isDeviceEntry(value) {
243
+ return DeviceEntrySchema.safeParse(value).success;
244
+ }
245
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/catalog/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Starter device catalog entries.
3
+ *
4
+ * Pre-populated device definitions covering common MCU, sensor, power,
5
+ * connector, and passive classes. These entries serve as the foundation
6
+ * for the verified device catalog, enabling CircuitIR resolution and
7
+ * design validation without requiring the user to define devices from
8
+ * scratch.
9
+ *
10
+ * Each entry follows the DeviceEntry schema with:
11
+ * - Stable catalog IDs (prefixed by device class)
12
+ * - Symbol, footprint, and 3D model references (or explicit missing markers)
13
+ * - Manufacturer, MPN, supplier cross-references where available
14
+ * - Package descriptions
15
+ * - Pin mappings for ICs and connectors
16
+ * - Electrical parameters where available
17
+ * - Lifecycle and assembly hints
18
+ * - Datasheet URLs
19
+ *
20
+ * @module
21
+ */
22
+ /**
23
+ * Pre-populated device catalog with entries covering the most common
24
+ * MCU, sensor, power, connector, and passive classes used in typical
25
+ * EasyEDA Pro designs.
26
+ *
27
+ * To use: import `STARTER_DEVICE_CATALOG` and pass to `validateDeviceCatalog()`
28
+ * before use. Individual entries can be added/removed as needed.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * import { STARTER_DEVICE_CATALOG } from './starter.js';
33
+ * import { validateDeviceCatalog } from './schema.js';
34
+ *
35
+ * const catalog = validateDeviceCatalog({
36
+ * $schema: DEVICE_CATALOG_SCHEMA_VERSION,
37
+ * devices: STARTER_DEVICE_CATALOG,
38
+ * metadata: { version: '1.0.0', name: 'My Catalog' },
39
+ * });
40
+ * ```
41
+ */
42
+ export declare const STARTER_DEVICE_CATALOG: ({
43
+ id: string;
44
+ displayName: string;
45
+ category: string;
46
+ subCategory: string;
47
+ description: string;
48
+ symbolRef: string;
49
+ footprintRef: string;
50
+ model3dRef: string;
51
+ manufacturer: string;
52
+ mpn: string;
53
+ package: string;
54
+ standardPackage: string;
55
+ pinMapping: {
56
+ pin: string;
57
+ name: string;
58
+ type: string;
59
+ description: string;
60
+ }[];
61
+ electricalParams: ({
62
+ name: string;
63
+ value: string;
64
+ unit: string;
65
+ min: string;
66
+ max: string;
67
+ } | {
68
+ name: string;
69
+ value: string;
70
+ unit: string;
71
+ max: string;
72
+ min?: undefined;
73
+ } | {
74
+ name: string;
75
+ value: string;
76
+ unit: string;
77
+ min?: undefined;
78
+ max?: undefined;
79
+ })[];
80
+ lifecycleStatus: string;
81
+ assemblyHint: {
82
+ status: string;
83
+ moq: number;
84
+ leadTimeWeeks: number;
85
+ notes: string;
86
+ };
87
+ datasheetUrl: string;
88
+ } | {
89
+ id: string;
90
+ displayName: string;
91
+ category: string;
92
+ subCategory: string;
93
+ description: string;
94
+ symbolRef: string;
95
+ footprintRef: string;
96
+ model3dRef: string;
97
+ manufacturer: string;
98
+ mpn: string;
99
+ lcsc: string;
100
+ package: string;
101
+ standardPackage: string;
102
+ pinMapping: {
103
+ pin: string;
104
+ name: string;
105
+ type: string;
106
+ description: string;
107
+ }[];
108
+ electricalParams: {
109
+ name: string;
110
+ value: string;
111
+ unit: string;
112
+ }[];
113
+ lifecycleStatus: string;
114
+ assemblyHint: {
115
+ status: string;
116
+ moq: number;
117
+ leadTimeWeeks: number;
118
+ notes: string;
119
+ };
120
+ datasheetUrl: string;
121
+ } | {
122
+ id: string;
123
+ displayName: string;
124
+ category: string;
125
+ subCategory: string;
126
+ description: string;
127
+ symbolRef: string;
128
+ footprintRef: string;
129
+ model3dRef: string;
130
+ manufacturer: string;
131
+ mpn: string;
132
+ lcsc: string;
133
+ package: string;
134
+ standardPackage: string;
135
+ electricalParams: ({
136
+ name: string;
137
+ value: string;
138
+ unit: string;
139
+ min: string;
140
+ max: string;
141
+ } | {
142
+ name: string;
143
+ value: string;
144
+ unit: string;
145
+ min?: undefined;
146
+ max?: undefined;
147
+ } | {
148
+ name: string;
149
+ value: string;
150
+ unit?: undefined;
151
+ min?: undefined;
152
+ max?: undefined;
153
+ })[];
154
+ lifecycleStatus: string;
155
+ assemblyHint: {
156
+ status: string;
157
+ notes: string;
158
+ };
159
+ })[];