@deneb-ui/cli 2.0.50 → 2.0.52
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/bin/index.js +12 -0
- package/package.json +2 -2
- package/src/arc/__tests__/arc.test.cjs +219 -10
- package/src/arc/adapters.cjs +19 -0
- package/src/arc/field-paths.cjs +4 -0
- package/src/arc/fivora-contract.cjs +266 -5
- package/src/arc/index.cjs +129 -30
- package/src/arc/learning.cjs +20 -1
- package/src/arc/manifest.cjs +89 -11
- package/src/arc/planner.cjs +10 -6
- package/src/arc/printer.cjs +9 -0
- package/src/arc/residual.cjs +400 -0
- package/src/arc/scanner.cjs +46 -2
- package/src/arc/semantic.cjs +47 -8
- package/src/arc/style-candidates.cjs +2 -1
- package/src/arc/transformer.cjs +335 -20
- package/src/arc/validator.cjs +43 -3
- package/src/arc/version.cjs +1 -1
package/src/arc/validator.cjs
CHANGED
|
@@ -6,6 +6,7 @@ const { parseSource } = require('./ast.cjs');
|
|
|
6
6
|
const { collectDesignSnapshot } = require('./semantic.cjs');
|
|
7
7
|
const { getDeep } = require('./manifest.cjs');
|
|
8
8
|
const { walkFiles, isJsxFile, rel } = require('./fs-utils.cjs');
|
|
9
|
+
const { enumerateContentPaths, isControlOnly, wildcardPath } = require('./fivora-contract.cjs');
|
|
9
10
|
|
|
10
11
|
function validateAstFiles(files) {
|
|
11
12
|
const results = [];
|
|
@@ -143,18 +144,57 @@ function countOverlap(a, b) {
|
|
|
143
144
|
return n;
|
|
144
145
|
}
|
|
145
146
|
|
|
146
|
-
function coverageMetrics({
|
|
147
|
+
function coverageMetrics({
|
|
148
|
+
analyses,
|
|
149
|
+
plan,
|
|
150
|
+
appliedCount,
|
|
151
|
+
skippedDynamic,
|
|
152
|
+
alreadyEditable,
|
|
153
|
+
content,
|
|
154
|
+
controlOnlyPaths,
|
|
155
|
+
pathCoverage,
|
|
156
|
+
uncoveredVisibleText,
|
|
157
|
+
}) {
|
|
147
158
|
const detected = analyses.reduce((n, a) => n + (a.candidates || []).filter((c) => c.kind !== 'decoration' && c.kind !== 'already-editable').length, 0);
|
|
148
159
|
const skippedLow = plan.skipped.filter((s) => s.reason === 'low-confidence' || (s.confidence || 0) < 0.6).length;
|
|
149
160
|
const transformed = appliedCount;
|
|
150
|
-
const
|
|
161
|
+
const transformCoverage = detected === 0 ? 100 : Math.round((transformed / detected) * 1000) / 10;
|
|
162
|
+
|
|
163
|
+
const inventory = content ? enumerateContentPaths(content) : { concreteFields: new Set() };
|
|
164
|
+
const fieldMarkers = pathCoverage?.fieldMarkers || new Set();
|
|
165
|
+
const covers = (markerSet, path) =>
|
|
166
|
+
markerSet.has(path) || [...markerSet].some((marker) => wildcardPath(marker) === wildcardPath(path));
|
|
167
|
+
|
|
168
|
+
let visualRequired = 0;
|
|
169
|
+
let visualCovered = 0;
|
|
170
|
+
for (const path of inventory.concreteFields) {
|
|
171
|
+
if (isControlOnly(path, controlOnlyPaths || [])) continue;
|
|
172
|
+
visualRequired += 1;
|
|
173
|
+
if (covers(fieldMarkers, path)) visualCovered += 1;
|
|
174
|
+
}
|
|
175
|
+
const uncovered = Array.isArray(uncoveredVisibleText) ? uncoveredVisibleText.length : Number(uncoveredVisibleText) || 0;
|
|
176
|
+
let visualCoverage = 100;
|
|
177
|
+
if (visualRequired === 0) {
|
|
178
|
+
visualCoverage = uncovered === 0 ? 100 : Math.max(0, Math.round((1 / (1 + uncovered)) * 1000) / 10);
|
|
179
|
+
} else {
|
|
180
|
+
visualCoverage = Math.round((visualCovered / visualRequired) * 1000) / 10;
|
|
181
|
+
if (uncovered > 0) {
|
|
182
|
+
visualCoverage = Math.min(visualCoverage, Math.round((visualCovered / (visualRequired + uncovered)) * 1000) / 10);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
151
186
|
return {
|
|
152
187
|
detectedEditableCandidates: detected,
|
|
153
188
|
safelyTransformed: transformed,
|
|
154
189
|
alreadyEditable,
|
|
155
190
|
skippedDynamic,
|
|
156
191
|
skippedLowConfidence: skippedLow,
|
|
157
|
-
|
|
192
|
+
transformCoverage: Math.min(100, transformCoverage),
|
|
193
|
+
visualCovered,
|
|
194
|
+
visualRequired,
|
|
195
|
+
uncoveredVisibleText: uncovered,
|
|
196
|
+
visualCoverage: Math.min(100, visualCoverage),
|
|
197
|
+
editableCoverage: Math.min(100, visualCoverage),
|
|
158
198
|
};
|
|
159
199
|
}
|
|
160
200
|
|
package/src/arc/version.cjs
CHANGED