easyeda-mcp-pro 0.9.0 → 0.10.0
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/circuit/circuit-ir.d.ts +2 -2
- package/dist/config/profiles.js +5 -5
- package/dist/config/version.d.ts +1 -1
- package/dist/config/version.js +1 -1
- package/dist/config/version.js.map +1 -1
- package/dist/pcb-constraints/errors.js +72 -0
- package/dist/pcb-constraints/errors.js.map +1 -1
- package/dist/pcb-constraints/types.d.ts +39 -1
- package/dist/pcb-constraints/validation.d.ts +43 -2
- package/dist/pcb-constraints/validation.js +249 -2
- package/dist/pcb-constraints/validation.js.map +1 -1
- package/dist/tools/L1_export.js +64 -1
- package/dist/tools/L1_export.js.map +1 -1
- package/dist/tools/L1_pcb_constraints.js +141 -66
- package/dist/tools/L1_pcb_constraints.js.map +1 -1
- package/easyeda-bridge-extension.eext +0 -0
- package/package.json +1 -1
|
@@ -184,8 +184,8 @@ export declare const PhysicalConstraintSchema: z.ZodObject<{
|
|
|
184
184
|
board: "board";
|
|
185
185
|
net: "net";
|
|
186
186
|
interface: "interface";
|
|
187
|
-
device: "device";
|
|
188
187
|
block: "block";
|
|
188
|
+
device: "device";
|
|
189
189
|
zone: "zone";
|
|
190
190
|
}>;
|
|
191
191
|
targetRef: z.ZodOptional<z.ZodString>;
|
|
@@ -525,8 +525,8 @@ export declare const CircuitIRSchema: z.ZodObject<{
|
|
|
525
525
|
board: "board";
|
|
526
526
|
net: "net";
|
|
527
527
|
interface: "interface";
|
|
528
|
-
device: "device";
|
|
529
528
|
block: "block";
|
|
529
|
+
device: "device";
|
|
530
530
|
zone: "zone";
|
|
531
531
|
}>;
|
|
532
532
|
targetRef: z.ZodOptional<z.ZodString>;
|
package/dist/config/profiles.js
CHANGED
|
@@ -3,35 +3,35 @@ export const PROFILE_DEFINITIONS = {
|
|
|
3
3
|
name: 'core',
|
|
4
4
|
label: 'Core',
|
|
5
5
|
description: 'High-confidence tools: diagnostics, EasyEDA API inventory, schematic, BOM, DRC/ERC, board layers/stackup, Gerber export',
|
|
6
|
-
approxToolCount: '
|
|
6
|
+
approxToolCount: '40',
|
|
7
7
|
isDefault: true,
|
|
8
8
|
},
|
|
9
9
|
pro: {
|
|
10
10
|
name: 'pro',
|
|
11
11
|
label: 'Pro',
|
|
12
12
|
description: 'Adds pick-and-place, PDF, netlist export for manufacturing workflows',
|
|
13
|
-
approxToolCount: '
|
|
13
|
+
approxToolCount: '43',
|
|
14
14
|
isDefault: false,
|
|
15
15
|
},
|
|
16
16
|
full: {
|
|
17
17
|
name: 'full',
|
|
18
18
|
label: 'Full',
|
|
19
19
|
description: 'Adds controlled documented EasyEDA API method calls for full runtime control without raw JavaScript execution',
|
|
20
|
-
approxToolCount: '
|
|
20
|
+
approxToolCount: '50',
|
|
21
21
|
isDefault: false,
|
|
22
22
|
},
|
|
23
23
|
dev: {
|
|
24
24
|
name: 'dev',
|
|
25
25
|
label: 'Dev',
|
|
26
26
|
description: 'Adds diagnostics probes for bridge methods and live component runtime shape inspection',
|
|
27
|
-
approxToolCount: '
|
|
27
|
+
approxToolCount: '54',
|
|
28
28
|
isDefault: false,
|
|
29
29
|
},
|
|
30
30
|
experimental: {
|
|
31
31
|
name: 'experimental',
|
|
32
32
|
label: 'Experimental',
|
|
33
33
|
description: 'MCP Apps, Tasks, simulation, autorouter, AI action plans',
|
|
34
|
-
approxToolCount: '
|
|
34
|
+
approxToolCount: '52',
|
|
35
35
|
isDefault: false,
|
|
36
36
|
},
|
|
37
37
|
};
|
package/dist/config/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SERVER_VERSION = "0.
|
|
1
|
+
export declare const SERVER_VERSION = "0.10.0";
|
package/dist/config/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SERVER_VERSION = '0.
|
|
1
|
+
export const SERVER_VERSION = '0.10.0'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,2BAA2B"}
|
|
@@ -102,6 +102,78 @@ export const PcbConstraintCodeMap = {
|
|
|
102
102
|
severity: 'error',
|
|
103
103
|
remediationHint: 'Define explicit creepage and clearance distances for high-voltage nets. Minimum 4mm clearance for 250V AC is recommended.',
|
|
104
104
|
},
|
|
105
|
+
DRILL_FILE_MISSING: {
|
|
106
|
+
code: 'PCB_DRILL_FILE_MISSING',
|
|
107
|
+
message: 'NC drill file is missing from the manufacturing package',
|
|
108
|
+
severity: 'error',
|
|
109
|
+
remediationHint: 'Re-export the manufacturing package with Excellon/NC drill files included',
|
|
110
|
+
},
|
|
111
|
+
COPPER_EDGE_CLEARANCE: {
|
|
112
|
+
code: 'PCB_COPPER_EDGE_CLEARANCE',
|
|
113
|
+
message: 'Copper is too close to the board edge',
|
|
114
|
+
severity: 'error',
|
|
115
|
+
remediationHint: 'Move copper, zones, vias, and pads away from the routed board edge or increase the copper-to-edge clearance rule',
|
|
116
|
+
},
|
|
117
|
+
DRILL_TOO_SMALL: {
|
|
118
|
+
code: 'PCB_DRILL_TOO_SMALL',
|
|
119
|
+
message: 'Minimum drill diameter is below common fabrication capability',
|
|
120
|
+
severity: 'warning',
|
|
121
|
+
remediationHint: 'Increase finished drill diameter or confirm the selected fabricator supports the requested drill size',
|
|
122
|
+
},
|
|
123
|
+
ANNULAR_RING_TOO_SMALL: {
|
|
124
|
+
code: 'PCB_ANNULAR_RING_TOO_SMALL',
|
|
125
|
+
message: 'Annular ring is below recommended manufacturing minimum',
|
|
126
|
+
severity: 'warning',
|
|
127
|
+
remediationHint: 'Increase pad/via diameter or reduce drill size to maintain enough annular ring for registration tolerance',
|
|
128
|
+
},
|
|
129
|
+
SOLDERMASK_SLIVER: {
|
|
130
|
+
code: 'PCB_SOLDERMASK_SLIVER',
|
|
131
|
+
message: 'Soldermask sliver is below recommended minimum',
|
|
132
|
+
severity: 'warning',
|
|
133
|
+
remediationHint: 'Increase pad spacing, adjust soldermask expansion, or remove soldermask dams intentionally where supported',
|
|
134
|
+
},
|
|
135
|
+
SILKSCREEN_OVER_PAD: {
|
|
136
|
+
code: 'PCB_SILKSCREEN_OVER_PAD',
|
|
137
|
+
message: 'Silkscreen overlaps exposed copper pads',
|
|
138
|
+
severity: 'warning',
|
|
139
|
+
remediationHint: 'Move or clip silkscreen references/graphics so they do not print over solderable pads',
|
|
140
|
+
},
|
|
141
|
+
TOOLING_HOLE_MISSING: {
|
|
142
|
+
code: 'PCB_TOOLING_HOLE_MISSING',
|
|
143
|
+
message: 'Tooling holes are missing for assembly/panel fixture alignment',
|
|
144
|
+
severity: 'warning',
|
|
145
|
+
remediationHint: 'Add tooling holes or confirm the assembler will provide panel-level tooling holes during panelization',
|
|
146
|
+
},
|
|
147
|
+
POLARITY_MARK_MISSING: {
|
|
148
|
+
code: 'PCB_POLARITY_MARK_MISSING',
|
|
149
|
+
message: 'Polarity or orientation marks are missing for polarized components',
|
|
150
|
+
severity: 'warning',
|
|
151
|
+
remediationHint: 'Add clear silkscreen/courtyard polarity markers for diodes, LEDs, electrolytic capacitors, IC pin 1, and connectors',
|
|
152
|
+
},
|
|
153
|
+
COMPONENT_SPACING_VIOLATION: {
|
|
154
|
+
code: 'PCB_COMPONENT_SPACING_VIOLATION',
|
|
155
|
+
message: 'Component spacing/courtyard violations detected',
|
|
156
|
+
severity: 'warning',
|
|
157
|
+
remediationHint: 'Increase component-to-component spacing or review courtyard overlap for assembly nozzle, hand-solder, and rework access',
|
|
158
|
+
},
|
|
159
|
+
TESTPOINT_COVERAGE_LOW: {
|
|
160
|
+
code: 'PCB_TESTPOINT_COVERAGE_LOW',
|
|
161
|
+
message: 'Critical nets are missing test points',
|
|
162
|
+
severity: 'warning',
|
|
163
|
+
remediationHint: 'Add accessible test pads for power rails, ground, reset, boot, programming, clocks, and key interfaces',
|
|
164
|
+
},
|
|
165
|
+
PROGRAMMING_HEADER_MISSING: {
|
|
166
|
+
code: 'PCB_PROGRAMMING_HEADER_MISSING',
|
|
167
|
+
message: 'Programming/debug header is required but missing',
|
|
168
|
+
severity: 'error',
|
|
169
|
+
remediationHint: 'Add a programming/debug connector or documented test pads for SWD/JTAG/UART/BOOT/RESET access',
|
|
170
|
+
},
|
|
171
|
+
FAB_NOTES_MISSING: {
|
|
172
|
+
code: 'PCB_FAB_NOTES_MISSING',
|
|
173
|
+
message: 'Fabrication notes are missing from the handoff package',
|
|
174
|
+
severity: 'warning',
|
|
175
|
+
remediationHint: 'Add fabrication notes covering board thickness, copper weight, finish, soldermask color, impedance requirements, panelization, and special instructions',
|
|
176
|
+
},
|
|
105
177
|
};
|
|
106
178
|
// ── Factory helpers ────────────────────────────────────────────────────────
|
|
107
179
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/pcb-constraints/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/pcb-constraints/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { ConstraintSeverity } from '../circuit/types.js';
|
|
7
7
|
/** Machine-readable code identifying a PCB constraint check. */
|
|
8
|
-
export type PcbConstraintCode = 'PCB_MISSING_OUTLINE' | 'PCB_OUTLINE_TOO_SMALL' | 'PCB_MISSING_STACKUP' | 'PCB_LAYER_COUNT_MISMATCH' | 'PCB_MISSING_MOUNTING_HOLES' | 'PCB_MISSING_NET_CLASSES' | 'PCB_INVALID_CLEARANCE' | 'PCB_KEEPOUT_VIOLATION' | 'PCB_MISSING_PLACEMENT_ZONES' | 'PCB_MISSING_MANUFACTURING_CONSTRAINTS' | 'PCB_FIDUCIAL_REQUIRED' | 'PCB_HIGH_VOLTAGE_CLEARANCE' | 'PCB_CONSTRAINT_INTERNAL';
|
|
8
|
+
export type PcbConstraintCode = 'PCB_MISSING_OUTLINE' | 'PCB_OUTLINE_TOO_SMALL' | 'PCB_MISSING_STACKUP' | 'PCB_LAYER_COUNT_MISMATCH' | 'PCB_MISSING_MOUNTING_HOLES' | 'PCB_MISSING_NET_CLASSES' | 'PCB_INVALID_CLEARANCE' | 'PCB_KEEPOUT_VIOLATION' | 'PCB_MISSING_PLACEMENT_ZONES' | 'PCB_MISSING_MANUFACTURING_CONSTRAINTS' | 'PCB_FIDUCIAL_REQUIRED' | 'PCB_HIGH_VOLTAGE_CLEARANCE' | 'PCB_DRILL_FILE_MISSING' | 'PCB_COPPER_EDGE_CLEARANCE' | 'PCB_DRILL_TOO_SMALL' | 'PCB_ANNULAR_RING_TOO_SMALL' | 'PCB_SOLDERMASK_SLIVER' | 'PCB_SILKSCREEN_OVER_PAD' | 'PCB_TOOLING_HOLE_MISSING' | 'PCB_POLARITY_MARK_MISSING' | 'PCB_COMPONENT_SPACING_VIOLATION' | 'PCB_TESTPOINT_COVERAGE_LOW' | 'PCB_PROGRAMMING_HEADER_MISSING' | 'PCB_FAB_NOTES_MISSING' | 'PCB_CONSTRAINT_INTERNAL';
|
|
9
9
|
/**
|
|
10
10
|
* A single PCB constraint issue (error or warning).
|
|
11
11
|
*
|
|
@@ -74,6 +74,44 @@ export interface PcbConstraintInput {
|
|
|
74
74
|
hasFiducials?: boolean;
|
|
75
75
|
/** Whether test pads are defined. */
|
|
76
76
|
hasTestPads?: boolean;
|
|
77
|
+
/** Whether the drill/NC drill file is present in the manufacturing package. */
|
|
78
|
+
hasDrillFile?: boolean;
|
|
79
|
+
/** Minimum copper-to-board-edge clearance observed in mm. */
|
|
80
|
+
minCopperToEdgeMm?: number;
|
|
81
|
+
/** Number of copper-to-edge clearance violations. */
|
|
82
|
+
copperToEdgeViolationCount?: number;
|
|
83
|
+
/** Minimum finished/mechanical drill diameter observed in mm. */
|
|
84
|
+
minDrillMm?: number;
|
|
85
|
+
/** Minimum annular ring observed in mm. */
|
|
86
|
+
minAnnularRingMm?: number;
|
|
87
|
+
/** Minimum soldermask web/sliver observed in mm. */
|
|
88
|
+
minSolderMaskSliverMm?: number;
|
|
89
|
+
/** Count of soldermask sliver violations. */
|
|
90
|
+
solderMaskSliverViolationCount?: number;
|
|
91
|
+
/** Count of silkscreen objects overlapping copper pads. */
|
|
92
|
+
silkscreenOverPadCount?: number;
|
|
93
|
+
/** Number of SMT components requiring assembly alignment. */
|
|
94
|
+
smtComponentCount?: number;
|
|
95
|
+
/** Count of global/local fiducials. Overrides hasFiducials when provided. */
|
|
96
|
+
fiducialCount?: number;
|
|
97
|
+
/** Count of tooling holes for panel/fixture assembly. */
|
|
98
|
+
toolingHoleCount?: number;
|
|
99
|
+
/** Number of polarized/orientation-sensitive components. */
|
|
100
|
+
polarizedComponentCount?: number;
|
|
101
|
+
/** Number of polarized components with explicit polarity/orientation marks. */
|
|
102
|
+
polarityMarkCount?: number;
|
|
103
|
+
/** Count of component courtyard/spacing violations. */
|
|
104
|
+
componentSpacingViolationCount?: number;
|
|
105
|
+
/** Critical nets that should be accessible for bring-up/test. */
|
|
106
|
+
criticalNetNames?: string[];
|
|
107
|
+
/** Nets that have test pads/probes. */
|
|
108
|
+
testPointNets?: string[];
|
|
109
|
+
/** Whether a programming/debug header is present when required. */
|
|
110
|
+
hasProgrammingHeader?: boolean;
|
|
111
|
+
/** Whether this design requires a programming/debug header. */
|
|
112
|
+
requiresProgrammingHeader?: boolean;
|
|
113
|
+
/** Whether fabrication notes are present in the handoff package. */
|
|
114
|
+
hasFabricationNotes?: boolean;
|
|
77
115
|
/** Whether the design contains high-voltage domains. */
|
|
78
116
|
hasHighVoltage?: boolean;
|
|
79
117
|
/** Manufacturing process (lead-free, lead-based, mixed). */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PCB constraint validation rules.
|
|
3
3
|
*
|
|
4
|
-
* Implements constraint checks that operate on {@link PcbConstraintInput}
|
|
4
|
+
* Implements production constraint checks that operate on {@link PcbConstraintInput}
|
|
5
5
|
* and produce structured {@link PcbConstraintIssue}s.
|
|
6
6
|
*
|
|
7
7
|
* Rules:
|
|
@@ -17,6 +17,17 @@
|
|
|
17
17
|
* 10. Missing manufacturing constraints (warning)
|
|
18
18
|
* 11. Fiducials recommended for SMT (warning)
|
|
19
19
|
* 12. High-voltage creepage/clearance (error)
|
|
20
|
+
* 13. Missing drill file (error)
|
|
21
|
+
* 14. Copper-to-edge clearance violations (error)
|
|
22
|
+
* 15. Drill/annular-ring manufacturing risk (warning)
|
|
23
|
+
* 16. Soldermask sliver risk (warning)
|
|
24
|
+
* 17. Silkscreen over exposed pads (warning)
|
|
25
|
+
* 18. Tooling holes for assembly/panel fixtures (warning)
|
|
26
|
+
* 19. Polarity/orientation marks (warning)
|
|
27
|
+
* 20. Component spacing/courtyard violations (warning)
|
|
28
|
+
* 21. Critical-net testpoint coverage (warning)
|
|
29
|
+
* 22. Programming/debug header access (error)
|
|
30
|
+
* 23. Fabrication notes completeness (warning)
|
|
20
31
|
*
|
|
21
32
|
* @module
|
|
22
33
|
*/
|
|
@@ -24,7 +35,7 @@ import type { PcbConstraintInput, PcbConstraintResult } from './types.js';
|
|
|
24
35
|
/**
|
|
25
36
|
* Run all PCB constraint validation rules against board data.
|
|
26
37
|
*
|
|
27
|
-
* Orchestrates
|
|
38
|
+
* Orchestrates 23 rules:
|
|
28
39
|
* 1. Missing outline — error if board outline is not defined
|
|
29
40
|
* 2. Outline too small — warning if dimensions are below 5mm
|
|
30
41
|
* 3. Missing stackup — warning if no detailed layer stack
|
|
@@ -37,6 +48,17 @@ import type { PcbConstraintInput, PcbConstraintResult } from './types.js';
|
|
|
37
48
|
* 10. Missing mfg constraints — warning if process/quantity unspecified
|
|
38
49
|
* 11. Fiducials recommended — warning if SMT board without fiducials
|
|
39
50
|
* 12. High-voltage clearance — error if HV domain without proper clearance
|
|
51
|
+
* 13. Drill file — error if NC drill file is missing
|
|
52
|
+
* 14. Copper edge clearance — error if copper is too close to board edge
|
|
53
|
+
* 15. Drill/annular ring — warning if process dimensions are risky
|
|
54
|
+
* 16. Soldermask sliver — warning if soldermask web is too small
|
|
55
|
+
* 17. Silkscreen over pad — warning if silkscreen overlaps exposed pads
|
|
56
|
+
* 18. Tooling holes — warning if assembly tooling holes are missing
|
|
57
|
+
* 19. Polarity marks — warning if orientation-sensitive parts lack marks
|
|
58
|
+
* 20. Component spacing — warning if courtyard/spacing violations exist
|
|
59
|
+
* 21. Testpoint coverage — warning if critical nets lack test access
|
|
60
|
+
* 22. Programming header — error if required debug/programming access is missing
|
|
61
|
+
* 23. Fabrication notes — warning if handoff notes are missing
|
|
40
62
|
*/
|
|
41
63
|
export declare function validatePcbConstraints(input: PcbConstraintInput): PcbConstraintResult;
|
|
42
64
|
/**
|
|
@@ -60,6 +82,25 @@ export declare function fromPcbIntent(pcb: {
|
|
|
60
82
|
mountingHoles?: unknown[];
|
|
61
83
|
fiducials?: unknown[];
|
|
62
84
|
testPads?: unknown[];
|
|
85
|
+
hasDrillFile?: boolean;
|
|
86
|
+
minCopperToEdgeMm?: number;
|
|
87
|
+
copperToEdgeViolationCount?: number;
|
|
88
|
+
minDrillMm?: number;
|
|
89
|
+
minAnnularRingMm?: number;
|
|
90
|
+
minSolderMaskSliverMm?: number;
|
|
91
|
+
solderMaskSliverViolationCount?: number;
|
|
92
|
+
silkscreenOverPadCount?: number;
|
|
93
|
+
smtComponentCount?: number;
|
|
94
|
+
fiducialCount?: number;
|
|
95
|
+
toolingHoleCount?: number;
|
|
96
|
+
polarizedComponentCount?: number;
|
|
97
|
+
polarityMarkCount?: number;
|
|
98
|
+
componentSpacingViolationCount?: number;
|
|
99
|
+
criticalNetNames?: string[];
|
|
100
|
+
testPointNets?: string[];
|
|
101
|
+
hasProgrammingHeader?: boolean;
|
|
102
|
+
requiresProgrammingHeader?: boolean;
|
|
103
|
+
hasFabricationNotes?: boolean;
|
|
63
104
|
manufacturingProcess?: string;
|
|
64
105
|
manufacturing?: {
|
|
65
106
|
process?: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PCB constraint validation rules.
|
|
3
3
|
*
|
|
4
|
-
* Implements constraint checks that operate on {@link PcbConstraintInput}
|
|
4
|
+
* Implements production constraint checks that operate on {@link PcbConstraintInput}
|
|
5
5
|
* and produce structured {@link PcbConstraintIssue}s.
|
|
6
6
|
*
|
|
7
7
|
* Rules:
|
|
@@ -17,10 +17,31 @@
|
|
|
17
17
|
* 10. Missing manufacturing constraints (warning)
|
|
18
18
|
* 11. Fiducials recommended for SMT (warning)
|
|
19
19
|
* 12. High-voltage creepage/clearance (error)
|
|
20
|
+
* 13. Missing drill file (error)
|
|
21
|
+
* 14. Copper-to-edge clearance violations (error)
|
|
22
|
+
* 15. Drill/annular-ring manufacturing risk (warning)
|
|
23
|
+
* 16. Soldermask sliver risk (warning)
|
|
24
|
+
* 17. Silkscreen over exposed pads (warning)
|
|
25
|
+
* 18. Tooling holes for assembly/panel fixtures (warning)
|
|
26
|
+
* 19. Polarity/orientation marks (warning)
|
|
27
|
+
* 20. Component spacing/courtyard violations (warning)
|
|
28
|
+
* 21. Critical-net testpoint coverage (warning)
|
|
29
|
+
* 22. Programming/debug header access (error)
|
|
30
|
+
* 23. Fabrication notes completeness (warning)
|
|
20
31
|
*
|
|
21
32
|
* @module
|
|
22
33
|
*/
|
|
23
34
|
import { pcbError, pcbWarning } from './errors.js';
|
|
35
|
+
const MIN_COPPER_TO_EDGE_MM = 0.25;
|
|
36
|
+
const MIN_DRILL_MM = 0.2;
|
|
37
|
+
const MIN_ANNULAR_RING_MM = 0.1;
|
|
38
|
+
const MIN_SOLDERMASK_SLIVER_MM = 0.1;
|
|
39
|
+
const MIN_SMT_FIDUCIAL_COUNT = 3;
|
|
40
|
+
const MIN_TOOLING_HOLE_COUNT = 2;
|
|
41
|
+
const MIN_TESTPOINT_COVERAGE_RATIO = 0.8;
|
|
42
|
+
function normalizedNetName(name) {
|
|
43
|
+
return name.trim().toUpperCase();
|
|
44
|
+
}
|
|
24
45
|
// ── Rule: missing board outline ────────────────────────────────────────────
|
|
25
46
|
function checkMissingOutline(input) {
|
|
26
47
|
const issues = [];
|
|
@@ -155,6 +176,191 @@ function checkHighVoltageClearance(input) {
|
|
|
155
176
|
}
|
|
156
177
|
return issues;
|
|
157
178
|
}
|
|
179
|
+
// ── Production review: drill file completeness ─────────────────────────────
|
|
180
|
+
function checkDrillFile(input) {
|
|
181
|
+
if (input.hasDrillFile !== false)
|
|
182
|
+
return [];
|
|
183
|
+
return [
|
|
184
|
+
pcbError('PCB_DRILL_FILE_MISSING', 'NC drill file is missing from the manufacturing package', {
|
|
185
|
+
remediationHint: 'Re-export the manufacturing package with Excellon/NC drill files included',
|
|
186
|
+
details: { hasDrillFile: input.hasDrillFile },
|
|
187
|
+
}),
|
|
188
|
+
];
|
|
189
|
+
}
|
|
190
|
+
// ── Production review: copper-to-edge clearance ────────────────────────────
|
|
191
|
+
function checkCopperToEdgeClearance(input) {
|
|
192
|
+
const issues = [];
|
|
193
|
+
const violationCount = input.copperToEdgeViolationCount ?? 0;
|
|
194
|
+
const belowMinimum = input.minCopperToEdgeMm !== undefined && input.minCopperToEdgeMm < MIN_COPPER_TO_EDGE_MM;
|
|
195
|
+
if (violationCount > 0 || belowMinimum) {
|
|
196
|
+
issues.push(pcbError('PCB_COPPER_EDGE_CLEARANCE', `Copper-to-edge clearance is below ${MIN_COPPER_TO_EDGE_MM}mm${input.minCopperToEdgeMm !== undefined ? ` (observed ${input.minCopperToEdgeMm}mm)` : ''}`, {
|
|
197
|
+
remediationHint: 'Move copper, zones, vias, and pads away from the routed board edge or increase the copper-to-edge clearance rule',
|
|
198
|
+
details: {
|
|
199
|
+
minCopperToEdgeMm: input.minCopperToEdgeMm,
|
|
200
|
+
copperToEdgeViolationCount: violationCount,
|
|
201
|
+
recommendedMinimumMm: MIN_COPPER_TO_EDGE_MM,
|
|
202
|
+
},
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
return issues;
|
|
206
|
+
}
|
|
207
|
+
// ── Production review: drill and annular ring capability ───────────────────
|
|
208
|
+
function checkDrillManufacturability(input) {
|
|
209
|
+
const issues = [];
|
|
210
|
+
if (input.minDrillMm !== undefined && input.minDrillMm < MIN_DRILL_MM) {
|
|
211
|
+
issues.push(pcbWarning('PCB_DRILL_TOO_SMALL', `Minimum drill diameter ${input.minDrillMm}mm is below common ${MIN_DRILL_MM}mm fabrication capability`, {
|
|
212
|
+
remediationHint: 'Increase finished drill diameter or confirm the selected fabricator supports the requested drill size',
|
|
213
|
+
details: { minDrillMm: input.minDrillMm, recommendedMinimumMm: MIN_DRILL_MM },
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
if (input.minAnnularRingMm !== undefined && input.minAnnularRingMm < MIN_ANNULAR_RING_MM) {
|
|
217
|
+
issues.push(pcbWarning('PCB_ANNULAR_RING_TOO_SMALL', `Minimum annular ring ${input.minAnnularRingMm}mm is below recommended ${MIN_ANNULAR_RING_MM}mm`, {
|
|
218
|
+
remediationHint: 'Increase pad/via diameter or reduce drill size to maintain enough annular ring for registration tolerance',
|
|
219
|
+
details: {
|
|
220
|
+
minAnnularRingMm: input.minAnnularRingMm,
|
|
221
|
+
recommendedMinimumMm: MIN_ANNULAR_RING_MM,
|
|
222
|
+
},
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
return issues;
|
|
226
|
+
}
|
|
227
|
+
// ── Production review: soldermask sliver ───────────────────────────────────
|
|
228
|
+
function checkSolderMaskSliver(input) {
|
|
229
|
+
const violationCount = input.solderMaskSliverViolationCount ?? 0;
|
|
230
|
+
const belowMinimum = input.minSolderMaskSliverMm !== undefined &&
|
|
231
|
+
input.minSolderMaskSliverMm < MIN_SOLDERMASK_SLIVER_MM;
|
|
232
|
+
if (!belowMinimum && violationCount === 0)
|
|
233
|
+
return [];
|
|
234
|
+
return [
|
|
235
|
+
pcbWarning('PCB_SOLDERMASK_SLIVER', `Soldermask sliver is below ${MIN_SOLDERMASK_SLIVER_MM}mm${input.minSolderMaskSliverMm !== undefined ? ` (observed ${input.minSolderMaskSliverMm}mm)` : ''}`, {
|
|
236
|
+
remediationHint: 'Increase pad spacing, adjust soldermask expansion, or remove soldermask dams intentionally where supported',
|
|
237
|
+
details: {
|
|
238
|
+
minSolderMaskSliverMm: input.minSolderMaskSliverMm,
|
|
239
|
+
solderMaskSliverViolationCount: violationCount,
|
|
240
|
+
recommendedMinimumMm: MIN_SOLDERMASK_SLIVER_MM,
|
|
241
|
+
},
|
|
242
|
+
}),
|
|
243
|
+
];
|
|
244
|
+
}
|
|
245
|
+
// ── Production review: silkscreen over pads ────────────────────────────────
|
|
246
|
+
function checkSilkscreenOverPads(input) {
|
|
247
|
+
const count = input.silkscreenOverPadCount ?? 0;
|
|
248
|
+
if (count <= 0)
|
|
249
|
+
return [];
|
|
250
|
+
return [
|
|
251
|
+
pcbWarning('PCB_SILKSCREEN_OVER_PAD', `${count} silkscreen object${count === 1 ? '' : 's'} overlap exposed copper pads`, {
|
|
252
|
+
remediationHint: 'Move or clip silkscreen references/graphics so they do not print over solderable pads',
|
|
253
|
+
details: { silkscreenOverPadCount: count },
|
|
254
|
+
}),
|
|
255
|
+
];
|
|
256
|
+
}
|
|
257
|
+
// ── Production review: assembly fixtures/fiducials ─────────────────────────
|
|
258
|
+
function checkAssemblyAlignmentFeatures(input) {
|
|
259
|
+
const issues = [];
|
|
260
|
+
const smtCount = input.smtComponentCount ?? 0;
|
|
261
|
+
const fiducialCount = input.fiducialCount ?? (input.hasFiducials ? MIN_SMT_FIDUCIAL_COUNT : 0);
|
|
262
|
+
const toolingHoleCount = input.toolingHoleCount ?? 0;
|
|
263
|
+
if (smtCount > 0 && fiducialCount < MIN_SMT_FIDUCIAL_COUNT) {
|
|
264
|
+
issues.push(pcbWarning('PCB_FIDUCIAL_REQUIRED', `SMT assembly has ${fiducialCount} fiducial(s); at least ${MIN_SMT_FIDUCIAL_COUNT} are recommended`, {
|
|
265
|
+
remediationHint: 'Add at least 3 fiducial marks (global, near board corners) for pick-and-place machine alignment',
|
|
266
|
+
details: {
|
|
267
|
+
smtComponentCount: smtCount,
|
|
268
|
+
fiducialCount,
|
|
269
|
+
recommendedMinimum: MIN_SMT_FIDUCIAL_COUNT,
|
|
270
|
+
},
|
|
271
|
+
}));
|
|
272
|
+
}
|
|
273
|
+
if (smtCount > 0 && toolingHoleCount < MIN_TOOLING_HOLE_COUNT) {
|
|
274
|
+
issues.push(pcbWarning('PCB_TOOLING_HOLE_MISSING', `Assembly tooling holes are below recommended count (${toolingHoleCount}/${MIN_TOOLING_HOLE_COUNT})`, {
|
|
275
|
+
remediationHint: 'Add tooling holes or confirm the assembler will provide panel-level tooling holes during panelization',
|
|
276
|
+
details: {
|
|
277
|
+
smtComponentCount: smtCount,
|
|
278
|
+
toolingHoleCount,
|
|
279
|
+
recommendedMinimum: MIN_TOOLING_HOLE_COUNT,
|
|
280
|
+
},
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
return issues;
|
|
284
|
+
}
|
|
285
|
+
// ── Production review: polarity/orientation marks ──────────────────────────
|
|
286
|
+
function checkPolarityMarks(input) {
|
|
287
|
+
const polarizedCount = input.polarizedComponentCount ?? 0;
|
|
288
|
+
const markedCount = input.polarityMarkCount ?? 0;
|
|
289
|
+
const missingCount = Math.max(0, polarizedCount - markedCount);
|
|
290
|
+
if (missingCount === 0)
|
|
291
|
+
return [];
|
|
292
|
+
return [
|
|
293
|
+
pcbWarning('PCB_POLARITY_MARK_MISSING', `${missingCount} polarized/orientation-sensitive component${missingCount === 1 ? '' : 's'} lack polarity/orientation marks`, {
|
|
294
|
+
remediationHint: 'Add clear silkscreen/courtyard polarity markers for diodes, LEDs, electrolytic capacitors, IC pin 1, and connectors',
|
|
295
|
+
details: {
|
|
296
|
+
polarizedComponentCount: polarizedCount,
|
|
297
|
+
polarityMarkCount: markedCount,
|
|
298
|
+
missingCount,
|
|
299
|
+
},
|
|
300
|
+
}),
|
|
301
|
+
];
|
|
302
|
+
}
|
|
303
|
+
// ── Production review: component spacing/courtyard ─────────────────────────
|
|
304
|
+
function checkComponentSpacing(input) {
|
|
305
|
+
const count = input.componentSpacingViolationCount ?? 0;
|
|
306
|
+
if (count <= 0)
|
|
307
|
+
return [];
|
|
308
|
+
return [
|
|
309
|
+
pcbWarning('PCB_COMPONENT_SPACING_VIOLATION', `${count} component spacing/courtyard violation${count === 1 ? '' : 's'} detected`, {
|
|
310
|
+
remediationHint: 'Increase component-to-component spacing or review courtyard overlap for assembly nozzle, hand-solder, and rework access',
|
|
311
|
+
details: { componentSpacingViolationCount: count },
|
|
312
|
+
}),
|
|
313
|
+
];
|
|
314
|
+
}
|
|
315
|
+
// ── Production review: testpoint coverage ──────────────────────────────────
|
|
316
|
+
function checkTestpointCoverage(input) {
|
|
317
|
+
const criticalNets = [...new Set((input.criticalNetNames ?? []).map(normalizedNetName))];
|
|
318
|
+
if (criticalNets.length === 0)
|
|
319
|
+
return [];
|
|
320
|
+
const testPointNets = new Set((input.testPointNets ?? []).map(normalizedNetName));
|
|
321
|
+
const missing = criticalNets.filter((net) => !testPointNets.has(net));
|
|
322
|
+
const coverage = (criticalNets.length - missing.length) / criticalNets.length;
|
|
323
|
+
if (coverage < MIN_TESTPOINT_COVERAGE_RATIO) {
|
|
324
|
+
return [
|
|
325
|
+
pcbWarning('PCB_TESTPOINT_COVERAGE_LOW', `Critical-net testpoint coverage is ${(coverage * 100).toFixed(0)}%; ${missing.length} critical net(s) are missing test access`, {
|
|
326
|
+
remediationHint: 'Add accessible test pads for power rails, ground, reset, boot, programming, clocks, and key interfaces',
|
|
327
|
+
details: {
|
|
328
|
+
criticalNetCount: criticalNets.length,
|
|
329
|
+
testPointNetCount: testPointNets.size,
|
|
330
|
+
missingCriticalNets: missing,
|
|
331
|
+
coverageRatio: coverage,
|
|
332
|
+
recommendedMinimumRatio: MIN_TESTPOINT_COVERAGE_RATIO,
|
|
333
|
+
},
|
|
334
|
+
}),
|
|
335
|
+
];
|
|
336
|
+
}
|
|
337
|
+
return [];
|
|
338
|
+
}
|
|
339
|
+
// ── Production review: programming/debug access ────────────────────────────
|
|
340
|
+
function checkProgrammingHeader(input) {
|
|
341
|
+
if (!input.requiresProgrammingHeader || input.hasProgrammingHeader !== false)
|
|
342
|
+
return [];
|
|
343
|
+
return [
|
|
344
|
+
pcbError('PCB_PROGRAMMING_HEADER_MISSING', 'Programming/debug header is required but missing', {
|
|
345
|
+
remediationHint: 'Add a programming/debug connector or documented test pads for SWD/JTAG/UART/BOOT/RESET access',
|
|
346
|
+
details: {
|
|
347
|
+
requiresProgrammingHeader: true,
|
|
348
|
+
hasProgrammingHeader: input.hasProgrammingHeader,
|
|
349
|
+
},
|
|
350
|
+
}),
|
|
351
|
+
];
|
|
352
|
+
}
|
|
353
|
+
// ── Production review: fabrication notes ───────────────────────────────────
|
|
354
|
+
function checkFabricationNotes(input) {
|
|
355
|
+
if (input.hasFabricationNotes !== false)
|
|
356
|
+
return [];
|
|
357
|
+
return [
|
|
358
|
+
pcbWarning('PCB_FAB_NOTES_MISSING', 'Fabrication notes are missing from the handoff package', {
|
|
359
|
+
remediationHint: 'Add fabrication notes covering board thickness, copper weight, finish, soldermask color, impedance requirements, panelization, and special instructions',
|
|
360
|
+
details: { hasFabricationNotes: input.hasFabricationNotes },
|
|
361
|
+
}),
|
|
362
|
+
];
|
|
363
|
+
}
|
|
158
364
|
const RULES = [
|
|
159
365
|
checkMissingOutline,
|
|
160
366
|
checkOutlineTooSmall,
|
|
@@ -168,12 +374,23 @@ const RULES = [
|
|
|
168
374
|
checkMissingManufacturingConstraints,
|
|
169
375
|
checkFiducials,
|
|
170
376
|
checkHighVoltageClearance,
|
|
377
|
+
checkDrillFile,
|
|
378
|
+
checkCopperToEdgeClearance,
|
|
379
|
+
checkDrillManufacturability,
|
|
380
|
+
checkSolderMaskSliver,
|
|
381
|
+
checkSilkscreenOverPads,
|
|
382
|
+
checkAssemblyAlignmentFeatures,
|
|
383
|
+
checkPolarityMarks,
|
|
384
|
+
checkComponentSpacing,
|
|
385
|
+
checkTestpointCoverage,
|
|
386
|
+
checkProgrammingHeader,
|
|
387
|
+
checkFabricationNotes,
|
|
171
388
|
];
|
|
172
389
|
// ── Main entry point ───────────────────────────────────────────────────────
|
|
173
390
|
/**
|
|
174
391
|
* Run all PCB constraint validation rules against board data.
|
|
175
392
|
*
|
|
176
|
-
* Orchestrates
|
|
393
|
+
* Orchestrates 23 rules:
|
|
177
394
|
* 1. Missing outline — error if board outline is not defined
|
|
178
395
|
* 2. Outline too small — warning if dimensions are below 5mm
|
|
179
396
|
* 3. Missing stackup — warning if no detailed layer stack
|
|
@@ -186,6 +403,17 @@ const RULES = [
|
|
|
186
403
|
* 10. Missing mfg constraints — warning if process/quantity unspecified
|
|
187
404
|
* 11. Fiducials recommended — warning if SMT board without fiducials
|
|
188
405
|
* 12. High-voltage clearance — error if HV domain without proper clearance
|
|
406
|
+
* 13. Drill file — error if NC drill file is missing
|
|
407
|
+
* 14. Copper edge clearance — error if copper is too close to board edge
|
|
408
|
+
* 15. Drill/annular ring — warning if process dimensions are risky
|
|
409
|
+
* 16. Soldermask sliver — warning if soldermask web is too small
|
|
410
|
+
* 17. Silkscreen over pad — warning if silkscreen overlaps exposed pads
|
|
411
|
+
* 18. Tooling holes — warning if assembly tooling holes are missing
|
|
412
|
+
* 19. Polarity marks — warning if orientation-sensitive parts lack marks
|
|
413
|
+
* 20. Component spacing — warning if courtyard/spacing violations exist
|
|
414
|
+
* 21. Testpoint coverage — warning if critical nets lack test access
|
|
415
|
+
* 22. Programming header — error if required debug/programming access is missing
|
|
416
|
+
* 23. Fabrication notes — warning if handoff notes are missing
|
|
189
417
|
*/
|
|
190
418
|
export function validatePcbConstraints(input) {
|
|
191
419
|
const errors = [];
|
|
@@ -300,6 +528,25 @@ export function fromPcbIntent(pcb) {
|
|
|
300
528
|
hasPlacementZones: !!(pcb.placementZones && pcb.placementZones.length > 0),
|
|
301
529
|
hasFiducials: !!(pcb.fiducials && pcb.fiducials.length > 0),
|
|
302
530
|
hasTestPads: !!(pcb.testPads && pcb.testPads.length > 0),
|
|
531
|
+
hasDrillFile: pcb.hasDrillFile,
|
|
532
|
+
minCopperToEdgeMm: pcb.minCopperToEdgeMm,
|
|
533
|
+
copperToEdgeViolationCount: pcb.copperToEdgeViolationCount,
|
|
534
|
+
minDrillMm: pcb.minDrillMm,
|
|
535
|
+
minAnnularRingMm: pcb.minAnnularRingMm,
|
|
536
|
+
minSolderMaskSliverMm: pcb.minSolderMaskSliverMm,
|
|
537
|
+
solderMaskSliverViolationCount: pcb.solderMaskSliverViolationCount,
|
|
538
|
+
silkscreenOverPadCount: pcb.silkscreenOverPadCount,
|
|
539
|
+
smtComponentCount: pcb.smtComponentCount,
|
|
540
|
+
fiducialCount: pcb.fiducialCount ?? pcb.fiducials?.length,
|
|
541
|
+
toolingHoleCount: pcb.toolingHoleCount,
|
|
542
|
+
polarizedComponentCount: pcb.polarizedComponentCount,
|
|
543
|
+
polarityMarkCount: pcb.polarityMarkCount,
|
|
544
|
+
componentSpacingViolationCount: pcb.componentSpacingViolationCount,
|
|
545
|
+
criticalNetNames: pcb.criticalNetNames,
|
|
546
|
+
testPointNets: pcb.testPointNets,
|
|
547
|
+
hasProgrammingHeader: pcb.hasProgrammingHeader,
|
|
548
|
+
requiresProgrammingHeader: pcb.requiresProgrammingHeader,
|
|
549
|
+
hasFabricationNotes: pcb.hasFabricationNotes,
|
|
303
550
|
hasHighVoltage: pcb.highVoltage ?? false,
|
|
304
551
|
manufacturingProcess: pcb.manufacturingProcess ?? pcb.manufacturing?.process,
|
|
305
552
|
hasQuantity: !!(pcb.quantity && pcb.quantity > 0) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/pcb-constraints/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/pcb-constraints/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC;AAED,8EAA8E;AAE9E,SAAS,mBAAmB,CAAC,KAAyB;IACpD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CACT,QAAQ,CAAC,qBAAqB,EAAE,8BAA8B,EAAE;YAC9D,eAAe,EACb,6FAA6F;SAChG,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,SAAS,oBAAoB,CAAC,KAAyB;IACrD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,sBAAsB,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CACT,UAAU,CACR,uBAAuB,EACvB,gBAAgB,KAAK,CAAC,OAAO,uCAAuC,sBAAsB,IAAI,EAC9F;YACE,eAAe,EACb,6FAA6F;SAChG,CACF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,sBAAsB,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CACT,UAAU,CACR,uBAAuB,EACvB,iBAAiB,KAAK,CAAC,QAAQ,uCAAuC,sBAAsB,IAAI,EAChG;YACE,eAAe,EACb,6FAA6F;SAChG,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,mBAAmB,CAAC,KAAyB;IACpD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,qBAAqB,EAAE,uCAAuC,EAAE;YACzE,eAAe,EACb,+GAA+G;YACjH,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;SAC1C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC,SAAS,uBAAuB,CAAC,KAAyB;IACxD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,GAAG,0BAA0B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC9F,MAAM,CAAC,IAAI,CACT,QAAQ,CACN,0BAA0B,EAC1B,aAAa,KAAK,CAAC,UAAU,4CAA4C,EACzE;YACE,eAAe,EACb,0FAA0F;YAC5F,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;SAC1C,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,yBAAyB,CAAC,KAAyB;IAC1D,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,4BAA4B,EAAE,wCAAwC,EAAE;YACjF,eAAe,EACb,4FAA4F;SAC/F,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,KAAyB;IACvD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,yBAAyB,EAAE,+CAA+C,EAAE;YACrF,eAAe,EACb,sGAAsG;SACzG,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,KAAyB;IACtD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CACT,UAAU,CACR,uBAAuB,EACvB,6DAA6D,EAC7D;YACE,eAAe,EACb,sGAAsG;SACzG,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,KAAyB;IAClD,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CACT,UAAU,CACR,uBAAuB,EACvB,6DAA6D,EAC7D;YACE,eAAe,EACb,2FAA2F;SAC9F,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,0BAA0B,CAAC,KAAyB;IAC3D,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACzE,MAAM,CAAC,IAAI,CACT,UAAU,CACR,6BAA6B,EAC7B,mDAAmD,EACnD;YACE,eAAe,EACb,iHAAiH;SACpH,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,oCAAoC,CAAC,KAAyB;IACrE,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CACT,UAAU,CACR,uCAAuC,EACvC,+DAA+D,EAC/D;YACE,eAAe,EACb,wGAAwG;SAC3G,CACF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,uCAAuC,EAAE,sCAAsC,EAAE;YAC1F,eAAe,EACb,wFAAwF;SAC3F,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,cAAc,CAAC,KAAyB;IAC/C,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,uBAAuB,EAAE,4CAA4C,EAAE;YAChF,eAAe,EACb,iGAAiG;SACpG,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,yBAAyB,CAAC,KAAyB;IAC1D,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,IAAI,CACT,QAAQ,CACN,4BAA4B,EAC5B,6DAA6D,EAC7D;YACE,eAAe,EACb,2HAA2H;SAC9H,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAC5C,OAAO;QACL,QAAQ,CAAC,wBAAwB,EAAE,yDAAyD,EAAE;YAC5F,eAAe,EAAE,2EAA2E;YAC5F,OAAO,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;SAC9C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,0BAA0B,CAAC,KAAyB;IAC3D,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,KAAK,CAAC,0BAA0B,IAAI,CAAC,CAAC;IAC7D,MAAM,YAAY,GAChB,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAK,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;IAE3F,IAAI,cAAc,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CACT,QAAQ,CACN,2BAA2B,EAC3B,qCAAqC,qBAAqB,KAAK,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EACxJ;YACE,eAAe,EACb,kHAAkH;YACpH,OAAO,EAAE;gBACP,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,0BAA0B,EAAE,cAAc;gBAC1C,oBAAoB,EAAE,qBAAqB;aAC5C;SACF,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,2BAA2B,CAAC,KAAyB;IAC5D,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CACT,UAAU,CACR,qBAAqB,EACrB,0BAA0B,KAAK,CAAC,UAAU,sBAAsB,YAAY,2BAA2B,EACvG;YACE,eAAe,EACb,uGAAuG;YACzG,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE;SAC9E,CACF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;QACzF,MAAM,CAAC,IAAI,CACT,UAAU,CACR,4BAA4B,EAC5B,wBAAwB,KAAK,CAAC,gBAAgB,2BAA2B,mBAAmB,IAAI,EAChG;YACE,eAAe,EACb,2GAA2G;YAC7G,OAAO,EAAE;gBACP,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,oBAAoB,EAAE,mBAAmB;aAC1C;SACF,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,KAAyB;IACtD,MAAM,cAAc,GAAG,KAAK,CAAC,8BAA8B,IAAI,CAAC,CAAC;IACjE,MAAM,YAAY,GAChB,KAAK,CAAC,qBAAqB,KAAK,SAAS;QACzC,KAAK,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IACzD,IAAI,CAAC,YAAY,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErD,OAAO;QACL,UAAU,CACR,uBAAuB,EACvB,8BAA8B,wBAAwB,KAAK,KAAK,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAC5J;YACE,eAAe,EACb,4GAA4G;YAC9G,OAAO,EAAE;gBACP,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;gBAClD,8BAA8B,EAAE,cAAc;gBAC9C,oBAAoB,EAAE,wBAAwB;aAC/C;SACF,CACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,uBAAuB,CAAC,KAAyB;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,sBAAsB,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO;QACL,UAAU,CACR,yBAAyB,EACzB,GAAG,KAAK,qBAAqB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,8BAA8B,EACjF;YACE,eAAe,EACb,uFAAuF;YACzF,OAAO,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE;SAC3C,CACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,8BAA8B,CAAC,KAAyB;IAC/D,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAErD,IAAI,QAAQ,GAAG,CAAC,IAAI,aAAa,GAAG,sBAAsB,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CACT,UAAU,CACR,uBAAuB,EACvB,oBAAoB,aAAa,0BAA0B,sBAAsB,kBAAkB,EACnG;YACE,eAAe,EACb,iGAAiG;YACnG,OAAO,EAAE;gBACP,iBAAiB,EAAE,QAAQ;gBAC3B,aAAa;gBACb,kBAAkB,EAAE,sBAAsB;aAC3C;SACF,CACF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,IAAI,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CACT,UAAU,CACR,0BAA0B,EAC1B,uDAAuD,gBAAgB,IAAI,sBAAsB,GAAG,EACpG;YACE,eAAe,EACb,uGAAuG;YACzG,OAAO,EAAE;gBACP,iBAAiB,EAAE,QAAQ;gBAC3B,gBAAgB;gBAChB,kBAAkB,EAAE,sBAAsB;aAC3C;SACF,CACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E,SAAS,kBAAkB,CAAC,KAAyB;IACnD,MAAM,cAAc,GAAG,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,CAAC;IAC/D,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,OAAO;QACL,UAAU,CACR,2BAA2B,EAC3B,GAAG,YAAY,6CAA6C,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kCAAkC,EAC3H;YACE,eAAe,EACb,qHAAqH;YACvH,OAAO,EAAE;gBACP,uBAAuB,EAAE,cAAc;gBACvC,iBAAiB,EAAE,WAAW;gBAC9B,YAAY;aACb;SACF,CACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,KAAyB;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,8BAA8B,IAAI,CAAC,CAAC;IACxD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO;QACL,UAAU,CACR,iCAAiC,EACjC,GAAG,KAAK,yCAAyC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,EAClF;YACE,eAAe,EACb,yHAAyH;YAC3H,OAAO,EAAE,EAAE,8BAA8B,EAAE,KAAK,EAAE;SACnD,CACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,KAAyB;IACvD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;IAE9E,IAAI,QAAQ,GAAG,4BAA4B,EAAE,CAAC;QAC5C,OAAO;YACL,UAAU,CACR,4BAA4B,EAC5B,sCAAsC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,0CAA0C,EAC/H;gBACE,eAAe,EACb,wGAAwG;gBAC1G,OAAO,EAAE;oBACP,gBAAgB,EAAE,YAAY,CAAC,MAAM;oBACrC,iBAAiB,EAAE,aAAa,CAAC,IAAI;oBACrC,mBAAmB,EAAE,OAAO;oBAC5B,aAAa,EAAE,QAAQ;oBACvB,uBAAuB,EAAE,4BAA4B;iBACtD;aACF,CACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,KAAyB;IACvD,IAAI,CAAC,KAAK,CAAC,yBAAyB,IAAI,KAAK,CAAC,oBAAoB,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACxF,OAAO;QACL,QAAQ,CAAC,gCAAgC,EAAE,kDAAkD,EAAE;YAC7F,eAAe,EACb,+FAA+F;YACjG,OAAO,EAAE;gBACP,yBAAyB,EAAE,IAAI;gBAC/B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;aACjD;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,KAAyB;IACtD,IAAI,KAAK,CAAC,mBAAmB,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO;QACL,UAAU,CAAC,uBAAuB,EAAE,wDAAwD,EAAE;YAC5F,eAAe,EACb,yJAAyJ;YAC3J,OAAO,EAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE;SAC5D,CAAC;KACH,CAAC;AACJ,CAAC;AAMD,MAAM,KAAK,GAAa;IACtB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,yBAAyB;IACzB,sBAAsB;IACtB,qBAAqB;IACrB,iBAAiB;IACjB,0BAA0B;IAC1B,oCAAoC;IACpC,cAAc;IACd,yBAAyB;IACzB,cAAc;IACd,0BAA0B;IAC1B,2BAA2B;IAC3B,qBAAqB;IACrB,uBAAuB;IACvB,8BAA8B;IAC9B,kBAAkB;IAClB,qBAAqB;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;CACtB,CAAC;AAEF,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC9D,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAEjE,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ;QACR,OAAO,EAAE;YACP,WAAW;YACX,MAAM;YACN,MAAM;YACN,aAAa;SACd;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAyB,EACzB,MAA2B;IAE3B,MAAM,OAAO,GAIR,EAAE,CAAC;IACR,MAAM,oBAAoB,GAA4C,EAAE,CAAC;IAEzE,6CAA6C;IAC7C,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,gEAAgE;QACjF,kBAAkB,EAAE,mDAAmD;QACvE,eAAe,EAAE,wEAAwE;QACzF,aAAa,EAAE,mDAAmD;QAClE,gBAAgB,EAAE,mEAAmE;QACrF,aAAa,EAAE,oEAAoE;QACnF,iBAAiB,EAAE,8DAA8D;QACjF,eAAe,EAAE,qEAAqE;QACtF,iBAAiB,EAAE,6DAA6D;QAChF,2BAA2B,EAAE,8DAA8D;QAC3F,SAAS,EAAE,wDAAwD;QACnE,wBAAwB,EAAE,sDAAsD;KACjF,CAAC;IAEF,iDAAiD;IACjD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnF,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE;SACxC,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,oBAAoB,CAAC,IAAI,CAAC;QACxB,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,mFAAmF;KAC5F,CAAC,CAAC;IAEH,oBAAoB,CAAC,IAAI,CAAC;QACxB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,8EAA8E;KACvF,CAAC,CAAC;IAEH,oBAAoB,CAAC,IAAI,CAAC;QACxB,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,kFAAkF;KAC3F,CAAC,CAAC;IAEH,kBAAkB;IAClB,IAAI,OAAiD,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,OAAO,GAAG,cAAc,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;IAED,OAAO;QACL,OAAO;QACP,oBAAoB;QACpB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAoC7B;IACC,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,CAAC,CAAC,CACZ,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3F;QACD,iBAAiB,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;QACjD,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,iBAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1E,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,iBAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1E,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,0BAA0B,EAAE,GAAG,CAAC,0BAA0B;QAC1D,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;QAChD,8BAA8B,EAAE,GAAG,CAAC,8BAA8B;QAClE,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;QAClD,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM;QACzD,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,uBAAuB,EAAE,GAAG,CAAC,uBAAuB;QACpD,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,8BAA8B,EAAE,GAAG,CAAC,8BAA8B;QAClE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;QAC9C,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;QACxD,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,cAAc,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;QACxC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO;QAC5E,WAAW,EACT,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,IAAI,GAAG,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC"}
|
package/dist/tools/L1_export.js
CHANGED
|
@@ -1,4 +1,38 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { validatePcbConstraints } from '../pcb-constraints/index.js';
|
|
3
|
+
const productionReviewBoardDataSchema = z.object({}).passthrough();
|
|
4
|
+
const productionReviewIssueSchema = z.object({
|
|
5
|
+
code: z.string(),
|
|
6
|
+
message: z.string(),
|
|
7
|
+
severity: z.string(),
|
|
8
|
+
remediationHint: z.string(),
|
|
9
|
+
});
|
|
10
|
+
function runProductionReview(boardData, mode) {
|
|
11
|
+
if (!mode || mode === 'off')
|
|
12
|
+
return undefined;
|
|
13
|
+
const result = validatePcbConstraints((boardData ?? {}));
|
|
14
|
+
const errors = result.errors.map((issue) => ({
|
|
15
|
+
code: issue.code,
|
|
16
|
+
message: issue.message,
|
|
17
|
+
severity: issue.severity,
|
|
18
|
+
remediationHint: issue.remediationHint,
|
|
19
|
+
}));
|
|
20
|
+
const warnings = result.warnings.map((issue) => ({
|
|
21
|
+
code: issue.code,
|
|
22
|
+
message: issue.message,
|
|
23
|
+
severity: issue.severity,
|
|
24
|
+
remediationHint: issue.remediationHint,
|
|
25
|
+
}));
|
|
26
|
+
return {
|
|
27
|
+
mode,
|
|
28
|
+
passed: result.valid,
|
|
29
|
+
blocked: mode === 'block' && errors.length > 0,
|
|
30
|
+
error_count: errors.length,
|
|
31
|
+
warning_count: warnings.length,
|
|
32
|
+
errors,
|
|
33
|
+
warnings,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
2
36
|
function registerExportTools(registry, _config) {
|
|
3
37
|
registry.register({
|
|
4
38
|
name: 'easyeda_export_gerbers',
|
|
@@ -20,17 +54,44 @@ function registerExportTools(registry, _config) {
|
|
|
20
54
|
drillFormat: z.enum(['excellon', 'millimeter', 'inch']).optional(),
|
|
21
55
|
excludeLayer: z.array(z.string()).optional(),
|
|
22
56
|
ledPanel: z.boolean().optional(),
|
|
57
|
+
productionReview: z
|
|
58
|
+
.object({
|
|
59
|
+
mode: z.enum(['off', 'warn', 'block']).default('warn'),
|
|
60
|
+
boardData: productionReviewBoardDataSchema.optional(),
|
|
61
|
+
})
|
|
62
|
+
.optional(),
|
|
23
63
|
}),
|
|
24
64
|
outputSchema: z.object({
|
|
25
65
|
project_id: z.string(),
|
|
26
66
|
artifact_path: z.string().optional(),
|
|
27
67
|
file_count: z.number().int().nonnegative().optional(),
|
|
28
68
|
exported: z.boolean(),
|
|
69
|
+
blocked_by_production_review: z.boolean().optional(),
|
|
70
|
+
production_review: z
|
|
71
|
+
.object({
|
|
72
|
+
mode: z.string(),
|
|
73
|
+
passed: z.boolean(),
|
|
74
|
+
blocked: z.boolean(),
|
|
75
|
+
error_count: z.number().int().nonnegative(),
|
|
76
|
+
warning_count: z.number().int().nonnegative(),
|
|
77
|
+
errors: z.array(productionReviewIssueSchema),
|
|
78
|
+
warnings: z.array(productionReviewIssueSchema),
|
|
79
|
+
})
|
|
80
|
+
.optional(),
|
|
29
81
|
not_available: z.boolean().optional(),
|
|
30
82
|
}),
|
|
31
83
|
handler: async (ctx, params) => {
|
|
32
|
-
const { projectId, drillFormat, excludeLayer, ledPanel } = params;
|
|
84
|
+
const { projectId, drillFormat, excludeLayer, ledPanel, productionReview } = params;
|
|
33
85
|
try {
|
|
86
|
+
const productionReviewResult = runProductionReview(productionReview?.boardData, productionReview?.mode);
|
|
87
|
+
if (productionReviewResult?.blocked) {
|
|
88
|
+
return {
|
|
89
|
+
project_id: projectId,
|
|
90
|
+
exported: false,
|
|
91
|
+
blocked_by_production_review: true,
|
|
92
|
+
production_review: productionReviewResult,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
34
95
|
const result = await ctx.bridge.call('board.exportGerbers', {
|
|
35
96
|
projectId,
|
|
36
97
|
drillFormat,
|
|
@@ -43,12 +104,14 @@ function registerExportTools(registry, _config) {
|
|
|
43
104
|
artifact_path: data.artifactPath,
|
|
44
105
|
file_count: data.fileCount,
|
|
45
106
|
exported: true,
|
|
107
|
+
production_review: productionReviewResult,
|
|
46
108
|
};
|
|
47
109
|
}
|
|
48
110
|
catch (err) {
|
|
49
111
|
return {
|
|
50
112
|
project_id: projectId,
|
|
51
113
|
exported: false,
|
|
114
|
+
production_review: runProductionReview(productionReview?.boardData, productionReview?.mode),
|
|
52
115
|
not_available: true,
|
|
53
116
|
error: err instanceof Error ? err.message : String(err),
|
|
54
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"L1_export.js","sourceRoot":"","sources":["../../src/tools/L1_export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"L1_export.js","sourceRoot":"","sources":["../../src/tools/L1_export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { validatePcbConstraints, buildConstraintReport } from '../pcb-constraints/index.js';
|
|
3
|
+
const pcbBoardDataSchema = z.object({
|
|
4
|
+
widthMm: z.number().nonnegative().optional(),
|
|
5
|
+
heightMm: z.number().nonnegative().optional(),
|
|
6
|
+
layerCount: z.number().int().nonnegative().optional(),
|
|
7
|
+
hasOutline: z.boolean().optional(),
|
|
8
|
+
mountingHoleCount: z.number().int().nonnegative().optional(),
|
|
9
|
+
hasLayerStack: z.boolean().optional(),
|
|
10
|
+
hasNetClasses: z.boolean().optional(),
|
|
11
|
+
hasClearanceRules: z.boolean().optional(),
|
|
12
|
+
hasKeepoutAreas: z.boolean().optional(),
|
|
13
|
+
hasPlacementZones: z.boolean().optional(),
|
|
14
|
+
hasFiducials: z.boolean().optional(),
|
|
15
|
+
hasTestPads: z.boolean().optional(),
|
|
16
|
+
hasDrillFile: z.boolean().optional(),
|
|
17
|
+
minCopperToEdgeMm: z.number().nonnegative().optional(),
|
|
18
|
+
copperToEdgeViolationCount: z.number().int().nonnegative().optional(),
|
|
19
|
+
minDrillMm: z.number().nonnegative().optional(),
|
|
20
|
+
minAnnularRingMm: z.number().nonnegative().optional(),
|
|
21
|
+
minSolderMaskSliverMm: z.number().nonnegative().optional(),
|
|
22
|
+
solderMaskSliverViolationCount: z.number().int().nonnegative().optional(),
|
|
23
|
+
silkscreenOverPadCount: z.number().int().nonnegative().optional(),
|
|
24
|
+
smtComponentCount: z.number().int().nonnegative().optional(),
|
|
25
|
+
fiducialCount: z.number().int().nonnegative().optional(),
|
|
26
|
+
toolingHoleCount: z.number().int().nonnegative().optional(),
|
|
27
|
+
polarizedComponentCount: z.number().int().nonnegative().optional(),
|
|
28
|
+
polarityMarkCount: z.number().int().nonnegative().optional(),
|
|
29
|
+
componentSpacingViolationCount: z.number().int().nonnegative().optional(),
|
|
30
|
+
criticalNetNames: z.array(z.string()).optional(),
|
|
31
|
+
testPointNets: z.array(z.string()).optional(),
|
|
32
|
+
hasProgrammingHeader: z.boolean().optional(),
|
|
33
|
+
requiresProgrammingHeader: z.boolean().optional(),
|
|
34
|
+
hasFabricationNotes: z.boolean().optional(),
|
|
35
|
+
hasHighVoltage: z.boolean().optional(),
|
|
36
|
+
manufacturingProcess: z.string().optional(),
|
|
37
|
+
hasQuantity: z.boolean().optional(),
|
|
38
|
+
});
|
|
39
|
+
const pcbIssueSchema = z.object({
|
|
40
|
+
code: z.string(),
|
|
41
|
+
message: z.string(),
|
|
42
|
+
severity: z.string(),
|
|
43
|
+
path: z.string().optional(),
|
|
44
|
+
remediationHint: z.string(),
|
|
45
|
+
details: z.record(z.string(), z.unknown()).optional(),
|
|
46
|
+
});
|
|
47
|
+
function mapPcbIssue(issue) {
|
|
48
|
+
return {
|
|
49
|
+
code: issue.code,
|
|
50
|
+
message: issue.message,
|
|
51
|
+
severity: issue.severity,
|
|
52
|
+
path: issue.path,
|
|
53
|
+
remediationHint: issue.remediationHint,
|
|
54
|
+
details: issue.details,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
3
57
|
/**
|
|
4
58
|
* Fetch board data from the live EasyEDA bridge when no explicit boardData is provided.
|
|
5
59
|
* Queries dimensions, layers, and stackup in parallel via Promise.allSettled.
|
|
@@ -58,43 +112,13 @@ function registerPcbConstraintTools(registry, _config) {
|
|
|
58
112
|
},
|
|
59
113
|
inputSchema: z.object({
|
|
60
114
|
projectId: z.string(),
|
|
61
|
-
boardData:
|
|
62
|
-
.object({
|
|
63
|
-
widthMm: z.number().nonnegative().optional(),
|
|
64
|
-
heightMm: z.number().nonnegative().optional(),
|
|
65
|
-
layerCount: z.number().int().nonnegative().optional(),
|
|
66
|
-
hasOutline: z.boolean().optional(),
|
|
67
|
-
mountingHoleCount: z.number().int().nonnegative().optional(),
|
|
68
|
-
hasLayerStack: z.boolean().optional(),
|
|
69
|
-
hasNetClasses: z.boolean().optional(),
|
|
70
|
-
hasClearanceRules: z.boolean().optional(),
|
|
71
|
-
hasKeepoutAreas: z.boolean().optional(),
|
|
72
|
-
hasPlacementZones: z.boolean().optional(),
|
|
73
|
-
hasFiducials: z.boolean().optional(),
|
|
74
|
-
hasTestPads: z.boolean().optional(),
|
|
75
|
-
hasHighVoltage: z.boolean().optional(),
|
|
76
|
-
manufacturingProcess: z.string().optional(),
|
|
77
|
-
hasQuantity: z.boolean().optional(),
|
|
78
|
-
})
|
|
79
|
-
.optional(),
|
|
115
|
+
boardData: pcbBoardDataSchema.optional(),
|
|
80
116
|
}),
|
|
81
117
|
outputSchema: z.object({
|
|
82
118
|
project_id: z.string(),
|
|
83
119
|
valid: z.boolean(),
|
|
84
|
-
errors: z.array(
|
|
85
|
-
|
|
86
|
-
message: z.string(),
|
|
87
|
-
severity: z.string(),
|
|
88
|
-
path: z.string().optional(),
|
|
89
|
-
remediationHint: z.string(),
|
|
90
|
-
})),
|
|
91
|
-
warnings: z.array(z.object({
|
|
92
|
-
code: z.string(),
|
|
93
|
-
message: z.string(),
|
|
94
|
-
severity: z.string(),
|
|
95
|
-
path: z.string().optional(),
|
|
96
|
-
remediationHint: z.string(),
|
|
97
|
-
})),
|
|
120
|
+
errors: z.array(pcbIssueSchema),
|
|
121
|
+
warnings: z.array(pcbIssueSchema),
|
|
98
122
|
summary: z.object({
|
|
99
123
|
totalChecks: z.number(),
|
|
100
124
|
passed: z.number(),
|
|
@@ -118,20 +142,8 @@ function registerPcbConstraintTools(registry, _config) {
|
|
|
118
142
|
return {
|
|
119
143
|
project_id: projectId,
|
|
120
144
|
valid: result.valid,
|
|
121
|
-
errors: result.errors.map(
|
|
122
|
-
|
|
123
|
-
message: e.message,
|
|
124
|
-
severity: e.severity,
|
|
125
|
-
path: e.path,
|
|
126
|
-
remediationHint: e.remediationHint,
|
|
127
|
-
})),
|
|
128
|
-
warnings: result.warnings.map((w) => ({
|
|
129
|
-
code: w.code,
|
|
130
|
-
message: w.message,
|
|
131
|
-
severity: w.severity,
|
|
132
|
-
path: w.path,
|
|
133
|
-
remediationHint: w.remediationHint,
|
|
134
|
-
})),
|
|
145
|
+
errors: result.errors.map(mapPcbIssue),
|
|
146
|
+
warnings: result.warnings.map(mapPcbIssue),
|
|
135
147
|
summary: result.summary,
|
|
136
148
|
};
|
|
137
149
|
}
|
|
@@ -148,6 +160,87 @@ function registerPcbConstraintTools(registry, _config) {
|
|
|
148
160
|
}
|
|
149
161
|
},
|
|
150
162
|
});
|
|
163
|
+
registry.register({
|
|
164
|
+
name: 'easyeda_pcb_production_review',
|
|
165
|
+
title: 'Run PCB production review',
|
|
166
|
+
description: 'Run fabrication, assembly, and testability production review rules for PCB handoff. Reports severity-ranked DFM/DFA/DFT findings with actionable remediation before Gerber export or manufacturing submission.',
|
|
167
|
+
profile: 'core',
|
|
168
|
+
evidence: ['inferred'],
|
|
169
|
+
risk: 'medium',
|
|
170
|
+
confirmWrite: false,
|
|
171
|
+
group: 'pcb-constraints',
|
|
172
|
+
version: '1.0.0',
|
|
173
|
+
annotations: {
|
|
174
|
+
readOnlyHint: true,
|
|
175
|
+
destructiveHint: false,
|
|
176
|
+
idempotentHint: true,
|
|
177
|
+
},
|
|
178
|
+
inputSchema: z.object({
|
|
179
|
+
projectId: z.string(),
|
|
180
|
+
boardData: pcbBoardDataSchema.optional(),
|
|
181
|
+
gateMode: z.enum(['warn', 'block', 'off']).default('warn'),
|
|
182
|
+
}),
|
|
183
|
+
outputSchema: z.object({
|
|
184
|
+
project_id: z.string(),
|
|
185
|
+
passed: z.boolean(),
|
|
186
|
+
blocked: z.boolean(),
|
|
187
|
+
gate_mode: z.string(),
|
|
188
|
+
severity_counts: z.object({
|
|
189
|
+
errors: z.number().int().nonnegative(),
|
|
190
|
+
warnings: z.number().int().nonnegative(),
|
|
191
|
+
total: z.number().int().nonnegative(),
|
|
192
|
+
}),
|
|
193
|
+
errors: z.array(pcbIssueSchema),
|
|
194
|
+
warnings: z.array(pcbIssueSchema),
|
|
195
|
+
summary: z.object({
|
|
196
|
+
totalChecks: z.number(),
|
|
197
|
+
passed: z.number(),
|
|
198
|
+
failed: z.number(),
|
|
199
|
+
notApplicable: z.number(),
|
|
200
|
+
}),
|
|
201
|
+
not_available: z.boolean().optional(),
|
|
202
|
+
}),
|
|
203
|
+
handler: async (ctx, params) => {
|
|
204
|
+
const { projectId, boardData, gateMode } = params;
|
|
205
|
+
try {
|
|
206
|
+
const input = boardData
|
|
207
|
+
? boardData
|
|
208
|
+
: await fetchBoardDataFromBridge(ctx, projectId);
|
|
209
|
+
const result = validatePcbConstraints(input);
|
|
210
|
+
const errors = result.errors.map(mapPcbIssue);
|
|
211
|
+
const warnings = result.warnings.map(mapPcbIssue);
|
|
212
|
+
const mode = gateMode ?? 'warn';
|
|
213
|
+
return {
|
|
214
|
+
project_id: projectId,
|
|
215
|
+
passed: result.valid,
|
|
216
|
+
blocked: mode === 'block' && errors.length > 0,
|
|
217
|
+
gate_mode: mode,
|
|
218
|
+
severity_counts: {
|
|
219
|
+
errors: errors.length,
|
|
220
|
+
warnings: warnings.length,
|
|
221
|
+
total: errors.length + warnings.length,
|
|
222
|
+
},
|
|
223
|
+
errors,
|
|
224
|
+
warnings,
|
|
225
|
+
summary: result.summary,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
return {
|
|
230
|
+
project_id: projectId,
|
|
231
|
+
passed: false,
|
|
232
|
+
blocked: gateMode === 'block',
|
|
233
|
+
gate_mode: gateMode ?? 'warn',
|
|
234
|
+
severity_counts: { errors: 0, warnings: 0, total: 0 },
|
|
235
|
+
errors: [],
|
|
236
|
+
warnings: [],
|
|
237
|
+
summary: { totalChecks: 0, passed: 0, failed: 0, notApplicable: 0 },
|
|
238
|
+
not_available: true,
|
|
239
|
+
error: err instanceof Error ? err.message : String(err),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
});
|
|
151
244
|
registry.register({
|
|
152
245
|
name: 'easyeda_pcb_constraint_report',
|
|
153
246
|
title: 'PCB constraint report',
|
|
@@ -164,25 +257,7 @@ function registerPcbConstraintTools(registry, _config) {
|
|
|
164
257
|
},
|
|
165
258
|
inputSchema: z.object({
|
|
166
259
|
projectId: z.string(),
|
|
167
|
-
boardData:
|
|
168
|
-
.object({
|
|
169
|
-
widthMm: z.number().nonnegative().optional(),
|
|
170
|
-
heightMm: z.number().nonnegative().optional(),
|
|
171
|
-
layerCount: z.number().int().nonnegative().optional(),
|
|
172
|
-
hasOutline: z.boolean().optional(),
|
|
173
|
-
mountingHoleCount: z.number().int().nonnegative().optional(),
|
|
174
|
-
hasLayerStack: z.boolean().optional(),
|
|
175
|
-
hasNetClasses: z.boolean().optional(),
|
|
176
|
-
hasClearanceRules: z.boolean().optional(),
|
|
177
|
-
hasKeepoutAreas: z.boolean().optional(),
|
|
178
|
-
hasPlacementZones: z.boolean().optional(),
|
|
179
|
-
hasFiducials: z.boolean().optional(),
|
|
180
|
-
hasTestPads: z.boolean().optional(),
|
|
181
|
-
hasHighVoltage: z.boolean().optional(),
|
|
182
|
-
manufacturingProcess: z.string().optional(),
|
|
183
|
-
hasQuantity: z.boolean().optional(),
|
|
184
|
-
})
|
|
185
|
-
.optional(),
|
|
260
|
+
boardData: pcbBoardDataSchema.optional(),
|
|
186
261
|
}),
|
|
187
262
|
outputSchema: z.object({
|
|
188
263
|
project_id: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"L1_pcb_constraints.js","sourceRoot":"","sources":["../../src/tools/L1_pcb_constraints.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"L1_pcb_constraints.js","sourceRoot":"","sources":["../../src/tools/L1_pcb_constraints.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED