Skip to content

Commit c9f74b0

Browse files
authored
chore: enable multiple new tsconfig safety flags
1 parent 3b3d2d5 commit c9f74b0

14 files changed

+40
-31
lines changed

docs/stores/theme.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ export let toggleTheme = (): void => {
1515
}
1616

1717
onSet(theme, ({ newValue }) => {
18-
document.documentElement.dataset.theme =
18+
document.documentElement.dataset['theme'] =
1919
newValue === 'dark' ? 'dark' : 'light'
2020
})

rules/sort-imports.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
228228
]
229229
let isStyle = (value: string): boolean => {
230230
let [cleanedValue] = value.split('?')
231-
return styleExtensions.some(extension => cleanedValue.endsWith(extension))
231+
return styleExtensions.some(extension =>
232+
cleanedValue?.endsWith(extension),
233+
)
232234
}
233235

234236
let flatGroups = new Set(options.groups.flat())
@@ -290,10 +292,11 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
290292
'ws',
291293
]
292294
let builtinPrefixOnlyModules = ['sea', 'sqlite', 'test']
295+
let valueToCheck = value.startsWith('node:')
296+
? value.split('node:')[1]
297+
: value
293298
return (
294-
builtinModules.includes(
295-
value.startsWith('node:') ? value.split('node:')[1] : value,
296-
) ||
299+
(!!valueToCheck && builtinModules.includes(valueToCheck)) ||
297300
builtinPrefixOnlyModules.some(module => `node:${module}` === value) ||
298301
(options.environment === 'bun' ? bunModules.includes(value) : false)
299302
)

test/rules/sort-imports/read-closest-ts-config-by-path.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ describe('readClosestTsConfigByPath', () => {
8686
'../../../rules/sort-imports/get-typescript-import',
8787
)
8888
mockGetTypescriptImport.mockImplementation(
89-
actualGetTypescriptImport.getTypescriptImport as never,
89+
actualGetTypescriptImport['getTypescriptImport'] as never,
9090
)
9191
})
9292

tsconfig.json

+6
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
"include": ["**/*.svelte", "**/*.astro", "**/*.ts"],
33
"exclude": ["node_modules", "coverage"],
44
"compilerOptions": {
5+
"noPropertyAccessFromIndexSignature": true,
56
"forceConsistentCasingInFileNames": true,
7+
"noUncheckedIndexedAccess": true,
8+
"allowUnreachableCode": false,
69
"moduleResolution": "bundler",
710
"verbatimModuleSyntax": true,
11+
"noUnusedParameters": true,
12+
"noImplicitReturns": true,
813
"strictNullChecks": true,
914
"esModuleInterop": true,
15+
"noUnusedLocals": true,
1016
"skipLibCheck": true,
1117
"module": "esnext",
1218
"target": "esnext",

utils/alphabet.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ export class Alphabet {
143143
continue
144144
}
145145
}
146-
this._characters[index] = this._characters[otherCharacterIndex]
146+
this._characters[index] = this._characters[otherCharacterIndex]!
147147
this._characters[otherCharacterIndex] = character
148148
}
149149
return this
@@ -209,7 +209,7 @@ export class Alphabet {
209209
),
210210
]
211211
for (let [i, element] of charactersWithCase.entries()) {
212-
this._characters[element.index] = orderedCharacters[i].character
212+
this._characters[element.index] = orderedCharacters[i]!.character
213213
}
214214
return this
215215
}
@@ -405,7 +405,7 @@ export class Alphabet {
405405
0,
406406
this._characters[
407407
type === 'before' ? indexOfCharacterBefore : indexOfCharacterAfter
408-
],
408+
]!,
409409
)
410410
this._characters.splice(
411411
type === 'before' ? indexOfCharacterBefore + 1 : indexOfCharacterAfter,

utils/compare.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ let getCustomSortingFunction = <T extends SortingNode>(
125125
let minLength = Math.min(aValue.length, bValue.length)
126126
// Iterate character by character.
127127
for (let i = 0; i < minLength; i++) {
128-
let aCharacter = aValue[i]
129-
let bCharacter = bValue[i]
128+
let aCharacter = aValue[i]!
129+
let bCharacter = bValue[i]!
130130
let indexOfA = indexByCharacters.get(aCharacter)
131131
let indexOfB = indexByCharacters.get(bCharacter)
132132
indexOfA ??= Infinity

utils/generate-predefined-groups.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ let getPermutations = (elements: string[]): string[][] => {
7575
return
7676
}
7777
for (let i = first; i < elements.length; i++) {
78-
;[elements[first], elements[i]] = [elements[i], elements[first]]
78+
;[elements[first], elements[i]] = [elements[i]!, elements[first]!]
7979
backtrack(first + 1)
80-
;[elements[first], elements[i]] = [elements[i], elements[first]]
80+
;[elements[first], elements[i]] = [elements[i]!, elements[first]]
8181
}
8282
}
8383
backtrack(0)

utils/get-array-combinations.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export let getArrayCombinations = (
1616
return
1717
}
1818
for (let i = start; i < array.length; i++) {
19-
comb.push(array[i])
19+
comb.push(array[i]!)
2020
backtrack(i + 1, comb)
2121
comb.pop()
2222
}

utils/get-eslint-disabled-rules.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ let getEslintDisabledRulesByType = (
3838
}
3939
let regexp = new RegExp(`^${eslintDisableDirective} ((?:.|\\s)*)$`)
4040
let disabledRulesMatch = trimmedCommentValue.match(regexp)
41-
if (!disabledRulesMatch) {
41+
let disableRulesMatchValue = disabledRulesMatch?.[1]
42+
if (!disableRulesMatchValue) {
4243
return null
4344
}
44-
return disabledRulesMatch[1]
45+
return disableRulesMatchValue
4546
.split(',')
4647
.map(rule => rule.trim())
4748
.filter(rule => !!rule)

utils/get-node-range.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export let getNodeRange = ({
5353
*/
5454
let relevantTopComment: TSESTree.Comment | undefined
5555
for (let i = comments.length - 1; i >= 0; i--) {
56-
let comment = comments[i]
56+
let comment = comments[i]!
5757

5858
let eslintDisabledRules = getEslintDisabledRules(comment.value)
5959
if (
@@ -71,7 +71,7 @@ export let getNodeRange = ({
7171
let previousCommentOrNodeStartLine =
7272
i === comments.length - 1
7373
? node.loc.start.line
74-
: comments[i + 1].loc.start.line
74+
: comments[i + 1]!.loc.start.line
7575
if (comment.loc.end.line !== previousCommentOrNodeStartLine - 1) {
7676
break
7777
}

utils/get-options-with-clean-groups.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ export let getOptionsWithCleanGroups = <T extends GroupOptions>(
1414
})
1515

1616
let getCleanedNestedGroups = (nestedGroup: string[]): string[] | string =>
17-
nestedGroup.length === 1 ? nestedGroup[0] : nestedGroup
17+
nestedGroup.length === 1 && nestedGroup[0] ? nestedGroup[0] : nestedGroup

utils/get-settings.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export type Settings = Partial<{
1515
export let getSettings = (
1616
settings: TSESLint.SharedConfigurationSettings = {},
1717
): Settings => {
18-
if (!settings.perfectionist) {
18+
if (!settings['perfectionist']) {
1919
return {}
2020
}
2121

@@ -37,7 +37,10 @@ export let getSettings = (
3737
)
3838
}
3939

40-
let perfectionistSettings = settings.perfectionist as Record<string, unknown>
40+
let perfectionistSettings = settings['perfectionist'] as Record<
41+
string,
42+
unknown
43+
>
4144

4245
let invalidOptions = getInvalidOptions(perfectionistSettings)
4346
if (invalidOptions.length) {
@@ -46,5 +49,5 @@ export let getSettings = (
4649
)
4750
}
4851

49-
return settings.perfectionist as Settings
52+
return settings['perfectionist'] as Settings
5053
}

utils/sort-nodes-by-groups.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,17 @@ export let sortNodesByGroups = <T extends SortingNode>(
4646
let compareOptions = extraOptions?.getGroupCompareOptions
4747
? extraOptions.getGroupCompareOptions(Number(groupNumber))
4848
: options
49+
let nodesToPush = nodesByNonIgnoredGroupNumber[Number(groupNumber)]!
4950
if (!compareOptions) {
50-
sortedNodes.push(...nodesByNonIgnoredGroupNumber[Number(groupNumber)])
51+
sortedNodes.push(...nodesToPush)
5152
continue
5253
}
53-
sortedNodes.push(
54-
...sortNodes(
55-
nodesByNonIgnoredGroupNumber[Number(groupNumber)],
56-
compareOptions,
57-
),
58-
)
54+
sortedNodes.push(...sortNodes(nodesToPush, compareOptions))
5955
}
6056

6157
// Add ignored nodes at the same position as they were before linting.
6258
for (let ignoredIndex of ignoredNodeIndices) {
63-
sortedNodes.splice(ignoredIndex, 0, nodes[ignoredIndex])
59+
sortedNodes.splice(ignoredIndex, 0, nodes[ignoredIndex]!)
6460
}
6561

6662
return sortedNodes

utils/sort-nodes.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export let sortNodes = <T extends SortingNode>(
2929

3030
// Add ignored nodes at the same position as they were before linting.
3131
for (let ignoredIndex of ignoredNodeIndices) {
32-
sortedNodes.splice(ignoredIndex, 0, nodes[ignoredIndex])
32+
sortedNodes.splice(ignoredIndex, 0, nodes[ignoredIndex]!)
3333
}
3434

3535
return sortedNodes

0 commit comments

Comments
 (0)