From eee4d2ed39b3685ce0c33f7ac2ea637a6e594876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Chalk?= Date: Tue, 23 Sep 2025 15:50:36 +0200 Subject: [PATCH] feat(utils): export loose autocomplete type helper --- packages/utils/src/index.ts | 3 ++- packages/utils/src/lib/types.ts | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 099273815..c255cd2cc 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -104,7 +104,7 @@ export { } from './lib/reports/generate-md-reports-diff.js'; export { loadReport } from './lib/reports/load-report.js'; export { logStdoutSummary } from './lib/reports/log-stdout-summary.js'; -export { scoreReport, scoreAuditsWithTarget } from './lib/reports/scoring.js'; +export { scoreAuditsWithTarget, scoreReport } from './lib/reports/scoring.js'; export { sortReport } from './lib/reports/sorting.js'; export type { ScoredCategoryConfig, @@ -142,6 +142,7 @@ export type { ExtractArray, ExtractArrays, ItemOrArray, + LooseAutocomplete, Prettify, WithRequired, } from './lib/types.js'; diff --git a/packages/utils/src/lib/types.ts b/packages/utils/src/lib/types.ts index ca2e2d328..46284ff47 100644 --- a/packages/utils/src/lib/types.ts +++ b/packages/utils/src/lib/types.ts @@ -27,3 +27,14 @@ export type KebabCaseToCamelCase = T extends `${infer First}-${infer Rest}` ? `${First}${Capitalize>}` : T; + +/** + * Autocompletes string from union, while allowing any other string to be assigned. + * + * @example + * let color: LooseAutocomplete< 'red' | 'green' | 'blue'>; + * + * color = 'green'; // IDE autocompletes 'red', 'green', 'blue' + * color = '#516bc6'; // any string passes type check + */ +export type LooseAutocomplete = T | (string & {});