Enable more oxlint rules (#34189)
* Fix type imports * Fix jsdoc * Fixup types * Fix stray awaits on non-thenables * Fixup imports * Fix splats * Fix this-context on callbacks * Memoise react contexts * Prefer find/flatMap * Make oxlint happier about our React keys * Avoid unsafe default function params * Fixup jsdoc * Fixup contexts * Switch from eslint to oxlint * Some oxlint-related tweaks * Iterate * Partial revert to defer some changes and shrink diff * Iterate * Add eslint-plugin-element-call and enable the copyright rule * Set strictStorePkgContentCheck * Iterate * Enable forwardRef oxlint rule * Enable no-unused-vars oxlint rule * Enable no-implied-eval oxlint rule * Enable no-duplicate-type-constituents oxlint rule * Enable explicit-length-check oxlint rule * Enable prefer-number-properties oxlint rule * Enable no-callback-in-promise oxlint rule * Enable no-require-imports oxlint rule * Remove disablement of most unicorn oxlint rules * Enable no-conditional-tests oxlint rule * Enable promise-valid-params oxlint rule * Enable require-unicode-regexp oxlint rule * Remove max-len comments as we use oxfmt for formatting * Enable majority of oxlint `suspicious` rules * Iterate * Fix oxlint type-aware lint running without dependencies built
This commit is contained in:
@@ -36,8 +36,4 @@ export class TestSDKContext extends SDKContextClass {
|
||||
declare public _SlidingSyncManager?: SlidingSyncManager;
|
||||
declare public _SpaceStore?: SpaceStore;
|
||||
declare public _LegacyCallHandler?: LegacyCallHandler;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ import AskInviteAnywayDialog, {
|
||||
import SettingsStore from "../../../../../src/settings/SettingsStore";
|
||||
|
||||
describe("AskInviteaAnywayDialog", () => {
|
||||
const onFinished: jest.Mock<any, any> = jest.fn();
|
||||
const onGiveUp: jest.Mock<any, any> = jest.fn();
|
||||
const onInviteAnyways: jest.Mock<any, any> = jest.fn();
|
||||
const onFinished = jest.fn();
|
||||
const onGiveUp = jest.fn();
|
||||
const onInviteAnyways = jest.fn();
|
||||
|
||||
function renderComponent(props: Partial<AskInviteAnywayDialogProps> = {}): RenderResult {
|
||||
return render(
|
||||
|
||||
@@ -22,7 +22,7 @@ import { BugReportEndpointURLLocal } from "../../../../../src/IConfigOptions";
|
||||
const BUG_REPORT_URL = "https://example.org/submit";
|
||||
|
||||
describe("BugReportDialog", () => {
|
||||
const onFinished: jest.Mock<any, any> = jest.fn();
|
||||
const onFinished = jest.fn();
|
||||
|
||||
function renderComponent(props: Partial<BugReportDialogProps> = {}): RenderResult {
|
||||
return render(<BugReportDialog onFinished={onFinished} />);
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import SdkConfig from "../../../../../src/SdkConfig";
|
||||
import { DeclineAndBlockInviteDialog } from "../../../../../src/components/views/dialogs/DeclineAndBlockInviteDialog";
|
||||
|
||||
describe("ConfirmRejectInviteDialog", () => {
|
||||
const onFinished: jest.Mock<any, any> = jest.fn();
|
||||
const onFinished = jest.fn();
|
||||
|
||||
const MY_ROOM_NAME = "foo";
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ function makeMockSasCallbacks(): ShowSasCallbacks {
|
||||
const unicorn: EmojiMapping = ["🦄", "unicorn"];
|
||||
return {
|
||||
sas: {
|
||||
emoji: new Array<EmojiMapping>(7).fill(unicorn),
|
||||
emoji: Array.from<EmojiMapping>({ length: 7 }).map(() => unicorn),
|
||||
},
|
||||
cancel: jest.fn(),
|
||||
confirm: jest.fn(),
|
||||
|
||||
@@ -17,8 +17,8 @@ const ROOM_ID = "!foo:bar";
|
||||
const REASON = "This room is bad!";
|
||||
|
||||
describe("ReportRoomDialog", () => {
|
||||
const onFinished: jest.Mock<any, any> = jest.fn();
|
||||
const reportRoom: jest.Mock<any, any> = jest.fn();
|
||||
const onFinished: jest.Mock = jest.fn();
|
||||
const reportRoom: jest.Mock = jest.fn();
|
||||
beforeEach(() => {
|
||||
jest.resetAllMocks();
|
||||
const client = stubClient();
|
||||
|
||||
@@ -22,6 +22,7 @@ describe("<SyntaxHighlight />", () => {
|
||||
it.each(["json", "javascript", "css"])("uses the provided language", async (lang) => {
|
||||
const mock = jest.spyOn(hljs, "highlight");
|
||||
|
||||
// oxlint-disable-next-line react/jsx-no-comment-textnodes
|
||||
const { container } = render(<SyntaxHighlight language={lang}>// Hello, World</SyntaxHighlight>);
|
||||
await waitFor(() => expect(container.querySelector(`.language-${lang}`)).toBeTruthy());
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ describe("MLocationBody", () => {
|
||||
});
|
||||
|
||||
describe("with error", () => {
|
||||
let sdkConfigSpy: jest.SpyInstance<any>;
|
||||
let sdkConfigSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(() => {
|
||||
// eat expected errors to keep console clean
|
||||
|
||||
@@ -206,7 +206,7 @@ function makeMockSasCallbacks(): ShowSasCallbacks {
|
||||
const unicorn: EmojiMapping = ["🦄", "unicorn"];
|
||||
return {
|
||||
sas: {
|
||||
emoji: new Array<EmojiMapping>(7).fill(unicorn),
|
||||
emoji: Array.from<EmojiMapping>({ length: 7 }).map(() => unicorn),
|
||||
},
|
||||
cancel: jest.fn(),
|
||||
confirm: jest.fn(),
|
||||
|
||||
@@ -316,7 +316,7 @@ describe("editor/deserialize", function () {
|
||||
});
|
||||
it("escapes backticks in code blocks", () => {
|
||||
const html =
|
||||
"<p><code>this → ` is a backtick</code></p>" + "<pre><code>and here are 3 of them:\n```</code></pre>";
|
||||
"<p><code>this → ` is a backtick</code></p><pre><code>and here are 3 of them:\n```</code></pre>";
|
||||
const parts = normalize(parseEvent(htmlMessage(html), createPartCreator()));
|
||||
expect(parts).toMatchSnapshot();
|
||||
});
|
||||
|
||||
@@ -121,7 +121,7 @@ describe("RoomListStoreV3", () => {
|
||||
|
||||
// Let's pretend like a new timeline event came on the room in 37th index.
|
||||
const room = rooms[37];
|
||||
const event = mkMessage({ room: room.roomId, user: `@foo${3}:matrix.org`, ts: 1000, event: true });
|
||||
const event = mkMessage({ room: room.roomId, user: "@foo3:matrix.org", ts: 1000, event: true });
|
||||
jest.spyOn(room.getLiveTimeline(), "getEvents").mockReturnValue([event]);
|
||||
|
||||
const payload = {
|
||||
@@ -1349,7 +1349,7 @@ describe("RoomListStoreV3", () => {
|
||||
// Let's say that rooms 14 and 34 get new messages in that order
|
||||
let ts = 1000;
|
||||
for (const room of [rooms[14], rooms[34]]) {
|
||||
const event = mkMessage({ room: room.roomId, user: `@foo${3}:matrix.org`, ts: 1000, event: true });
|
||||
const event = mkMessage({ room: room.roomId, user: `@foo3:matrix.org`, ts: 1000, event: true });
|
||||
jest.spyOn(room.getLiveTimeline(), "getEvents").mockReturnValue([event]);
|
||||
|
||||
const payload = {
|
||||
|
||||
@@ -21,7 +21,7 @@ describe("theme", () => {
|
||||
let lightCustomTheme: HTMLStyleElement;
|
||||
|
||||
let spyQuerySelectorAll: jest.MockInstance<NodeListOf<Element>, [selectors: string]>;
|
||||
let spyClassList: jest.SpyInstance<void, string[], any>;
|
||||
let spyClassList: jest.SpyInstance<void, string[]>;
|
||||
|
||||
beforeAll(() => {
|
||||
const meta = document.createElement("meta");
|
||||
|
||||
@@ -57,7 +57,7 @@ const TEST_VECTORS = [
|
||||
"bWnSXS9oymiqwUIGs08sXI33ZA==\n" +
|
||||
"-----END MEGOLM SESSION DATA-----",
|
||||
],
|
||||
];
|
||||
] as const;
|
||||
|
||||
function stringToArray(s: string): ArrayBuffer {
|
||||
return new TextEncoder().encode(s).buffer as ArrayBuffer;
|
||||
@@ -120,20 +120,9 @@ cissyYBxjsfsAn
|
||||
);
|
||||
});
|
||||
|
||||
// TODO find a subtlecrypto shim which doesn't break this test
|
||||
it.skip("should decrypt a range of inputs", function () {
|
||||
function next(i: number): Promise<string | undefined> | undefined {
|
||||
if (i >= TEST_VECTORS.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const [plain, password, input] = TEST_VECTORS[i];
|
||||
return MegolmExportEncryption.decryptMegolmKeyFile(stringToArray(input), password).then((decrypted) => {
|
||||
expect(decrypted).toEqual(plain);
|
||||
return next(i + 1);
|
||||
});
|
||||
}
|
||||
next(0);
|
||||
it.skip.each(TEST_VECTORS)("should decrypt a range of inputs", async (plain, password, input) => {
|
||||
const decrypted = await MegolmExportEncryption.decryptMegolmKeyFile(stringToArray(input), password);
|
||||
expect(decrypted).toEqual(plain);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -647,9 +647,9 @@ describe("HTMLExport", () => {
|
||||
await exporter.export();
|
||||
const html = await getMessageFile(exporter).text();
|
||||
|
||||
expect(html).not.toContain(`${name}`);
|
||||
expect(html).toContain(`${escapeHtml(name)}`);
|
||||
expect(html).not.toContain(`${topic}`);
|
||||
expect(html).not.toContain(name);
|
||||
expect(html).toContain(escapeHtml(name));
|
||||
expect(html).not.toContain(topic);
|
||||
expect(html).toContain(`Topic: ${escapeHtml(topic)}`);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user