Add typecheck quality gate (#814)

This commit is contained in:
Manuel Stahl
2026-03-19 22:31:16 +01:00
committed by GitHub
parent 64a7bbf9f1
commit af306d2d05
5 changed files with 16 additions and 11 deletions
+3 -1
View File
@@ -20,7 +20,9 @@ jobs:
node-version: 24
- name: Install dependencies
run: yarn --immutable
- name: Run checks
- name: Run lint
run: yarn lint
- name: Run typecheck
run: yarn typecheck
- name: Run tests
run: yarn test
+1
View File
@@ -91,6 +91,7 @@
"coverage:badge": "node ./scripts/generate-coverage-badge.mjs",
"lint": "eslint --ignore-path .gitignore --ext .ts,.tsx,.yml,.yaml .",
"fix": "yarn lint --fix",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"test:watch": "vitest watch",
+3 -1
View File
@@ -88,11 +88,13 @@ const ReportShowActions = () => {
);
};
const ReceivedTsField = (props: any) => <DateField {...props} showTime options={DATE_FORMAT} />;
export const ReportList = (props: ListProps) => (
<List {...props} pagination={<ReportPagination />} sort={{ field: "received_ts", order: "DESC" }}>
<DataTable rowClick="show" bulkActionButtons={false}>
<DataTable.Col source="id" />
<DataTable.Col source="received_ts" field={DateField} fieldProps={{ showTime: true, options: DATE_FORMAT }} />
<DataTable.Col source="received_ts" field={ReceivedTsField} />
<DataTable.Col source="user_id" />
<DataTable.NumberCol source="score" />
<DataTable.Col source="name" />
+8 -8
View File
@@ -376,37 +376,37 @@ describe("dataProvider", () => {
it("deletes various resources using their custom configurations", async () => {
fetchMock.mockResponse(JSON.stringify({}));
await dataProvider.delete("rooms", { id: "room1", previousData: {} });
await dataProvider.delete("rooms", { id: "room1", previousData: { id: "room1" } });
expect(fetchMock).toHaveBeenCalledWith(
"http://localhost/_synapse/admin/v2/rooms/room1",
expect.objectContaining({ method: "DELETE", body: '{"block":false}' })
);
await dataProvider.delete("users_media", { id: "media1", previousData: {} });
await dataProvider.delete("users_media", { id: "media1", previousData: { id: "media1" } });
expect(fetchMock).toHaveBeenCalledWith(
"http://localhost/_synapse/admin/v1/media/matrix.example.com/media1",
expect.objectContaining({ method: "DELETE" })
);
await dataProvider.delete("protect_media", { id: "media1", previousData: {} });
await dataProvider.delete("protect_media", { id: "media1", previousData: { id: "media1" } });
expect(fetchMock).toHaveBeenCalledWith(
"http://localhost/_synapse/admin/v1/media/unprotect/media1",
expect.objectContaining({ method: "POST" })
);
await dataProvider.delete("quarantine_media", { id: "media1", previousData: {} });
await dataProvider.delete("quarantine_media", { id: "media1", previousData: { id: "media1" } });
expect(fetchMock).toHaveBeenCalledWith(
"http://localhost/_synapse/admin/v1/media/unquarantine/matrix.example.com/media1",
expect.objectContaining({ method: "POST" })
);
await dataProvider.delete("forward_extremities", { id: "room1", previousData: {} });
await dataProvider.delete("forward_extremities", { id: "room1", previousData: { id: "room1" } });
expect(fetchMock).toHaveBeenCalledWith(
"http://localhost/_synapse/admin/v1/rooms/room1/forward_extremities",
expect.objectContaining({ method: "DELETE" })
);
await dataProvider.delete("destinations", { id: "dest1", previousData: {} });
await dataProvider.delete("destinations", { id: "dest1", previousData: { id: "dest1" } });
expect(fetchMock).toHaveBeenCalledWith(
"http://localhost/_synapse/admin/v1/federation/destinations/dest1/reset_connection",
expect.objectContaining({ method: "POST" })
@@ -415,11 +415,11 @@ describe("dataProvider", () => {
it("deletes single resources using custom methods and fallback body logic", async () => {
fetchMock.mockResponseOnce(JSON.stringify({}));
await deleteResource("devices", { id: "D1", previousData: { user_id: "@u:example.com" } });
await deleteResource("devices", { id: "D1", previousData: { id: "D1", user_id: "@u:example.com" } });
expect(fetchMock.mock.calls[0]?.[1]?.body).toBeNull();
fetchMock.mockResponseOnce(JSON.stringify({ id: "deleted" }));
await deleteResource("users", { id: "@user:matrix.example.com", previousData: {} });
await deleteResource("users", { id: "@user:matrix.example.com", previousData: { id: "@user:matrix.example.com" } });
expect(fetchMock.mock.calls[1]?.[1]?.method).toBe("POST");
expect(fetchMock.mock.calls[1]?.[1]?.body).toBe('{"erase":true}');
});
+1 -1
View File
@@ -57,7 +57,7 @@
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
"skipLibCheck": false
"skipLibCheck": true
},
"include": ["src"],
"references": [{ "path": "./tsconfig.vite.json" }]