Skip to content

Commit 1f24cd1

Browse files
authored
Merge pull request #3275 from github/nora/add-eslint-deprecation
Start using eslint-plugin-deprecation to find deprecated code
2 parents 0e2c03f + e126dfb commit 1f24cd1

32 files changed

+62
-45
lines changed

extensions/ql-vscode/.eslintrc.js

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const baseConfig = {
2828
"plugin:@typescript-eslint/recommended",
2929
"plugin:import/recommended",
3030
"plugin:import/typescript",
31+
"plugin:deprecation/recommended",
3132
],
3233
rules: {
3334
"@typescript-eslint/await-thenable": "error",

extensions/ql-vscode/.storybook/vscode-theme-addon/manager.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import * as React from "react";
2-
import { addons, types } from "@storybook/manager-api";
2+
import { addons } from "@storybook/manager-api";
3+
import { Addon_TypesEnum } from "@storybook/types";
34
import { ThemeSelector } from "./ThemeSelector";
45

56
const ADDON_ID = "vscode-theme-addon";
67

78
addons.register(ADDON_ID, () => {
89
addons.add(ADDON_ID, {
910
title: "VSCode Themes",
10-
type: types.TOOL,
11+
type: Addon_TypesEnum.TOOL,
1112
match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)),
1213
render: () => <ThemeSelector />,
1314
});

extensions/ql-vscode/package-lock.json

+16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extensions/ql-vscode/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -2024,6 +2024,7 @@
20242024
"eslint": "^8.56.0",
20252025
"eslint-config-prettier": "^9.0.0",
20262026
"eslint-import-resolver-typescript": "^3.6.1",
2027+
"eslint-plugin-deprecation": "^2.0.0",
20272028
"eslint-plugin-etc": "^2.0.2",
20282029
"eslint-plugin-github": "^4.4.1",
20292030
"eslint-plugin-import": "^2.29.1",

extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysisAnalyzedRepos.stories.tsx

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { Meta, StoryFn } from "@storybook/react";
22

33
import { faker } from "@faker-js/faker";
4+
import { customAlphabet } from "nanoid";
45

56
import { VariantAnalysisContainer } from "../../view/variant-analysis/VariantAnalysisContainer";
67
import { VariantAnalysisAnalyzedRepos } from "../../view/variant-analysis/VariantAnalysisAnalyzedRepos";
@@ -125,24 +126,19 @@ Example.args = {
125126
};
126127

127128
faker.seed(42);
128-
const uniqueStore = {};
129129

130130
const manyScannedRepos = Array.from({ length: 1000 }, (_, i) => {
131131
const mockedScannedRepo = createMockScannedRepo();
132-
132+
const nanoid = customAlphabet("123456789");
133133
return {
134134
...mockedScannedRepo,
135135
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
136136
resultCount: faker.number.int({ min: 0, max: 1000 }),
137137
repository: {
138138
...mockedScannedRepo.repository,
139139
// We need to ensure the ID is unique for React keys
140-
id: faker.helpers.unique(faker.number.int, [], {
141-
store: uniqueStore,
142-
}),
143-
fullName: `octodemo/${faker.helpers.unique(faker.word.sample, [], {
144-
store: uniqueStore,
145-
})}`,
140+
id: parseInt(nanoid()),
141+
fullName: `octodemo/${nanoid()}`,
146142
},
147143
};
148144
});

extensions/ql-vscode/src/view/compare/Compare.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const Message = styled.div`
2525
padding: 1.5rem;
2626
`;
2727

28-
export function Compare(_: Record<string, never>): JSX.Element {
28+
export function Compare(_: Record<string, never>): React.JSX.Element {
2929
const [queryInfo, setQueryInfo] =
3030
useState<SetComparisonQueryInfoMessage | null>(null);
3131
const [comparison, setComparison] = useState<SetComparisonsMessage | null>(

extensions/ql-vscode/src/view/data-flow-paths/DataFlowPaths.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export const DataFlowPaths = ({
3232
dataFlowPaths,
3333
}: {
3434
dataFlowPaths: DataFlowPathsDomainModel;
35-
}): JSX.Element => {
35+
}): React.JSX.Element => {
3636
const [selectedCodeFlow, setSelectedCodeFlow] = useState(
3737
dataFlowPaths.codeFlows[0],
3838
);

extensions/ql-vscode/src/view/data-flow-paths/DataFlowPathsView.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export type DataFlowPathsViewProps = {
99

1010
export function DataFlowPathsView({
1111
dataFlowPaths: initialDataFlowPaths,
12-
}: DataFlowPathsViewProps): JSX.Element {
12+
}: DataFlowPathsViewProps): React.JSX.Element {
1313
const [dataFlowPaths, setDataFlowPaths] = useState<
1414
DataFlowPathsDomainModel | undefined
1515
>(initialDataFlowPaths);

extensions/ql-vscode/src/view/method-modeling/MethodModeling.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export const MethodModeling = ({
6464
method,
6565
isModelingInProgress,
6666
onChange,
67-
}: MethodModelingProps): JSX.Element => {
67+
}: MethodModelingProps): React.JSX.Element => {
6868
return (
6969
<Container>
7070
<Title>

extensions/ql-vscode/src/view/method-modeling/MethodModelingInputs.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const MethodModelingInputs = ({
3939
modelingStatus,
4040
isModelingInProgress,
4141
onChange,
42-
}: MethodModelingInputsProps): JSX.Element => {
42+
}: MethodModelingInputsProps): React.JSX.Element => {
4343
const inputProps = {
4444
language,
4545
method,

extensions/ql-vscode/src/view/method-modeling/MethodModelingView.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ type Props = {
1616
initialViewState?: MethodModelingPanelViewState;
1717
};
1818

19-
export function MethodModelingView({ initialViewState }: Props): JSX.Element {
19+
export function MethodModelingView({
20+
initialViewState,
21+
}: Props): React.JSX.Element {
2022
const [viewState, setViewState] = useState<
2123
MethodModelingPanelViewState | undefined
2224
>(initialViewState);

extensions/ql-vscode/src/view/model-editor/MethodName.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const TypeMethodName = (method: Method) => {
2222
);
2323
};
2424

25-
export const MethodName = (method: Method): JSX.Element => {
25+
export const MethodName = (method: Method): React.JSX.Element => {
2626
return (
2727
<Name>
2828
{method.packageName && <>{method.packageName}.</>}

extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export function ModelEditor({
8585
initialMethods = [],
8686
initialModeledMethods = {},
8787
initialHideModeledMethods = INITIAL_HIDE_MODELED_METHODS_VALUE,
88-
}: Props): JSX.Element {
88+
}: Props): React.JSX.Element {
8989
const [viewState, setViewState] = useState<ModelEditorViewState | undefined>(
9090
initialViewState,
9191
);

extensions/ql-vscode/src/view/model-editor/ModelInputDropdown.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const ModelInputDropdown = ({
2727
modeledMethod,
2828
modelingStatus,
2929
onChange,
30-
}: Props): JSX.Element => {
30+
}: Props): React.JSX.Element => {
3131
const options = useMemo(() => {
3232
const modelsAsDataLanguage = getModelsAsDataLanguage(language);
3333

extensions/ql-vscode/src/view/model-editor/ModelOutputDropdown.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const ModelOutputDropdown = ({
2727
modeledMethod,
2828
modelingStatus,
2929
onChange,
30-
}: Props): JSX.Element => {
30+
}: Props): React.JSX.Element => {
3131
const options = useMemo(() => {
3232
const modelsAsDataLanguage = getModelsAsDataLanguage(language);
3333

extensions/ql-vscode/src/view/model-editor/ModelTypeDropdown.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const ModelTypeDropdown = ({
3131
modeledMethod,
3232
modelingStatus,
3333
onChange,
34-
}: Props): JSX.Element => {
34+
}: Props): React.JSX.Element => {
3535
const options = useMemo(() => {
3636
const baseOptions: Array<{ value: ModeledMethodType; label: string }> = [
3737
{ value: "none", label: "Unmodeled" },

extensions/ql-vscode/src/view/model-editor/ModelTypeTextbox.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const ModelTypeTextbox = ({
2424
typeInfo,
2525
onChange,
2626
...props
27-
}: Props): JSX.Element => {
27+
}: Props): React.JSX.Element => {
2828
const [value, setValue] = useState<string | undefined>(
2929
modeledMethod[typeInfo],
3030
);

extensions/ql-vscode/src/view/results/AlertTableNoResults.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ interface Props {
66
showRawResults: () => void;
77
}
88

9-
export function AlertTableNoResults(props: Props): JSX.Element {
9+
export function AlertTableNoResults(props: Props): React.JSX.Element {
1010
if (props.nonemptyRawResults) {
1111
return (
1212
<span>

extensions/ql-vscode/src/view/results/AlertTableTruncatedMessage.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ interface Props {
22
numTruncatedResults: number;
33
}
44

5-
export function AlertTableTruncatedMessage(props: Props): JSX.Element | null {
5+
export function AlertTableTruncatedMessage(
6+
props: Props,
7+
): React.JSX.Element | null {
68
if (props.numTruncatedResults === 0) {
79
return null;
810
}

extensions/ql-vscode/src/view/results/EmptyQueryResultsMessage.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const Container = styled.span`
1818
text-align: center;
1919
`;
2020

21-
export function EmptyQueryResultsMessage(): JSX.Element {
21+
export function EmptyQueryResultsMessage(): React.JSX.Element {
2222
return (
2323
<Root>
2424
<Container>

extensions/ql-vscode/src/view/results/ProblemsViewCheckbox.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ interface Props {
1010
handleCheckboxChanged: (event: React.ChangeEvent<HTMLInputElement>) => void;
1111
}
1212

13-
export function ProblemsViewCheckbox(props: Props): JSX.Element | null {
13+
export function ProblemsViewCheckbox(props: Props): React.JSX.Element | null {
1414
const { selectedTable, problemsViewSelected, handleCheckboxChanged } = props;
1515

1616
if (selectedTable !== ALERTS_TABLE_NAME) {

extensions/ql-vscode/src/view/results/RawTableValue.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default function RawTableValue({
1313
value,
1414
databaseUri,
1515
onSelected,
16-
}: Props): JSX.Element {
16+
}: Props): React.JSX.Element {
1717
switch (value.type) {
1818
case "boolean":
1919
return <span>{value.value.toString()}</span>;

extensions/ql-vscode/src/view/results/ResultCount.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function getResultCount(resultSet: ResultSet): number {
1414
}
1515
}
1616

17-
export function ResultCount(props: Props): JSX.Element | null {
17+
export function ResultCount(props: Props): React.JSX.Element | null {
1818
if (!props.resultSet) {
1919
return null;
2020
}

extensions/ql-vscode/src/view/results/locations/ClickableLocation.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function ClickableLocation({
2323
label,
2424
databaseUri,
2525
onClick: onClick,
26-
}: Props): JSX.Element {
26+
}: Props): React.JSX.Element {
2727
const handleClick = useCallback(
2828
(e: React.MouseEvent) => {
2929
e.preventDefault();

extensions/ql-vscode/src/view/results/locations/Location.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export function Location({
2222
databaseUri,
2323
title,
2424
onClick,
25-
}: Props): JSX.Element {
25+
}: Props): React.JSX.Element {
2626
const displayLabel = useMemo(() => convertNonPrintableChars(label), [label]);
2727

2828
if (loc === undefined) {

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function VariantAnalysis({
5151
variantAnalysis: initialVariantAnalysis,
5252
repoStates: initialRepoStates = [],
5353
repoResults: initialRepoResults = [],
54-
}: VariantAnalysisProps): JSX.Element {
54+
}: VariantAnalysisProps): React.JSX.Element {
5555
const [variantAnalysis, setVariantAnalysis] = useState<
5656
VariantAnalysisDomainModel | undefined
5757
>(initialVariantAnalysis);
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export type WebviewDefinition = {
2-
component: JSX.Element;
2+
component: React.JSX.Element;
33
};

extensions/ql-vscode/test/unit-tests/codeql-cli/distribution/releases-api-consumer.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ describe("Releases API consumer", () => {
115115

116116
await expect(
117117
consumer.getLatestRelease(new Range("5.*.*")),
118-
).rejects.toThrowError();
118+
).rejects.toThrow();
119119
});
120120

121121
it("picked release passes additional compatibility test if an additional compatibility test is specified", async () => {
@@ -140,7 +140,7 @@ describe("Releases API consumer", () => {
140140
(asset) => asset.name === "otherExampleAsset.txt",
141141
),
142142
),
143-
).rejects.toThrowError();
143+
).rejects.toThrow();
144144
});
145145

146146
it("picked release is the most recent prerelease when includePrereleases is set", async () => {

extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-results-manager.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ describe(VariantAnalysisResultsManager.name, () => {
154154
async function* generateInParts() {
155155
const partLength = fileContents.length / 5;
156156
for (let i = 0; i < 5; i++) {
157-
yield fileContents.slice(i * partLength, (i + 1) * partLength);
157+
yield fileContents.subarray(i * partLength, (i + 1) * partLength);
158158
}
159159
}
160160

extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -296,9 +296,7 @@ describe("local databases", () => {
296296
Uri.parse("file:/sourceArchive-uri/"),
297297
);
298298
(db as any).contents.sourceArchiveUri = undefined;
299-
expect(() => db.resolveSourceFile("abc")).toThrowError(
300-
"Scheme is missing",
301-
);
299+
expect(() => db.resolveSourceFile("abc")).toThrow("Scheme is missing");
302300
});
303301

304302
it("should fail to resolve when not a file uri", () => {
@@ -308,7 +306,7 @@ describe("local databases", () => {
308306
Uri.parse("file:/sourceArchive-uri/"),
309307
);
310308
(db as any).contents.sourceArchiveUri = undefined;
311-
expect(() => db.resolveSourceFile("http://abc")).toThrowError(
309+
expect(() => db.resolveSourceFile("http://abc")).toThrow(
312310
"Invalid uri scheme",
313311
);
314312
});

extensions/ql-vscode/test/vscode-tests/no-workspace/databases/github-databases/api.test.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ describe("listDatabases", () => {
123123
it("throws an error", async () => {
124124
await expect(
125125
listDatabases(owner, repo, credentials, config),
126-
).rejects.toThrowError("Not found");
126+
).rejects.toThrow("Not found");
127127
});
128128
});
129129

@@ -150,7 +150,7 @@ describe("listDatabases", () => {
150150
it("throws an error", async () => {
151151
await expect(
152152
listDatabases(owner, repo, credentials, config),
153-
).rejects.toThrowError("Internal server error");
153+
).rejects.toThrow("Internal server error");
154154
});
155155
});
156156
});
@@ -199,7 +199,7 @@ describe("listDatabases", () => {
199199
it("throws an error", async () => {
200200
await expect(
201201
listDatabases(owner, repo, credentials, config),
202-
).rejects.toThrowError("Internal server error");
202+
).rejects.toThrow("Internal server error");
203203
expect(mockListCodeqlDatabases).not.toHaveBeenCalled();
204204
});
205205
});
@@ -270,7 +270,7 @@ describe("listDatabases", () => {
270270
it("throws an error", async () => {
271271
await expect(
272272
listDatabases(owner, repo, credentials, config),
273-
).rejects.toThrowError("Not found");
273+
).rejects.toThrow("Not found");
274274
});
275275
});
276276

@@ -297,7 +297,7 @@ describe("listDatabases", () => {
297297
it("throws an error", async () => {
298298
await expect(
299299
listDatabases(owner, repo, credentials, config),
300-
).rejects.toThrowError("Internal server error");
300+
).rejects.toThrow("Internal server error");
301301
});
302302
});
303303
});

extensions/ql-vscode/test/vscode-tests/no-workspace/local-queries/query-resolver.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ describe("resolveQueries", () => {
112112
"tags contain": ["ide-contextual-queries/print-ast"],
113113
},
114114
),
115-
).rejects.toThrowError(
115+
).rejects.toThrow(
116116
'No my query queries (kind "graph", tagged "ide-contextual-queries/print-ast") could be found in the current library path (tried searching the following packs: my-qlpack). Try upgrading the CodeQL libraries. If that doesn\'t work, then my query queries are not yet available for this language.',
117117
);
118118
});

0 commit comments

Comments
 (0)