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,48 @@
1
+ /**
2
+ * Device catalog validation rules.
3
+ *
4
+ * Validates a DeviceCatalog against business rules beyond schema-level
5
+ * constraints (type correctness, required fields). These rules check for:
6
+ *
7
+ * - Duplicate device IDs
8
+ * - Missing symbol references
9
+ * - Missing footprint references
10
+ * - Missing pin maps (for ICs and connectors)
11
+ * - Incompatible package assignments
12
+ * - Missing manufacturer part numbers
13
+ * - Missing assembly availability hints
14
+ * - Duplicate supplier IDs within a single device
15
+ *
16
+ * @module
17
+ */
18
+ import { CatalogValidationError } from './errors.js';
19
+ import type { DeviceCatalog, DeviceEntry } from './schema.js';
20
+ export interface CatalogValidationResult {
21
+ valid: boolean;
22
+ errors: CatalogValidationError[];
23
+ warnings: CatalogValidationError[];
24
+ }
25
+ /**
26
+ * Validate a DeviceCatalog against all business rules.
27
+ *
28
+ * Returns both errors (catalog is invalid) and warnings (catalog is valid
29
+ * but has issues the user should address).
30
+ *
31
+ * Schema-level validation (type correctness, required fields) is handled
32
+ * by `DeviceCatalogSchema.parse()` / `validateDeviceCatalog()`.
33
+ * This function adds domain-specific cross-field validation.
34
+ */
35
+ export declare function validateCatalog(catalog: DeviceCatalog): CatalogValidationResult;
36
+ /**
37
+ * Validate a catalog and throw if any errors are found.
38
+ *
39
+ * Returns structured errors+warnings on success.
40
+ * Throws `CatalogError` with all validation errors if the catalog is invalid.
41
+ */
42
+ export declare function validateCatalogOrThrow(catalog: DeviceCatalog): CatalogValidationResult;
43
+ /**
44
+ * Validate a single device entry against common rules.
45
+ *
46
+ * This is useful for pre-validation before adding a device to a catalog.
47
+ */
48
+ export declare function validateDeviceEntry(entry: DeviceEntry): CatalogValidationResult;
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Device catalog validation rules.
3
+ *
4
+ * Validates a DeviceCatalog against business rules beyond schema-level
5
+ * constraints (type correctness, required fields). These rules check for:
6
+ *
7
+ * - Duplicate device IDs
8
+ * - Missing symbol references
9
+ * - Missing footprint references
10
+ * - Missing pin maps (for ICs and connectors)
11
+ * - Incompatible package assignments
12
+ * - Missing manufacturer part numbers
13
+ * - Missing assembly availability hints
14
+ * - Duplicate supplier IDs within a single device
15
+ *
16
+ * @module
17
+ */
18
+ import { CatalogError, CatalogErrorCode, catalogValidationError, } from './errors.js';
19
+ import { DEVICE_CATALOG_SCHEMA_VERSION } from './schema.js';
20
+ // ── Constants ─────────────────────────────────────────────────────────────
21
+ /** Device categories that are expected to have a pin mapping. */
22
+ const CATEGORIES_REQUIRING_PIN_MAP = new Set([
23
+ 'microcontroller',
24
+ 'sensor',
25
+ 'power',
26
+ 'communication',
27
+ 'interface',
28
+ 'connector',
29
+ 'memory',
30
+ 'logic',
31
+ 'amplifier',
32
+ 'converter',
33
+ ]);
34
+ /** Categories that require a footprint (all functional devices). */
35
+ const CATEGORIES_REQUIRING_FOOTPRINT = new Set([
36
+ 'microcontroller',
37
+ 'sensor',
38
+ 'power',
39
+ 'communication',
40
+ 'interface',
41
+ 'connector',
42
+ 'memory',
43
+ 'logic',
44
+ 'amplifier',
45
+ 'converter',
46
+ 'passive',
47
+ 'electromechanical',
48
+ 'protection',
49
+ 'clocking',
50
+ ]);
51
+ /** Categories that require a symbol. */
52
+ const CATEGORIES_REQUIRING_SYMBOL = new Set([
53
+ 'microcontroller',
54
+ 'sensor',
55
+ 'power',
56
+ 'communication',
57
+ 'interface',
58
+ 'connector',
59
+ 'memory',
60
+ 'logic',
61
+ 'amplifier',
62
+ 'converter',
63
+ 'passive',
64
+ 'electromechanical',
65
+ 'protection',
66
+ 'clocking',
67
+ 'custom',
68
+ ]);
69
+ // ── Individual rule checks ────────────────────────────────────────────────
70
+ function checkDuplicateIds(catalog) {
71
+ const errors = [];
72
+ const seen = new Map();
73
+ for (const device of catalog.devices) {
74
+ const id = device.id;
75
+ if (seen.has(id)) {
76
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_DUPLICATE_ID, `Duplicate device ID: "${id}"`, {
77
+ deviceId: id,
78
+ firstIndex: seen.get(id),
79
+ }));
80
+ }
81
+ seen.set(id, seen.size);
82
+ }
83
+ return errors;
84
+ }
85
+ function checkMissingSymbol(catalog) {
86
+ const errors = [];
87
+ for (const device of catalog.devices) {
88
+ if (CATEGORIES_REQUIRING_SYMBOL.has(device.category)) {
89
+ if (!device.symbolRef || device.symbolRef.trim().length === 0) {
90
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_SYMBOL, `Device "${device.id}" (category: ${device.category}) is missing a symbol reference`, { deviceId: device.id, category: device.category }));
91
+ }
92
+ }
93
+ }
94
+ return errors;
95
+ }
96
+ function checkMissingFootprint(catalog) {
97
+ const errors = [];
98
+ for (const device of catalog.devices) {
99
+ if (CATEGORIES_REQUIRING_FOOTPRINT.has(device.category)) {
100
+ if (!device.footprintRef || device.footprintRef.trim().length === 0) {
101
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_FOOTPRINT, `Device "${device.id}" (category: ${device.category}) is missing a footprint reference`, { deviceId: device.id, category: device.category }));
102
+ }
103
+ }
104
+ }
105
+ return errors;
106
+ }
107
+ function checkMissingPinMap(catalog) {
108
+ const errors = [];
109
+ for (const device of catalog.devices) {
110
+ if (CATEGORIES_REQUIRING_PIN_MAP.has(device.category)) {
111
+ if (!device.pinMapping || device.pinMapping.length === 0) {
112
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_PIN_MAP, `Device "${device.id}" (category: ${device.category}) is missing a pin map`, { deviceId: device.id, category: device.category }));
113
+ }
114
+ }
115
+ }
116
+ return errors;
117
+ }
118
+ function checkMissingMpn(catalog) {
119
+ const errors = [];
120
+ for (const device of catalog.devices) {
121
+ if (!device.mpn || device.mpn.trim().length === 0) {
122
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_MPN, `Device "${device.id}" is missing a manufacturer part number (MPN)`, { deviceId: device.id }));
123
+ }
124
+ }
125
+ return errors;
126
+ }
127
+ function checkMissingAssemblyData(catalog) {
128
+ const warnings = [];
129
+ for (const device of catalog.devices) {
130
+ if (!device.assemblyHint) {
131
+ // Not an error for passive components, but warn for ICs and electromechanical
132
+ if (device.category === 'microcontroller' ||
133
+ device.category === 'connector' ||
134
+ device.category === 'sensor') {
135
+ warnings.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_ASSEMBLY_DATA, `Device "${device.id}" (category: ${device.category}) has no assembly availability hints`, { deviceId: device.id, category: device.category }));
136
+ }
137
+ }
138
+ }
139
+ return warnings;
140
+ }
141
+ function checkDuplicateSupplierIds(catalog) {
142
+ const errors = [];
143
+ for (const device of catalog.devices) {
144
+ const seen = new Set();
145
+ const supplierIds = device.supplierIds ?? [];
146
+ for (const sid of supplierIds) {
147
+ const key = `${sid.supplier}:${sid.partId}`;
148
+ if (seen.has(key)) {
149
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_DUPLICATE_SUPPLIER_ID, `Device "${device.id}" has duplicate supplier ID "${key}"`, { deviceId: device.id, supplierKey: key }));
150
+ }
151
+ seen.add(key);
152
+ }
153
+ }
154
+ return errors;
155
+ }
156
+ // ── Main validation entry point ───────────────────────────────────────────
157
+ /**
158
+ * Validate a DeviceCatalog against all business rules.
159
+ *
160
+ * Returns both errors (catalog is invalid) and warnings (catalog is valid
161
+ * but has issues the user should address).
162
+ *
163
+ * Schema-level validation (type correctness, required fields) is handled
164
+ * by `DeviceCatalogSchema.parse()` / `validateDeviceCatalog()`.
165
+ * This function adds domain-specific cross-field validation.
166
+ */
167
+ export function validateCatalog(catalog) {
168
+ const errors = [];
169
+ const warnings = [];
170
+ // Schema version check (warning only — allow forward compatibility)
171
+ if (catalog.$schema !== DEVICE_CATALOG_SCHEMA_VERSION) {
172
+ warnings.push(catalogValidationError(CatalogErrorCode.CATALOG_SCHEMA_VERSION_MISMATCH, `Catalog schema version "${catalog.$schema}" does not match expected "${DEVICE_CATALOG_SCHEMA_VERSION}"`, {
173
+ expected: DEVICE_CATALOG_SCHEMA_VERSION,
174
+ actual: catalog.$schema,
175
+ }));
176
+ }
177
+ // Run all validation rules
178
+ errors.push(...checkDuplicateIds(catalog));
179
+ errors.push(...checkMissingSymbol(catalog));
180
+ errors.push(...checkMissingFootprint(catalog));
181
+ errors.push(...checkMissingPinMap(catalog));
182
+ errors.push(...checkMissingMpn(catalog));
183
+ warnings.push(...checkMissingAssemblyData(catalog));
184
+ errors.push(...checkDuplicateSupplierIds(catalog));
185
+ return {
186
+ valid: errors.length === 0,
187
+ errors,
188
+ warnings,
189
+ };
190
+ }
191
+ /**
192
+ * Validate a catalog and throw if any errors are found.
193
+ *
194
+ * Returns structured errors+warnings on success.
195
+ * Throws `CatalogError` with all validation errors if the catalog is invalid.
196
+ */
197
+ export function validateCatalogOrThrow(catalog) {
198
+ const result = validateCatalog(catalog);
199
+ if (!result.valid) {
200
+ throw new CatalogError({
201
+ code: CatalogErrorCode.CATALOG_INVALID,
202
+ message: `Catalog validation failed with ${result.errors.length} error(s)`,
203
+ errors: result.errors,
204
+ });
205
+ }
206
+ return result;
207
+ }
208
+ function validateRequiredFields(entry) {
209
+ const errors = [];
210
+ // MPN check
211
+ if (!entry.mpn || entry.mpn.trim().length === 0) {
212
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_MPN, `Device "${entry.id}" is missing an MPN`, { deviceId: entry.id }));
213
+ }
214
+ // Symbol check for functional categories
215
+ if (CATEGORIES_REQUIRING_SYMBOL.has(entry.category)) {
216
+ if (!entry.symbolRef || entry.symbolRef.trim().length === 0) {
217
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_SYMBOL, `Device "${entry.id}" is missing a symbol reference`, { deviceId: entry.id, category: entry.category }));
218
+ }
219
+ }
220
+ // Footprint check
221
+ if (CATEGORIES_REQUIRING_FOOTPRINT.has(entry.category)) {
222
+ if (!entry.footprintRef || entry.footprintRef.trim().length === 0) {
223
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_FOOTPRINT, `Device "${entry.id}" is missing a footprint reference`, { deviceId: entry.id, category: entry.category }));
224
+ }
225
+ }
226
+ return errors;
227
+ }
228
+ function validatePinConfiguration(entry) {
229
+ const errors = [];
230
+ // Pin map check for complex devices
231
+ if (CATEGORIES_REQUIRING_PIN_MAP.has(entry.category)) {
232
+ if (!entry.pinMapping || entry.pinMapping.length === 0) {
233
+ errors.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_PIN_MAP, `Device "${entry.id}" is missing a pin map`, { deviceId: entry.id, category: entry.category }));
234
+ }
235
+ }
236
+ return errors;
237
+ }
238
+ function validateMetadata(entry) {
239
+ const warnings = [];
240
+ // Assembly data warning for critical categories
241
+ if (!entry.assemblyHint) {
242
+ if (entry.category === 'microcontroller' ||
243
+ entry.category === 'connector' ||
244
+ entry.category === 'sensor') {
245
+ warnings.push(catalogValidationError(CatalogErrorCode.DEVICE_MISSING_ASSEMBLY_DATA, `Device "${entry.id}" has no assembly availability hints`, { deviceId: entry.id, category: entry.category }));
246
+ }
247
+ }
248
+ return warnings;
249
+ }
250
+ /**
251
+ * Validate a single device entry against common rules.
252
+ *
253
+ * This is useful for pre-validation before adding a device to a catalog.
254
+ */
255
+ export function validateDeviceEntry(entry) {
256
+ const errors = [
257
+ ...validateRequiredFields(entry),
258
+ ...validatePinConfiguration(entry),
259
+ ];
260
+ const warnings = validateMetadata(entry);
261
+ return { valid: errors.length === 0, errors, warnings };
262
+ }
263
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/catalog/validation.ts"],"names":[],"mappings":"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"}