@terra-symposium/standards-quality 0.5.0 → 0.6.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/naming.d.ts +2 -2
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +39 -8
- package/dist/naming.js.map +1 -1
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +17 -11
- package/dist/patterns.js.map +1 -1
- package/dist/runner.d.ts +6 -6
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +58 -13
- package/dist/runner.js.map +1 -1
- package/package.json +1 -1
- package/quality.schema.json +3 -2
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAOH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAoF,cAAc,EAA+B,MAAM,aAAa,CAAC;AAE3K,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,OAAO,EAAmB,qBAAqB,EAAgE,MAAM,oBAAoB,CAAC;AAE1I,OAAO,EAAwD,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjI,OAAO,EAAuB,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAavF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.js
CHANGED
|
@@ -19,7 +19,7 @@ import { documentSrcFile, documentationFindings, duplicateImportFindings, mainta
|
|
|
19
19
|
import { fileURLToPath } from 'node:url';
|
|
20
20
|
import { buildGitHubReport, formatGitHubReport, hasGitHubAuth } from './github-report.js';
|
|
21
21
|
import { fixObjectForwarding, objectForwardingFindings } from './object-forwarding.js';
|
|
22
|
-
import { fixRegexDedup, fixRepeatedClasses, regexFindings, repeatedClassFindings, uiPatternFindings } from './patterns.js';
|
|
22
|
+
import { fixRegexDedup, fixRepeatedClasses, regexFindings, repeatedClassFindings, runTailwindCanonical, uiPatternFindings } from './patterns.js';
|
|
23
23
|
import { qualityProgress } from './progress.js';
|
|
24
24
|
import { securityFindings } from './security.js';
|
|
25
25
|
import { spawnSync } from 'node:child_process';
|
|
@@ -53,6 +53,7 @@ const CLI_CMDS = new Set([
|
|
|
53
53
|
'dead-code',
|
|
54
54
|
'security',
|
|
55
55
|
'repeated-classes',
|
|
56
|
+
'tailwind-canonical',
|
|
56
57
|
'regex-dedup',
|
|
57
58
|
'ui-patterns',
|
|
58
59
|
'imports',
|
|
@@ -1675,6 +1676,25 @@ function runGenericChecks(cfg, analysis) {
|
|
|
1675
1676
|
process.exitCode = 1;
|
|
1676
1677
|
}
|
|
1677
1678
|
}
|
|
1679
|
+
/**
|
|
1680
|
+
* Runs the configured Tailwind canonical-class check and records its CLI report stage.
|
|
1681
|
+
*
|
|
1682
|
+
* @param cfg Quality configuration containing the Tailwind stylesheet and source roots.
|
|
1683
|
+
* @param fix Whether to write Tailwind's canonical class suggestions.
|
|
1684
|
+
*
|
|
1685
|
+
* @return Promise resolving when the diagnostic or autofix completes.
|
|
1686
|
+
*/
|
|
1687
|
+
function runTailwindCanonicalCheck(cfg, fix) {
|
|
1688
|
+
qualityHeader('tailwind-canonical', `${fix ? 'Fixing and checking' : 'Checking'} canonical Tailwind classes`);
|
|
1689
|
+
return runTailwindCanonical(cfg, fix).then(() => undefined, (error) => {
|
|
1690
|
+
const stage = reportStages?.get('tailwind-canonical');
|
|
1691
|
+
if (stage) {
|
|
1692
|
+
stage.status = 'failed';
|
|
1693
|
+
stage.findings = Number(/failed with (\d+) suggestion/.exec(error instanceof Error ? error.message : '')?.[1] ?? 0);
|
|
1694
|
+
}
|
|
1695
|
+
throw error;
|
|
1696
|
+
});
|
|
1697
|
+
}
|
|
1678
1698
|
/**
|
|
1679
1699
|
* Renames safe repository-local declarations and repairs matching references.
|
|
1680
1700
|
*
|
|
@@ -2043,7 +2063,7 @@ function runDocumentation(cfg, opts, args, quiet) {
|
|
|
2043
2063
|
* @param cfg Normalized quality configuration for the current repository.
|
|
2044
2064
|
* @param args CLI arguments to dispatch.
|
|
2045
2065
|
*
|
|
2046
|
-
* @return
|
|
2066
|
+
* @return A completion promise for asynchronous checks, or nothing for synchronous commands.
|
|
2047
2067
|
*/
|
|
2048
2068
|
export function runQualityCli(cfg, args = process.argv.slice(2)) {
|
|
2049
2069
|
validCliArgs(args);
|
|
@@ -2051,17 +2071,13 @@ export function runQualityCli(cfg, args = process.argv.slice(2)) {
|
|
|
2051
2071
|
const reportPath = reportIdx < 0 ? undefined : args[reportIdx + 1];
|
|
2052
2072
|
const cmdArgs = reportIdx < 0 ? args : args.filter((_, i) => i !== reportIdx && i !== reportIdx + 1);
|
|
2053
2073
|
if (!reportPath) {
|
|
2054
|
-
dispatchQualityCli(cfg, cmdArgs);
|
|
2055
|
-
return;
|
|
2074
|
+
return dispatchQualityCli(cfg, cmdArgs);
|
|
2056
2075
|
}
|
|
2057
2076
|
reportStages = new Map();
|
|
2058
2077
|
reportStageName = undefined;
|
|
2059
2078
|
reportGitHubData = undefined;
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
}
|
|
2063
|
-
finally {
|
|
2064
|
-
const executed = [...reportStages.values()].filter((s) => {
|
|
2079
|
+
const writeReport = () => {
|
|
2080
|
+
const executed = [...(reportStages?.values() ?? [])].filter((s) => {
|
|
2065
2081
|
if (s.name.includes('/') || s.name.startsWith('recommendation:'))
|
|
2066
2082
|
return false;
|
|
2067
2083
|
const names = { imports: 'import', naming: 'name', aliases: 'alias', forwarding: 'forward', documentation: 'document', typecheck: 'type' };
|
|
@@ -2072,6 +2088,8 @@ export function runQualityCli(cfg, args = process.argv.slice(2)) {
|
|
|
2072
2088
|
return false;
|
|
2073
2089
|
if (s.name === 'repeated-classes' && !cfg.repeatedClasses)
|
|
2074
2090
|
return false;
|
|
2091
|
+
if (s.name === 'tailwind-canonical' && !cfg.tailwindCanonical)
|
|
2092
|
+
return false;
|
|
2075
2093
|
if (s.name === 'regex-dedup' && !cfg.regexDedup)
|
|
2076
2094
|
return false;
|
|
2077
2095
|
if (s.name === 'ui-patterns' && !cfg.uiPatterns)
|
|
@@ -2091,6 +2109,7 @@ export function runQualityCli(cfg, args = process.argv.slice(2)) {
|
|
|
2091
2109
|
'aliases',
|
|
2092
2110
|
'security',
|
|
2093
2111
|
'repeated-classes',
|
|
2112
|
+
'tailwind-canonical',
|
|
2094
2113
|
'regex-dedup',
|
|
2095
2114
|
'ui-patterns',
|
|
2096
2115
|
'github',
|
|
@@ -2106,13 +2125,25 @@ export function runQualityCli(cfg, args = process.argv.slice(2)) {
|
|
|
2106
2125
|
writeFileSync(resolve(cfg.root, reportPath), `${JSON.stringify(report, null, 2)}\n`);
|
|
2107
2126
|
reportStages = undefined;
|
|
2108
2127
|
reportStageName = undefined;
|
|
2128
|
+
};
|
|
2129
|
+
try {
|
|
2130
|
+
const result = dispatchQualityCli(cfg, cmdArgs);
|
|
2131
|
+
if (result instanceof Promise)
|
|
2132
|
+
return result.finally(writeReport);
|
|
2109
2133
|
}
|
|
2134
|
+
catch (error) {
|
|
2135
|
+
writeReport();
|
|
2136
|
+
throw error;
|
|
2137
|
+
}
|
|
2138
|
+
writeReport();
|
|
2110
2139
|
}
|
|
2111
2140
|
/**
|
|
2112
2141
|
* Route validated arguments to the requested quality command.
|
|
2113
2142
|
*
|
|
2114
2143
|
* @param cfg Normalized repository quality configuration.
|
|
2115
2144
|
* @param args Validated CLI arguments.
|
|
2145
|
+
*
|
|
2146
|
+
* @return A completion promise for asynchronous checks, or nothing for synchronous commands.
|
|
2116
2147
|
*/
|
|
2117
2148
|
function dispatchQualityCli(cfg, args) {
|
|
2118
2149
|
validCliArgs(args);
|
|
@@ -2123,7 +2154,7 @@ function dispatchQualityCli(cfg, args) {
|
|
|
2123
2154
|
}
|
|
2124
2155
|
if (args.includes('--help') || args.includes('-h')) {
|
|
2125
2156
|
console.info('Usage: terra-quality <command> [options]');
|
|
2126
|
-
console.info('Commands include quality, history, github, document, format, lint, knip, types, single-use, dead-code, security, and domain.');
|
|
2157
|
+
console.info('Commands include quality, history, github, document, format, lint, knip, types, single-use, dead-code, tailwind-canonical, security, and domain.');
|
|
2127
2158
|
console.info('Options: --all, --warn, --strict, --skip-commands, --skip-recommendations, --report-json <path>, --repository owner/name; history also accepts --branch <name> and --base-sha <sha>.');
|
|
2128
2159
|
return;
|
|
2129
2160
|
}
|
|
@@ -2136,6 +2167,12 @@ function dispatchQualityCli(cfg, args) {
|
|
|
2136
2167
|
skipRecommendations: args.includes('--skip-recommendations'),
|
|
2137
2168
|
};
|
|
2138
2169
|
const fix = (check) => qualityAutofixEnabled(cfg, check, opts.fix);
|
|
2170
|
+
if (cfg.tailwindCanonical && qualityCheckEnabled(cfg, 'tailwind-canonical') && ['quality', 'quality:all', 'quality:baseline', 'imports', 'quality:patterns', 'types:architecture'].includes(cmd)) {
|
|
2171
|
+
return runTailwindCanonicalCheck(cfg, fix('tailwindCanonical')).then(() => {
|
|
2172
|
+
const checks = { ...cfg.enabledChecks, 'tailwind-canonical': false };
|
|
2173
|
+
return dispatchQualityCli({ ...cfg, enabledChecks: checks }, args);
|
|
2174
|
+
});
|
|
2175
|
+
}
|
|
2139
2176
|
if (cmd === 'github') {
|
|
2140
2177
|
runGitHubCheck(cfg, optVals(args, '--repository'), true, args.includes('--warn'));
|
|
2141
2178
|
return;
|
|
@@ -2187,6 +2224,11 @@ function dispatchQualityCli(cfg, args) {
|
|
|
2187
2224
|
runDeadCodeCmd(cfg, qualityAutofixEnabled(cfg, 'dead-code', opts.fix), opts.all);
|
|
2188
2225
|
return;
|
|
2189
2226
|
}
|
|
2227
|
+
if (cmd === 'tailwind-canonical') {
|
|
2228
|
+
if (!qualityCheckEnabled(cfg, 'tailwind-canonical') || !cfg.tailwindCanonical)
|
|
2229
|
+
return;
|
|
2230
|
+
return runTailwindCanonicalCheck(cfg, fix('tailwindCanonical'));
|
|
2231
|
+
}
|
|
2190
2232
|
if (cmd === 'security' || cmd === 'repeated-classes' || cmd === 'regex-dedup' || cmd === 'ui-patterns') {
|
|
2191
2233
|
if (cmd === 'repeated-classes' && fix('repeatedClasses')) {
|
|
2192
2234
|
const result = fixRepeatedClasses(cfg);
|
|
@@ -2303,7 +2345,7 @@ function dispatchQualityCli(cfg, args) {
|
|
|
2303
2345
|
* @param file Optional path to the quality configuration file.
|
|
2304
2346
|
* @param args CLI arguments passed to the dispatcher.
|
|
2305
2347
|
*
|
|
2306
|
-
* @return
|
|
2348
|
+
* @return A completion promise for asynchronous checks, or nothing for synchronous commands.
|
|
2307
2349
|
*/
|
|
2308
2350
|
export function runQualityFromCfg(file, args = process.argv.slice(2)) {
|
|
2309
2351
|
validCliArgs(args);
|
|
@@ -2331,7 +2373,7 @@ export function runQualityFromCfg(file, args = process.argv.slice(2)) {
|
|
|
2331
2373
|
if (!flatCfg)
|
|
2332
2374
|
throw new Error(`ESLint flat config is required for ${cmd}. Add eslint.config.js, eslint.config.mjs, or eslint.config.ts at ${cfg.root} before running Terra Quality.`);
|
|
2333
2375
|
}
|
|
2334
|
-
runQualityCli(cfg, args);
|
|
2376
|
+
return runQualityCli(cfg, args);
|
|
2335
2377
|
}
|
|
2336
2378
|
/**
|
|
2337
2379
|
* Reject unknown commands and flags before loading configuration or invoking a fixer.
|
|
@@ -2477,5 +2519,8 @@ export function runTypecheck(cfg, args = []) {
|
|
|
2477
2519
|
console.error(` ${result.status ? '✗ failed' : '✓ passed'}`);
|
|
2478
2520
|
}
|
|
2479
2521
|
if (process.argv[1] && realpathSync(resolve(process.argv[1])) === realpathSync(fileURLToPath(import.meta.url)))
|
|
2480
|
-
runQualityFromCfg()
|
|
2522
|
+
Promise.resolve(runQualityFromCfg()).catch((error) => {
|
|
2523
|
+
console.error(error instanceof Error ? error.message : error);
|
|
2524
|
+
process.exitCode = 1;
|
|
2525
|
+
});
|
|
2481
2526
|
//# sourceMappingURL=runner.js.map
|