Repository navigation
v1.6.0
Minor Changes
-
#29
e7a2232Thanks @stevensacks! - Add two test-honesty lint rules and enforce error-only severity in the test config (nowarn).vitest/prefer-called-with(error) — a baretoHaveBeenCalled()/toBeCalled()proves a function ran but asserts nothing about arguments or count; require the*Withform. Exempts the.notform.no-restricted-importsin test/story files (error) — consumer test, story, and harness files may not import a server-only (*.server) or internal (**/internals/**) module; reach the behavior through the public interface instead. A dedicated*.server.test.*file is exempt (the right place to import a.servermodule). Covers staticimport/export … fromonly, not dynamicimport().playwright/expect-expectpromotedwarn→error— a Playwright test that asserts nothing is a false green. Customexpect*()helpers still count viaassertFunctionPatterns.
Consumers on
--max-warnings=0already treated the priorwarnas blocking, so this only makes the intent explicit. Expect new errors on baretoHaveBeenCalled()and on server/internal imports from consumer tests — treat them as signal. -
#28
b05f445Thanks @stevensacks! - Refresh the quarantined toolchain dependencies.eslint-plugin-unicorn64 → 65. Held at 65 deliberately: unicorn 66 requires ESLint 10.4, and this config stays on ESLint 9 until that migration is coordinated with the consuming app. Unicorn 65 adds a large batch of rules to itsrecommendedpreset, which this config spreads, so consumers will see new unicorn findings on upgrade. Most are auto-fixable; treat them as signal.unicorn/prefer-includes-over-repeated-comparisonsis disabled.Array#includesreturns a plain boolean, not a type predicate, so it cannot narrow a union the way an===comparison chain does. In a typed codebase the chain is the type-safe idiom; forcing.includes()discards the narrowing and the refined type of the value along with it. This joins the config's existing set of disabled unicorn opinions that fight idiomatic typed React.eslint-plugin-storybook10.4.2 → 10.4.6.@vitest/eslint-plugin1.6.19 → 1.6.20.eslint-plugin-better-tailwindcss4.5.0 → 4.6.0.eslint-plugin-perfectionist5.9.0 → 5.9.1.
Every bump has cleared the 7-day release-age quarantine, so each installs cleanly under a downstream release-age policy with no new
trustPolicyExcludeentries. -
#31
178157fThanks @stevensacks! - Exempt typedresources+/actions+data endpoints from theimport-x/no-restricted-pathsarchitecture boundary.no-restricted-pathscannot distinguish a type-only import, so it flagged a UI component'simport type {action}from a typed data endpoint (theuseFetcher<typeof action>pattern). The UI layers (pages, components, hooks/state) now carry anexceptforroutes/{actions+,resources+}; services, utils, and types are deliberately excluded so the carve-out stays within the UI layer.