diff --git a/.oxlintrc.json b/.oxlintrc.json index 879b145..890c28c 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -5,6 +5,7 @@ "rules": { "typescript/no-unnecessary-type-assertion": "error", "typescript/no-deprecated": "warn", + "typescript/prefer-regexp-exec": "error", "unicorn/prefer-string-replace-all": "error", "unicorn/prefer-string-raw": "error", "jest/expect-expect": [ diff --git a/apps/web/src/adapters/bestiary-adapter.ts b/apps/web/src/adapters/bestiary-adapter.ts index e2fcfb7..e1be96a 100644 --- a/apps/web/src/adapters/bestiary-adapter.ts +++ b/apps/web/src/adapters/bestiary-adapter.ts @@ -170,7 +170,7 @@ function extractAc(ac: RawMonster["ac"]): { } if ("special" in first) { // Variable AC (e.g. spell summons) — parse leading number if possible - const match = first.special.match(LEADING_DIGITS_REGEX); + const match = LEADING_DIGITS_REGEX.exec(first.special); return { value: match ? Number(match[1]) : 0, source: first.special, diff --git a/packages/domain/src/auto-number.ts b/packages/domain/src/auto-number.ts index 2ee81ab..17c2c18 100644 --- a/packages/domain/src/auto-number.ts +++ b/packages/domain/src/auto-number.ts @@ -23,7 +23,9 @@ export function resolveCreatureName( if (name === baseName) { exactMatches.push(i); } else { - const match = new RegExp(`^${escapeRegExp(baseName)} (\\d+)$`).exec(name); + 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);