- Install expect-type@1.4.0 (devDependency) - New src/index.test.ts exercises the public API with both runtime assertions (node:assert/strict inside node:test) and type-level assertions (expectTypeOf().toEqualTypeOf, toMatchTypeOf, toHaveProperty) - Tests are excluded from tsc -p tsconfig.build.json (no .d.ts pollution in dist/) - Type-level checks happen during tsc --noEmit (run by 'npm run check' and the test script); expectTypeOf assertions have no runtime side effect, so they pair naturally with node --test in the same test() blocks - cspell: add EDITMSG to dictionary (used in commit-message-template path) - oxlint test-file overrides: silence no-nodejs-modules (we use node: builtins) and no-magic-numbers (literals in tests are fine) Coverage: - match() returns a builder with with/exhaustive/otherwise - P.literal narrows to its literal type, P.type to its typeof target - exhaustive() returns the union of handler return types - otherwise() falls back when no case matches - exhaustive() throws when no case matches
40 lines
991 B
JSON
40 lines
991 B
JSON
{
|
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
"plugins": [
|
|
"typescript",
|
|
"unicorn",
|
|
"oxc",
|
|
"import"
|
|
],
|
|
"categories": {
|
|
"correctness": "error",
|
|
"suspicious": "error",
|
|
"perf": "warn",
|
|
"style": "warn",
|
|
"restriction": "error",
|
|
"nursery": "off"
|
|
},
|
|
"rules": {
|
|
"eslint/no-undefined": "off",
|
|
"eslint/sort-keys": "off",
|
|
"eslint/id-length": "off",
|
|
"import/no-named-export": "off"
|
|
},
|
|
"env": {
|
|
"builtin": true,
|
|
"es2024": true,
|
|
"node": true
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["**/*.test.ts"],
|
|
"rules": {
|
|
"no-unused-expressions": "off",
|
|
"no-empty-file": "off",
|
|
"import/no-nodejs-modules": "off",
|
|
"eslint/no-magic-numbers": "off"
|
|
}
|
|
}
|
|
],
|
|
"ignorePatterns": ["dist", "node_modules", "coverage"]
|
|
} |