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": { "rules": {
"no-unused-vars": "off", "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": { "rules": {
"no-unused-vars": "off", "no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-explicit-any": "error",
"no-throw-literal": "error",
// TODO: remove those ignored rules and write a stronger code! // TODO: remove those ignored rules and write a stronger code!
"@typescript-eslint/no-unsafe-call": "off", "@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/restrict-plus-operands": "off", "@typescript-eslint/restrict-plus-operands": "off",

View file

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

View file

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

View file

@ -106,10 +106,10 @@ class ConnectionManager {
const code = urlParams.get("code"); const code = urlParams.get("code");
const state = urlParams.get("state"); const state = urlParams.get("state");
if (!state || !localUserStore.verifyState(state)) { if (!state || !localUserStore.verifyState(state)) {
throw "Could not validate state!"; throw new Error("Could not validate state!");
} }
if (!code) { if (!code) {
throw "No Auth code provided"; throw new Error("No Auth code provided");
} }
localUserStore.setCode(code); localUserStore.setCode(code);
} }
@ -333,10 +333,10 @@ class ConnectionManager {
if (!token) { if (!token) {
if (!state || !localUserStore.verifyState(state)) { if (!state || !localUserStore.verifyState(state)) {
throw "Could not validate state!"; throw new Error("Could not validate state!");
} }
if (!code) { 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`, { 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 { 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; return this.userId;
} }

View file

@ -90,7 +90,7 @@ export const getRessourceDescriptor = (
const playerResource = LAYERS[i][textureName]; const playerResource = LAYERS[i][textureName];
if (playerResource !== undefined) return playerResource; 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 = ( export const createLoadingPromise = (

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -25,6 +25,7 @@
], ],
"rules": { "rules": {
"no-unused-vars": "off", "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 { try {
if (typeof body.roomId !== "string") { if (typeof body.roomId !== "string") {
throw "Incorrect roomId parameter"; throw new Error("Incorrect roomId parameter");
} }
const roomId: string = body.roomId; const roomId: string = body.roomId;
@ -86,13 +86,13 @@ export class AdminController extends BaseController {
try { try {
if (typeof body.text !== "string") { if (typeof body.text !== "string") {
throw "Incorrect text parameter"; throw new Error("Incorrect text parameter");
} }
if (body.type !== "capacity" && body.type !== "message") { if (body.type !== "capacity" && body.type !== "message") {
throw "Incorrect type parameter"; throw new Error("Incorrect type parameter");
} }
if (!body.targets || typeof body.targets !== "object") { if (!body.targets || typeof body.targets !== "object") {
throw "Incorrect targets parameter"; throw new Error("Incorrect targets parameter");
} }
const text: string = body.text; const text: string = body.text;
const type: string = body.type; const type: string = body.type;

View file

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

View file

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

View file

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