mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-31 01:37:24 +00:00
97327c3d28
* refactor(linters): add prefer-coerce-array rule Refs #45217 `x ?? []` and `coerceArray(x)` say the same thing, but only the second one is searchable and consistent. The rule flags a `??` whose default is a bare `[]` literal; a non-empty default or an asserted `([] as Foo[])` still passes. Applying it across `lib/` surfaced three spots the helper cannot cover, which keep `?? []` with a disable comment or a narrower fix: - `package-files.ts` destructures a tuple, which `coerceArray()` widens - `generate.spec.ts` defaults `matchAll()`, an iterator rather than an array - `mise/upgradeable-tooling.ts` declares a `Record` return, so its `?? []` fallback was wrong to begin with and becomes `coerceObject()` * refactor(platform/github): hoist the GHE version header lookup `Object.entries(...).find()` returns a tuple, and defaulting it with `?? []` only to destructure the second element reads as an array default when it is not one. Name the found entry instead, which drops the `?? []` rather than routing a tuple through `coerceArray()`.
34 lines
842 B
TypeScript
34 lines
842 B
TypeScript
import { lang, query as q } from '@renovatebot/good-enough-parser';
|
|
import { coerceArray } from '../../../../util/array.ts';
|
|
import { Ctx } from './context.ts';
|
|
import { extensionTags } from './extension-tags.ts';
|
|
import {
|
|
clearRepoRuleVariables,
|
|
repoRuleCall,
|
|
useRepoRuleAssignment,
|
|
} from './repo-rules.ts';
|
|
import { rules } from './rules.ts';
|
|
import type { ResultFragment } from './types.ts';
|
|
|
|
const rule = q.alt<Ctx>(
|
|
rules,
|
|
extensionTags,
|
|
useRepoRuleAssignment,
|
|
repoRuleCall,
|
|
);
|
|
|
|
const query = q.tree<Ctx>({
|
|
type: 'root-tree',
|
|
maxDepth: 16,
|
|
search: rule,
|
|
});
|
|
|
|
const starlarkLang = lang.createLang('starlark');
|
|
|
|
export function parse(input: string): ResultFragment[] {
|
|
clearRepoRuleVariables();
|
|
|
|
const parsedResult = starlarkLang.query(input, query, new Ctx(input));
|
|
return coerceArray(parsedResult?.results);
|
|
}
|