Apply more strict typescript around the codebase (#2778)

* Apply more strict typescript around the codebase

* Fix tests

* Revert strict mode commit

* Iterate strict

* Iterate

* Iterate strict

* Iterate

* Fix tests

* Iterate

* Iterate strict

* Add tests

* Iterate

* Iterate

* Fix tests

* Fix tests

* Strict types be strict

* Fix types

* detectOpenHandles

* Strict

* Fix client not stopping

* Add sync peeking tests

* Make test happier

* More strict

* Iterate

* Stabilise

* Moar strictness

* Improve coverage

* Fix types

* Fix types

* Improve types further

* Fix types

* Improve typing of NamespacedValue

* Fix types
This commit is contained in:
Michael Telatynski
2022-10-21 11:44:40 +01:00
committed by GitHub
parent fdbbd9bca4
commit 867a0ca7ee
94 changed files with 1980 additions and 1735 deletions
+7 -1
View File
@@ -15,6 +15,7 @@ limitations under the License.
*/
import { IUsageLimit } from "../@types/partials";
import { MatrixEvent } from "../models/event";
interface IErrorJson extends Partial<IUsageLimit> {
[key: string]: any; // extensible
@@ -50,7 +51,12 @@ export class MatrixError extends HTTPError {
public readonly errcode?: string;
public readonly data: IErrorJson;
constructor(errorJson: IErrorJson = {}, public readonly httpStatus?: number, public url?: string) {
constructor(
errorJson: IErrorJson = {},
public readonly httpStatus?: number,
public url?: string,
public event?: MatrixEvent,
) {
let message = errorJson.error || "Unknown message";
if (httpStatus) {
message = `[${httpStatus}] ${message}`;
+4 -4
View File
@@ -73,7 +73,7 @@ export class FetchHttpApi<O extends IHttpOpts> {
public idServerRequest<T extends {}>(
method: Method,
path: string,
params: Record<string, string | string[]>,
params: Record<string, string | string[]> | undefined,
prefix: string,
accessToken?: string,
): Promise<ResponseType<T, O>> {
@@ -96,7 +96,7 @@ export class FetchHttpApi<O extends IHttpOpts> {
headers: {},
};
if (accessToken) {
opts.headers.Authorization = `Bearer ${accessToken}`;
opts.headers!.Authorization = `Bearer ${accessToken}`;
}
return this.requestOtherUrl(method, fullUri, body, opts);
@@ -286,10 +286,10 @@ export class FetchHttpApi<O extends IHttpOpts> {
credentials: "omit", // we send credentials via headers
});
} catch (e) {
if (e.name === "AbortError") {
if ((<Error>e).name === "AbortError") {
throw e;
}
throw new ConnectionError("fetch failed", e);
throw new ConnectionError("fetch failed", <Error>e);
} finally {
cleanup();
}
+2 -2
View File
@@ -72,11 +72,11 @@ export function anySignal(signals: AbortSignal[]): {
* @returns {Error}
*/
export function parseErrorResponse(response: XMLHttpRequest | Response, body?: string): Error {
let contentType: ParsedMediaType;
let contentType: ParsedMediaType | null;
try {
contentType = getResponseContentType(response);
} catch (e) {
return e;
return <Error>e;
}
if (contentType?.type === "application/json" && body) {