Fix oxlint --deny-warnings and eliminate all biome-ignores
--deny warnings was a no-op (not a valid category); the correct flag is --deny-warnings. Fixed all 8 pre-existing warnings and removed every biome-ignore from source and test files. Simplified the check script to zero-tolerance: any biome-ignore now fails the build. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,28 @@
|
||||
const DIGITS_ONLY = /^\d+$/;
|
||||
|
||||
function scanExisting(
|
||||
baseName: string,
|
||||
existingNames: readonly string[],
|
||||
): { exactMatches: number[]; maxNumber: number } {
|
||||
const exactMatches: number[] = [];
|
||||
let maxNumber = 0;
|
||||
const prefix = `${baseName} `;
|
||||
|
||||
for (let i = 0; i < existingNames.length; i++) {
|
||||
const name = existingNames[i];
|
||||
if (name === baseName) {
|
||||
exactMatches.push(i);
|
||||
} else if (name.startsWith(prefix)) {
|
||||
const suffix = name.slice(prefix.length);
|
||||
if (DIGITS_ONLY.test(suffix)) {
|
||||
const num = Number.parseInt(suffix, 10);
|
||||
if (num > maxNumber) maxNumber = num;
|
||||
}
|
||||
}
|
||||
}
|
||||
return { exactMatches, maxNumber };
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves a creature name against existing combatant names,
|
||||
* handling auto-numbering for duplicates.
|
||||
@@ -14,25 +39,7 @@ export function resolveCreatureName(
|
||||
newName: string;
|
||||
renames: ReadonlyArray<{ from: string; to: string }>;
|
||||
} {
|
||||
// Find exact matches and numbered matches (e.g., "Goblin 1", "Goblin 2")
|
||||
const exactMatches: number[] = [];
|
||||
let maxNumber = 0;
|
||||
|
||||
for (let i = 0; i < existingNames.length; i++) {
|
||||
const name = existingNames[i];
|
||||
if (name === baseName) {
|
||||
exactMatches.push(i);
|
||||
} else {
|
||||
const match = new RegExp(
|
||||
String.raw`^${escapeRegExp(baseName)} (\d+)$`,
|
||||
).exec(name);
|
||||
// biome-ignore lint/nursery/noUnnecessaryConditions: RegExp.exec() returns null on no match — false positive
|
||||
if (match) {
|
||||
const num = Number.parseInt(match[1], 10);
|
||||
if (num > maxNumber) maxNumber = num;
|
||||
}
|
||||
}
|
||||
}
|
||||
const { exactMatches, maxNumber } = scanExisting(baseName, existingNames);
|
||||
|
||||
// No conflict at all
|
||||
if (exactMatches.length === 0 && maxNumber === 0) {
|
||||
@@ -51,7 +58,3 @@ export function resolveCreatureName(
|
||||
const nextNumber = Math.max(maxNumber, exactMatches.length) + 1;
|
||||
return { newName: `${baseName} ${nextNumber}`, renames: [] };
|
||||
}
|
||||
|
||||
function escapeRegExp(s: string): string {
|
||||
return s.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user