Browse Source

refactor: Replaced jsdoc with tsdoc

Owen Diffey 2 years ago
parent
commit
61eedea54c

+ 2 - 14
backend/.eslintrc

@@ -13,11 +13,10 @@
 		"eslint:recommended",
 		"airbnb-base",
 		"prettier",
-		"plugin:jsdoc/recommended",
 		"plugin:@typescript-eslint/eslint-recommended",
 		"plugin:@typescript-eslint/recommended"
 	],
-	"plugins": ["prettier", "jsdoc", "@typescript-eslint"],
+	"plugins": ["prettier", "eslint-plugin-tsdoc", "@typescript-eslint"],
 	"rules": {
 		"no-console": 0,
 		"no-control-regex": 0,
@@ -43,18 +42,7 @@
 		"implicit-arrow-linebreak": 0,
 		"import/extensions": 0,
 		"class-methods-use-this": 0,
-		"require-jsdoc": [
-			2,
-			{
-				"require": {
-					"FunctionDeclaration": true,
-					"MethodDefinition": true,
-					"ClassDeclaration": false,
-					"ArrowFunctionExpression": false,
-					"FunctionExpression": false
-				}
-			}
-		],
+		"tsdoc/syntax": "warn",
 		"@typescript-eslint/no-empty-function": 0,
 		"@typescript-eslint/no-this-alias": 0,
 		"@typescript-eslint/no-non-null-assertion": 0

+ 95 - 176
backend/package-lock.json

@@ -30,6 +30,7 @@
 				"ws": "^8.9.0"
 			},
 			"devDependencies": {
+				"@microsoft/tsdoc": "^0.14.2",
 				"@types/async": "^3.2.15",
 				"@types/config": "^3.3.0",
 				"@typescript-eslint/eslint-plugin": "^5.40.0",
@@ -38,8 +39,8 @@
 				"eslint-config-airbnb-base": "^15.0.0",
 				"eslint-config-prettier": "^8.5.0",
 				"eslint-plugin-import": "^2.26.0",
-				"eslint-plugin-jsdoc": "^39.3.6",
 				"eslint-plugin-prettier": "^4.2.1",
+				"eslint-plugin-tsdoc": "^0.2.17",
 				"prettier": "2.7.1",
 				"trace-unhandled": "^2.0.1",
 				"ts-node": "^10.9.1",
@@ -59,20 +60,6 @@
 				"node": ">=12"
 			}
 		},
-		"node_modules/@es-joy/jsdoccomment": {
-			"version": "0.31.0",
-			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz",
-			"integrity": "sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ==",
-			"dev": true,
-			"dependencies": {
-				"comment-parser": "1.3.1",
-				"esquery": "^1.4.0",
-				"jsdoc-type-pratt-parser": "~3.1.0"
-			},
-			"engines": {
-				"node": "^14 || ^16 || ^17 || ^18"
-			}
-		},
 		"node_modules/@eslint/eslintrc": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
@@ -219,6 +206,37 @@
 				"node-pre-gyp": "bin/node-pre-gyp"
 			}
 		},
+		"node_modules/@microsoft/tsdoc": {
+			"version": "0.14.2",
+			"resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
+			"integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+			"dev": true
+		},
+		"node_modules/@microsoft/tsdoc-config": {
+			"version": "0.16.2",
+			"resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
+			"integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
+			"dev": true,
+			"dependencies": {
+				"@microsoft/tsdoc": "0.14.2",
+				"ajv": "~6.12.6",
+				"jju": "~1.4.0",
+				"resolve": "~1.19.0"
+			}
+		},
+		"node_modules/@microsoft/tsdoc-config/node_modules/resolve": {
+			"version": "1.19.0",
+			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+			"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+			"dev": true,
+			"dependencies": {
+				"is-core-module": "^2.1.0",
+				"path-parse": "^1.0.6"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/@nodelib/fs.scandir": {
 			"version": "2.1.5",
 			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -1188,15 +1206,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/comment-parser": {
-			"version": "1.3.1",
-			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
-			"integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
-			"dev": true,
-			"engines": {
-				"node": ">= 12.0.0"
-			}
-		},
 		"node_modules/concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1713,50 +1722,6 @@
 				"node": ">=0.10.0"
 			}
 		},
-		"node_modules/eslint-plugin-jsdoc": {
-			"version": "39.3.6",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.6.tgz",
-			"integrity": "sha512-R6dZ4t83qPdMhIOGr7g2QII2pwCjYyKP+z0tPOfO1bbAbQyKC20Y2Rd6z1te86Lq3T7uM8bNo+VD9YFpE8HU/g==",
-			"dev": true,
-			"dependencies": {
-				"@es-joy/jsdoccomment": "~0.31.0",
-				"comment-parser": "1.3.1",
-				"debug": "^4.3.4",
-				"escape-string-regexp": "^4.0.0",
-				"esquery": "^1.4.0",
-				"semver": "^7.3.7",
-				"spdx-expression-parse": "^3.0.1"
-			},
-			"engines": {
-				"node": "^14 || ^16 || ^17 || ^18"
-			},
-			"peerDependencies": {
-				"eslint": "^7.0.0 || ^8.0.0"
-			}
-		},
-		"node_modules/eslint-plugin-jsdoc/node_modules/debug": {
-			"version": "4.3.4",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-			"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-			"dev": true,
-			"dependencies": {
-				"ms": "2.1.2"
-			},
-			"engines": {
-				"node": ">=6.0"
-			},
-			"peerDependenciesMeta": {
-				"supports-color": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/eslint-plugin-jsdoc/node_modules/ms": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-			"dev": true
-		},
 		"node_modules/eslint-plugin-prettier": {
 			"version": "4.2.1",
 			"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
@@ -1778,6 +1743,16 @@
 				}
 			}
 		},
+		"node_modules/eslint-plugin-tsdoc": {
+			"version": "0.2.17",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz",
+			"integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==",
+			"dev": true,
+			"dependencies": {
+				"@microsoft/tsdoc": "0.14.2",
+				"@microsoft/tsdoc-config": "0.16.2"
+			}
+		},
 		"node_modules/eslint-scope": {
 			"version": "7.1.1",
 			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
@@ -2887,6 +2862,12 @@
 			"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
 			"dev": true
 		},
+		"node_modules/jju": {
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
+			"integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
+			"dev": true
+		},
 		"node_modules/js-sdsl": {
 			"version": "4.1.5",
 			"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz",
@@ -2905,15 +2886,6 @@
 				"js-yaml": "bin/js-yaml.js"
 			}
 		},
-		"node_modules/jsdoc-type-pratt-parser": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz",
-			"integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==",
-			"dev": true,
-			"engines": {
-				"node": ">=12.0.0"
-			}
-		},
 		"node_modules/json-schema-traverse": {
 			"version": "0.4.1",
 			"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -4072,28 +4044,6 @@
 				"node": ">=8"
 			}
 		},
-		"node_modules/spdx-exceptions": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-			"dev": true
-		},
-		"node_modules/spdx-expression-parse": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-			"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-			"dev": true,
-			"dependencies": {
-				"spdx-exceptions": "^2.1.0",
-				"spdx-license-ids": "^3.0.0"
-			}
-		},
-		"node_modules/spdx-license-ids": {
-			"version": "3.0.11",
-			"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
-			"integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
-			"dev": true
-		},
 		"node_modules/statuses": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@@ -4691,17 +4641,6 @@
 				"@jridgewell/trace-mapping": "0.3.9"
 			}
 		},
-		"@es-joy/jsdoccomment": {
-			"version": "0.31.0",
-			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz",
-			"integrity": "sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ==",
-			"dev": true,
-			"requires": {
-				"comment-parser": "1.3.1",
-				"esquery": "^1.4.0",
-				"jsdoc-type-pratt-parser": "~3.1.0"
-			}
-		},
 		"@eslint/eslintrc": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
@@ -4814,6 +4753,36 @@
 				"tar": "^6.1.11"
 			}
 		},
+		"@microsoft/tsdoc": {
+			"version": "0.14.2",
+			"resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
+			"integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+			"dev": true
+		},
+		"@microsoft/tsdoc-config": {
+			"version": "0.16.2",
+			"resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
+			"integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
+			"dev": true,
+			"requires": {
+				"@microsoft/tsdoc": "0.14.2",
+				"ajv": "~6.12.6",
+				"jju": "~1.4.0",
+				"resolve": "~1.19.0"
+			},
+			"dependencies": {
+				"resolve": {
+					"version": "1.19.0",
+					"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+					"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+					"dev": true,
+					"requires": {
+						"is-core-module": "^2.1.0",
+						"path-parse": "^1.0.6"
+					}
+				}
+			}
+		},
 		"@nodelib/fs.scandir": {
 			"version": "2.1.5",
 			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -5500,12 +5469,6 @@
 				"delayed-stream": "~1.0.0"
 			}
 		},
-		"comment-parser": {
-			"version": "1.3.1",
-			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
-			"integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
-			"dev": true
-		},
 		"concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -5981,38 +5944,6 @@
 				}
 			}
 		},
-		"eslint-plugin-jsdoc": {
-			"version": "39.3.6",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.6.tgz",
-			"integrity": "sha512-R6dZ4t83qPdMhIOGr7g2QII2pwCjYyKP+z0tPOfO1bbAbQyKC20Y2Rd6z1te86Lq3T7uM8bNo+VD9YFpE8HU/g==",
-			"dev": true,
-			"requires": {
-				"@es-joy/jsdoccomment": "~0.31.0",
-				"comment-parser": "1.3.1",
-				"debug": "^4.3.4",
-				"escape-string-regexp": "^4.0.0",
-				"esquery": "^1.4.0",
-				"semver": "^7.3.7",
-				"spdx-expression-parse": "^3.0.1"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.3.4",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-					"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-					"dev": true,
-					"requires": {
-						"ms": "2.1.2"
-					}
-				},
-				"ms": {
-					"version": "2.1.2",
-					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-					"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-					"dev": true
-				}
-			}
-		},
 		"eslint-plugin-prettier": {
 			"version": "4.2.1",
 			"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
@@ -6022,6 +5953,16 @@
 				"prettier-linter-helpers": "^1.0.0"
 			}
 		},
+		"eslint-plugin-tsdoc": {
+			"version": "0.2.17",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz",
+			"integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==",
+			"dev": true,
+			"requires": {
+				"@microsoft/tsdoc": "0.14.2",
+				"@microsoft/tsdoc-config": "0.16.2"
+			}
+		},
 		"eslint-scope": {
 			"version": "7.1.1",
 			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
@@ -6745,6 +6686,12 @@
 			"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
 			"dev": true
 		},
+		"jju": {
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
+			"integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
+			"dev": true
+		},
 		"js-sdsl": {
 			"version": "4.1.5",
 			"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz",
@@ -6760,12 +6707,6 @@
 				"argparse": "^2.0.1"
 			}
 		},
-		"jsdoc-type-pratt-parser": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz",
-			"integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==",
-			"dev": true
-		},
 		"json-schema-traverse": {
 			"version": "0.4.1",
 			"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -7595,28 +7536,6 @@
 				"which": "^2.0.1"
 			}
 		},
-		"spdx-exceptions": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-			"dev": true
-		},
-		"spdx-expression-parse": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-			"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-			"dev": true,
-			"requires": {
-				"spdx-exceptions": "^2.1.0",
-				"spdx-license-ids": "^3.0.0"
-			}
-		},
-		"spdx-license-ids": {
-			"version": "3.0.11",
-			"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
-			"integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
-			"dev": true
-		},
 		"statuses": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",

+ 2 - 1
backend/package.json

@@ -37,6 +37,7 @@
 		"ws": "^8.9.0"
 	},
 	"devDependencies": {
+		"@microsoft/tsdoc": "^0.14.2",
 		"@types/async": "^3.2.15",
 		"@types/config": "^3.3.0",
 		"@typescript-eslint/eslint-plugin": "^5.40.0",
@@ -45,8 +46,8 @@
 		"eslint-config-airbnb-base": "^15.0.0",
 		"eslint-config-prettier": "^8.5.0",
 		"eslint-plugin-import": "^2.26.0",
-		"eslint-plugin-jsdoc": "^39.3.6",
 		"eslint-plugin-prettier": "^4.2.1",
+		"eslint-plugin-tsdoc": "^0.2.17",
 		"prettier": "2.7.1",
 		"trace-unhandled": "^2.0.1",
 		"ts-node": "^10.9.1",

+ 5 - 5
backend/src/BaseModule.ts

@@ -13,8 +13,8 @@ export default abstract class BaseModule {
 	/**
 	 * Base Module
 	 *
-	 * @param {ModuleManager} moduleManager Module manager class
-	 * @param {string} name Module name
+	 * @param moduleManager - Module manager class
+	 * @param name - Module name
 	 */
 	public constructor(moduleManager: ModuleManager, name: string) {
 		this.moduleManager = moduleManager;
@@ -26,7 +26,7 @@ export default abstract class BaseModule {
 	/**
 	 * getName - Get module name
 	 *
-	 * @returns {string} name
+	 * @returns name
 	 */
 	public getName(): string {
 		return this.name;
@@ -35,7 +35,7 @@ export default abstract class BaseModule {
 	/**
 	 * getStatus - Get module status
 	 *
-	 * @returns {ModuleStatus} status
+	 * @returns status
 	 */
 	public getStatus(): ModuleStatus {
 		return this.status;
@@ -44,7 +44,7 @@ export default abstract class BaseModule {
 	/**
 	 * setStatus - Set module status
 	 *
-	 * @param {ModuleStatus} status Module status
+	 * @param status - Module status
 	 */
 	public setStatus(status: ModuleStatus): void {
 		this.status = status;

+ 10 - 12
backend/src/Job.ts

@@ -27,12 +27,10 @@ export default class Job {
 	/**
 	 * Job
 	 *
-	 * @param {string} name Job name
-	 * @param {string} module Job module
-	 * @param {Function} callback Job callback
-	 * @param {object|undefined} options Job options
-	 * @param {number|undefined} options.priority Job priority
-	 * @param {string|undefined} options.longJob Long job title, providing makes job a long job
+	 * @param name - Job name
+	 * @param module - Job module
+	 * @param callback - Job callback
+	 * @param options - Job options
 	 */
 	public constructor(
 		name: string,
@@ -70,7 +68,7 @@ export default class Job {
 	/**
 	 * getName - Get job name
 	 *
-	 * @returns {string} module.name
+	 * @returns module.name
 	 */
 	public getName(): string {
 		return `${this.module}.${this.name}`;
@@ -79,7 +77,7 @@ export default class Job {
 	/**
 	 * getPriority - Get job priority
 	 *
-	 * @returns {number} priority
+	 * @returns priority
 	 */
 	public getPriority(): number {
 		return this.priority;
@@ -88,7 +86,7 @@ export default class Job {
 	/**
 	 * getUuid - Get job UUID
 	 *
-	 * @returns {string} UUID
+	 * @returns UUID
 	 */
 	public getUuid(): string {
 		return this.uuid;
@@ -97,7 +95,7 @@ export default class Job {
 	/**
 	 * getStatus - Get job status
 	 *
-	 * @returns {JobStatus} status
+	 * @returns status
 	 */
 	public getStatus(): JobStatus {
 		return this.status;
@@ -106,7 +104,7 @@ export default class Job {
 	/**
 	 * setStatus - Set job status
 	 *
-	 * @param {JobStatus} status Job status
+	 * @param status - Job status
 	 */
 	public setStatus(status: JobStatus): void {
 		this.status = status;
@@ -115,7 +113,7 @@ export default class Job {
 	/**
 	 * execute - Execute job
 	 *
-	 * @returns {Promise<void>} Promise
+	 * @returns Promise
 	 */
 	public execute(): Promise<void> {
 		return new Promise((resolve, reject) => {

+ 9 - 9
backend/src/JobQueue.ts

@@ -34,7 +34,7 @@ export default class JobQueue {
 	/**
 	 * add - Add job to queue
 	 *
-	 * @param {Job} job Job
+	 * @param job - Job
 	 */
 	public add(job: Job): void {
 		this.queue.push(job);
@@ -47,8 +47,8 @@ export default class JobQueue {
 	/**
 	 * getJob - Fetch job
 	 *
-	 * @param {jobId} jobId Job UUID
-	 * @returns {Job|undefined} Job if found
+	 * @param jobId - Job UUID
+	 * @returns Job if found
 	 */
 	public getJob(jobId: string): Job | undefined {
 		return (
@@ -111,7 +111,7 @@ export default class JobQueue {
 	/**
 	 * getStatus - Get status of job queue
 	 *
-	 * @returns {object} Job queue status
+	 * @returns Job queue status
 	 */
 	public getStatus() {
 		return {
@@ -125,7 +125,7 @@ export default class JobQueue {
 	/**
 	 * getStats - Get statistics of job queue
 	 *
-	 * @returns {object} Job queue statistics
+	 * @returns Job queue statistics
 	 */
 	public getStats() {
 		return {
@@ -142,8 +142,8 @@ export default class JobQueue {
 	/**
 	 * getQueueStatus - Get statistics of queued or active jobs
 	 *
-	 * @param {JobStatus|undefined} type Job type filter
-	 * @returns {object} Job queue statistics
+	 * @param type - Job type filter
+	 * @returns Job queue statistics
 	 */
 	public getQueueStatus(type?: JobStatus) {
 		const status: Record<
@@ -169,8 +169,8 @@ export default class JobQueue {
 	/**
 	 * updateStats - Update job statistics
 	 *
-	 * @param {string} jobName Job name
-	 * @param {"successful"|"failed"|"total"} type Stats type
+	 * @param jobName - Job name
+	 * @param type - Stats type
 	 */
 	private updateStats(
 		jobName: string,

+ 10 - 10
backend/src/ModuleManager.ts

@@ -20,7 +20,7 @@ export default class ModuleManager {
 	/**
 	 * getStatus - Get status of modules
 	 *
-	 * @returns {object} Module statuses
+	 * @returns Module statuses
 	 */
 	public getStatus() {
 		const status: Record<string, ModuleStatus> = {};
@@ -33,7 +33,7 @@ export default class ModuleManager {
 	/**
 	 * getJobsStats - Get statistics of job queue
 	 *
-	 * @returns {object} Job queue statistics
+	 * @returns Job queue statistics
 	 */
 	public getJobsStats() {
 		return this.jobQueue.getStats();
@@ -42,7 +42,7 @@ export default class ModuleManager {
 	/**
 	 * getJobsStatus - Get status of job queue
 	 *
-	 * @returns {object} Job queue status
+	 * @returns Job queue status
 	 */
 	public getJobsStatus() {
 		return this.jobQueue.getStatus();
@@ -51,7 +51,7 @@ export default class ModuleManager {
 	/**
 	 * getQueueStatus - Get status of queued jobs
 	 *
-	 * @returns {object} Job statuses
+	 * @returns Job statuses
 	 */
 	public getQueueStatus() {
 		return this.jobQueue.getQueueStatus();
@@ -60,8 +60,8 @@ export default class ModuleManager {
 	/**
 	 * loadModule - Load and initialize module
 	 *
-	 * @param {string} moduleName Name of the module
-	 * @returns {typeof BaseModule} Module
+	 * @param moduleName - Name of the module
+	 * @returns Module
 	 */
 	private loadModule<T extends keyof Modules>(
 		moduleName: T
@@ -84,7 +84,7 @@ export default class ModuleManager {
 	/**
 	 * loadModules - Load and initialize all modules
 	 *
-	 * @returns {Promise} Promise
+	 * @returns Promise
 	 */
 	private loadModules(): Promise<void> {
 		return new Promise((resolve, reject) => {
@@ -169,9 +169,9 @@ export default class ModuleManager {
 	/**
 	 * runJob - Run a job
 	 *
-	 * @param {string} moduleName Module name
-	 * @param {string} jobName Job name
-	 * @param {[ any, { priority?: number }? ]} params Params
+	 * @param moduleName - Module name
+	 * @param jobName - Job name
+	 * @param params - Params
 	 */
 	public runJob<
 		M extends keyof Jobs & keyof Modules,

+ 6 - 11
backend/src/modules/DataModule.ts

@@ -15,7 +15,7 @@ export default class DataModule extends BaseModule {
 	/**
 	 * Data Module
 	 *
-	 * @param {ModuleManager} moduleManager Module manager class
+	 * @param moduleManager - Module manager class
 	 */
 	public constructor(moduleManager: ModuleManager) {
 		super(moduleManager, "data");
@@ -117,8 +117,8 @@ export default class DataModule extends BaseModule {
 	/**
 	 * loadColllection - Import and load collection schema
 	 *
-	 * @param {string} collectionName Name of the collection
-	 * @returns {Collections[T]} Collection
+	 * @param collectionName - Name of the collection
+	 * @returns Collection
 	 */
 	private loadCollection<T extends keyof Collections>(
 		collectionName: T
@@ -150,7 +150,7 @@ export default class DataModule extends BaseModule {
 	/**
 	 * loadCollections - Load and initialize all collections
 	 *
-	 * @returns {Promise} Promise
+	 * @returns Promise
 	 */
 	private loadCollections(): Promise<void> {
 		return new Promise((resolve, reject) => {
@@ -180,13 +180,8 @@ export default class DataModule extends BaseModule {
 	/**
 	 * find - Find data
 	 *
-	 * @param {object} payload Payload
-	 * @param {string} payload.collection Name of collection to fetch from
-	 * @param {object} payload.query Query
-	 * @param {object} payload.values Return specific values
-	 * @param {number} payload.limit Returned data limit
-	 * @param {number} payload.cache Cache expiry in seconds (-1 to disable)
-	 * @returns {Promise} Return object
+	 * @param payload - Payload
+	 * @returns Returned object
 	 */
 	public find<T extends keyof Collections>({
 		collection,

+ 3 - 5
backend/src/modules/OtherModule.ts

@@ -6,7 +6,7 @@ export default class OtherModule extends BaseModule {
 	/**
 	 * Other Module
 	 *
-	 * @param {ModuleManager} moduleManager Module manager class
+	 * @param moduleManager - Module manager class
 	 */
 	public constructor(moduleManager: ModuleManager) {
 		super(moduleManager, "others");
@@ -31,10 +31,8 @@ export default class OtherModule extends BaseModule {
 	/**
 	 * doThing - Do thing
 	 *
-	 * @param {object} payload Payload
-	 * @param {string} payload.test Test1
-	 * @param {number} payload.test2 Test2
-	 * @returns {{ message: string }} Return object
+	 * @param payload - Payload
+	 * @returns Returned object
 	 */
 	public doThing(payload: { test: string; test2: number }): Promise<{
 		res: number;

+ 2 - 10
backend/src/modules/StationModule.ts

@@ -6,7 +6,7 @@ export default class StationModule extends BaseModule {
 	/**
 	 * Station Module
 	 *
-	 * @param {ModuleManager} moduleManager Module manager class
+	 * @param moduleManager - Module manager class
 	 */
 	public constructor(moduleManager: ModuleManager) {
 		super(moduleManager, "stations");
@@ -31,8 +31,7 @@ export default class StationModule extends BaseModule {
 	/**
 	 * addToQueue - Add media to queue
 	 *
-	 * @param {object} payload Payload
-	 * @param {string} payload.songId Song ID
+	 * @param payload - Payload
 	 */
 	public addToQueue(payload: { songId: string }): Promise<void> {
 		return new Promise((resolve, reject) => {
@@ -45,19 +44,12 @@ export default class StationModule extends BaseModule {
 		});
 	}
 
-	/**
-	 *
-	 * @returns {{ number: number }} return
-	 */
 	public addA(): Promise<{ number: number }> {
 		return new Promise<{ number: number }>(resolve => {
 			resolve({ number: 123 });
 		});
 	}
 
-	/**
-	 *
-	 */
 	public addB(): Promise<void> {
 		return new Promise<void>(resolve => {
 			resolve();