Stopping sending literal errors

Errors now must be of "Error" type.
Rule added in eslint.
This commit is contained in:
David Négrier 2022-01-06 10:49:44 +01:00
parent 88509916a8
commit ab0f5e9837
19 changed files with 31 additions and 28 deletions

View file

@ -25,6 +25,7 @@
],
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "error"
"@typescript-eslint/no-explicit-any": "error",
"no-throw-literal": "error"
}
}

View file

@ -34,6 +34,7 @@ module.exports = {
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "error",
"no-throw-literal": "error",
// TODO: remove those ignored rules and write a stronger code!
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/restrict-plus-operands": "off",

View file

@ -26,7 +26,7 @@
const selectedFile = inputAudio.files ? inputAudio.files[0] : null;
if (!selectedFile) {
errorFile = true;
throw "no file selected";
throw new Error("no file selected");
}
const fd = new FormData();

View file

@ -76,7 +76,7 @@
break;
}
}
} else throw "There is no menu called " + menu;
} else throw new Error("There is no menu called " + menu);
}
function closeMenu() {

View file

@ -106,10 +106,10 @@ class ConnectionManager {
const code = urlParams.get("code");
const state = urlParams.get("state");
if (!state || !localUserStore.verifyState(state)) {
throw "Could not validate state!";
throw new Error("Could not validate state!");
}
if (!code) {
throw "No Auth code provided";
throw new Error("No Auth code provided");
}
localUserStore.setCode(code);
}
@ -333,10 +333,10 @@ class ConnectionManager {
if (!token) {
if (!state || !localUserStore.verifyState(state)) {
throw "Could not validate state!";
throw new Error("Could not validate state!");
}
if (!code) {
throw "No Auth code provided";
throw new Error("No Auth code provided");
}
}
const { authToken, userUuid, textures, email } = await Axios.get(`${PUSHER_URL}/login-callback`, {

View file

@ -691,7 +691,7 @@ export class RoomConnection implements RoomConnection {
}
public getUserId(): number {
if (this.userId === null) throw "UserId cannot be null!";
if (this.userId === null) throw new Error("UserId cannot be null!");
return this.userId;
}

View file

@ -90,7 +90,7 @@ export const getRessourceDescriptor = (
const playerResource = LAYERS[i][textureName];
if (playerResource !== undefined) return playerResource;
}
throw "Could not find a data for texture " + textureName;
throw new Error("Could not find a data for texture " + textureName);
};
export const createLoadingPromise = (

View file

@ -66,7 +66,7 @@ export class GameManager {
getCharacterLayers(): string[] {
if (!this.characterLayers) {
throw "characterLayers are not set";
throw new Error("characterLayers are not set");
}
return this.characterLayers;
}
@ -119,7 +119,7 @@ export class GameManager {
* This will close the socket connections and stop the gameScene, but won't remove it.
*/
leaveGame(targetSceneName: string, sceneClass: Phaser.Scene): void {
if (this.currentGameSceneName === null) throw "No current scene id set!";
if (this.currentGameSceneName === null) throw new Error("No current scene id set!");
const gameScene: GameScene = this.scenePlugin.get(this.currentGameSceneName) as GameScene;
gameScene.cleanupClosingScene();
gameScene.createSuccessorGameScene(false, false);
@ -143,7 +143,7 @@ export class GameManager {
}
public getCurrentGameScene(): GameScene {
if (this.currentGameSceneName === null) throw "No current scene id set!";
if (this.currentGameSceneName === null) throw new Error("No current scene id set!");
return this.scenePlugin.get(this.currentGameSceneName) as GameScene;
}

View file

@ -453,7 +453,7 @@ export class GameScene extends DirtyScene {
const playerName = gameManager.getPlayerName();
if (!playerName) {
throw "playerName is not set";
throw new Error("playerName is not set");
}
this.playerName = playerName;
this.characterLayers = gameManager.getCharacterLayers();

View file

@ -48,7 +48,7 @@ export class CustomizeScene extends AbstractCharacterScene {
bodyResourceDescription.level < 0 ||
bodyResourceDescription.level > 5
) {
throw "Texture level is null";
throw new Error("Texture level is null");
}
this.layers[bodyResourceDescription.level].unshift(bodyResourceDescription);
});

View file

@ -26,7 +26,7 @@ export interface ChatMessage {
function getAuthor(authorId: number): PlayerInterface {
const author = playersStore.getPlayerById(authorId);
if (!author) {
throw "Could not find data for author " + authorId;
throw new Error("Could not find data for author " + authorId);
}
return author;
}

View file

@ -62,7 +62,7 @@ function hsv_to_rgb(hue: number, saturation: number, brightness: number): { r: n
b = q;
break;
default:
throw "h_i cannot be " + h_i;
throw new Error("h_i cannot be " + h_i);
}
return {
r,

View file

@ -22,7 +22,7 @@ export function getNavigatorType(): NavigatorType {
} else if (window.navigator.userAgent.includes("Safari")) {
return NavigatorType.safari;
}
throw "Couldn't detect navigator type";
throw new Error("Couldn't detect navigator type");
}
export function isAndroid(): boolean {
return window.navigator.userAgent.includes("Android");

View file

@ -123,7 +123,7 @@ export class SimplePeer {
peerConnection.destroy();
const peerConnexionDeleted = this.PeerConnectionArray.delete(user.userId);
if (!peerConnexionDeleted) {
throw "Error to delete peer connection";
throw new Error("Error to delete peer connection");
}
//return this.createPeerConnection(user, localStream);
} else {
@ -177,7 +177,7 @@ export class SimplePeer {
peerConnection.destroy();
const peerConnexionDeleted = this.PeerScreenSharingConnectionArray.delete(user.userId);
if (!peerConnexionDeleted) {
throw "Error to delete peer connection";
throw new Error("Error to delete peer connection");
}
this.createPeerConnection(user);
} else {
@ -229,7 +229,7 @@ export class SimplePeer {
const userIndex = this.Users.findIndex((user) => user.userId === userId);
if (userIndex < 0) {
throw "Couldn't delete user";
throw new Error("Couldn't delete user");
} else {
this.Users.splice(userIndex, 1);
}

View file

@ -25,6 +25,7 @@
],
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "error"
"@typescript-eslint/no-explicit-any": "error",
"no-throw-literal": "error"
}
}

View file

@ -39,7 +39,7 @@ export class AdminController extends BaseController {
try {
if (typeof body.roomId !== "string") {
throw "Incorrect roomId parameter";
throw new Error("Incorrect roomId parameter");
}
const roomId: string = body.roomId;
@ -86,13 +86,13 @@ export class AdminController extends BaseController {
try {
if (typeof body.text !== "string") {
throw "Incorrect text parameter";
throw new Error("Incorrect text parameter");
}
if (body.type !== "capacity" && body.type !== "message") {
throw "Incorrect type parameter";
throw new Error("Incorrect type parameter");
}
if (!body.targets || typeof body.targets !== "object") {
throw "Incorrect targets parameter";
throw new Error("Incorrect targets parameter");
}
const text: string = body.text;
const type: string = body.type;

View file

@ -32,7 +32,7 @@ export class AuthenticateController extends BaseController {
try {
const { nonce, state, playUri, redirect } = parse(req.getQuery());
if (!state || !nonce) {
throw "missing state and nonce URL parameters";
throw new Error("missing state and nonce URL parameters");
}
const loginUri = await openIDClient.authorizationUrl(

View file

@ -27,7 +27,7 @@ export class OpenIdProfileController extends BaseController {
try {
const resCheckTokenAuth = await openIDClient.checkTokenAuth(accessToken as string);
if (!resCheckTokenAuth.email) {
throw "Email was not found";
throw new Error("Email was not found");
}
res.end(
this.buildHtml(

View file

@ -671,7 +671,7 @@ export class SocketManager implements ZoneEventListener {
playGlobalMessageEvent: PlayGlobalMessage
): Promise<void> {
if (!client.tags.includes("admin")) {
throw "Client is not an admin!";
throw new Error("Client is not an admin!");
}
const clientRoomUrl = client.roomId;