@buoy-design/core 0.1.3 → 0.1.4
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/LICENSE +21 -0
- package/dist/fix/confidence.d.ts +25 -0
- package/dist/fix/confidence.d.ts.map +1 -0
- package/dist/fix/confidence.js +221 -0
- package/dist/fix/confidence.js.map +1 -0
- package/dist/fix/generator.d.ts +21 -0
- package/dist/fix/generator.d.ts.map +1 -0
- package/dist/fix/generator.js +250 -0
- package/dist/fix/generator.js.map +1 -0
- package/dist/fix/index.d.ts +7 -0
- package/dist/fix/index.d.ts.map +1 -0
- package/dist/fix/index.js +8 -0
- package/dist/fix/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/fix.d.ts +270 -0
- package/dist/models/fix.d.ts.map +1 -0
- package/dist/models/fix.js +97 -0
- package/dist/models/fix.js.map +1 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -1
- package/package.json +10 -10
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Buoy
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Confidence scoring for fix suggestions
|
|
3
|
+
*
|
|
4
|
+
* Determines how confident we are that a fix is correct and safe to apply.
|
|
5
|
+
*/
|
|
6
|
+
import type { DesignToken } from '../models/index.js';
|
|
7
|
+
import type { ConfidenceLevel } from '../models/fix.js';
|
|
8
|
+
export interface ConfidenceResult {
|
|
9
|
+
level: ConfidenceLevel;
|
|
10
|
+
score: number;
|
|
11
|
+
reason: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Score confidence for a color replacement
|
|
15
|
+
*/
|
|
16
|
+
export declare function scoreColorConfidence(original: string, token: DesignToken): ConfidenceResult;
|
|
17
|
+
/**
|
|
18
|
+
* Score confidence for a spacing replacement
|
|
19
|
+
*/
|
|
20
|
+
export declare function scoreSpacingConfidence(original: string, token: DesignToken): ConfidenceResult;
|
|
21
|
+
/**
|
|
22
|
+
* Score confidence for any fix type
|
|
23
|
+
*/
|
|
24
|
+
export declare function scoreConfidence(original: string, token: DesignToken, fixType: string): ConfidenceResult;
|
|
25
|
+
//# sourceMappingURL=confidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../../src/fix/confidence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,GACjB,gBAAgB,CA+DlB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,GACjB,gBAAgB,CAmElB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,GACd,gBAAgB,CAWlB"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Confidence scoring for fix suggestions
|
|
3
|
+
*
|
|
4
|
+
* Determines how confident we are that a fix is correct and safe to apply.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Score confidence for a color replacement
|
|
8
|
+
*/
|
|
9
|
+
export function scoreColorConfidence(original, token) {
|
|
10
|
+
if (token.value.type !== 'color') {
|
|
11
|
+
return { level: 'low', score: 0, reason: 'Token is not a color' };
|
|
12
|
+
}
|
|
13
|
+
const normalizedOriginal = normalizeColor(original);
|
|
14
|
+
const tokenHex = token.value.hex.toLowerCase();
|
|
15
|
+
// Exact match
|
|
16
|
+
if (normalizedOriginal === tokenHex) {
|
|
17
|
+
return {
|
|
18
|
+
level: 'high',
|
|
19
|
+
score: 100,
|
|
20
|
+
reason: `Exact match to ${token.name}`,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
// Calculate color distance
|
|
24
|
+
const distance = colorDistance(normalizedOriginal, tokenHex);
|
|
25
|
+
if (distance === 0) {
|
|
26
|
+
return {
|
|
27
|
+
level: 'high',
|
|
28
|
+
score: 100,
|
|
29
|
+
reason: `Exact match to ${token.name}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (distance <= 5) {
|
|
33
|
+
// Very close colors (imperceptible difference)
|
|
34
|
+
const score = 98 - distance;
|
|
35
|
+
return {
|
|
36
|
+
level: 'high',
|
|
37
|
+
score,
|
|
38
|
+
reason: `Near-exact match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (distance <= 15) {
|
|
42
|
+
// Close colors (slight difference)
|
|
43
|
+
const score = 90 - distance * 2;
|
|
44
|
+
return {
|
|
45
|
+
level: 'medium',
|
|
46
|
+
score: Math.max(70, score),
|
|
47
|
+
reason: `Close match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (distance <= 30) {
|
|
51
|
+
// Somewhat similar colors
|
|
52
|
+
const score = 70 - distance;
|
|
53
|
+
return {
|
|
54
|
+
level: 'low',
|
|
55
|
+
score: Math.max(40, score),
|
|
56
|
+
reason: `Possible match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
level: 'low',
|
|
61
|
+
score: 20,
|
|
62
|
+
reason: `Weak match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Score confidence for a spacing replacement
|
|
67
|
+
*/
|
|
68
|
+
export function scoreSpacingConfidence(original, token) {
|
|
69
|
+
if (token.value.type !== 'spacing') {
|
|
70
|
+
return { level: 'low', score: 0, reason: 'Token is not a spacing value' };
|
|
71
|
+
}
|
|
72
|
+
const originalPx = parseSpacingToPx(original);
|
|
73
|
+
if (originalPx === null) {
|
|
74
|
+
return { level: 'low', score: 0, reason: 'Could not parse original spacing' };
|
|
75
|
+
}
|
|
76
|
+
const tokenPx = convertToPx(token.value.value, token.value.unit);
|
|
77
|
+
// Exact match
|
|
78
|
+
if (originalPx === tokenPx) {
|
|
79
|
+
return {
|
|
80
|
+
level: 'high',
|
|
81
|
+
score: 100,
|
|
82
|
+
reason: `Exact match to ${token.name}`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const diff = Math.abs(originalPx - tokenPx);
|
|
86
|
+
const percentDiff = (diff / Math.max(originalPx, tokenPx, 1)) * 100;
|
|
87
|
+
if (diff <= 1) {
|
|
88
|
+
// Within 1px (likely rounding)
|
|
89
|
+
return {
|
|
90
|
+
level: 'high',
|
|
91
|
+
score: 98,
|
|
92
|
+
reason: `Near-exact match to ${token.name} (${diff}px difference)`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (diff <= 2) {
|
|
96
|
+
// Within 2px
|
|
97
|
+
return {
|
|
98
|
+
level: 'high',
|
|
99
|
+
score: 95,
|
|
100
|
+
reason: `Close match to ${token.name} (${diff}px difference)`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (percentDiff <= 10) {
|
|
104
|
+
// Within 10% difference
|
|
105
|
+
const score = 90 - percentDiff;
|
|
106
|
+
return {
|
|
107
|
+
level: 'medium',
|
|
108
|
+
score: Math.max(70, score),
|
|
109
|
+
reason: `Approximate match to ${token.name} (${diff}px / ${percentDiff.toFixed(0)}% difference)`,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (percentDiff <= 25) {
|
|
113
|
+
// Within 25% difference
|
|
114
|
+
const score = 70 - percentDiff;
|
|
115
|
+
return {
|
|
116
|
+
level: 'low',
|
|
117
|
+
score: Math.max(40, score),
|
|
118
|
+
reason: `Possible match to ${token.name} (${diff}px / ${percentDiff.toFixed(0)}% difference)`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
level: 'low',
|
|
123
|
+
score: 20,
|
|
124
|
+
reason: `Weak match to ${token.name} (${diff}px difference)`,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Score confidence for any fix type
|
|
129
|
+
*/
|
|
130
|
+
export function scoreConfidence(original, token, fixType) {
|
|
131
|
+
switch (fixType) {
|
|
132
|
+
case 'hardcoded-color':
|
|
133
|
+
return scoreColorConfidence(original, token);
|
|
134
|
+
case 'hardcoded-spacing':
|
|
135
|
+
case 'hardcoded-radius':
|
|
136
|
+
case 'hardcoded-font-size':
|
|
137
|
+
return scoreSpacingConfidence(original, token);
|
|
138
|
+
default:
|
|
139
|
+
return { level: 'low', score: 0, reason: 'Unknown fix type' };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Helper functions
|
|
143
|
+
/**
|
|
144
|
+
* Normalize color to lowercase hex
|
|
145
|
+
*/
|
|
146
|
+
function normalizeColor(color) {
|
|
147
|
+
const trimmed = color.trim().toLowerCase();
|
|
148
|
+
// Already hex
|
|
149
|
+
if (/^#[0-9a-f]{6}$/i.test(trimmed)) {
|
|
150
|
+
return trimmed;
|
|
151
|
+
}
|
|
152
|
+
if (/^#[0-9a-f]{3}$/i.test(trimmed)) {
|
|
153
|
+
// Expand shorthand
|
|
154
|
+
return `#${trimmed[1]}${trimmed[1]}${trimmed[2]}${trimmed[2]}${trimmed[3]}${trimmed[3]}`;
|
|
155
|
+
}
|
|
156
|
+
if (/^#[0-9a-f]{8}$/i.test(trimmed)) {
|
|
157
|
+
// Strip alpha
|
|
158
|
+
return trimmed.slice(0, 7);
|
|
159
|
+
}
|
|
160
|
+
// RGB/RGBA
|
|
161
|
+
const rgbMatch = trimmed.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);
|
|
162
|
+
if (rgbMatch) {
|
|
163
|
+
const r = parseInt(rgbMatch[1], 10).toString(16).padStart(2, '0');
|
|
164
|
+
const g = parseInt(rgbMatch[2], 10).toString(16).padStart(2, '0');
|
|
165
|
+
const b = parseInt(rgbMatch[3], 10).toString(16).padStart(2, '0');
|
|
166
|
+
return `#${r}${g}${b}`;
|
|
167
|
+
}
|
|
168
|
+
return trimmed;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Calculate color distance (simplified deltaE)
|
|
172
|
+
*/
|
|
173
|
+
function colorDistance(hex1, hex2) {
|
|
174
|
+
const rgb1 = hexToRgb(hex1);
|
|
175
|
+
const rgb2 = hexToRgb(hex2);
|
|
176
|
+
if (!rgb1 || !rgb2)
|
|
177
|
+
return 100;
|
|
178
|
+
// Simple Euclidean distance in RGB space
|
|
179
|
+
const distance = Math.sqrt(Math.pow(rgb1.r - rgb2.r, 2) +
|
|
180
|
+
Math.pow(rgb1.g - rgb2.g, 2) +
|
|
181
|
+
Math.pow(rgb1.b - rgb2.b, 2));
|
|
182
|
+
// Normalize to 0-100 scale (max distance is ~441)
|
|
183
|
+
return (distance / 441) * 100;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Convert hex to RGB
|
|
187
|
+
*/
|
|
188
|
+
function hexToRgb(hex) {
|
|
189
|
+
const match = hex.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);
|
|
190
|
+
if (!match)
|
|
191
|
+
return null;
|
|
192
|
+
return {
|
|
193
|
+
r: parseInt(match[1], 16),
|
|
194
|
+
g: parseInt(match[2], 16),
|
|
195
|
+
b: parseInt(match[3], 16),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Parse spacing value to pixels
|
|
200
|
+
*/
|
|
201
|
+
function parseSpacingToPx(value) {
|
|
202
|
+
const match = value.trim().match(/^(-?[\d.]+)\s*(px|rem|em)?$/i);
|
|
203
|
+
if (!match)
|
|
204
|
+
return null;
|
|
205
|
+
const num = parseFloat(match[1]);
|
|
206
|
+
const unit = (match[2] || 'px').toLowerCase();
|
|
207
|
+
return convertToPx(num, unit);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Convert value to pixels
|
|
211
|
+
*/
|
|
212
|
+
function convertToPx(value, unit) {
|
|
213
|
+
switch (unit) {
|
|
214
|
+
case 'rem':
|
|
215
|
+
case 'em':
|
|
216
|
+
return value * 16; // Assume 16px base
|
|
217
|
+
default:
|
|
218
|
+
return value;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=confidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../src/fix/confidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fix Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Fix objects from DriftSignals by matching hardcoded values to design tokens.
|
|
5
|
+
*/
|
|
6
|
+
import type { DriftSignal, DesignToken } from '../models/index.js';
|
|
7
|
+
import type { Fix, FixGeneratorOptions, ConfidenceLevel } from '../models/fix.js';
|
|
8
|
+
/**
|
|
9
|
+
* Generate fixes from drift signals
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateFixes(drifts: DriftSignal[], tokens: DesignToken[], options?: FixGeneratorOptions): Fix[];
|
|
12
|
+
/**
|
|
13
|
+
* Get summary of fixes grouped by type and confidence
|
|
14
|
+
*/
|
|
15
|
+
export declare function summarizeFixes(fixes: Fix[]): {
|
|
16
|
+
total: number;
|
|
17
|
+
byConfidence: Record<ConfidenceLevel, number>;
|
|
18
|
+
byType: Record<string, number>;
|
|
19
|
+
highConfidenceCount: number;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/fix/generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAgBlF;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,GAAE,mBAAwB,GAChC,GAAG,EAAE,CAoCP;AA6ND;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAqBA"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fix Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Fix objects from DriftSignals by matching hardcoded values to design tokens.
|
|
5
|
+
*/
|
|
6
|
+
import { createFixId, meetsConfidenceThreshold } from '../models/fix.js';
|
|
7
|
+
import { scoreConfidence } from './confidence.js';
|
|
8
|
+
/**
|
|
9
|
+
* Supported fix types for V1
|
|
10
|
+
*/
|
|
11
|
+
const SUPPORTED_FIX_TYPES = [
|
|
12
|
+
'hardcoded-color',
|
|
13
|
+
'hardcoded-spacing',
|
|
14
|
+
'hardcoded-radius',
|
|
15
|
+
'hardcoded-font-size',
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Generate fixes from drift signals
|
|
19
|
+
*/
|
|
20
|
+
export function generateFixes(drifts, tokens, options = {}) {
|
|
21
|
+
const { types = [...SUPPORTED_FIX_TYPES], minConfidence = 'low', includeFiles = [], excludeFiles = [], } = options;
|
|
22
|
+
const fixes = [];
|
|
23
|
+
for (const drift of drifts) {
|
|
24
|
+
// Filter by drift type
|
|
25
|
+
if (!isSupportedFixType(drift.type))
|
|
26
|
+
continue;
|
|
27
|
+
if (!types.includes(drift.type))
|
|
28
|
+
continue;
|
|
29
|
+
// Filter by file patterns
|
|
30
|
+
const file = drift.source.location?.split(':')[0] || '';
|
|
31
|
+
if (!matchesFilePatterns(file, includeFiles, excludeFiles))
|
|
32
|
+
continue;
|
|
33
|
+
// Try to generate a fix
|
|
34
|
+
const fix = generateFixForDrift(drift, tokens);
|
|
35
|
+
if (!fix)
|
|
36
|
+
continue;
|
|
37
|
+
// Filter by confidence
|
|
38
|
+
if (!meetsConfidenceThreshold(fix.confidence, minConfidence))
|
|
39
|
+
continue;
|
|
40
|
+
fixes.push(fix);
|
|
41
|
+
}
|
|
42
|
+
// Sort by confidence (high first) then by file
|
|
43
|
+
return fixes.sort((a, b) => {
|
|
44
|
+
const confidenceOrder = { high: 0, medium: 1, low: 2 };
|
|
45
|
+
const confDiff = confidenceOrder[a.confidence] - confidenceOrder[b.confidence];
|
|
46
|
+
if (confDiff !== 0)
|
|
47
|
+
return confDiff;
|
|
48
|
+
return a.file.localeCompare(b.file);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate a fix for a single drift signal
|
|
53
|
+
*/
|
|
54
|
+
function generateFixForDrift(drift, tokens) {
|
|
55
|
+
// Extract the hardcoded value from drift details
|
|
56
|
+
const hardcodedValue = getHardcodedValue(drift);
|
|
57
|
+
if (!hardcodedValue)
|
|
58
|
+
return null;
|
|
59
|
+
// Find the best matching token
|
|
60
|
+
const match = findBestTokenMatch(hardcodedValue, drift.type, tokens);
|
|
61
|
+
if (!match)
|
|
62
|
+
return null;
|
|
63
|
+
// Parse location
|
|
64
|
+
const location = parseLocation(drift.source.location);
|
|
65
|
+
if (!location)
|
|
66
|
+
return null;
|
|
67
|
+
// Generate replacement
|
|
68
|
+
const replacement = generateReplacement(match.token, drift.type);
|
|
69
|
+
if (!replacement)
|
|
70
|
+
return null;
|
|
71
|
+
return {
|
|
72
|
+
id: createFixId(location.file, location.line, location.column),
|
|
73
|
+
driftSignalId: drift.id,
|
|
74
|
+
confidence: match.confidence.level,
|
|
75
|
+
confidenceScore: match.confidence.score,
|
|
76
|
+
file: location.file,
|
|
77
|
+
line: location.line,
|
|
78
|
+
column: location.column,
|
|
79
|
+
original: hardcodedValue,
|
|
80
|
+
replacement,
|
|
81
|
+
reason: match.confidence.reason,
|
|
82
|
+
fixType: drift.type,
|
|
83
|
+
tokenName: match.token.name,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if drift type is supported for fixing
|
|
88
|
+
*/
|
|
89
|
+
function isSupportedFixType(type) {
|
|
90
|
+
return SUPPORTED_FIX_TYPES.includes(type);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if file matches include/exclude patterns
|
|
94
|
+
*/
|
|
95
|
+
function matchesFilePatterns(file, includePatterns, excludePatterns) {
|
|
96
|
+
// If no include patterns, include all
|
|
97
|
+
if (includePatterns.length > 0) {
|
|
98
|
+
const included = includePatterns.some((pattern) => simpleGlobMatch(file, pattern));
|
|
99
|
+
if (!included)
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
// Check exclude patterns
|
|
103
|
+
if (excludePatterns.length > 0) {
|
|
104
|
+
const excluded = excludePatterns.some((pattern) => simpleGlobMatch(file, pattern));
|
|
105
|
+
if (excluded)
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Simple glob-like pattern matching
|
|
112
|
+
* Supports * (any chars except /) and ** (any chars including /)
|
|
113
|
+
*/
|
|
114
|
+
function simpleGlobMatch(file, pattern) {
|
|
115
|
+
// Convert glob pattern to regex
|
|
116
|
+
const regexStr = pattern
|
|
117
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape special regex chars
|
|
118
|
+
.replace(/\*\*/g, '{{GLOBSTAR}}') // Placeholder for **
|
|
119
|
+
.replace(/\*/g, '[^/]*') // * matches anything except /
|
|
120
|
+
.replace(/{{GLOBSTAR}}/g, '.*'); // ** matches anything including /
|
|
121
|
+
const regex = new RegExp(`^${regexStr}$|/${regexStr}$|^${regexStr}/`);
|
|
122
|
+
return regex.test(file);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Extract hardcoded value from drift signal
|
|
126
|
+
*/
|
|
127
|
+
function getHardcodedValue(drift) {
|
|
128
|
+
// Check details.actual first (the hardcoded value found)
|
|
129
|
+
if (drift.details?.actual && typeof drift.details.actual === 'string') {
|
|
130
|
+
return drift.details.actual;
|
|
131
|
+
}
|
|
132
|
+
// Try to extract from message
|
|
133
|
+
// Common patterns: "Found hardcoded color #ffffff", "value '#3b82f6'"
|
|
134
|
+
const hexMatch = drift.message.match(/#[0-9a-fA-F]{3,8}\b/);
|
|
135
|
+
if (hexMatch)
|
|
136
|
+
return hexMatch[0];
|
|
137
|
+
const rgbMatch = drift.message.match(/rgba?\s*\([^)]+\)/i);
|
|
138
|
+
if (rgbMatch)
|
|
139
|
+
return rgbMatch[0];
|
|
140
|
+
const pxMatch = drift.message.match(/\b\d+(?:\.\d+)?px\b/);
|
|
141
|
+
if (pxMatch)
|
|
142
|
+
return pxMatch[0];
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Find the best matching token for a hardcoded value
|
|
147
|
+
*/
|
|
148
|
+
function findBestTokenMatch(value, driftType, tokens) {
|
|
149
|
+
const relevantTokens = filterTokensByType(tokens, driftType);
|
|
150
|
+
if (relevantTokens.length === 0)
|
|
151
|
+
return null;
|
|
152
|
+
let bestMatch = null;
|
|
153
|
+
for (const token of relevantTokens) {
|
|
154
|
+
const confidence = scoreConfidence(value, token, driftType);
|
|
155
|
+
if (!bestMatch || confidence.score > bestMatch.confidence.score) {
|
|
156
|
+
bestMatch = { token, confidence };
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Only return if we have a reasonable match
|
|
160
|
+
if (bestMatch && bestMatch.confidence.score >= 40) {
|
|
161
|
+
return bestMatch;
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Filter tokens by drift type
|
|
167
|
+
*/
|
|
168
|
+
function filterTokensByType(tokens, driftType) {
|
|
169
|
+
switch (driftType) {
|
|
170
|
+
case 'hardcoded-color':
|
|
171
|
+
return tokens.filter((t) => t.category === 'color');
|
|
172
|
+
case 'hardcoded-spacing':
|
|
173
|
+
case 'hardcoded-radius':
|
|
174
|
+
return tokens.filter((t) => t.category === 'spacing');
|
|
175
|
+
case 'hardcoded-font-size':
|
|
176
|
+
return tokens.filter((t) => t.category === 'typography' || t.category === 'sizing');
|
|
177
|
+
default:
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Generate replacement string for a token
|
|
183
|
+
*/
|
|
184
|
+
function generateReplacement(token, driftType) {
|
|
185
|
+
// Default to CSS custom property
|
|
186
|
+
const cssVarName = tokenToCssVar(token.name);
|
|
187
|
+
switch (driftType) {
|
|
188
|
+
case 'hardcoded-color':
|
|
189
|
+
return `var(${cssVarName})`;
|
|
190
|
+
case 'hardcoded-spacing':
|
|
191
|
+
case 'hardcoded-radius':
|
|
192
|
+
case 'hardcoded-font-size':
|
|
193
|
+
return `var(${cssVarName})`;
|
|
194
|
+
default:
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Convert token name to CSS custom property name
|
|
200
|
+
*/
|
|
201
|
+
function tokenToCssVar(name) {
|
|
202
|
+
// If already has -- prefix, use as-is
|
|
203
|
+
if (name.startsWith('--'))
|
|
204
|
+
return name;
|
|
205
|
+
// Convert camelCase or dot notation to kebab-case
|
|
206
|
+
const kebab = name
|
|
207
|
+
.replace(/\./g, '-')
|
|
208
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
209
|
+
.toLowerCase();
|
|
210
|
+
return `--${kebab}`;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Parse location string into file, line, column
|
|
214
|
+
*/
|
|
215
|
+
function parseLocation(location) {
|
|
216
|
+
if (!location)
|
|
217
|
+
return null;
|
|
218
|
+
// Format: "file/path.tsx:10:5" or "file/path.tsx:10"
|
|
219
|
+
const match = location.match(/^(.+?):(\d+)(?::(\d+))?$/);
|
|
220
|
+
if (!match)
|
|
221
|
+
return null;
|
|
222
|
+
return {
|
|
223
|
+
file: match[1],
|
|
224
|
+
line: parseInt(match[2], 10),
|
|
225
|
+
column: match[3] ? parseInt(match[3], 10) : 1,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get summary of fixes grouped by type and confidence
|
|
230
|
+
*/
|
|
231
|
+
export function summarizeFixes(fixes) {
|
|
232
|
+
const byConfidence = {
|
|
233
|
+
high: 0,
|
|
234
|
+
medium: 0,
|
|
235
|
+
low: 0,
|
|
236
|
+
};
|
|
237
|
+
const byType = {};
|
|
238
|
+
for (const fix of fixes) {
|
|
239
|
+
const conf = fix.confidence;
|
|
240
|
+
byConfidence[conf] = (byConfidence[conf] || 0) + 1;
|
|
241
|
+
byType[fix.fixType] = (byType[fix.fixType] || 0) + 1;
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
total: fixes.length,
|
|
245
|
+
byConfidence,
|
|
246
|
+
byType,
|
|
247
|
+
highConfidenceCount: byConfidence.high || 0,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/fix/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fix module - generates and applies fixes for drift signals
|
|
3
|
+
*/
|
|
4
|
+
export { scoreConfidence, scoreColorConfidence, scoreSpacingConfidence } from './confidence.js';
|
|
5
|
+
export type { ConfidenceResult } from './confidence.js';
|
|
6
|
+
export { generateFixes, summarizeFixes } from './generator.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChG,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fix module - generates and applies fixes for drift signals
|
|
3
|
+
*/
|
|
4
|
+
// Re-export confidence scoring
|
|
5
|
+
export { scoreConfidence, scoreColorConfidence, scoreSpacingConfidence } from './confidence.js';
|
|
6
|
+
// Re-export fix generator
|
|
7
|
+
export { generateFixes, summarizeFixes } from './generator.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,cAAc,mBAAmB,CAAC;AAElC,qBAAqB;AACrB,cAAc,qBAAqB,CAAC;AAEpC,uBAAuB;AACvB,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,yBAAyB,CAAC;AAExC,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AAEnC,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAElC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,cAAc,mBAAmB,CAAC;AAElC,qBAAqB;AACrB,cAAc,qBAAqB,CAAC;AAEpC,uBAAuB;AACvB,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,yBAAyB,CAAC;AAExC,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AAEnC,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAElC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,gBAAgB;AAChB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Confidence level for a fix
|
|
4
|
+
*/
|
|
5
|
+
export declare const ConfidenceLevelSchema: z.ZodEnum<["high", "medium", "low"]>;
|
|
6
|
+
export type ConfidenceLevel = z.infer<typeof ConfidenceLevelSchema>;
|
|
7
|
+
/**
|
|
8
|
+
* A proposed fix for a drift signal
|
|
9
|
+
*/
|
|
10
|
+
export declare const FixSchema: z.ZodObject<{
|
|
11
|
+
/** Unique identifier for this fix */
|
|
12
|
+
id: z.ZodString;
|
|
13
|
+
/** The drift signal this fix addresses */
|
|
14
|
+
driftSignalId: z.ZodString;
|
|
15
|
+
/** Confidence level (high = 95%+, medium = 70-94%, low = <70%) */
|
|
16
|
+
confidence: z.ZodEnum<["high", "medium", "low"]>;
|
|
17
|
+
/** Numeric confidence score (0-100) */
|
|
18
|
+
confidenceScore: z.ZodNumber;
|
|
19
|
+
/** File path where the fix will be applied */
|
|
20
|
+
file: z.ZodString;
|
|
21
|
+
/** Line number (1-indexed) */
|
|
22
|
+
line: z.ZodNumber;
|
|
23
|
+
/** Column number (1-indexed) */
|
|
24
|
+
column: z.ZodNumber;
|
|
25
|
+
/** Original text to replace */
|
|
26
|
+
original: z.ZodString;
|
|
27
|
+
/** Replacement text */
|
|
28
|
+
replacement: z.ZodString;
|
|
29
|
+
/** Human-readable reason for this fix */
|
|
30
|
+
reason: z.ZodString;
|
|
31
|
+
/** The type of fix */
|
|
32
|
+
fixType: z.ZodEnum<["hardcoded-color", "hardcoded-spacing", "hardcoded-radius", "hardcoded-font-size"]>;
|
|
33
|
+
/** Token name being applied (if applicable) */
|
|
34
|
+
tokenName: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
line: number;
|
|
37
|
+
id: string;
|
|
38
|
+
reason: string;
|
|
39
|
+
driftSignalId: string;
|
|
40
|
+
confidence: "high" | "medium" | "low";
|
|
41
|
+
confidenceScore: number;
|
|
42
|
+
file: string;
|
|
43
|
+
column: number;
|
|
44
|
+
original: string;
|
|
45
|
+
replacement: string;
|
|
46
|
+
fixType: "hardcoded-color" | "hardcoded-spacing" | "hardcoded-radius" | "hardcoded-font-size";
|
|
47
|
+
tokenName?: string | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
line: number;
|
|
50
|
+
id: string;
|
|
51
|
+
reason: string;
|
|
52
|
+
driftSignalId: string;
|
|
53
|
+
confidence: "high" | "medium" | "low";
|
|
54
|
+
confidenceScore: number;
|
|
55
|
+
file: string;
|
|
56
|
+
column: number;
|
|
57
|
+
original: string;
|
|
58
|
+
replacement: string;
|
|
59
|
+
fixType: "hardcoded-color" | "hardcoded-spacing" | "hardcoded-radius" | "hardcoded-font-size";
|
|
60
|
+
tokenName?: string | undefined;
|
|
61
|
+
}>;
|
|
62
|
+
export type Fix = z.infer<typeof FixSchema>;
|
|
63
|
+
/**
|
|
64
|
+
* Result of applying a single fix
|
|
65
|
+
*/
|
|
66
|
+
export declare const FixResultSchema: z.ZodObject<{
|
|
67
|
+
fixId: z.ZodString;
|
|
68
|
+
status: z.ZodEnum<["applied", "skipped", "failed"]>;
|
|
69
|
+
error: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
status: "applied" | "skipped" | "failed";
|
|
72
|
+
fixId: string;
|
|
73
|
+
error?: string | undefined;
|
|
74
|
+
}, {
|
|
75
|
+
status: "applied" | "skipped" | "failed";
|
|
76
|
+
fixId: string;
|
|
77
|
+
error?: string | undefined;
|
|
78
|
+
}>;
|
|
79
|
+
export type FixResult = z.infer<typeof FixResultSchema>;
|
|
80
|
+
/**
|
|
81
|
+
* A fix session tracks all fixes applied in one run
|
|
82
|
+
*/
|
|
83
|
+
export declare const FixSessionSchema: z.ZodObject<{
|
|
84
|
+
/** Unique session identifier */
|
|
85
|
+
id: z.ZodString;
|
|
86
|
+
/** When the session started */
|
|
87
|
+
startedAt: z.ZodDate;
|
|
88
|
+
/** When the session completed */
|
|
89
|
+
completedAt: z.ZodOptional<z.ZodDate>;
|
|
90
|
+
/** All fixes that were considered */
|
|
91
|
+
fixes: z.ZodArray<z.ZodObject<{
|
|
92
|
+
/** Unique identifier for this fix */
|
|
93
|
+
id: z.ZodString;
|
|
94
|
+
/** The drift signal this fix addresses */
|
|
95
|
+
driftSignalId: z.ZodString;
|
|
96
|
+
/** Confidence level (high = 95%+, medium = 70-94%, low = <70%) */
|
|
97
|
+
confidence: z.ZodEnum<["high", "medium", "low"]>;
|
|
98
|
+
/** Numeric confidence score (0-100) */
|
|
99
|
+
confidenceScore: z.ZodNumber;
|
|
100
|
+
/** File path where the fix will be applied */
|
|
101
|
+
file: z.ZodString;
|
|
102
|
+
/** Line number (1-indexed) */
|
|
103
|
+
line: z.ZodNumber;
|
|
104
|
+
/** Column number (1-indexed) */
|
|
105
|
+
column: z.ZodNumber;
|
|
106
|
+
/** Original text to replace */
|
|
107
|
+
original: z.ZodString;
|
|
108
|
+
/** Replacement text */
|
|
109
|
+
replacement: z.ZodString;
|
|
110
|
+
/** Human-readable reason for this fix */
|
|
111
|
+
reason: z.ZodString;
|
|
112
|
+
/** The type of fix */
|
|
113
|
+
fixType: z.ZodEnum<["hardcoded-color", "hardcoded-spacing", "hardcoded-radius", "hardcoded-font-size"]>;
|
|
114
|
+
/** Token name being applied (if applicable) */
|
|
115
|
+
tokenName: z.ZodOptional<z.ZodString>;
|
|
116
|
+
}, "strip", z.ZodTypeAny, {
|
|
117
|
+
line: number;
|
|
118
|
+
id: string;
|
|
119
|
+
reason: string;
|
|
120
|
+
driftSignalId: string;
|
|
121
|
+
confidence: "high" | "medium" | "low";
|
|
122
|
+
confidenceScore: number;
|
|
123
|
+
file: string;
|
|
124
|
+
column: number;
|
|
125
|
+
original: string;
|
|
126
|
+
replacement: string;
|
|
127
|
+
fixType: "hardcoded-color" | "hardcoded-spacing" | "hardcoded-radius" | "hardcoded-font-size";
|
|
128
|
+
tokenName?: string | undefined;
|
|
129
|
+
}, {
|
|
130
|
+
line: number;
|
|
131
|
+
id: string;
|
|
132
|
+
reason: string;
|
|
133
|
+
driftSignalId: string;
|
|
134
|
+
confidence: "high" | "medium" | "low";
|
|
135
|
+
confidenceScore: number;
|
|
136
|
+
file: string;
|
|
137
|
+
column: number;
|
|
138
|
+
original: string;
|
|
139
|
+
replacement: string;
|
|
140
|
+
fixType: "hardcoded-color" | "hardcoded-spacing" | "hardcoded-radius" | "hardcoded-font-size";
|
|
141
|
+
tokenName?: string | undefined;
|
|
142
|
+
}>, "many">;
|
|
143
|
+
/** Results for each fix */
|
|
144
|
+
results: z.ZodArray<z.ZodObject<{
|
|
145
|
+
fixId: z.ZodString;
|
|
146
|
+
status: z.ZodEnum<["applied", "skipped", "failed"]>;
|
|
147
|
+
error: z.ZodOptional<z.ZodString>;
|
|
148
|
+
}, "strip", z.ZodTypeAny, {
|
|
149
|
+
status: "applied" | "skipped" | "failed";
|
|
150
|
+
fixId: string;
|
|
151
|
+
error?: string | undefined;
|
|
152
|
+
}, {
|
|
153
|
+
status: "applied" | "skipped" | "failed";
|
|
154
|
+
fixId: string;
|
|
155
|
+
error?: string | undefined;
|
|
156
|
+
}>, "many">;
|
|
157
|
+
/** Summary statistics */
|
|
158
|
+
summary: z.ZodObject<{
|
|
159
|
+
total: z.ZodNumber;
|
|
160
|
+
applied: z.ZodNumber;
|
|
161
|
+
skipped: z.ZodNumber;
|
|
162
|
+
failed: z.ZodNumber;
|
|
163
|
+
}, "strip", z.ZodTypeAny, {
|
|
164
|
+
applied: number;
|
|
165
|
+
skipped: number;
|
|
166
|
+
failed: number;
|
|
167
|
+
total: number;
|
|
168
|
+
}, {
|
|
169
|
+
applied: number;
|
|
170
|
+
skipped: number;
|
|
171
|
+
failed: number;
|
|
172
|
+
total: number;
|
|
173
|
+
}>;
|
|
174
|
+
}, "strip", z.ZodTypeAny, {
|
|
175
|
+
id: string;
|
|
176
|
+
startedAt: Date;
|
|
177
|
+
fixes: {
|
|
178
|
+
line: number;
|
|
179
|
+
id: string;
|
|
180
|
+
reason: string;
|
|
181
|
+
driftSignalId: string;
|
|
182
|
+
confidence: "high" | "medium" | "low";
|
|
183
|
+
confidenceScore: number;
|
|
184
|
+
file: string;
|
|
185
|
+
column: number;
|
|
186
|
+
original: string;
|
|
187
|
+
replacement: string;
|
|
188
|
+
fixType: "hardcoded-color" | "hardcoded-spacing" | "hardcoded-radius" | "hardcoded-font-size";
|
|
189
|
+
tokenName?: string | undefined;
|
|
190
|
+
}[];
|
|
191
|
+
results: {
|
|
192
|
+
status: "applied" | "skipped" | "failed";
|
|
193
|
+
fixId: string;
|
|
194
|
+
error?: string | undefined;
|
|
195
|
+
}[];
|
|
196
|
+
summary: {
|
|
197
|
+
applied: number;
|
|
198
|
+
skipped: number;
|
|
199
|
+
failed: number;
|
|
200
|
+
total: number;
|
|
201
|
+
};
|
|
202
|
+
completedAt?: Date | undefined;
|
|
203
|
+
}, {
|
|
204
|
+
id: string;
|
|
205
|
+
startedAt: Date;
|
|
206
|
+
fixes: {
|
|
207
|
+
line: number;
|
|
208
|
+
id: string;
|
|
209
|
+
reason: string;
|
|
210
|
+
driftSignalId: string;
|
|
211
|
+
confidence: "high" | "medium" | "low";
|
|
212
|
+
confidenceScore: number;
|
|
213
|
+
file: string;
|
|
214
|
+
column: number;
|
|
215
|
+
original: string;
|
|
216
|
+
replacement: string;
|
|
217
|
+
fixType: "hardcoded-color" | "hardcoded-spacing" | "hardcoded-radius" | "hardcoded-font-size";
|
|
218
|
+
tokenName?: string | undefined;
|
|
219
|
+
}[];
|
|
220
|
+
results: {
|
|
221
|
+
status: "applied" | "skipped" | "failed";
|
|
222
|
+
fixId: string;
|
|
223
|
+
error?: string | undefined;
|
|
224
|
+
}[];
|
|
225
|
+
summary: {
|
|
226
|
+
applied: number;
|
|
227
|
+
skipped: number;
|
|
228
|
+
failed: number;
|
|
229
|
+
total: number;
|
|
230
|
+
};
|
|
231
|
+
completedAt?: Date | undefined;
|
|
232
|
+
}>;
|
|
233
|
+
export type FixSession = z.infer<typeof FixSessionSchema>;
|
|
234
|
+
/**
|
|
235
|
+
* Options for generating fixes
|
|
236
|
+
*/
|
|
237
|
+
export interface FixGeneratorOptions {
|
|
238
|
+
/** Filter to specific fix types */
|
|
239
|
+
types?: Array<Fix['fixType']>;
|
|
240
|
+
/** Minimum confidence level to include */
|
|
241
|
+
minConfidence?: ConfidenceLevel;
|
|
242
|
+
/** File glob patterns to include */
|
|
243
|
+
includeFiles?: string[];
|
|
244
|
+
/** File glob patterns to exclude */
|
|
245
|
+
excludeFiles?: string[];
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Options for applying fixes
|
|
249
|
+
*/
|
|
250
|
+
export interface FixApplyOptions {
|
|
251
|
+
/** Only show what would be done, don't modify files */
|
|
252
|
+
dryRun?: boolean;
|
|
253
|
+
/** Create .bak backup files before modifying */
|
|
254
|
+
backup?: boolean;
|
|
255
|
+
/** Minimum confidence level to apply */
|
|
256
|
+
minConfidence?: ConfidenceLevel;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Create a unique fix ID
|
|
260
|
+
*/
|
|
261
|
+
export declare function createFixId(file: string, line: number, column: number): string;
|
|
262
|
+
/**
|
|
263
|
+
* Get confidence level from numeric score
|
|
264
|
+
*/
|
|
265
|
+
export declare function getConfidenceLevel(score: number): ConfidenceLevel;
|
|
266
|
+
/**
|
|
267
|
+
* Check if a confidence level meets the minimum threshold
|
|
268
|
+
*/
|
|
269
|
+
export declare function meetsConfidenceThreshold(level: ConfidenceLevel, minimum: ConfidenceLevel): boolean;
|
|
270
|
+
//# sourceMappingURL=fix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/models/fix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,qBAAqB,sCAAoC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB,qCAAqC;;IAGrC,0CAA0C;;IAG1C,kEAAkE;;IAGlE,uCAAuC;;IAGvC,8CAA8C;;IAG9C,8BAA8B;;IAG9B,gCAAgC;;IAGhC,+BAA+B;;IAG/B,uBAAuB;;IAGvB,yCAAyC;;IAGzC,sBAAsB;;IAQtB,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE/C,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,gCAAgC;;IAGhC,+BAA+B;;IAG/B,iCAAiC;;IAGjC,qCAAqC;;QApErC,qCAAqC;;QAGrC,0CAA0C;;QAG1C,kEAAkE;;QAGlE,uCAAuC;;QAGvC,8CAA8C;;QAG9C,8BAA8B;;QAG9B,gCAAgC;;QAGhC,+BAA+B;;QAG/B,uBAAuB;;QAGvB,yCAAyC;;QAGzC,sBAAsB;;QAQtB,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiC/C,2BAA2B;;;;;;;;;;;;;;IAG3B,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,eAAe,CAAC;IAEhC,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,wCAAwC;IACxC,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAIjE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAOT"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Confidence level for a fix
|
|
4
|
+
*/
|
|
5
|
+
export const ConfidenceLevelSchema = z.enum(['high', 'medium', 'low']);
|
|
6
|
+
/**
|
|
7
|
+
* A proposed fix for a drift signal
|
|
8
|
+
*/
|
|
9
|
+
export const FixSchema = z.object({
|
|
10
|
+
/** Unique identifier for this fix */
|
|
11
|
+
id: z.string(),
|
|
12
|
+
/** The drift signal this fix addresses */
|
|
13
|
+
driftSignalId: z.string(),
|
|
14
|
+
/** Confidence level (high = 95%+, medium = 70-94%, low = <70%) */
|
|
15
|
+
confidence: ConfidenceLevelSchema,
|
|
16
|
+
/** Numeric confidence score (0-100) */
|
|
17
|
+
confidenceScore: z.number().min(0).max(100),
|
|
18
|
+
/** File path where the fix will be applied */
|
|
19
|
+
file: z.string(),
|
|
20
|
+
/** Line number (1-indexed) */
|
|
21
|
+
line: z.number().int().positive(),
|
|
22
|
+
/** Column number (1-indexed) */
|
|
23
|
+
column: z.number().int().positive(),
|
|
24
|
+
/** Original text to replace */
|
|
25
|
+
original: z.string(),
|
|
26
|
+
/** Replacement text */
|
|
27
|
+
replacement: z.string(),
|
|
28
|
+
/** Human-readable reason for this fix */
|
|
29
|
+
reason: z.string(),
|
|
30
|
+
/** The type of fix */
|
|
31
|
+
fixType: z.enum([
|
|
32
|
+
'hardcoded-color',
|
|
33
|
+
'hardcoded-spacing',
|
|
34
|
+
'hardcoded-radius',
|
|
35
|
+
'hardcoded-font-size',
|
|
36
|
+
]),
|
|
37
|
+
/** Token name being applied (if applicable) */
|
|
38
|
+
tokenName: z.string().optional(),
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Result of applying a single fix
|
|
42
|
+
*/
|
|
43
|
+
export const FixResultSchema = z.object({
|
|
44
|
+
fixId: z.string(),
|
|
45
|
+
status: z.enum(['applied', 'skipped', 'failed']),
|
|
46
|
+
error: z.string().optional(),
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* A fix session tracks all fixes applied in one run
|
|
50
|
+
*/
|
|
51
|
+
export const FixSessionSchema = z.object({
|
|
52
|
+
/** Unique session identifier */
|
|
53
|
+
id: z.string(),
|
|
54
|
+
/** When the session started */
|
|
55
|
+
startedAt: z.date(),
|
|
56
|
+
/** When the session completed */
|
|
57
|
+
completedAt: z.date().optional(),
|
|
58
|
+
/** All fixes that were considered */
|
|
59
|
+
fixes: z.array(FixSchema),
|
|
60
|
+
/** Results for each fix */
|
|
61
|
+
results: z.array(FixResultSchema),
|
|
62
|
+
/** Summary statistics */
|
|
63
|
+
summary: z.object({
|
|
64
|
+
total: z.number(),
|
|
65
|
+
applied: z.number(),
|
|
66
|
+
skipped: z.number(),
|
|
67
|
+
failed: z.number(),
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Create a unique fix ID
|
|
72
|
+
*/
|
|
73
|
+
export function createFixId(file, line, column) {
|
|
74
|
+
return `fix:${file}:${line}:${column}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get confidence level from numeric score
|
|
78
|
+
*/
|
|
79
|
+
export function getConfidenceLevel(score) {
|
|
80
|
+
if (score >= 95)
|
|
81
|
+
return 'high';
|
|
82
|
+
if (score >= 70)
|
|
83
|
+
return 'medium';
|
|
84
|
+
return 'low';
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a confidence level meets the minimum threshold
|
|
88
|
+
*/
|
|
89
|
+
export function meetsConfidenceThreshold(level, minimum) {
|
|
90
|
+
const order = {
|
|
91
|
+
low: 0,
|
|
92
|
+
medium: 1,
|
|
93
|
+
high: 2,
|
|
94
|
+
};
|
|
95
|
+
return order[level] >= order[minimum];
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=fix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/models/fix.ts"],"names":[],"mappings":"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"}
|
package/dist/models/index.d.ts
CHANGED
|
@@ -6,4 +6,6 @@ export { DriftSignalSchema, DriftTypeSchema, SeveritySchema, DriftSourceSchema,
|
|
|
6
6
|
export type { DriftSignal, DriftType, Severity, DriftSource, GitContext, DriftDetails, DriftResolution, DriftResolutionType, } from './drift.js';
|
|
7
7
|
export { IntentSchema, IntentDecisionSchema, IntentDecisionTypeSchema, IntentStatusSchema, IntentAttachmentSchema, IntentAttachmentTypeSchema, IntentContextSchema, createIntentId, isIntentExpired, intentApplies, DECISION_TYPE_LABELS, STATUS_LABELS, } from './intent.js';
|
|
8
8
|
export type { Intent, IntentDecision, IntentDecisionType, IntentStatus, IntentAttachment, IntentAttachmentType, IntentContext, } from './intent.js';
|
|
9
|
+
export { FixSchema, FixResultSchema, FixSessionSchema, ConfidenceLevelSchema, createFixId, getConfidenceLevel, meetsConfidenceThreshold, } from './fix.js';
|
|
10
|
+
export type { Fix, FixResult, FixSession, ConfidenceLevel, FixGeneratorOptions, FixApplyOptions, } from './fix.js';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,GAAG,EACH,SAAS,EACT,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,eAAe,GAChB,MAAM,UAAU,CAAC"}
|
package/dist/models/index.js
CHANGED
|
@@ -6,4 +6,6 @@ export { DesignTokenSchema, TokenValueSchema, ColorValueSchema, SpacingValueSche
|
|
|
6
6
|
export { DriftSignalSchema, DriftTypeSchema, SeveritySchema, DriftSourceSchema, GitContextSchema, DriftDetailsSchema, DriftResolutionSchema, DriftResolutionTypeSchema, createDriftId, createStableDriftId, getSeverityWeight, getDefaultSeverity, DRIFT_TYPE_LABELS, DRIFT_TYPE_DESCRIPTIONS, SEVERITY_LABELS, } from './drift.js';
|
|
7
7
|
// Intent models
|
|
8
8
|
export { IntentSchema, IntentDecisionSchema, IntentDecisionTypeSchema, IntentStatusSchema, IntentAttachmentSchema, IntentAttachmentTypeSchema, IntentContextSchema, createIntentId, isIntentExpired, intentApplies, DECISION_TYPE_LABELS, STATUS_LABELS, } from './intent.js';
|
|
9
|
+
// Fix models
|
|
10
|
+
export { FixSchema, FixResultSchema, FixSessionSchema, ConfidenceLevelSchema, createFixId, getConfidenceLevel, meetsConfidenceThreshold, } from './fix.js';
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
package/dist/models/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAkBxB,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAqBpB,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAapB,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAkBxB,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAqBpB,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAapB,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAYrB,aAAa;AACb,OAAO,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-design/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Core domain models and analysis for Buoy design drift detection",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,14 +40,6 @@
|
|
|
40
40
|
"import": "./dist/analysis/index.js"
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build": "tsc",
|
|
45
|
-
"dev": "tsc --watch",
|
|
46
|
-
"typecheck": "tsc --noEmit",
|
|
47
|
-
"clean": "rm -rf dist",
|
|
48
|
-
"test": "vitest run",
|
|
49
|
-
"test:watch": "vitest"
|
|
50
|
-
},
|
|
51
43
|
"dependencies": {
|
|
52
44
|
"glob": "^11.0.0",
|
|
53
45
|
"graphology": "^0.26.0",
|
|
@@ -57,5 +49,13 @@
|
|
|
57
49
|
},
|
|
58
50
|
"devDependencies": {
|
|
59
51
|
"typescript": "^5.7.2"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "tsc",
|
|
55
|
+
"dev": "tsc --watch",
|
|
56
|
+
"typecheck": "tsc --noEmit",
|
|
57
|
+
"clean": "rm -rf dist",
|
|
58
|
+
"test": "vitest run",
|
|
59
|
+
"test:watch": "vitest"
|
|
60
60
|
}
|
|
61
|
-
}
|
|
61
|
+
}
|