Skip to content

[2.4.0 stack 11/18] Strictness: pedantic oxlint with every plugin, stricter tsconfig - #519

Open
hyanmandian wants to merge 2 commits into
stack/09-toolingfrom
stack/10-strictness
Open

[2.4.0 stack 11/18] Strictness: pedantic oxlint with every plugin, stricter tsconfig#519
hyanmandian wants to merge 2 commits into
stack/09-toolingfrom
stack/10-strictness

Conversation

@hyanmandian

@hyanmandian hyanmandian commented Sep 12, 2026

Copy link
Copy Markdown
Member

What does this PR do?

Part 11 of 18 of the 2.4.0 release stack (main <- stack/01-tooling <- ... <- stack/11-testing). oxlint through Vite+ now runs the correctness, suspicious, perf and pedantic categories as errors with the import, jsdoc, promise, unicorn, typescript and vitest plugins plus a curated set of restriction and style rules (explicit return types and member accessibility, JSDoc param and return types, no forEach, no parameter reassignment, no non-null assertions, no unsafe any, cyclomatic complexity under 20, functions under 120 lines); tsconfig adds noImplicitOverride, noUnusedLocals, noUnusedParameters and noPropertyAccessFromIndexSignature (noUncheckedIndexedAccess and exactOptionalPropertyTypes were tried and left off: the lookup tables are indexed by already-validated digits, so they only add unreachable fallbacks that show up as missing coverage and equivalent mutants). The refactor commit that satisfies the rules changes no public signature or output; the dataset scripts now parse the upstream payloads as unknown and validate their shape.

Commits in this part (2)

  • 7e136d6 refactor: satisfy the stricter lint rules and TypeScript flags
  • d11b8e8 ci: tighten oxlint and TypeScript strictness

How to review and merge

  • Review each part on its own; the diff of this PR is exactly the commits above.
  • Every part is green on its own: each branch builds, lints, passes the tests on Node 20/22/24/26, Bun, Deno and the four browsers, and passes the tree-shaking check against the part below it.
  • Do not merge the lower parts individually. When all eighteen are approved, retarget [2.4.0 stack 18/18] Review rounds 3 to 5: holidays, date-fns business days, capitalize defaults, currency, words, CEP typed errors, subpath types, citations #520 to main and merge it with a merge commit: the reviewed commits land unchanged and GitHub marks the seventeen parts below as merged.
  • Zero breaking changes: every existing signature, export, entry point and error message is preserved. Twelve output corrections were validated against the published 2.3.0 tarball and are listed in CHANGELOG.md (part 7); the build of every later part is compared export by export against the part below it.

Stack

@hyanmandian
hyanmandian added this pull request to stack #514 September 12, 2026 12:47
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 189 files, which is 39 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Check out review usage here.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 2bb29e3c-3093-4f7f-a429-05c3631d78cb

📥 Commits

Reviewing files that changed from the base of the PR and between e5b8f9b and d11b8e8.

📒 Files selected for processing (189)
  • CONTRIBUTING.md
  • scripts/banks.ts
  • scripts/cbo.ts
  • scripts/cfop.ts
  • scripts/cities.ts
  • scripts/cnae.ts
  • scripts/data.ts
  • scripts/legal-natures.ts
  • scripts/llms.ts
  • scripts/ncm.ts
  • scripts/states.ts
  • scripts/tree-shaking.ts
  • src/_internals/clamp-precision/clamp-precision.test.ts
  • src/_internals/crc16-ccitt/crc16-ccitt.ts
  • src/_internals/fetch-sorted-record/fetch-sorted-record.test.ts
  • src/_internals/fetch-with-retry/fetch-with-retry.test.ts
  • src/_internals/fetch-with-retry/fetch-with-retry.ts
  • src/_internals/format/format.ts
  • src/_internals/generate-checksum/generate-checksum.ts
  • src/_internals/is-nullish/is-nullish.test.ts
  • src/_internals/is-repeated-digits/is-repeated-digits.ts
  • src/_internals/is-valid-cei-cno-number/is-valid-cei-cno-number.test.ts
  • src/_internals/is-valid-pix-url/is-valid-pix-url.ts
  • src/_internals/mod11/mod11.test.ts
  • src/_internals/mod11/mod11.ts
  • src/_internals/number-to-words/number-to-words.ts
  • src/_internals/parse-arrecadacao/parse-arrecadacao.test.ts
  • src/_internals/parse-decimal/parse-decimal.test.ts
  • src/_internals/parse-decimal/parse-decimal.ts
  • src/_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric.test.ts
  • src/_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric.ts
  • src/_internals/sanitize-to-ascii/sanitize-to-ascii.ts
  • src/_internals/sanitize-to-digits/sanitize-to-digits.test.ts
  • src/_internals/sanitize-to-digits/sanitize-to-digits.ts
  • src/_internals/test/globals.d.ts
  • src/_internals/test/runtime-bun.ts
  • src/_internals/test/runtime-deno.ts
  • src/_internals/test/runtime.ts
  • src/add-business-days/add-business-days.test.ts
  • src/capitalize/capitalize.test.ts
  • src/capitalize/capitalize.ts
  • src/convert-currency-to-words/convert-currency-to-words.test.ts
  • src/convert-date-to-words/convert-date-to-words.test.ts
  • src/convert-date-to-words/convert-date-to-words.ts
  • src/convert-license-plate-to-mercosul/convert-license-plate-to-mercosul.test.ts
  • src/convert-license-plate-to-mercosul/convert-license-plate-to-mercosul.ts
  • src/convert-number-to-words/convert-number-to-words.test.ts
  • src/difference-in-business-days/difference-in-business-days.test.ts
  • src/format-boleto/format-boleto.test.ts
  • src/format-caepf/format-caepf.test.ts
  • src/format-cei/format-cei.test.ts
  • src/format-cep/format-cep.test.ts
  • src/format-certidao/format-certidao.test.ts
  • src/format-cnae/format-cnae.test.ts
  • src/format-cnh/format-cnh.test.ts
  • src/format-cno/format-cno.test.ts
  • src/format-cnpj/format-cnpj.test.ts
  • src/format-cnpj/format-cnpj.ts
  • src/format-cns/format-cns.test.ts
  • src/format-cpf/format-cpf.test.ts
  • src/format-cpf/format-cpf.ts
  • src/format-currency/format-currency.test.ts
  • src/format-currency/format-currency.ts
  • src/format-iban/format-iban.test.ts
  • src/format-legal-nature/format-legal-nature.test.ts
  • src/format-ncm/format-ncm.test.ts
  • src/format-nfe-key/format-nfe-key.test.ts
  • src/format-passport/format-passport.test.ts
  • src/format-passport/format-passport.ts
  • src/format-phone/format-phone.test.ts
  • src/format-pis/format-pis.test.ts
  • src/format-processo-juridico/format-processo-juridico.test.ts
  • src/format-voter-id/format-voter-id.test.ts
  • src/generate-boleto/generate-boleto.ts
  • src/generate-cnpj/generate-cnpj.ts
  • src/generate-cpf/generate-cpf.test.ts
  • src/generate-legal-nature/generate-legal-nature.ts
  • src/generate-license-plate/generate-license-plate.test.ts
  • src/generate-license-plate/generate-license-plate.ts
  • src/generate-passport/generate-passport.ts
  • src/generate-pis/generate-pis.ts
  • src/generate-pix-payload/generate-pix-payload.test.ts
  • src/generate-pix-payload/generate-pix-payload.ts
  • src/generate-processo-juridico/generate-processo-juridico.test.ts
  • src/generate-voter-id/generate-voter-id.test.ts
  • src/get-address-info-by-cep/get-address-info-by-cep.test.ts
  • src/get-address-info-by-cep/get-address-info-by-cep.ts
  • src/get-area-code-info/get-area-code-info.test.ts
  • src/get-area-code-info/get-area-code-info.ts
  • src/get-area-codes-by-state/get-area-codes-by-state.test.ts
  • src/get-bank-by-code/get-bank-by-code.test.ts
  • src/get-bank-by-ispb/get-bank-by-ispb.test.ts
  • src/get-banks/get-banks.test.ts
  • src/get-banks/get-banks.ts
  • src/get-boleto-info/get-boleto-info.test.ts
  • src/get-cbo/get-cbo.test.ts
  • src/get-cbo/get-cbo.ts
  • src/get-cep-info-by-address/get-cep-info-by-address.test.ts
  • src/get-cep-info-by-address/get-cep-info-by-address.ts
  • src/get-cfop/get-cfop.test.ts
  • src/get-cfop/get-cfop.ts
  • src/get-cities/get-cities.test.ts
  • src/get-cnae/get-cnae.test.ts
  • src/get-cnae/get-cnae.ts
  • src/get-holidays/get-holidays.test.ts
  • src/get-holidays/get-holidays.ts
  • src/get-legal-nature/get-legal-nature.test.ts
  • src/get-legal-natures/get-legal-natures.ts
  • src/get-municipalities/get-municipalities.test.ts
  • src/get-municipality-by-code/get-municipality-by-code.test.ts
  • src/get-municipality/get-municipality.test.ts
  • src/get-municipality/get-municipality.ts
  • src/get-state-by-ibge-code/get-state-by-ibge-code.test.ts
  • src/get-state-code-by-name/get-state-code-by-name.test.ts
  • src/get-state-name-by-code/get-state-name-by-code.test.ts
  • src/get-states/get-states.test.ts
  • src/get-states/get-states.ts
  • src/get-timezone-by-state/get-timezone-by-state.test.ts
  • src/index.test.ts
  • src/is-business-day/is-business-day.test.ts
  • src/is-business-day/is-business-day.ts
  • src/is-holiday/is-holiday.test.ts
  • src/is-holiday/is-holiday.ts
  • src/is-valid-bank-account/is-valid-bank-account.test.ts
  • src/is-valid-bank-account/is-valid-bank-account.ts
  • src/is-valid-boleto/is-valid-boleto.test.ts
  • src/is-valid-boleto/is-valid-boleto.ts
  • src/is-valid-caepf/is-valid-caepf.test.ts
  • src/is-valid-cbo/is-valid-cbo.test.ts
  • src/is-valid-cei/is-valid-cei.test.ts
  • src/is-valid-cep/is-valid-cep.test.ts
  • src/is-valid-certidao/is-valid-certidao.test.ts
  • src/is-valid-cfop/is-valid-cfop.test.ts
  • src/is-valid-cnae/is-valid-cnae.test.ts
  • src/is-valid-cnh/is-valid-cnh.test.ts
  • src/is-valid-cno/is-valid-cno.test.ts
  • src/is-valid-cnpj/is-valid-cnpj.test.ts
  • src/is-valid-cnpj/is-valid-cnpj.ts
  • src/is-valid-cns/is-valid-cns.test.ts
  • src/is-valid-cpf/is-valid-cpf.test.ts
  • src/is-valid-credit-card/is-valid-credit-card.test.ts
  • src/is-valid-csosn/is-valid-csosn.test.ts
  • src/is-valid-cst/is-valid-cst.test.ts
  • src/is-valid-cst/is-valid-cst.ts
  • src/is-valid-email/is-valid-email.test.ts
  • src/is-valid-iban/is-valid-iban.test.ts
  • src/is-valid-ie/is-valid-ie.test.ts
  • src/is-valid-ie/is-valid-ie.ts
  • src/is-valid-landline-phone/is-valid-landline-phone.test.ts
  • src/is-valid-legal-nature/is-valid-legal-nature.test.ts
  • src/is-valid-legal-nature/is-valid-legal-nature.ts
  • src/is-valid-license-plate/is-valid-license-plate.test.ts
  • src/is-valid-mobile-phone/is-valid-mobile-phone.test.ts
  • src/is-valid-mobile-phone/is-valid-mobile-phone.ts
  • src/is-valid-ncm/is-valid-ncm.test.ts
  • src/is-valid-nfe-key/is-valid-nfe-key.test.ts
  • src/is-valid-passport/is-valid-passport.test.ts
  • src/is-valid-passport/is-valid-passport.ts
  • src/is-valid-phone/is-valid-phone.test.ts
  • src/is-valid-pis/is-valid-pis.test.ts
  • src/is-valid-pis/is-valid-pis.ts
  • src/is-valid-pix-key/is-valid-pix-key.test.ts
  • src/is-valid-pix-payload/is-valid-pix-payload.test.ts
  • src/is-valid-processo-juridico/is-valid-processo-juridico.test.ts
  • src/is-valid-processo-juridico/is-valid-processo-juridico.ts
  • src/is-valid-registro-profissional/is-valid-registro-profissional.test.ts
  • src/is-valid-registro-profissional/is-valid-registro-profissional.ts
  • src/is-valid-renavam/is-valid-renavam.test.ts
  • src/is-valid-renavam/is-valid-renavam.ts
  • src/is-valid-service-phone/is-valid-service-phone.test.ts
  • src/is-valid-vin/is-valid-vin.test.ts
  • src/is-valid-vin/is-valid-vin.ts
  • src/is-valid-voter-id/is-valid-voter-id.test.ts
  • src/parse-boleto/parse-boleto.test.ts
  • src/parse-certidao/parse-certidao.test.ts
  • src/parse-certidao/parse-certidao.ts
  • src/parse-currency/parse-currency.test.ts
  • src/parse-iban/parse-iban.test.ts
  • src/parse-nfe-key/parse-nfe-key.test.ts
  • src/parse-nfe-key/parse-nfe-key.ts
  • src/parse-passport/parse-passport.ts
  • src/parse-phone/parse-phone.test.ts
  • src/parse-pix-key/parse-pix-key.test.ts
  • src/parse-pix-payload/parse-pix-payload.test.ts
  • src/parse-pix-payload/parse-pix-payload.ts
  • src/parse-voter-id/parse-voter-id.test.ts
  • src/remove-accents/remove-accents.test.ts
  • tsconfig.json
  • vite.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Tree-shaking report

Fails when a pre-existing export grows more than 20% and more than 256 B, or when importing every export that already existed on the base grows more than 5%. New exports never count as a regression.

Pre-existing exports: 625733 B to 626286 B (+0.1%, gzip 161960 B). Full import on head: 626286 B (gzip 161960 B).

name base head delta bytes delta % gzip head
isValidPixPayload 1817 2125 +308 +17.0% 1083
parsePixPayload 1800 2108 +308 +17.1% 1074
generatePixPayload 6029 6256 +227 +3.8% 2630
isValidIE 5640 5531 -109 -1.9% 1929
isValidIe 5640 5531 -109 -1.9% 1929
getLegalNatures 5226 5146 -80 -1.5% 1690
getCepInfoByAddress 3949 4004 +55 +1.4% 1485
getMunicipality 157660 157705 +45 +0.0% 50909
isValidCst 893 849 -44 -4.9% 505
generateLicensePlate 402 442 +40 +10.0% 347
isValidLegalNature 5190 5229 +39 +0.8% 1753
isValidRenavam 543 577 +34 +6.3% 409
getHolidays 4724 4700 -24 -0.5% 1989
formatCNPJ 700 723 +23 +3.3% 480
formatCnpj 700 723 +23 +3.3% 480
getCnae 95589 95612 +23 +0.0% 21371
addBusinessDays 5532 5512 -20 -0.4% 2314
differenceInBusinessDays 5611 5591 -20 -0.4% 2328
formatCPF 592 612 +20 +3.4% 432
formatCpf 592 612 +20 +3.4% 432
generateCPF 978 998 +20 +2.0% 641
generateCpf 978 998 +20 +2.0% 641
isBusinessDay 5064 5044 -20 -0.4% 2152
isValidCei 814 834 +20 +2.5% 550
isValidCnh 777 797 +20 +2.6% 492
isValidCno 818 838 +20 +2.4% 550
getAddressInfoByCep 3220 3238 +18 +0.6% 1423
isValidRegistroProfissional 2926 2944 +18 +0.6% 967
convertDateToWords 2722 2739 +17 +0.6% 1426
generateCnh 733 750 +17 +2.3% 467
formatBoleto 719 734 +15 +2.1% 465
formatCEP 549 564 +15 +2.7% 405
formatCaepf 562 577 +15 +2.7% 412
formatCei 559 574 +15 +2.7% 411
formatCep 549 564 +15 +2.7% 405
formatCertidao 588 603 +15 +2.6% 415
formatCnae 549 564 +15 +2.7% 407
formatCnh 552 567 +15 +2.7% 404
formatCno 559 574 +15 +2.7% 411
formatCns 558 573 +15 +2.7% 406
formatLegalNature 530 545 +15 +2.8% 395
formatNcm 535 550 +15 +2.8% 398
formatNfeKey 583 598 +15 +2.6% 403
formatPhone 2118 2133 +15 +0.7% 1089
formatPis 554 569 +15 +2.7% 407
formatProcessoJuridico 565 580 +15 +2.7% 410
formatVoterId 659 674 +15 +2.3% 461
generatePis 517 531 +14 +2.7% 390
getMunicipalityByCode 159554 159568 +14 +0.0% 51161
isValidVin 868 854 -14 -1.6% 595
parseCertidao 1153 1167 +14 +1.2% 694
getBoletoInfo 2506 2493 -13 -0.5% 1325
isValidBoleto 1768 1755 -13 -0.7% 979
isValidCNPJ 1310 1297 -13 -1.0% 679
isValidCnpj 1310 1297 -13 -1.0% 679
convertCurrencyToWords 2232 2244 +12 +0.5% 1190
convertNumberToWords 1878 1890 +12 +0.6% 998
getBanks 28263 28274 +11 +0.0% 7502
getCbo 112314 112325 +11 +0.0% 28313
getCfop 56246 56257 +11 +0.0% 5601
getMunicipalities 159512 159523 +11 +0.0% 51128
getStates 2374 2385 +11 +0.5% 668
convertLicensePlateToMercosul 640 650 +10 +1.6% 448
isValidPixKey 4519 4509 -10 -0.2% 1870
parsePixKey 4414 4404 -10 -0.2% 1837
isValidProcessoJuridico 567 558 -9 -1.6% 405
formatCurrency 1127 1133 +6 +0.5% 700
isHoliday 5005 4999 -6 -0.1% 2103
parseCnpj 389 395 +6 +1.5% 293
parseCurrency 775 781 +6 +0.8% 526
generateCNPJ 1192 1197 +5 +0.4% 690
generateCnpj 1192 1197 +5 +0.4% 690
getAreaCodeInfo 3143 3147 +4 +0.1% 1034
formatIban 395 398 +3 +0.8% 320
formatLicensePlate 511 514 +3 +0.6% 373
formatPassport 305 308 +3 +1.0% 258
getBankByCode 28531 28534 +3 +0.0% 7684
getBankByIspb 28535 28538 +3 +0.0% 7684
getFormatLicensePlate 478 481 +3 +0.6% 350
getStateByIbgeCode 2505 2508 +3 +0.1% 743
isValidCPF 764 767 +3 +0.4% 454
isValidCaepf 818 821 +3 +0.4% 524
isValidCbo 112218 112221 +3 +0.0% 28228
isValidCertidao 868 871 +3 +0.3% 552
isValidCfop 56189 56192 +3 +0.0% 5549
isValidCnae 95186 95189 +3 +0.0% 20958
isValidCns 783 786 +3 +0.4% 517
isValidCpf 764 767 +3 +0.4% 454
isValidCreditCard 544 547 +3 +0.6% 393
isValidCsosn 375 378 +3 +0.8% 296
isValidIban 535 538 +3 +0.6% 410
isValidLandlinePhone 829 832 +3 +0.4% 551
isValidLicensePlate 499 502 +3 +0.6% 360
isValidMobilePhone 879 882 +3 +0.3% 584
isValidNcm 115993 115996 +3 +0.0% 24407
isValidPassport 328 331 +3 +0.9% 276
isValidPhone 2017 2020 +3 +0.1% 990
isValidServicePhone 862 865 +3 +0.3% 487
isValidVoterId 908 911 +3 +0.3% 533
parseBoleto 332 335 +3 +0.9% 278
parseCep 284 287 +3 +1.1% 244
parseCnh 285 288 +3 +1.1% 245
parseCpf 285 288 +3 +1.1% 245
parseIban 774 777 +3 +0.4% 539
parseLegalNature 284 287 +3 +1.1% 243
parseLicensePlate 301 304 +3 +1.0% 257
parsePassport 305 308 +3 +1.0% 259
parsePhone 436 439 +3 +0.7% 330
parsePis 285 288 +3 +1.1% 245
parseProcessoJuridico 285 288 +3 +1.1% 244
parseVoterId 366 369 +3 +0.8% 296
isValidNfeKey 1368 1366 -2 -0.1% 864
parseNfeKey 1351 1349 -2 -0.1% 854
isValidBankAccount 6172 6171 -1 -0.0% 2321
isValidPIS 840 839 -1 -0.1% 529
isValidPis 840 839 -1 -0.1% 529
Unchanged exports (25)
name bytes gzip
GetAddressInfoByCepError 283 246
GetAddressInfoByCepNotFoundError 376 265
GetAddressInfoByCepServiceError 375 263
GetAddressInfoByCepValidationError 374 267
GetCepInfoByAddressError 283 246
GetCepInfoByAddressNotFoundError 376 265
GetCepInfoByAddressValidationError 374 267
capitalize 766 493
generateBoleto 1178 701
generateCep 301 256
generateLegalNature 5205 1728
generatePassport 397 307
generatePhone 852 531
generateProcessoJuridico 699 474
generateVoterId 979 633
getAreaCodesByState 881 519
getCities 157263 50596
getLegalNature 5278 1778
getStateCodeByName 2526 759
getStateNameByCode 2464 720
getTimezoneByState 908 458
isValidCEP 301 255
isValidCep 301 255
isValidEmail 320 256
removeAccents 270 240

@codecov

codecov Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (e5b8f9b) to head (d11b8e8).

Additional details and impacted files
@@                Coverage Diff                 @@
##           stack/09-tooling      #519   +/-   ##
==================================================
  Coverage            100.00%   100.00%           
==================================================
  Files                   154       154           
  Lines                  1961      1983   +22     
  Branches                584       584           
==================================================
+ Hits                   1961      1983   +22     
Flag Coverage Δ
node 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@hyanmandian
hyanmandian force-pushed the stack/10-strictness branch 2 times, most recently from 58e0023 to d783f0b Compare September 12, 2026 14:26
@hyanmandian

Copy link
Copy Markdown
Member Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 59 minutes.

Explicit return types and member accessibility everywhere, JSDoc param and return types on
every exported function, no forEach, no parameter reassignment, no non-null assertions, no
unsafe any, no default exports outside the config files, cyclomatic complexity under 20 and
functions under 120 lines. The scripts parse the upstream payloads as unknown and validate
their shape before writing a dataset. No public signature or output changes.
oxlint now runs the correctness, suspicious, perf and pedantic categories as errors with the
import, jsdoc, promise, unicorn, typescript and vitest plugins, plus a curated set of
restriction and style rules; test files relax what only makes sense for production code.
tsconfig adds noImplicitOverride, noUnusedLocals, noUnusedParameters and
noPropertyAccessFromIndexSignature. noUncheckedIndexedAccess and exactOptionalPropertyTypes
stay off: the lookup tables are indexed by already-validated digits, so those flags only add
unreachable fallbacks that show up as missing coverage and equivalent mutants. CONTRIBUTING
documents the rule set.
@hyanmandian
hyanmandian removed this pull request from stack #514 September 12, 2026 22:57
@hyanmandian
hyanmandian added this pull request to stack #524 September 12, 2026 22:58
@hyanmandian hyanmandian changed the title [2.4.0 stack 10/11] Strictness: pedantic oxlint with every plugin, stricter tsconfig [2.4.0 stack 11/14] Strictness: pedantic oxlint with every plugin, stricter tsconfig Sep 12, 2026
@hyanmandian
hyanmandian removed this pull request from stack #524 September 13, 2026 01:17
@hyanmandian

Copy link
Copy Markdown
Member Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review skipped: 189 files exceed the limit of 150.

@hyanmandian
hyanmandian added this pull request to stack #527 September 13, 2026 01:17
@hyanmandian hyanmandian changed the title [2.4.0 stack 11/14] Strictness: pedantic oxlint with every plugin, stricter tsconfig [2.4.0 stack 11/16] Strictness: pedantic oxlint with every plugin, stricter tsconfig Sep 13, 2026
@hyanmandian
hyanmandian removed this pull request from stack #527 September 13, 2026 03:44
@hyanmandian
hyanmandian added this pull request to stack #530 September 13, 2026 03:44
@hyanmandian hyanmandian changed the title [2.4.0 stack 11/16] Strictness: pedantic oxlint with every plugin, stricter tsconfig [2.4.0 stack 11/18] Strictness: pedantic oxlint with every plugin, stricter tsconfig Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants